readline-8.0/000775 000436 000000 00000000000 13413164025 013221 5ustar00chetwheel000000 000000 readline-8.0/nls.c000664 000436 000120 00000015413 13052147577 014170 0ustar00chetadmin000000 000000 /* nls.c -- skeletal internationalization code. */ /* Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #include #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_LOCALE_H) # include #endif #if defined (HAVE_LANGINFO_CODESET) # include #endif #include #include "rldefs.h" #include "readline.h" #include "rlshell.h" #include "rlprivate.h" static int utf8locale PARAMS((char *)); #if !defined (HAVE_SETLOCALE) /* A list of legal values for the LANG or LC_CTYPE environment variables. If a locale name in this list is the value for the LC_ALL, LC_CTYPE, or LANG environment variable (using the first of those with a value), readline eight-bit mode is enabled. */ static char *legal_lang_values[] = { "iso88591", "iso88592", "iso88593", "iso88594", "iso88595", "iso88596", "iso88597", "iso88598", "iso88599", "iso885910", "koi8r", "utf8", 0 }; static char *normalize_codeset PARAMS((char *)); #endif /* !HAVE_SETLOCALE */ static char *find_codeset PARAMS((char *, size_t *)); static char *_rl_get_locale_var PARAMS((const char *)); static char * _rl_get_locale_var (const char *v) { char *lspec; lspec = sh_get_env_value ("LC_ALL"); if (lspec == 0 || *lspec == 0) lspec = sh_get_env_value (v); if (lspec == 0 || *lspec == 0) lspec = sh_get_env_value ("LANG"); return lspec; } static int utf8locale (char *lspec) { char *cp; size_t len; #if HAVE_LANGINFO_CODESET cp = nl_langinfo (CODESET); return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8")); #else cp = find_codeset (lspec, &len); if (cp == 0 || len < 4 || len > 5) return 0; return ((len == 5) ? strncmp (cp, "UTF-8", len) == 0 : strncmp (cp, "utf8", 4) == 0); #endif } /* Query the right environment variables and call setlocale() to initialize the C library locale settings. */ char * _rl_init_locale (void) { char *ret, *lspec; /* Set the LC_CTYPE locale category from environment variables. */ lspec = _rl_get_locale_var ("LC_CTYPE"); /* Since _rl_get_locale_var queries the right environment variables, we query the current locale settings with setlocale(), and, if that doesn't return anything, we set lspec to the empty string to force the subsequent call to setlocale() to define the `native' environment. */ if (lspec == 0 || *lspec == 0) lspec = setlocale (LC_CTYPE, (char *)NULL); if (lspec == 0) lspec = ""; ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */ _rl_utf8locale = (ret && *ret) ? utf8locale (ret) : 0; return ret; } /* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value to decide the defaults for 8-bit character input and output. Returns 1 if we set eight-bit mode. */ int _rl_init_eightbit (void) { /* If we have setlocale(3), just check the current LC_CTYPE category value, and go into eight-bit mode if it's not C or POSIX. */ #if defined (HAVE_SETLOCALE) char *lspec, *t; t = _rl_init_locale (); /* returns static pointer */ if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0)) { _rl_meta_flag = 1; _rl_convert_meta_chars_to_ascii = 0; _rl_output_meta_chars = 1; return (1); } else return (0); #else /* !HAVE_SETLOCALE */ char *lspec, *t; int i; /* We don't have setlocale. Finesse it. Check the environment for the appropriate variables and set eight-bit mode if they have the right values. */ lspec = _rl_get_locale_var ("LC_CTYPE"); if (lspec == 0 || (t = normalize_codeset (lspec)) == 0) return (0); for (i = 0; t && legal_lang_values[i]; i++) if (STREQ (t, legal_lang_values[i])) { _rl_meta_flag = 1; _rl_convert_meta_chars_to_ascii = 0; _rl_output_meta_chars = 1; break; } _rl_utf8locale = *t ? STREQ (t, "utf8") : 0; xfree (t); return (legal_lang_values[i] ? 1 : 0); #endif /* !HAVE_SETLOCALE */ } #if !defined (HAVE_SETLOCALE) static char * normalize_codeset (char *codeset) { size_t namelen, i; int len, all_digits; char *wp, *retval; codeset = find_codeset (codeset, &namelen); if (codeset == 0) return (codeset); all_digits = 1; for (len = 0, i = 0; i < namelen; i++) { if (ISALNUM ((unsigned char)codeset[i])) { len++; all_digits &= _rl_digit_p (codeset[i]); } } retval = (char *)malloc ((all_digits ? 3 : 0) + len + 1); if (retval == 0) return ((char *)0); wp = retval; /* Add `iso' to beginning of an all-digit codeset */ if (all_digits) { *wp++ = 'i'; *wp++ = 's'; *wp++ = 'o'; } for (i = 0; i < namelen; i++) if (ISALPHA ((unsigned char)codeset[i])) *wp++ = _rl_to_lower (codeset[i]); else if (_rl_digit_p (codeset[i])) *wp++ = codeset[i]; *wp = '\0'; return retval; } #endif /* !HAVE_SETLOCALE */ /* Isolate codeset portion of locale specification. */ static char * find_codeset (char *name, size_t *lenp) { char *cp, *language, *result; cp = language = name; result = (char *)0; while (*cp && *cp != '_' && *cp != '@' && *cp != '+' && *cp != ',') cp++; /* This does not make sense: language has to be specified. As an exception we allow the variable to contain only the codeset name. Perhaps there are funny codeset names. */ if (language == cp) { *lenp = strlen (language); result = language; } else { /* Next is the territory. */ if (*cp == '_') do ++cp; while (*cp && *cp != '.' && *cp != '@' && *cp != '+' && *cp != ',' && *cp != '_'); /* Now, finally, is the codeset. */ result = cp; if (*cp == '.') do ++cp; while (*cp && *cp != '@'); if (cp - result > 2) { result++; *lenp = cp - result; } else { *lenp = strlen (language); result = language; } } return result; } readline-8.0/CHANGES000664 000436 000000 00000213103 13373101654 014220 0ustar00chetwheel000000 000000 This document details the changes between this version, readline-8.0, and the previous version, readline-7.0. 1. Changes to Readline a. Added a guard to prevent nested macros from causing an infinite expansion loop. b. Instead of allocating enough history list entries to hold the maximum list size, cap the number allocated initially. c. Added a strategy to avoid allocating huge amounts of memory if a block of history entries without timestamps occurs after a block with timestamps. d. Added support for keyboard timeouts when an ESC character is the last character in a macro. e. There are several performance improvements when in a UTF-8 locale. f. Readline does a better job of preserving the original set of blocked signals when using pselect() to wait for input. g. Fixed a bug that caused multibyte characters in macros to be mishandled. h. Fixed several bugs in the code that calculates line breaks when expanding prompts that span several lines, contain multibyte characters, and contain invisible character seqeuences. i. Fixed several bugs in cursor positioning when displaying lines with prompts containing invisible characters and multibyte characters. j. When performing case-insensitive completion, Readline no longer sorts the list of matches unless directed to do so. k. Fixed a problem with key sequences ending with a backslash. l. Fixed out-of-bounds and free memory read errors found via fuzzing. m. Fixed several cases where the mark was set to an invalid value. n. Fixed a problem with the case-changing operators in the case where the lower and upper case versions of a character do not have the same number of bytes. o. Handle incremental and non-incremental search character reads returning EOF. p. Handle the case where a failing readline command at the end of a multi-key sequence could be misinterpreted. q. The history library now prints a meaningful error message if the history file isn't a regular file. r. Fixed a problem with vi-mode redo (`.') on a command when trying to replace a multibyte character. s. The key binding code now attempts to remove a keymap if a key unbinding leaves it empty. t. Fixed a line-wrapping issue that caused problems for some terminal emulators. u. If there is a key bound to the tty's VDISCARD special character, readline disables VDISCARD while it is active. v. Fixed a problem with exiting bracketed paste mode on terminals that assume the bracketed paste mode character sequence contains visible characters. w. Fixed a bug that could cause a key binding command to refer to an uninitialized variable. x. Added more UTF-8-specific versions of multibyte functions, and optimized existing functions if the current locale uses UTF-8 encoding. y. Fixed a problem with bracketed-paste inserting more than one character and interacting with other readline functions. z. Fixed a bug that caused the history library to attempt to append a history line to a non-existent history entry. aa. If using bracketed paste mode, output a newline after the \r that is the last character of the mode disable string to avoid overwriting output. bb. Fixes to the vi-mode `b', `B', `w', `W', `e', and `E' commands to better handle multibyte characters. cc. Fixed a redisplay problem that caused an extra newline to be generated on accept-line when the line length is exactly the screenwidth. dd. Fixed a bug with adding multibyte characters to an incremental search string. ee. Fixed a bug with redoing text insertions in vi mode. ff. Fixed a bug with pasting text into an incremental search string if bracketed paste mode is enabled. ESC cannot be one of the incremental search terminator characters for this to work. gg. Fixed a bug with anchored search patterns when performing searches in vi mode. 2. New Features in Readline a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as Posix specifies (uses fnmatch(3) if available). b. There are new `next-screen-line' and `previous-screen-line' bindable commands, which move the cursor to the same column in the next, or previous, physical line, respectively. c. There are default key bindings for control-arrow-key key combinations. d. A negative argument (-N) to `quoted-insert' means to insert the next N characters using quoted-insert. e. New public function: rl_check_signals(), which allows applications to respond to signals that readline catches while waiting for input using a custom read function. f. There is new support for conditionally testing the readline version in an inputrc file, with a full set of arithmetic comparison operators available. g. There is a simple variable comparison facility available for use within an inputrc file. Allowable operators are equality and inequality; string variables may be compared to a value; boolean variables must be compared to either `on' or `off'; variable names are separated from the operator by whitespace. h. The history expansion library now understands command and process substitution and extended globbing and allows them to appear anywhere in a word. i. The history library has a new variable that allows applications to set the initial quoting state, so quoting state can be inherited from a previous line. j. Readline now allows application-defined keymap names; there is a new public function, rl_set_keymap_name(), to do that. k. The "Insert" keypad key, if available, now puts readline into overwrite mode. ------------------------------------------------------------------------------- This document details the changes between this version, readline-7.0, and the previous version, readline-6.3. 1. Changes to Readline a. A bug that caused vi-mode `.' to be unable to redo `c', `d', and `y' commands with modifiers was fixed. b. Fixed a bug that caused callback mode to dump core when reading a multiple-key sequence (e.g., arrow keys). c. Fixed a bug that caused the redisplay code to erase some of the line when using horizontal scrolling with incremental search. d. Readline's input handler now performs signal processing if read(2) is interrupted by SIGALRM or SIGVTALRM. e. Fixed a problem with revert-all-at-newline freeing freed memory. f. Clarified the documentation for the history_quotes_inhibit_expansion variable to note that it inhibits scanning for the history comment character and that it only affects double-quoted strings. g. Fixed an off-by-one error in the prompt printed when performing searches. h. Use pselect(2), if available, to wait for input before calling read(2), so a SIGWINCH can interrupt it, since it doesn't interrupt read(2). i. Some memory leaks caused by signals interrupting filename completion have been fixed. j. Reading EOF twice on a non-empty line causes EOF to be returned, rather than the partial line. This can cause partial lines to be executed on SIGHUP, for example. k. Fixed a bug concerning deleting multibyte characters from the search string while performing an incremental search. l. Fixed a bug with tilde expanding directory names in filename completion. m. Fixed a bug that did not allow binding sequences beginning with a `\'. n. Fixed a redisplay bug involving incorrect line wrapping when the prompt contains a multibyte character in the last screen column. o. Fixed a bug that caused history expansion to disregard characters that are documented to delimit a history event specifier without requiring `:'. p. Fixed a bug that could cause reading past the end of a string when reading the value when binding the set of isearch terminators. q. Fixed a bug that caused readline commands that depend on knowing which key invoked them to misbehave when dispatching key sequences that are prefixes of other key bindings. r. Paren matching now works in vi insert mode. s. Colored completion prefixes are now displayed using a different color, less likely to collide with files. t. Fixed a bug that caused vi-mode character search to misbehave when running in callback mode. u. Fixed a bug that caused output to be delayed when input is coming from a macro in vi-mode. v. Fixed a bug that caused the vi-mode `.' command to misbehave when redoing a multi-key key sequence via a macro. w. Fixed a bug that caused problems with applications that supply their own input function when performing completion. x. When read returns -1/EIO when attempting to read a key, return an error instead of line termination back to the caller. y. Updated tty auditing feature based on patch from Red Hat. z. Fixed a bug that could cause the history library to crash on overflows introduced by malicious editing of timestamps in the history file. aa. The history file writing functions only attempt to create and use a backup history file if the history file exists and is a regular file. bb. Fixed an out-of-bounds read in readline's internal tilde expansion interface. cc. Fixed several redisplay bugs with prompt strings containing multibyte and non-visible characters whose physical length is longer than the screen width. dd. Fixed a redisplay bug with prompt strings containing invisible characters whose physical length exceeds the screen width and using incremental search. ee. Readline prints more descriptive error messages when it encounters errors while reading an inputrc file. ff. Fixed a bug in the character insertion code that attempts to optimize typeahead when it reads a character that is not bound to self-insert and resets the key sequence state. gg. When refreshing the line as the result of a key sequence, Readline attempts to redraw only the last line of a multiline prompt. hh. Fixed an issue that caused completion of git commands to display incorrectly when using colored-completion-prefix. ii. Fixed several redisplay bugs having to do with multibyte characters and invisible characters in prompt strings. jj. Fixed a bug that caused mode strings to be displayed incorrectly if the prompt was shorter than the mode string. 2. New Features in Readline a. The history truncation code now uses the same error recovery mechansim as the history writing code, and restores the old version of the history file on error. The error recovery mechanism handles symlinked history files. b. There is a new bindable variable, `enable-bracketed-paste', which enables support for a terminal's bracketed paste mode. c. The editing mode indicators can now be strings and are user-settable (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string' variables). Mode strings can contain invisible character sequences. Setting mode strings to null strings restores the defaults. d. Prompt expansion adds the mode string to the last line of a multi-line prompt (one with embedded newlines). e. There is a new bindable variable, `colored-completion-prefix', which, if set, causes the common prefix of a set of possible completions to be displayed in color. f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs- mode yank-pop. g. The redisplay code underwent several efficiency improvements for multibyte locales. h. The insert-char function attempts to batch-insert all pending typeahead that maps to self-insert, as long as it is coming from the terminal. i. rl_callback_sigcleanup: a new application function that can clean up and unset any state set by readline's callback mode. Intended to be used after a signal. j. If an incremental search string has its last character removed with DEL, the resulting empty search string no longer matches the previous line. k. If readline reads a history file that begins with `#' (or the value of the history comment character) and has enabled history timestamps, the history entries are assumed to be delimited by timestamps. This allows multi-line history entries. l. Readline now throws an error if it parses a key binding without a terminating `:' or whitespace. m. The default binding for ^W in vi mode now uses word boundaries specified by Posix (vi-unix-word-rubout is bindable command name). n. rl_clear_visible_line: new application-callable function; clears all screen lines occupied by the current visible readline line. o. rl_tty_set_echoing: application-callable function that controls whether or not readline thinks it is echoing terminal output. p. Handle >| and strings of digits preceding and following redirection specifications as single tokens when tokenizing the line for history expansion. q. Fixed a bug with displaying completions when the prefix display length is greater than the length of the completions to be displayed. r. The :p history modifier now applies to the entire line, so any expansion specifying :p causes the line to be printed instead of expanded. s. New application-callable function: rl_pending_signal(): returns the signal number of any signal readline has caught but not yet handled. t. New application-settable variable: rl_persistent_signal_handlers: if set to a non-zero value, readline will enable the readline-6.2 signal handler behavior in callback mode: handlers are installed when rl_callback_handler_install is called and removed removed when a complete line has been read. ------------------------------------------------------------------------------- This document details the changes between this version, readline-6.3, and the previous version, readline-6.2. 1. Changes to Readline a. Fixed a bug that did not allow the `dd', `cc', or `yy' vi editing mode commands to work on the entire line. b. Fixed a bug that caused redisplay problems with prompts longer than 128 characters and history searches. c. Fixed a bug that caused readline to try and run code to modify its idea of the screen size in a signal handler context upon receiving a SIGWINCH. d. Fixed a bug that caused the `meta' key to be enabled beyond the duration of an individual call top readline(). e. Added a workaround for a wcwidth bug in Mac OS X that caused readline's redisplay to mishandle zero-width combining characters. f. Fixed a bug that caused readline to `forget' part of a key sequence when a multiple-key sequence caused it to break out of an incremental search. g. Fixed bugs that caused readline to execute code in a signal handler context if interrupted while reading from the file system during completion. h. Fixed a bug that caused readline to `forget' part of a key sequence when reading an unbound multi-character key sequence. i. Fixed a bug that caused Readline's signal handlers to be installed beyond the bounds of a single call to readline(). j. Fixed a bug that caused the `.' command to not redo the most recent `R' command in vi mode. k. Fixed a bug that caused ignoring case in completion matches to result in readline using the wrong match. l. Paren matching now works in vi insert mode. m. Fix menu-completion to make show-all-if-ambiguous and menu-complete-display-prefix work together. n. Fixed a bug that didn't allow the `cc', `dd', or `yy' commands to be redone in vi editing mode. o. Fixed a bug that caused the filename comparison code to not compare multibyte characters correctly when using case-sensitive or case-mapping comparisons. p. Fixed the input reading loop to call the input hook function only when there is no terminal input available. q. Fixed a bug that caused binding a macro to a multi-character key sequence where the sequence and macro value share a common prefix to not perform the macro replacement. r. Fixed several redisplay errors with multibyte characters and prompts containing invisible characters when using horizontal scrolling. s. Fixed a bug that caused redisplay errors when trying to overwrite existing characters using multibyte characters. t. Fixed a bug in vi mode that caused the arrow keys to set the saved last vi-mode command to the wrong value. u. Fixed a bug that caused double-quoted strings to be scanned incorrectly when being used as the value of a readline variable assignment. v. Fixed a bug with vi mode that prevented `.' from repeating a command entered on a previous line (command). w. Fixed a bug that could cause completion to core dump if it was interrupted by a signal. x. Fixed a bug that could cause readline to crash and seg fault attempting to expand an empty history entry. y. Fixed a bug that caused display problems with multi-line prompts containing invisible characters on multiple lines. z. Fixed a bug that caused effects made by undoing changes to a history line to be discarded. 2. New Features in Readline a. Readline is now more responsive to SIGHUP and other fatal signals when reading input from the terminal or performing word completion but no longer attempts to run any not-allowable functions from a signal handler context. b. There are new bindable commands to search the history for the string of characters between the beginning of the line and the point (history-substring-search-forward, history-substring-search-backward) c. Readline allows quoted strings as the values of variables when setting them with `set'. As a side effect, trailing spaces and tabs are ignored when setting a string variable's value. d. The history library creates a backup of the history file when writing it and restores the backup on a write error. e. New application-settable variable: rl_filename_stat_hook: a function called with a filename before using it in a call to stat(2). Bash uses it to expand shell variables so things like $HOME/Downloads have a slash appended. f. New bindable function `print-last-kbd-macro', prints the most-recently- defined keyboard macro in a reusable format. g. New user-settable variable `colored-stats', enables use of colored text to denote file types when displaying possible completions (colored analog of visible-stats). h. New user-settable variable `keyseq-timout', acts as an inter-character timeout when reading input or incremental search strings. i. New application-callable function: rl_clear_history. Clears the history list and frees all readline-associated private data. j. New user-settable variable, show-mode-in-prompt, adds a characters to the beginning of the prompt indicating the current editing mode. k. New application-settable variable: rl_input_available_hook; function to be called when readline needs to check whether there is data available on its input source. The default hook checks rl_instream. l. Readline calls an application-set event hook (rl_signal_event_hook) after it gets a signal while reading input (read returns -1/EINTR but readline does not handle the signal immediately) to allow the application to handle or otherwise note it. Not currently called for SIGHUP or SIGTERM. m. If the user-settable variable `history-size' is set to a value less than 0, the history list size is unlimited. n. When creating shared libraries on Mac OS X, the pathname written into the library (install_name) no longer includes the minor version number. ------------------------------------------------------------------------------- This document details the changes between this version, readline-6.2, and the previous version, readline-6.1. 1. Changes to Readline a. Fixed a bug that caused the unconverted filename to be added to the list of completions when the application specified filename conversion functions. b. Fixed a bug that caused the wrong filename to be passed to opendir when the application has specified a filename dequoting function. c. Fixed a bug when repeating a character search in vi mode in the case where there was no search to repeat. d. When show-all-if-ambiguous is set, the completion routines no longer insert a common match prefix that is shorter than the text being completed. e. The full set of vi editing commands may now be used in callback mode. f. Fixed a bug that caused readline to not update its idea of the terminal dimensions while running in `no-echo' mode. h. Fixed a bug that caused readline to dump core if an application called rl_prep_terminal without setting rl_instream. i. Fixed a bug that caused meta-prefixed characters bound to incremental search forward or backward to not be recognized if they were typed subsequently. j. The incremental search code treats key sequences that map to the same functions as (default) ^G, ^W, and ^Y as equivalent to those characters. k. Fixed a bug in menu-complete that caused it to misbehave with large negative argument. l. Fixed a bug that caused vi-mode yank-last-arg to ring the bell when invoked at the end of the line. m. Fixed a bug that made an explicit argument of 0 to yank-last-arg behave as if it were a negative argument. n. Fixed a bug that caused directory names in words to be completed to not be dequoted correctly. 2. New Features in Readline a. The history library does not try to write the history filename in the current directory if $HOME is unset. This closes a potential security problem if the application does not specify a history filename. b. New bindable variable `completion-display-width' to set the number of columns used when displaying completions. c. New bindable variable `completion-case-map' to cause case-insensitive completion to treat `-' and `_' as identical. d. There are new bindable vi-mode command names to avoid readline's case- insensitive matching not allowing them to be bound separately. e. New bindable variable `menu-complete-display-prefix' causes the menu completion code to display the common prefix of the possible completions before cycling through the list, instead of after. ------------------------------------------------------------------------------- This document details the changes between this version, readline-6.1, and the previous version, readline-6.0. 1. Changes to Readline a. The SIGWINCH signal handler now avoids calling the redisplay code if one arrives while in the middle of redisplay. b. Changes to the timeout code to make sure that timeout values greater than one second are handled better. c. Fixed a bug in the redisplay code that was triggered by a prompt containing invisible characters exactly the width of the screen. d. Fixed a bug in the redisplay code encountered when running in horizontal scroll mode. e. Fixed a bug that prevented menu completion from properly completing filenames. f. Fixed a redisplay bug caused by a multibyte character causing a line to wrap. g. Fixed a bug that caused key sequences of two characters to not be recognized when a longer sequence identical in the first two characters was bound. h. Fixed a bug that caused history expansion to be attempted on $'...' single-quoted strings. i. Fixed a bug that caused incorrect redisplay when the prompt contained multibyte characters in an `invisible' sequence bracketed by \[ and \]. j. Fixed a bug that caused history expansion to short-circuit after encountering a multibyte character. k. Fixed a bug that caused applications using the callback interface to not react to SIGINT (or other signals) until another character arrived. 2. New Features in Readline a. New bindable function: menu-complete-backward. b. In the vi insertion keymap, C-n is now bound to menu-complete by default, and C-p to menu-complete-backward. c. When in vi command mode, repeatedly hitting ESC now does nothing, even when ESC introduces a bound key sequence. This is closer to how historical vi behaves. d. New bindable function: skip-csi-sequence. Can be used as a default to consume key sequences generated by keys like Home and End without having to bind all keys. e. New application-settable function: rl_filename_rewrite_hook. Can be used to rewite or modify filenames read from the file system before they are compared to the word to be completed. f. New bindable variable: skip-completed-text, active when completing in the middle of a word. If enabled, it means that characters in the completion that match characters in the remainder of the word are "skipped" rather than inserted into the line. g. The pre-readline-6.0 version of menu completion is available as "old-menu-complete" for users who do not like the readline-6.0 version. h. New bindable variable: echo-control-characters. If enabled, and the tty ECHOCTL bit is set, controls the echoing of characters corresponding to keyboard-generated signals. i. New bindable variable: enable-meta-key. Controls whether or not readline sends the smm/rmm sequences if the terminal indicates it has a meta key that enables eight-bit characters. ------------------------------------------------------------------------------- This document details the changes between this version, readline-6.0, and the previous version, readline-5.2. 1. Changes to Readline a. Fixed a number of redisplay errors in environments supporting multibyte characters. b. Fixed bugs in vi command mode that caused motion commands to inappropriately set the mark. c. When using the arrow keys in vi insertion mode, readline allows movement beyond the current end of the line (unlike command mode). d. Fixed bugs that caused readline to loop when the terminal has been taken away and reads return -1/EIO. e. Fixed bugs in redisplay occurring when displaying prompts containing invisible characters. f. Fixed a bug that caused the completion append character to not be reset to the default after an application-specified completion function changed it. g. Fixed a problem that caused incorrect positioning of the cursor while in emacs editing mode when moving forward at the end of a line while using a locale supporting multibyte characters. h. Fixed an off-by-one error that caused readline to drop every 511th character of buffered input. i. Fixed a bug that resulted in SIGTERM not being caught or cleaned up. j. Fixed redisplay bugs caused by multiline prompts with invisible characters or no characters following the final newline. k. Fixed redisplay bug caused by prompts consisting solely of invisible characters. l. Fixed a bug in the code that buffers characters received very quickly in succession which caused characters to be dropped. m. Fixed a bug that caused readline to reference uninitialized data structures if it received a SIGWINCH before completing initialzation. n. Fixed a bug that caused the vi-mode `last command' to be set incorrectly and therefore unrepeatable. o. Fixed a bug that caused readline to disable echoing when it was being used with an output file descriptor that was not a terminal. p. Readline now blocks SIGINT while manipulating internal data structures during redisplay. q. Fixed a bug in redisplay that caused readline to segfault when pasting a very long line (over 130,000 characters). r. Fixed bugs in redisplay when using prompts with no visible printing characters. s. Fixed a bug that caused redisplay errors when using prompts with invisible characters and numeric arguments to a command in a multibyte locale. t. Fixed a bug that caused redisplay errors when using prompts with invisible characters spanning more than two physical screen lines. 2. New Features in Readline a. A new variable, rl_sort_completion_matches; allows applications to inhibit match list sorting (but beware: some things don't work right if applications do this). b. A new variable, rl_completion_invoking_key; allows applications to discover the key that invoked rl_complete or rl_menu_complete. c. The functions rl_block_sigint and rl_release_sigint are now public and available to calling applications who want to protect critical sections (like redisplay). d. The functions rl_save_state and rl_restore_state are now public and available to calling applications; documented rest of readline's state flag values. e. A new user-settable variable, `history-size', allows setting the maximum number of entries in the history list. f. There is a new implementation of menu completion, with several improvements over the old; the most notable improvement is a better `completions browsing' mode. g. The menu completion code now uses the rl_menu_completion_entry_function variable, allowing applications to provide their own menu completion generators. h. There is support for replacing a prefix of a pathname with a `...' when displaying possible completions. This is controllable by setting the `completion-prefix-display-length' variable. Matches with a common prefix longer than this value have the common prefix replaced with `...'. i. There is a new `revert-all-at-newline' variable. If enabled, readline will undo all outstanding changes to all history lines when `accept-line' is executed. ------------------------------------------------------------------------------- This document details the changes between this version, readline-5.2, and the previous version, readline-5.1. 1. Changes to Readline a. Fixed a problem that caused segmentation faults when using readline in callback mode and typing consecutive DEL characters on an empty line. b. Fixed several redisplay problems with multibyte characters, all having to do with the different code paths and variable meanings between single-byte and multibyte character redisplay. c. Fixed a problem with key sequence translation when presented with the sequence \M-\C-x. d. Fixed a problem that prevented the `a' command in vi mode from being undone and redone properly. e. Fixed a problem that prevented empty inserts in vi mode from being undone properly. f. Fixed a problem that caused readline to initialize with an incorrect idea of whether or not the terminal can autowrap. g. Fixed output of key bindings (like bash `bind -p') to honor the setting of convert-meta and use \e where appropriate. h. Changed the default filename completion function to call the filename dequoting function if the directory completion hook isn't set. This means that any directory completion hooks need to dequote the directory name, since application-specific hooks need to know how the word was quoted, even if no other changes are made. i. Fixed a bug with creating the prompt for a non-interactive search string when there are non-printing characters in the primary prompt. j. Fixed a bug that caused prompts with invisible characters to be redrawn multiple times in a multibyte locale. k. Fixed a bug that could cause the key sequence scanning code to return the wrong function. l. Fixed a problem with the callback interface that caused it to fail when using multi-character keyboard macros. m. Fixed a bug that could cause a core dump when an edited history entry was re-executed under certain conditions. n. Fixed a bug that caused readline to reference freed memory when attmpting to display a portion of the prompt. o. Fixed a bug with prompt redisplay in a multi-byte locale to avoid redrawing the prompt and input line multiple times. p. Fixed history expansion to not be confused by here-string redirection. q. Readline no longer treats read errors by converting them to newlines, as it does with EOF. This caused partial lines to be returned from readline(). r. Fixed a redisplay bug that occurred in multibyte-capable locales when the prompt was one character longer than the screen width. 2. New Features in Readline a. Calling applications can now set the keyboard timeout to 0, allowing poll-like behavior. b. The value of SYS_INPUTRC (configurable at compilation time) is now used as the default last-ditch startup file. c. The history file reading functions now allow windows-like \r\n line terminators. ------------------------------------------------------------------------------- This document details the changes between this version, readline-5.1, and the previous version, readline-5.0. 1. Changes to Readline a. Fixed a bug that caused multiliine prompts to be wrapped and displayed incorrectly. b. Fixed a bug that caused ^P/^N in emacs mode to fail to display the current line correctly. c. Fixed a problem in computing the number of invisible characters on the first line of a prompt whose length exceeds the screen width. d. Fixed vi-mode searching so that failure preserves the current line rather than the last line in the history list. e. Fixed the vi-mode `~' command (change-case) to have the correct behavior at end-of-line when manipulating multibyte characters. f. Fixed the vi-mode `r' command (change-char) to have the correct behavior at end-of-line when manipulating multibyte characters. g. Fixed multiple bugs in the redisplay of multibyte characters: displaying prompts longer than the screen width containing multibyte characters, h. Fix the calculation of the number of physical characters in the prompt string when it contains multibyte characters. i. A non-zero value for the `rl_complete_suppress_append' variable now causes no `/' to be appended to a directory name. j. Fixed forward-word and backward-word to work when words contained multibyte characters. k. Fixed a bug in finding the delimiter of a `?' substring when performing history expansion in a locale that supports multibyte characters. l. Fixed a memory leak caused by not freeing the timestamp in a history entry. m. Fixed a bug that caused "\M-x" style key bindings to not obey the setting of the `convert-meta' variable. n. Fixed saving and restoring primary prompt when prompting for incremental and non-incremental searches; search prompts now display multibyte characters correctly. o. Fixed a bug that caused keys originally bound to self-insert but shadowed by a multi-character key sequence to not be inserted. p. Fixed code so rl_prep_term_function and rl_deprep_term_function aren't dereferenced if NULL (matching the documentation). q. Extensive changes to readline to add enough state so that commands requiring additional characters (searches, multi-key sequences, numeric arguments, commands requiring an additional specifier character like vi-mode change-char, etc.) work without synchronously waiting for additional input. r. Lots of changes so readline builds and runs on MinGW. s. Readline no longer tries to modify the terminal settings when running in callback mode. t. The Readline display code no longer sets the location of the last invisible character in the prompt if the \[\] sequence is empty. u. The `change-case' command now correctly changes the case of multibyte characters. v. Changes to the shared library construction scripts to deal with Windows DLL naming conventions for Cygwin. w. Fixed the redisplay code to avoid core dumps resulting from a poorly-timed SIGWINCH. x. Fixed the non-incremental search code in vi mode to dispose of any current undo list when copying a line from the history into the current editing buffer. y. Fixed a bug that caused reversing the incremental search direction to not work correctly. z. Fixed the vi-mode `U' command to only undo up to the first time insert mode was entered, as Posix specifies. aa. Fixed a bug in the vi-mode `r' command that left the cursor in the wrong place. bb. Fixed a redisplay bug caused by moving the cursor vertically to a line with invisible characters in the prompt in a multibyte locale. cc. Fixed a bug that could cause the terminal special chars to be bound in the wrong keymap in vi mode. 2. New Features in Readline a. The key sequence sent by the keypad `delete' key is now automatically bound to delete-char. b. A negative argument to menu-complete now cycles backward through the completion list. c. A new bindable readline variable: bind-tty-special-chars. If non-zero, readline will bind the terminal special characters to their readline equivalents when it's called (on by default). d. New bindable command: vi-rubout. Saves deleted text for possible reinsertion, as with any vi-mode `text modification' command; `X' is bound to this in vi command mode. e. If the rl_completion_query_items is set to a value < 0, readline never asks the user whether or not to view the possible completions. f. The `C-w' binding in incremental search now understands multibyte characters. g. New application-callable auxiliary function, rl_variable_value, returns a string corresponding to a readline variable's value. h. When parsing inputrc files and variable binding commands, the parser strips trailing whitespace from values assigned to boolean variables before checking them. i. A new external application-controllable variable that allows the LINES and COLUMNS environment variables to set the window size regardless of what the kernel returns. ------------------------------------------------------------------------------- This document details the changes between this version, readline-5.0, and the previous version, readline-4.3. 1. Changes to Readline a. Fixes to avoid core dumps because of null pointer references in the multibyte character code. b. Fix to avoid infinite recursion caused by certain key combinations. c. Fixed a bug that caused the vi-mode `last command' to be set incorrectly. d. Readline no longer tries to read ahead more than one line of input, even when more is available. e. Fixed the code that adjusts the point to not mishandle null wide characters. f. Fixed a bug in the history expansion `g' modifier that caused it to skip every other match. g. Fixed a bug that caused the prompt to overwrite previous output when the output doesn't contain a newline and the locale supports multibyte characters. This same change fixes the problem of readline redisplay slowing down dramatically as the line gets longer in multibyte locales. h. History traversal with arrow keys in vi insertion mode causes the cursor to be placed at the end of the new line, like in emacs mode. i. The locale initialization code does a better job of using the right precedence and defaulting when checking the appropriate environment variables. j. Fixed the history word tokenizer to handle <( and >( better when used as part of bash. k. The overwrite mode code received several bug fixes to improve undo. l. Many speedups to the multibyte character redisplay code. m. The callback character reading interface should not hang waiting to read keyboard input. n. Fixed a bug with redoing vi-mode `s' command. o. The code that initializes the terminal tracks changes made to the terminal special characters with stty(1) (or equivalent), so that these changes are reflected in the readline bindings. New application-callable function to make it work: rl_tty_unset_default_bindings(). p. Fixed a bug that could cause garbage to be inserted in the buffer when changing character case in vi mode when using a multibyte locale. q. Fixed a bug in the redisplay code that caused problems on systems supporting multibyte characters when moving between history lines when the new line has more glyphs but fewer bytes. r. Undo and redo now work better after exiting vi insertion mode. s. Make sure system calls are restarted after a SIGWINCH is received using SA_RESTART. t. Improvements to the code that displays possible completions when using multibyte characters. u. Fixed a problem when parsing nested if statements in inputrc files. v. The completer now takes multibyte characters into account when looking for quoted substrings on which to perform completion. w. The history search functions now perform better bounds checking on the history list. x. Change to history expansion functions to treat `^' as equivalent to word one, as the documention states. y. Some changes to the display code to improve display and redisplay of multibyte characters. z. Changes to speed up the multibyte character redisplay code. aa. Fixed a bug in the vi-mode `E' command that caused it to skip over the last character of a word if invoked while point was on the word's next-to-last character. bb. Fixed a bug that could cause incorrect filename quoting when case-insensitive completion was enabled and the word being completed contained backslashes quoting word break characters. cc. Fixed a bug in redisplay triggered when the prompt string contains invisible characters. dd. Fixed some display (and other) bugs encountered in multibyte locales when a non-ascii character was the last character on a line. ee. Fixed some display bugs caused by multibyte characters in prompt strings. ff. Fixed a problem with history expansion caused by non-whitespace characters used as history word delimiters. gg. Fixed a problem that could cause readline to refer to freed memory when moving between history lines while doing searches. hh. Improvements to the code that expands and displays prompt strings containing multibyte characters. ii. Fixed a problem with vi-mode not correctly remembering the numeric argument to the last `c'hange command for later use with `.'. jj. Fixed a bug in vi-mode that caused multi-digit count arguments to work incorrectly. kk. Fixed a problem in vi-mode that caused the last text modification command to not be remembered across different command lines. ll. Fixed problems with changing characters and changing case at the end of the line. mm. Fixed a problem with readline saving the contents of the current line before beginning a non-interactive search. nn. Fixed a problem with EOF detection when using rl_event_hook. oo. Fixed a problem with the vi mode `p' and `P' commands ignoring numeric arguments. 2. New Features in Readline a. History expansion has a new `a' modifier equivalent to the `g' modifier for compatibility with the BSD csh. b. History expansion has a new `G' modifier equivalent to the BSD csh `g' modifier, which performs a substitution once per word. c. All non-incremental search operations may now undo the operation of replacing the current line with the history line. d. The text inserted by an `a' command in vi mode can be reinserted with `.'. e. New bindable variable, `show-all-if-unmodified'. If set, the readline completer will list possible completions immediately if there is more than one completion and partial completion cannot be performed. f. There is a new application-callable `free_history_entry()' function. g. History list entries now contain timestamp information; the history file functions know how to read and write timestamp information associated with each entry. h. Four new key binding functions have been added: rl_bind_key_if_unbound() rl_bind_key_if_unbound_in_map() rl_bind_keyseq_if_unbound() rl_bind_keyseq_if_unbound_in_map() i. New application variable, rl_completion_quote_character, set to any quote character readline finds before it calls the application completion function. j. New application variable, rl_completion_suppress_quote, settable by an application completion function. If set to non-zero, readline does not attempt to append a closing quote to a completed word. k. New application variable, rl_completion_found_quote, set to a non-zero value if readline determines that the word to be completed is quoted. Set before readline calls any application completion function. l. New function hook, rl_completion_word_break_hook, called when readline needs to break a line into words when completion is attempted. Allows the word break characters to vary based on position in the line. m. New bindable command: unix-filename-rubout. Does the same thing as unix-word-rubout, but adds `/' to the set of word delimiters. n. When listing completions, directories have a `/' appended if the `mark-directories' option has been enabled. ------------------------------------------------------------------------------- This document details the changes between this version, readline-4.3, and the previous version, readline-4.2a. 1. Changes to Readline a. Fixed output of comment-begin character when listing variable values. b. Added some default key bindings for common escape sequences produced by HOME and END keys. c. Fixed the mark handling code to be more emacs-compatible. d. A bug was fixed in the code that prints possible completions to keep it from printing empty strings in certain circumstances. e. Change the key sequence printing code to print ESC as M\- if ESC is a meta-prefix character -- it's easier for users to understand than \e. f. Fixed unstifle_history() to return values that match the documentation. g. Fixed the event loop (rl_event_hook) to handle the case where the input file descriptor is invalidated. h. Fixed the prompt display code to work better when the application has a custom redisplay function. i. Changes to make reading and writing the history file a little faster, and to cope with huge history files without calling abort(3) from xmalloc. j. The vi-mode `S' and `s' commands are now undone correctly. k. Fixed a problem which caused the display to be messed up when the last line of a multi-line prompt (possibly containing invisible characters) was longer than the screen width. 2. New Features in Readline a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both be bound to readline functions. Now the arrow keys may be used in vi insert mode. b. When listing completions, and the number of lines displayed is more than the screen length, readline uses an internal pager to display the results. This is controlled by the `page-completions' variable (default on). c. New code to handle editing and displaying multibyte characters. d. The behavior introduced in bash-2.05a of deciding whether or not to append a slash to a completed name that is a symlink to a directory has been made optional, controlled by the `mark-symlinked-directories' variable (default is the 2.05a behavior). e. The `insert-comment' command now acts as a toggle if given a numeric argument: if the first characters on the line don't specify a comment, insert one; if they do, delete the comment text f. New application-settable completion variable: rl_completion_mark_symlink_dirs, allows an application's completion function to temporarily override the user's preference for appending slashes to names which are symlinks to directories. g. New function available to application completion functions: rl_completion_mode, to tell how the completion function was invoked and decide which argument to supply to rl_complete_internal (to list completions, etc.). h. Readline now has an overwrite mode, toggled by the `overwrite-mode' bindable command, which could be bound to `Insert'. i. New application-settable completion variable: rl_completion_suppress_append, inhibits appending of rl_completion_append_character to completed words. j. New key bindings when reading an incremental search string: ^W yanks the currently-matched word out of the current line into the search string; ^Y yanks the rest of the current line into the search string, DEL or ^H deletes characters from the search string. ------------------------------------------------------------------------------- This document details the changes between this version, readline-4.2a, and the previous version, readline-4.2. 1. Changes to Readline a. More `const' and type casting fixes. b. Changed rl_message() to use vsnprintf(3) (if available) to fix buffer overflow problems. c. The completion code no longer appends a `/' or ` ' to a match when completing a symbolic link that resolves to a directory name, unless the match does not add anything to the word being completed. This means that a tab will complete the word up to the full name, but not add anything, and a subsequent tab will add a slash. d. Fixed a trivial typo that made the vi-mode `dT' command not work. e. Fixed the tty code so that ^S and ^Q can be inserted with rl_quoted_insert. f. Fixed the tty code so that ^V works more than once. g. Changed the use of __P((...)) for function prototypes to PARAMS((...)) because the use of __P in typedefs conflicted g++ and glibc. h. The completion code now attempts to do a better job of preserving the case of the word the user typed if ignoring case in completions. i. Readline defaults to not echoing the input and lets the terminal initialization code enable echoing if there is a controlling terminal. j. The key binding code now processes only two hex digits after a `\x' escape sequence, and the documentation was changed to note that the octal and hex escape sequences result in an eight-bit value rather than strict ASCII. k. Fixed a few places where negative array subscripts could have occurred. l. Fixed the vi-mode code to use a better method to determine the bounds of the array used to hold the marks, and to avoid out-of-bounds references. m. Fixed the defines in chardefs.h to work better when chars are signed. n. Fixed configure.in to use the new names for bash autoconf macros. o. Readline no longer attempts to define its own versions of some ctype macros if they are implemented as functions in libc but not as macros in . p. Fixed a problem where rl_backward could possibly set point to before the beginning of the line. q. Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause include file problems. 2. New Features in Readline a. Added extern declaration for rl_get_termcap to readline.h, making it a public function (it was always there, just not in readline.h). b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402, RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2. c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION. d. New bindable boolean readline variable: match-hidden-files. Controls completion of files beginning with a `.' (on Unix). Enabled by default. e. The history expansion code now allows any character to terminate a `:first-' modifier, like csh. f. The incremental search code remembers the last search string and uses it if ^R^R is typed without a search string. h. New bindable variable `history-preserve-point'. If set, the history code attempts to place the user at the same location on each history line retrived with previous-history or next-history. ------------------------------------------------------------------------------- This document details the changes between this version, readline-4.2, and the previous version, readline-4.1. 1. Changes to Readline a. When setting the terminal attributes on systems using `struct termio', readline waits for output to drain before changing the attributes. b. A fix was made to the history word tokenization code to avoid attempts to dereference a null pointer. c. Readline now defaults rl_terminal_name to $TERM if the calling application has left it unset, and tries to initialize with the resultant value. d. Instead of calling (*rl_getc_function)() directly to get input in certain places, readline now calls rl_read_key() consistently. e. Fixed a bug in the completion code that allowed a backslash to quote a single quote inside a single-quoted string. f. rl_prompt is no longer assigned directly from the argument to readline(), but uses memory allocated by readline. This allows constant strings to be passed to readline without problems arising when the prompt processing code wants to modify the string. g. Fixed a bug that caused non-interactive history searches to return the wrong line when performing multiple searches backward for the same string. h. Many variables, function arguments, and function return values are now declared `const' where appropriate, to improve behavior when linking with C++ code. i. The control character detection code now works better on systems where `char' is unsigned by default. j. The vi-mode numeric argument is now capped at 999999, just like emacs mode. k. The Function, CPFunction, CPPFunction, and VFunction typedefs have been replaced with a set of specific prototyped typedefs, though they are still in the readline header files for backwards compatibility. m. Nearly all of the (undocumented) internal global variables in the library now have an _rl_ prefix -- there were a number that did not, like screenheight, screenwidth, alphabetic, etc. n. The ding() convenience function has been renamed to rl_ding(), though the old function is still defined for backwards compatibility. o. The completion convenience functions filename_completion_function, username_completion_function, and completion_matches now have an rl_ prefix, though the old names are still defined for backwards compatibility. p. The functions shared by readline and bash (linkage is satisfied from bash when compiling with bash, and internally otherwise) now have an sh_ prefix. q. Changed the shared library creation procedure on Linux and BSD/OS 4.x so that the `soname' contains only the major version number rather than the major and minor numbers. r. Fixed a redisplay bug that occurred when the prompt spanned more than one physical line and contained invisible characters. s. Added a missing `includedir' variable to the Makefile. t. When installing the shared libraries, make sure symbolic links are relative. u. Added configure test so that it can set `${MAKE}' appropriately. v. Fixed a bug in rl_forward that could cause the point to be set to before the beginning of the line in vi mode. w. Fixed a bug in the callback read-char interface to make it work when a readline function pushes some input onto the input stream with rl_execute_next (like the incremental search functions). x. Fixed a file descriptor leak in the history file manipulation code that was tripped when attempting to truncate a non-regular file (like /dev/null). y. Changes to make all of the exported readline functions declared in readline.h have an rl_ prefix (rltty_set_default_bindings is now rl_tty_set_default_bindings, crlf is now rl_crlf, etc.) z. The formatted documentation included in the base readline distribution is no longer removed on a `make distclean'. aa. Some changes were made to avoid gcc warnings with -Wall. bb. rl_get_keymap_by_name now finds keymaps case-insensitively, so `set keymap EMACS' works. cc. The history file writing and truncation functions now return a useful status on error. dd. Fixed a bug that could cause applications to dereference a NULL pointer if a NULL second argument was passed to history_expand(). ee. If a hook function assigned to rl_event_hook sets rl_done to a non-zero value, rl_read_key() now immediately returns '\n' (which is assumed to be bound to accept-line). 2. New Features in Readline a. The blink timeout for paren matching is now settable by applications, via the rl_set_paren_blink_timeout() function. b. _rl_executing_macro has been renamed to rl_executing_macro, which means it's now part of the public interface. c. Readline has a new variable, rl_readline_state, which is a bitmap that encapsulates the current state of the library; intended for use by callbacks and hook functions. d. rlfe has a new -l option to log input and output (-a appends to logfile), a new -n option to set the readline application name, and -v and -h options for version and help information. e. rlfe can now perform filename completion for the inferior process if the OS has a /proc//cwd that can be read with readlink(2) to get the inferior's current working directory. f. A new file, rltypedefs.h, contains the new typedefs for function pointers and is installed by `make install'. g. New application-callable function rl_set_prompt(const char *prompt): expands its prompt string argument and sets rl_prompt to the result. h. New application-callable function rl_set_screen_size(int rows, int cols): public method for applications to set readline's idea of the screen dimensions. i. The history example program (examples/histexamp.c) is now built as one of the examples. j. The documentation has been updated to cover nearly all of the public functions and variables declared in readline.h. k. New function, rl_get_screen_size (int *rows, int *columns), returns readline's idea of the screen dimensions. l. The timeout in rl_gather_tyi (readline keyboard input polling function) is now settable via a function (rl_set_keyboard_input_timeout()). m. Renamed the max_input_history variable to history_max_entries; the old variable is maintained for backwards compatibility. n. The list of characters that separate words for the history tokenizer is now settable with a variable: history_word_delimiters. The default value is as before. o. There is a new history.3 manual page documenting the history library. ------------------------------------------------------------------------------- This document details the changes between this version, readline-4.1, and the previous version, readline-4.0. 1. Changes to Readline a. Changed the HTML documents so that the table-of-contents is no longer a separate file. b. Changes to the shared object configuration for: Irix 5.x, Irix 6.x, OSF/1. c. The shared library major and minor versions are now constructed automatically by configure and substituted into the makefiles. d. It's now possible to install the shared libraries separately from the static libraries. e. The history library tries to truncate the history file only if it is a regular file. f. A bug that caused _rl_dispatch to address negative array indices on systems with signed chars was fixed. g. rl-yank-nth-arg now leaves the history position the same as when it was called. h. Changes to the completion code to handle MS-DOS drive-letter:pathname filenames. i. Completion is now case-insensitive by default on MS-DOS. j. Fixes to the history file manipulation code for MS-DOS. k. Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS. l. Some fixes were made to the redisplay code for better operation on MS-DOS. m. The quoted-insert code will now insert tty special chars like ^C. n. A bug was fixed that caused the display code to reference memory before the start of the prompt string. o. More support for __EMX__ (OS/2). p. A bug was fixed in readline's signal handling that could cause infinite recursion in signal handlers. q. A bug was fixed that caused the point to be less than zero when rl_forward was given a very large numeric argument. r. The vi-mode code now gets characters via the application-settable value of rl_getc_function rather than calling rl_getc directly. s. The history file code now uses O_BINARY mode when reading and writing the history file on cygwin32. t. Fixed a bug in the redisplay code for lines with more than 256 line breaks. u. A bug was fixed which caused invisible character markers to not be stripped from the prompt string if the terminal was in no-echo mode. v. Readline no longer tries to get the variables it needs for redisplay from the termcap entry if the calling application has specified its own redisplay function. Readline treats the terminal as `dumb' in this case. w. Fixes to the SIGWINCH code so that a multiple-line prompt with escape sequences is redrawn correctly. x. Changes to the install and install-shared targets so that the libraries and header files are installed separately. 2. New Features in Readline a. A new Readline `user manual' is in doc/rluserman.texinfo. b. Parentheses matching is now always compiled into readline, and enabled or disabled when the value of the `blink-matching-paren' variable is changed. c. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename. d. MS-DOS systems now use ~/_history as the default history file. e. history-search-{forward,backward} now leave the point at the end of the line when the string to search for is empty, like {reverse,forward}-search-history. f. history-search-{forward,backward} now leave the last history line found in the readline buffer if the second or subsequent search fails. g. New function for use by applications: rl_on_new_line_with_prompt, used when an application displays the prompt itself before calling readline(). h. New variable for use by applications: rl_already_prompted. An application that displays the prompt itself before calling readline() must set this to a non-zero value. i. A new variable, rl_gnu_readline_p, always 1. The intent is that an application can verify whether or not it is linked with the `real' readline library or some substitute. j. Per Bothner's `rlfe' (pronounced `Ralphie') readline front-end program is included in the examples subdirectory, though it is not built by default. ------------------------------------------------------------------------------- This document details the changes between this version, readline-4.0, and the previous version, readline-2.2. 1. Changes to Readline a. The version number is now 4.0, to match the major and minor version numbers on the shared readline and history libraries. Future releases will maintain the identical numbering. b. Fixed a typo in the `make install' recipe that copied libreadline.a to libhistory.old right after installing it. c. The readline and history info files are now installed out of the source directory if they are not found in the build directory. d. The library no longer exports a function named `savestring' -- backwards compatibility be damned. e. There is no longer any #ifdef SHELL code in the source files. f. Some changes were made to the key binding code to fix memory leaks and better support Win32 systems. g. Fixed a silly typo in the paren matching code -- it's microseconds, not milliseconds. h. The readline library should be compilable by C++ compilers. i. The readline.h public header file now includes function prototypes for all readline functions, and some changes were made to fix errors in the source files uncovered by the use of prototypes. j. The maximum numeric argument is now clamped at 1000000. k. Fixes to rl_yank_last_arg to make it behave better. l. Fixed a bug in the display code that caused core dumps if the prompt string length exceeded 1024 characters. m. The menu completion code was fixed to properly insert a single completion if there is only one match. n. A bug was fixed that caused the display code to improperly display tabs after newlines. o. A fix was made to the completion code in which a typo caused the wrong value to be passed to the function that computed the longest common prefix of the list of matches. p. The completion code now checks the value of rl_filename_completion_desired, which is set by application-supplied completion functions to indicate that filename completion is being performed, to decide whether or not to call an application-supplied `ignore completions' function. q. Code was added to the history library to catch history substitutions using `&' without a previous history substitution or search having been performed. 2. New Features in Readline a. There is a new script, support/shobj-conf, to do system-specific shared object and library configuration. It generates variables for configure to substitute into makefiles. The README file provides a detailed explanation of the shared library creation process. b. Shared libraries and objects are now built in the `shlib' subdirectory. There is a shlib/Makefile.in to control the build process. `make shared' from the top-level directory is still the right way to build shared versions of the libraries. c. rlconf.h is now installed, so applications can find out which features have been compiled into the installed readline and history libraries. d. rlstdc.h is now an installed header file. e. Many changes to the signal handling: o Readline now catches SIGQUIT and cleans up the tty before returning; o A new variable, rl_catch_signals, is available to application writers to indicate to readline whether or not it should install its own signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU; o A new variable, rl_catch_sigwinch, is available to application writers to indicate to readline whether or not it should install its own signal handler for SIGWINCH, which will chain to the calling applications's SIGWINCH handler, if one is installed; o There is a new function, rl_free_line_state, for application signal handlers to call to free up the state associated with the current line after receiving a signal; o There is a new function, rl_cleanup_after_signal, to clean up the display and terminal state after receiving a signal; o There is a new function, rl_reset_after_signal, to reinitialize the terminal and display state after an application signal handler returns and readline continues f. There is a new function, rl_resize_terminal, to reset readline's idea of the screen size after a SIGWINCH. g. New public functions: rl_save_prompt and rl_restore_prompt. These were previously private functions with a `_' prefix. These functions are used when an application wants to write a message to the `message area' with rl_message and have the prompt restored correctly when the message is erased. h. New function hook: rl_pre_input_hook, called just before readline starts reading input, after initialization. i. New function hook: rl_display_matches_hook, called when readline would display the list of completion matches. The new function rl_display_match_list is what readline uses internally, and is available for use by application functions called via this hook. j. New bindable function, delete-char-or-list, like tcsh. k. A new variable, rl_erase_empty_line, which, if set by an application using readline, will cause readline to erase, prompt and all, lines on which the only thing typed was a newline. l. There is a new script, support/shlib-install, to install and uninstall the shared readline and history libraries. m. A new bindable variable, `isearch-terminators', which is a string containing the set of characters that should terminate an incremental search without being executed as a command. n. A new bindable function, forward-backward-delete-char. ------------------------------------------------------------------------------- This document details the changes between this version, readline-2.2, and the previous version, readline-2.1. 1. Changes to Readline a. Added a missing `extern' to a declaration in readline.h that kept readline from compiling cleanly on some systems. b. The history file is now opened with mode 0600 when it is written for better security. c. Changes were made to the SIGWINCH handling code so that prompt redisplay is done better. d. ^G now interrupts incremental searches correctly. e. A bug that caused a core dump when the set of characters to be quoted when completing words was empty was fixed. f. Fixed a problem in the readline test program rltest.c that caused a core dump. g. The code that handles parser directives in inputrc files now displays more error messages. h. The history expansion code was fixed so that the appearance of the history comment character at the beginning of a word inhibits history expansion for that word and the rest of the input line. i. The code that prints completion listings now behaves better if one or more of the filenames contains non-printable characters. j. The time delay when showing matching parentheses is now 0.5 seconds. 2. New Features in Readline a. There is now an option for `iterative' yank-last-arg handline, so a user can keep entering `M-.', yanking the last argument of successive history lines. b. New variable, `print-completions-horizontally', which causes completion matches to be displayed across the screen (like `ls -x') rather than up and down the screen (like `ls'). c. New variable, `completion-ignore-case', which causes filename completion and matching to be performed case-insensitively. d. There is a new bindable command, `magic-space', which causes history expansion to be performed on the current readline buffer and a space to be inserted into the result. e. There is a new bindable command, `menu-complete', which enables tcsh-like menu completion (successive executions of menu-complete insert a single completion match, cycling through the list of possible completions). f. There is a new bindable command, `paste-from-clipboard', for use on Win32 systems, to insert the text from the Win32 clipboard into the editing buffer. g. The key sequence translation code now understands printf-style backslash escape sequences, including \NNN octal escapes. These escape sequences may be used in key sequence definitions or macro values. h. An `$include' inputrc file parser directive has been added. readline-8.0/histsearch.c000664 000436 000120 00000015726 13363160333 015526 0ustar00chetadmin000000 000000 /* histsearch.c -- searching the history list. */ /* Copyright (C) 1989, 1992-2009,2017 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. History is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. History is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with History. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_UNISTD_H) # ifdef _MINIX # include # endif # include #endif #if defined (HAVE_FNMATCH) # include #endif #include "history.h" #include "histlib.h" #include "xmalloc.h" /* The list of alternate characters that can delimit a history search string. */ char *history_search_delimiter_chars = (char *)NULL; static int history_search_internal PARAMS((const char *, int, int)); /* Search the history for STRING, starting at history_offset. If DIRECTION < 0, then the search is through previous entries, else through subsequent. If ANCHORED is non-zero, the string must appear at the beginning of a history line, otherwise, the string may appear anywhere in the line. If the string is found, then current_history () is the history entry, and the value of this function is the offset in the line of that history entry that the string was found in. Otherwise, nothing is changed, and a -1 is returned. */ static int history_search_internal (const char *string, int direction, int flags) { register int i, reverse; register char *line; register int line_index; int string_len, anchored, patsearch; HIST_ENTRY **the_history; /* local */ i = history_offset; reverse = (direction < 0); anchored = (flags & ANCHORED_SEARCH); #if defined (HAVE_FNMATCH) patsearch = (flags & PATTERN_SEARCH); #else patsearch = 0; #endif /* Take care of trivial cases first. */ if (string == 0 || *string == '\0') return (-1); if (!history_length || ((i >= history_length) && !reverse)) return (-1); if (reverse && (i >= history_length)) i = history_length - 1; #define NEXT_LINE() do { if (reverse) i--; else i++; } while (0) the_history = history_list (); string_len = strlen (string); while (1) { /* Search each line in the history list for STRING. */ /* At limit for direction? */ if ((reverse && i < 0) || (!reverse && i == history_length)) return (-1); line = the_history[i]->line; line_index = strlen (line); /* If STRING is longer than line, no match. */ if (patsearch == 0 && (string_len > line_index)) { NEXT_LINE (); continue; } /* Handle anchored searches first. */ if (anchored == ANCHORED_SEARCH) { #if defined (HAVE_FNMATCH) if (patsearch) { if (fnmatch (string, line, 0) == 0) { history_offset = i; return (0); } } else #endif if (STREQN (string, line, string_len)) { history_offset = i; return (0); } NEXT_LINE (); continue; } /* Do substring search. */ if (reverse) { line_index -= (patsearch == 0) ? string_len : 1; while (line_index >= 0) { #if defined (HAVE_FNMATCH) if (patsearch) { if (fnmatch (string, line + line_index, 0) == 0) { history_offset = i; return (line_index); } } else #endif if (STREQN (string, line + line_index, string_len)) { history_offset = i; return (line_index); } line_index--; } } else { register int limit; limit = line_index - string_len + 1; line_index = 0; while (line_index < limit) { #if defined (HAVE_FNMATCH) if (patsearch) { if (fnmatch (string, line + line_index, 0) == 0) { history_offset = i; return (line_index); } } else #endif if (STREQN (string, line + line_index, string_len)) { history_offset = i; return (line_index); } line_index++; } } NEXT_LINE (); } } int _hs_history_patsearch (const char *string, int direction, int flags) { char *pat; size_t len, start; int ret, unescaped_backslash; #if defined (HAVE_FNMATCH) /* Assume that the string passed does not have a leading `^' and any anchored search request is captured in FLAGS */ len = strlen (string); ret = len - 1; /* fnmatch is required to reject a pattern that ends with an unescaped backslash */ if (unescaped_backslash = (string[ret] == '\\')) { while (ret > 0 && string[--ret] == '\\') unescaped_backslash = 1 - unescaped_backslash; } if (unescaped_backslash) return -1; pat = (char *)xmalloc (len + 3); /* If the search string is not anchored, we'll be calling fnmatch (assuming we have it). Prefix a `*' to the front of the search string so we search anywhere in the line. */ if ((flags & ANCHORED_SEARCH) == 0 && string[0] != '*') { pat[0] = '*'; start = 1; len++; } else { start = 0; } /* Attempt to reduce the number of searches by tacking a `*' onto the end of a pattern that doesn't have one. Assume a pattern that ends in a backslash contains an even number of trailing backslashes; we check above */ strcpy (pat + start, string); if (pat[len - 1] != '*') { pat[len] = '*'; /* XXX */ pat[len+1] = '\0'; } #else pat = string; #endif ret = history_search_internal (pat, direction, flags|PATTERN_SEARCH); if (pat != string) free (pat); return ret; } /* Do a non-anchored search for STRING through the history in DIRECTION. */ int history_search (const char *string, int direction) { return (history_search_internal (string, direction, NON_ANCHORED_SEARCH)); } /* Do an anchored search for string through the history in DIRECTION. */ int history_search_prefix (const char *string, int direction) { return (history_search_internal (string, direction, ANCHORED_SEARCH)); } /* Search for STRING in the history list. DIR is < 0 for searching backwards. POS is an absolute index into the history list at which point to begin searching. */ int history_search_pos (const char *string, int dir, int pos) { int ret, old; old = where_history (); history_set_pos (pos); if (history_search (string, dir) == -1) { history_set_pos (old); return (-1); } ret = where_history (); history_set_pos (old); return ret; } readline-8.0/readline.pc.in000664 000436 000000 00000000525 13267377642 015761 0ustar00chetwheel000000 000000 prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: Readline Description: Gnu Readline library for command line editing URL: http://tiswww.cwru.edu/php/chet/readline/rltop.html Version: @LIBVERSION@ Requires.private: @TERMCAP_PKG_CONFIG_LIB@ Libs: -L${libdir} -lreadline Cflags: -I${includedir}/readline readline-8.0/text.c000664 000436 000000 00000121452 13343564516 014371 0ustar00chetwheel000000 000000 /* text.c -- text handling commands for readline. */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_LOCALE_H) # include #endif #include /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "rlmbutil.h" #if defined (__EMX__) # define INCL_DOSPROCESS # include #endif /* __EMX__ */ /* Some standard library routines. */ #include "readline.h" #include "history.h" #include "rlprivate.h" #include "rlshell.h" #include "xmalloc.h" /* Forward declarations. */ static int rl_change_case PARAMS((int, int)); static int _rl_char_search PARAMS((int, int, int)); #if defined (READLINE_CALLBACKS) static int _rl_insert_next_callback PARAMS((_rl_callback_generic_arg *)); static int _rl_char_search_callback PARAMS((_rl_callback_generic_arg *)); #endif /* The largest chunk of text that can be inserted in one call to rl_insert_text. Text blocks larger than this are divided. */ #define TEXT_COUNT_MAX 1024 int _rl_optimize_typeahead = 1; /* rl_insert tries to read typeahead */ /* **************************************************************** */ /* */ /* Insert and Delete */ /* */ /* **************************************************************** */ /* Insert a string of text into the line at point. This is the only way that you should do insertion. _rl_insert_char () calls this function. Returns the number of characters inserted. */ int rl_insert_text (const char *string) { register int i, l; l = (string && *string) ? strlen (string) : 0; if (l == 0) return 0; if (rl_end + l >= rl_line_buffer_len) rl_extend_line_buffer (rl_end + l); for (i = rl_end; i >= rl_point; i--) rl_line_buffer[i + l] = rl_line_buffer[i]; strncpy (rl_line_buffer + rl_point, string, l); /* Remember how to undo this if we aren't undoing something. */ if (_rl_doing_an_undo == 0) { /* If possible and desirable, concatenate the undos. */ if ((l == 1) && rl_undo_list && (rl_undo_list->what == UNDO_INSERT) && (rl_undo_list->end == rl_point) && (rl_undo_list->end - rl_undo_list->start < 20)) rl_undo_list->end++; else rl_add_undo (UNDO_INSERT, rl_point, rl_point + l, (char *)NULL); } rl_point += l; rl_end += l; rl_line_buffer[rl_end] = '\0'; return l; } /* Delete the string between FROM and TO. FROM is inclusive, TO is not. Returns the number of characters deleted. */ int rl_delete_text (int from, int to) { register char *text; register int diff, i; /* Fix it if the caller is confused. */ if (from > to) SWAP (from, to); /* fix boundaries */ if (to > rl_end) { to = rl_end; if (from > to) from = to; } if (from < 0) from = 0; text = rl_copy_text (from, to); /* Some versions of strncpy() can't handle overlapping arguments. */ diff = to - from; for (i = from; i < rl_end - diff; i++) rl_line_buffer[i] = rl_line_buffer[i + diff]; /* Remember how to undo this delete. */ if (_rl_doing_an_undo == 0) rl_add_undo (UNDO_DELETE, from, to, text); else xfree (text); rl_end -= diff; rl_line_buffer[rl_end] = '\0'; return (diff); } /* Fix up point so that it is within the line boundaries after killing text. If FIX_MARK_TOO is non-zero, the mark is forced within line boundaries also. */ #define _RL_FIX_POINT(x) \ do { \ if (x > rl_end) \ x = rl_end; \ else if (x < 0) \ x = 0; \ } while (0) void _rl_fix_point (int fix_mark_too) { _RL_FIX_POINT (rl_point); if (fix_mark_too) _RL_FIX_POINT (rl_mark); } #undef _RL_FIX_POINT /* Replace the contents of the line buffer between START and END with TEXT. The operation is undoable. To replace the entire line in an undoable mode, use _rl_replace_text(text, 0, rl_end); */ int _rl_replace_text (const char *text, int start, int end) { int n; n = 0; rl_begin_undo_group (); if (start <= end) rl_delete_text (start, end + 1); rl_point = start; if (*text) n = rl_insert_text (text); rl_end_undo_group (); return n; } /* Replace the current line buffer contents with TEXT. If CLEAR_UNDO is non-zero, we free the current undo list. */ void rl_replace_line (const char *text, int clear_undo) { int len; len = strlen (text); if (len >= rl_line_buffer_len) rl_extend_line_buffer (len); strcpy (rl_line_buffer, text); rl_end = len; if (clear_undo) rl_free_undo_list (); _rl_fix_point (1); } /* **************************************************************** */ /* */ /* Readline character functions */ /* */ /* **************************************************************** */ /* This is not a gap editor, just a stupid line input routine. No hair is involved in writing any of the functions, and none should be. */ /* Note that: rl_end is the place in the string that we would place '\0'; i.e., it is always safe to place '\0' there. rl_point is the place in the string where the cursor is. Sometimes this is the same as rl_end. Any command that is called interactively receives two arguments. The first is a count: the numeric arg passed to this command. The second is the key which invoked this command. */ /* **************************************************************** */ /* */ /* Movement Commands */ /* */ /* **************************************************************** */ /* Note that if you `optimize' the display for these functions, you cannot use said functions in other functions which do not do optimizing display. I.e., you will have to update the data base for rl_redisplay, and you might as well let rl_redisplay do that job. */ /* Move forward COUNT bytes. */ int rl_forward_byte (int count, int key) { if (count < 0) return (rl_backward_byte (-count, key)); if (count > 0) { int end, lend; end = rl_point + count; #if defined (VI_MODE) lend = rl_end > 0 ? rl_end - (VI_COMMAND_MODE()) : rl_end; #else lend = rl_end; #endif if (end > lend) { rl_point = lend; rl_ding (); } else rl_point = end; } if (rl_end < 0) rl_end = 0; return 0; } int _rl_forward_char_internal (int count) { int point; #if defined (HANDLE_MULTIBYTE) point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); #if defined (VI_MODE) if (point >= rl_end && VI_COMMAND_MODE()) point = _rl_find_prev_mbchar (rl_line_buffer, rl_end, MB_FIND_NONZERO); #endif if (rl_end < 0) rl_end = 0; #else point = rl_point + count; #endif if (point > rl_end) point = rl_end; return (point); } int _rl_backward_char_internal (int count) { int point; point = rl_point; #if defined (HANDLE_MULTIBYTE) if (count > 0) { while (count > 0 && point > 0) { point = _rl_find_prev_mbchar (rl_line_buffer, point, MB_FIND_NONZERO); count--; } if (count > 0) return 0; /* XXX - rl_ding() here? */ } #else if (count > 0) point -= count; #endif if (point < 0) point = 0; return (point); } #if defined (HANDLE_MULTIBYTE) /* Move forward COUNT characters. */ int rl_forward_char (int count, int key) { int point; if (MB_CUR_MAX == 1 || rl_byte_oriented) return (rl_forward_byte (count, key)); if (count < 0) return (rl_backward_char (-count, key)); if (count > 0) { if (rl_point == rl_end && EMACS_MODE()) { rl_ding (); return 0; } point = _rl_forward_char_internal (count); if (rl_point == point) rl_ding (); rl_point = point; } return 0; } #else /* !HANDLE_MULTIBYTE */ int rl_forward_char (int count, int key) { return (rl_forward_byte (count, key)); } #endif /* !HANDLE_MULTIBYTE */ /* Backwards compatibility. */ int rl_forward (int count, int key) { return (rl_forward_char (count, key)); } /* Move backward COUNT bytes. */ int rl_backward_byte (int count, int key) { if (count < 0) return (rl_forward_byte (-count, key)); if (count > 0) { if (rl_point < count) { rl_point = 0; rl_ding (); } else rl_point -= count; } if (rl_point < 0) rl_point = 0; return 0; } #if defined (HANDLE_MULTIBYTE) /* Move backward COUNT characters. */ int rl_backward_char (int count, int key) { int point; if (MB_CUR_MAX == 1 || rl_byte_oriented) return (rl_backward_byte (count, key)); if (count < 0) return (rl_forward_char (-count, key)); if (count > 0) { point = rl_point; while (count > 0 && point > 0) { point = _rl_find_prev_mbchar (rl_line_buffer, point, MB_FIND_NONZERO); count--; } if (count > 0) { rl_point = 0; rl_ding (); } else rl_point = point; } return 0; } #else int rl_backward_char (int count, int key) { return (rl_backward_byte (count, key)); } #endif /* Backwards compatibility. */ int rl_backward (int count, int key) { return (rl_backward_char (count, key)); } /* Move to the beginning of the line. */ int rl_beg_of_line (int count, int key) { rl_point = 0; return 0; } /* Move to the end of the line. */ int rl_end_of_line (int count, int key) { rl_point = rl_end; return 0; } /* Move forward a word. We do what Emacs does. Handles multibyte chars. */ int rl_forward_word (int count, int key) { int c; if (count < 0) return (rl_backward_word (-count, key)); while (count) { if (rl_point == rl_end) return 0; /* If we are not in a word, move forward until we are in one. Then, move forward until we hit a non-alphabetic character. */ c = _rl_char_value (rl_line_buffer, rl_point); if (_rl_walphabetic (c) == 0) { rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); while (rl_point < rl_end) { c = _rl_char_value (rl_line_buffer, rl_point); if (_rl_walphabetic (c)) break; rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); } } if (rl_point == rl_end) return 0; rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); while (rl_point < rl_end) { c = _rl_char_value (rl_line_buffer, rl_point); if (_rl_walphabetic (c) == 0) break; rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); } --count; } return 0; } /* Move backward a word. We do what Emacs does. Handles multibyte chars. */ int rl_backward_word (int count, int key) { int c, p; if (count < 0) return (rl_forward_word (-count, key)); while (count) { if (rl_point == 0) return 0; /* Like rl_forward_word (), except that we look at the characters just before point. */ p = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); c = _rl_char_value (rl_line_buffer, p); if (_rl_walphabetic (c) == 0) { rl_point = p; while (rl_point > 0) { p = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); c = _rl_char_value (rl_line_buffer, p); if (_rl_walphabetic (c)) break; rl_point = p; } } while (rl_point) { p = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); c = _rl_char_value (rl_line_buffer, p); if (_rl_walphabetic (c) == 0) break; else rl_point = p; } --count; } return 0; } /* Clear the current line. Numeric argument to C-l does this. */ int rl_refresh_line (int ignore1, int ignore2) { int curr_line; curr_line = _rl_current_display_line (); _rl_move_vert (curr_line); _rl_move_cursor_relative (0, rl_line_buffer); /* XXX is this right */ _rl_clear_to_eol (0); /* arg of 0 means to not use spaces */ rl_redraw_prompt_last_line (); rl_display_fixed = 1; return 0; } /* C-l typed to a line without quoting clears the screen, and then reprints the prompt and the current input line. Given a numeric arg, redraw only the current line. */ int rl_clear_screen (int count, int key) { if (rl_explicit_arg) { rl_refresh_line (count, key); return 0; } _rl_clear_screen (); /* calls termcap function to clear screen */ rl_forced_update_display (); rl_display_fixed = 1; return 0; } int rl_previous_screen_line (int count, int key) { int c; c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1); return (rl_backward_char (c, key)); } int rl_next_screen_line (int count, int key) { int c; c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1); return (rl_forward_char (c, key)); } int rl_skip_csi_sequence (int count, int key) { int ch; RL_SETSTATE (RL_STATE_MOREINPUT); do ch = rl_read_key (); while (ch >= 0x20 && ch < 0x40); RL_UNSETSTATE (RL_STATE_MOREINPUT); return (ch < 0); } int rl_arrow_keys (int count, int key) { int ch; RL_SETSTATE(RL_STATE_MOREINPUT); ch = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); if (ch < 0) return (1); switch (_rl_to_upper (ch)) { case 'A': rl_get_previous_history (count, ch); break; case 'B': rl_get_next_history (count, ch); break; case 'C': if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_forward_char (count, ch); else rl_forward_byte (count, ch); break; case 'D': if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_backward_char (count, ch); else rl_backward_byte (count, ch); break; default: rl_ding (); } return 0; } /* **************************************************************** */ /* */ /* Text commands */ /* */ /* **************************************************************** */ #ifdef HANDLE_MULTIBYTE static char pending_bytes[MB_LEN_MAX]; static int pending_bytes_length = 0; static mbstate_t ps = {0}; #endif /* Insert the character C at the current location, moving point forward. If C introduces a multibyte sequence, we read the whole sequence and then insert the multibyte char into the line buffer. */ int _rl_insert_char (int count, int c) { register int i; char *string; #ifdef HANDLE_MULTIBYTE int string_size; char incoming[MB_LEN_MAX + 1]; int incoming_length = 0; mbstate_t ps_back; static int stored_count = 0; #endif if (count <= 0) return 0; #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX == 1 || rl_byte_oriented) { incoming[0] = c; incoming[1] = '\0'; incoming_length = 1; } else if (_rl_utf8locale && (c & 0x80) == 0) { incoming[0] = c; incoming[1] = '\0'; incoming_length = 1; } else { wchar_t wc; size_t ret; if (stored_count <= 0) stored_count = count; else count = stored_count; ps_back = ps; pending_bytes[pending_bytes_length++] = c; ret = mbrtowc (&wc, pending_bytes, pending_bytes_length, &ps); if (ret == (size_t)-2) { /* Bytes too short to compose character, try to wait for next byte. Restore the state of the byte sequence, because in this case the effect of mbstate is undefined. */ ps = ps_back; return 1; } else if (ret == (size_t)-1) { /* Invalid byte sequence for the current locale. Treat first byte as a single character. */ incoming[0] = pending_bytes[0]; incoming[1] = '\0'; incoming_length = 1; pending_bytes_length--; memmove (pending_bytes, pending_bytes + 1, pending_bytes_length); /* Clear the state of the byte sequence, because in this case the effect of mbstate is undefined. */ memset (&ps, 0, sizeof (mbstate_t)); } else if (ret == (size_t)0) { incoming[0] = '\0'; incoming_length = 0; pending_bytes_length--; /* Clear the state of the byte sequence, because in this case the effect of mbstate is undefined. */ memset (&ps, 0, sizeof (mbstate_t)); } else if (ret == 1) { incoming[0] = pending_bytes[0]; incoming[incoming_length = 1] = '\0'; pending_bytes_length = 0; } else { /* We successfully read a single multibyte character. */ memcpy (incoming, pending_bytes, pending_bytes_length); incoming[pending_bytes_length] = '\0'; incoming_length = pending_bytes_length; pending_bytes_length = 0; } } #endif /* HANDLE_MULTIBYTE */ /* If we can optimize, then do it. But don't let people crash readline because of extra large arguments. */ if (count > 1 && count <= TEXT_COUNT_MAX) { #if defined (HANDLE_MULTIBYTE) string_size = count * incoming_length; string = (char *)xmalloc (1 + string_size); i = 0; while (i < string_size) { if (incoming_length == 1) string[i++] = *incoming; else { strncpy (string + i, incoming, incoming_length); i += incoming_length; } } incoming_length = 0; stored_count = 0; #else /* !HANDLE_MULTIBYTE */ string = (char *)xmalloc (1 + count); for (i = 0; i < count; i++) string[i] = c; #endif /* !HANDLE_MULTIBYTE */ string[i] = '\0'; rl_insert_text (string); xfree (string); return 0; } if (count > TEXT_COUNT_MAX) { int decreaser; #if defined (HANDLE_MULTIBYTE) string_size = incoming_length * TEXT_COUNT_MAX; string = (char *)xmalloc (1 + string_size); i = 0; while (i < string_size) { if (incoming_length == 1) string[i++] = *incoming; else { strncpy (string + i, incoming, incoming_length); i += incoming_length; } } while (count) { decreaser = (count > TEXT_COUNT_MAX) ? TEXT_COUNT_MAX : count; string[decreaser*incoming_length] = '\0'; rl_insert_text (string); count -= decreaser; } xfree (string); incoming_length = 0; stored_count = 0; #else /* !HANDLE_MULTIBYTE */ char str[TEXT_COUNT_MAX+1]; for (i = 0; i < TEXT_COUNT_MAX; i++) str[i] = c; while (count) { decreaser = (count > TEXT_COUNT_MAX ? TEXT_COUNT_MAX : count); str[decreaser] = '\0'; rl_insert_text (str); count -= decreaser; } #endif /* !HANDLE_MULTIBYTE */ return 0; } if (MB_CUR_MAX == 1 || rl_byte_oriented) { /* We are inserting a single character. If there is pending input, then make a string of all of the pending characters that are bound to rl_insert, and insert them all. Don't do this if we're current reading input from a macro. */ if ((RL_ISSTATE (RL_STATE_MACROINPUT) == 0) && _rl_pushed_input_available ()) _rl_insert_typein (c); else { /* Inserting a single character. */ char str[2]; str[1] = '\0'; str[0] = c; rl_insert_text (str); } } #if defined (HANDLE_MULTIBYTE) else { rl_insert_text (incoming); stored_count = 0; } #endif return 0; } /* Overwrite the character at point (or next COUNT characters) with C. If C introduces a multibyte character sequence, read the entire sequence before starting the overwrite loop. */ int _rl_overwrite_char (int count, int c) { int i; #if defined (HANDLE_MULTIBYTE) char mbkey[MB_LEN_MAX]; int k; /* Read an entire multibyte character sequence to insert COUNT times. */ if (count > 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0) k = _rl_read_mbstring (c, mbkey, MB_LEN_MAX); #endif rl_begin_undo_group (); for (i = 0; i < count; i++) { #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_insert_text (mbkey); else #endif _rl_insert_char (1, c); if (rl_point < rl_end) rl_delete (1, c); } rl_end_undo_group (); return 0; } int rl_insert (int count, int c) { int r, n, x; r = (rl_insert_mode == RL_IM_INSERT) ? _rl_insert_char (count, c) : _rl_overwrite_char (count, c); /* XXX -- attempt to batch-insert pending input that maps to self-insert */ x = 0; n = (unsigned short)-2; while (_rl_optimize_typeahead && rl_num_chars_to_read == 0 && (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && _rl_pushed_input_available () == 0 && _rl_input_queued (0) && (n = rl_read_key ()) > 0 && _rl_keymap[(unsigned char)n].type == ISFUNC && _rl_keymap[(unsigned char)n].function == rl_insert) { r = (rl_insert_mode == RL_IM_INSERT) ? _rl_insert_char (1, n) : _rl_overwrite_char (1, n); /* _rl_insert_char keeps its own set of pending characters to compose a complete multibyte character, and only returns 1 if it sees a character that's part of a multibyte character but too short to complete one. We can try to read another character in the hopes that we will get the next one or just punt. Right now we try to read another character. We don't want to call rl_insert_next if _rl_insert_char has already stored the character in the pending_bytes array because that will result in doubled input. */ n = (unsigned short)-2; x++; /* count of bytes of typeahead read, currently unused */ if (r == 1) /* read partial multibyte character */ continue; if (rl_done || r != 0) break; } if (n != (unsigned short)-2) /* -2 = sentinel value for having inserted N */ { /* setting rl_pending_input inhibits setting rl_last_func so we do it ourselves here */ rl_last_func = rl_insert; _rl_reset_argument (); rl_executing_keyseq[rl_key_sequence_length = 0] = '\0'; r = rl_execute_next (n); } return r; } /* Insert the next typed character verbatim. */ static int _rl_insert_next (int count) { int c; RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); if (c < 0) return 1; if (RL_ISSTATE (RL_STATE_MACRODEF)) _rl_add_macro_char (c); #if defined (HANDLE_SIGNALS) if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) _rl_restore_tty_signals (); #endif return (_rl_insert_char (count, c)); } #if defined (READLINE_CALLBACKS) static int _rl_insert_next_callback (_rl_callback_generic_arg *data) { int count, r; count = data->count; r = 0; if (count < 0) { data->count++; r = _rl_insert_next (1); _rl_want_redisplay = 1; /* If we should keep going, leave the callback function installed */ if (data->count < 0 && r == 0) return r; count = 0; /* data->count == 0 || r != 0; force break below */ } /* Deregister function, let rl_callback_read_char deallocate data */ _rl_callback_func = 0; _rl_want_redisplay = 1; if (count == 0) return r; return _rl_insert_next (count); } #endif int rl_quoted_insert (int count, int key) { /* Let's see...should the callback interface futz with signal handling? */ #if defined (HANDLE_SIGNALS) if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) _rl_disable_tty_signals (); #endif #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) { _rl_callback_data = _rl_callback_data_alloc (count); _rl_callback_func = _rl_insert_next_callback; return (0); } #endif /* A negative count means to quote the next -COUNT characters. */ if (count < 0) { int r; do r = _rl_insert_next (1); while (r == 0 && ++count < 0); return r; } return _rl_insert_next (count); } /* Insert a tab character. */ int rl_tab_insert (int count, int key) { return (_rl_insert_char (count, '\t')); } /* What to do when a NEWLINE is pressed. We accept the whole line. KEY is the key that invoked this command. I guess it could have meaning in the future. */ int rl_newline (int count, int key) { rl_done = 1; if (_rl_history_preserve_point) _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point; RL_SETSTATE(RL_STATE_DONE); #if defined (VI_MODE) if (rl_editing_mode == vi_mode) { _rl_vi_done_inserting (); if (_rl_vi_textmod_command (_rl_vi_last_command) == 0) /* XXX */ _rl_vi_reset_last (); } #endif /* VI_MODE */ /* If we've been asked to erase empty lines, suppress the final update, since _rl_update_final calls rl_crlf(). */ if (rl_erase_empty_line && rl_point == 0 && rl_end == 0) return 0; if (_rl_echoing_p) _rl_update_final (); return 0; } /* What to do for some uppercase characters, like meta characters, and some characters appearing in emacs_ctlx_keymap. This function is just a stub, you bind keys to it and the code in _rl_dispatch () is special cased. */ int rl_do_lowercase_version (int ignore1, int ignore2) { return 0; } /* This is different from what vi does, so the code's not shared. Emacs rubout in overwrite mode has one oddity: it replaces a control character that's displayed as two characters (^X) with two spaces. */ int _rl_overwrite_rubout (int count, int key) { int opoint; int i, l; if (rl_point == 0) { rl_ding (); return 1; } opoint = rl_point; /* L == number of spaces to insert */ for (i = l = 0; i < count; i++) { rl_backward_char (1, key); l += rl_character_len (rl_line_buffer[rl_point], rl_point); /* not exactly right */ } rl_begin_undo_group (); if (count > 1 || rl_explicit_arg) rl_kill_text (opoint, rl_point); else rl_delete_text (opoint, rl_point); /* Emacs puts point at the beginning of the sequence of spaces. */ if (rl_point < rl_end) { opoint = rl_point; _rl_insert_char (l, ' '); rl_point = opoint; } rl_end_undo_group (); return 0; } /* Rubout the character behind point. */ int rl_rubout (int count, int key) { if (count < 0) return (rl_delete (-count, key)); if (!rl_point) { rl_ding (); return 1; } if (rl_insert_mode == RL_IM_OVERWRITE) return (_rl_overwrite_rubout (count, key)); return (_rl_rubout_char (count, key)); } int _rl_rubout_char (int count, int key) { int orig_point; unsigned char c; /* Duplicated code because this is called from other parts of the library. */ if (count < 0) return (rl_delete (-count, key)); if (rl_point == 0) { rl_ding (); return 1; } orig_point = rl_point; if (count > 1 || rl_explicit_arg) { rl_backward_char (count, key); rl_kill_text (orig_point, rl_point); } else if (MB_CUR_MAX == 1 || rl_byte_oriented) { c = rl_line_buffer[--rl_point]; rl_delete_text (rl_point, orig_point); /* The erase-at-end-of-line hack is of questionable merit now. */ if (rl_point == rl_end && ISPRINT ((unsigned char)c) && _rl_last_c_pos) { int l; l = rl_character_len (c, rl_point); _rl_erase_at_end_of_line (l); } } else { rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); rl_delete_text (rl_point, orig_point); } return 0; } /* Delete the character under the cursor. Given a numeric argument, kill that many characters instead. */ int rl_delete (int count, int key) { int xpoint; if (count < 0) return (_rl_rubout_char (-count, key)); if (rl_point == rl_end) { rl_ding (); return 1; } if (count > 1 || rl_explicit_arg) { xpoint = rl_point; if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_forward_char (count, key); else rl_forward_byte (count, key); rl_kill_text (xpoint, rl_point); rl_point = xpoint; } else { xpoint = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); rl_delete_text (rl_point, xpoint); } return 0; } /* Delete the character under the cursor, unless the insertion point is at the end of the line, in which case the character behind the cursor is deleted. COUNT is obeyed and may be used to delete forward or backward that many characters. */ int rl_rubout_or_delete (int count, int key) { if (rl_end != 0 && rl_point == rl_end) return (_rl_rubout_char (count, key)); else return (rl_delete (count, key)); } /* Delete all spaces and tabs around point. */ int rl_delete_horizontal_space (int count, int ignore) { int start; while (rl_point && whitespace (rl_line_buffer[rl_point - 1])) rl_point--; start = rl_point; while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) rl_point++; if (start != rl_point) { rl_delete_text (start, rl_point); rl_point = start; } if (rl_point < 0) rl_point = 0; return 0; } /* Like the tcsh editing function delete-char-or-list. The eof character is caught before this is invoked, so this really does the same thing as delete-char-or-list-or-eof, as long as it's bound to the eof character. */ int rl_delete_or_show_completions (int count, int key) { if (rl_end != 0 && rl_point == rl_end) return (rl_possible_completions (count, key)); else return (rl_delete (count, key)); } #ifndef RL_COMMENT_BEGIN_DEFAULT #define RL_COMMENT_BEGIN_DEFAULT "#" #endif /* Turn the current line into a comment in shell history. A K*rn shell style function. */ int rl_insert_comment (int count, int key) { char *rl_comment_text; int rl_comment_len; rl_beg_of_line (1, key); rl_comment_text = _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT; if (rl_explicit_arg == 0) rl_insert_text (rl_comment_text); else { rl_comment_len = strlen (rl_comment_text); if (STREQN (rl_comment_text, rl_line_buffer, rl_comment_len)) rl_delete_text (rl_point, rl_point + rl_comment_len); else rl_insert_text (rl_comment_text); } (*rl_redisplay_function) (); rl_newline (1, '\n'); return (0); } /* **************************************************************** */ /* */ /* Changing Case */ /* */ /* **************************************************************** */ /* The three kinds of things that we know how to do. */ #define UpCase 1 #define DownCase 2 #define CapCase 3 /* Uppercase the word at point. */ int rl_upcase_word (int count, int key) { return (rl_change_case (count, UpCase)); } /* Lowercase the word at point. */ int rl_downcase_word (int count, int key) { return (rl_change_case (count, DownCase)); } /* Upcase the first letter, downcase the rest. */ int rl_capitalize_word (int count, int key) { return (rl_change_case (count, CapCase)); } /* The meaty function. Change the case of COUNT words, performing OP on them. OP is one of UpCase, DownCase, or CapCase. If a negative argument is given, leave point where it started, otherwise, leave it where it moves to. */ static int rl_change_case (int count, int op) { int start, next, end; int inword, nc, nop; wchar_t c; #if defined (HANDLE_MULTIBYTE) wchar_t wc, nwc; char mb[MB_LEN_MAX+1]; int mlen; size_t m; mbstate_t mps; #endif start = rl_point; rl_forward_word (count, 0); end = rl_point; if (op != UpCase && op != DownCase && op != CapCase) { rl_ding (); return 1; } if (count < 0) SWAP (start, end); #if defined (HANDLE_MULTIBYTE) memset (&mps, 0, sizeof (mbstate_t)); #endif /* We are going to modify some text, so let's prepare to undo it. */ rl_modifying (start, end); inword = 0; while (start < end) { c = _rl_char_value (rl_line_buffer, start); /* This assumes that the upper and lower case versions are the same width. */ next = MB_NEXTCHAR (rl_line_buffer, start, 1, MB_FIND_NONZERO); if (_rl_walphabetic (c) == 0) { inword = 0; start = next; continue; } if (op == CapCase) { nop = inword ? DownCase : UpCase; inword = 1; } else nop = op; /* Can't check isascii here; some languages (e.g, Turkish) have multibyte upper and lower case equivalents of single-byte ascii characters */ if (MB_CUR_MAX == 1 || rl_byte_oriented) { nc = (nop == UpCase) ? _rl_to_upper (c) : _rl_to_lower (c); rl_line_buffer[start] = nc; } #if defined (HANDLE_MULTIBYTE) else { m = mbrtowc (&wc, rl_line_buffer + start, end - start, &mps); if (MB_INVALIDCH (m)) wc = (wchar_t)rl_line_buffer[start]; else if (MB_NULLWCH (m)) wc = L'\0'; nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc); if (nwc != wc) /* just skip unchanged characters */ { char *s, *e; mlen = wcrtomb (mb, nwc, &mps); if (mlen > 0) mb[mlen] = '\0'; /* what to do if m != mlen? adjust below */ /* m == length of old char, mlen == length of new char */ s = rl_line_buffer + start; e = rl_line_buffer + rl_end; if (m == mlen) memcpy (s, mb, mlen); else if (m > mlen) { memcpy (s, mb, mlen); memmove (s + mlen, s + m, (e - s) - m); next -= m - mlen; /* next char changes */ end -= m - mlen; /* end of word changes */ rl_end -= m - mlen; /* end of line changes */ rl_line_buffer[rl_end] = 0; } else if (m < mlen) { rl_extend_line_buffer (mlen - m + 1); memmove (s + mlen, s + m, (e - s) - m); memcpy (s, mb, mlen); next += mlen - m; /* next char changes */ end += mlen - m; /* end of word changes */ rl_end += mlen - m; /* end of line changes */ rl_line_buffer[rl_end] = 0; } } } #endif start = next; } rl_point = end; return 0; } /* **************************************************************** */ /* */ /* Transposition */ /* */ /* **************************************************************** */ /* Transpose the words at point. If point is at the end of the line, transpose the two words before point. */ int rl_transpose_words (int count, int key) { char *word1, *word2; int w1_beg, w1_end, w2_beg, w2_end; int orig_point = rl_point; if (!count) return 0; /* Find the two words. */ rl_forward_word (count, key); w2_end = rl_point; rl_backward_word (1, key); w2_beg = rl_point; rl_backward_word (count, key); w1_beg = rl_point; rl_forward_word (1, key); w1_end = rl_point; /* Do some check to make sure that there really are two words. */ if ((w1_beg == w2_beg) || (w2_beg < w1_end)) { rl_ding (); rl_point = orig_point; return 1; } /* Get the text of the words. */ word1 = rl_copy_text (w1_beg, w1_end); word2 = rl_copy_text (w2_beg, w2_end); /* We are about to do many insertions and deletions. Remember them as one operation. */ rl_begin_undo_group (); /* Do the stuff at word2 first, so that we don't have to worry about word1 moving. */ rl_point = w2_beg; rl_delete_text (w2_beg, w2_end); rl_insert_text (word1); rl_point = w1_beg; rl_delete_text (w1_beg, w1_end); rl_insert_text (word2); /* This is exactly correct since the text before this point has not changed in length. */ rl_point = w2_end; /* I think that does it. */ rl_end_undo_group (); xfree (word1); xfree (word2); return 0; } /* Transpose the characters at point. If point is at the end of the line, then transpose the characters before point. */ int rl_transpose_chars (int count, int key) { #if defined (HANDLE_MULTIBYTE) char *dummy; int i; #else char dummy[2]; #endif int char_length, prev_point; if (count == 0) return 0; if (!rl_point || rl_end < 2) { rl_ding (); return 1; } rl_begin_undo_group (); if (rl_point == rl_end) { rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); count = 1; } prev_point = rl_point; rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); #if defined (HANDLE_MULTIBYTE) char_length = prev_point - rl_point; dummy = (char *)xmalloc (char_length + 1); for (i = 0; i < char_length; i++) dummy[i] = rl_line_buffer[rl_point + i]; dummy[i] = '\0'; #else dummy[0] = rl_line_buffer[rl_point]; dummy[char_length = 1] = '\0'; #endif rl_delete_text (rl_point, rl_point + char_length); rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); _rl_fix_point (0); rl_insert_text (dummy); rl_end_undo_group (); #if defined (HANDLE_MULTIBYTE) xfree (dummy); #endif return 0; } /* **************************************************************** */ /* */ /* Character Searching */ /* */ /* **************************************************************** */ int #if defined (HANDLE_MULTIBYTE) _rl_char_search_internal (int count, int dir, char *smbchar, int len) #else _rl_char_search_internal (int count, int dir, int schar) #endif { int pos, inc; #if defined (HANDLE_MULTIBYTE) int prepos; #endif if (dir == 0) return 1; pos = rl_point; inc = (dir < 0) ? -1 : 1; while (count) { if ((dir < 0 && pos <= 0) || (dir > 0 && pos >= rl_end)) { rl_ding (); return 1; } #if defined (HANDLE_MULTIBYTE) pos = (inc > 0) ? _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY) : _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY); #else pos += inc; #endif do { #if defined (HANDLE_MULTIBYTE) if (_rl_is_mbchar_matched (rl_line_buffer, pos, rl_end, smbchar, len)) #else if (rl_line_buffer[pos] == schar) #endif { count--; if (dir < 0) rl_point = (dir == BTO) ? _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY) : pos; else rl_point = (dir == FTO) ? _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY) : pos; break; } #if defined (HANDLE_MULTIBYTE) prepos = pos; #endif } #if defined (HANDLE_MULTIBYTE) while ((dir < 0) ? (pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY)) != prepos : (pos = _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY)) != prepos); #else while ((dir < 0) ? pos-- : ++pos < rl_end); #endif } return (0); } /* Search COUNT times for a character read from the current input stream. FDIR is the direction to search if COUNT is non-negative; otherwise the search goes in BDIR. So much is dependent on HANDLE_MULTIBYTE that there are two separate versions of this function. */ #if defined (HANDLE_MULTIBYTE) static int _rl_char_search (int count, int fdir, int bdir) { char mbchar[MB_LEN_MAX]; int mb_len; mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX); if (mb_len <= 0) return 1; if (count < 0) return (_rl_char_search_internal (-count, bdir, mbchar, mb_len)); else return (_rl_char_search_internal (count, fdir, mbchar, mb_len)); } #else /* !HANDLE_MULTIBYTE */ static int _rl_char_search (int count, int fdir, int bdir) { int c; RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); if (c < 0) return 1; if (count < 0) return (_rl_char_search_internal (-count, bdir, c)); else return (_rl_char_search_internal (count, fdir, c)); } #endif /* !HANDLE_MULTIBYTE */ #if defined (READLINE_CALLBACKS) static int _rl_char_search_callback (data) _rl_callback_generic_arg *data; { _rl_callback_func = 0; _rl_want_redisplay = 1; return (_rl_char_search (data->count, data->i1, data->i2)); } #endif int rl_char_search (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) { _rl_callback_data = _rl_callback_data_alloc (count); _rl_callback_data->i1 = FFIND; _rl_callback_data->i2 = BFIND; _rl_callback_func = _rl_char_search_callback; return (0); } #endif return (_rl_char_search (count, FFIND, BFIND)); } int rl_backward_char_search (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) { _rl_callback_data = _rl_callback_data_alloc (count); _rl_callback_data->i1 = BFIND; _rl_callback_data->i2 = FFIND; _rl_callback_func = _rl_char_search_callback; return (0); } #endif return (_rl_char_search (count, BFIND, FFIND)); } /* **************************************************************** */ /* */ /* The Mark and the Region. */ /* */ /* **************************************************************** */ /* Set the mark at POSITION. */ int _rl_set_mark_at_pos (int position) { if (position < 0 || position > rl_end) return 1; rl_mark = position; return 0; } /* A bindable command to set the mark. */ int rl_set_mark (int count, int key) { return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point)); } /* Exchange the position of mark and point. */ int rl_exchange_point_and_mark (int count, int key) { if (rl_mark > rl_end) rl_mark = -1; if (rl_mark < 0) { rl_ding (); rl_mark = 0; /* like _RL_FIX_POINT */ return 1; } else SWAP (rl_point, rl_mark); return 0; } readline-8.0/chardefs.h000664 000436 000024 00000011131 12651440512 015154 0ustar00chetstaff000000 000000 /* chardefs.h -- Character definitions for readline. */ /* Copyright (C) 1994-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #ifndef _CHARDEFS_H_ #define _CHARDEFS_H_ #include #if defined (HAVE_CONFIG_H) # if defined (HAVE_STRING_H) # if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H) # include # endif # include # endif /* HAVE_STRING_H */ # if defined (HAVE_STRINGS_H) # include # endif /* HAVE_STRINGS_H */ #else # include #endif /* !HAVE_CONFIG_H */ #ifndef whitespace #define whitespace(c) (((c) == ' ') || ((c) == '\t')) #endif #ifdef CTRL # undef CTRL #endif #ifdef UNCTRL # undef UNCTRL #endif /* Some character stuff. */ #define control_character_threshold 0x020 /* Smaller than this is control. */ #define control_character_mask 0x1f /* 0x20 - 1 */ #define meta_character_threshold 0x07f /* Larger than this is Meta. */ #define control_character_bit 0x40 /* 0x000000, must be off. */ #define meta_character_bit 0x080 /* x0000000, must be on. */ #define largest_char 255 /* Largest character value. */ #define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0)) #define META_CHAR(c) ((c) > meta_character_threshold && (c) <= largest_char) #define CTRL(c) ((c) & control_character_mask) #define META(c) ((c) | meta_character_bit) #define UNMETA(c) ((c) & (~meta_character_bit)) #define UNCTRL(c) _rl_to_upper(((c)|control_character_bit)) #if defined STDC_HEADERS || (!defined (isascii) && !defined (HAVE_ISASCII)) # define IN_CTYPE_DOMAIN(c) 1 #else # define IN_CTYPE_DOMAIN(c) isascii(c) #endif #if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus) # define isxdigit(c) (isdigit((unsigned char)(c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) #endif #if defined (CTYPE_NON_ASCII) # define NON_NEGATIVE(c) 1 #else # define NON_NEGATIVE(c) ((unsigned char)(c) == (c)) #endif /* Some systems define these; we want our definitions. */ #undef ISPRINT /* Beware: these only work with single-byte ASCII characters. */ #define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum ((unsigned char)c)) #define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha ((unsigned char)c)) #define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit ((unsigned char)c)) #define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower ((unsigned char)c)) #define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint ((unsigned char)c)) #define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper ((unsigned char)c)) #define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit ((unsigned char)c)) #define _rl_lowercase_p(c) (NON_NEGATIVE(c) && ISLOWER(c)) #define _rl_uppercase_p(c) (NON_NEGATIVE(c) && ISUPPER(c)) #define _rl_digit_p(c) ((c) >= '0' && (c) <= '9') #define _rl_pure_alphabetic(c) (NON_NEGATIVE(c) && ISALPHA(c)) #define ALPHABETIC(c) (NON_NEGATIVE(c) && ISALNUM(c)) #ifndef _rl_to_upper # define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)c) : (c)) # define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)c) : (c)) #endif #ifndef _rl_digit_value # define _rl_digit_value(x) ((x) - '0') #endif #ifndef _rl_isident # define _rl_isident(c) (ISALNUM(c) || (c) == '_') #endif #ifndef ISOCTAL # define ISOCTAL(c) ((c) >= '0' && (c) <= '7') #endif #define OCTVALUE(c) ((c) - '0') #define HEXVALUE(c) \ (((c) >= 'a' && (c) <= 'f') \ ? (c)-'a'+10 \ : (c) >= 'A' && (c) <= 'F' ? (c)-'A'+10 : (c)-'0') #ifndef NEWLINE #define NEWLINE '\n' #endif #ifndef RETURN #define RETURN CTRL('M') #endif #ifndef RUBOUT #define RUBOUT 0x7f #endif #ifndef TAB #define TAB '\t' #endif #ifdef ABORT_CHAR #undef ABORT_CHAR #endif #define ABORT_CHAR CTRL('G') #ifdef PAGE #undef PAGE #endif #define PAGE CTRL('L') #ifdef SPACE #undef SPACE #endif #define SPACE ' ' /* XXX - was 0x20 */ #ifdef ESC #undef ESC #endif #define ESC CTRL('[') #endif /* _CHARDEFS_H_ */ readline-8.0/histlib.h000664 000436 000120 00000004665 13116054674 015042 0ustar00chetadmin000000 000000 /* histlib.h -- internal definitions for the history library. */ /* Copyright (C) 1989-2009 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. History is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. History is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with History. If not, see . */ #if !defined (_HISTLIB_H_) #define _HISTLIB_H_ #if defined (HAVE_STRING_H) # include #else # include #endif /* !HAVE_STRING_H */ #if !defined (STREQ) #define STREQ(a, b) (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0)) #define STREQN(a, b, n) (((n) == 0) ? (1) \ : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0)) #endif #ifndef savestring #define savestring(x) strcpy (xmalloc (1 + strlen (x)), (x)) #endif #ifndef whitespace #define whitespace(c) (((c) == ' ') || ((c) == '\t')) #endif #ifndef _rl_digit_p #define _rl_digit_p(c) ((c) >= '0' && (c) <= '9') #endif #ifndef _rl_digit_value #define _rl_digit_value(c) ((c) - '0') #endif #ifndef member # if !defined (strchr) && !defined (__STDC__) extern char *strchr (); # endif /* !strchr && !__STDC__ */ #define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0) #endif #ifndef FREE # define FREE(x) if (x) free (x) #endif /* Possible history errors passed to hist_error. */ #define EVENT_NOT_FOUND 0 #define BAD_WORD_SPEC 1 #define SUBST_FAILED 2 #define BAD_MODIFIER 3 #define NO_PREV_SUBST 4 /* Possible definitions for history starting point specification. */ #define NON_ANCHORED_SEARCH 0 #define ANCHORED_SEARCH 0x01 #define PATTERN_SEARCH 0x02 /* Possible definitions for what style of writing the history file we want. */ #define HISTORY_APPEND 0 #define HISTORY_OVERWRITE 1 /* internal extern function declarations used by other parts of the library */ /* histsearch.c */ extern int _hs_history_patsearch PARAMS((const char *, int, int)); #endif /* !_HISTLIB_H_ */ readline-8.0/rlmbutil.h000644 000436 000000 00000015614 13301607174 015234 0ustar00chetwheel000000 000000 /* rlmbutil.h -- utility functions for multibyte characters. */ /* Copyright (C) 2001-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_RL_MBUTIL_H_) #define _RL_MBUTIL_H_ #include "rlstdc.h" /************************************************/ /* check multibyte capability for I18N code */ /************************************************/ /* For platforms which support the ISO C amendement 1 functionality we support user defined character classes. */ /* Solaris 2.5 has a bug: must be included before . */ #if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) && defined (HAVE_LOCALE_H) # include # include # if defined (HAVE_ISWCTYPE) && \ defined (HAVE_ISWLOWER) && \ defined (HAVE_ISWUPPER) && \ defined (HAVE_MBSRTOWCS) && \ defined (HAVE_MBRTOWC) && \ defined (HAVE_MBRLEN) && \ defined (HAVE_TOWLOWER) && \ defined (HAVE_TOWUPPER) && \ defined (HAVE_WCHAR_T) && \ defined (HAVE_WCWIDTH) /* system is supposed to support XPG5 */ # define HANDLE_MULTIBYTE 1 # endif #endif /* If we don't want multibyte chars even on a system that supports them, let the configuring user turn multibyte support off. */ #if defined (NO_MULTIBYTE_SUPPORT) # undef HANDLE_MULTIBYTE #endif /* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */ #if HANDLE_MULTIBYTE && !defined (HAVE_MBSTATE_T) # define wcsrtombs(dest, src, len, ps) (wcsrtombs) (dest, src, len, 0) # define mbsrtowcs(dest, src, len, ps) (mbsrtowcs) (dest, src, len, 0) # define wcrtomb(s, wc, ps) (wcrtomb) (s, wc, 0) # define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0) # define mbrlen(s, n, ps) (mbrlen) (s, n, 0) # define mbstate_t int #endif /* Make sure MB_LEN_MAX is at least 16 on systems that claim to be able to handle multibyte chars (some systems define MB_LEN_MAX as 1) */ #ifdef HANDLE_MULTIBYTE # include # if defined(MB_LEN_MAX) && (MB_LEN_MAX < 16) # undef MB_LEN_MAX # endif # if !defined (MB_LEN_MAX) # define MB_LEN_MAX 16 # endif #endif /************************************************/ /* end of multibyte capability checks for I18N */ /************************************************/ /* * Flags for _rl_find_prev_mbchar and _rl_find_next_mbchar: * * MB_FIND_ANY find any multibyte character * MB_FIND_NONZERO find a non-zero-width multibyte character */ #define MB_FIND_ANY 0x00 #define MB_FIND_NONZERO 0x01 extern int _rl_find_prev_mbchar PARAMS((char *, int, int)); extern int _rl_find_next_mbchar PARAMS((char *, int, int, int)); #ifdef HANDLE_MULTIBYTE extern int _rl_compare_chars PARAMS((char *, int, mbstate_t *, char *, int, mbstate_t *)); extern int _rl_get_char_len PARAMS((char *, mbstate_t *)); extern int _rl_adjust_point PARAMS((char *, int, mbstate_t *)); extern int _rl_read_mbchar PARAMS((char *, int)); extern int _rl_read_mbstring PARAMS((int, char *, int)); extern int _rl_is_mbchar_matched PARAMS((char *, int, int, char *, int)); extern wchar_t _rl_char_value PARAMS((char *, int)); extern int _rl_walphabetic PARAMS((wchar_t)); #define _rl_to_wupper(wc) (iswlower (wc) ? towupper (wc) : (wc)) #define _rl_to_wlower(wc) (iswupper (wc) ? towlower (wc) : (wc)) #define MB_NEXTCHAR(b,s,c,f) \ ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) \ ? _rl_find_next_mbchar ((b), (s), (c), (f)) \ : ((s) + (c))) #define MB_PREVCHAR(b,s,f) \ ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) \ ? _rl_find_prev_mbchar ((b), (s), (f)) \ : ((s) - 1)) #define MB_INVALIDCH(x) ((x) == (size_t)-1 || (x) == (size_t)-2) #define MB_NULLWCH(x) ((x) == 0) /* Try and shortcut the printable ascii characters to cut down the number of calls to a libc wcwidth() */ static inline int _rl_wcwidth (wc) wchar_t wc; { switch (wc) { case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '{': case '|': case '}': case '~': return 1; default: return wcwidth (wc); } } /* Unicode combining characters range from U+0300 to U+036F */ #define UNICODE_COMBINING_CHAR(x) ((x) >= 768 && (x) <= 879) #if defined (WCWIDTH_BROKEN) # define WCWIDTH(wc) ((_rl_utf8locale && UNICODE_COMBINING_CHAR(wc)) ? 0 : _rl_wcwidth(wc)) #else # define WCWIDTH(wc) _rl_wcwidth(wc) #endif #if defined (WCWIDTH_BROKEN) # define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0 && iswcntrl(x) == 0) #else # define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0) #endif #define UTF8_SINGLEBYTE(c) (((c) & 0x80) == 0) #define UTF8_MBFIRSTCHAR(c) (((c) & 0xc0) == 0xc0) #define UTF8_MBCHAR(c) (((c) & 0xc0) == 0x80) #else /* !HANDLE_MULTIBYTE */ #undef MB_LEN_MAX #undef MB_CUR_MAX #define MB_LEN_MAX 1 #define MB_CUR_MAX 1 #define _rl_find_prev_mbchar(b, i, f) (((i) == 0) ? (i) : ((i) - 1)) #define _rl_find_next_mbchar(b, i1, i2, f) ((i1) + (i2)) #define _rl_char_value(buf,ind) ((buf)[(ind)]) #define _rl_walphabetic(c) (rl_alphabetic (c)) #define _rl_to_wupper(c) (_rl_to_upper (c)) #define _rl_to_wlower(c) (_rl_to_lower (c)) #define MB_NEXTCHAR(b,s,c,f) ((s) + (c)) #define MB_PREVCHAR(b,s,f) ((s) - 1) #define MB_INVALIDCH(x) (0) #define MB_NULLWCH(x) (0) #define UTF8_SINGLEBYTE(c) (1) #if !defined (HAVE_WCHAR_T) && !defined (wchar_t) # define wchar_t int #endif #endif /* !HANDLE_MULTIBYTE */ extern int rl_byte_oriented; #endif /* _RL_MBUTIL_H_ */ readline-8.0/tilde.c000664 000436 000120 00000031527 13060114005 014454 0ustar00chetadmin000000 000000 /* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */ /* Copyright (C) 1988-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if defined (HAVE_CONFIG_H) # include #endif #if defined (HAVE_UNISTD_H) # ifdef _MINIX # include # endif # include #endif #if defined (HAVE_STRING_H) # include #else /* !HAVE_STRING_H */ # include #endif /* !HAVE_STRING_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include #if defined (HAVE_PWD_H) #include #endif #include "tilde.h" #if defined (TEST) || defined (STATIC_MALLOC) static void *xmalloc (), *xrealloc (); #else # include "xmalloc.h" #endif /* TEST || STATIC_MALLOC */ #if !defined (HAVE_GETPW_DECLS) # if defined (HAVE_GETPWUID) extern struct passwd *getpwuid PARAMS((uid_t)); # endif # if defined (HAVE_GETPWNAM) extern struct passwd *getpwnam PARAMS((const char *)); # endif #endif /* !HAVE_GETPW_DECLS */ #if !defined (savestring) #define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x)) #endif /* !savestring */ #if !defined (NULL) # if defined (__STDC__) # define NULL ((void *) 0) # else # define NULL 0x0 # endif /* !__STDC__ */ #endif /* !NULL */ /* If being compiled as part of bash, these will be satisfied from variables.o. If being compiled as part of readline, they will be satisfied from shell.o. */ extern char *sh_get_home_dir PARAMS((void)); extern char *sh_get_env_value PARAMS((const char *)); /* The default value of tilde_additional_prefixes. This is set to whitespace preceding a tilde so that simple programs which do not perform any word separation get desired behaviour. */ static const char *default_prefixes[] = { " ~", "\t~", (const char *)NULL }; /* The default value of tilde_additional_suffixes. This is set to whitespace or newline so that simple programs which do not perform any word separation get desired behaviour. */ static const char *default_suffixes[] = { " ", "\n", (const char *)NULL }; /* If non-null, this contains the address of a function that the application wants called before trying the standard tilde expansions. The function is called with the text sans tilde, and returns a malloc()'ed string which is the expansion, or a NULL pointer if the expansion fails. */ tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL; /* If non-null, this contains the address of a function to call if the standard meaning for expanding a tilde fails. The function is called with the text (sans tilde, as in "foo"), and returns a malloc()'ed string which is the expansion, or a NULL pointer if there is no expansion. */ tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL; /* When non-null, this is a NULL terminated array of strings which are duplicates for a tilde prefix. Bash uses this to expand `=~' and `:~'. */ char **tilde_additional_prefixes = (char **)default_prefixes; /* When non-null, this is a NULL terminated array of strings which match the end of a username, instead of just "/". Bash sets this to `:' and `=~'. */ char **tilde_additional_suffixes = (char **)default_suffixes; static int tilde_find_prefix PARAMS((const char *, int *)); static int tilde_find_suffix PARAMS((const char *)); static char *isolate_tilde_prefix PARAMS((const char *, int *)); static char *glue_prefix_and_suffix PARAMS((char *, const char *, int)); /* Find the start of a tilde expansion in STRING, and return the index of the tilde which starts the expansion. Place the length of the text which identified this tilde starter in LEN, excluding the tilde itself. */ static int tilde_find_prefix (const char *string, int *len) { register int i, j, string_len; register char **prefixes; prefixes = tilde_additional_prefixes; string_len = strlen (string); *len = 0; if (*string == '\0' || *string == '~') return (0); if (prefixes) { for (i = 0; i < string_len; i++) { for (j = 0; prefixes[j]; j++) { if (strncmp (string + i, prefixes[j], strlen (prefixes[j])) == 0) { *len = strlen (prefixes[j]) - 1; return (i + *len); } } } } return (string_len); } /* Find the end of a tilde expansion in STRING, and return the index of the character which ends the tilde definition. */ static int tilde_find_suffix (const char *string) { register int i, j, string_len; register char **suffixes; suffixes = tilde_additional_suffixes; string_len = strlen (string); for (i = 0; i < string_len; i++) { #if defined (__MSDOS__) if (string[i] == '/' || string[i] == '\\' /* || !string[i] */) #else if (string[i] == '/' /* || !string[i] */) #endif break; for (j = 0; suffixes && suffixes[j]; j++) { if (strncmp (string + i, suffixes[j], strlen (suffixes[j])) == 0) return (i); } } return (i); } /* Return a new string which is the result of tilde expanding STRING. */ char * tilde_expand (const char *string) { char *result; int result_size, result_index; result_index = result_size = 0; if (result = strchr (string, '~')) result = (char *)xmalloc (result_size = (strlen (string) + 16)); else result = (char *)xmalloc (result_size = (strlen (string) + 1)); /* Scan through STRING expanding tildes as we come to them. */ while (1) { register int start, end; char *tilde_word, *expansion; int len; /* Make START point to the tilde which starts the expansion. */ start = tilde_find_prefix (string, &len); /* Copy the skipped text into the result. */ if ((result_index + start + 1) > result_size) result = (char *)xrealloc (result, 1 + (result_size += (start + 20))); strncpy (result + result_index, string, start); result_index += start; /* Advance STRING to the starting tilde. */ string += start; /* Make END be the index of one after the last character of the username. */ end = tilde_find_suffix (string); /* If both START and END are zero, we are all done. */ if (!start && !end) break; /* Expand the entire tilde word, and copy it into RESULT. */ tilde_word = (char *)xmalloc (1 + end); strncpy (tilde_word, string, end); tilde_word[end] = '\0'; string += end; expansion = tilde_expand_word (tilde_word); if (expansion == 0) expansion = tilde_word; else xfree (tilde_word); len = strlen (expansion); #ifdef __CYGWIN__ /* Fix for Cygwin to prevent ~user/xxx from expanding to //xxx when $HOME for `user' is /. On cygwin, // denotes a network drive. */ if (len > 1 || *expansion != '/' || *string != '/') #endif { if ((result_index + len + 1) > result_size) result = (char *)xrealloc (result, 1 + (result_size += (len + 20))); strcpy (result + result_index, expansion); result_index += len; } xfree (expansion); } result[result_index] = '\0'; return (result); } /* Take FNAME and return the tilde prefix we want expanded. If LENP is non-null, the index of the end of the prefix into FNAME is returned in the location it points to. */ static char * isolate_tilde_prefix (const char *fname, int *lenp) { char *ret; int i; ret = (char *)xmalloc (strlen (fname)); #if defined (__MSDOS__) for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++) #else for (i = 1; fname[i] && fname[i] != '/'; i++) #endif ret[i - 1] = fname[i]; ret[i - 1] = '\0'; if (lenp) *lenp = i; return ret; } #if 0 /* Public function to scan a string (FNAME) beginning with a tilde and find the portion of the string that should be passed to the tilde expansion function. Right now, it just calls tilde_find_suffix and allocates new memory, but it can be expanded to do different things later. */ char * tilde_find_word (const char *fname, int flags, int *lenp) { int x; char *r; x = tilde_find_suffix (fname); if (x == 0) { r = savestring (fname); if (lenp) *lenp = 0; } else { r = (char *)xmalloc (1 + x); strncpy (r, fname, x); r[x] = '\0'; if (lenp) *lenp = x; } return r; } #endif /* Return a string that is PREFIX concatenated with SUFFIX starting at SUFFIND. */ static char * glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind) { char *ret; int plen, slen; plen = (prefix && *prefix) ? strlen (prefix) : 0; slen = strlen (suffix + suffind); ret = (char *)xmalloc (plen + slen + 1); if (plen) strcpy (ret, prefix); strcpy (ret + plen, suffix + suffind); return ret; } /* Do the work of tilde expansion on FILENAME. FILENAME starts with a tilde. If there is no expansion, call tilde_expansion_failure_hook. This always returns a newly-allocated string, never static storage. */ char * tilde_expand_word (const char *filename) { char *dirname, *expansion, *username; int user_len; struct passwd *user_entry; if (filename == 0) return ((char *)NULL); if (*filename != '~') return (savestring (filename)); /* A leading `~/' or a bare `~' is *always* translated to the value of $HOME or the home directory of the current user, regardless of any preexpansion hook. */ if (filename[1] == '\0' || filename[1] == '/') { /* Prefix $HOME to the rest of the string. */ expansion = sh_get_env_value ("HOME"); #if defined (_WIN32) if (expansion == 0) expansion = sh_get_env_value ("APPDATA"); #endif /* If there is no HOME variable, look up the directory in the password database. */ if (expansion == 0) expansion = sh_get_home_dir (); return (glue_prefix_and_suffix (expansion, filename, 1)); } username = isolate_tilde_prefix (filename, &user_len); if (tilde_expansion_preexpansion_hook) { expansion = (*tilde_expansion_preexpansion_hook) (username); if (expansion) { dirname = glue_prefix_and_suffix (expansion, filename, user_len); xfree (username); xfree (expansion); return (dirname); } } /* No preexpansion hook, or the preexpansion hook failed. Look in the password database. */ dirname = (char *)NULL; #if defined (HAVE_GETPWNAM) user_entry = getpwnam (username); #else user_entry = 0; #endif if (user_entry == 0) { /* If the calling program has a special syntax for expanding tildes, and we couldn't find a standard expansion, then let them try. */ if (tilde_expansion_failure_hook) { expansion = (*tilde_expansion_failure_hook) (username); if (expansion) { dirname = glue_prefix_and_suffix (expansion, filename, user_len); xfree (expansion); } } /* If we don't have a failure hook, or if the failure hook did not expand the tilde, return a copy of what we were passed. */ if (dirname == 0) dirname = savestring (filename); } #if defined (HAVE_GETPWENT) else dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); #endif xfree (username); #if defined (HAVE_GETPWENT) endpwent (); #endif return (dirname); } #if defined (TEST) #undef NULL #include main (int argc, char **argv) { char *result, line[512]; int done = 0; while (!done) { printf ("~expand: "); fflush (stdout); if (!gets (line)) strcpy (line, "done"); if ((strcmp (line, "done") == 0) || (strcmp (line, "quit") == 0) || (strcmp (line, "exit") == 0)) { done = 1; break; } result = tilde_expand (line); printf (" --> %s\n", result); free (result); } exit (0); } static void memory_error_and_abort (void); static void * xmalloc (size_t bytes) { void *temp = (char *)malloc (bytes); if (!temp) memory_error_and_abort (); return (temp); } static void * xrealloc (void *pointer, int bytes) { void *temp; if (!pointer) temp = malloc (bytes); else temp = realloc (pointer, bytes); if (!temp) memory_error_and_abort (); return (temp); } static void memory_error_and_abort (void) { fprintf (stderr, "readline: out of virtual memory\n"); abort (); } /* * Local variables: * compile-command: "gcc -g -DTEST -o tilde tilde.c" * end: */ #endif /* TEST */ readline-8.0/colors.h000644 000436 000024 00000007017 12651440543 014710 0ustar00chetstaff000000 000000 /* `dir', `vdir' and `ls' directory listing programs for GNU. Modified by Chet Ramey for Readline. Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* Written by Richard Stallman and David MacKenzie. */ /* Color support by Peter Anvin and Dennis Flaherty based on original patches by Greg Lee . */ #ifndef _COLORS_H_ #define _COLORS_H_ #include // size_t #if defined(__TANDEM) && defined(HAVE_STDBOOL_H) && (__STDC_VERSION__ < 199901L) typedef int _Bool; #endif #if defined (HAVE_STDBOOL_H) # include // bool #else typedef int _rl_bool_t; #ifdef bool # undef bool #endif #define bool _rl_bool_t #ifndef true # define true 1 # define false 0 #endif #endif /* !HAVE_STDBOOL_H */ /* Null is a valid character in a color indicator (think about Epson printers, for example) so we have to use a length/buffer string type. */ struct bin_str { size_t len; const char *string; }; /* file type indicators (dir, sock, fifo, ...) Default value is initialized in parse-colors.c. It is then modified from the values of $LS_COLORS. */ extern struct bin_str _rl_color_indicator[]; /* The LS_COLORS variable is in a termcap-like format. */ typedef struct _color_ext_type { struct bin_str ext; /* The extension we're looking for */ struct bin_str seq; /* The sequence to output when we do */ struct _color_ext_type *next; /* Next in list */ } COLOR_EXT_TYPE; /* file extensions indicators (.txt, .log, .jpg, ...) Values are taken from $LS_COLORS in rl_parse_colors(). */ extern COLOR_EXT_TYPE *_rl_color_ext_list; #define FILETYPE_INDICATORS \ { \ C_ORPHAN, C_FIFO, C_CHR, C_DIR, C_BLK, C_FILE, \ C_LINK, C_SOCK, C_FILE, C_DIR \ } /* Whether we used any colors in the output so far. If so, we will need to restore the default color later. If not, we will need to call prep_non_filename_text before using color for the first time. */ enum indicator_no { C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK, C_FIFO, C_SOCK, C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID, C_STICKY, C_OTHER_WRITABLE, C_STICKY_OTHER_WRITABLE, C_CAP, C_MULTIHARDLINK, C_CLR_TO_EOL }; #if !S_IXUGO # define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) #endif enum filetype { unknown, fifo, chardev, directory, blockdev, normal, symbolic_link, sock, whiteout, arg_directory }; /* Prefix color, currently same as socket */ #define C_PREFIX C_SOCK extern void _rl_put_indicator (const struct bin_str *ind); extern void _rl_set_normal_color (void); extern bool _rl_print_prefix_color (void); extern bool _rl_print_color_indicator (const char *f); extern void _rl_prep_non_filename_text (void); #endif /* !_COLORS_H_ */ readline-8.0/vi_keymap.c000664 000436 000120 00000107261 13060556765 015365 0ustar00chetadmin000000 000000 /* vi_keymap.c -- the keymap for vi_mode in readline (). */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (BUFSIZ) #include #endif /* !BUFSIZ */ #include "readline.h" #if 0 extern KEYMAP_ENTRY_ARRAY vi_escape_keymap; #endif /* The keymap arrays for handling vi mode. */ KEYMAP_ENTRY_ARRAY vi_movement_keymap = { /* The regular control keys come first. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */ { ISFUNC, rl_vi_eof_maybe }, /* Control-d */ { ISFUNC, rl_emacs_editing_mode }, /* Control-e */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */ { ISFUNC, rl_abort }, /* Control-g */ { ISFUNC, rl_backward_char }, /* Control-h */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-i */ { ISFUNC, rl_newline }, /* Control-j */ { ISFUNC, rl_kill_line }, /* Control-k */ { ISFUNC, rl_clear_screen }, /* Control-l */ { ISFUNC, rl_newline }, /* Control-m */ { ISFUNC, rl_get_next_history }, /* Control-n */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */ { ISFUNC, rl_get_previous_history }, /* Control-p */ { ISFUNC, rl_quoted_insert }, /* Control-q */ { ISFUNC, rl_reverse_search_history }, /* Control-r */ { ISFUNC, rl_forward_search_history }, /* Control-s */ { ISFUNC, rl_transpose_chars }, /* Control-t */ { ISFUNC, rl_unix_line_discard }, /* Control-u */ { ISFUNC, rl_quoted_insert }, /* Control-v */ { ISFUNC, rl_vi_unix_word_rubout }, /* Control-w */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-x */ { ISFUNC, rl_yank }, /* Control-y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-[ */ /* vi_escape_keymap */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */ { ISFUNC, rl_vi_undo }, /* Control-_ */ /* The start of printing characters. */ { ISFUNC, rl_forward_char }, /* SPACE */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */ { ISFUNC, (rl_command_func_t *)0x0 }, /* " */ { ISFUNC, rl_insert_comment }, /* # */ { ISFUNC, rl_end_of_line }, /* $ */ { ISFUNC, rl_vi_match }, /* % */ { ISFUNC, rl_vi_tilde_expand }, /* & */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ( */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ) */ { ISFUNC, rl_vi_complete }, /* * */ { ISFUNC, rl_get_next_history}, /* + */ { ISFUNC, rl_vi_char_search }, /* , */ { ISFUNC, rl_get_previous_history }, /* - */ { ISFUNC, rl_vi_redo }, /* . */ { ISFUNC, rl_vi_search }, /* / */ /* Regular digits. */ { ISFUNC, rl_beg_of_line }, /* 0 */ { ISFUNC, rl_vi_arg_digit }, /* 1 */ { ISFUNC, rl_vi_arg_digit }, /* 2 */ { ISFUNC, rl_vi_arg_digit }, /* 3 */ { ISFUNC, rl_vi_arg_digit }, /* 4 */ { ISFUNC, rl_vi_arg_digit }, /* 5 */ { ISFUNC, rl_vi_arg_digit }, /* 6 */ { ISFUNC, rl_vi_arg_digit }, /* 7 */ { ISFUNC, rl_vi_arg_digit }, /* 8 */ { ISFUNC, rl_vi_arg_digit }, /* 9 */ /* A little more punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* : */ { ISFUNC, rl_vi_char_search }, /* ; */ { ISFUNC, (rl_command_func_t *)0x0 }, /* < */ { ISFUNC, rl_vi_complete }, /* = */ { ISFUNC, (rl_command_func_t *)0x0 }, /* > */ { ISFUNC, rl_vi_search }, /* ? */ { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */ /* Uppercase alphabet. */ { ISFUNC, rl_vi_append_eol }, /* A */ { ISFUNC, rl_vi_prev_word}, /* B */ { ISFUNC, rl_vi_change_to }, /* C */ { ISFUNC, rl_vi_delete_to }, /* D */ { ISFUNC, rl_vi_end_word }, /* E */ { ISFUNC, rl_vi_char_search }, /* F */ { ISFUNC, rl_vi_fetch_history }, /* G */ { ISFUNC, (rl_command_func_t *)0x0 }, /* H */ { ISFUNC, rl_vi_insert_beg }, /* I */ { ISFUNC, (rl_command_func_t *)0x0 }, /* J */ { ISFUNC, (rl_command_func_t *)0x0 }, /* K */ { ISFUNC, (rl_command_func_t *)0x0 }, /* L */ { ISFUNC, (rl_command_func_t *)0x0 }, /* M */ { ISFUNC, rl_vi_search_again }, /* N */ { ISFUNC, (rl_command_func_t *)0x0 }, /* O */ { ISFUNC, rl_vi_put }, /* P */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Q */ { ISFUNC, rl_vi_replace }, /* R */ { ISFUNC, rl_vi_subst }, /* S */ { ISFUNC, rl_vi_char_search }, /* T */ { ISFUNC, rl_revert_line }, /* U */ { ISFUNC, (rl_command_func_t *)0x0 }, /* V */ { ISFUNC, rl_vi_next_word }, /* W */ { ISFUNC, rl_vi_rubout }, /* X */ { ISFUNC, rl_vi_yank_to }, /* Y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Z */ /* Some more punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* [ */ { ISFUNC, rl_vi_complete }, /* \ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */ { ISFUNC, rl_vi_first_print }, /* ^ */ { ISFUNC, rl_vi_yank_arg }, /* _ */ { ISFUNC, rl_vi_goto_mark }, /* ` */ /* Lowercase alphabet. */ { ISFUNC, rl_vi_append_mode }, /* a */ { ISFUNC, rl_vi_prev_word }, /* b */ { ISFUNC, rl_vi_change_to }, /* c */ { ISFUNC, rl_vi_delete_to }, /* d */ { ISFUNC, rl_vi_end_word }, /* e */ { ISFUNC, rl_vi_char_search }, /* f */ { ISFUNC, (rl_command_func_t *)0x0 }, /* g */ { ISFUNC, rl_backward_char }, /* h */ { ISFUNC, rl_vi_insert_mode }, /* i */ { ISFUNC, rl_get_next_history }, /* j */ { ISFUNC, rl_get_previous_history }, /* k */ { ISFUNC, rl_forward_char }, /* l */ { ISFUNC, rl_vi_set_mark }, /* m */ { ISFUNC, rl_vi_search_again }, /* n */ { ISFUNC, (rl_command_func_t *)0x0 }, /* o */ { ISFUNC, rl_vi_put }, /* p */ { ISFUNC, (rl_command_func_t *)0x0 }, /* q */ { ISFUNC, rl_vi_change_char }, /* r */ { ISFUNC, rl_vi_subst }, /* s */ { ISFUNC, rl_vi_char_search }, /* t */ { ISFUNC, rl_vi_undo }, /* u */ { ISFUNC, (rl_command_func_t *)0x0 }, /* v */ { ISFUNC, rl_vi_next_word }, /* w */ { ISFUNC, rl_vi_delete }, /* x */ { ISFUNC, rl_vi_yank_to }, /* y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* z */ /* Final punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* { */ { ISFUNC, rl_vi_column }, /* | */ { ISFUNC, (rl_command_func_t *)0x0 }, /* } */ { ISFUNC, rl_vi_change_case }, /* ~ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* RUBOUT */ #if KEYMAP_SIZE > 128 /* Undefined keys. */ { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 } #endif /* KEYMAP_SIZE > 128 */ }; KEYMAP_ENTRY_ARRAY vi_insertion_keymap = { /* The regular control keys come first. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */ { ISFUNC, rl_insert }, /* Control-a */ { ISFUNC, rl_insert }, /* Control-b */ { ISFUNC, rl_insert }, /* Control-c */ { ISFUNC, rl_vi_eof_maybe }, /* Control-d */ { ISFUNC, rl_insert }, /* Control-e */ { ISFUNC, rl_insert }, /* Control-f */ { ISFUNC, rl_insert }, /* Control-g */ { ISFUNC, rl_rubout }, /* Control-h */ { ISFUNC, rl_complete }, /* Control-i */ { ISFUNC, rl_newline }, /* Control-j */ { ISFUNC, rl_insert }, /* Control-k */ { ISFUNC, rl_insert }, /* Control-l */ { ISFUNC, rl_newline }, /* Control-m */ { ISFUNC, rl_menu_complete}, /* Control-n */ { ISFUNC, rl_insert }, /* Control-o */ { ISFUNC, rl_backward_menu_complete }, /* Control-p */ { ISFUNC, rl_insert }, /* Control-q */ { ISFUNC, rl_reverse_search_history }, /* Control-r */ { ISFUNC, rl_forward_search_history }, /* Control-s */ { ISFUNC, rl_transpose_chars }, /* Control-t */ { ISFUNC, rl_unix_line_discard }, /* Control-u */ { ISFUNC, rl_quoted_insert }, /* Control-v */ { ISFUNC, rl_vi_unix_word_rubout }, /* Control-w */ { ISFUNC, rl_insert }, /* Control-x */ { ISFUNC, rl_yank }, /* Control-y */ { ISFUNC, rl_insert }, /* Control-z */ { ISFUNC, rl_vi_movement_mode }, /* Control-[ */ { ISFUNC, rl_insert }, /* Control-\ */ { ISFUNC, rl_insert }, /* Control-] */ { ISFUNC, rl_insert }, /* Control-^ */ { ISFUNC, rl_vi_undo }, /* Control-_ */ /* The start of printing characters. */ { ISFUNC, rl_insert }, /* SPACE */ { ISFUNC, rl_insert }, /* ! */ { ISFUNC, rl_insert }, /* " */ { ISFUNC, rl_insert }, /* # */ { ISFUNC, rl_insert }, /* $ */ { ISFUNC, rl_insert }, /* % */ { ISFUNC, rl_insert }, /* & */ { ISFUNC, rl_insert }, /* ' */ { ISFUNC, rl_insert }, /* ( */ { ISFUNC, rl_insert }, /* ) */ { ISFUNC, rl_insert }, /* * */ { ISFUNC, rl_insert }, /* + */ { ISFUNC, rl_insert }, /* , */ { ISFUNC, rl_insert }, /* - */ { ISFUNC, rl_insert }, /* . */ { ISFUNC, rl_insert }, /* / */ /* Regular digits. */ { ISFUNC, rl_insert }, /* 0 */ { ISFUNC, rl_insert }, /* 1 */ { ISFUNC, rl_insert }, /* 2 */ { ISFUNC, rl_insert }, /* 3 */ { ISFUNC, rl_insert }, /* 4 */ { ISFUNC, rl_insert }, /* 5 */ { ISFUNC, rl_insert }, /* 6 */ { ISFUNC, rl_insert }, /* 7 */ { ISFUNC, rl_insert }, /* 8 */ { ISFUNC, rl_insert }, /* 9 */ /* A little more punctuation. */ { ISFUNC, rl_insert }, /* : */ { ISFUNC, rl_insert }, /* ; */ { ISFUNC, rl_insert }, /* < */ { ISFUNC, rl_insert }, /* = */ { ISFUNC, rl_insert }, /* > */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* @ */ /* Uppercase alphabet. */ { ISFUNC, rl_insert }, /* A */ { ISFUNC, rl_insert }, /* B */ { ISFUNC, rl_insert }, /* C */ { ISFUNC, rl_insert }, /* D */ { ISFUNC, rl_insert }, /* E */ { ISFUNC, rl_insert }, /* F */ { ISFUNC, rl_insert }, /* G */ { ISFUNC, rl_insert }, /* H */ { ISFUNC, rl_insert }, /* I */ { ISFUNC, rl_insert }, /* J */ { ISFUNC, rl_insert }, /* K */ { ISFUNC, rl_insert }, /* L */ { ISFUNC, rl_insert }, /* M */ { ISFUNC, rl_insert }, /* N */ { ISFUNC, rl_insert }, /* O */ { ISFUNC, rl_insert }, /* P */ { ISFUNC, rl_insert }, /* Q */ { ISFUNC, rl_insert }, /* R */ { ISFUNC, rl_insert }, /* S */ { ISFUNC, rl_insert }, /* T */ { ISFUNC, rl_insert }, /* U */ { ISFUNC, rl_insert }, /* V */ { ISFUNC, rl_insert }, /* W */ { ISFUNC, rl_insert }, /* X */ { ISFUNC, rl_insert }, /* Y */ { ISFUNC, rl_insert }, /* Z */ /* Some more punctuation. */ { ISFUNC, rl_insert }, /* [ */ { ISFUNC, rl_insert }, /* \ */ { ISFUNC, rl_insert }, /* ] */ { ISFUNC, rl_insert }, /* ^ */ { ISFUNC, rl_insert }, /* _ */ { ISFUNC, rl_insert }, /* ` */ /* Lowercase alphabet. */ { ISFUNC, rl_insert }, /* a */ { ISFUNC, rl_insert }, /* b */ { ISFUNC, rl_insert }, /* c */ { ISFUNC, rl_insert }, /* d */ { ISFUNC, rl_insert }, /* e */ { ISFUNC, rl_insert }, /* f */ { ISFUNC, rl_insert }, /* g */ { ISFUNC, rl_insert }, /* h */ { ISFUNC, rl_insert }, /* i */ { ISFUNC, rl_insert }, /* j */ { ISFUNC, rl_insert }, /* k */ { ISFUNC, rl_insert }, /* l */ { ISFUNC, rl_insert }, /* m */ { ISFUNC, rl_insert }, /* n */ { ISFUNC, rl_insert }, /* o */ { ISFUNC, rl_insert }, /* p */ { ISFUNC, rl_insert }, /* q */ { ISFUNC, rl_insert }, /* r */ { ISFUNC, rl_insert }, /* s */ { ISFUNC, rl_insert }, /* t */ { ISFUNC, rl_insert }, /* u */ { ISFUNC, rl_insert }, /* v */ { ISFUNC, rl_insert }, /* w */ { ISFUNC, rl_insert }, /* x */ { ISFUNC, rl_insert }, /* y */ { ISFUNC, rl_insert }, /* z */ /* Final punctuation. */ { ISFUNC, rl_insert }, /* { */ { ISFUNC, rl_insert }, /* | */ { ISFUNC, rl_insert }, /* } */ { ISFUNC, rl_insert }, /* ~ */ { ISFUNC, rl_rubout }, /* RUBOUT */ #if KEYMAP_SIZE > 128 /* Pure 8-bit characters (128 - 159). These might be used in some character sets. */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ /* ISO Latin-1 characters (160 - 255) */ { ISFUNC, rl_insert }, /* No-break space */ { ISFUNC, rl_insert }, /* Inverted exclamation mark */ { ISFUNC, rl_insert }, /* Cent sign */ { ISFUNC, rl_insert }, /* Pound sign */ { ISFUNC, rl_insert }, /* Currency sign */ { ISFUNC, rl_insert }, /* Yen sign */ { ISFUNC, rl_insert }, /* Broken bar */ { ISFUNC, rl_insert }, /* Section sign */ { ISFUNC, rl_insert }, /* Diaeresis */ { ISFUNC, rl_insert }, /* Copyright sign */ { ISFUNC, rl_insert }, /* Feminine ordinal indicator */ { ISFUNC, rl_insert }, /* Left pointing double angle quotation mark */ { ISFUNC, rl_insert }, /* Not sign */ { ISFUNC, rl_insert }, /* Soft hyphen */ { ISFUNC, rl_insert }, /* Registered sign */ { ISFUNC, rl_insert }, /* Macron */ { ISFUNC, rl_insert }, /* Degree sign */ { ISFUNC, rl_insert }, /* Plus-minus sign */ { ISFUNC, rl_insert }, /* Superscript two */ { ISFUNC, rl_insert }, /* Superscript three */ { ISFUNC, rl_insert }, /* Acute accent */ { ISFUNC, rl_insert }, /* Micro sign */ { ISFUNC, rl_insert }, /* Pilcrow sign */ { ISFUNC, rl_insert }, /* Middle dot */ { ISFUNC, rl_insert }, /* Cedilla */ { ISFUNC, rl_insert }, /* Superscript one */ { ISFUNC, rl_insert }, /* Masculine ordinal indicator */ { ISFUNC, rl_insert }, /* Right pointing double angle quotation mark */ { ISFUNC, rl_insert }, /* Vulgar fraction one quarter */ { ISFUNC, rl_insert }, /* Vulgar fraction one half */ { ISFUNC, rl_insert }, /* Vulgar fraction three quarters */ { ISFUNC, rl_insert }, /* Inverted questionk mark */ { ISFUNC, rl_insert }, /* Latin capital letter a with grave */ { ISFUNC, rl_insert }, /* Latin capital letter a with acute */ { ISFUNC, rl_insert }, /* Latin capital letter a with circumflex */ { ISFUNC, rl_insert }, /* Latin capital letter a with tilde */ { ISFUNC, rl_insert }, /* Latin capital letter a with diaeresis */ { ISFUNC, rl_insert }, /* Latin capital letter a with ring above */ { ISFUNC, rl_insert }, /* Latin capital letter ae */ { ISFUNC, rl_insert }, /* Latin capital letter c with cedilla */ { ISFUNC, rl_insert }, /* Latin capital letter e with grave */ { ISFUNC, rl_insert }, /* Latin capital letter e with acute */ { ISFUNC, rl_insert }, /* Latin capital letter e with circumflex */ { ISFUNC, rl_insert }, /* Latin capital letter e with diaeresis */ { ISFUNC, rl_insert }, /* Latin capital letter i with grave */ { ISFUNC, rl_insert }, /* Latin capital letter i with acute */ { ISFUNC, rl_insert }, /* Latin capital letter i with circumflex */ { ISFUNC, rl_insert }, /* Latin capital letter i with diaeresis */ { ISFUNC, rl_insert }, /* Latin capital letter eth (Icelandic) */ { ISFUNC, rl_insert }, /* Latin capital letter n with tilde */ { ISFUNC, rl_insert }, /* Latin capital letter o with grave */ { ISFUNC, rl_insert }, /* Latin capital letter o with acute */ { ISFUNC, rl_insert }, /* Latin capital letter o with circumflex */ { ISFUNC, rl_insert }, /* Latin capital letter o with tilde */ { ISFUNC, rl_insert }, /* Latin capital letter o with diaeresis */ { ISFUNC, rl_insert }, /* Multiplication sign */ { ISFUNC, rl_insert }, /* Latin capital letter o with stroke */ { ISFUNC, rl_insert }, /* Latin capital letter u with grave */ { ISFUNC, rl_insert }, /* Latin capital letter u with acute */ { ISFUNC, rl_insert }, /* Latin capital letter u with circumflex */ { ISFUNC, rl_insert }, /* Latin capital letter u with diaeresis */ { ISFUNC, rl_insert }, /* Latin capital letter Y with acute */ { ISFUNC, rl_insert }, /* Latin capital letter thorn (Icelandic) */ { ISFUNC, rl_insert }, /* Latin small letter sharp s (German) */ { ISFUNC, rl_insert }, /* Latin small letter a with grave */ { ISFUNC, rl_insert }, /* Latin small letter a with acute */ { ISFUNC, rl_insert }, /* Latin small letter a with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter a with tilde */ { ISFUNC, rl_insert }, /* Latin small letter a with diaeresis */ { ISFUNC, rl_insert }, /* Latin small letter a with ring above */ { ISFUNC, rl_insert }, /* Latin small letter ae */ { ISFUNC, rl_insert }, /* Latin small letter c with cedilla */ { ISFUNC, rl_insert }, /* Latin small letter e with grave */ { ISFUNC, rl_insert }, /* Latin small letter e with acute */ { ISFUNC, rl_insert }, /* Latin small letter e with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter e with diaeresis */ { ISFUNC, rl_insert }, /* Latin small letter i with grave */ { ISFUNC, rl_insert }, /* Latin small letter i with acute */ { ISFUNC, rl_insert }, /* Latin small letter i with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter i with diaeresis */ { ISFUNC, rl_insert }, /* Latin small letter eth (Icelandic) */ { ISFUNC, rl_insert }, /* Latin small letter n with tilde */ { ISFUNC, rl_insert }, /* Latin small letter o with grave */ { ISFUNC, rl_insert }, /* Latin small letter o with acute */ { ISFUNC, rl_insert }, /* Latin small letter o with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter o with tilde */ { ISFUNC, rl_insert }, /* Latin small letter o with diaeresis */ { ISFUNC, rl_insert }, /* Division sign */ { ISFUNC, rl_insert }, /* Latin small letter o with stroke */ { ISFUNC, rl_insert }, /* Latin small letter u with grave */ { ISFUNC, rl_insert }, /* Latin small letter u with acute */ { ISFUNC, rl_insert }, /* Latin small letter u with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter u with diaeresis */ { ISFUNC, rl_insert }, /* Latin small letter y with acute */ { ISFUNC, rl_insert }, /* Latin small letter thorn (Icelandic) */ { ISFUNC, rl_insert } /* Latin small letter y with diaeresis */ #endif /* KEYMAP_SIZE > 128 */ }; /* Unused for the time being. */ #if 0 KEYMAP_ENTRY_ARRAY vi_escape_keymap = { /* The regular control keys come first. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-d */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-e */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-g */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-h */ { ISFUNC, rl_tab_insert}, /* Control-i */ { ISFUNC, rl_emacs_editing_mode}, /* Control-j */ { ISFUNC, rl_kill_line }, /* Control-k */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-l */ { ISFUNC, rl_emacs_editing_mode}, /* Control-m */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-n */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-p */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-q */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-r */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-s */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-t */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-u */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-v */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-w */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-x */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */ { ISFUNC, rl_vi_movement_mode }, /* Control-[ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */ { ISFUNC, rl_vi_undo }, /* Control-_ */ /* The start of printing characters. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* SPACE */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */ { ISFUNC, (rl_command_func_t *)0x0 }, /* " */ { ISFUNC, (rl_command_func_t *)0x0 }, /* # */ { ISFUNC, (rl_command_func_t *)0x0 }, /* $ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* % */ { ISFUNC, (rl_command_func_t *)0x0 }, /* & */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ( */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ) */ { ISFUNC, (rl_command_func_t *)0x0 }, /* * */ { ISFUNC, (rl_command_func_t *)0x0 }, /* + */ { ISFUNC, (rl_command_func_t *)0x0 }, /* , */ { ISFUNC, (rl_command_func_t *)0x0 }, /* - */ { ISFUNC, (rl_command_func_t *)0x0 }, /* . */ { ISFUNC, (rl_command_func_t *)0x0 }, /* / */ /* Regular digits. */ { ISFUNC, rl_vi_arg_digit }, /* 0 */ { ISFUNC, rl_vi_arg_digit }, /* 1 */ { ISFUNC, rl_vi_arg_digit }, /* 2 */ { ISFUNC, rl_vi_arg_digit }, /* 3 */ { ISFUNC, rl_vi_arg_digit }, /* 4 */ { ISFUNC, rl_vi_arg_digit }, /* 5 */ { ISFUNC, rl_vi_arg_digit }, /* 6 */ { ISFUNC, rl_vi_arg_digit }, /* 7 */ { ISFUNC, rl_vi_arg_digit }, /* 8 */ { ISFUNC, rl_vi_arg_digit }, /* 9 */ /* A little more punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* : */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ; */ { ISFUNC, (rl_command_func_t *)0x0 }, /* < */ { ISFUNC, (rl_command_func_t *)0x0 }, /* = */ { ISFUNC, (rl_command_func_t *)0x0 }, /* > */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ? */ { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */ /* Uppercase alphabet. */ { ISFUNC, rl_do_lowercase_version }, /* A */ { ISFUNC, rl_do_lowercase_version }, /* B */ { ISFUNC, rl_do_lowercase_version }, /* C */ { ISFUNC, rl_do_lowercase_version }, /* D */ { ISFUNC, rl_do_lowercase_version }, /* E */ { ISFUNC, rl_do_lowercase_version }, /* F */ { ISFUNC, rl_do_lowercase_version }, /* G */ { ISFUNC, rl_do_lowercase_version }, /* H */ { ISFUNC, rl_do_lowercase_version }, /* I */ { ISFUNC, rl_do_lowercase_version }, /* J */ { ISFUNC, rl_do_lowercase_version }, /* K */ { ISFUNC, rl_do_lowercase_version }, /* L */ { ISFUNC, rl_do_lowercase_version }, /* M */ { ISFUNC, rl_do_lowercase_version }, /* N */ { ISFUNC, rl_do_lowercase_version }, /* O */ { ISFUNC, rl_do_lowercase_version }, /* P */ { ISFUNC, rl_do_lowercase_version }, /* Q */ { ISFUNC, rl_do_lowercase_version }, /* R */ { ISFUNC, rl_do_lowercase_version }, /* S */ { ISFUNC, rl_do_lowercase_version }, /* T */ { ISFUNC, rl_do_lowercase_version }, /* U */ { ISFUNC, rl_do_lowercase_version }, /* V */ { ISFUNC, rl_do_lowercase_version }, /* W */ { ISFUNC, rl_do_lowercase_version }, /* X */ { ISFUNC, rl_do_lowercase_version }, /* Y */ { ISFUNC, rl_do_lowercase_version }, /* Z */ /* Some more punctuation. */ { ISFUNC, rl_arrow_keys }, /* [ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* \ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ^ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* _ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ` */ /* Lowercase alphabet. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* a */ { ISFUNC, (rl_command_func_t *)0x0 }, /* b */ { ISFUNC, (rl_command_func_t *)0x0 }, /* c */ { ISFUNC, (rl_command_func_t *)0x0 }, /* d */ { ISFUNC, (rl_command_func_t *)0x0 }, /* e */ { ISFUNC, (rl_command_func_t *)0x0 }, /* f */ { ISFUNC, (rl_command_func_t *)0x0 }, /* g */ { ISFUNC, (rl_command_func_t *)0x0 }, /* h */ { ISFUNC, (rl_command_func_t *)0x0 }, /* i */ { ISFUNC, (rl_command_func_t *)0x0 }, /* j */ { ISFUNC, (rl_command_func_t *)0x0 }, /* k */ { ISFUNC, (rl_command_func_t *)0x0 }, /* l */ { ISFUNC, (rl_command_func_t *)0x0 }, /* m */ { ISFUNC, (rl_command_func_t *)0x0 }, /* n */ { ISFUNC, rl_arrow_keys }, /* o */ { ISFUNC, (rl_command_func_t *)0x0 }, /* p */ { ISFUNC, (rl_command_func_t *)0x0 }, /* q */ { ISFUNC, (rl_command_func_t *)0x0 }, /* r */ { ISFUNC, (rl_command_func_t *)0x0 }, /* s */ { ISFUNC, (rl_command_func_t *)0x0 }, /* t */ { ISFUNC, (rl_command_func_t *)0x0 }, /* u */ { ISFUNC, (rl_command_func_t *)0x0 }, /* v */ { ISFUNC, (rl_command_func_t *)0x0 }, /* w */ { ISFUNC, (rl_command_func_t *)0x0 }, /* x */ { ISFUNC, (rl_command_func_t *)0x0 }, /* y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* z */ /* Final punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* { */ { ISFUNC, (rl_command_func_t *)0x0 }, /* | */ { ISFUNC, (rl_command_func_t *)0x0 }, /* } */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ~ */ { ISFUNC, rl_backward_kill_word }, /* RUBOUT */ #if KEYMAP_SIZE > 128 /* Undefined keys. */ { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 } #endif /* KEYMAP_SIZE > 128 */ }; #endif readline-8.0/keymaps.h000644 000436 000000 00000006274 13350230537 015054 0ustar00chetwheel000000 000000 /* keymaps.h -- Manipulation of readline keymaps. */ /* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #ifndef _KEYMAPS_H_ #define _KEYMAPS_H_ #ifdef __cplusplus extern "C" { #endif #if defined (READLINE_LIBRARY) # include "rlstdc.h" # include "chardefs.h" # include "rltypedefs.h" #else # include # include # include #endif /* A keymap contains one entry for each key in the ASCII set. Each entry consists of a type and a pointer. FUNCTION is the address of a function to run, or the address of a keymap to indirect through. TYPE says which kind of thing FUNCTION is. */ typedef struct _keymap_entry { char type; rl_command_func_t *function; } KEYMAP_ENTRY; /* This must be large enough to hold bindings for all of the characters in a desired character set (e.g, 128 for ASCII, 256 for ISO Latin-x, and so on) plus one for subsequence matching. */ #define KEYMAP_SIZE 257 #define ANYOTHERKEY KEYMAP_SIZE-1 typedef KEYMAP_ENTRY KEYMAP_ENTRY_ARRAY[KEYMAP_SIZE]; typedef KEYMAP_ENTRY *Keymap; /* The values that TYPE can have in a keymap entry. */ #define ISFUNC 0 #define ISKMAP 1 #define ISMACR 2 extern KEYMAP_ENTRY_ARRAY emacs_standard_keymap, emacs_meta_keymap, emacs_ctlx_keymap; extern KEYMAP_ENTRY_ARRAY vi_insertion_keymap, vi_movement_keymap; /* Return a new, empty keymap. Free it with free() when you are done. */ extern Keymap rl_make_bare_keymap PARAMS((void)); /* Return a new keymap which is a copy of MAP. */ extern Keymap rl_copy_keymap PARAMS((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. */ extern Keymap rl_make_keymap PARAMS((void)); /* Free the storage associated with a keymap. */ extern void rl_discard_keymap PARAMS((Keymap)); /* These functions actually appear in bind.c */ /* Return the keymap corresponding to a given name. Names look like `emacs' or `emacs-meta' or `vi-insert'. */ extern Keymap rl_get_keymap_by_name PARAMS((const char *)); /* Return the current keymap. */ extern Keymap rl_get_keymap PARAMS((void)); /* Set the current keymap to MAP. */ extern void rl_set_keymap PARAMS((Keymap)); /* Set the name of MAP to NAME */ extern int rl_set_keymap_name PARAMS((const char *, Keymap)); #ifdef __cplusplus } #endif #endif /* _KEYMAPS_H_ */ readline-8.0/histfile.c000644 000436 000120 00000050410 13307472714 015172 0ustar00chetadmin000000 000000 /* histfile.c - functions to manipulate the history file. */ /* Copyright (C) 1989-2018 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. History is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. History is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with History. If not, see . */ /* The goal is to make the implementation transparent, so that you don't have to know what data types are used, just what functions you can call. I think I have done that. */ #define READLINE_LIBRARY #if defined (__TANDEM) # include #endif #if defined (HAVE_CONFIG_H) # include #endif #include #if defined (HAVE_LIMITS_H) # include #endif #include #if ! defined (_MINIX) && defined (HAVE_SYS_FILE_H) # include #endif #include "posixstat.h" #include #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_UNISTD_H) # include #endif #include #if defined (__EMX__) # undef HAVE_MMAP #endif #ifdef HISTORY_USE_MMAP # include # ifdef MAP_FILE # define MAP_RFLAGS (MAP_FILE|MAP_PRIVATE) # define MAP_WFLAGS (MAP_FILE|MAP_SHARED) # else # define MAP_RFLAGS MAP_PRIVATE # define MAP_WFLAGS MAP_SHARED # endif # ifndef MAP_FAILED # define MAP_FAILED ((void *)-1) # endif #endif /* HISTORY_USE_MMAP */ /* If we're compiling for __EMX__ (OS/2) or __CYGWIN__ (cygwin32 environment on win 95/98/nt), we want to open files with O_BINARY mode so that there is no \n -> \r\n conversion performed. On other systems, we don't want to mess around with O_BINARY at all, so we ensure that it's defined to 0. */ #if defined (__EMX__) || defined (__CYGWIN__) # ifndef O_BINARY # define O_BINARY 0 # endif #else /* !__EMX__ && !__CYGWIN__ */ # undef O_BINARY # define O_BINARY 0 #endif /* !__EMX__ && !__CYGWIN__ */ #include #if !defined (errno) extern int errno; #endif /* !errno */ #include "history.h" #include "histlib.h" #include "rlshell.h" #include "xmalloc.h" #if !defined (PATH_MAX) # define PATH_MAX 1024 /* default */ #endif extern void _hs_append_history_line PARAMS((int, const char *)); /* history file version; currently unused */ int history_file_version = 1; /* If non-zero, we write timestamps to the history file in history_do_write() */ int history_write_timestamps = 0; /* If non-zero, we assume that a history file that starts with a timestamp uses timestamp-delimited entries and can include multi-line history entries. Used by read_history_range */ int history_multiline_entries = 0; /* Immediately after a call to read_history() or read_history_range(), this will return the number of lines just read from the history file in that call. */ int history_lines_read_from_file = 0; /* Immediately after a call to write_history() or history_do_write(), this will return the number of lines just written to the history file in that call. This also works with history_truncate_file. */ int history_lines_written_to_file = 0; /* Does S look like the beginning of a history timestamp entry? Placeholder for more extensive tests. */ #define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char && isdigit ((unsigned char)(s)[1]) ) static char *history_backupfile PARAMS((const char *)); static char *history_tempfile PARAMS((const char *)); static int histfile_backup PARAMS((const char *, const char *)); static int histfile_restore PARAMS((const char *, const char *)); /* Return the string that should be used in the place of this filename. This only matters when you don't specify the filename to read_history (), or write_history (). */ static char * history_filename (const char *filename) { char *return_val; const char *home; int home_len; return_val = filename ? savestring (filename) : (char *)NULL; if (return_val) return (return_val); home = sh_get_env_value ("HOME"); #if defined (_WIN32) if (home == 0) home = sh_get_env_value ("APPDATA"); #endif if (home == 0) return (NULL); else home_len = strlen (home); return_val = (char *)xmalloc (2 + home_len + 8); /* strlen(".history") == 8 */ strcpy (return_val, home); return_val[home_len] = '/'; #if defined (__MSDOS__) strcpy (return_val + home_len + 1, "_history"); #else strcpy (return_val + home_len + 1, ".history"); #endif return (return_val); } static char * history_backupfile (const char *filename) { const char *fn; char *ret, linkbuf[PATH_MAX+1]; size_t len; ssize_t n; struct stat fs; fn = filename; #if defined (HAVE_READLINK) /* Follow symlink to avoid backing up symlink itself; call will fail if not a symlink */ if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0) { linkbuf[n] = '\0'; fn = linkbuf; } #endif len = strlen (fn); ret = xmalloc (len + 2); strcpy (ret, fn); ret[len] = '-'; ret[len+1] = '\0'; return ret; } static char * history_tempfile (const char *filename) { const char *fn; char *ret, linkbuf[PATH_MAX+1]; size_t len; ssize_t n; struct stat fs; int pid; fn = filename; #if defined (HAVE_READLINK) /* Follow symlink so tempfile created in the same directory as any symlinked history file; call will fail if not a symlink */ if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0) { linkbuf[n] = '\0'; fn = linkbuf; } #endif len = strlen (fn); ret = xmalloc (len + 11); strcpy (ret, fn); pid = (int)getpid (); /* filename-PID.tmp */ ret[len] = '-'; ret[len+1] = (pid / 10000 % 10) + '0'; ret[len+2] = (pid / 1000 % 10) + '0'; ret[len+3] = (pid / 100 % 10) + '0'; ret[len+4] = (pid / 10 % 10) + '0'; ret[len+5] = (pid % 10) + '0'; strcpy (ret + len + 6, ".tmp"); return ret; } /* Add the contents of FILENAME to the history list, a line at a time. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ int read_history (const char *filename) { return (read_history_range (filename, 0, -1)); } /* Read a range of lines from FILENAME, adding them to the history list. Start reading at the FROM'th line and end at the TO'th. If FROM is zero, start at the beginning. If TO is less than FROM, read until the end of the file. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ int read_history_range (const char *filename, int from, int to) { register char *line_start, *line_end, *p; char *input, *buffer, *bufend, *last_ts; int file, current_line, chars_read, has_timestamps, reset_comment_char; struct stat finfo; size_t file_size; #if defined (EFBIG) int overflow_errno = EFBIG; #elif defined (EOVERFLOW) int overflow_errno = EOVERFLOW; #else int overflow_errno = EIO; #endif history_lines_read_from_file = 0; buffer = last_ts = (char *)NULL; input = history_filename (filename); file = input ? open (input, O_RDONLY|O_BINARY, 0666) : -1; if ((file < 0) || (fstat (file, &finfo) == -1)) goto error_and_exit; if (S_ISREG (finfo.st_mode) == 0) { #ifdef EFTYPE errno = EFTYPE; #else errno = EINVAL; #endif goto error_and_exit; } file_size = (size_t)finfo.st_size; /* check for overflow on very large files */ if (file_size != finfo.st_size || file_size + 1 < file_size) { errno = overflow_errno; goto error_and_exit; } if (file_size == 0) { free (input); return 0; /* don't waste time if we don't have to */ } #ifdef HISTORY_USE_MMAP /* We map read/write and private so we can change newlines to NULs without affecting the underlying object. */ buffer = (char *)mmap (0, file_size, PROT_READ|PROT_WRITE, MAP_RFLAGS, file, 0); if ((void *)buffer == MAP_FAILED) { errno = overflow_errno; goto error_and_exit; } chars_read = file_size; #else buffer = (char *)malloc (file_size + 1); if (buffer == 0) { errno = overflow_errno; goto error_and_exit; } chars_read = read (file, buffer, file_size); #endif if (chars_read < 0) { error_and_exit: if (errno != 0) chars_read = errno; else chars_read = EIO; if (file >= 0) close (file); FREE (input); #ifndef HISTORY_USE_MMAP FREE (buffer); #endif return (chars_read); } close (file); /* Set TO to larger than end of file if negative. */ if (to < 0) to = chars_read; /* Start at beginning of file, work to end. */ bufend = buffer + chars_read; *bufend = '\0'; /* null-terminate buffer for timestamp checks */ current_line = 0; /* Heuristic: the history comment character rarely changes, so assume we have timestamps if the buffer starts with `#[:digit:]' and temporarily set history_comment_char so timestamp parsing works right */ reset_comment_char = 0; if (history_comment_char == '\0' && buffer[0] == '#' && isdigit ((unsigned char)buffer[1])) { history_comment_char = '#'; reset_comment_char = 1; } has_timestamps = HIST_TIMESTAMP_START (buffer); history_multiline_entries += has_timestamps && history_write_timestamps; /* Skip lines until we are at FROM. */ for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++) if (*line_end == '\n') { p = line_end + 1; /* If we see something we think is a timestamp, continue with this line. We should check more extensively here... */ if (HIST_TIMESTAMP_START(p) == 0) current_line++; line_start = p; } /* If there are lines left to gobble, then gobble them now. */ for (line_end = line_start; line_end < bufend; line_end++) if (*line_end == '\n') { /* Change to allow Windows-like \r\n end of line delimiter. */ if (line_end > line_start && line_end[-1] == '\r') line_end[-1] = '\0'; else *line_end = '\0'; if (*line_start) { if (HIST_TIMESTAMP_START(line_start) == 0) { if (last_ts == NULL && history_length > 0 && history_multiline_entries) _hs_append_history_line (history_length - 1, line_start); else add_history (line_start); if (last_ts) { add_history_time (last_ts); last_ts = NULL; } } else { last_ts = line_start; current_line--; } } current_line++; if (current_line >= to) break; line_start = line_end + 1; } history_lines_read_from_file = current_line; if (reset_comment_char) history_comment_char = '\0'; FREE (input); #ifndef HISTORY_USE_MMAP FREE (buffer); #else munmap (buffer, file_size); #endif return (0); } /* Save FILENAME to BACK, handling case where FILENAME is a symlink (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */ static int histfile_backup (const char *filename, const char *back) { #if defined (HAVE_READLINK) char linkbuf[PATH_MAX+1]; ssize_t n; /* Follow to target of symlink to avoid renaming symlink itself */ if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0) { linkbuf[n] = '\0'; return (rename (linkbuf, back)); } #endif return (rename (filename, back)); } /* Restore ORIG from BACKUP handling case where ORIG is a symlink (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */ static int histfile_restore (const char *backup, const char *orig) { #if defined (HAVE_READLINK) char linkbuf[PATH_MAX+1]; ssize_t n; /* Follow to target of symlink to avoid renaming symlink itself */ if ((n = readlink (orig, linkbuf, sizeof (linkbuf) - 1)) > 0) { linkbuf[n] = '\0'; return (rename (backup, linkbuf)); } #endif return (rename (backup, orig)); } /* Truncate the history file FNAME, leaving only LINES trailing lines. If FNAME is NULL, then use ~/.history. Writes a new file and renames it to the original name. Returns 0 on success, errno on failure. */ int history_truncate_file (const char *fname, int lines) { char *buffer, *filename, *tempname, *bp, *bp1; /* bp1 == bp+1 */ int file, chars_read, rv, orig_lines, exists, r; struct stat finfo; size_t file_size; history_lines_written_to_file = 0; buffer = (char *)NULL; filename = history_filename (fname); tempname = 0; file = filename ? open (filename, O_RDONLY|O_BINARY, 0666) : -1; rv = exists = 0; /* Don't try to truncate non-regular files. */ if (file == -1 || fstat (file, &finfo) == -1) { rv = errno; if (file != -1) close (file); goto truncate_exit; } exists = 1; if (S_ISREG (finfo.st_mode) == 0) { close (file); #ifdef EFTYPE rv = EFTYPE; #else rv = EINVAL; #endif goto truncate_exit; } file_size = (size_t)finfo.st_size; /* check for overflow on very large files */ if (file_size != finfo.st_size || file_size + 1 < file_size) { close (file); #if defined (EFBIG) rv = errno = EFBIG; #elif defined (EOVERFLOW) rv = errno = EOVERFLOW; #else rv = errno = EINVAL; #endif goto truncate_exit; } buffer = (char *)malloc (file_size + 1); if (buffer == 0) { rv = errno; close (file); goto truncate_exit; } chars_read = read (file, buffer, file_size); close (file); if (chars_read <= 0) { rv = (chars_read < 0) ? errno : 0; goto truncate_exit; } orig_lines = lines; /* Count backwards from the end of buffer until we have passed LINES lines. bp1 is set funny initially. But since bp[1] can't be a comment character (since it's off the end) and *bp can't be both a newline and the history comment character, it should be OK. */ for (bp1 = bp = buffer + chars_read - 1; lines && bp > buffer; bp--) { if (*bp == '\n' && HIST_TIMESTAMP_START(bp1) == 0) lines--; bp1 = bp; } /* If this is the first line, then the file contains exactly the number of lines we want to truncate to, so we don't need to do anything. It's the first line if we don't find a newline between the current value of i and 0. Otherwise, write from the start of this line until the end of the buffer. */ for ( ; bp > buffer; bp--) { if (*bp == '\n' && HIST_TIMESTAMP_START(bp1) == 0) { bp++; break; } bp1 = bp; } /* Write only if there are more lines in the file than we want to truncate to. */ if (bp <= buffer) { rv = 0; /* No-op if LINES == 0 at this point */ history_lines_written_to_file = orig_lines - lines; goto truncate_exit; } tempname = history_tempfile (filename); if ((file = open (tempname, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0600)) != -1) { if (write (file, bp, chars_read - (bp - buffer)) < 0) rv = errno; if (close (file) < 0 && rv == 0) rv = errno; } else rv = errno; truncate_exit: FREE (buffer); history_lines_written_to_file = orig_lines - lines; if (rv == 0 && filename && tempname) rv = histfile_restore (tempname, filename); if (rv != 0) { if (tempname) unlink (tempname); history_lines_written_to_file = 0; } #if defined (HAVE_CHOWN) /* Make sure the new filename is owned by the same user as the old. If one user is running this, it's a no-op. If the shell is running after sudo with a shared history file, we don't want to leave the history file owned by root. */ if (rv == 0 && exists) r = chown (filename, finfo.st_uid, finfo.st_gid); #endif xfree (filename); FREE (tempname); return rv; } /* Workhorse function for writing history. Writes the last NELEMENT entries from the history list to FILENAME. OVERWRITE is non-zero if you wish to replace FILENAME with the entries. */ static int history_do_write (const char *filename, int nelements, int overwrite) { register int i; char *output, *tempname, *histname; int file, mode, rv, exists; struct stat finfo; #ifdef HISTORY_USE_MMAP size_t cursize; history_lines_written_to_file = 0; mode = overwrite ? O_RDWR|O_CREAT|O_TRUNC|O_BINARY : O_RDWR|O_APPEND|O_BINARY; #else mode = overwrite ? O_WRONLY|O_CREAT|O_TRUNC|O_BINARY : O_WRONLY|O_APPEND|O_BINARY; #endif histname = history_filename (filename); exists = histname ? (stat (histname, &finfo) == 0) : 0; tempname = (overwrite && exists && S_ISREG (finfo.st_mode)) ? history_tempfile (histname) : 0; output = tempname ? tempname : histname; file = output ? open (output, mode, 0600) : -1; rv = 0; if (file == -1) { rv = errno; FREE (histname); FREE (tempname); return (rv); } #ifdef HISTORY_USE_MMAP cursize = overwrite ? 0 : lseek (file, 0, SEEK_END); #endif if (nelements > history_length) nelements = history_length; /* Build a buffer of all the lines to write, and write them in one syscall. Suggested by Peter Ho (peter@robosts.oxford.ac.uk). */ { HIST_ENTRY **the_history; /* local */ register int j; int buffer_size; char *buffer; the_history = history_list (); /* Calculate the total number of bytes to write. */ for (buffer_size = 0, i = history_length - nelements; i < history_length; i++) #if 0 buffer_size += 2 + HISTENT_BYTES (the_history[i]); #else { if (history_write_timestamps && the_history[i]->timestamp && the_history[i]->timestamp[0]) buffer_size += strlen (the_history[i]->timestamp) + 1; buffer_size += strlen (the_history[i]->line) + 1; } #endif /* Allocate the buffer, and fill it. */ #ifdef HISTORY_USE_MMAP if (ftruncate (file, buffer_size+cursize) == -1) goto mmap_error; buffer = (char *)mmap (0, buffer_size, PROT_READ|PROT_WRITE, MAP_WFLAGS, file, cursize); if ((void *)buffer == MAP_FAILED) { mmap_error: rv = errno; close (file); if (tempname) unlink (tempname); FREE (histname); FREE (tempname); return rv; } #else buffer = (char *)malloc (buffer_size); if (buffer == 0) { rv = errno; close (file); if (tempname) unlink (tempname); FREE (histname); FREE (tempname); return rv; } #endif for (j = 0, i = history_length - nelements; i < history_length; i++) { if (history_write_timestamps && the_history[i]->timestamp && the_history[i]->timestamp[0]) { strcpy (buffer + j, the_history[i]->timestamp); j += strlen (the_history[i]->timestamp); buffer[j++] = '\n'; } strcpy (buffer + j, the_history[i]->line); j += strlen (the_history[i]->line); buffer[j++] = '\n'; } #ifdef HISTORY_USE_MMAP if (msync (buffer, buffer_size, MS_ASYNC) != 0 || munmap (buffer, buffer_size) != 0) rv = errno; #else if (write (file, buffer, buffer_size) < 0) rv = errno; xfree (buffer); #endif } history_lines_written_to_file = nelements; if (close (file) < 0 && rv == 0) rv = errno; if (rv == 0 && histname && tempname) rv = histfile_restore (tempname, histname); if (rv != 0) { if (tempname) unlink (tempname); history_lines_written_to_file = 0; } #if defined (HAVE_CHOWN) /* Make sure the new filename is owned by the same user as the old. If one user is running this, it's a no-op. If the shell is running after sudo with a shared history file, we don't want to leave the history file owned by root. */ if (rv == 0 && exists) mode = chown (histname, finfo.st_uid, finfo.st_gid); #endif FREE (histname); FREE (tempname); return (rv); } /* Append NELEMENT entries to FILENAME. The entries appended are from the end of the list minus NELEMENTs up to the end of the list. */ int append_history (int nelements, const char *filename) { return (history_do_write (filename, nelements, HISTORY_APPEND)); } /* Overwrite FILENAME with the current history. If FILENAME is NULL, then write the history list to ~/.history. Values returned are as in read_history ().*/ int write_history (const char *filename) { return (history_do_write (filename, history_length, HISTORY_OVERWRITE)); } readline-8.0/support/000775 000436 000000 00000000000 13413164025 014735 5ustar00chetwheel000000 000000 readline-8.0/config.h.in000664 000436 000024 00000015425 13014633310 015253 0ustar00chetstaff000000 000000 /* config.h.in. Maintained by hand. */ /* Template definitions for autoconf */ #undef __EXTENSIONS__ #undef _ALL_SOURCE #undef _GNU_SOURCE #undef _POSIX_SOURCE #undef _POSIX_1_SOURCE #undef _POSIX_PTHREAD_SEMANTICS #undef _TANDEM_SOURCE #undef _MINIX /* Define NO_MULTIBYTE_SUPPORT to not compile in support for multibyte characters, even if the OS supports them. */ #undef NO_MULTIBYTE_SUPPORT #undef _FILE_OFFSET_BITS /* Define as the return type of signal handlers (int or void). */ #undef RETSIGTYPE #undef VOID_SIGHANDLER /* Characteristics of the compiler. */ #undef sig_atomic_t #undef size_t #undef ssize_t #undef const #undef volatile #undef PROTOTYPES #undef __PROTOTYPES #undef __CHAR_UNSIGNED__ /* Define if the `S_IS*' macros in do not work properly. */ #undef STAT_MACROS_BROKEN /* Define if you have the chown function. */ #undef HAVE_CHOWN /* Define if you have the fcntl function. */ #undef HAVE_FCNTL /* Define if you have the fnmatch function. */ #undef HAVE_FNMATCH /* Define if you have the getpwent function. */ #undef HAVE_GETPWENT /* Define if you have the getpwnam function. */ #undef HAVE_GETPWNAM /* Define if you have the getpwuid function. */ #undef HAVE_GETPWUID /* Define if you have the isascii function. */ #undef HAVE_ISASCII /* Define if you have the iswctype function. */ #undef HAVE_ISWCTYPE /* Define if you have the iswlower function. */ #undef HAVE_ISWLOWER /* Define if you have the iswupper function. */ #undef HAVE_ISWUPPER /* Define if you have the isxdigit function. */ #undef HAVE_ISXDIGIT /* Define if you have the kill function. */ #undef HAVE_KILL /* Define if you have the lstat function. */ #undef HAVE_LSTAT /* Define if you have the mbrlen function. */ #undef HAVE_MBRLEN /* Define if you have the mbrtowc function. */ #undef HAVE_MBRTOWC /* Define if you have the mbsrtowcs function. */ #undef HAVE_MBSRTOWCS /* Define if you have the memmove function. */ #undef HAVE_MEMMOVE /* Define if you have the pselect function. */ #undef HAVE_PSELECT /* Define if you have the putenv function. */ #undef HAVE_PUTENV /* Define if you have the readlink function. */ #undef HAVE_READLINK /* Define if you have the select function. */ #undef HAVE_SELECT /* Define if you have the setenv function. */ #undef HAVE_SETENV /* Define if you have the setlocale function. */ #undef HAVE_SETLOCALE /* Define if you have the strcasecmp function. */ #undef HAVE_STRCASECMP /* Define if you have the strcoll function. */ #undef HAVE_STRCOLL #undef STRCOLL_BROKEN /* Define if you have the strpbrk function. */ #undef HAVE_STRPBRK /* Define if you have the tcgetattr function. */ #undef HAVE_TCGETATTR /* Define if you have the towlower function. */ #undef HAVE_TOWLOWER /* Define if you have the towupper function. */ #undef HAVE_TOWUPPER /* Define if you have the vsnprintf function. */ #undef HAVE_VSNPRINTF /* Define if you have the wcrtomb function. */ #undef HAVE_WCRTOMB /* Define if you have the wcscoll function. */ #undef HAVE_WCSCOLL /* Define if you have the wctype function. */ #undef HAVE_WCTYPE /* Define if you have the wcwidth function. */ #undef HAVE_WCWIDTH /* and whether it works */ #undef WCWIDTH_BROKEN #undef STDC_HEADERS /* Define if you have the header file. */ #undef HAVE_DIRENT_H /* Define if you have the header file. */ #undef HAVE_FCNTL_H /* Define if you have the header file. */ #undef HAVE_LANGINFO_H /* Define if you have the header file. */ #undef HAVE_LIBAUDIT_H /* Define if you have the header file. */ #undef HAVE_LIMITS_H /* Define if you have the header file. */ #undef HAVE_LOCALE_H /* Define if you have the header file. */ #undef HAVE_MEMORY_H /* Define if you have the header file. */ #undef HAVE_NDIR_H /* Define if you have the header file. */ #undef HAVE_NCURSES_TERMCAP_H /* Define if you have the header file. */ #undef HAVE_PWD_H /* Define if you have the header file. */ #undef HAVE_STDARG_H /* Define if you have the header file. */ #undef HAVE_STDBOOL_H /* Define if you have the header file. */ #undef HAVE_STDLIB_H /* Define if you have the header file. */ #undef HAVE_STRING_H /* Define if you have the header file. */ #undef HAVE_STRINGS_H /* Define if you have the header file. */ #undef HAVE_SYS_DIR_H /* Define if you have the header file. */ #undef HAVE_SYS_FILE_H /* Define if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define if you have the header file. */ #undef HAVE_SYS_NDIR_H /* Define if you have the header file. */ #undef HAVE_SYS_PTE_H /* Define if you have the header file. */ #undef HAVE_SYS_PTEM_H /* Define if you have the header file. */ #undef HAVE_SYS_SELECT_H /* Define if you have the header file. */ #undef HAVE_SYS_STREAM_H /* Define if you have the header file. */ #undef HAVE_TERMCAP_H /* Define if you have the header file. */ #undef HAVE_TERMIO_H /* Define if you have the header file. */ #undef HAVE_TERMIOS_H /* Define if you have the header file. */ #undef HAVE_UNISTD_H /* Define if you have the header file. */ #undef HAVE_VARARGS_H /* Define if you have the header file. */ #undef HAVE_WCHAR_H /* Define if you have the header file. */ #undef HAVE_WCTYPE_H #undef HAVE_MBSTATE_T /* Define if you have wchar_t in . */ #undef HAVE_WCHAR_T /* Define if you have wctype_t in . */ #undef HAVE_WCTYPE_T /* Define if you have wint_t in . */ #undef HAVE_WINT_T /* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET /* Define if you have and it defines AUDIT_USER_TTY */ #undef HAVE_DECL_AUDIT_USER_TTY /* Definitions pulled in from aclocal.m4. */ #undef VOID_SIGHANDLER #undef GWINSZ_IN_SYS_IOCTL #undef STRUCT_WINSIZE_IN_SYS_IOCTL #undef STRUCT_WINSIZE_IN_TERMIOS #undef TIOCSTAT_IN_SYS_IOCTL #undef FIONREAD_IN_SYS_IOCTL #undef SPEED_T_IN_SYS_TYPES #undef HAVE_GETPW_DECLS #undef HAVE_STRUCT_DIRENT_D_INO #undef HAVE_STRUCT_DIRENT_D_FILENO #undef HAVE_STRUCT_DIRENT_D_NAMLEN #undef HAVE_BSD_SIGNALS #undef HAVE_POSIX_SIGNALS #undef HAVE_USG_SIGHOLD #undef MUST_REINSTALL_SIGHANDLERS #undef HAVE_POSIX_SIGSETJMP #undef CTYPE_NON_ASCII /* modify settings or make new ones based on what autoconf tells us. */ /* Ultrix botches type-ahead when switching from canonical to non-canonical mode, at least through version 4.3 */ #if !defined (HAVE_TERMIOS_H) || !defined (HAVE_TCGETATTR) || defined (ultrix) # define TERMIOS_MISSING #endif /* VARARGS defines moved to rlstdc.h */ readline-8.0/util.c000664 000436 000000 00000027446 13120566645 014370 0ustar00chetwheel000000 000000 /* util.c -- readline utility functions */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #include #include "posixjmp.h" #if defined (HAVE_UNISTD_H) # include /* for _POSIX_VERSION */ #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include #include /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "rlmbutil.h" #if defined (TIOCSTAT_IN_SYS_IOCTL) # include #endif /* TIOCSTAT_IN_SYS_IOCTL */ /* Some standard library routines. */ #include "readline.h" #include "rlprivate.h" #include "xmalloc.h" #include "rlshell.h" /* **************************************************************** */ /* */ /* Utility Functions */ /* */ /* **************************************************************** */ /* Return 0 if C is not a member of the class of characters that belong in words, or 1 if it is. */ int _rl_allow_pathname_alphabetic_chars = 0; static const char * const pathname_alphabetic_chars = "/-_=~.#$"; int rl_alphabetic (int c) { if (ALPHABETIC (c)) return (1); return (_rl_allow_pathname_alphabetic_chars && strchr (pathname_alphabetic_chars, c) != NULL); } #if defined (HANDLE_MULTIBYTE) int _rl_walphabetic (wchar_t wc) { int c; if (iswalnum (wc)) return (1); c = wc & 0177; return (_rl_allow_pathname_alphabetic_chars && strchr (pathname_alphabetic_chars, c) != NULL); } #endif /* How to abort things. */ int _rl_abort_internal (void) { rl_ding (); rl_clear_message (); _rl_reset_argument (); rl_clear_pending_input (); RL_UNSETSTATE (RL_STATE_MACRODEF); while (rl_executing_macro) _rl_pop_executing_macro (); RL_UNSETSTATE (RL_STATE_MULTIKEY); /* XXX */ rl_last_func = (rl_command_func_t *)NULL; _rl_longjmp (_rl_top_level, 1); return (0); } int rl_abort (int count, int key) { return (_rl_abort_internal ()); } int _rl_null_function (int count, int key) { return 0; } int rl_tty_status (int count, int key) { #if defined (TIOCSTAT) ioctl (1, TIOCSTAT, (char *)0); rl_refresh_line (count, key); #else rl_ding (); #endif return 0; } /* Return a copy of the string between FROM and TO. FROM is inclusive, TO is not. */ char * rl_copy_text (int from, int to) { register int length; char *copy; /* Fix it if the caller is confused. */ if (from > to) SWAP (from, to); length = to - from; copy = (char *)xmalloc (1 + length); strncpy (copy, rl_line_buffer + from, length); copy[length] = '\0'; return (copy); } /* Increase the size of RL_LINE_BUFFER until it has enough space to hold LEN characters. */ void rl_extend_line_buffer (int len) { while (len >= rl_line_buffer_len) { rl_line_buffer_len += DEFAULT_BUFFER_SIZE; rl_line_buffer = (char *)xrealloc (rl_line_buffer, rl_line_buffer_len); } _rl_set_the_line (); } /* A function for simple tilde expansion. */ int rl_tilde_expand (int ignore, int key) { register int start, end; char *homedir, *temp; int len; end = rl_point; start = end - 1; if (rl_point == rl_end && rl_line_buffer[rl_point] == '~') { homedir = tilde_expand ("~"); _rl_replace_text (homedir, start, end); xfree (homedir); return (0); } else if (start >= 0 && rl_line_buffer[start] != '~') { for (; start >= 0 && !whitespace (rl_line_buffer[start]); start--) ; start++; } else if (start < 0) start = 0; end = start; do end++; while (whitespace (rl_line_buffer[end]) == 0 && end < rl_end); if (whitespace (rl_line_buffer[end]) || end >= rl_end) end--; /* If the first character of the current word is a tilde, perform tilde expansion and insert the result. If not a tilde, do nothing. */ if (rl_line_buffer[start] == '~') { len = end - start + 1; temp = (char *)xmalloc (len + 1); strncpy (temp, rl_line_buffer + start, len); temp[len] = '\0'; homedir = tilde_expand (temp); xfree (temp); _rl_replace_text (homedir, start, end); xfree (homedir); } return (0); } #if defined (USE_VARARGS) void #if defined (PREFER_STDARG) _rl_ttymsg (const char *format, ...) #else _rl_ttymsg (va_alist) va_dcl #endif { va_list args; #if defined (PREFER_VARARGS) char *format; #endif #if defined (PREFER_STDARG) va_start (args, format); #else va_start (args); format = va_arg (args, char *); #endif fprintf (stderr, "readline: "); vfprintf (stderr, format, args); fprintf (stderr, "\n"); fflush (stderr); va_end (args); rl_forced_update_display (); } void #if defined (PREFER_STDARG) _rl_errmsg (const char *format, ...) #else _rl_errmsg (va_alist) va_dcl #endif { va_list args; #if defined (PREFER_VARARGS) char *format; #endif #if defined (PREFER_STDARG) va_start (args, format); #else va_start (args); format = va_arg (args, char *); #endif fprintf (stderr, "readline: "); vfprintf (stderr, format, args); fprintf (stderr, "\n"); fflush (stderr); va_end (args); } #else /* !USE_VARARGS */ void _rl_ttymsg (format, arg1, arg2) char *format; { fprintf (stderr, "readline: "); fprintf (stderr, format, arg1, arg2); fprintf (stderr, "\n"); rl_forced_update_display (); } void _rl_errmsg (format, arg1, arg2) char *format; { fprintf (stderr, "readline: "); fprintf (stderr, format, arg1, arg2); fprintf (stderr, "\n"); } #endif /* !USE_VARARGS */ /* **************************************************************** */ /* */ /* String Utility Functions */ /* */ /* **************************************************************** */ /* Determine if s2 occurs in s1. If so, return a pointer to the match in s1. The compare is case insensitive. */ char * _rl_strindex (const char *s1, const char *s2) { register int i, l, len; for (i = 0, l = strlen (s2), len = strlen (s1); (len - i) >= l; i++) if (_rl_strnicmp (s1 + i, s2, l) == 0) return ((char *) (s1 + i)); return ((char *)NULL); } #ifndef HAVE_STRPBRK /* Find the first occurrence in STRING1 of any character from STRING2. Return a pointer to the character in STRING1. */ char * _rl_strpbrk (const char *string1, const char *string2) { register const char *scan; #if defined (HANDLE_MULTIBYTE) mbstate_t ps; register int i, v; memset (&ps, 0, sizeof (mbstate_t)); #endif for (; *string1; string1++) { for (scan = string2; *scan; scan++) { if (*string1 == *scan) return ((char *)string1); } #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { v = _rl_get_char_len (string1, &ps); if (v > 1) string1 += v - 1; /* -1 to account for auto-increment in loop */ } #endif } return ((char *)NULL); } #endif #if !defined (HAVE_STRCASECMP) /* Compare at most COUNT characters from string1 to string2. Case doesn't matter (strncasecmp). */ int _rl_strnicmp (const char *string1, const char *string2, int count) { register const char *s1; register const char *s2; register int d; if (count <= 0 || (string1 == string2)) return 0; s1 = string1; s2 = string2; do { d = _rl_to_lower (*s1) - _rl_to_lower (*s2); /* XXX - cast to unsigned char? */ if (d != 0) return d; if (*s1++ == '\0') break; s2++; } while (--count != 0); return (0); } /* strcmp (), but caseless (strcasecmp). */ int _rl_stricmp (const char *string1, const char *string2) { register const char *s1; register const char *s2; register int d; s1 = string1; s2 = string2; if (s1 == s2) return 0; while ((d = _rl_to_lower (*s1) - _rl_to_lower (*s2)) == 0) { if (*s1++ == '\0') return 0; s2++; } return (d); } #endif /* !HAVE_STRCASECMP */ /* Stupid comparison routine for qsort () ing strings. */ int _rl_qsort_string_compare (char **s1, char **s2) { #if defined (HAVE_STRCOLL) return (strcoll (*s1, *s2)); #else int result; result = **s1 - **s2; if (result == 0) result = strcmp (*s1, *s2); return result; #endif } /* Function equivalents for the macros defined in chardefs.h. */ #define FUNCTION_FOR_MACRO(f) int (f) (int c) { return f (c); } FUNCTION_FOR_MACRO (_rl_digit_p) FUNCTION_FOR_MACRO (_rl_digit_value) FUNCTION_FOR_MACRO (_rl_lowercase_p) FUNCTION_FOR_MACRO (_rl_pure_alphabetic) FUNCTION_FOR_MACRO (_rl_to_lower) FUNCTION_FOR_MACRO (_rl_to_upper) FUNCTION_FOR_MACRO (_rl_uppercase_p) /* A convenience function, to force memory deallocation to be performed by readline. DLLs on Windows apparently require this. */ void rl_free (void *mem) { if (mem) free (mem); } /* Backwards compatibility, now that savestring has been removed from all `public' readline header files. */ #undef _rl_savestring char * _rl_savestring (const char *s) { return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s))); } #if defined (DEBUG) #if defined (USE_VARARGS) static FILE *_rl_tracefp; void #if defined (PREFER_STDARG) _rl_trace (const char *format, ...) #else _rl_trace (va_alist) va_dcl #endif { va_list args; #if defined (PREFER_VARARGS) char *format; #endif #if defined (PREFER_STDARG) va_start (args, format); #else va_start (args); format = va_arg (args, char *); #endif if (_rl_tracefp == 0) _rl_tropen (); vfprintf (_rl_tracefp, format, args); fprintf (_rl_tracefp, "\n"); fflush (_rl_tracefp); va_end (args); } int _rl_tropen (void) { char fnbuf[128], *x; if (_rl_tracefp) fclose (_rl_tracefp); #if defined (_WIN32) && !defined (__CYGWIN__) x = sh_get_env_value ("TEMP"); if (x == 0) x = "."; #else x = "/var/tmp"; #endif snprintf (fnbuf, sizeof (fnbuf), "%s/rltrace.%ld", x, (long)getpid()); unlink(fnbuf); _rl_tracefp = fopen (fnbuf, "w+"); return _rl_tracefp != 0; } int _rl_trclose (void) { int r; r = fclose (_rl_tracefp); _rl_tracefp = 0; return r; } void _rl_settracefp (FILE *fp) { _rl_tracefp = fp; } #endif #endif /* DEBUG */ #if HAVE_DECL_AUDIT_USER_TTY && defined (HAVE_LIBAUDIT_H) && defined (ENABLE_TTY_AUDIT_SUPPORT) #include #include #include #include /* Report STRING to the audit system. */ void _rl_audit_tty (char *string) { struct audit_message req; struct sockaddr_nl addr; size_t size; int fd; fd = socket (PF_NETLINK, SOCK_RAW, NETLINK_AUDIT); if (fd < 0) return; size = strlen (string) + 1; if (NLMSG_SPACE (size) > MAX_AUDIT_MESSAGE_LENGTH) return; memset (&req, 0, sizeof(req)); req.nlh.nlmsg_len = NLMSG_SPACE (size); req.nlh.nlmsg_type = AUDIT_USER_TTY; req.nlh.nlmsg_flags = NLM_F_REQUEST; req.nlh.nlmsg_seq = 0; if (size && string) memcpy (NLMSG_DATA(&req.nlh), string, size); memset (&addr, 0, sizeof(addr)); addr.nl_family = AF_NETLINK; addr.nl_pid = 0; addr.nl_groups = 0; sendto (fd, &req, req.nlh.nlmsg_len, 0, (struct sockaddr*)&addr, sizeof(addr)); close (fd); } #endif readline-8.0/colors.c000644 000436 000120 00000017434 13052147513 014666 0ustar00chetadmin000000 000000 /* `dir', `vdir' and `ls' directory listing programs for GNU. Modified by Chet Ramey for Readline. Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* Written by Richard Stallman and David MacKenzie. */ /* Color support by Peter Anvin and Dennis Flaherty based on original patches by Greg Lee . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include "rlconf.h" #include #include "posixstat.h" // stat related macros (S_ISREG, ...) #include // S_ISUID #ifndef S_ISDIR # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) #endif // strlen() #if defined (HAVE_STRING_H) # include #else /* !HAVE_STRING_H */ # include #endif /* !HAVE_STRING_H */ // abort() #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include "readline.h" #include "rldefs.h" #ifdef COLOR_SUPPORT #include "xmalloc.h" #include "colors.h" static bool is_colored (enum indicator_no type); static void restore_default_color (void); COLOR_EXT_TYPE *_rl_color_ext_list = 0; /* Output a color indicator (which may contain nulls). */ void _rl_put_indicator (const struct bin_str *ind) { fwrite (ind->string, ind->len, 1, rl_outstream); } static bool is_colored (enum indicator_no colored_filetype) { size_t len = _rl_color_indicator[colored_filetype].len; char const *s = _rl_color_indicator[colored_filetype].string; return ! (len == 0 || (len == 1 && strncmp (s, "0", 1) == 0) || (len == 2 && strncmp (s, "00", 2) == 0)); } static void restore_default_color (void) { _rl_put_indicator (&_rl_color_indicator[C_LEFT]); _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); } void _rl_set_normal_color (void) { if (is_colored (C_NORM)) { _rl_put_indicator (&_rl_color_indicator[C_LEFT]); _rl_put_indicator (&_rl_color_indicator[C_NORM]); _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); } } bool _rl_print_prefix_color (void) { struct bin_str *s; /* What do we want to use for the prefix? Let's try cyan first, see colors.h */ s = &_rl_color_indicator[C_PREFIX]; if (s->string != NULL) { if (is_colored (C_NORM)) restore_default_color (); _rl_put_indicator (&_rl_color_indicator[C_LEFT]); _rl_put_indicator (s); _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); return 0; } else return 1; } /* Returns whether any color sequence was printed. */ bool _rl_print_color_indicator (const char *f) { enum indicator_no colored_filetype; COLOR_EXT_TYPE *ext; /* Color extension */ size_t len; /* Length of name */ const char* name; char *filename; struct stat astat, linkstat; mode_t mode; int linkok; /* 1 == ok, 0 == dangling symlink, -1 == missing */ int stat_ok; name = f; /* This should already have undergone tilde expansion */ filename = 0; if (rl_filename_stat_hook) { filename = savestring (f); (*rl_filename_stat_hook) (&filename); name = filename; } #if defined (HAVE_LSTAT) stat_ok = lstat(name, &astat); #else stat_ok = stat(name, &astat); #endif if (stat_ok == 0) { mode = astat.st_mode; #if defined (HAVE_LSTAT) if (S_ISLNK (mode)) { linkok = stat (name, &linkstat) == 0; if (linkok && strncmp (_rl_color_indicator[C_LINK].string, "target", 6) == 0) mode = linkstat.st_mode; } else #endif linkok = 1; } else linkok = -1; /* Is this a nonexistent file? If so, linkok == -1. */ if (linkok == -1 && _rl_color_indicator[C_MISSING].string != NULL) colored_filetype = C_MISSING; else if (linkok == 0 && S_ISLNK(mode) && _rl_color_indicator[C_ORPHAN].string != NULL) colored_filetype = C_ORPHAN; /* dangling symlink */ else if(stat_ok != 0) { static enum indicator_no filetype_indicator[] = FILETYPE_INDICATORS; colored_filetype = filetype_indicator[normal]; //f->filetype]; } else { if (S_ISREG (mode)) { colored_filetype = C_FILE; #if defined (S_ISUID) if ((mode & S_ISUID) != 0 && is_colored (C_SETUID)) colored_filetype = C_SETUID; else #endif #if defined (S_ISGID) if ((mode & S_ISGID) != 0 && is_colored (C_SETGID)) colored_filetype = C_SETGID; else #endif if (is_colored (C_CAP) && 0) //f->has_capability) colored_filetype = C_CAP; else if ((mode & S_IXUGO) != 0 && is_colored (C_EXEC)) colored_filetype = C_EXEC; else if ((1 < astat.st_nlink) && is_colored (C_MULTIHARDLINK)) colored_filetype = C_MULTIHARDLINK; } else if (S_ISDIR (mode)) { colored_filetype = C_DIR; #if defined (S_ISVTX) if ((mode & S_ISVTX) && (mode & S_IWOTH) && is_colored (C_STICKY_OTHER_WRITABLE)) colored_filetype = C_STICKY_OTHER_WRITABLE; else #endif if ((mode & S_IWOTH) != 0 && is_colored (C_OTHER_WRITABLE)) colored_filetype = C_OTHER_WRITABLE; #if defined (S_ISVTX) else if ((mode & S_ISVTX) != 0 && is_colored (C_STICKY)) colored_filetype = C_STICKY; #endif } #if defined (S_ISLNK) else if (S_ISLNK (mode)) colored_filetype = C_LINK; #endif else if (S_ISFIFO (mode)) colored_filetype = C_FIFO; #if defined (S_ISSOCK) else if (S_ISSOCK (mode)) colored_filetype = C_SOCK; #endif else if (S_ISBLK (mode)) colored_filetype = C_BLK; else if (S_ISCHR (mode)) colored_filetype = C_CHR; else { /* Classify a file of some other type as C_ORPHAN. */ colored_filetype = C_ORPHAN; } } /* Check the file's suffix only if still classified as C_FILE. */ ext = NULL; if (colored_filetype == C_FILE) { /* Test if NAME has a recognized suffix. */ len = strlen (name); name += len; /* Pointer to final \0. */ for (ext = _rl_color_ext_list; ext != NULL; ext = ext->next) { if (ext->ext.len <= len && strncmp (name - ext->ext.len, ext->ext.string, ext->ext.len) == 0) break; } } free (filename); /* NULL or savestring return value */ { const struct bin_str *const s = ext ? &(ext->seq) : &_rl_color_indicator[colored_filetype]; if (s->string != NULL) { /* Need to reset so not dealing with attribute combinations */ if (is_colored (C_NORM)) restore_default_color (); _rl_put_indicator (&_rl_color_indicator[C_LEFT]); _rl_put_indicator (s); _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); return 0; } else return 1; } } void _rl_prep_non_filename_text (void) { if (_rl_color_indicator[C_END].string != NULL) _rl_put_indicator (&_rl_color_indicator[C_END]); else { _rl_put_indicator (&_rl_color_indicator[C_LEFT]); _rl_put_indicator (&_rl_color_indicator[C_RESET]); _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); } } #endif /* COLOR_SUPPORT */ readline-8.0/rltty.c000644 000436 000000 00000056267 13350464376 014575 0ustar00chetwheel000000 000000 /* rltty.c -- functions to prepare and restore the terminal for readline's use. */ /* Copyright (C) 1992-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #include #include #include #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #include "rldefs.h" #include "rltty.h" #if defined (HAVE_SYS_IOCTL_H) # include /* include for declaration of ioctl */ #endif #include "readline.h" #include "rlprivate.h" #if !defined (errno) extern int errno; #endif /* !errno */ rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal; rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal; static void set_winsize PARAMS((int)); /* **************************************************************** */ /* */ /* Saving and Restoring the TTY */ /* */ /* **************************************************************** */ /* Non-zero means that the terminal is in a prepped state. There are several flags that are OR'd in to denote whether or not we have sent various init strings to the terminal. */ #define TPX_PREPPED 0x01 #define TPX_BRACKPASTE 0x02 #define TPX_METAKEY 0x04 static int terminal_prepped; static _RL_TTY_CHARS _rl_tty_chars, _rl_last_tty_chars; /* If non-zero, means that this process has called tcflow(fd, TCOOFF) and output is suspended. */ #if defined (__ksr1__) static int ksrflow; #endif /* Dummy call to force a backgrounded readline to stop before it tries to get the tty settings. */ static void set_winsize (tty) int tty; { #if defined (TIOCGWINSZ) struct winsize w; if (ioctl (tty, TIOCGWINSZ, &w) == 0) (void) ioctl (tty, TIOCSWINSZ, &w); #endif /* TIOCGWINSZ */ } #if defined (NO_TTY_DRIVER) /* Nothing */ #elif defined (NEW_TTY_DRIVER) /* Values for the `flags' field of a struct bsdtty. This tells which elements of the struct bsdtty have been fetched from the system and are valid. */ #define SGTTY_SET 0x01 #define LFLAG_SET 0x02 #define TCHARS_SET 0x04 #define LTCHARS_SET 0x08 struct bsdtty { struct sgttyb sgttyb; /* Basic BSD tty driver information. */ int lflag; /* Local mode flags, like LPASS8. */ #if defined (TIOCGETC) struct tchars tchars; /* Terminal special characters, including ^S and ^Q. */ #endif #if defined (TIOCGLTC) struct ltchars ltchars; /* 4.2 BSD editing characters */ #endif int flags; /* Bitmap saying which parts of the struct are valid. */ }; #define TIOTYPE struct bsdtty static TIOTYPE otio; static void save_tty_chars PARAMS((TIOTYPE *)); static int _get_tty_settings PARAMS((int, TIOTYPE *)); static int get_tty_settings PARAMS((int, TIOTYPE *)); static int _set_tty_settings PARAMS((int, TIOTYPE *)); static int set_tty_settings PARAMS((int, TIOTYPE *)); static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *)); static void save_tty_chars (TIOTYPE *tiop) { _rl_last_tty_chars = _rl_tty_chars; if (tiop->flags & SGTTY_SET) { _rl_tty_chars.t_erase = tiop->sgttyb.sg_erase; _rl_tty_chars.t_kill = tiop->sgttyb.sg_kill; } if (tiop->flags & TCHARS_SET) { _rl_intr_char = _rl_tty_chars.t_intr = tiop->tchars.t_intrc; _rl_quit_char = _rl_tty_chars.t_quit = tiop->tchars.t_quitc; _rl_tty_chars.t_start = tiop->tchars.t_startc; _rl_tty_chars.t_stop = tiop->tchars.t_stopc; _rl_tty_chars.t_eof = tiop->tchars.t_eofc; _rl_tty_chars.t_eol = '\n'; _rl_tty_chars.t_eol2 = tiop->tchars.t_brkc; } if (tiop->flags & LTCHARS_SET) { _rl_susp_char = _rl_tty_chars.t_susp = tiop->ltchars.t_suspc; _rl_tty_chars.t_dsusp = tiop->ltchars.t_dsuspc; _rl_tty_chars.t_reprint = tiop->ltchars.t_rprntc; _rl_tty_chars.t_flush = tiop->ltchars.t_flushc; _rl_tty_chars.t_werase = tiop->ltchars.t_werasc; _rl_tty_chars.t_lnext = tiop->ltchars.t_lnextc; } _rl_tty_chars.t_status = -1; } static int get_tty_settings (int tty, TIOTYPE *tiop) { set_winsize (tty); tiop->flags = tiop->lflag = 0; errno = 0; if (ioctl (tty, TIOCGETP, &(tiop->sgttyb)) < 0) return -1; tiop->flags |= SGTTY_SET; #if defined (TIOCLGET) if (ioctl (tty, TIOCLGET, &(tiop->lflag)) == 0) tiop->flags |= LFLAG_SET; #endif #if defined (TIOCGETC) if (ioctl (tty, TIOCGETC, &(tiop->tchars)) == 0) tiop->flags |= TCHARS_SET; #endif #if defined (TIOCGLTC) if (ioctl (tty, TIOCGLTC, &(tiop->ltchars)) == 0) tiop->flags |= LTCHARS_SET; #endif return 0; } static int set_tty_settings (int tty, TIOTYPE *tiop) { if (tiop->flags & SGTTY_SET) { ioctl (tty, TIOCSETN, &(tiop->sgttyb)); tiop->flags &= ~SGTTY_SET; } _rl_echoing_p = 1; #if defined (TIOCLSET) if (tiop->flags & LFLAG_SET) { ioctl (tty, TIOCLSET, &(tiop->lflag)); tiop->flags &= ~LFLAG_SET; } #endif #if defined (TIOCSETC) if (tiop->flags & TCHARS_SET) { ioctl (tty, TIOCSETC, &(tiop->tchars)); tiop->flags &= ~TCHARS_SET; } #endif #if defined (TIOCSLTC) if (tiop->flags & LTCHARS_SET) { ioctl (tty, TIOCSLTC, &(tiop->ltchars)); tiop->flags &= ~LTCHARS_SET; } #endif return 0; } static void prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop) { _rl_echoing_p = (oldtio.sgttyb.sg_flags & ECHO); _rl_echoctl = (oldtio.sgttyb.sg_flags & ECHOCTL); /* Copy the original settings to the structure we're going to use for our settings. */ tiop->sgttyb = oldtio.sgttyb; tiop->lflag = oldtio.lflag; #if defined (TIOCGETC) tiop->tchars = oldtio.tchars; #endif #if defined (TIOCGLTC) tiop->ltchars = oldtio.ltchars; #endif tiop->flags = oldtio.flags; /* First, the basic settings to put us into character-at-a-time, no-echo input mode. */ tiop->sgttyb.sg_flags &= ~(ECHO | CRMOD); tiop->sgttyb.sg_flags |= CBREAK; /* If this terminal doesn't care how the 8th bit is used, then we can use it for the meta-key. If only one of even or odd parity is specified, then the terminal is using parity, and we cannot. */ #if !defined (ANYP) # define ANYP (EVENP | ODDP) #endif if (((oldtio.sgttyb.sg_flags & ANYP) == ANYP) || ((oldtio.sgttyb.sg_flags & ANYP) == 0)) { tiop->sgttyb.sg_flags |= ANYP; /* Hack on local mode flags if we can. */ #if defined (TIOCLGET) # if defined (LPASS8) tiop->lflag |= LPASS8; # endif /* LPASS8 */ #endif /* TIOCLGET */ } #if defined (TIOCGETC) # if defined (USE_XON_XOFF) /* Get rid of terminal output start and stop characters. */ tiop->tchars.t_stopc = -1; /* C-s */ tiop->tchars.t_startc = -1; /* C-q */ /* If there is an XON character, bind it to restart the output. */ if (oldtio.tchars.t_startc != -1) rl_bind_key (oldtio.tchars.t_startc, rl_restart_output); # endif /* USE_XON_XOFF */ /* If there is an EOF char, bind _rl_eof_char to it. */ if (oldtio.tchars.t_eofc != -1) _rl_eof_char = oldtio.tchars.t_eofc; # if defined (NO_KILL_INTR) /* Get rid of terminal-generated SIGQUIT and SIGINT. */ tiop->tchars.t_quitc = -1; /* C-\ */ tiop->tchars.t_intrc = -1; /* C-c */ # endif /* NO_KILL_INTR */ #endif /* TIOCGETC */ #if defined (TIOCGLTC) /* Make the interrupt keys go away. Just enough to make people happy. */ tiop->ltchars.t_dsuspc = -1; /* C-y */ tiop->ltchars.t_lnextc = -1; /* C-v */ #endif /* TIOCGLTC */ } #else /* !defined (NEW_TTY_DRIVER) */ #if !defined (VMIN) # define VMIN VEOF #endif #if !defined (VTIME) # define VTIME VEOL #endif #if defined (TERMIOS_TTY_DRIVER) # define TIOTYPE struct termios # define DRAIN_OUTPUT(fd) tcdrain (fd) # define GETATTR(tty, tiop) (tcgetattr (tty, tiop)) # ifdef M_UNIX # define SETATTR(tty, tiop) (tcsetattr (tty, TCSANOW, tiop)) # else # define SETATTR(tty, tiop) (tcsetattr (tty, TCSADRAIN, tiop)) # endif /* !M_UNIX */ #else # define TIOTYPE struct termio # define DRAIN_OUTPUT(fd) # define GETATTR(tty, tiop) (ioctl (tty, TCGETA, tiop)) # define SETATTR(tty, tiop) (ioctl (tty, TCSETAW, tiop)) #endif /* !TERMIOS_TTY_DRIVER */ static TIOTYPE otio; static void save_tty_chars PARAMS((TIOTYPE *)); static int _get_tty_settings PARAMS((int, TIOTYPE *)); static int get_tty_settings PARAMS((int, TIOTYPE *)); static int _set_tty_settings PARAMS((int, TIOTYPE *)); static int set_tty_settings PARAMS((int, TIOTYPE *)); static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *)); static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE)); #if defined (FLUSHO) # define OUTPUT_BEING_FLUSHED(tp) (tp->c_lflag & FLUSHO) #else # define OUTPUT_BEING_FLUSHED(tp) 0 #endif static void save_tty_chars (TIOTYPE *tiop) { _rl_last_tty_chars = _rl_tty_chars; _rl_tty_chars.t_eof = tiop->c_cc[VEOF]; _rl_tty_chars.t_eol = tiop->c_cc[VEOL]; #ifdef VEOL2 _rl_tty_chars.t_eol2 = tiop->c_cc[VEOL2]; #endif _rl_tty_chars.t_erase = tiop->c_cc[VERASE]; #ifdef VWERASE _rl_tty_chars.t_werase = tiop->c_cc[VWERASE]; #endif _rl_tty_chars.t_kill = tiop->c_cc[VKILL]; #ifdef VREPRINT _rl_tty_chars.t_reprint = tiop->c_cc[VREPRINT]; #endif _rl_intr_char = _rl_tty_chars.t_intr = tiop->c_cc[VINTR]; _rl_quit_char = _rl_tty_chars.t_quit = tiop->c_cc[VQUIT]; #ifdef VSUSP _rl_susp_char = _rl_tty_chars.t_susp = tiop->c_cc[VSUSP]; #endif #ifdef VDSUSP _rl_tty_chars.t_dsusp = tiop->c_cc[VDSUSP]; #endif #ifdef VSTART _rl_tty_chars.t_start = tiop->c_cc[VSTART]; #endif #ifdef VSTOP _rl_tty_chars.t_stop = tiop->c_cc[VSTOP]; #endif #ifdef VLNEXT _rl_tty_chars.t_lnext = tiop->c_cc[VLNEXT]; #endif #ifdef VDISCARD _rl_tty_chars.t_flush = tiop->c_cc[VDISCARD]; #endif #ifdef VSTATUS _rl_tty_chars.t_status = tiop->c_cc[VSTATUS]; #endif } #if defined (_AIX) || defined (_AIX41) /* Currently this is only used on AIX */ static void rltty_warning (char *msg) { _rl_errmsg ("warning: %s", msg); } #endif #if defined (_AIX) void setopost (TIOTYPE *tp) { if ((tp->c_oflag & OPOST) == 0) { _rl_errmsg ("warning: turning on OPOST for terminal\r"); tp->c_oflag |= OPOST|ONLCR; } } #endif static int _get_tty_settings (int tty, TIOTYPE *tiop) { int ioctl_ret; while (1) { ioctl_ret = GETATTR (tty, tiop); if (ioctl_ret < 0) { if (errno != EINTR) return -1; else continue; } if (OUTPUT_BEING_FLUSHED (tiop)) { #if defined (FLUSHO) _rl_errmsg ("warning: turning off output flushing"); tiop->c_lflag &= ~FLUSHO; break; #else continue; #endif } break; } return 0; } static int get_tty_settings (int tty, TIOTYPE *tiop) { set_winsize (tty); errno = 0; if (_get_tty_settings (tty, tiop) < 0) return -1; #if defined (_AIX) setopost(tiop); #endif return 0; } static int _set_tty_settings (int tty, TIOTYPE *tiop) { while (SETATTR (tty, tiop) < 0) { if (errno != EINTR) return -1; errno = 0; } return 0; } static int set_tty_settings (int tty, TIOTYPE *tiop) { if (_set_tty_settings (tty, tiop) < 0) return -1; #if 0 #if defined (TERMIOS_TTY_DRIVER) # if defined (__ksr1__) if (ksrflow) { ksrflow = 0; tcflow (tty, TCOON); } # else /* !ksr1 */ tcflow (tty, TCOON); /* Simulate a ^Q. */ # endif /* !ksr1 */ #else ioctl (tty, TCXONC, 1); /* Simulate a ^Q. */ #endif /* !TERMIOS_TTY_DRIVER */ #endif /* 0 */ return 0; } static void prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop) { int sc; Keymap kmap; _rl_echoing_p = (oldtio.c_lflag & ECHO); #if defined (ECHOCTL) _rl_echoctl = (oldtio.c_lflag & ECHOCTL); #endif tiop->c_lflag &= ~(ICANON | ECHO); if ((unsigned char) oldtio.c_cc[VEOF] != (unsigned char) _POSIX_VDISABLE) _rl_eof_char = oldtio.c_cc[VEOF]; #if defined (USE_XON_XOFF) #if defined (IXANY) tiop->c_iflag &= ~(IXON | IXANY); #else /* `strict' Posix systems do not define IXANY. */ tiop->c_iflag &= ~IXON; #endif /* IXANY */ #endif /* USE_XON_XOFF */ /* Only turn this off if we are using all 8 bits. */ if (((tiop->c_cflag & CSIZE) == CS8) || meta_flag) tiop->c_iflag &= ~(ISTRIP | INPCK); /* Make sure we differentiate between CR and NL on input. */ tiop->c_iflag &= ~(ICRNL | INLCR); #if !defined (HANDLE_SIGNALS) tiop->c_lflag &= ~ISIG; #else tiop->c_lflag |= ISIG; #endif tiop->c_cc[VMIN] = 1; tiop->c_cc[VTIME] = 0; #if defined (FLUSHO) if (OUTPUT_BEING_FLUSHED (tiop)) { tiop->c_lflag &= ~FLUSHO; oldtio.c_lflag &= ~FLUSHO; } #endif /* Turn off characters that we need on Posix systems with job control, just to be sure. This includes ^Y and ^V. This should not really be necessary. */ #if defined (TERMIOS_TTY_DRIVER) && defined (_POSIX_VDISABLE) #if defined (VLNEXT) tiop->c_cc[VLNEXT] = _POSIX_VDISABLE; #endif #if defined (VDSUSP) tiop->c_cc[VDSUSP] = _POSIX_VDISABLE; #endif /* Conditionally disable some other tty special characters if there is a key binding for them in the current keymap. Readline ordinarily doesn't bind these characters, but an application or user might. */ #if defined (VI_MODE) kmap = (rl_editing_mode == vi_mode) ? vi_insertion_keymap : _rl_keymap; #else kmap = _rl_keymap; #endif #if defined (VDISCARD) sc = tiop->c_cc[VDISCARD]; if (sc != _POSIX_VDISABLE && kmap[(unsigned char)sc].type == ISFUNC) tiop->c_cc[VDISCARD] = _POSIX_VDISABLE; #endif /* VDISCARD */ #endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */ } #endif /* !NEW_TTY_DRIVER */ /* Put the terminal in CBREAK mode so that we can detect key presses. */ #if defined (NO_TTY_DRIVER) void rl_prep_terminal (int meta_flag) { _rl_echoing_p = 1; } void rl_deprep_terminal (void) { } #else /* ! NO_TTY_DRIVER */ void rl_prep_terminal (int meta_flag) { int tty, nprep; TIOTYPE tio; if (terminal_prepped) return; /* Try to keep this function from being INTerrupted. */ _rl_block_sigint (); tty = rl_instream ? fileno (rl_instream) : fileno (stdin); if (get_tty_settings (tty, &tio) < 0) { #if defined (ENOTSUP) /* MacOS X and Linux, at least, lie about the value of errno if tcgetattr fails. */ if (errno == ENOTTY || errno == EINVAL || errno == ENOTSUP) #else if (errno == ENOTTY || errno == EINVAL) #endif _rl_echoing_p = 1; /* XXX */ _rl_release_sigint (); return; } otio = tio; if (_rl_bind_stty_chars) { #if defined (VI_MODE) /* If editing in vi mode, make sure we restore the bindings in the insertion keymap no matter what keymap we ended up in. */ if (rl_editing_mode == vi_mode) rl_tty_unset_default_bindings (vi_insertion_keymap); else #endif rl_tty_unset_default_bindings (_rl_keymap); } save_tty_chars (&otio); RL_SETSTATE(RL_STATE_TTYCSAVED); if (_rl_bind_stty_chars) { #if defined (VI_MODE) /* If editing in vi mode, make sure we set the bindings in the insertion keymap no matter what keymap we ended up in. */ if (rl_editing_mode == vi_mode) _rl_bind_tty_special_chars (vi_insertion_keymap, tio); else #endif _rl_bind_tty_special_chars (_rl_keymap, tio); } prepare_terminal_settings (meta_flag, otio, &tio); if (set_tty_settings (tty, &tio) < 0) { _rl_release_sigint (); return; } if (_rl_enable_keypad) _rl_control_keypad (1); nprep = TPX_PREPPED; if (_rl_enable_bracketed_paste) { fprintf (rl_outstream, BRACK_PASTE_INIT); nprep |= TPX_BRACKPASTE; } fflush (rl_outstream); terminal_prepped = nprep; RL_SETSTATE(RL_STATE_TERMPREPPED); _rl_release_sigint (); } /* Restore the terminal's normal settings and modes. */ void rl_deprep_terminal (void) { int tty; if (terminal_prepped == 0) return; /* Try to keep this function from being interrupted. */ _rl_block_sigint (); tty = rl_instream ? fileno (rl_instream) : fileno (stdin); if (terminal_prepped & TPX_BRACKPASTE) { fprintf (rl_outstream, BRACK_PASTE_FINI); if (_rl_eof_found) fprintf (rl_outstream, "\n"); } if (_rl_enable_keypad) _rl_control_keypad (0); fflush (rl_outstream); if (set_tty_settings (tty, &otio) < 0) { _rl_release_sigint (); return; } terminal_prepped = 0; RL_UNSETSTATE(RL_STATE_TERMPREPPED); _rl_release_sigint (); } #endif /* !NO_TTY_DRIVER */ /* Set readline's idea of whether or not it is echoing output to the terminal, returning the old value. */ int rl_tty_set_echoing (int u) { int o; o = _rl_echoing_p; _rl_echoing_p = u; return o; } /* **************************************************************** */ /* */ /* Bogus Flow Control */ /* */ /* **************************************************************** */ int rl_restart_output (int count, int key) { #if defined (__MINGW32__) return 0; #else /* !__MING32__ */ int fildes = fileno (rl_outstream); #if defined (TIOCSTART) #if defined (apollo) ioctl (&fildes, TIOCSTART, 0); #else ioctl (fildes, TIOCSTART, 0); #endif /* apollo */ #else /* !TIOCSTART */ # if defined (TERMIOS_TTY_DRIVER) # if defined (__ksr1__) if (ksrflow) { ksrflow = 0; tcflow (fildes, TCOON); } # else /* !ksr1 */ tcflow (fildes, TCOON); /* Simulate a ^Q. */ # endif /* !ksr1 */ # else /* !TERMIOS_TTY_DRIVER */ # if defined (TCXONC) ioctl (fildes, TCXONC, TCOON); # endif /* TCXONC */ # endif /* !TERMIOS_TTY_DRIVER */ #endif /* !TIOCSTART */ return 0; #endif /* !__MINGW32__ */ } int rl_stop_output (int count, int key) { #if defined (__MINGW32__) return 0; #else int fildes = fileno (rl_instream); #if defined (TIOCSTOP) # if defined (apollo) ioctl (&fildes, TIOCSTOP, 0); # else ioctl (fildes, TIOCSTOP, 0); # endif /* apollo */ #else /* !TIOCSTOP */ # if defined (TERMIOS_TTY_DRIVER) # if defined (__ksr1__) ksrflow = 1; # endif /* ksr1 */ tcflow (fildes, TCOOFF); # else # if defined (TCXONC) ioctl (fildes, TCXONC, TCOON); # endif /* TCXONC */ # endif /* !TERMIOS_TTY_DRIVER */ #endif /* !TIOCSTOP */ return 0; #endif /* !__MINGW32__ */ } /* **************************************************************** */ /* */ /* Default Key Bindings */ /* */ /* **************************************************************** */ #if !defined (NO_TTY_DRIVER) #define SET_SPECIAL(sc, func) set_special_char(kmap, &ttybuff, sc, func) #endif #if defined (NO_TTY_DRIVER) #define SET_SPECIAL(sc, func) #define RESET_SPECIAL(c) #elif defined (NEW_TTY_DRIVER) static void set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func) { if (sc != -1 && kmap[(unsigned char)sc].type == ISFUNC) kmap[(unsigned char)sc].function = func; } #define RESET_SPECIAL(c) \ if (c != -1 && kmap[(unsigned char)c].type == ISFUNC) \ kmap[(unsigned char)c].function = rl_insert; static void _rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff) { if (ttybuff.flags & SGTTY_SET) { SET_SPECIAL (ttybuff.sgttyb.sg_erase, rl_rubout); SET_SPECIAL (ttybuff.sgttyb.sg_kill, rl_unix_line_discard); } # if defined (TIOCGLTC) if (ttybuff.flags & LTCHARS_SET) { SET_SPECIAL (ttybuff.ltchars.t_werasc, rl_unix_word_rubout); SET_SPECIAL (ttybuff.ltchars.t_lnextc, rl_quoted_insert); } # endif /* TIOCGLTC */ } #else /* !NEW_TTY_DRIVER */ static void set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func) { unsigned char uc; uc = tiop->c_cc[sc]; if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) kmap[uc].function = func; } /* used later */ #define RESET_SPECIAL(uc) \ if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) \ kmap[uc].function = rl_insert; static void _rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff) { SET_SPECIAL (VERASE, rl_rubout); SET_SPECIAL (VKILL, rl_unix_line_discard); # if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER) SET_SPECIAL (VLNEXT, rl_quoted_insert); # endif /* VLNEXT && TERMIOS_TTY_DRIVER */ # if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER) # if defined (VI_MODE) if (rl_editing_mode == vi_mode) SET_SPECIAL (VWERASE, rl_vi_unix_word_rubout); else # endif SET_SPECIAL (VWERASE, rl_unix_word_rubout); # endif /* VWERASE && TERMIOS_TTY_DRIVER */ } #endif /* !NEW_TTY_DRIVER */ /* Set the system's default editing characters to their readline equivalents in KMAP. Should be static, now that we have rl_tty_set_default_bindings. */ void rltty_set_default_bindings (Keymap kmap) { #if !defined (NO_TTY_DRIVER) TIOTYPE ttybuff; int tty; tty = fileno (rl_instream); if (get_tty_settings (tty, &ttybuff) == 0) _rl_bind_tty_special_chars (kmap, ttybuff); #endif } /* New public way to set the system default editing chars to their readline equivalents. */ void rl_tty_set_default_bindings (Keymap kmap) { rltty_set_default_bindings (kmap); } /* Rebind all of the tty special chars that readline worries about back to self-insert. Call this before saving the current terminal special chars with save_tty_chars(). This only works on POSIX termios or termio systems. */ void rl_tty_unset_default_bindings (Keymap kmap) { /* Don't bother before we've saved the tty special chars at least once. */ if (RL_ISSTATE(RL_STATE_TTYCSAVED) == 0) return; RESET_SPECIAL (_rl_tty_chars.t_erase); RESET_SPECIAL (_rl_tty_chars.t_kill); # if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER) RESET_SPECIAL (_rl_tty_chars.t_lnext); # endif /* VLNEXT && TERMIOS_TTY_DRIVER */ # if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER) RESET_SPECIAL (_rl_tty_chars.t_werase); # endif /* VWERASE && TERMIOS_TTY_DRIVER */ } #if defined (HANDLE_SIGNALS) #if defined (NEW_TTY_DRIVER) || defined (NO_TTY_DRIVER) int _rl_disable_tty_signals (void) { return 0; } int _rl_restore_tty_signals (void) { return 0; } #else static TIOTYPE sigstty, nosigstty; static int tty_sigs_disabled = 0; int _rl_disable_tty_signals (void) { if (tty_sigs_disabled) return 0; if (_get_tty_settings (fileno (rl_instream), &sigstty) < 0) return -1; nosigstty = sigstty; nosigstty.c_lflag &= ~ISIG; nosigstty.c_iflag &= ~IXON; if (_set_tty_settings (fileno (rl_instream), &nosigstty) < 0) return (_set_tty_settings (fileno (rl_instream), &sigstty)); tty_sigs_disabled = 1; return 0; } int _rl_restore_tty_signals (void) { int r; if (tty_sigs_disabled == 0) return 0; r = _set_tty_settings (fileno (rl_instream), &sigstty); if (r == 0) tty_sigs_disabled = 0; return r; } #endif /* !NEW_TTY_DRIVER */ #endif /* HANDLE_SIGNALS */ readline-8.0/posixjmp.h000664 000436 000024 00000002577 12465654057 015302 0ustar00chetstaff000000 000000 /* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */ /* Copyright (C) 1987,1991-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. Bash is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Bash. If not, see . */ #ifndef _POSIXJMP_H_ #define _POSIXJMP_H_ #include /* This *must* be included *after* config.h */ #if defined (HAVE_POSIX_SIGSETJMP) # define procenv_t sigjmp_buf # define setjmp_nosigs(x) sigsetjmp((x), 0) # define setjmp_sigs(x) sigsetjmp((x), 1) # define _rl_longjmp(x, n) siglongjmp((x), (n)) # define sh_longjmp(x, n) siglongjmp((x), (n)) #else # define procenv_t jmp_buf # define setjmp_nosigs setjmp # define setjmp_sigs setjmp # define _rl_longjmp(x, n) longjmp((x), (n)) # define sh_longjmp(x, n) longjmp((x), (n)) #endif #endif /* _POSIXJMP_H_ */ readline-8.0/patchlevel000664 000436 000024 00000000061 12603464617 015307 0ustar00chetstaff000000 000000 # Do not edit -- exists only for use by patch 0 readline-8.0/rlwinsize.h000664 000436 000000 00000004235 11130207321 015413 0ustar00chetwheel000000 000000 /* rlwinsize.h -- an attempt to isolate some of the system-specific defines for `struct winsize' and TIOCGWINSZ. */ /* Copyright (C) 1997-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_RLWINSIZE_H_) #define _RLWINSIZE_H_ #if defined (HAVE_CONFIG_H) # include "config.h" #endif /* Try to find the definitions of `struct winsize' and TIOGCWINSZ */ #if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ) # include #endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */ #if defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) # include #endif /* STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */ /* Not in either of the standard places, look around. */ #if !defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) # if defined (HAVE_SYS_STREAM_H) # include # endif /* HAVE_SYS_STREAM_H */ # if defined (HAVE_SYS_PTEM_H) /* SVR4.2, at least, has it here */ # include # define _IO_PTEM_H /* work around SVR4.2 1.1.4 bug */ # endif /* HAVE_SYS_PTEM_H */ # if defined (HAVE_SYS_PTE_H) /* ??? */ # include # endif /* HAVE_SYS_PTE_H */ #endif /* !STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */ #if defined (M_UNIX) && !defined (_SCO_DS) && !defined (tcflow) # define tcflow(fd, action) ioctl(fd, TCXONC, action) #endif #endif /* _RL_WINSIZE_H */ readline-8.0/misc.c000644 000436 000120 00000040513 13127776544 014331 0ustar00chetadmin000000 000000 /* misc.c -- miscellaneous bindable readline functions. */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_LOCALE_H) # include #endif #include /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "rlmbutil.h" /* Some standard library routines. */ #include "readline.h" #include "history.h" #include "rlprivate.h" #include "rlshell.h" #include "xmalloc.h" static int rl_digit_loop PARAMS((void)); static void _rl_history_set_point PARAMS((void)); /* Forward declarations used in this file */ void _rl_free_history_entry PARAMS((HIST_ENTRY *)); /* If non-zero, rl_get_previous_history and rl_get_next_history attempt to preserve the value of rl_point from line to line. */ int _rl_history_preserve_point = 0; _rl_arg_cxt _rl_argcxt; /* Saved target point for when _rl_history_preserve_point is set. Special value of -1 means that point is at the end of the line. */ int _rl_history_saved_point = -1; /* **************************************************************** */ /* */ /* Numeric Arguments */ /* */ /* **************************************************************** */ int _rl_arg_overflow (void) { if (rl_numeric_arg > 1000000) { _rl_argcxt = 0; rl_explicit_arg = rl_numeric_arg = 0; rl_ding (); rl_restore_prompt (); rl_clear_message (); RL_UNSETSTATE(RL_STATE_NUMERICARG); return 1; } return 0; } void _rl_arg_init (void) { rl_save_prompt (); _rl_argcxt = 0; RL_SETSTATE(RL_STATE_NUMERICARG); } int _rl_arg_getchar (void) { int c; rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); return c; } /* Process C as part of the current numeric argument. Return -1 if the argument should be aborted, 0 if we should not read any more chars, and 1 if we should continue to read chars. */ int _rl_arg_dispatch (_rl_arg_cxt cxt, int c) { int key, r; key = c; /* If we see a key bound to `universal-argument' after seeing digits, it ends the argument but is otherwise ignored. */ if (c >= 0 && _rl_keymap[c].type == ISFUNC && _rl_keymap[c].function == rl_universal_argument) { if ((cxt & NUM_SAWDIGITS) == 0) { rl_numeric_arg *= 4; return 1; } else if (RL_ISSTATE (RL_STATE_CALLBACK)) { _rl_argcxt |= NUM_READONE; return 0; /* XXX */ } else { RL_SETSTATE(RL_STATE_MOREINPUT); key = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); rl_restore_prompt (); rl_clear_message (); RL_UNSETSTATE(RL_STATE_NUMERICARG); if (key < 0) return -1; return (_rl_dispatch (key, _rl_keymap)); } } c = UNMETA (c); if (_rl_digit_p (c)) { r = _rl_digit_value (c); rl_numeric_arg = rl_explicit_arg ? (rl_numeric_arg * 10) + r : r; rl_explicit_arg = 1; _rl_argcxt |= NUM_SAWDIGITS; } else if (c == '-' && rl_explicit_arg == 0) { rl_numeric_arg = 1; _rl_argcxt |= NUM_SAWMINUS; rl_arg_sign = -1; } else { /* Make M-- command equivalent to M--1 command. */ if ((_rl_argcxt & NUM_SAWMINUS) && rl_numeric_arg == 1 && rl_explicit_arg == 0) rl_explicit_arg = 1; rl_restore_prompt (); rl_clear_message (); RL_UNSETSTATE(RL_STATE_NUMERICARG); r = _rl_dispatch (key, _rl_keymap); if (RL_ISSTATE (RL_STATE_CALLBACK)) { /* At worst, this will cause an extra redisplay. Otherwise, we have to wait until the next character comes in. */ if (rl_done == 0) (*rl_redisplay_function) (); r = 0; } return r; } return 1; } /* Handle C-u style numeric args, as well as M--, and M-digits. */ static int rl_digit_loop (void) { int c, r; while (1) { if (_rl_arg_overflow ()) return 1; c = _rl_arg_getchar (); if (c < 0) { _rl_abort_internal (); return -1; } r = _rl_arg_dispatch (_rl_argcxt, c); if (r <= 0 || (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)) break; } return r; } /* Create a default argument. */ void _rl_reset_argument (void) { rl_numeric_arg = rl_arg_sign = 1; rl_explicit_arg = 0; _rl_argcxt = 0; } /* Start a numeric argument with initial value KEY */ int rl_digit_argument (int ignore, int key) { _rl_arg_init (); if (RL_ISSTATE (RL_STATE_CALLBACK)) { _rl_arg_dispatch (_rl_argcxt, key); rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); return 0; } else { rl_execute_next (key); return (rl_digit_loop ()); } } /* C-u, universal argument. Multiply the current argument by 4. Read a key. If the key has nothing to do with arguments, then dispatch on it. If the key is the abort character then abort. */ int rl_universal_argument (int count, int key) { _rl_arg_init (); rl_numeric_arg *= 4; return (RL_ISSTATE (RL_STATE_CALLBACK) ? 0 : rl_digit_loop ()); } int _rl_arg_callback (_rl_arg_cxt cxt) { int c, r; c = _rl_arg_getchar (); if (c < 0) return (1); /* EOF */ if (_rl_argcxt & NUM_READONE) { _rl_argcxt &= ~NUM_READONE; rl_restore_prompt (); rl_clear_message (); RL_UNSETSTATE(RL_STATE_NUMERICARG); rl_execute_next (c); return 0; } r = _rl_arg_dispatch (cxt, c); if (r > 0) rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); return (r != 1); } /* What to do when you abort reading an argument. */ int rl_discard_argument (void) { rl_ding (); rl_clear_message (); _rl_reset_argument (); return 0; } /* **************************************************************** */ /* */ /* History Utilities */ /* */ /* **************************************************************** */ /* We already have a history library, and that is what we use to control the history features of readline. This is our local interface to the history mechanism. */ /* While we are editing the history, this is the saved version of the original line. */ HIST_ENTRY *_rl_saved_line_for_history = (HIST_ENTRY *)NULL; /* Set the history pointer back to the last entry in the history. */ void _rl_start_using_history (void) { using_history (); if (_rl_saved_line_for_history) _rl_free_history_entry (_rl_saved_line_for_history); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; } /* Free the contents (and containing structure) of a HIST_ENTRY. */ void _rl_free_history_entry (HIST_ENTRY *entry) { if (entry == 0) return; FREE (entry->line); FREE (entry->timestamp); xfree (entry); } /* Perhaps put back the current line if it has changed. */ int rl_maybe_replace_line (void) { HIST_ENTRY *temp; temp = current_history (); /* If the current line has changed, save the changes. */ if (temp && ((UNDO_LIST *)(temp->data) != rl_undo_list)) { temp = replace_history_entry (where_history (), rl_line_buffer, (histdata_t)rl_undo_list); xfree (temp->line); FREE (temp->timestamp); xfree (temp); } return 0; } /* Restore the _rl_saved_line_for_history if there is one. */ int rl_maybe_unsave_line (void) { if (_rl_saved_line_for_history) { /* Can't call with `1' because rl_undo_list might point to an undo list from a history entry, as in rl_replace_from_history() below. */ rl_replace_line (_rl_saved_line_for_history->line, 0); rl_undo_list = (UNDO_LIST *)_rl_saved_line_for_history->data; _rl_free_history_entry (_rl_saved_line_for_history); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; rl_point = rl_end; /* rl_replace_line sets rl_end */ } else rl_ding (); return 0; } /* Save the current line in _rl_saved_line_for_history. */ int rl_maybe_save_line (void) { if (_rl_saved_line_for_history == 0) { _rl_saved_line_for_history = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY)); _rl_saved_line_for_history->line = savestring (rl_line_buffer); _rl_saved_line_for_history->timestamp = (char *)NULL; _rl_saved_line_for_history->data = (char *)rl_undo_list; } return 0; } int _rl_free_saved_history_line (void) { if (_rl_saved_line_for_history) { _rl_free_history_entry (_rl_saved_line_for_history); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; } return 0; } static void _rl_history_set_point (void) { rl_point = (_rl_history_preserve_point && _rl_history_saved_point != -1) ? _rl_history_saved_point : rl_end; if (rl_point > rl_end) rl_point = rl_end; #if defined (VI_MODE) if (rl_editing_mode == vi_mode && _rl_keymap != vi_insertion_keymap) rl_point = 0; #endif /* VI_MODE */ if (rl_editing_mode == emacs_mode) rl_mark = (rl_point == rl_end ? 0 : rl_end); } void rl_replace_from_history (HIST_ENTRY *entry, int flags) { /* Can't call with `1' because rl_undo_list might point to an undo list from a history entry, just like we're setting up here. */ rl_replace_line (entry->line, 0); rl_undo_list = (UNDO_LIST *)entry->data; rl_point = rl_end; rl_mark = 0; #if defined (VI_MODE) if (rl_editing_mode == vi_mode) { rl_point = 0; rl_mark = rl_end; } #endif } /* Process and free undo lists attached to each history entry prior to the current entry, inclusive, reverting each line to its saved state. This is destructive, and state about the current line is lost. This is not intended to be called while actively editing, and the current line is not assumed to have been added to the history list. */ void _rl_revert_all_lines (void) { int hpos; HIST_ENTRY *entry; UNDO_LIST *ul, *saved_undo_list; char *lbuf; lbuf = savestring (rl_line_buffer); saved_undo_list = rl_undo_list; hpos = where_history (); entry = (hpos == history_length) ? previous_history () : current_history (); while (entry) { if (ul = (UNDO_LIST *)entry->data) { if (ul == saved_undo_list) saved_undo_list = 0; /* Set up rl_line_buffer and other variables from history entry */ rl_replace_from_history (entry, 0); /* entry->line is now current */ entry->data = 0; /* entry->data is now current undo list */ /* Undo all changes to this history entry */ while (rl_undo_list) rl_do_undo (); /* And copy the reverted line back to the history entry, preserving the timestamp. */ FREE (entry->line); entry->line = savestring (rl_line_buffer); } entry = previous_history (); } /* Restore history state */ rl_undo_list = saved_undo_list; /* may have been set to null */ history_set_pos (hpos); /* reset the line buffer */ rl_replace_line (lbuf, 0); _rl_set_the_line (); /* and clean up */ xfree (lbuf); } /* Free the history list, including private readline data and take care of pointer aliases to history data. Resets rl_undo_list if it points to an UNDO_LIST * saved as some history entry's data member. This should not be called while editing is active. */ void rl_clear_history (void) { HIST_ENTRY **hlist, *hent; register int i; UNDO_LIST *ul, *saved_undo_list; saved_undo_list = rl_undo_list; hlist = history_list (); /* direct pointer, not copy */ for (i = 0; i < history_length; i++) { hent = hlist[i]; if (ul = (UNDO_LIST *)hent->data) { if (ul == saved_undo_list) saved_undo_list = 0; _rl_free_undo_list (ul); hent->data = 0; } _rl_free_history_entry (hent); } history_offset = history_length = 0; rl_undo_list = saved_undo_list; /* should be NULL */ } /* **************************************************************** */ /* */ /* History Commands */ /* */ /* **************************************************************** */ /* Meta-< goes to the start of the history. */ int rl_beginning_of_history (int count, int key) { return (rl_get_previous_history (1 + where_history (), key)); } /* Meta-> goes to the end of the history. (The current line). */ int rl_end_of_history (int count, int key) { rl_maybe_replace_line (); using_history (); rl_maybe_unsave_line (); return 0; } /* Move down to the next history line. */ int rl_get_next_history (int count, int key) { HIST_ENTRY *temp; if (count < 0) return (rl_get_previous_history (-count, key)); if (count == 0) return 0; rl_maybe_replace_line (); /* either not saved by rl_newline or at end of line, so set appropriately. */ if (_rl_history_saved_point == -1 && (rl_point || rl_end)) _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point; temp = (HIST_ENTRY *)NULL; while (count) { temp = next_history (); if (!temp) break; --count; } if (temp == 0) rl_maybe_unsave_line (); else { rl_replace_from_history (temp, 0); _rl_history_set_point (); } return 0; } /* Get the previous item out of our interactive history, making it the current line. If there is no previous history, just ding. */ int rl_get_previous_history (int count, int key) { HIST_ENTRY *old_temp, *temp; if (count < 0) return (rl_get_next_history (-count, key)); if (count == 0 || history_list () == 0) return 0; /* either not saved by rl_newline or at end of line, so set appropriately. */ if (_rl_history_saved_point == -1 && (rl_point || rl_end)) _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point; /* If we don't have a line saved, then save this one. */ rl_maybe_save_line (); /* If the current line has changed, save the changes. */ rl_maybe_replace_line (); temp = old_temp = (HIST_ENTRY *)NULL; while (count) { temp = previous_history (); if (temp == 0) break; old_temp = temp; --count; } /* If there was a large argument, and we moved back to the start of the history, that is not an error. So use the last value found. */ if (!temp && old_temp) temp = old_temp; if (temp == 0) { rl_maybe_unsave_line (); rl_ding (); } else { rl_replace_from_history (temp, 0); _rl_history_set_point (); } return 0; } /* **************************************************************** */ /* */ /* Editing Modes */ /* */ /* **************************************************************** */ /* How to toggle back and forth between editing modes. */ int rl_vi_editing_mode (int count, int key) { #if defined (VI_MODE) _rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */ rl_editing_mode = vi_mode; rl_vi_insert_mode (1, key); #endif /* VI_MODE */ return 0; } int rl_emacs_editing_mode (int count, int key) { rl_editing_mode = emacs_mode; _rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */ _rl_keymap = emacs_standard_keymap; if (_rl_show_mode_in_prompt) _rl_reset_prompt (); return 0; } /* Function for the rest of the library to use to set insert/overwrite mode. */ void _rl_set_insert_mode (int im, int force) { #ifdef CURSOR_MODE _rl_set_cursor (im, force); #endif rl_insert_mode = im; } /* Toggle overwrite mode. A positive explicit argument selects overwrite mode. A negative or zero explicit argument selects insert mode. */ int rl_overwrite_mode (int count, int key) { if (rl_explicit_arg == 0) _rl_set_insert_mode (rl_insert_mode ^ 1, 0); else if (count > 0) _rl_set_insert_mode (RL_IM_OVERWRITE, 0); else _rl_set_insert_mode (RL_IM_INSERT, 0); return 0; } readline-8.0/funmap.c000664 000436 000120 00000022571 13052152136 014650 0ustar00chetadmin000000 000000 /* funmap.c -- attach names to functions. */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #if !defined (BUFSIZ) #include #endif /* BUFSIZ */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include "rlconf.h" #include "readline.h" #include "xmalloc.h" #ifdef __STDC__ typedef int QSFUNC (const void *, const void *); #else typedef int QSFUNC (); #endif extern int _rl_qsort_string_compare PARAMS((char **, char **)); FUNMAP **funmap; static int funmap_size; static int funmap_entry; /* After initializing the function map, this is the index of the first program specific function. */ int funmap_program_specific_entry_start; static const FUNMAP default_funmap[] = { { "abort", rl_abort }, { "accept-line", rl_newline }, { "arrow-key-prefix", rl_arrow_keys }, { "backward-byte", rl_backward_byte }, { "backward-char", rl_backward_char }, { "backward-delete-char", rl_rubout }, { "backward-kill-line", rl_backward_kill_line }, { "backward-kill-word", rl_backward_kill_word }, { "backward-word", rl_backward_word }, { "beginning-of-history", rl_beginning_of_history }, { "beginning-of-line", rl_beg_of_line }, { "bracketed-paste-begin", rl_bracketed_paste_begin }, { "call-last-kbd-macro", rl_call_last_kbd_macro }, { "capitalize-word", rl_capitalize_word }, { "character-search", rl_char_search }, { "character-search-backward", rl_backward_char_search }, { "clear-screen", rl_clear_screen }, { "complete", rl_complete }, { "copy-backward-word", rl_copy_backward_word }, { "copy-forward-word", rl_copy_forward_word }, { "copy-region-as-kill", rl_copy_region_to_kill }, { "delete-char", rl_delete }, { "delete-char-or-list", rl_delete_or_show_completions }, { "delete-horizontal-space", rl_delete_horizontal_space }, { "digit-argument", rl_digit_argument }, { "do-lowercase-version", rl_do_lowercase_version }, { "downcase-word", rl_downcase_word }, { "dump-functions", rl_dump_functions }, { "dump-macros", rl_dump_macros }, { "dump-variables", rl_dump_variables }, { "emacs-editing-mode", rl_emacs_editing_mode }, { "end-kbd-macro", rl_end_kbd_macro }, { "end-of-history", rl_end_of_history }, { "end-of-line", rl_end_of_line }, { "exchange-point-and-mark", rl_exchange_point_and_mark }, { "forward-backward-delete-char", rl_rubout_or_delete }, { "forward-byte", rl_forward_byte }, { "forward-char", rl_forward_char }, { "forward-search-history", rl_forward_search_history }, { "forward-word", rl_forward_word }, { "history-search-backward", rl_history_search_backward }, { "history-search-forward", rl_history_search_forward }, { "history-substring-search-backward", rl_history_substr_search_backward }, { "history-substring-search-forward", rl_history_substr_search_forward }, { "insert-comment", rl_insert_comment }, { "insert-completions", rl_insert_completions }, { "kill-whole-line", rl_kill_full_line }, { "kill-line", rl_kill_line }, { "kill-region", rl_kill_region }, { "kill-word", rl_kill_word }, { "menu-complete", rl_menu_complete }, { "menu-complete-backward", rl_backward_menu_complete }, { "next-history", rl_get_next_history }, { "next-screen-line", rl_next_screen_line }, { "non-incremental-forward-search-history", rl_noninc_forward_search }, { "non-incremental-reverse-search-history", rl_noninc_reverse_search }, { "non-incremental-forward-search-history-again", rl_noninc_forward_search_again }, { "non-incremental-reverse-search-history-again", rl_noninc_reverse_search_again }, { "old-menu-complete", rl_old_menu_complete }, { "overwrite-mode", rl_overwrite_mode }, #if defined (_WIN32) { "paste-from-clipboard", rl_paste_from_clipboard }, #endif { "possible-completions", rl_possible_completions }, { "previous-history", rl_get_previous_history }, { "previous-screen-line", rl_previous_screen_line }, { "print-last-kbd-macro", rl_print_last_kbd_macro }, { "quoted-insert", rl_quoted_insert }, { "re-read-init-file", rl_re_read_init_file }, { "redraw-current-line", rl_refresh_line}, { "reverse-search-history", rl_reverse_search_history }, { "revert-line", rl_revert_line }, { "self-insert", rl_insert }, { "set-mark", rl_set_mark }, { "skip-csi-sequence", rl_skip_csi_sequence }, { "start-kbd-macro", rl_start_kbd_macro }, { "tab-insert", rl_tab_insert }, { "tilde-expand", rl_tilde_expand }, { "transpose-chars", rl_transpose_chars }, { "transpose-words", rl_transpose_words }, { "tty-status", rl_tty_status }, { "undo", rl_undo_command }, { "universal-argument", rl_universal_argument }, { "unix-filename-rubout", rl_unix_filename_rubout }, { "unix-line-discard", rl_unix_line_discard }, { "unix-word-rubout", rl_unix_word_rubout }, { "upcase-word", rl_upcase_word }, { "yank", rl_yank }, { "yank-last-arg", rl_yank_last_arg }, { "yank-nth-arg", rl_yank_nth_arg }, { "yank-pop", rl_yank_pop }, #if defined (VI_MODE) { "vi-append-eol", rl_vi_append_eol }, { "vi-append-mode", rl_vi_append_mode }, { "vi-arg-digit", rl_vi_arg_digit }, { "vi-back-to-indent", rl_vi_back_to_indent }, { "vi-backward-bigword", rl_vi_bWord }, { "vi-backward-word", rl_vi_bword }, { "vi-bWord", rl_vi_bWord }, { "vi-bword", rl_vi_bword }, { "vi-change-case", rl_vi_change_case }, { "vi-change-char", rl_vi_change_char }, { "vi-change-to", rl_vi_change_to }, { "vi-char-search", rl_vi_char_search }, { "vi-column", rl_vi_column }, { "vi-complete", rl_vi_complete }, { "vi-delete", rl_vi_delete }, { "vi-delete-to", rl_vi_delete_to }, { "vi-eWord", rl_vi_eWord }, { "vi-editing-mode", rl_vi_editing_mode }, { "vi-end-bigword", rl_vi_eWord }, { "vi-end-word", rl_vi_end_word }, { "vi-eof-maybe", rl_vi_eof_maybe }, { "vi-eword", rl_vi_eword }, { "vi-fWord", rl_vi_fWord }, { "vi-fetch-history", rl_vi_fetch_history }, { "vi-first-print", rl_vi_first_print }, { "vi-forward-bigword", rl_vi_fWord }, { "vi-forward-word", rl_vi_fword }, { "vi-fword", rl_vi_fword }, { "vi-goto-mark", rl_vi_goto_mark }, { "vi-insert-beg", rl_vi_insert_beg }, { "vi-insertion-mode", rl_vi_insert_mode }, { "vi-match", rl_vi_match }, { "vi-movement-mode", rl_vi_movement_mode }, { "vi-next-word", rl_vi_next_word }, { "vi-overstrike", rl_vi_overstrike }, { "vi-overstrike-delete", rl_vi_overstrike_delete }, { "vi-prev-word", rl_vi_prev_word }, { "vi-put", rl_vi_put }, { "vi-redo", rl_vi_redo }, { "vi-replace", rl_vi_replace }, { "vi-rubout", rl_vi_rubout }, { "vi-search", rl_vi_search }, { "vi-search-again", rl_vi_search_again }, { "vi-set-mark", rl_vi_set_mark }, { "vi-subst", rl_vi_subst }, { "vi-tilde-expand", rl_vi_tilde_expand }, { "vi-unix-word-rubout", rl_vi_unix_word_rubout }, { "vi-yank-arg", rl_vi_yank_arg }, { "vi-yank-pop", rl_vi_yank_pop }, { "vi-yank-to", rl_vi_yank_to }, #endif /* VI_MODE */ {(char *)NULL, (rl_command_func_t *)NULL } }; int rl_add_funmap_entry (const char *name, rl_command_func_t *function) { if (funmap_entry + 2 >= funmap_size) { funmap_size += 64; funmap = (FUNMAP **)xrealloc (funmap, funmap_size * sizeof (FUNMAP *)); } funmap[funmap_entry] = (FUNMAP *)xmalloc (sizeof (FUNMAP)); funmap[funmap_entry]->name = name; funmap[funmap_entry]->function = function; funmap[++funmap_entry] = (FUNMAP *)NULL; return funmap_entry; } static int funmap_initialized; /* Make the funmap contain all of the default entries. */ void rl_initialize_funmap (void) { register int i; if (funmap_initialized) return; for (i = 0; default_funmap[i].name; i++) rl_add_funmap_entry (default_funmap[i].name, default_funmap[i].function); funmap_initialized = 1; funmap_program_specific_entry_start = i; } /* Produce a NULL terminated array of known function names. The array is sorted. The array itself is allocated, but not the strings inside. You should free () the array when you done, but not the pointers. */ const char ** rl_funmap_names (void) { const char **result; int result_size, result_index; /* Make sure that the function map has been initialized. */ rl_initialize_funmap (); for (result_index = result_size = 0, result = (const char **)NULL; funmap[result_index]; result_index++) { if (result_index + 2 > result_size) { result_size += 20; result = (const char **)xrealloc (result, result_size * sizeof (char *)); } result[result_index] = funmap[result_index]->name; result[result_index + 1] = (char *)NULL; } qsort (result, result_index, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare); return (result); } readline-8.0/parse-colors.c000644 000436 000120 00000031451 13052153507 015771 0ustar00chetadmin000000 000000 /* `dir', `vdir' and `ls' directory listing programs for GNU. Modified by Chet Ramey for Readline. Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2017 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* Written by Richard Stallman and David MacKenzie. */ /* Color support by Peter Anvin and Dennis Flaherty based on original patches by Greg Lee . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include // strdup() / strcpy() #if defined (HAVE_STRING_H) # include #else /* !HAVE_STRING_H */ # include #endif /* !HAVE_STRING_H */ // abort() #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include "rldefs.h" // STREQ, savestring #include "readline.h" #include "rlprivate.h" #include "rlshell.h" #include "xmalloc.h" #include "colors.h" #include "parse-colors.h" #if defined (COLOR_SUPPORT) static bool get_funky_string (char **dest, const char **src, bool equals_end, size_t *output_count); struct bin_str _rl_color_indicator[] = { { LEN_STR_PAIR ("\033[") }, // lc: Left of color sequence { LEN_STR_PAIR ("m") }, // rc: Right of color sequence { 0, NULL }, // ec: End color (replaces lc+no+rc) { LEN_STR_PAIR ("0") }, // rs: Reset to ordinary colors { 0, NULL }, // no: Normal { 0, NULL }, // fi: File: default { LEN_STR_PAIR ("01;34") }, // di: Directory: bright blue { LEN_STR_PAIR ("01;36") }, // ln: Symlink: bright cyan { LEN_STR_PAIR ("33") }, // pi: Pipe: yellow/brown { LEN_STR_PAIR ("01;35") }, // so: Socket: bright magenta { LEN_STR_PAIR ("01;33") }, // bd: Block device: bright yellow { LEN_STR_PAIR ("01;33") }, // cd: Char device: bright yellow { 0, NULL }, // mi: Missing file: undefined { 0, NULL }, // or: Orphaned symlink: undefined { LEN_STR_PAIR ("01;32") }, // ex: Executable: bright green { LEN_STR_PAIR ("01;35") }, // do: Door: bright magenta { LEN_STR_PAIR ("37;41") }, // su: setuid: white on red { LEN_STR_PAIR ("30;43") }, // sg: setgid: black on yellow { LEN_STR_PAIR ("37;44") }, // st: sticky: black on blue { LEN_STR_PAIR ("34;42") }, // ow: other-writable: blue on green { LEN_STR_PAIR ("30;42") }, // tw: ow w/ sticky: black on green { LEN_STR_PAIR ("30;41") }, // ca: black on red { 0, NULL }, // mh: disabled by default { LEN_STR_PAIR ("\033[K") }, // cl: clear to end of line }; /* Parse a string as part of the LS_COLORS variable; this may involve decoding all kinds of escape characters. If equals_end is set an unescaped equal sign ends the string, otherwise only a : or \0 does. Set *OUTPUT_COUNT to the number of bytes output. Return true if successful. The resulting string is *not* null-terminated, but may contain embedded nulls. Note that both dest and src are char **; on return they point to the first free byte after the array and the character that ended the input string, respectively. */ static bool get_funky_string (char **dest, const char **src, bool equals_end, size_t *output_count) { char num; /* For numerical codes */ size_t count; /* Something to count with */ enum { ST_GND, ST_BACKSLASH, ST_OCTAL, ST_HEX, ST_CARET, ST_END, ST_ERROR } state; const char *p; char *q; p = *src; /* We don't want to double-indirect */ q = *dest; /* the whole darn time. */ count = 0; /* No characters counted in yet. */ num = 0; state = ST_GND; /* Start in ground state. */ while (state < ST_END) { switch (state) { case ST_GND: /* Ground state (no escapes) */ switch (*p) { case ':': case '\0': state = ST_END; /* End of string */ break; case '\\': state = ST_BACKSLASH; /* Backslash scape sequence */ ++p; break; case '^': state = ST_CARET; /* Caret escape */ ++p; break; case '=': if (equals_end) { state = ST_END; /* End */ break; } /* else fall through */ default: *(q++) = *(p++); ++count; break; } break; case ST_BACKSLASH: /* Backslash escaped character */ switch (*p) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': state = ST_OCTAL; /* Octal sequence */ num = *p - '0'; break; case 'x': case 'X': state = ST_HEX; /* Hex sequence */ num = 0; break; case 'a': /* Bell */ num = '\a'; break; case 'b': /* Backspace */ num = '\b'; break; case 'e': /* Escape */ num = 27; break; case 'f': /* Form feed */ num = '\f'; break; case 'n': /* Newline */ num = '\n'; break; case 'r': /* Carriage return */ num = '\r'; break; case 't': /* Tab */ num = '\t'; break; case 'v': /* Vtab */ num = '\v'; break; case '?': /* Delete */ num = 127; break; case '_': /* Space */ num = ' '; break; case '\0': /* End of string */ state = ST_ERROR; /* Error! */ break; default: /* Escaped character like \ ^ : = */ num = *p; break; } if (state == ST_BACKSLASH) { *(q++) = num; ++count; state = ST_GND; } ++p; break; case ST_OCTAL: /* Octal sequence */ if (*p < '0' || *p > '7') { *(q++) = num; ++count; state = ST_GND; } else num = (num << 3) + (*(p++) - '0'); break; case ST_HEX: /* Hex sequence */ switch (*p) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': num = (num << 4) + (*(p++) - '0'); break; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': num = (num << 4) + (*(p++) - 'a') + 10; break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': num = (num << 4) + (*(p++) - 'A') + 10; break; default: *(q++) = num; ++count; state = ST_GND; break; } break; case ST_CARET: /* Caret escape */ state = ST_GND; /* Should be the next state... */ if (*p >= '@' && *p <= '~') { *(q++) = *(p++) & 037; ++count; } else if (*p == '?') { *(q++) = 127; ++count; } else state = ST_ERROR; break; default: /* should we ? */ /* abort (); no, we should not */ state = ST_ERROR; break; } } *dest = q; *src = p; *output_count = count; return state != ST_ERROR; } #endif /* COLOR_SUPPORT */ void _rl_parse_colors(void) { #if defined (COLOR_SUPPORT) const char *p; /* Pointer to character being parsed */ char *buf; /* color_buf buffer pointer */ int state; /* State of parser */ int ind_no; /* Indicator number */ char label[3]; /* Indicator label */ COLOR_EXT_TYPE *ext; /* Extension we are working on */ p = sh_get_env_value ("LS_COLORS"); if (p == 0 || *p == '\0') { _rl_color_ext_list = NULL; return; } ext = NULL; strcpy (label, "??"); /* This is an overly conservative estimate, but any possible LS_COLORS string will *not* generate a color_buf longer than itself, so it is a safe way of allocating a buffer in advance. */ buf = color_buf = savestring (p); state = 1; while (state > 0) { switch (state) { case 1: /* First label character */ switch (*p) { case ':': ++p; break; case '*': /* Allocate new extension block and add to head of linked list (this way a later definition will override an earlier one, which can be useful for having terminal-specific defs override global). */ ext = (COLOR_EXT_TYPE *)xmalloc (sizeof *ext); ext->next = _rl_color_ext_list; _rl_color_ext_list = ext; ++p; ext->ext.string = buf; state = (get_funky_string (&buf, &p, true, &ext->ext.len) ? 4 : -1); break; case '\0': state = 0; /* Done! */ break; default: /* Assume it is file type label */ label[0] = *(p++); state = 2; break; } break; case 2: /* Second label character */ if (*p) { label[1] = *(p++); state = 3; } else state = -1; /* Error */ break; case 3: /* Equal sign after indicator label */ state = -1; /* Assume failure... */ if (*(p++) == '=')/* It *should* be... */ { for (ind_no = 0; indicator_name[ind_no] != NULL; ++ind_no) { if (STREQ (label, indicator_name[ind_no])) { _rl_color_indicator[ind_no].string = buf; state = (get_funky_string (&buf, &p, false, &_rl_color_indicator[ind_no].len) ? 1 : -1); break; } } if (state == -1) { _rl_errmsg ("LS_COLORS: unrecognized prefix: %s", label); /* recover from an unrecognized prefix */ while (p && *p && *p != ':') p++; if (p && *p == ':') state = 1; else if (p && *p == 0) state = 0; } } break; case 4: /* Equal sign after *.ext */ if (*(p++) == '=') { ext->seq.string = buf; state = (get_funky_string (&buf, &p, false, &ext->seq.len) ? 1 : -1); } else state = -1; /* XXX - recover here as with an unrecognized prefix? */ if (state == -1 && ext->ext.string) _rl_errmsg ("LS_COLORS: syntax error: %s", ext->ext.string); break; } } if (state < 0) { COLOR_EXT_TYPE *e; COLOR_EXT_TYPE *e2; _rl_errmsg ("unparsable value for LS_COLORS environment variable"); free (color_buf); for (e = _rl_color_ext_list; e != NULL; /* empty */) { e2 = e; e = e->next; free (e2); } _rl_color_ext_list = NULL; _rl_colored_stats = 0; /* can't have colored stats without colors */ } #else /* !COLOR_SUPPORT */ ; #endif /* !COLOR_SUPPORT */ } readline-8.0/signals.c000644 000436 000000 00000046375 13256774721 015061 0ustar00chetwheel000000 000000 /* signals.c -- signal handling support for readline. */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include /* Just for NULL. Yuck. */ #include #include #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ /* System-specific feature definitions and include files. */ #include "rldefs.h" #if defined (GWINSZ_IN_SYS_IOCTL) # include #endif /* GWINSZ_IN_SYS_IOCTL */ /* Some standard library routines. */ #include "readline.h" #include "history.h" #include "rlprivate.h" #if defined (HANDLE_SIGNALS) #if !defined (RETSIGTYPE) # if defined (VOID_SIGHANDLER) # define RETSIGTYPE void # else # define RETSIGTYPE int # endif /* !VOID_SIGHANDLER */ #endif /* !RETSIGTYPE */ #if defined (VOID_SIGHANDLER) # define SIGHANDLER_RETURN return #else # define SIGHANDLER_RETURN return (0) #endif /* This typedef is equivalent to the one for Function; it allows us to say SigHandler *foo = signal (SIGKILL, SIG_IGN); */ typedef RETSIGTYPE SigHandler (); #if defined (HAVE_POSIX_SIGNALS) typedef struct sigaction sighandler_cxt; # define rl_sigaction(s, nh, oh) sigaction(s, nh, oh) #else typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt; # define sigemptyset(m) #endif /* !HAVE_POSIX_SIGNALS */ #ifndef SA_RESTART # define SA_RESTART 0 #endif static SigHandler *rl_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *)); static void rl_maybe_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *)); static void rl_maybe_restore_sighandler PARAMS((int, sighandler_cxt *)); static RETSIGTYPE rl_signal_handler PARAMS((int)); static RETSIGTYPE _rl_handle_signal PARAMS((int)); /* Exported variables for use by applications. */ /* If non-zero, readline will install its own signal handlers for SIGINT, SIGTERM, SIGHUP, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU. */ int rl_catch_signals = 1; /* If non-zero, readline will install a signal handler for SIGWINCH. */ #ifdef SIGWINCH int rl_catch_sigwinch = 1; #else int rl_catch_sigwinch = 0; /* for the readline state struct in readline.c */ #endif /* Private variables. */ int _rl_interrupt_immediately = 0; int volatile _rl_caught_signal = 0; /* should be sig_atomic_t, but that requires including everywhere */ /* If non-zero, print characters corresponding to received signals as long as the user has indicated his desire to do so (_rl_echo_control_chars). */ int _rl_echoctl = 0; int _rl_intr_char = 0; int _rl_quit_char = 0; int _rl_susp_char = 0; static int signals_set_flag; static int sigwinch_set_flag; #if defined (HAVE_POSIX_SIGNALS) sigset_t _rl_orig_sigset; #endif /* !HAVE_POSIX_SIGNALS */ /* **************************************************************** */ /* */ /* Signal Handling */ /* */ /* **************************************************************** */ static sighandler_cxt old_int, old_term, old_hup, old_alrm, old_quit; #if defined (SIGTSTP) static sighandler_cxt old_tstp, old_ttou, old_ttin; #endif #if defined (SIGWINCH) static sighandler_cxt old_winch; #endif _rl_sigcleanup_func_t *_rl_sigcleanup; void *_rl_sigcleanarg; /* Readline signal handler functions. */ /* Called from RL_CHECK_SIGNALS() macro */ RETSIGTYPE _rl_signal_handler (int sig) { _rl_caught_signal = 0; /* XXX */ #if defined (SIGWINCH) if (sig == SIGWINCH) { rl_resize_terminal (); /* XXX - experimental for now */ /* Call a signal hook because though we called the original signal handler in rl_sigwinch_handler below, we will not resend the signal to ourselves. */ if (rl_signal_event_hook) (*rl_signal_event_hook) (); } else #endif _rl_handle_signal (sig); SIGHANDLER_RETURN; } static RETSIGTYPE rl_signal_handler (int sig) { if (_rl_interrupt_immediately) { _rl_interrupt_immediately = 0; _rl_handle_signal (sig); } else _rl_caught_signal = sig; SIGHANDLER_RETURN; } static RETSIGTYPE _rl_handle_signal (int sig) { #if defined (HAVE_POSIX_SIGNALS) sigset_t set; #else /* !HAVE_POSIX_SIGNALS */ # if defined (HAVE_BSD_SIGNALS) long omask; # else /* !HAVE_BSD_SIGNALS */ sighandler_cxt dummy_cxt; /* needed for rl_set_sighandler call */ # endif /* !HAVE_BSD_SIGNALS */ #endif /* !HAVE_POSIX_SIGNALS */ RL_SETSTATE(RL_STATE_SIGHANDLER); #if !defined (HAVE_BSD_SIGNALS) && !defined (HAVE_POSIX_SIGNALS) /* Since the signal will not be blocked while we are in the signal handler, ignore it until rl_clear_signals resets the catcher. */ # if defined (SIGALRM) if (sig == SIGINT || sig == SIGALRM) # else if (sig == SIGINT) # endif rl_set_sighandler (sig, SIG_IGN, &dummy_cxt); #endif /* !HAVE_BSD_SIGNALS && !HAVE_POSIX_SIGNALS */ /* If there's a sig cleanup function registered, call it and `deregister' the cleanup function to avoid multiple calls */ if (_rl_sigcleanup) { (*_rl_sigcleanup) (sig, _rl_sigcleanarg); _rl_sigcleanup = 0; _rl_sigcleanarg = 0; } switch (sig) { case SIGINT: _rl_reset_completion_state (); rl_free_line_state (); #if defined (READLINE_CALLBACKS) rl_callback_sigcleanup (); #endif /* FALLTHROUGH */ #if defined (SIGTSTP) case SIGTSTP: case SIGTTIN: # if defined (HAVE_POSIX_SIGNALS) /* Block SIGTTOU so we can restore the terminal settings to something sane without stopping on SIGTTOU if we have been placed into the background. Even trying to get the current terminal pgrp with tcgetpgrp() will generate SIGTTOU, so we don't bother. Don't bother doing this if we've been stopped on SIGTTOU; it's aready too late. */ sigemptyset (&set); sigaddset (&set, SIGTTOU); sigprocmask (SIG_BLOCK, &set, (sigset_t *)NULL); # endif case SIGTTOU: #endif /* SIGTSTP */ case SIGTERM: #if defined (SIGHUP) case SIGHUP: #endif #if defined (SIGALRM) case SIGALRM: #endif #if defined (SIGQUIT) case SIGQUIT: #endif rl_echo_signal_char (sig); rl_cleanup_after_signal (); #if defined (HAVE_POSIX_SIGNALS) # if defined (SIGTSTP) /* Unblock SIGTTOU blocked above */ if (sig == SIGTTIN || sig == SIGTSTP) sigprocmask (SIG_UNBLOCK, &set, (sigset_t *)NULL); # endif sigemptyset (&set); sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set); sigdelset (&set, sig); #else /* !HAVE_POSIX_SIGNALS */ # if defined (HAVE_BSD_SIGNALS) omask = sigblock (0); # endif /* HAVE_BSD_SIGNALS */ #endif /* !HAVE_POSIX_SIGNALS */ #if defined (__EMX__) signal (sig, SIG_ACK); #endif #if defined (HAVE_KILL) kill (getpid (), sig); #else raise (sig); /* assume we have raise */ #endif /* Let the signal that we just sent through. */ #if defined (HAVE_POSIX_SIGNALS) sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL); #else /* !HAVE_POSIX_SIGNALS */ # if defined (HAVE_BSD_SIGNALS) sigsetmask (omask & ~(sigmask (sig))); # endif /* HAVE_BSD_SIGNALS */ #endif /* !HAVE_POSIX_SIGNALS */ rl_reset_after_signal (); } RL_UNSETSTATE(RL_STATE_SIGHANDLER); SIGHANDLER_RETURN; } #if defined (SIGWINCH) static RETSIGTYPE rl_sigwinch_handler (int sig) { SigHandler *oh; #if defined (MUST_REINSTALL_SIGHANDLERS) sighandler_cxt dummy_winch; /* We don't want to change old_winch -- it holds the state of SIGWINCH disposition set by the calling application. We need this state because we call the application's SIGWINCH handler after updating our own idea of the screen size. */ rl_set_sighandler (SIGWINCH, rl_sigwinch_handler, &dummy_winch); #endif RL_SETSTATE(RL_STATE_SIGHANDLER); _rl_caught_signal = sig; /* If another sigwinch handler has been installed, call it. */ oh = (SigHandler *)old_winch.sa_handler; if (oh && oh != (SigHandler *)SIG_IGN && oh != (SigHandler *)SIG_DFL) (*oh) (sig); RL_UNSETSTATE(RL_STATE_SIGHANDLER); SIGHANDLER_RETURN; } #endif /* SIGWINCH */ /* Functions to manage signal handling. */ #if !defined (HAVE_POSIX_SIGNALS) static int rl_sigaction (int sig, sighandler_cxt *nh, sighandler_cxt *oh) { oh->sa_handler = signal (sig, nh->sa_handler); return 0; } #endif /* !HAVE_POSIX_SIGNALS */ /* Set up a readline-specific signal handler, saving the old signal information in OHANDLER. Return the old signal handler, like signal(). */ static SigHandler * rl_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler) { sighandler_cxt old_handler; #if defined (HAVE_POSIX_SIGNALS) struct sigaction act; act.sa_handler = handler; # if defined (SIGWINCH) act.sa_flags = (sig == SIGWINCH) ? SA_RESTART : 0; # else act.sa_flags = 0; # endif /* SIGWINCH */ sigemptyset (&act.sa_mask); sigemptyset (&ohandler->sa_mask); sigaction (sig, &act, &old_handler); #else old_handler.sa_handler = (SigHandler *)signal (sig, handler); #endif /* !HAVE_POSIX_SIGNALS */ /* XXX -- assume we have memcpy */ /* If rl_set_signals is called twice in a row, don't set the old handler to rl_signal_handler, because that would cause infinite recursion. */ if (handler != rl_signal_handler || old_handler.sa_handler != rl_signal_handler) memcpy (ohandler, &old_handler, sizeof (sighandler_cxt)); return (ohandler->sa_handler); } /* Set disposition of SIG to HANDLER, returning old state in OHANDLER. Don't change disposition if OHANDLER indicates the signal was ignored. */ static void rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler) { sighandler_cxt dummy; SigHandler *oh; sigemptyset (&dummy.sa_mask); dummy.sa_flags = 0; oh = rl_set_sighandler (sig, handler, ohandler); if (oh == (SigHandler *)SIG_IGN) rl_sigaction (sig, ohandler, &dummy); } /* Set the disposition of SIG to HANDLER, if HANDLER->sa_handler indicates the signal was not being ignored. MUST only be called for signals whose disposition was changed using rl_maybe_set_sighandler or for which the SIG_IGN check was performed inline (e.g., SIGALRM below). */ static void rl_maybe_restore_sighandler (int sig, sighandler_cxt *handler) { sighandler_cxt dummy; sigemptyset (&dummy.sa_mask); dummy.sa_flags = 0; if (handler->sa_handler != SIG_IGN) rl_sigaction (sig, handler, &dummy); } int rl_set_signals (void) { sighandler_cxt dummy; SigHandler *oh; #if defined (HAVE_POSIX_SIGNALS) static int sigmask_set = 0; static sigset_t bset, oset; #endif #if defined (HAVE_POSIX_SIGNALS) if (rl_catch_signals && sigmask_set == 0) { sigemptyset (&bset); sigaddset (&bset, SIGINT); sigaddset (&bset, SIGTERM); #if defined (SIGHUP) sigaddset (&bset, SIGHUP); #endif #if defined (SIGQUIT) sigaddset (&bset, SIGQUIT); #endif #if defined (SIGALRM) sigaddset (&bset, SIGALRM); #endif #if defined (SIGTSTP) sigaddset (&bset, SIGTSTP); #endif #if defined (SIGTTIN) sigaddset (&bset, SIGTTIN); #endif #if defined (SIGTTOU) sigaddset (&bset, SIGTTOU); #endif sigmask_set = 1; } #endif /* HAVE_POSIX_SIGNALS */ if (rl_catch_signals && signals_set_flag == 0) { #if defined (HAVE_POSIX_SIGNALS) sigemptyset (&_rl_orig_sigset); sigprocmask (SIG_BLOCK, &bset, &_rl_orig_sigset); #endif rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int); rl_maybe_set_sighandler (SIGTERM, rl_signal_handler, &old_term); #if defined (SIGHUP) rl_maybe_set_sighandler (SIGHUP, rl_signal_handler, &old_hup); #endif #if defined (SIGQUIT) rl_maybe_set_sighandler (SIGQUIT, rl_signal_handler, &old_quit); #endif #if defined (SIGALRM) oh = rl_set_sighandler (SIGALRM, rl_signal_handler, &old_alrm); if (oh == (SigHandler *)SIG_IGN) rl_sigaction (SIGALRM, &old_alrm, &dummy); #if defined (HAVE_POSIX_SIGNALS) && defined (SA_RESTART) /* If the application using readline has already installed a signal handler with SA_RESTART, SIGALRM will cause reads to be restarted automatically, so readline should just get out of the way. Since we tested for SIG_IGN above, we can just test for SIG_DFL here. */ if (oh != (SigHandler *)SIG_DFL && (old_alrm.sa_flags & SA_RESTART)) rl_sigaction (SIGALRM, &old_alrm, &dummy); #endif /* HAVE_POSIX_SIGNALS */ #endif /* SIGALRM */ #if defined (SIGTSTP) rl_maybe_set_sighandler (SIGTSTP, rl_signal_handler, &old_tstp); #endif /* SIGTSTP */ #if defined (SIGTTOU) rl_maybe_set_sighandler (SIGTTOU, rl_signal_handler, &old_ttou); #endif /* SIGTTOU */ #if defined (SIGTTIN) rl_maybe_set_sighandler (SIGTTIN, rl_signal_handler, &old_ttin); #endif /* SIGTTIN */ signals_set_flag = 1; #if defined (HAVE_POSIX_SIGNALS) sigprocmask (SIG_SETMASK, &_rl_orig_sigset, (sigset_t *)NULL); #endif } else if (rl_catch_signals == 0) { #if defined (HAVE_POSIX_SIGNALS) sigemptyset (&_rl_orig_sigset); sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &_rl_orig_sigset); #endif } #if defined (SIGWINCH) if (rl_catch_sigwinch && sigwinch_set_flag == 0) { rl_maybe_set_sighandler (SIGWINCH, rl_sigwinch_handler, &old_winch); sigwinch_set_flag = 1; } #endif /* SIGWINCH */ return 0; } int rl_clear_signals (void) { sighandler_cxt dummy; if (rl_catch_signals && signals_set_flag == 1) { /* Since rl_maybe_set_sighandler doesn't override a SIG_IGN handler, we should in theory not have to restore a handler where old_xxx.sa_handler == SIG_IGN. That's what rl_maybe_restore_sighandler does. Fewer system calls should reduce readline's per-line overhead */ rl_maybe_restore_sighandler (SIGINT, &old_int); rl_maybe_restore_sighandler (SIGTERM, &old_term); #if defined (SIGHUP) rl_maybe_restore_sighandler (SIGHUP, &old_hup); #endif #if defined (SIGQUIT) rl_maybe_restore_sighandler (SIGQUIT, &old_quit); #endif #if defined (SIGALRM) rl_maybe_restore_sighandler (SIGALRM, &old_alrm); #endif #if defined (SIGTSTP) rl_maybe_restore_sighandler (SIGTSTP, &old_tstp); #endif /* SIGTSTP */ #if defined (SIGTTOU) rl_maybe_restore_sighandler (SIGTTOU, &old_ttou); #endif /* SIGTTOU */ #if defined (SIGTTIN) rl_maybe_restore_sighandler (SIGTTIN, &old_ttin); #endif /* SIGTTIN */ signals_set_flag = 0; } #if defined (SIGWINCH) if (rl_catch_sigwinch && sigwinch_set_flag == 1) { sigemptyset (&dummy.sa_mask); rl_sigaction (SIGWINCH, &old_winch, &dummy); sigwinch_set_flag = 0; } #endif return 0; } /* Clean up the terminal and readline state after catching a signal, before resending it to the calling application. */ void rl_cleanup_after_signal (void) { _rl_clean_up_for_exit (); if (rl_deprep_term_function) (*rl_deprep_term_function) (); rl_clear_pending_input (); rl_clear_signals (); } /* Reset the terminal and readline state after a signal handler returns. */ void rl_reset_after_signal (void) { if (rl_prep_term_function) (*rl_prep_term_function) (_rl_meta_flag); rl_set_signals (); } /* Free up the readline variable line state for the current line (undo list, any partial history entry, any keyboard macros in progress, and any numeric arguments in process) after catching a signal, before calling rl_cleanup_after_signal(). */ void rl_free_line_state (void) { register HIST_ENTRY *entry; rl_free_undo_list (); entry = current_history (); if (entry) entry->data = (char *)NULL; _rl_kill_kbd_macro (); rl_clear_message (); _rl_reset_argument (); } int rl_pending_signal (void) { return (_rl_caught_signal); } void rl_check_signals (void) { RL_CHECK_SIGNALS (); } #endif /* HANDLE_SIGNALS */ /* **************************************************************** */ /* */ /* SIGINT Management */ /* */ /* **************************************************************** */ #if defined (HAVE_POSIX_SIGNALS) static sigset_t sigint_set, sigint_oset; static sigset_t sigwinch_set, sigwinch_oset; #else /* !HAVE_POSIX_SIGNALS */ # if defined (HAVE_BSD_SIGNALS) static int sigint_oldmask; static int sigwinch_oldmask; # endif /* HAVE_BSD_SIGNALS */ #endif /* !HAVE_POSIX_SIGNALS */ static int sigint_blocked; static int sigwinch_blocked; /* Cause SIGINT to not be delivered until the corresponding call to release_sigint(). */ void _rl_block_sigint (void) { if (sigint_blocked) return; sigint_blocked = 1; } /* Allow SIGINT to be delivered. */ void _rl_release_sigint (void) { if (sigint_blocked == 0) return; sigint_blocked = 0; RL_CHECK_SIGNALS (); } /* Cause SIGWINCH to not be delivered until the corresponding call to release_sigwinch(). */ void _rl_block_sigwinch (void) { if (sigwinch_blocked) return; #if defined (SIGWINCH) #if defined (HAVE_POSIX_SIGNALS) sigemptyset (&sigwinch_set); sigemptyset (&sigwinch_oset); sigaddset (&sigwinch_set, SIGWINCH); sigprocmask (SIG_BLOCK, &sigwinch_set, &sigwinch_oset); #else /* !HAVE_POSIX_SIGNALS */ # if defined (HAVE_BSD_SIGNALS) sigwinch_oldmask = sigblock (sigmask (SIGWINCH)); # else /* !HAVE_BSD_SIGNALS */ # if defined (HAVE_USG_SIGHOLD) sighold (SIGWINCH); # endif /* HAVE_USG_SIGHOLD */ # endif /* !HAVE_BSD_SIGNALS */ #endif /* !HAVE_POSIX_SIGNALS */ #endif /* SIGWINCH */ sigwinch_blocked = 1; } /* Allow SIGWINCH to be delivered. */ void _rl_release_sigwinch (void) { if (sigwinch_blocked == 0) return; #if defined (SIGWINCH) #if defined (HAVE_POSIX_SIGNALS) sigprocmask (SIG_SETMASK, &sigwinch_oset, (sigset_t *)NULL); #else # if defined (HAVE_BSD_SIGNALS) sigsetmask (sigwinch_oldmask); # else /* !HAVE_BSD_SIGNALS */ # if defined (HAVE_USG_SIGHOLD) sigrelse (SIGWINCH); # endif /* HAVE_USG_SIGHOLD */ # endif /* !HAVE_BSD_SIGNALS */ #endif /* !HAVE_POSIX_SIGNALS */ #endif /* SIGWINCH */ sigwinch_blocked = 0; } /* **************************************************************** */ /* */ /* Echoing special control characters */ /* */ /* **************************************************************** */ void rl_echo_signal_char (int sig) { char cstr[3]; int cslen, c; if (_rl_echoctl == 0 || _rl_echo_control_chars == 0) return; switch (sig) { case SIGINT: c = _rl_intr_char; break; #if defined (SIGQUIT) case SIGQUIT: c = _rl_quit_char; break; #endif #if defined (SIGTSTP) case SIGTSTP: c = _rl_susp_char; break; #endif default: return; } if (CTRL_CHAR (c) || c == RUBOUT) { cstr[0] = '^'; cstr[1] = CTRL_CHAR (c) ? UNCTRL (c) : '?'; cstr[cslen = 2] = '\0'; } else { cstr[0] = c; cstr[cslen = 1] = '\0'; } _rl_output_some_chars (cstr, cslen); } readline-8.0/configure000775 000436 000000 00000670001 13406531404 015135 0ustar00chetwheel000000 000000 #! /bin/sh # From configure.ac for Readline 8.0, version 2.85. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for readline 8.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: bug-readline@gnu.org about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='readline' PACKAGE_TARNAME='readline' PACKAGE_VERSION='8.0' PACKAGE_STRING='readline 8.0' PACKAGE_BUGREPORT='bug-readline@gnu.org' PACKAGE_URL='' ac_unique_file="readline.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS TERMCAP_PKG_CONFIG_LIB TERMCAP_LIB LIBVERSION ARFLAGS LOCAL_DEFS LOCAL_LDFLAGS LOCAL_CFLAGS BUILD_DIR EXAMPLES_INSTALL_TARGET SHARED_INSTALL_TARGET STATIC_INSTALL_TARGET SHARED_TARGET STATIC_TARGET SHLIB_MINOR SHLIB_MAJOR SHLIB_LIBS SHLIB_DLLVERSION SHLIB_LIBVERSION SHLIB_LIBSUFF SHLIB_LIBPREF SHLIB_DOT SHLIB_XLDFLAGS SHLIB_STATUS SHOBJ_STATUS SHOBJ_LIBS SHOBJ_XLDFLAGS SHOBJ_LDFLAGS SHOBJ_LD SHOBJ_CFLAGS SHOBJ_CC LIBOBJS MAKE_SHELL RANLIB AR INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM EGREP GREP CPP OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC SET_MAKE CROSS_COMPILE host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_curses enable_multibyte enable_shared enable_static enable_install_examples enable_largefile ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures readline 8.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/readline] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of readline 8.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-multibyte enable multibyte characters if OS supports them --enable-shared build shared libraries [[default=YES]] --enable-static build static libraries [[default=YES]] --disable-install-examples don't install examples [[default=install]] --disable-largefile omit support for large files Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-curses use the curses library instead of the termcap library Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF readline configure 8.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ----------------------------------- ## ## Report this to bug-readline@gnu.org ## ## ----------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. ac_fn_c_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by readline $as_me 8.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in ./support "$srcdir"/./support; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in ./support \"$srcdir\"/./support" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ac_config_headers="$ac_config_headers config.h" LIBVERSION=8.0 # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac opt_curses=no # Check whether --with-curses was given. if test "${with_curses+set}" = set; then : withval=$with_curses; opt_curses=$withval fi if test "$opt_curses" = "yes"; then prefer_curses=yes fi opt_multibyte=yes opt_static_libs=yes opt_shared_libs=yes opt_install_examples=yes # Check whether --enable-multibyte was given. if test "${enable_multibyte+set}" = set; then : enableval=$enable_multibyte; opt_multibyte=$enableval fi # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; opt_shared_libs=$enableval fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; opt_static_libs=$enableval fi # Check whether --enable-install-examples was given. if test "${enable_install_examples+set}" = set; then : enableval=$enable_install_examples; opt_install_examples=$enableval fi if test $opt_multibyte = no; then $as_echo "#define NO_MULTIBYTE_SUPPORT 1" >>confdefs.h fi CROSS_COMPILE= if test "x$cross_compiling" = "xyes"; then case "${host}" in *-cygwin*) cross_cache=${srcdir}/cross-build/cygwin.cache ;; *-mingw*) cross_cache=${srcdir}/cross-build/mingw.cache ;; i[3456]86-*-beos*) cross_cache=${srcdir}/cross-build/x86-beos.cache ;; *) echo "configure: cross-compiling for $host is not supported" >&2 ;; esac if test -n "${cross_cache}" && test -r "${cross_cache}"; then echo "loading cross-build cache file ${cross_cache}" . ${cross_cache} fi unset cross_cache CROSS_COMPILE='-DCROSS_COMPILING' fi echo "" echo "Beginning configuration for readline-$LIBVERSION for ${host_cpu}-${host_vendor}-${host_os}" echo "" # We want these before the checks, so the checks can modify their values. test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" if test "x$ac_cv_header_minix_config_h" = xyes; then : MINIX=yes else MINIX= fi if test "$MINIX" = yes; then $as_echo "#define _POSIX_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h $as_echo "#define _MINIX 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } if ${ac_cv_safe_to_define___extensions__+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h $as_echo "#define _ALL_SOURCE 1" >>confdefs.h $as_echo "#define _GNU_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h # If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS. test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O" if test $ac_cv_c_compiler_gnu = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 $as_echo_n "checking whether $CC needs -traditional... " >&6; } if ${ac_cv_prog_gcc_traditional+:} false; then : $as_echo_n "(cached) " >&6 else ac_pattern="Autoconf.*'x'" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes else ac_cv_prog_gcc_traditional=no fi rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 $as_echo "$ac_cv_prog_gcc_traditional" >&6; } if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi test -n "$ARFLAGS" || ARFLAGS="cr" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi MAKE_SHELL=/bin/sh { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for function prototypes" >&5 $as_echo_n "checking for function prototypes... " >&6; } if test "$ac_cv_prog_cc_c89" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define PROTOTYPES 1" >>confdefs.h $as_echo "#define __PROTOTYPES 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 $as_echo_n "checking whether char is unsigned... " >&6; } if ${ac_cv_c_char_unsigned+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !(((char) -1) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_char_unsigned=no else ac_cv_c_char_unsigned=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 $as_echo "$ac_cv_c_char_unsigned" >&6; } if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 $as_echo_n "checking for working volatile... " >&6; } if ${ac_cv_c_volatile+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { volatile int x; int * volatile y = (int *) 0; return !x && !y; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_volatile=yes else ac_cv_c_volatile=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 $as_echo "$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then $as_echo "#define volatile /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define ssize_t int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 $as_echo_n "checking whether stat file-mode macros are broken... " >&6; } if ${ac_cv_header_stat_broken+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if defined S_ISBLK && defined S_IFDIR extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; #endif #if defined S_ISBLK && defined S_IFCHR extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; #endif #if defined S_ISLNK && defined S_IFREG extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; #endif #if defined S_ISSOCK && defined S_IFREG extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stat_broken=no else ac_cv_header_stat_broken=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 $as_echo "$ac_cv_header_stat_broken" >&6; } if test $ac_cv_header_stat_broken = yes; then $as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if eval \${$as_ac_Header+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi for ac_func in fcntl kill lstat readlink do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in fnmatch memmove pselect putenv select setenv setlocale \ strcasecmp strpbrk tcgetattr vsnprintf do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in isascii isxdigit do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in getpwent getpwnam getpwuid do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 $as_echo_n "checking for uid_t in sys/types.h... " >&6; } if ${ac_cv_type_uid_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "uid_t" >/dev/null 2>&1; then : ac_cv_type_uid_t=yes else ac_cv_type_uid_t=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 $as_echo "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then $as_echo "#define uid_t int" >>confdefs.h $as_echo "#define gid_t int" >>confdefs.h fi for ac_header in unistd.h do : ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" if test "x$ac_cv_header_unistd_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UNISTD_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5 $as_echo_n "checking for working chown... " >&6; } if ${ac_cv_func_chown_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_chown_works=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #include int main () { char *f = "conftest.chown"; struct stat before, after; if (creat (f, 0600) < 0) return 1; if (stat (f, &before) < 0) return 1; if (chown (f, (uid_t) -1, (gid_t) -1) == -1) return 1; if (stat (f, &after) < 0) return 1; return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_chown_works=yes else ac_cv_func_chown_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.chown fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5 $as_echo "$ac_cv_func_chown_works" >&6; } if test $ac_cv_func_chown_works = yes; then $as_echo "#define HAVE_CHOWN 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 $as_echo_n "checking for working strcoll... " >&6; } if ${ac_cv_func_strcoll_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_strcoll_works=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { return (strcoll ("abc", "def") >= 0 || strcoll ("ABC", "DEF") >= 0 || strcoll ("123", "456") >= 0) ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_strcoll_works=yes else ac_cv_func_strcoll_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 $as_echo "$ac_cv_func_strcoll_works" >&6; } if test $ac_cv_func_strcoll_works = yes; then $as_echo "#define HAVE_STRCOLL 1" >>confdefs.h fi for ac_header in fcntl.h unistd.h stdlib.h varargs.h stdarg.h stdbool.h \ string.h strings.h \ limits.h locale.h pwd.h memory.h termcap.h termios.h termio.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/ioctl.h sys/pte.h sys/stream.h sys/select.h sys/file.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/ptem.h do : ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" " #if HAVE_SYS_STREAM_H # include #endif " if test "x$ac_cv_header_sys_ptem_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_PTEM_H 1 _ACEOF fi done # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5 $as_echo_n "checking for type of signal functions... " >&6; } if ${bash_cv_signal_vintage+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { sigset_t ss; struct sigaction sa; sigemptyset(&ss); sigsuspend(&ss); sigaction(SIGINT, &sa, (struct sigaction *) 0); sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : bash_cv_signal_vintage=posix else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int mask = sigmask(SIGINT); sigsetmask(mask); sigblock(mask); sigpause(mask); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : bash_cv_signal_vintage=4.2bsd else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include RETSIGTYPE foo() { } int main () { int mask = sigmask(SIGINT); sigset(SIGINT, foo); sigrelse(SIGINT); sighold(SIGINT); sigpause(SIGINT); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : bash_cv_signal_vintage=svr3 else bash_cv_signal_vintage=v7 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_signal_vintage" >&5 $as_echo "$bash_cv_signal_vintage" >&6; } if test "$bash_cv_signal_vintage" = posix; then $as_echo "#define HAVE_POSIX_SIGNALS 1" >>confdefs.h elif test "$bash_cv_signal_vintage" = "4.2bsd"; then $as_echo "#define HAVE_BSD_SIGNALS 1" >>confdefs.h elif test "$bash_cv_signal_vintage" = svr3; then $as_echo "#define HAVE_USG_SIGHOLD 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5 $as_echo_n "checking if signal handlers must be reinstalled when invoked... " >&6; } if ${bash_cv_must_reinstall_sighandlers+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;} bash_cv_must_reinstall_sighandlers=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef HAVE_UNISTD_H #include #endif typedef RETSIGTYPE sigfunc(); volatile int nsigint; #ifdef HAVE_POSIX_SIGNALS sigfunc * set_signal_handler(sig, handler) int sig; sigfunc *handler; { struct sigaction act, oact; act.sa_handler = handler; act.sa_flags = 0; sigemptyset (&act.sa_mask); sigemptyset (&oact.sa_mask); sigaction (sig, &act, &oact); return (oact.sa_handler); } #else #define set_signal_handler(s, h) signal(s, h) #endif RETSIGTYPE sigint(s) int s; { nsigint++; } main() { nsigint = 0; set_signal_handler(SIGINT, sigint); kill((int)getpid(), SIGINT); kill((int)getpid(), SIGINT); exit(nsigint != 2); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : bash_cv_must_reinstall_sighandlers=no else bash_cv_must_reinstall_sighandlers=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_must_reinstall_sighandlers" >&5 $as_echo "$bash_cv_must_reinstall_sighandlers" >&6; } if test $bash_cv_must_reinstall_sighandlers = yes; then $as_echo "#define MUST_REINSTALL_SIGHANDLERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 $as_echo_n "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; } if ${bash_cv_func_sigsetjmp+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 $as_echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;} bash_cv_func_sigsetjmp=missing else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef HAVE_UNISTD_H #include #endif #include #include #include main() { #if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) exit (1); #else int code; sigset_t set, oset; sigjmp_buf xx; /* get the mask */ sigemptyset(&set); sigemptyset(&oset); sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); /* save it */ code = sigsetjmp(xx, 1); if (code) exit(0); /* could get sigmask and compare to oset here. */ /* change it */ sigaddset(&set, SIGINT); sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); /* and siglongjmp */ siglongjmp(xx, 10); exit(1); #endif } _ACEOF if ac_fn_c_try_run "$LINENO"; then : bash_cv_func_sigsetjmp=present else bash_cv_func_sigsetjmp=missing fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sigsetjmp" >&5 $as_echo "$bash_cv_func_sigsetjmp" >&6; } if test $bash_cv_func_sigsetjmp = present; then $as_echo "#define HAVE_POSIX_SIGSETJMP 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lstat" >&5 $as_echo_n "checking for lstat... " >&6; } if ${bash_cv_func_lstat+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { lstat(".",(struct stat *)0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : bash_cv_func_lstat=yes else bash_cv_func_lstat=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_lstat" >&5 $as_echo "$bash_cv_func_lstat" >&6; } if test $bash_cv_func_lstat = yes; then $as_echo "#define HAVE_LSTAT 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether or not strcoll and strcmp differ" >&5 $as_echo_n "checking whether or not strcoll and strcmp differ... " >&6; } if ${bash_cv_func_strcoll_broken+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;} bash_cv_func_strcoll_broken=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if defined (HAVE_LOCALE_H) #include #endif main(c, v) int c; char *v[]; { int r1, r2; char *deflocale, *defcoll; #ifdef HAVE_SETLOCALE deflocale = setlocale(LC_ALL, ""); defcoll = setlocale(LC_COLLATE, ""); #endif #ifdef HAVE_STRCOLL /* These two values are taken from tests/glob-test. */ r1 = strcoll("abd", "aXd"); #else r1 = 0; #endif r2 = strcmp("abd", "aXd"); /* These two should both be greater than 0. It is permissible for a system to return different values, as long as the sign is the same. */ /* Exit with 1 (failure) if these two values are both > 0, since this tests whether strcoll(3) is broken with respect to strcmp(3) in the default locale. */ exit (r1 > 0 && r2 > 0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : bash_cv_func_strcoll_broken=yes else bash_cv_func_strcoll_broken=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5 $as_echo "$bash_cv_func_strcoll_broken" >&6; } if test $bash_cv_func_strcoll_broken = yes; then $as_echo "#define STRCOLL_BROKEN 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the ctype macros accept non-ascii characters" >&5 $as_echo_n "checking whether the ctype macros accept non-ascii characters... " >&6; } if ${bash_cv_func_ctype_nonascii+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&2;} bash_cv_func_ctype_nonascii=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef HAVE_LOCALE_H #include #endif #include #include main(c, v) int c; char *v[]; { char *deflocale; unsigned char x; int r1, r2; #ifdef HAVE_SETLOCALE /* We take a shot here. If that locale is not known, try the system default. We try this one because '\342' (226) is known to be a printable character in that locale. */ deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); if (deflocale == 0) deflocale = setlocale(LC_ALL, ""); #endif x = '\342'; r1 = isprint(x); x -= 128; r2 = isprint(x); exit (r1 == 0 || r2 == 0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : bash_cv_func_ctype_nonascii=yes else bash_cv_func_ctype_nonascii=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_ctype_nonascii" >&5 $as_echo "$bash_cv_func_ctype_nonascii" >&6; } if test $bash_cv_func_ctype_nonascii = yes; then $as_echo "#define CTYPE_NON_ASCII 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpw functions are declared in pwd.h" >&5 $as_echo_n "checking whether getpw functions are declared in pwd.h... " >&6; } if ${bash_cv_getpw_declared+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef HAVE_UNISTD_H # include #endif #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "getpwuid" >/dev/null 2>&1; then : bash_cv_getpw_declared=yes else bash_cv_getpw_declared=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getpw_declared" >&5 $as_echo "$bash_cv_getpw_declared" >&6; } if test $bash_cv_getpw_declared = yes; then $as_echo "#define HAVE_GETPW_DECLS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5 $as_echo_n "checking whether termios.h defines TIOCGWINSZ... " >&6; } if ${ac_cv_sys_tiocgwinsz_in_termios_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifdef TIOCGWINSZ yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : ac_cv_sys_tiocgwinsz_in_termios_h=yes else ac_cv_sys_tiocgwinsz_in_termios_h=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 $as_echo "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 $as_echo_n "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; } if ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifdef TIOCGWINSZ yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes else ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 $as_echo "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then $as_echo "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t in signal.h" >&5 $as_echo_n "checking for sig_atomic_t in signal.h... " >&6; } if ${ac_cv_have_sig_atomic_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { sig_atomic_t x; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_have_sig_atomic_t=yes else ac_cv_have_sig_atomic_t=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5 $as_echo "$ac_cv_have_sig_atomic_t" >&6; } if test "$ac_cv_have_sig_atomic_t" = "no" then ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "$ac_includes_default" if test "x$ac_cv_type_sig_atomic_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define sig_atomic_t int _ACEOF fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether signal handlers are of type void" >&5 $as_echo_n "checking whether signal handlers are of type void... " >&6; } if ${bash_cv_void_sighandler+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifdef signal #undef signal #endif #ifdef __cplusplus extern "C" #endif void (*signal ()) (); int main () { int i; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_void_sighandler=yes else bash_cv_void_sighandler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_void_sighandler" >&5 $as_echo "$bash_cv_void_sighandler" >&6; } if test $bash_cv_void_sighandler = yes; then $as_echo "#define VOID_SIGHANDLER 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIOCSTAT in sys/ioctl.h" >&5 $as_echo_n "checking for TIOCSTAT in sys/ioctl.h... " >&6; } if ${bash_cv_tiocstat_in_ioctl+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { int x = TIOCSTAT; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_tiocstat_in_ioctl=yes else bash_cv_tiocstat_in_ioctl=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_tiocstat_in_ioctl" >&5 $as_echo "$bash_cv_tiocstat_in_ioctl" >&6; } if test $bash_cv_tiocstat_in_ioctl = yes; then $as_echo "#define TIOCSTAT_IN_SYS_IOCTL 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FIONREAD in sys/ioctl.h" >&5 $as_echo_n "checking for FIONREAD in sys/ioctl.h... " >&6; } if ${bash_cv_fionread_in_ioctl+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { int x = FIONREAD; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_fionread_in_ioctl=yes else bash_cv_fionread_in_ioctl=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fionread_in_ioctl" >&5 $as_echo "$bash_cv_fionread_in_ioctl" >&6; } if test $bash_cv_fionread_in_ioctl = yes; then $as_echo "#define FIONREAD_IN_SYS_IOCTL 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for speed_t in sys/types.h" >&5 $as_echo_n "checking for speed_t in sys/types.h... " >&6; } if ${bash_cv_speed_t_in_sys_types+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { speed_t x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_speed_t_in_sys_types=yes else bash_cv_speed_t_in_sys_types=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_speed_t_in_sys_types" >&5 $as_echo "$bash_cv_speed_t_in_sys_types" >&6; } if test $bash_cv_speed_t_in_sys_types = yes; then $as_echo "#define SPEED_T_IN_SYS_TYPES 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct winsize in sys/ioctl.h and termios.h" >&5 $as_echo_n "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; } if ${bash_cv_struct_winsize_header+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct winsize x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_struct_winsize_header=ioctl_h else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct winsize x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_struct_winsize_header=termios_h else bash_cv_struct_winsize_header=other fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $bash_cv_struct_winsize_header = ioctl_h; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: sys/ioctl.h" >&5 $as_echo "sys/ioctl.h" >&6; } $as_echo "#define STRUCT_WINSIZE_IN_SYS_IOCTL 1" >>confdefs.h elif test $bash_cv_struct_winsize_header = termios_h; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: termios.h" >&5 $as_echo "termios.h" >&6; } $as_echo "#define STRUCT_WINSIZE_IN_TERMIOS 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_ino" >&5 $as_echo_n "checking for struct dirent.d_ino... " >&6; } if ${bash_cv_dirent_has_dino+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ #if defined(HAVE_DIRENT_H) # include #else # define dirent direct # ifdef HAVE_SYS_NDIR_H # include # endif /* SYSNDIR */ # ifdef HAVE_SYS_DIR_H # include # endif /* SYSDIR */ # ifdef HAVE_NDIR_H # include # endif #endif /* HAVE_DIRENT_H */ int main () { struct dirent d; int z; z = d.d_ino; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_dirent_has_dino=yes else bash_cv_dirent_has_dino=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_dino" >&5 $as_echo "$bash_cv_dirent_has_dino" >&6; } if test $bash_cv_dirent_has_dino = yes; then $as_echo "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_fileno" >&5 $as_echo_n "checking for struct dirent.d_fileno... " >&6; } if ${bash_cv_dirent_has_d_fileno+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ #if defined(HAVE_DIRENT_H) # include #else # define dirent direct # ifdef HAVE_SYS_NDIR_H # include # endif /* SYSNDIR */ # ifdef HAVE_SYS_DIR_H # include # endif /* SYSDIR */ # ifdef HAVE_NDIR_H # include # endif #endif /* HAVE_DIRENT_H */ int main () { struct dirent d; int z; z = d.d_fileno; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_dirent_has_d_fileno=yes else bash_cv_dirent_has_d_fileno=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_fileno" >&5 $as_echo "$bash_cv_dirent_has_d_fileno" >&6; } if test $bash_cv_dirent_has_d_fileno = yes; then $as_echo "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h fi for ac_header in libaudit.h do : ac_fn_c_check_header_mongrel "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default" if test "x$ac_cv_header_libaudit_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBAUDIT_H 1 _ACEOF fi done ac_fn_c_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include " if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_AUDIT_USER_TTY $ac_have_decl _ACEOF case "$host_os" in aix*) prefer_curses=yes ;; esac if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 $as_echo_n "checking which library has the termcap functions... " >&6; } _bash_needmsg= fi if ${bash_cv_termcap_lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent" if test "x$ac_cv_func_tgetent" = xyes; then : bash_cv_termcap_lib=libc else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 $as_echo_n "checking for tgetent in -ltermcap... " >&6; } if ${ac_cv_lib_termcap_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltermcap $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tgetent (); int main () { return tgetent (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_termcap_tgetent=yes else ac_cv_lib_termcap_tgetent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 $as_echo "$ac_cv_lib_termcap_tgetent" >&6; } if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : bash_cv_termcap_lib=libtermcap else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 $as_echo_n "checking for tgetent in -ltinfo... " >&6; } if ${ac_cv_lib_tinfo_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltinfo $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tgetent (); int main () { return tgetent (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_tinfo_tgetent=yes else ac_cv_lib_tinfo_tgetent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 $as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then : bash_cv_termcap_lib=libtinfo else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 $as_echo_n "checking for tgetent in -lcurses... " >&6; } if ${ac_cv_lib_curses_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tgetent (); int main () { return tgetent (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_curses_tgetent=yes else ac_cv_lib_curses_tgetent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 $as_echo "$ac_cv_lib_curses_tgetent" >&6; } if test "x$ac_cv_lib_curses_tgetent" = xyes; then : bash_cv_termcap_lib=libcurses else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 $as_echo_n "checking for tgetent in -lncurses... " >&6; } if ${ac_cv_lib_ncurses_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tgetent (); int main () { return tgetent (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ncurses_tgetent=yes else ac_cv_lib_ncurses_tgetent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 $as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : bash_cv_termcap_lib=libncurses else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 $as_echo_n "checking for tgetent in -lncursesw... " >&6; } if ${ac_cv_lib_ncursesw_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncursesw $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tgetent (); int main () { return tgetent (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ncursesw_tgetent=yes else ac_cv_lib_ncursesw_tgetent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 $as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; } if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then : bash_cv_termcap_lib=libncursesw else bash_cv_termcap_lib=gnutermcap fi fi fi fi fi fi fi if test "X$_bash_needmsg" = "Xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 $as_echo_n "checking which library has the termcap functions... " >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 $as_echo "using $bash_cv_termcap_lib" >&6; } if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" TERMCAP_DEP="./lib/termcap/libtermcap.a" elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then TERMCAP_LIB=-ltermcap TERMCAP_DEP= elif test $bash_cv_termcap_lib = libtinfo; then TERMCAP_LIB=-ltinfo TERMCAP_DEP= elif test $bash_cv_termcap_lib = libncurses; then TERMCAP_LIB=-lncurses TERMCAP_DEP= elif test $bash_cv_termcap_lib = libc; then TERMCAP_LIB= TERMCAP_DEP= else TERMCAP_LIB=-lcurses TERMCAP_DEP= fi if test "$TERMCAP_LIB" = "./lib/termcap/libtermcap.a"; then if test "$prefer_curses" = yes; then TERMCAP_LIB=-lcurses else TERMCAP_LIB=-ltermcap #default fi fi # Windows ncurses installation if test "$TERMCAP_LIB" = "-lncurses"; then for ac_header in ncurses/termcap.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncurses/termcap.h" "ac_cv_header_ncurses_termcap_h" "$ac_includes_default" if test "x$ac_cv_header_ncurses_termcap_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSES_TERMCAP_H 1 _ACEOF fi done fi case "$TERMCAP_LIB" in -ltinfo) TERMCAP_PKG_CONFIG_LIB=tinfo ;; -lcurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;; -lncurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;; -ltermcap) TERMCAP_PKG_CONFIG_LIB=termcap ;; *) TERMCAP_PKG_CONFIG_LIB=termcap ;; esac for ac_header in wctype.h do : ac_fn_c_check_header_mongrel "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default" if test "x$ac_cv_header_wctype_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_WCTYPE_H 1 _ACEOF fi done for ac_header in wchar.h do : ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" if test "x$ac_cv_header_wchar_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_WCHAR_H 1 _ACEOF fi done for ac_header in langinfo.h do : ac_fn_c_check_header_mongrel "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" if test "x$ac_cv_header_langinfo_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LANGINFO_H 1 _ACEOF fi done for ac_header in mbstr.h do : ac_fn_c_check_header_mongrel "$LINENO" "mbstr.h" "ac_cv_header_mbstr_h" "$ac_includes_default" if test "x$ac_cv_header_mbstr_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MBSTR_H 1 _ACEOF fi done ac_fn_c_check_func "$LINENO" "mbrlen" "ac_cv_func_mbrlen" if test "x$ac_cv_func_mbrlen" = xyes; then : $as_echo "#define HAVE_MBRLEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbscasecmp" "ac_cv_func_mbscasecmp" if test "x$ac_cv_func_mbscasecmp" = xyes; then : $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbscmp" "ac_cv_func_mbscmp" if test "x$ac_cv_func_mbscmp" = xyes; then : $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbsnrtowcs" "ac_cv_func_mbsnrtowcs" if test "x$ac_cv_func_mbsnrtowcs" = xyes; then : $as_echo "#define HAVE_MBSNRTOWCS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbsrtowcs" "ac_cv_func_mbsrtowcs" if test "x$ac_cv_func_mbsrtowcs" = xyes; then : $as_echo "#define HAVE_MBSRTOWCS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbschr" "ac_cv_func_mbschr" if test "x$ac_cv_func_mbschr" = xyes; then : $as_echo "#define HAVE_MBSCHR 1" >>confdefs.h else case " $LIBOBJS " in *" mbschr.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS mbschr.$ac_objext" ;; esac fi ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb" if test "x$ac_cv_func_wcrtomb" = xyes; then : $as_echo "#define HAVE_WCRTOMB 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll" if test "x$ac_cv_func_wcscoll" = xyes; then : $as_echo "#define HAVE_WCSCOLL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcsdup" "ac_cv_func_wcsdup" if test "x$ac_cv_func_wcsdup" = xyes; then : $as_echo "#define HAVE_WCSDUP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth" if test "x$ac_cv_func_wcwidth" = xyes; then : $as_echo "#define HAVE_WCWIDTH 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wctype" "ac_cv_func_wctype" if test "x$ac_cv_func_wctype" = xyes; then : $as_echo "#define HAVE_WCTYPE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcswidth" "ac_cv_func_wcswidth" if test "x$ac_cv_func_wcswidth" = xyes; then : $as_echo "#define HAVE_WCSWIDTH 1" >>confdefs.h else case " $LIBOBJS " in *" wcswidth.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS wcswidth.$ac_objext" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 $as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } if ${ac_cv_func_mbrtowc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { wchar_t wc; char const s[] = ""; size_t n = 1; mbstate_t state; return ! (sizeof state && (mbrtowc) (&wc, s, n, &state)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_func_mbrtowc=yes else ac_cv_func_mbrtowc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 $as_echo "$ac_cv_func_mbrtowc" >&6; } if test $ac_cv_func_mbrtowc = yes; then $as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h fi if test $ac_cv_func_mbrtowc = yes; then $as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h fi for ac_func in iswlower iswupper towlower towupper iswctype do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 $as_echo_n "checking for nl_langinfo and CODESET... " >&6; } if ${bash_cv_langinfo_codeset+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { char* cs = nl_langinfo(CODESET); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : bash_cv_langinfo_codeset=yes else bash_cv_langinfo_codeset=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_langinfo_codeset" >&5 $as_echo "$bash_cv_langinfo_codeset" >&6; } if test $bash_cv_langinfo_codeset = yes; then $as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t in wchar.h" >&5 $as_echo_n "checking for wchar_t in wchar.h... " >&6; } if ${bash_cv_type_wchar_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { wchar_t foo; foo = 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_type_wchar_t=yes else bash_cv_type_wchar_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5 $as_echo "$bash_cv_type_wchar_t" >&6; } if test $bash_cv_type_wchar_t = yes; then $as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t in wctype.h" >&5 $as_echo_n "checking for wctype_t in wctype.h... " >&6; } if ${bash_cv_type_wctype_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { wctype_t foo; foo = 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_type_wctype_t=yes else bash_cv_type_wctype_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5 $as_echo "$bash_cv_type_wctype_t" >&6; } if test $bash_cv_type_wctype_t = yes; then $as_echo "#define HAVE_WCTYPE_T 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t in wctype.h" >&5 $as_echo_n "checking for wint_t in wctype.h... " >&6; } if ${bash_cv_type_wint_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { wint_t foo; foo = 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : bash_cv_type_wint_t=yes else bash_cv_type_wint_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5 $as_echo "$bash_cv_type_wint_t" >&6; } if test $bash_cv_type_wint_t = yes; then $as_echo "#define HAVE_WINT_T 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5 $as_echo_n "checking for wcwidth broken with unicode combining characters... " >&6; } if ${bash_cv_wcwidth_broken+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : bash_cv_wcwidth_broken=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include main(c, v) int c; char **v; { int w; setlocale(LC_ALL, "en_US.UTF-8"); w = wcwidth (0x0301); exit (w == 0); /* exit 0 if wcwidth broken */ } _ACEOF if ac_fn_c_try_run "$LINENO"; then : bash_cv_wcwidth_broken=yes else bash_cv_wcwidth_broken=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5 $as_echo "$bash_cv_wcwidth_broken" >&6; } if test "$bash_cv_wcwidth_broken" = yes; then $as_echo "#define WCWIDTH_BROKEN 1" >>confdefs.h fi if test "$am_cv_func_iconv" = yes; then OLDLIBS="$LIBS" LIBS="$LIBS $LIBINTL $LIBICONV" for ac_func in locale_charset do : ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset" if test "x$ac_cv_func_locale_charset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LOCALE_CHARSET 1 _ACEOF fi done LIBS="$OLDLIBS" fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 $as_echo_n "checking size of wchar_t... " >&6; } if ${ac_cv_sizeof_wchar_t+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"; then : else if test "$ac_cv_type_wchar_t" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (wchar_t) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_wchar_t=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 $as_echo "$ac_cv_sizeof_wchar_t" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t _ACEOF case "$host_cpu" in *cray*) LOCAL_CFLAGS=-DCRAY ;; *s390*) LOCAL_CFLAGS=-fsigned-char ;; esac case "$host_os" in isc*) LOCAL_CFLAGS=-Disc386 ;; esac # shared library configuration section # # Shared object configuration section. These values are generated by # ${srcdir}/support/shobj-conf # if test -f ${srcdir}/support/shobj-conf; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking configuration for building shared libraries" >&5 $as_echo_n "checking configuration for building shared libraries... " >&6; } eval `TERMCAP_LIB=$TERMCAP_LIB ${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}` # case "$SHLIB_LIBS" in # *curses*|*termcap*|*termlib*) ;; # *) SHLIB_LIBS="$SHLIB_LIBS $TERMCAP_LIB" ;; # esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLIB_STATUS" >&5 $as_echo "$SHLIB_STATUS" >&6; } # SHLIB_STATUS is either `supported' or `unsupported'. If it's # `unsupported', turn off any default shared library building if test "$SHLIB_STATUS" = 'unsupported'; then opt_shared_libs=no fi # shared library versioning # quoted for m4 so I can use character classes SHLIB_MAJOR=`expr "$LIBVERSION" : '\([0-9]\)\..*'` SHLIB_MINOR=`expr "$LIBVERSION" : '[0-9]\.\([0-9]\).*'` fi if test "$opt_static_libs" = "yes"; then STATIC_TARGET=static STATIC_INSTALL_TARGET=install-static fi if test "$opt_shared_libs" = "yes"; then SHARED_TARGET=shared SHARED_INSTALL_TARGET=install-shared fi if test "$opt_install_examples" = "yes"; then EXAMPLES_INSTALL_TARGET=install-examples fi case "$build_os" in msdosdjgpp*) BUILD_DIR=`pwd.exe` ;; # to prevent //d/path/file *) BUILD_DIR=`pwd` ;; esac case "$BUILD_DIR" in *\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;; *) ;; esac ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc" ac_config_commands="$ac_config_commands default" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by readline $as_me 8.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ readline config.status 8.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "shlib/Makefile") CONFIG_FILES="$CONFIG_FILES shlib/Makefile" ;; "readline.pc") CONFIG_FILES="$CONFIG_FILES readline.pc" ;; "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "default":C) # Makefile uses this timestamp file to record whether config.h is up to date. echo > stamp-h ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi readline-8.0/INSTALL000664 000436 000000 00000030020 13301036662 014246 0ustar00chetwheel000000 000000 Basic Installation ================== These are installation instructions for Readline-8.0. The simplest way to compile readline is: 1. `cd' to the directory containing the readline source code and type `./configure' to configure readline for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes some time. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile readline and build the static readline and history libraries. If supported, the shared readline and history libraries will be built also. See below for instructions on compiling the other parts of the distribution. Typing `make everything' will cause the static and shared libraries (if supported) and the example programs to be built. 3. Type `make install' to install the static readline and history libraries, the readline include files, the documentation, and, if supported, the shared readline and history libraries. 4. You can remove the created libraries and object files from the build directory by typing `make clean'. To also remove the files that `configure' created (so you can compile readline for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the readline developers, and should be used with care. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in the build directory, and Makefiles in the `doc', `shlib', and `examples' subdirectories. It also creates a `config.h' file containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile readline, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The readline `configure.in' requires autoconf version 2.50 or newer. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile readline for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile readline for one architecture at a time in the source code directory. After you have installed readline for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the readline libraries in `/usr/local/lib', the include files in `/usr/local/include/readline', the man pages in `/usr/local/man', and the info files in `/usr/local/info'. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH' or by supplying a value for the DESTDIR variable when running `make install'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the readline Makefiles will use PATH as the prefix for installing the libraries. Documentation and other data files will still use the regular prefix. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but need to determine by the type of host readline will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM (e.g., i386-unknown-freebsd4.2). See the file `config.sub' for the possible values of each field. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: the readline `configure' looks for a site script, but not all `configure' scripts do. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. Optional Features ================= The readline `configure' recognizes a single `--with-PACKAGE' option: `--with-curses' This tells readline that it can find the termcap library functions (tgetent, et al.) in the curses library, rather than a separate termcap library. Readline uses the termcap functions, but does not link with the termcap or curses library itself, allowing applications which link with readline the to choose an appropriate library. This option tells readline to link the example programs with the curses library rather than libtermcap. `configure' also recognizes two `--enable-FEATURE' options: `--enable-shared' Build the shared libraries by default on supported platforms. The default is `yes'. `--enable-static' Build the static libraries by default. The default is `yes'. Shared Libraries ================ There is support for building shared versions of the readline and history libraries. The configure script creates a Makefile in the `shlib' subdirectory, and typing `make shared' will cause shared versions of the readline and history libraries to be built on supported platforms. If `configure' is given the `--enable-shared' option, it will attempt to build the shared libraries by default on supported platforms. Configure calls the script support/shobj-conf to test whether or not shared library creation is supported and to generate the values of variables that are substituted into shlib/Makefile. If you try to build shared libraries on an unsupported platform, `make' will display a message asking you to update support/shobj-conf for your platform. If you need to update support/shobj-conf, you will need to create a `stanza' for your operating system and compiler. The script uses the value of host_os and ${CC} as determined by configure. For instance, FreeBSD 4.2 with any version of gcc is identified as `freebsd4.2-gcc*'. In the stanza for your operating system-compiler pair, you will need to define several variables. They are: SHOBJ_CC The C compiler used to compile source files into shareable object files. This is normally set to the value of ${CC} by configure, and should not need to be changed. SHOBJ_CFLAGS Flags to pass to the C compiler ($SHOBJ_CC) to create position-independent code. If you are using gcc, this should probably be set to `-fpic'. SHOBJ_LD The link editor to be used to create the shared library from the object files created by $SHOBJ_CC. If you are using gcc, a value of `gcc' will probably work. SHOBJ_LDFLAGS Flags to pass to SHOBJ_LD to enable shared object creation. If you are using gcc, `-shared' may be all that is necessary. These should be the flags needed for generic shared object creation. SHLIB_XLDFLAGS Additional flags to pass to SHOBJ_LD for shared library creation. Many systems use the -R option to the link editor to embed a path within the library for run-time library searches. A reasonable value for such systems would be `-R$(libdir)'. SHLIB_LIBS Any additional libraries that shared libraries should be linked against when they are created. SHLIB_LIBPREF The prefix to use when generating the filename of the shared library. The default is `lib'; Cygwin uses `cyg'. SHLIB_LIBSUFF The suffix to add to `libreadline' and `libhistory' when generating the filename of the shared library. Many systems use `so'; HP-UX uses `sl'. SHLIB_LIBVERSION The string to append to the filename to indicate the version of the shared library. It should begin with $(SHLIB_LIBSUFF), and possibly include version information that allows the run-time loader to load the version of the shared library appropriate for a particular program. Systems using shared libraries similar to SunOS 4.x use major and minor library version numbers; for those systems a value of `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' is appropriate. Systems based on System V Release 4 don't use minor version numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems. Other Unix versions use different schemes. SHLIB_DLLVERSION The version number for shared libraries that determines API compatibility between readline versions and the underlying system. Used only on Cygwin. Defaults to $SHLIB_MAJOR, but can be overridden at configuration time by defining DLLVERSION in the environment. SHLIB_DOT The character used to separate the name of the shared library from the suffix and version information. The default is `.'; systems like Cygwin which don't separate version information from the library name should set this to the empty string. SHLIB_STATUS Set this to `supported' when you have defined the other necessary variables. Make uses this to determine whether or not shared library creation should be attempted. If shared libraries are not supported, this will be set to `unsupported'. You should look at the existing stanzas in support/shobj-conf for ideas. Once you have updated support/shobj-conf, re-run configure and type `make shared' or `make'. The shared libraries will be created in the shlib subdirectory. If shared libraries are created, `make install' will install them. You may install only the shared libraries by running `make install-shared' from the top-level build directory. Running `make install' in the shlib subdirectory will also work. If you don't want to install any created shared libraries, run `make install-static'. readline-8.0/complete.c000644 000436 000120 00000255074 13127024030 015170 0ustar00chetadmin000000 000000 /* complete.c -- filename completion for readline. */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #include #if defined (HAVE_SYS_FILE_H) # include #endif #include #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include #include #if !defined (errno) extern int errno; #endif /* !errno */ #if defined (HAVE_PWD_H) #include #endif #include "posixdir.h" #include "posixstat.h" /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "rlmbutil.h" /* Some standard library routines. */ #include "readline.h" #include "xmalloc.h" #include "rlprivate.h" #if defined (COLOR_SUPPORT) # include "colors.h" #endif #ifdef __STDC__ typedef int QSFUNC (const void *, const void *); #else typedef int QSFUNC (); #endif #ifdef HAVE_LSTAT # define LSTAT lstat #else # define LSTAT stat #endif /* Unix version of a hidden file. Could be different on other systems. */ #define HIDDEN_FILE(fname) ((fname)[0] == '.') /* Most systems don't declare getpwent in if _POSIX_SOURCE is defined. */ #if defined (HAVE_GETPWENT) && (!defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)) extern struct passwd *getpwent PARAMS((void)); #endif /* HAVE_GETPWENT && (!HAVE_GETPW_DECLS || _POSIX_SOURCE) */ /* If non-zero, then this is the address of a function to call when completing a word would normally display the list of possible matches. This function is called instead of actually doing the display. It takes three arguments: (char **matches, int num_matches, int max_length) where MATCHES is the array of strings that matched, NUM_MATCHES is the number of strings in that array, and MAX_LENGTH is the length of the longest string in that array. */ rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)NULL; #if defined (VISIBLE_STATS) || defined (COLOR_SUPPORT) # if !defined (X_OK) # define X_OK 1 # endif #endif #if defined (VISIBLE_STATS) static int stat_char PARAMS((char *)); #endif #if defined (COLOR_SUPPORT) static int colored_stat_start PARAMS((const char *)); static void colored_stat_end PARAMS((void)); static int colored_prefix_start PARAMS((void)); static void colored_prefix_end PARAMS((void)); #endif static int path_isdir PARAMS((const char *)); static char *rl_quote_filename PARAMS((char *, int, char *)); static void _rl_complete_sigcleanup PARAMS((int, void *)); static void set_completion_defaults PARAMS((int)); static int get_y_or_n PARAMS((int)); static int _rl_internal_pager PARAMS((int)); static char *printable_part PARAMS((char *)); static int fnwidth PARAMS((const char *)); static int fnprint PARAMS((const char *, int, const char *)); static int print_filename PARAMS((char *, char *, int)); static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int)); static char **remove_duplicate_matches PARAMS((char **)); static void insert_match PARAMS((char *, int, int, char *)); static int append_to_match PARAMS((char *, int, int, int)); static void insert_all_matches PARAMS((char **, int, char *)); static int complete_fncmp PARAMS((const char *, int, const char *, int)); static void display_matches PARAMS((char **)); static int compute_lcd_of_matches PARAMS((char **, int, const char *)); static int postprocess_matches PARAMS((char ***, int)); static int complete_get_screenwidth PARAMS((void)); static char *make_quoted_replacement PARAMS((char *, int, char *)); /* **************************************************************** */ /* */ /* Completion matching, from readline's point of view. */ /* */ /* **************************************************************** */ /* Variables known only to the readline library. */ /* If non-zero, non-unique completions always show the list of matches. */ int _rl_complete_show_all = 0; /* If non-zero, non-unique completions show the list of matches, unless it is not possible to do partial completion and modify the line. */ int _rl_complete_show_unmodified = 0; /* If non-zero, completed directory names have a slash appended. */ int _rl_complete_mark_directories = 1; /* If non-zero, the symlinked directory completion behavior introduced in readline-4.2a is disabled, and symlinks that point to directories have a slash appended (subject to the value of _rl_complete_mark_directories). This is user-settable via the mark-symlinked-directories variable. */ int _rl_complete_mark_symlink_dirs = 0; /* If non-zero, completions are printed horizontally in alphabetical order, like `ls -x'. */ int _rl_print_completions_horizontally; /* Non-zero means that case is not significant in filename completion. */ #if (defined (__MSDOS__) && !defined (__DJGPP__)) || (defined (_WIN32) && !defined (__CYGWIN__)) int _rl_completion_case_fold = 1; #else int _rl_completion_case_fold = 0; #endif /* Non-zero means that `-' and `_' are equivalent when comparing filenames for completion. */ int _rl_completion_case_map = 0; /* If zero, don't match hidden files (filenames beginning with a `.' on Unix) when doing filename completion. */ int _rl_match_hidden_files = 1; /* Length in characters of a common prefix replaced with an ellipsis (`...') when displaying completion matches. Matches whose printable portion has more than this number of displaying characters in common will have the common display prefix replaced with an ellipsis. */ int _rl_completion_prefix_display_length = 0; /* The readline-private number of screen columns to use when displaying matches. If < 0 or > _rl_screenwidth, it is ignored. */ int _rl_completion_columns = -1; #if defined (COLOR_SUPPORT) /* Non-zero means to use colors to indicate file type when listing possible completions. The colors used are taken from $LS_COLORS, if set. */ int _rl_colored_stats = 0; /* Non-zero means to use a color (currently magenta) to indicate the common prefix of a set of possible word completions. */ int _rl_colored_completion_prefix = 0; #endif /* If non-zero, when completing in the middle of a word, don't insert characters from the match that match characters following point in the word. This means, for instance, completing when the cursor is after the `e' in `Makefile' won't result in `Makefilefile'. */ int _rl_skip_completed_text = 0; /* If non-zero, menu completion displays the common prefix first in the cycle of possible completions instead of the last. */ int _rl_menu_complete_prefix_first = 0; /* Global variables available to applications using readline. */ #if defined (VISIBLE_STATS) /* Non-zero means add an additional character to each filename displayed during listing completion iff rl_filename_completion_desired which helps to indicate the type of file being listed. */ int rl_visible_stats = 0; #endif /* VISIBLE_STATS */ /* If non-zero, then this is the address of a function to call when completing on a directory name. The function is called with the address of a string (the current directory name) as an arg. */ rl_icppfunc_t *rl_directory_completion_hook = (rl_icppfunc_t *)NULL; rl_icppfunc_t *rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL; rl_icppfunc_t *rl_filename_stat_hook = (rl_icppfunc_t *)NULL; /* If non-zero, this is the address of a function to call when reading directory entries from the filesystem for completion and comparing them to the partial word to be completed. The function should either return its first argument (if no conversion takes place) or newly-allocated memory. This can, for instance, convert filenames between character sets for comparison against what's typed at the keyboard. The returned value is what is added to the list of matches. The second argument is the length of the filename to be converted. */ rl_dequote_func_t *rl_filename_rewrite_hook = (rl_dequote_func_t *)NULL; /* Non-zero means readline completion functions perform tilde expansion. */ int rl_complete_with_tilde_expansion = 0; /* Pointer to the generator function for completion_matches (). NULL means to use rl_filename_completion_function (), the default filename completer. */ rl_compentry_func_t *rl_completion_entry_function = (rl_compentry_func_t *)NULL; /* Pointer to generator function for rl_menu_complete (). NULL means to use *rl_completion_entry_function (see above). */ rl_compentry_func_t *rl_menu_completion_entry_function = (rl_compentry_func_t *)NULL; /* Pointer to alternative function to create matches. 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 then call the value of rl_completion_entry_function to try to match, otherwise use the array of strings returned. */ rl_completion_func_t *rl_attempted_completion_function = (rl_completion_func_t *)NULL; /* Non-zero means to suppress normal filename completion after the user-specified completion function has been called. */ int rl_attempted_completion_over = 0; /* Set to a character indicating the type of completion being performed by rl_complete_internal, available for use by application completion functions. */ int rl_completion_type = 0; /* 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. A negative value means don't ask. */ int rl_completion_query_items = 100; int _rl_page_completions = 1; /* The basic list of characters that signal a break between words for the completer routine. The contents of this variable is what breaks words in the shell, i.e. " \t\n\"\\'`@$><=" */ const char *rl_basic_word_break_characters = " \t\n\"\\'`@$><=;|&{("; /* }) */ /* List of basic quoting characters. */ const char *rl_basic_quote_characters = "\"'"; /* The list of characters that signal a break between words for rl_complete_internal. The default list is the contents of rl_basic_word_break_characters. */ /*const*/ char *rl_completer_word_break_characters = (/*const*/ char *)NULL; /* Hook function to allow an application to set the completion word break characters before readline breaks up the line. Allows position-dependent word break characters. */ rl_cpvfunc_t *rl_completion_word_break_hook = (rl_cpvfunc_t *)NULL; /* 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. */ const char *rl_completer_quote_characters = (const char *)NULL; /* List of characters that should be quoted in filenames by the completer. */ const char *rl_filename_quote_characters = (const char *)NULL; /* List of characters that are word break characters, but should be left in TEXT when it is passed to the completion function. The shell uses this to help determine what kind of completing to do. */ const char *rl_special_prefixes = (const char *)NULL; /* If non-zero, then disallow duplicates in the matches. */ int rl_ignore_completion_duplicates = 1; /* 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 finder function. */ int rl_filename_completion_desired = 0; /* Non-zero means that the results of the matches are to be quoted using double quotes (or an application-specific quoting mechanism) if the 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 finder function. */ int rl_filename_quoting_desired = 1; /* 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 (char**) known as matches in the code below. It consists of a NULL-terminated array of pointers to potential matching strings. The 1st element (matches[0]) is the maximal substring that is common to all matches. This function can re-arrange the list of matches as required, but all elements of the array must be free()'d if they are deleted. The main intent of this function is to implement FIGNORE a la SunOS csh. */ rl_compignore_func_t *rl_ignore_some_completions_function = (rl_compignore_func_t *)NULL; /* Set to a function to quote a filename in an application-specific fashion. Called with the text to quote, the type of match found (single or multiple) and a pointer to the quoting character to be used, which the function can reset if desired. */ rl_quote_func_t *rl_filename_quoting_function = rl_quote_filename; /* Function to call to remove quoting characters from a filename. Called before completion is attempted, so the embedded quotes do not interfere with matching names in the file system. Readline doesn't do anything with this; it's set only by applications. */ rl_dequote_func_t *rl_filename_dequoting_function = (rl_dequote_func_t *)NULL; /* Function to call to decide whether or not a word break character is quoted. If a character is quoted, it does not break words for the completer. */ rl_linebuf_func_t *rl_char_is_quoted_p = (rl_linebuf_func_t *)NULL; /* If non-zero, the completion functions don't append anything except a possible closing quote. This is set to 0 by rl_complete_internal and may be changed by an application-specific completion function. */ int rl_completion_suppress_append = 0; /* Character appended to completed words when at the end of the line. The default is a space. */ int rl_completion_append_character = ' '; /* If non-zero, the completion functions don't append any closing quote. This is set to 0 by rl_complete_internal and may be changed by an application-specific completion function. */ int rl_completion_suppress_quote = 0; /* Set to any quote character readline thinks it finds before any application completion function is called. */ int rl_completion_quote_character; /* Set to a non-zero value if readline found quoting anywhere in the word to be completed; set before any application completion function is called. */ int rl_completion_found_quote; /* If non-zero, a slash will be appended to completed filenames that are symbolic links to directory names, subject to the value of the mark-directories variable (which is user-settable). This exists so that application completion functions can override the user's preference (set via the mark-symlinked-directories variable) if appropriate. It's set to the value of _rl_complete_mark_symlink_dirs in rl_complete_internal before any application-specific completion function is called, so without that function doing anything, the user's preferences are honored. */ int rl_completion_mark_symlink_dirs; /* If non-zero, inhibit completion (temporarily). */ int rl_inhibit_completion; /* Set to the last key used to invoke one of the completion functions */ int rl_completion_invoking_key; /* If non-zero, sort the completion matches. On by default. */ int rl_sort_completion_matches = 1; /* Variables local to this file. */ /* Local variable states what happened during the last completion attempt. */ static int completion_changed_buffer; /* The result of the query to the user about displaying completion matches */ static int completion_y_or_n; static int _rl_complete_display_matches_interrupt = 0; /*************************************/ /* */ /* Bindable completion functions */ /* */ /*************************************/ /* Complete the word at or before point. You have supplied the function that does the initial simple matching selection algorithm (see rl_completion_matches ()). The default is to do filename completion. */ int rl_complete (int ignore, int invoking_key) { rl_completion_invoking_key = invoking_key; if (rl_inhibit_completion) return (_rl_insert_char (ignore, invoking_key)); else if (rl_last_func == rl_complete && !completion_changed_buffer) return (rl_complete_internal ('?')); else if (_rl_complete_show_all) return (rl_complete_internal ('!')); else if (_rl_complete_show_unmodified) return (rl_complete_internal ('@')); else return (rl_complete_internal (TAB)); } /* List the possible completions. See description of rl_complete (). */ int rl_possible_completions (int ignore, int invoking_key) { rl_completion_invoking_key = invoking_key; return (rl_complete_internal ('?')); } int rl_insert_completions (int ignore, int invoking_key) { rl_completion_invoking_key = invoking_key; return (rl_complete_internal ('*')); } /* Return the correct value to pass to rl_complete_internal performing the same tests as rl_complete. This allows consecutive calls to an application's completion function to list possible completions and for an application-specific completion function to honor the show-all-if-ambiguous readline variable. */ int rl_completion_mode (rl_command_func_t *cfunc) { if (rl_last_func == cfunc && !completion_changed_buffer) return '?'; else if (_rl_complete_show_all) return '!'; else if (_rl_complete_show_unmodified) return '@'; else return TAB; } /************************************/ /* */ /* Completion utility functions */ /* */ /************************************/ /* Reset readline state on a signal or other event. */ void _rl_reset_completion_state (void) { rl_completion_found_quote = 0; rl_completion_quote_character = 0; } static void _rl_complete_sigcleanup (int sig, void *ptr) { if (sig == SIGINT) /* XXX - for now */ { _rl_free_match_list ((char **)ptr); _rl_complete_display_matches_interrupt = 1; } } /* Set default values for readline word completion. These are the variables that application completion functions can change or inspect. */ static void set_completion_defaults (int what_to_do) { /* Only the completion entry function can change these. */ rl_filename_completion_desired = 0; rl_filename_quoting_desired = 1; rl_completion_type = what_to_do; rl_completion_suppress_append = rl_completion_suppress_quote = 0; rl_completion_append_character = ' '; /* The completion entry function may optionally change this. */ rl_completion_mark_symlink_dirs = _rl_complete_mark_symlink_dirs; /* Reset private state. */ _rl_complete_display_matches_interrupt = 0; } /* The user must press "y" or "n". Non-zero return means "y" pressed. */ static int get_y_or_n (int for_pager) { int c; /* For now, disable pager in callback mode, until we later convert to state driven functions. Have to wait until next major version to add new state definition, since it will change value of RL_STATE_DONE. */ #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) return 1; #endif for (;;) { RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); if (c == 'y' || c == 'Y' || c == ' ') return (1); if (c == 'n' || c == 'N' || c == RUBOUT) return (0); if (c == ABORT_CHAR || c < 0) _rl_abort_internal (); if (for_pager && (c == NEWLINE || c == RETURN)) return (2); if (for_pager && (c == 'q' || c == 'Q')) return (0); rl_ding (); } } static int _rl_internal_pager (int lines) { int i; fprintf (rl_outstream, "--More--"); fflush (rl_outstream); i = get_y_or_n (1); _rl_erase_entire_line (); if (i == 0) return -1; else if (i == 2) return (lines - 1); else return 0; } static int path_isdir (const char *filename) { struct stat finfo; return (stat (filename, &finfo) == 0 && S_ISDIR (finfo.st_mode)); } #if defined (VISIBLE_STATS) /* Return the character which best describes FILENAME. `@' for symbolic links `/' for directories `*' for executables `=' for sockets `|' for FIFOs `%' for character special devices `#' for block special devices */ static int stat_char (char *filename) { struct stat finfo; int character, r; char *f; const char *fn; /* Short-circuit a //server on cygwin, since that will always behave as a directory. */ #if __CYGWIN__ if (filename[0] == '/' && filename[1] == '/' && strchr (filename+2, '/') == 0) return '/'; #endif f = 0; if (rl_filename_stat_hook) { f = savestring (filename); (*rl_filename_stat_hook) (&f); fn = f; } else fn = filename; #if defined (HAVE_LSTAT) && defined (S_ISLNK) r = lstat (fn, &finfo); #else r = stat (fn, &finfo); #endif if (r == -1) { xfree (f); return (0); } character = 0; if (S_ISDIR (finfo.st_mode)) character = '/'; #if defined (S_ISCHR) else if (S_ISCHR (finfo.st_mode)) character = '%'; #endif /* S_ISCHR */ #if defined (S_ISBLK) else if (S_ISBLK (finfo.st_mode)) character = '#'; #endif /* S_ISBLK */ #if defined (S_ISLNK) else if (S_ISLNK (finfo.st_mode)) character = '@'; #endif /* S_ISLNK */ #if defined (S_ISSOCK) else if (S_ISSOCK (finfo.st_mode)) character = '='; #endif /* S_ISSOCK */ #if defined (S_ISFIFO) else if (S_ISFIFO (finfo.st_mode)) character = '|'; #endif else if (S_ISREG (finfo.st_mode)) { #if defined (_WIN32) && !defined (__CYGWIN__) char *ext; /* Windows doesn't do access and X_OK; check file extension instead */ ext = strrchr (fn, '.'); if (ext && (_rl_stricmp (ext, ".exe") == 0 || _rl_stricmp (ext, ".cmd") == 0 || _rl_stricmp (ext, ".bat") == 0 || _rl_stricmp (ext, ".com") == 0)) character = '*'; #else if (access (filename, X_OK) == 0) character = '*'; #endif } xfree (f); return (character); } #endif /* VISIBLE_STATS */ #if defined (COLOR_SUPPORT) static int colored_stat_start (const char *filename) { _rl_set_normal_color (); return (_rl_print_color_indicator (filename)); } static void colored_stat_end (void) { _rl_prep_non_filename_text (); _rl_put_indicator (&_rl_color_indicator[C_CLR_TO_EOL]); } static int colored_prefix_start (void) { _rl_set_normal_color (); return (_rl_print_prefix_color ()); } static void colored_prefix_end (void) { colored_stat_end (); /* for now */ } #endif /* Return the portion of PATHNAME that should be output when listing possible completions. If we are hacking filename completion, we are only interested in the basename, the portion following the final slash. Otherwise, we return what we were passed. Since printing empty strings is not very informative, if we're doing filename completion, and the basename is the empty string, we look for the previous slash and return the portion following that. If there's no previous slash, we just return what we were passed. */ static char * printable_part (char *pathname) { char *temp, *x; if (rl_filename_completion_desired == 0) /* don't need to do anything */ return (pathname); temp = strrchr (pathname, '/'); #if defined (__MSDOS__) || defined (_WIN32) if (temp == 0 && ISALPHA ((unsigned char)pathname[0]) && pathname[1] == ':') temp = pathname + 1; #endif if (temp == 0 || *temp == '\0') return (pathname); else if (temp[1] == 0 && temp == pathname) return (pathname); /* If the basename is NULL, we might have a pathname like '/usr/src/'. Look for a previous slash and, if one is found, return the portion following that slash. If there's no previous slash, just return the pathname we were passed. */ else if (temp[1] == '\0') { for (x = temp - 1; x > pathname; x--) if (*x == '/') break; return ((*x == '/') ? x + 1 : pathname); } else return ++temp; } /* Compute width of STRING when displayed on screen by print_filename */ static int fnwidth (const char *string) { int width, pos; #if defined (HANDLE_MULTIBYTE) mbstate_t ps; int left, w; size_t clen; wchar_t wc; left = strlen (string) + 1; memset (&ps, 0, sizeof (mbstate_t)); #endif width = pos = 0; while (string[pos]) { if (CTRL_CHAR (string[pos]) || string[pos] == RUBOUT) { width += 2; pos++; } else { #if defined (HANDLE_MULTIBYTE) clen = mbrtowc (&wc, string + pos, left - pos, &ps); if (MB_INVALIDCH (clen)) { width++; pos++; memset (&ps, 0, sizeof (mbstate_t)); } else if (MB_NULLWCH (clen)) break; else { pos += clen; w = WCWIDTH (wc); width += (w >= 0) ? w : 1; } #else width++; pos++; #endif } } return width; } #define ELLIPSIS_LEN 3 static int fnprint (const char *to_print, int prefix_bytes, const char *real_pathname) { int printed_len, w; const char *s; int common_prefix_len, print_len; #if defined (HANDLE_MULTIBYTE) mbstate_t ps; const char *end; size_t tlen; int width; wchar_t wc; print_len = strlen (to_print); end = to_print + print_len + 1; memset (&ps, 0, sizeof (mbstate_t)); #else print_len = strlen (to_print); #endif printed_len = common_prefix_len = 0; /* Don't print only the ellipsis if the common prefix is one of the possible completions. Only cut off prefix_bytes if we're going to be printing the ellipsis, which takes precedence over coloring the completion prefix (see print_filename() below). */ if (_rl_completion_prefix_display_length > 0 && prefix_bytes >= print_len) prefix_bytes = 0; #if defined (COLOR_SUPPORT) if (_rl_colored_stats && (prefix_bytes == 0 || _rl_colored_completion_prefix <= 0)) colored_stat_start (real_pathname); #endif if (prefix_bytes && _rl_completion_prefix_display_length > 0) { char ellipsis; ellipsis = (to_print[prefix_bytes] == '.') ? '_' : '.'; for (w = 0; w < ELLIPSIS_LEN; w++) putc (ellipsis, rl_outstream); printed_len = ELLIPSIS_LEN; } #if defined (COLOR_SUPPORT) else if (prefix_bytes && _rl_colored_completion_prefix > 0) { common_prefix_len = prefix_bytes; prefix_bytes = 0; /* XXX - print color indicator start here */ colored_prefix_start (); } #endif s = to_print + prefix_bytes; while (*s) { if (CTRL_CHAR (*s)) { putc ('^', rl_outstream); putc (UNCTRL (*s), rl_outstream); printed_len += 2; s++; #if defined (HANDLE_MULTIBYTE) memset (&ps, 0, sizeof (mbstate_t)); #endif } else if (*s == RUBOUT) { putc ('^', rl_outstream); putc ('?', rl_outstream); printed_len += 2; s++; #if defined (HANDLE_MULTIBYTE) memset (&ps, 0, sizeof (mbstate_t)); #endif } else { #if defined (HANDLE_MULTIBYTE) tlen = mbrtowc (&wc, s, end - s, &ps); if (MB_INVALIDCH (tlen)) { tlen = 1; width = 1; memset (&ps, 0, sizeof (mbstate_t)); } else if (MB_NULLWCH (tlen)) break; else { w = WCWIDTH (wc); width = (w >= 0) ? w : 1; } fwrite (s, 1, tlen, rl_outstream); s += tlen; printed_len += width; #else putc (*s, rl_outstream); s++; printed_len++; #endif } if (common_prefix_len > 0 && (s - to_print) >= common_prefix_len) { #if defined (COLOR_SUPPORT) /* printed bytes = s - to_print */ /* printed bytes should never be > but check for paranoia's sake */ colored_prefix_end (); if (_rl_colored_stats) colored_stat_start (real_pathname); /* XXX - experiment */ #endif common_prefix_len = 0; } } #if defined (COLOR_SUPPORT) /* XXX - unconditional for now */ if (_rl_colored_stats) colored_stat_end (); #endif return printed_len; } /* Output TO_PRINT to rl_outstream. If VISIBLE_STATS is defined and we are using it, check for and output a single character for `special' filenames. Return the number of characters we output. */ static int print_filename (char *to_print, char *full_pathname, int prefix_bytes) { int printed_len, extension_char, slen, tlen; char *s, c, *new_full_pathname, *dn; extension_char = 0; #if defined (COLOR_SUPPORT) /* Defer printing if we want to prefix with a color indicator */ if (_rl_colored_stats == 0 || rl_filename_completion_desired == 0) #endif printed_len = fnprint (to_print, prefix_bytes, to_print); if (rl_filename_completion_desired && ( #if defined (VISIBLE_STATS) rl_visible_stats || #endif #if defined (COLOR_SUPPORT) _rl_colored_stats || #endif _rl_complete_mark_directories)) { /* If to_print != full_pathname, to_print is the basename of the path passed. In this case, we try to expand the directory name before checking for the stat character. */ if (to_print != full_pathname) { /* Terminate the directory name. */ c = to_print[-1]; to_print[-1] = '\0'; /* If setting the last slash in full_pathname to a NUL results in full_pathname being the empty string, we are trying to complete files in the root directory. If we pass a null string to the bash directory completion hook, for example, it will expand it to the current directory. We just want the `/'. */ if (full_pathname == 0 || *full_pathname == 0) dn = "/"; else if (full_pathname[0] != '/') dn = full_pathname; else if (full_pathname[1] == 0) dn = "//"; /* restore trailing slash to `//' */ else if (full_pathname[1] == '/' && full_pathname[2] == 0) dn = "/"; /* don't turn /// into // */ else dn = full_pathname; s = tilde_expand (dn); if (rl_directory_completion_hook) (*rl_directory_completion_hook) (&s); slen = strlen (s); tlen = strlen (to_print); new_full_pathname = (char *)xmalloc (slen + tlen + 2); strcpy (new_full_pathname, s); if (s[slen - 1] == '/') slen--; else new_full_pathname[slen] = '/'; strcpy (new_full_pathname + slen + 1, to_print); #if defined (VISIBLE_STATS) if (rl_visible_stats) extension_char = stat_char (new_full_pathname); else #endif if (_rl_complete_mark_directories) { dn = 0; if (rl_directory_completion_hook == 0 && rl_filename_stat_hook) { dn = savestring (new_full_pathname); (*rl_filename_stat_hook) (&dn); xfree (new_full_pathname); new_full_pathname = dn; } if (path_isdir (new_full_pathname)) extension_char = '/'; } /* Move colored-stats code inside fnprint() */ #if defined (COLOR_SUPPORT) if (_rl_colored_stats) printed_len = fnprint (to_print, prefix_bytes, new_full_pathname); #endif xfree (new_full_pathname); to_print[-1] = c; } else { s = tilde_expand (full_pathname); #if defined (VISIBLE_STATS) if (rl_visible_stats) extension_char = stat_char (s); else #endif if (_rl_complete_mark_directories && path_isdir (s)) extension_char = '/'; /* Move colored-stats code inside fnprint() */ #if defined (COLOR_SUPPORT) if (_rl_colored_stats) printed_len = fnprint (to_print, prefix_bytes, s); #endif } xfree (s); if (extension_char) { putc (extension_char, rl_outstream); printed_len++; } } return printed_len; } static char * rl_quote_filename (char *s, int rtype, char *qcp) { char *r; r = (char *)xmalloc (strlen (s) + 2); *r = *rl_completer_quote_characters; strcpy (r + 1, s); if (qcp) *qcp = *rl_completer_quote_characters; return r; } /* Find the bounds of the current word for completion purposes, and leave rl_point set to the end of the word. This function skips quoted substrings (characters between matched pairs of characters in rl_completer_quote_characters). First we try to find an unclosed quoted substring on which to do matching. If one is not found, we use the word break characters to find the boundaries of the current word. We call an application-specific function to decide whether or not a particular word break character is quoted; if that function returns a non-zero result, the character does not break a word. This function returns the opening quote character if we found an unclosed quoted substring, '\0' otherwise. FP, if non-null, is set to a value saying which (shell-like) quote characters we found (single quote, double quote, or backslash) anywhere in the string. DP, if non-null, is set to the value of the delimiter character that caused a word break. */ char _rl_find_completion_word (int *fp, int *dp) { int scan, end, found_quote, delimiter, pass_next, isbrk; char quote_char, *brkchars; end = rl_point; found_quote = delimiter = 0; quote_char = '\0'; brkchars = 0; if (rl_completion_word_break_hook) brkchars = (*rl_completion_word_break_hook) (); if (brkchars == 0) brkchars = rl_completer_word_break_characters; if (rl_completer_quote_characters) { /* We have a list of characters which can be used in pairs to quote substrings for the completer. Try to find the start of an unclosed quoted substring. */ /* FOUND_QUOTE is set so we know what kind of quotes we found. */ for (scan = pass_next = 0; scan < end; scan = MB_NEXTCHAR (rl_line_buffer, scan, 1, MB_FIND_ANY)) { if (pass_next) { pass_next = 0; continue; } /* Shell-like semantics for single quotes -- don't allow backslash to quote anything in single quotes, especially not the closing quote. If you don't like this, take out the check on the value of quote_char. */ if (quote_char != '\'' && rl_line_buffer[scan] == '\\') { pass_next = 1; found_quote |= RL_QF_BACKSLASH; continue; } if (quote_char != '\0') { /* Ignore everything until the matching close quote char. */ if (rl_line_buffer[scan] == quote_char) { /* Found matching close. Abandon this substring. */ quote_char = '\0'; rl_point = end; } } else if (strchr (rl_completer_quote_characters, rl_line_buffer[scan])) { /* Found start of a quoted substring. */ quote_char = rl_line_buffer[scan]; rl_point = scan + 1; /* Shell-like quoting conventions. */ if (quote_char == '\'') found_quote |= RL_QF_SINGLE_QUOTE; else if (quote_char == '"') found_quote |= RL_QF_DOUBLE_QUOTE; else found_quote |= RL_QF_OTHER_QUOTE; } } } if (rl_point == end && quote_char == '\0') { /* We didn't find an unclosed quoted substring upon which to do completion, so use the word break characters to find the substring on which to complete. */ while (rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_ANY)) { scan = rl_line_buffer[rl_point]; if (strchr (brkchars, scan) == 0) continue; /* Call the application-specific function to tell us whether this word break character is quoted and should be skipped. */ if (rl_char_is_quoted_p && found_quote && (*rl_char_is_quoted_p) (rl_line_buffer, rl_point)) continue; /* Convoluted code, but it avoids an n^2 algorithm with calls to char_is_quoted. */ break; } } /* If we are at an unquoted word break, then advance past it. */ scan = rl_line_buffer[rl_point]; /* If there is an application-specific function to say whether or not a character is quoted and we found a quote character, let that function decide whether or not a character is a word break, even if it is found in rl_completer_word_break_characters. Don't bother if we're at the end of the line, though. */ if (scan) { if (rl_char_is_quoted_p) isbrk = (found_quote == 0 || (*rl_char_is_quoted_p) (rl_line_buffer, rl_point) == 0) && strchr (brkchars, scan) != 0; else isbrk = strchr (brkchars, scan) != 0; if (isbrk) { /* If the character that caused the word break was a quoting character, then remember it as the delimiter. */ if (rl_basic_quote_characters && strchr (rl_basic_quote_characters, scan) && (end - rl_point) > 1) delimiter = scan; /* If the character isn't needed to determine something special about what kind of completion to perform, then advance past it. */ if (rl_special_prefixes == 0 || strchr (rl_special_prefixes, scan) == 0) rl_point++; } } if (fp) *fp = found_quote; if (dp) *dp = delimiter; return (quote_char); } static char ** gen_completion_matches (char *text, int start, int end, rl_compentry_func_t *our_func, int found_quote, int quote_char) { char **matches; rl_completion_found_quote = found_quote; rl_completion_quote_character = quote_char; /* If the user wants to TRY to complete, but then wants to give up and use the default completion function, they set the variable rl_attempted_completion_function. */ if (rl_attempted_completion_function) { matches = (*rl_attempted_completion_function) (text, start, end); if (RL_SIG_RECEIVED()) { _rl_free_match_list (matches); matches = 0; RL_CHECK_SIGNALS (); } if (matches || rl_attempted_completion_over) { rl_attempted_completion_over = 0; return (matches); } } /* XXX -- filename dequoting moved into rl_filename_completion_function */ /* rl_completion_matches will check for signals as well to avoid a long delay while reading a directory. */ matches = rl_completion_matches (text, our_func); if (RL_SIG_RECEIVED()) { _rl_free_match_list (matches); matches = 0; RL_CHECK_SIGNALS (); } return matches; } /* Filter out duplicates in MATCHES. This frees up the strings in MATCHES. */ static char ** remove_duplicate_matches (char **matches) { char *lowest_common; int i, j, newlen; char dead_slot; char **temp_array; /* Sort the items. */ for (i = 0; matches[i]; i++) ; /* Sort the array without matches[0], since we need it to stay in place no matter what. */ if (i && rl_sort_completion_matches) qsort (matches+1, i-1, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare); /* Remember the lowest common denominator for it may be unique. */ lowest_common = savestring (matches[0]); for (i = newlen = 0; matches[i + 1]; i++) { if (strcmp (matches[i], matches[i + 1]) == 0) { xfree (matches[i]); matches[i] = (char *)&dead_slot; } else newlen++; } /* We have marked all the dead slots with (char *)&dead_slot. Copy all the non-dead entries into a new array. */ temp_array = (char **)xmalloc ((3 + newlen) * sizeof (char *)); for (i = j = 1; matches[i]; i++) { if (matches[i] != (char *)&dead_slot) temp_array[j++] = matches[i]; } temp_array[j] = (char *)NULL; if (matches[0] != (char *)&dead_slot) xfree (matches[0]); /* Place the lowest common denominator back in [0]. */ temp_array[0] = lowest_common; /* If there is one string left, and it is identical to the lowest common denominator, then the LCD is the string to insert. */ if (j == 2 && strcmp (temp_array[0], temp_array[1]) == 0) { xfree (temp_array[1]); temp_array[1] = (char *)NULL; } return (temp_array); } /* Find the common prefix of the list of matches, and put it into matches[0]. */ static int compute_lcd_of_matches (char **match_list, int matches, const char *text) { register int i, c1, c2, si; int low; /* Count of max-matched characters. */ int lx; char *dtext; /* dequoted TEXT, if needed */ #if defined (HANDLE_MULTIBYTE) int v; size_t v1, v2; mbstate_t ps1, ps2; wchar_t wc1, wc2; #endif /* If only one match, just use that. Otherwise, compare each member of the list with the next, finding out where they stop matching. */ if (matches == 1) { match_list[0] = match_list[1]; match_list[1] = (char *)NULL; return 1; } for (i = 1, low = 100000; i < matches; i++) { #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { memset (&ps1, 0, sizeof (mbstate_t)); memset (&ps2, 0, sizeof (mbstate_t)); } #endif if (_rl_completion_case_fold) { for (si = 0; (c1 = _rl_to_lower(match_list[i][si])) && (c2 = _rl_to_lower(match_list[i + 1][si])); si++) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { v1 = mbrtowc(&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1); v2 = mbrtowc (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2); if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) { if (c1 != c2) /* do byte comparison */ break; continue; } wc1 = towlower (wc1); wc2 = towlower (wc2); if (wc1 != wc2) break; else if (v1 > 1) si += v1 - 1; } else #endif if (c1 != c2) break; } else { for (si = 0; (c1 = match_list[i][si]) && (c2 = match_list[i + 1][si]); si++) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { mbstate_t ps_back; ps_back = ps1; if (!_rl_compare_chars (match_list[i], si, &ps1, match_list[i+1], si, &ps2)) break; else if ((v = _rl_get_char_len (&match_list[i][si], &ps_back)) > 1) si += v - 1; } else #endif if (c1 != c2) break; } if (low > si) low = si; } /* If there were multiple matches, but none matched up to even the first character, and the user typed something, use that as the value of matches[0]. */ if (low == 0 && text && *text) { match_list[0] = (char *)xmalloc (strlen (text) + 1); strcpy (match_list[0], text); } else { match_list[0] = (char *)xmalloc (low + 1); /* XXX - this might need changes in the presence of multibyte chars */ /* If we are ignoring case, try to preserve the case of the string the user typed in the face of multiple matches differing in case. */ if (_rl_completion_case_fold) { /* We're making an assumption here: IF we're completing filenames AND the application has defined a filename dequoting function AND we found a quote character AND the application has requested filename quoting THEN we assume that TEXT was dequoted before checking against the file system and needs to be dequoted here before we check against the list of matches FI */ dtext = (char *)NULL; if (rl_filename_completion_desired && rl_filename_dequoting_function && rl_completion_found_quote && rl_filename_quoting_desired) { dtext = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); text = dtext; } /* sort the list to get consistent answers. */ if (rl_sort_completion_matches) qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare); si = strlen (text); lx = (si <= low) ? si : low; /* check shorter of text and matches */ /* Try to preserve the case of what the user typed in the presence of multiple matches: check each match for something that matches what the user typed taking case into account; use it up to common length of matches if one is found. If not, just use first match. */ for (i = 1; i <= matches; i++) if (strncmp (match_list[i], text, lx) == 0) { strncpy (match_list[0], match_list[i], low); break; } /* no casematch, use first entry */ if (i > matches) strncpy (match_list[0], match_list[1], low); FREE (dtext); } else strncpy (match_list[0], match_list[1], low); match_list[0][low] = '\0'; } return matches; } static int postprocess_matches (char ***matchesp, int matching_filenames) { char *t, **matches, **temp_matches; int nmatch, i; matches = *matchesp; if (matches == 0) return 0; /* It seems to me that in all the cases we handle we would like to ignore duplicate possibilities. Scan for the text to insert being identical to the other completions. */ if (rl_ignore_completion_duplicates) { temp_matches = remove_duplicate_matches (matches); xfree (matches); matches = temp_matches; } /* If we are matching filenames, then here is our chance to do clever processing by re-examining the list. Call the ignore function with the array as a parameter. It can munge the array, deleting matches as it desires. */ if (rl_ignore_some_completions_function && matching_filenames) { for (nmatch = 1; matches[nmatch]; nmatch++) ; (void)(*rl_ignore_some_completions_function) (matches); if (matches == 0 || matches[0] == 0) { FREE (matches); *matchesp = (char **)0; return 0; } else { /* If we removed some matches, recompute the common prefix. */ for (i = 1; matches[i]; i++) ; if (i > 1 && i < nmatch) { t = matches[0]; compute_lcd_of_matches (matches, i - 1, t); FREE (t); } } } *matchesp = matches; return (1); } static int complete_get_screenwidth (void) { int cols; char *envcols; cols = _rl_completion_columns; if (cols >= 0 && cols <= _rl_screenwidth) return cols; envcols = getenv ("COLUMNS"); if (envcols && *envcols) cols = atoi (envcols); if (cols >= 0 && cols <= _rl_screenwidth) return cols; return _rl_screenwidth; } /* A convenience function for displaying a list of strings in columnar format on readline's output stream. MATCHES is the list of strings, in argv format, LEN is the number of strings in MATCHES, and MAX is the length of the longest string in MATCHES. */ void rl_display_match_list (char **matches, int len, int max) { int count, limit, printed_len, lines, cols; int i, j, k, l, common_length, sind; char *temp, *t; /* Find the length of the prefix common to all items: length as displayed characters (common_length) and as a byte index into the matches (sind) */ common_length = sind = 0; if (_rl_completion_prefix_display_length > 0) { t = printable_part (matches[0]); /* check again in case of /usr/src/ */ temp = rl_filename_completion_desired ? strrchr (t, '/') : 0; common_length = temp ? fnwidth (temp) : fnwidth (t); sind = temp ? strlen (temp) : strlen (t); if (common_length > max || sind > max) common_length = sind = 0; if (common_length > _rl_completion_prefix_display_length && common_length > ELLIPSIS_LEN) max -= common_length - ELLIPSIS_LEN; else common_length = sind = 0; } #if defined (COLOR_SUPPORT) else if (_rl_colored_completion_prefix > 0) { t = printable_part (matches[0]); temp = rl_filename_completion_desired ? strrchr (t, '/') : 0; common_length = temp ? fnwidth (temp) : fnwidth (t); sind = temp ? RL_STRLEN (temp+1) : RL_STRLEN (t); /* want portion after final slash */ if (common_length > max || sind > max) common_length = sind = 0; } #endif /* How many items of MAX length can we fit in the screen window? */ cols = complete_get_screenwidth (); max += 2; limit = cols / max; if (limit != 1 && (limit * max == cols)) limit--; /* If cols == 0, limit will end up -1 */ if (cols < _rl_screenwidth && limit < 0) limit = 1; /* Avoid a possible floating exception. If max > cols, limit will be 0 and a divide-by-zero fault will result. */ if (limit == 0) limit = 1; /* How many iterations of the printing loop? */ count = (len + (limit - 1)) / limit; /* Watch out for special case. If LEN is less than LIMIT, then just do the inner printing loop. 0 < len <= limit implies count = 1. */ /* Sort the items if they are not already sorted. */ if (rl_ignore_completion_duplicates == 0 && rl_sort_completion_matches) qsort (matches + 1, len, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare); rl_crlf (); lines = 0; if (_rl_print_completions_horizontally == 0) { /* Print the sorted items, up-and-down alphabetically, like ls. */ for (i = 1; i <= count; i++) { for (j = 0, l = i; j < limit; j++) { if (l > len || matches[l] == 0) break; else { temp = printable_part (matches[l]); printed_len = print_filename (temp, matches[l], sind); if (j + 1 < limit) { if (max <= printed_len) putc (' ', rl_outstream); else for (k = 0; k < max - printed_len; k++) putc (' ', rl_outstream); } } l += count; } rl_crlf (); #if defined (SIGWINCH) if (RL_SIG_RECEIVED () && RL_SIGWINCH_RECEIVED() == 0) #else if (RL_SIG_RECEIVED ()) #endif return; lines++; if (_rl_page_completions && lines >= (_rl_screenheight - 1) && i < count) { lines = _rl_internal_pager (lines); if (lines < 0) return; } } } else { /* Print the sorted items, across alphabetically, like ls -x. */ for (i = 1; matches[i]; i++) { temp = printable_part (matches[i]); printed_len = print_filename (temp, matches[i], sind); /* Have we reached the end of this line? */ #if defined (SIGWINCH) if (RL_SIG_RECEIVED () && RL_SIGWINCH_RECEIVED() == 0) #else if (RL_SIG_RECEIVED ()) #endif return; if (matches[i+1]) { if (limit == 1 || (i && (limit > 1) && (i % limit) == 0)) { rl_crlf (); lines++; if (_rl_page_completions && lines >= _rl_screenheight - 1) { lines = _rl_internal_pager (lines); if (lines < 0) return; } } else if (max <= printed_len) putc (' ', rl_outstream); else for (k = 0; k < max - printed_len; k++) putc (' ', rl_outstream); } } rl_crlf (); } } /* Display MATCHES, a list of matching filenames in argv format. This handles the simple case -- a single match -- first. If there is more than one match, we compute the number of strings in the list and the length of the longest string, which will be needed by the display function. If the application wants to handle displaying the list of matches itself, it sets RL_COMPLETION_DISPLAY_MATCHES_HOOK to the address of a function, and we just call it. If we're handling the display ourselves, we just call rl_display_match_list. We also check that the list of matches doesn't exceed the user-settable threshold, and ask the user if he wants to see the list if there are more matches than RL_COMPLETION_QUERY_ITEMS. */ static void display_matches (char **matches) { int len, max, i; char *temp; /* Move to the last visible line of a possibly-multiple-line command. */ _rl_move_vert (_rl_vis_botlin); /* Handle simple case first. What if there is only one answer? */ if (matches[1] == 0) { temp = printable_part (matches[0]); rl_crlf (); print_filename (temp, matches[0], 0); rl_crlf (); rl_forced_update_display (); rl_display_fixed = 1; return; } /* There is more than one answer. Find out how many there are, and find the maximum printed length of a single entry. */ for (max = 0, i = 1; matches[i]; i++) { temp = printable_part (matches[i]); len = fnwidth (temp); if (len > max) max = len; } len = i - 1; /* If the caller has defined a display hook, then call that now. */ if (rl_completion_display_matches_hook) { (*rl_completion_display_matches_hook) (matches, len, max); return; } /* If there are many items, then ask the user if she really wants to see them all. */ if (rl_completion_query_items > 0 && len >= rl_completion_query_items) { rl_crlf (); fprintf (rl_outstream, "Display all %d possibilities? (y or n)", len); fflush (rl_outstream); if ((completion_y_or_n = get_y_or_n (0)) == 0) { rl_crlf (); rl_forced_update_display (); rl_display_fixed = 1; return; } } rl_display_match_list (matches, len, max); rl_forced_update_display (); rl_display_fixed = 1; } /* qc == pointer to quoting character, if any */ static char * make_quoted_replacement (char *match, int mtype, char *qc) { int should_quote, do_replace; char *replacement; /* If we are doing completion on quoted substrings, and any matches contain any of the completer_word_break_characters, then auto- matically prepend the substring with a quote character (just pick the first one from the list of such) if it does not already begin with a quote string. FIXME: Need to remove any such automatically inserted quote character when it no longer is necessary, such as if we change the string we are completing on and the new set of matches don't require a quoted substring. */ replacement = match; should_quote = match && rl_completer_quote_characters && rl_filename_completion_desired && rl_filename_quoting_desired; if (should_quote) should_quote = should_quote && (!qc || !*qc || (rl_completer_quote_characters && strchr (rl_completer_quote_characters, *qc))); if (should_quote) { /* If there is a single match, see if we need to quote it. This also checks whether the common prefix of several matches needs to be quoted. */ should_quote = rl_filename_quote_characters ? (_rl_strpbrk (match, rl_filename_quote_characters) != 0) : 0; do_replace = should_quote ? mtype : NO_MATCH; /* Quote the replacement, since we found an embedded word break character in a potential match. */ if (do_replace != NO_MATCH && rl_filename_quoting_function) replacement = (*rl_filename_quoting_function) (match, do_replace, qc); } return (replacement); } static void insert_match (char *match, int start, int mtype, char *qc) { char *replacement, *r; char oqc; int end, rlen; oqc = qc ? *qc : '\0'; replacement = make_quoted_replacement (match, mtype, qc); /* Now insert the match. */ if (replacement) { rlen = strlen (replacement); /* Don't double an opening quote character. */ if (qc && *qc && start && rl_line_buffer[start - 1] == *qc && replacement[0] == *qc) start--; /* If make_quoted_replacement changed the quoting character, remove the opening quote and insert the (fully-quoted) replacement. */ else if (qc && (*qc != oqc) && start && rl_line_buffer[start - 1] == oqc && replacement[0] != oqc) start--; end = rl_point - 1; /* Don't double a closing quote character */ if (qc && *qc && end && rl_line_buffer[rl_point] == *qc && replacement[rlen - 1] == *qc) end++; if (_rl_skip_completed_text) { r = replacement; while (start < rl_end && *r && rl_line_buffer[start] == *r) { start++; r++; } if (start <= end || *r) _rl_replace_text (r, start, end); rl_point = start + strlen (r); } else _rl_replace_text (replacement, start, end); if (replacement != match) xfree (replacement); } } /* Append any necessary closing quote and a separator character to the just-inserted match. If the user has specified that directories should be marked by a trailing `/', append one of those instead. The default trailing character is a space. Returns the number of characters appended. If NONTRIVIAL_MATCH is set, we test for a symlink (if the OS has them) and don't add a suffix for a symlink to a directory. A nontrivial match is one that actually adds to the word being completed. The variable rl_completion_mark_symlink_dirs controls this behavior (it's initially set to the what the user has chosen, indicated by the value of _rl_complete_mark_symlink_dirs, but may be modified by an application's completion function). */ static int append_to_match (char *text, int delimiter, int quote_char, int nontrivial_match) { char temp_string[4], *filename, *fn; int temp_string_index, s; struct stat finfo; temp_string_index = 0; if (quote_char && rl_point && rl_completion_suppress_quote == 0 && rl_line_buffer[rl_point - 1] != quote_char) temp_string[temp_string_index++] = quote_char; if (delimiter) temp_string[temp_string_index++] = delimiter; else if (rl_completion_suppress_append == 0 && rl_completion_append_character) temp_string[temp_string_index++] = rl_completion_append_character; temp_string[temp_string_index++] = '\0'; if (rl_filename_completion_desired) { filename = tilde_expand (text); if (rl_filename_stat_hook) { fn = savestring (filename); (*rl_filename_stat_hook) (&fn); xfree (filename); filename = fn; } s = (nontrivial_match && rl_completion_mark_symlink_dirs == 0) ? LSTAT (filename, &finfo) : stat (filename, &finfo); if (s == 0 && S_ISDIR (finfo.st_mode)) { if (_rl_complete_mark_directories /* && rl_completion_suppress_append == 0 */) { /* This is clumsy. Avoid putting in a double slash if point is at the end of the line and the previous character is a slash. */ if (rl_point && rl_line_buffer[rl_point] == '\0' && rl_line_buffer[rl_point - 1] == '/') ; else if (rl_line_buffer[rl_point] != '/') rl_insert_text ("/"); } } #ifdef S_ISLNK /* Don't add anything if the filename is a symlink and resolves to a directory. */ else if (s == 0 && S_ISLNK (finfo.st_mode) && path_isdir (filename)) ; #endif else { if (rl_point == rl_end && temp_string_index) rl_insert_text (temp_string); } xfree (filename); } else { if (rl_point == rl_end && temp_string_index) rl_insert_text (temp_string); } return (temp_string_index); } static void insert_all_matches (char **matches, int point, char *qc) { int i; char *rp; rl_begin_undo_group (); /* remove any opening quote character; make_quoted_replacement will add it back. */ if (qc && *qc && point && rl_line_buffer[point - 1] == *qc) point--; rl_delete_text (point, rl_point); rl_point = point; if (matches[1]) { for (i = 1; matches[i]; i++) { rp = make_quoted_replacement (matches[i], SINGLE_MATCH, qc); rl_insert_text (rp); rl_insert_text (" "); if (rp != matches[i]) xfree (rp); } } else { rp = make_quoted_replacement (matches[0], SINGLE_MATCH, qc); rl_insert_text (rp); rl_insert_text (" "); if (rp != matches[0]) xfree (rp); } rl_end_undo_group (); } void _rl_free_match_list (char **matches) { register int i; if (matches == 0) return; for (i = 0; matches[i]; i++) xfree (matches[i]); xfree (matches); } /* Complete the word at or before point. WHAT_TO_DO says what to do with the completion. `?' means list the possible completions. TAB means do standard completion. `*' means insert all of the possible completions. `!' means to do standard completion, and list all possible completions if there is more than one. `@' means to do standard completion, and list all possible completions if there is more than one and partial completion is not possible. */ int rl_complete_internal (int what_to_do) { char **matches; rl_compentry_func_t *our_func; int start, end, delimiter, found_quote, i, nontrivial_lcd; char *text, *saved_line_buffer; char quote_char; int tlen, mlen; RL_SETSTATE(RL_STATE_COMPLETING); set_completion_defaults (what_to_do); saved_line_buffer = rl_line_buffer ? savestring (rl_line_buffer) : (char *)NULL; our_func = rl_completion_entry_function ? rl_completion_entry_function : rl_filename_completion_function; /* We now look backwards for the start of a filename/variable word. */ end = rl_point; found_quote = delimiter = 0; quote_char = '\0'; if (rl_point) /* This (possibly) changes rl_point. If it returns a non-zero char, we know we have an open quote. */ quote_char = _rl_find_completion_word (&found_quote, &delimiter); start = rl_point; rl_point = end; text = rl_copy_text (start, end); matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char); /* nontrivial_lcd is set if the common prefix adds something to the word being completed. */ nontrivial_lcd = matches && strcmp (text, matches[0]) != 0; if (what_to_do == '!' || what_to_do == '@') tlen = strlen (text); xfree (text); if (matches == 0) { rl_ding (); FREE (saved_line_buffer); completion_changed_buffer = 0; RL_UNSETSTATE(RL_STATE_COMPLETING); _rl_reset_completion_state (); return (0); } /* If we are matching filenames, the attempted completion function will have set rl_filename_completion_desired to a non-zero value. The basic rl_filename_completion_function does this. */ i = rl_filename_completion_desired; if (postprocess_matches (&matches, i) == 0) { rl_ding (); FREE (saved_line_buffer); completion_changed_buffer = 0; RL_UNSETSTATE(RL_STATE_COMPLETING); _rl_reset_completion_state (); return (0); } switch (what_to_do) { case TAB: case '!': case '@': /* Insert the first match with proper quoting. */ if (what_to_do == TAB) { if (*matches[0]) insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); } else if (*matches[0] && matches[1] == 0) /* should we perform the check only if there are multiple matches? */ insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); else if (*matches[0]) /* what_to_do != TAB && multiple matches */ { mlen = *matches[0] ? strlen (matches[0]) : 0; if (mlen >= tlen) insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); } /* If there are more matches, ring the bell to indicate. If we are in vi mode, Posix.2 says to not ring the bell. If the `show-all-if-ambiguous' variable is set, display all the matches immediately. Otherwise, if this was the only match, and we are hacking files, check the file to see if it was a directory. If so, and the `mark-directories' variable is set, add a '/' to the name. If not, and we are at the end of the line, then add a space. */ if (matches[1]) { if (what_to_do == '!') { display_matches (matches); break; } else if (what_to_do == '@') { if (nontrivial_lcd == 0) display_matches (matches); break; } else if (rl_editing_mode != vi_mode) rl_ding (); /* There are other matches remaining. */ } else append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd); break; case '*': insert_all_matches (matches, start, "e_char); break; case '?': if (rl_completion_display_matches_hook == 0) { _rl_sigcleanup = _rl_complete_sigcleanup; _rl_sigcleanarg = matches; _rl_complete_display_matches_interrupt = 0; } display_matches (matches); if (_rl_complete_display_matches_interrupt) { matches = 0; /* already freed by rl_complete_sigcleanup */ _rl_complete_display_matches_interrupt = 0; if (rl_signal_event_hook) (*rl_signal_event_hook) (); /* XXX */ } _rl_sigcleanup = 0; _rl_sigcleanarg = 0; break; default: _rl_ttymsg ("bad value %d for what_to_do in rl_complete", what_to_do); rl_ding (); FREE (saved_line_buffer); RL_UNSETSTATE(RL_STATE_COMPLETING); _rl_free_match_list (matches); _rl_reset_completion_state (); return 1; } _rl_free_match_list (matches); /* Check to see if the line has changed through all of this manipulation. */ if (saved_line_buffer) { completion_changed_buffer = strcmp (rl_line_buffer, saved_line_buffer) != 0; xfree (saved_line_buffer); } RL_UNSETSTATE(RL_STATE_COMPLETING); _rl_reset_completion_state (); RL_CHECK_SIGNALS (); return 0; } /***************************************************************/ /* */ /* Application-callable completion match generator functions */ /* */ /***************************************************************/ /* Return an array of (char *) which is a list of completions for TEXT. If there are no completions, return a NULL pointer. 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_FUNCTION is a function of two args, and returns a (char *). The first argument is TEXT. The second is a state argument; it should be zero on the first call, and non-zero on subsequent calls. It returns a NULL pointer to the caller when there are no more matches. */ char ** rl_completion_matches (const char *text, rl_compentry_func_t *entry_function) { register int i; /* Number of slots in match_list. */ int match_list_size; /* The list of matches. */ char **match_list; /* Number of matches actually found. */ int matches; /* Temporary string binder. */ char *string; matches = 0; match_list_size = 10; match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *)); match_list[1] = (char *)NULL; while (string = (*entry_function) (text, matches)) { if (RL_SIG_RECEIVED ()) { /* Start at 1 because we don't set matches[0] in this function. Only free the list members if we're building match list from rl_filename_completion_function, since we know that doesn't free the strings it returns. */ if (entry_function == rl_filename_completion_function) { for (i = 1; match_list[i]; i++) xfree (match_list[i]); } xfree (match_list); match_list = 0; match_list_size = 0; matches = 0; RL_CHECK_SIGNALS (); } if (matches + 1 >= match_list_size) match_list = (char **)xrealloc (match_list, ((match_list_size += 10) + 1) * sizeof (char *)); if (match_list == 0) return (match_list); match_list[++matches] = string; match_list[matches + 1] = (char *)NULL; } /* If there were any matches, then look through them finding out the lowest common denominator. That then becomes match_list[0]. */ if (matches) compute_lcd_of_matches (match_list, matches, text); else /* There were no matches. */ { xfree (match_list); match_list = (char **)NULL; } return (match_list); } /* A completion function for usernames. TEXT contains a partial username preceded by a random character (usually `~'). */ char * rl_username_completion_function (const char *text, int state) { #if defined (__WIN32__) || defined (__OPENNT) return (char *)NULL; #else /* !__WIN32__ && !__OPENNT) */ static char *username = (char *)NULL; static struct passwd *entry; static int namelen, first_char, first_char_loc; char *value; if (state == 0) { FREE (username); first_char = *text; first_char_loc = first_char == '~'; username = savestring (&text[first_char_loc]); namelen = strlen (username); #if defined (HAVE_GETPWENT) setpwent (); #endif } #if defined (HAVE_GETPWENT) while (entry = getpwent ()) { /* Null usernames should result in all users as possible completions. */ if (namelen == 0 || (STREQN (username, entry->pw_name, namelen))) break; } #endif if (entry == 0) { #if defined (HAVE_GETPWENT) endpwent (); #endif return ((char *)NULL); } else { value = (char *)xmalloc (2 + strlen (entry->pw_name)); *value = *text; strcpy (value + first_char_loc, entry->pw_name); if (first_char == '~') rl_filename_completion_desired = 1; return (value); } #endif /* !__WIN32__ && !__OPENNT */ } /* Return non-zero if CONVFN matches FILENAME up to the length of FILENAME (FILENAME_LEN). If _rl_completion_case_fold is set, compare without regard to the alphabetic case of characters. If _rl_completion_case_map is set, make `-' and `_' equivalent. CONVFN is the possibly-converted directory entry; FILENAME is what the user typed. */ static int complete_fncmp (const char *convfn, int convlen, const char *filename, int filename_len) { register char *s1, *s2; int d, len; #if defined (HANDLE_MULTIBYTE) size_t v1, v2; mbstate_t ps1, ps2; wchar_t wc1, wc2; #endif #if defined (HANDLE_MULTIBYTE) memset (&ps1, 0, sizeof (mbstate_t)); memset (&ps2, 0, sizeof (mbstate_t)); #endif if (filename_len == 0) return 1; if (convlen < filename_len) return 0; len = filename_len; s1 = (char *)convfn; s2 = (char *)filename; /* Otherwise, if these match up to the length of filename, then it is a match. */ if (_rl_completion_case_fold && _rl_completion_case_map) { /* Case-insensitive comparison treating _ and - as equivalent */ #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { do { v1 = mbrtowc (&wc1, s1, convlen, &ps1); v2 = mbrtowc (&wc2, s2, filename_len, &ps2); if (v1 == 0 && v2 == 0) return 1; else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) { if (*s1 != *s2) /* do byte comparison */ return 0; else if ((*s1 == '-' || *s1 == '_') && (*s2 == '-' || *s2 == '_')) return 0; s1++; s2++; len--; continue; } wc1 = towlower (wc1); wc2 = towlower (wc2); s1 += v1; s2 += v1; len -= v1; if ((wc1 == L'-' || wc1 == L'_') && (wc2 == L'-' || wc2 == L'_')) continue; if (wc1 != wc2) return 0; } while (len != 0); } else #endif { do { d = _rl_to_lower (*s1) - _rl_to_lower (*s2); /* *s1 == [-_] && *s2 == [-_] */ if ((*s1 == '-' || *s1 == '_') && (*s2 == '-' || *s2 == '_')) d = 0; if (d != 0) return 0; s1++; s2++; /* already checked convlen >= filename_len */ } while (--len != 0); } return 1; } else if (_rl_completion_case_fold) { #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { do { v1 = mbrtowc (&wc1, s1, convlen, &ps1); v2 = mbrtowc (&wc2, s2, filename_len, &ps2); if (v1 == 0 && v2 == 0) return 1; else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) { if (*s1 != *s2) /* do byte comparison */ return 0; s1++; s2++; len--; continue; } wc1 = towlower (wc1); wc2 = towlower (wc2); if (wc1 != wc2) return 0; s1 += v1; s2 += v1; len -= v1; } while (len != 0); return 1; } else #endif if ((_rl_to_lower (convfn[0]) == _rl_to_lower (filename[0])) && (convlen >= filename_len) && (_rl_strnicmp (filename, convfn, filename_len) == 0)) return 1; } else { if ((convfn[0] == filename[0]) && (convlen >= filename_len) && (strncmp (filename, convfn, filename_len) == 0)) return 1; } return 0; } /* Okay, now we write the entry_function for filename completion. In the general case. Note that completion in the shell is a little different because of all the pathnames that must be followed when looking up the completion for a command. */ char * rl_filename_completion_function (const char *text, int state) { static DIR *directory = (DIR *)NULL; static char *filename = (char *)NULL; static char *dirname = (char *)NULL; static char *users_dirname = (char *)NULL; static int filename_len; char *temp, *dentry, *convfn; int dirlen, dentlen, convlen; int tilde_dirname; struct dirent *entry; /* If we don't have any state, then do some initialization. */ if (state == 0) { /* If we were interrupted before closing the directory or reading all of its contents, close it. */ if (directory) { closedir (directory); directory = (DIR *)NULL; } FREE (dirname); FREE (filename); FREE (users_dirname); filename = savestring (text); if (*text == 0) text = "."; dirname = savestring (text); temp = strrchr (dirname, '/'); #if defined (__MSDOS__) || defined (_WIN32) /* special hack for //X/... */ if (dirname[0] == '/' && dirname[1] == '/' && ISALPHA ((unsigned char)dirname[2]) && dirname[3] == '/') temp = strrchr (dirname + 3, '/'); #endif if (temp) { strcpy (filename, ++temp); *temp = '\0'; } #if defined (__MSDOS__) || (defined (_WIN32) && !defined (__CYGWIN__)) /* searches from current directory on the drive */ else if (ISALPHA ((unsigned char)dirname[0]) && dirname[1] == ':') { strcpy (filename, dirname + 2); dirname[2] = '\0'; } #endif else { dirname[0] = '.'; dirname[1] = '\0'; } /* We aren't done yet. We also support the "~user" syntax. */ /* Save the version of the directory that the user typed, dequoting it if necessary. */ if (rl_completion_found_quote && rl_filename_dequoting_function) users_dirname = (*rl_filename_dequoting_function) (dirname, rl_completion_quote_character); else users_dirname = savestring (dirname); tilde_dirname = 0; if (*dirname == '~') { temp = tilde_expand (dirname); xfree (dirname); dirname = temp; tilde_dirname = 1; } /* We have saved the possibly-dequoted version of the directory name the user typed. Now transform the directory name we're going to pass to opendir(2). The directory rewrite hook modifies only the directory name; the directory completion hook modifies both the directory name passed to opendir(2) and the version the user typed. Both the directory completion and rewrite hooks should perform any necessary dequoting. The hook functions return 1 if they modify the directory name argument. If either hook returns 0, it should not modify the directory name pointer passed as an argument. */ if (rl_directory_rewrite_hook) (*rl_directory_rewrite_hook) (&dirname); else if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&dirname)) { xfree (users_dirname); users_dirname = savestring (dirname); } else if (tilde_dirname == 0 && rl_completion_found_quote && rl_filename_dequoting_function) { /* delete single and double quotes */ xfree (dirname); dirname = savestring (users_dirname); } directory = opendir (dirname); /* Now dequote a non-null filename. FILENAME will not be NULL, but may be empty. */ if (*filename && rl_completion_found_quote && rl_filename_dequoting_function) { /* delete single and double quotes */ temp = (*rl_filename_dequoting_function) (filename, rl_completion_quote_character); xfree (filename); filename = temp; } filename_len = strlen (filename); rl_filename_completion_desired = 1; } /* At this point we should entertain the possibility of hacking wildcarded filenames, like /usr/man/man/te. If the directory name contains globbing characters, then build an array of directories, and then map over that list while completing. */ /* *** UNIMPLEMENTED *** */ /* Now that we have some state, we can read the directory. */ entry = (struct dirent *)NULL; while (directory && (entry = readdir (directory))) { convfn = dentry = entry->d_name; convlen = dentlen = D_NAMLEN (entry); if (rl_filename_rewrite_hook) { convfn = (*rl_filename_rewrite_hook) (dentry, dentlen); convlen = (convfn == dentry) ? dentlen : strlen (convfn); } /* Special case for no filename. If the user has disabled the `match-hidden-files' variable, skip filenames beginning with `.'. All other entries except "." and ".." match. */ if (filename_len == 0) { if (_rl_match_hidden_files == 0 && HIDDEN_FILE (convfn)) continue; if (convfn[0] != '.' || (convfn[1] && (convfn[1] != '.' || convfn[2]))) break; } else { if (complete_fncmp (convfn, convlen, filename, filename_len)) break; } } if (entry == 0) { if (directory) { closedir (directory); directory = (DIR *)NULL; } if (dirname) { xfree (dirname); dirname = (char *)NULL; } if (filename) { xfree (filename); filename = (char *)NULL; } if (users_dirname) { xfree (users_dirname); users_dirname = (char *)NULL; } return (char *)NULL; } else { /* dirname && (strcmp (dirname, ".") != 0) */ if (dirname && (dirname[0] != '.' || dirname[1])) { if (rl_complete_with_tilde_expansion && *users_dirname == '~') { dirlen = strlen (dirname); temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry)); strcpy (temp, dirname); /* Canonicalization cuts off any final slash present. We may need to add it back. */ if (dirname[dirlen - 1] != '/') { temp[dirlen++] = '/'; temp[dirlen] = '\0'; } } else { dirlen = strlen (users_dirname); temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry)); strcpy (temp, users_dirname); /* Make sure that temp has a trailing slash here. */ if (users_dirname[dirlen - 1] != '/') temp[dirlen++] = '/'; } strcpy (temp + dirlen, convfn); } else temp = savestring (convfn); if (convfn != dentry) xfree (convfn); return (temp); } } /* An initial implementation of a menu completion function a la tcsh. The first time (if the last readline command was not rl_old_menu_complete), we generate the list of matches. This code is very similar to the code in rl_complete_internal -- there should be a way to combine the two. Then, for each item in the list of matches, we insert the match in an undoable fashion, with the appropriate character appended (this happens on the second and subsequent consecutive calls to rl_old_menu_complete). When we hit the end of the match list, we restore the original unmatched text, ring the bell, and reset the counter to zero. */ int rl_old_menu_complete (int count, int invoking_key) { rl_compentry_func_t *our_func; int matching_filenames, found_quote; static char *orig_text; static char **matches = (char **)0; static int match_list_index = 0; static int match_list_size = 0; static int orig_start, orig_end; static char quote_char; static int delimiter; /* The first time through, we generate the list of matches and set things up to insert them. */ if (rl_last_func != rl_old_menu_complete) { /* Clean up from previous call, if any. */ FREE (orig_text); if (matches) _rl_free_match_list (matches); match_list_index = match_list_size = 0; matches = (char **)NULL; rl_completion_invoking_key = invoking_key; RL_SETSTATE(RL_STATE_COMPLETING); /* Only the completion entry function can change these. */ set_completion_defaults ('%'); our_func = rl_menu_completion_entry_function; if (our_func == 0) our_func = rl_completion_entry_function ? rl_completion_entry_function : rl_filename_completion_function; /* We now look backwards for the start of a filename/variable word. */ orig_end = rl_point; found_quote = delimiter = 0; quote_char = '\0'; if (rl_point) /* This (possibly) changes rl_point. If it returns a non-zero char, we know we have an open quote. */ quote_char = _rl_find_completion_word (&found_quote, &delimiter); orig_start = rl_point; rl_point = orig_end; orig_text = rl_copy_text (orig_start, orig_end); matches = gen_completion_matches (orig_text, orig_start, orig_end, our_func, found_quote, quote_char); /* If we are matching filenames, the attempted completion function will have set rl_filename_completion_desired to a non-zero value. The basic rl_filename_completion_function does this. */ matching_filenames = rl_filename_completion_desired; if (matches == 0 || postprocess_matches (&matches, matching_filenames) == 0) { rl_ding (); FREE (matches); matches = (char **)0; FREE (orig_text); orig_text = (char *)0; completion_changed_buffer = 0; RL_UNSETSTATE(RL_STATE_COMPLETING); return (0); } RL_UNSETSTATE(RL_STATE_COMPLETING); for (match_list_size = 0; matches[match_list_size]; match_list_size++) ; /* matches[0] is lcd if match_list_size > 1, but the circular buffer code below should take care of it. */ if (match_list_size > 1 && _rl_complete_show_all) display_matches (matches); } /* Now we have the list of matches. Replace the text between rl_line_buffer[orig_start] and rl_line_buffer[rl_point] with matches[match_list_index], and add any necessary closing char. */ if (matches == 0 || match_list_size == 0) { rl_ding (); FREE (matches); matches = (char **)0; completion_changed_buffer = 0; return (0); } match_list_index += count; if (match_list_index < 0) { while (match_list_index < 0) match_list_index += match_list_size; } else match_list_index %= match_list_size; if (match_list_index == 0 && match_list_size > 1) { rl_ding (); insert_match (orig_text, orig_start, MULT_MATCH, "e_char); } else { insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, "e_char); append_to_match (matches[match_list_index], delimiter, quote_char, strcmp (orig_text, matches[match_list_index])); } completion_changed_buffer = 1; return (0); } /* The current version of menu completion. The differences between this function and the original are: 1. It honors the maximum number of completions variable (completion-query-items) 2. It appends to the word as usual if there is only one match 3. It displays the common prefix if there is one, and makes it the first menu choice if the menu-complete-display-prefix option is enabled */ int rl_menu_complete (int count, int ignore) { rl_compentry_func_t *our_func; int matching_filenames, found_quote; static char *orig_text; static char **matches = (char **)0; static int match_list_index = 0; static int match_list_size = 0; static int nontrivial_lcd = 0; static int full_completion = 0; /* set to 1 if menu completion should reinitialize on next call */ static int orig_start, orig_end; static char quote_char; static int delimiter, cstate; /* The first time through, we generate the list of matches and set things up to insert them. */ if ((rl_last_func != rl_menu_complete && rl_last_func != rl_backward_menu_complete) || full_completion) { /* Clean up from previous call, if any. */ FREE (orig_text); if (matches) _rl_free_match_list (matches); match_list_index = match_list_size = 0; matches = (char **)NULL; full_completion = 0; RL_SETSTATE(RL_STATE_COMPLETING); /* Only the completion entry function can change these. */ set_completion_defaults ('%'); our_func = rl_menu_completion_entry_function; if (our_func == 0) our_func = rl_completion_entry_function ? rl_completion_entry_function : rl_filename_completion_function; /* We now look backwards for the start of a filename/variable word. */ orig_end = rl_point; found_quote = delimiter = 0; quote_char = '\0'; if (rl_point) /* This (possibly) changes rl_point. If it returns a non-zero char, we know we have an open quote. */ quote_char = _rl_find_completion_word (&found_quote, &delimiter); orig_start = rl_point; rl_point = orig_end; orig_text = rl_copy_text (orig_start, orig_end); matches = gen_completion_matches (orig_text, orig_start, orig_end, our_func, found_quote, quote_char); nontrivial_lcd = matches && strcmp (orig_text, matches[0]) != 0; /* If we are matching filenames, the attempted completion function will have set rl_filename_completion_desired to a non-zero value. The basic rl_filename_completion_function does this. */ matching_filenames = rl_filename_completion_desired; if (matches == 0 || postprocess_matches (&matches, matching_filenames) == 0) { rl_ding (); FREE (matches); matches = (char **)0; FREE (orig_text); orig_text = (char *)0; completion_changed_buffer = 0; RL_UNSETSTATE(RL_STATE_COMPLETING); return (0); } RL_UNSETSTATE(RL_STATE_COMPLETING); for (match_list_size = 0; matches[match_list_size]; match_list_size++) ; if (match_list_size == 0) { rl_ding (); FREE (matches); matches = (char **)0; match_list_index = 0; completion_changed_buffer = 0; return (0); } /* matches[0] is lcd if match_list_size > 1, but the circular buffer code below should take care of it. */ if (*matches[0]) { insert_match (matches[0], orig_start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); orig_end = orig_start + strlen (matches[0]); completion_changed_buffer = STREQ (orig_text, matches[0]) == 0; } if (match_list_size > 1 && _rl_complete_show_all) { display_matches (matches); /* If there are so many matches that the user has to be asked whether or not he wants to see the matches, menu completion is unwieldy. */ if (rl_completion_query_items > 0 && match_list_size >= rl_completion_query_items) { rl_ding (); FREE (matches); matches = (char **)0; full_completion = 1; return (0); } else if (_rl_menu_complete_prefix_first) { rl_ding (); return (0); } } else if (match_list_size <= 1) { append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd); full_completion = 1; return (0); } else if (_rl_menu_complete_prefix_first && match_list_size > 1) { rl_ding (); return (0); } } /* Now we have the list of matches. Replace the text between rl_line_buffer[orig_start] and rl_line_buffer[rl_point] with matches[match_list_index], and add any necessary closing char. */ if (matches == 0 || match_list_size == 0) { rl_ding (); FREE (matches); matches = (char **)0; completion_changed_buffer = 0; return (0); } match_list_index += count; if (match_list_index < 0) { while (match_list_index < 0) match_list_index += match_list_size; } else match_list_index %= match_list_size; if (match_list_index == 0 && match_list_size > 1) { rl_ding (); insert_match (matches[0], orig_start, MULT_MATCH, "e_char); } else { insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, "e_char); append_to_match (matches[match_list_index], delimiter, quote_char, strcmp (orig_text, matches[match_list_index])); } completion_changed_buffer = 1; return (0); } int rl_backward_menu_complete (int count, int key) { /* Positive arguments to backward-menu-complete translate into negative arguments for menu-complete, and vice versa. */ return (rl_menu_complete (-count, key)); } readline-8.0/callback.c000664 000436 000000 00000024013 13053066604 015125 0ustar00chetwheel000000 000000 /* callback.c -- functions to use readline as an X `callback' mechanism. */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include "rlconf.h" #if defined (READLINE_CALLBACKS) #include #ifdef HAVE_STDLIB_H # include #else # include "ansi_stdlib.h" #endif #include /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "readline.h" #include "rlprivate.h" #include "xmalloc.h" /* Private data for callback registration functions. See comments in rl_callback_read_char for more details. */ _rl_callback_func_t *_rl_callback_func = 0; _rl_callback_generic_arg *_rl_callback_data = 0; /* Applications can set this to non-zero to have readline's signal handlers installed during the entire duration of reading a complete line, as in readline-6.2. This should be used with care, because it can result in readline receiving signals and not handling them until it's called again via rl_callback_read_char, thereby stealing them from the application. By default, signal handlers are only active while readline is active. */ int rl_persistent_signal_handlers = 0; /* **************************************************************** */ /* */ /* Callback Readline Functions */ /* */ /* **************************************************************** */ /* Allow using readline in situations where a program may have multiple things to handle at once, and dispatches them via select(). Call rl_callback_handler_install() with the prompt and a function to call whenever a complete line of input is ready. The user must then call rl_callback_read_char() every time some input is available, and rl_callback_read_char() will call the user's function with the complete text read in at each end of line. The terminal is kept prepped all the time, except during calls to the user's function. Signal handlers are only installed when the application calls back into readline, so readline doesn't `steal' signals from the application. */ rl_vcpfunc_t *rl_linefunc; /* user callback function */ static int in_handler; /* terminal_prepped and signals set? */ /* Make sure the terminal is set up, initialize readline, and prompt. */ static void _rl_callback_newline (void) { rl_initialize (); if (in_handler == 0) { in_handler = 1; if (rl_prep_term_function) (*rl_prep_term_function) (_rl_meta_flag); #if defined (HANDLE_SIGNALS) if (rl_persistent_signal_handlers) rl_set_signals (); #endif } readline_internal_setup (); RL_CHECK_SIGNALS (); } /* Install a readline handler, set up the terminal, and issue the prompt. */ void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *linefunc) { rl_set_prompt (prompt); RL_SETSTATE (RL_STATE_CALLBACK); rl_linefunc = linefunc; _rl_callback_newline (); } #if defined (HANDLE_SIGNALS) #define CALLBACK_READ_RETURN() \ do { \ if (rl_persistent_signal_handlers == 0) \ rl_clear_signals (); \ return; \ } while (0) #else #define CALLBACK_READ_RETURN() return #endif /* Read one character, and dispatch to the handler if it ends the line. */ void rl_callback_read_char (void) { char *line; int eof, jcode; static procenv_t olevel; if (rl_linefunc == NULL) { _rl_errmsg ("readline_callback_read_char() called with no handler!"); abort (); } memcpy ((void *)olevel, (void *)_rl_top_level, sizeof (procenv_t)); #if defined (HAVE_POSIX_SIGSETJMP) jcode = sigsetjmp (_rl_top_level, 0); #else jcode = setjmp (_rl_top_level); #endif if (jcode) { (*rl_redisplay_function) (); _rl_want_redisplay = 0; memcpy ((void *)_rl_top_level, (void *)olevel, sizeof (procenv_t)); CALLBACK_READ_RETURN (); } #if defined (HANDLE_SIGNALS) /* Install signal handlers only when readline has control. */ if (rl_persistent_signal_handlers == 0) rl_set_signals (); #endif do { RL_CHECK_SIGNALS (); if (RL_ISSTATE (RL_STATE_ISEARCH)) { eof = _rl_isearch_callback (_rl_iscxt); if (eof == 0 && (RL_ISSTATE (RL_STATE_ISEARCH) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) rl_callback_read_char (); CALLBACK_READ_RETURN (); } else if (RL_ISSTATE (RL_STATE_NSEARCH)) { eof = _rl_nsearch_callback (_rl_nscxt); CALLBACK_READ_RETURN (); } #if defined (VI_MODE) /* States that can occur while in state VIMOTION have to be checked before RL_STATE_VIMOTION */ else if (RL_ISSTATE (RL_STATE_CHARSEARCH)) { int k; k = _rl_callback_data->i2; eof = (*_rl_callback_func) (_rl_callback_data); /* If the function `deregisters' itself, make sure the data is cleaned up. */ if (_rl_callback_func == 0) /* XXX - just sanity check */ { if (_rl_callback_data) { _rl_callback_data_dispose (_rl_callback_data); _rl_callback_data = 0; } } /* Messy case where vi motion command can be char search */ if (RL_ISSTATE (RL_STATE_VIMOTION)) { _rl_vi_domove_motion_cleanup (k, _rl_vimvcxt); _rl_internal_char_cleanup (); CALLBACK_READ_RETURN (); } _rl_internal_char_cleanup (); } else if (RL_ISSTATE (RL_STATE_VIMOTION)) { eof = _rl_vi_domove_callback (_rl_vimvcxt); /* Should handle everything, including cleanup, numeric arguments, and turning off RL_STATE_VIMOTION */ if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) _rl_internal_char_cleanup (); CALLBACK_READ_RETURN (); } #endif else if (RL_ISSTATE (RL_STATE_NUMERICARG)) { eof = _rl_arg_callback (_rl_argcxt); if (eof == 0 && (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) rl_callback_read_char (); /* XXX - this should handle _rl_last_command_was_kill better */ else if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) _rl_internal_char_cleanup (); CALLBACK_READ_RETURN (); } else if (RL_ISSTATE (RL_STATE_MULTIKEY)) { eof = _rl_dispatch_callback (_rl_kscxt); /* For now */ while ((eof == -1 || eof == -2) && RL_ISSTATE (RL_STATE_MULTIKEY) && _rl_kscxt && (_rl_kscxt->flags & KSEQ_DISPATCHED)) eof = _rl_dispatch_callback (_rl_kscxt); if (RL_ISSTATE (RL_STATE_MULTIKEY) == 0) { _rl_internal_char_cleanup (); _rl_want_redisplay = 1; } } else if (_rl_callback_func) { /* This allows functions that simply need to read an additional character (like quoted-insert) to register a function to be called when input is available. _rl_callback_data is a pointer to a struct that has the argument count originally passed to the registering function and space for any additional parameters. */ eof = (*_rl_callback_func) (_rl_callback_data); /* If the function `deregisters' itself, make sure the data is cleaned up. */ if (_rl_callback_func == 0) { if (_rl_callback_data) { _rl_callback_data_dispose (_rl_callback_data); _rl_callback_data = 0; } _rl_internal_char_cleanup (); } } else eof = readline_internal_char (); RL_CHECK_SIGNALS (); if (rl_done == 0 && _rl_want_redisplay) { (*rl_redisplay_function) (); _rl_want_redisplay = 0; } if (rl_done) { line = readline_internal_teardown (eof); if (rl_deprep_term_function) (*rl_deprep_term_function) (); #if defined (HANDLE_SIGNALS) rl_clear_signals (); #endif in_handler = 0; (*rl_linefunc) (line); /* If the user did not clear out the line, do it for him. */ if (rl_line_buffer[0]) _rl_init_line_state (); /* Redisplay the prompt if readline_handler_{install,remove} not called. */ if (in_handler == 0 && rl_linefunc) _rl_callback_newline (); } } while (rl_pending_input || _rl_pushed_input_available () || RL_ISSTATE (RL_STATE_MACROINPUT)); CALLBACK_READ_RETURN (); } /* Remove the handler, and make sure the terminal is in its normal state. */ void rl_callback_handler_remove (void) { rl_linefunc = NULL; RL_UNSETSTATE (RL_STATE_CALLBACK); RL_CHECK_SIGNALS (); if (in_handler) { in_handler = 0; if (rl_deprep_term_function) (*rl_deprep_term_function) (); #if defined (HANDLE_SIGNALS) rl_clear_signals (); #endif } } _rl_callback_generic_arg * _rl_callback_data_alloc (int count) { _rl_callback_generic_arg *arg; arg = (_rl_callback_generic_arg *)xmalloc (sizeof (_rl_callback_generic_arg)); arg->count = count; arg->i1 = arg->i2 = 0; return arg; } void _rl_callback_data_dispose (_rl_callback_generic_arg *arg) { xfree (arg); } /* Make sure that this agrees with cases in rl_callback_read_char */ void rl_callback_sigcleanup (void) { if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) return; if (RL_ISSTATE (RL_STATE_ISEARCH)) _rl_isearch_cleanup (_rl_iscxt, 0); else if (RL_ISSTATE (RL_STATE_NSEARCH)) _rl_nsearch_cleanup (_rl_nscxt, 0); else if (RL_ISSTATE (RL_STATE_VIMOTION)) RL_UNSETSTATE (RL_STATE_VIMOTION); else if (RL_ISSTATE (RL_STATE_NUMERICARG)) { _rl_argcxt = 0; RL_UNSETSTATE (RL_STATE_NUMERICARG); } else if (RL_ISSTATE (RL_STATE_MULTIKEY)) RL_UNSETSTATE (RL_STATE_MULTIKEY); if (RL_ISSTATE (RL_STATE_CHARSEARCH)) RL_UNSETSTATE (RL_STATE_CHARSEARCH); _rl_callback_func = 0; } #endif readline-8.0/posixdir.h000664 000436 000024 00000004401 11726673644 015260 0ustar00chetstaff000000 000000 /* posixdir.h -- Posix directory reading includes and defines. */ /* Copyright (C) 1987,1991,2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. Bash is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Bash. If not, see . */ /* This file should be included instead of or . */ #if !defined (_POSIXDIR_H_) #define _POSIXDIR_H_ #if defined (HAVE_DIRENT_H) # include # if defined (HAVE_STRUCT_DIRENT_D_NAMLEN) # define D_NAMLEN(d) ((d)->d_namlen) # else # define D_NAMLEN(d) (strlen ((d)->d_name)) # endif /* !HAVE_STRUCT_DIRENT_D_NAMLEN */ #else # if defined (HAVE_SYS_NDIR_H) # include # endif # if defined (HAVE_SYS_DIR_H) # include # endif # if defined (HAVE_NDIR_H) # include # endif # if !defined (dirent) # define dirent direct # endif /* !dirent */ # define D_NAMLEN(d) ((d)->d_namlen) #endif /* !HAVE_DIRENT_H */ /* The bash code fairly consistenly uses d_fileno; make sure it's available */ #if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO) # define d_fileno d_ino #endif /* Posix does not require that the d_ino field be present, and some systems do not provide it. */ #if !defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO) # define REAL_DIR_ENTRY(dp) 1 #else # define REAL_DIR_ENTRY(dp) (dp->d_ino != 0) #endif /* _POSIX_SOURCE */ #if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (BROKEN_DIRENT_D_INO) # define D_INO_AVAILABLE #endif /* Signal the rest of the code that it can safely use dirent.d_fileno */ #if defined (D_INO_AVAILABLE) || defined (HAVE_STRUCT_DIRENT_D_FILENO) # define D_FILENO_AVAILABLE 1 #endif #endif /* !_POSIXDIR_H_ */ readline-8.0/ansi_stdlib.h000664 000436 000024 00000002635 11050314314 015671 0ustar00chetstaff000000 000000 /* ansi_stdlib.h -- An ANSI Standard stdlib.h. */ /* A minimal stdlib.h containing extern declarations for those functions that bash uses. */ /* Copyright (C) 1993 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. Bash is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Bash. If not, see . */ #if !defined (_STDLIB_H_) #define _STDLIB_H_ 1 /* String conversion functions. */ extern int atoi (); extern double atof (); extern double strtod (); /* Memory allocation functions. */ /* Generic pointer type. */ #ifndef PTR_T #if defined (__STDC__) # define PTR_T void * #else # define PTR_T char * #endif #endif /* PTR_T */ extern PTR_T malloc (); extern PTR_T realloc (); extern void free (); /* Other miscellaneous functions. */ extern void abort (); extern void exit (); extern char *getenv (); extern void qsort (); #endif /* _STDLIB_H */ readline-8.0/configure.ac000664 000436 000000 00000020241 13301036743 015507 0ustar00chetwheel000000 000000 dnl dnl Configure script for readline library dnl dnl report bugs to chet@po.cwru.edu dnl dnl Process this file with autoconf to produce a configure script. # Copyright (C) 1987-2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . AC_REVISION([for Readline 8.0, version 2.85]) AC_INIT(readline, 8.0, bug-readline@gnu.org) dnl make sure we are using a recent autoconf version AC_PREREQ(2.50) AC_CONFIG_SRCDIR(readline.h) AC_CONFIG_AUX_DIR(./support) AC_CONFIG_HEADERS(config.h) dnl update the value of RL_READLINE_VERSION in readline.h when this changes LIBVERSION=8.0 AC_CANONICAL_HOST AC_CANONICAL_BUILD dnl configure defaults opt_curses=no dnl arguments to configure AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval) if test "$opt_curses" = "yes"; then prefer_curses=yes fi dnl option parsing for optional features opt_multibyte=yes opt_static_libs=yes opt_shared_libs=yes opt_install_examples=yes AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval) AC_ARG_ENABLE(shared, AC_HELP_STRING([--enable-shared], [build shared libraries [[default=YES]]]), opt_shared_libs=$enableval) AC_ARG_ENABLE(static, AC_HELP_STRING([--enable-static], [build static libraries [[default=YES]]]), opt_static_libs=$enableval) AC_ARG_ENABLE(install-examples, AC_HELP_STRING([--disable-install-examples], [don't install examples [[default=install]]]), opt_install_examples=$enableval) if test $opt_multibyte = no; then AC_DEFINE(NO_MULTIBYTE_SUPPORT) fi dnl load up the cross-building cache file -- add more cases and cache dnl files as necessary dnl Note that host and target machine are the same, and different than the dnl build machine. CROSS_COMPILE= if test "x$cross_compiling" = "xyes"; then case "${host}" in *-cygwin*) cross_cache=${srcdir}/cross-build/cygwin.cache ;; *-mingw*) cross_cache=${srcdir}/cross-build/mingw.cache ;; i[[3456]]86-*-beos*) cross_cache=${srcdir}/cross-build/x86-beos.cache ;; *) echo "configure: cross-compiling for $host is not supported" >&2 ;; esac if test -n "${cross_cache}" && test -r "${cross_cache}"; then echo "loading cross-build cache file ${cross_cache}" . ${cross_cache} fi unset cross_cache CROSS_COMPILE='-DCROSS_COMPILING' AC_SUBST(CROSS_COMPILE) fi echo "" echo "Beginning configuration for readline-$LIBVERSION for ${host_cpu}-${host_vendor}-${host_os}" echo "" # We want these before the checks, so the checks can modify their values. test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1 AC_PROG_MAKE_SET AC_PROG_CC dnl AC_AIX AC_MINIX # If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS. test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O" AC_PROG_GCC_TRADITIONAL AC_PROG_INSTALL AC_CHECK_TOOL(AR, ar) dnl Set default for ARFLAGS, since autoconf does not have a macro for it. dnl This allows people to set it when running configure or make test -n "$ARFLAGS" || ARFLAGS="cr" AC_PROG_RANLIB MAKE_SHELL=/bin/sh AC_SUBST(MAKE_SHELL) AC_C_CONST AC_C_PROTOTYPES AC_C_CHAR_UNSIGNED AC_C_VOLATILE AC_TYPE_SIGNAL AC_TYPE_SIZE_T AC_CHECK_TYPE(ssize_t, int) AC_HEADER_STDC AC_HEADER_STAT AC_HEADER_DIRENT AC_CHECK_FUNCS(fcntl kill lstat readlink) AC_CHECK_FUNCS(fnmatch memmove pselect putenv select setenv setlocale \ strcasecmp strpbrk tcgetattr vsnprintf) AC_CHECK_FUNCS(isascii isxdigit) AC_CHECK_FUNCS(getpwent getpwnam getpwuid) AC_FUNC_CHOWN AC_FUNC_STRCOLL AC_CHECK_HEADERS(fcntl.h unistd.h stdlib.h varargs.h stdarg.h stdbool.h \ string.h strings.h \ limits.h locale.h pwd.h memory.h termcap.h termios.h termio.h) AC_CHECK_HEADERS(sys/ioctl.h sys/pte.h sys/stream.h sys/select.h sys/file.h) AC_CHECK_HEADERS(sys/ptem.h,,, [[ #if HAVE_SYS_STREAM_H # include #endif ]]) AC_SYS_LARGEFILE BASH_SYS_SIGNAL_VINTAGE BASH_SYS_REINSTALL_SIGHANDLERS BASH_FUNC_POSIX_SETJMP BASH_FUNC_LSTAT BASH_FUNC_STRCOLL BASH_FUNC_CTYPE_NONASCII BASH_CHECK_GETPW_FUNCS AC_HEADER_TIOCGWINSZ BASH_TYPE_SIG_ATOMIC_T BASH_TYPE_SIGHANDLER BASH_HAVE_TIOCSTAT BASH_HAVE_FIONREAD BASH_CHECK_SPEED_T BASH_STRUCT_WINSIZE BASH_STRUCT_DIRENT_D_INO BASH_STRUCT_DIRENT_D_FILENO AC_CHECK_HEADERS(libaudit.h) AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include ]]) dnl yuck case "$host_os" in aix*) prefer_curses=yes ;; esac BASH_CHECK_LIB_TERMCAP if test "$TERMCAP_LIB" = "./lib/termcap/libtermcap.a"; then if test "$prefer_curses" = yes; then TERMCAP_LIB=-lcurses else TERMCAP_LIB=-ltermcap #default fi fi # Windows ncurses installation if test "$TERMCAP_LIB" = "-lncurses"; then AC_CHECK_HEADERS(ncurses/termcap.h) fi case "$TERMCAP_LIB" in -ltinfo) TERMCAP_PKG_CONFIG_LIB=tinfo ;; -lcurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;; -lncurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;; -ltermcap) TERMCAP_PKG_CONFIG_LIB=termcap ;; *) TERMCAP_PKG_CONFIG_LIB=termcap ;; esac BASH_CHECK_MULTIBYTE case "$host_cpu" in *cray*) LOCAL_CFLAGS=-DCRAY ;; *s390*) LOCAL_CFLAGS=-fsigned-char ;; esac case "$host_os" in isc*) LOCAL_CFLAGS=-Disc386 ;; esac # shared library configuration section # # Shared object configuration section. These values are generated by # ${srcdir}/support/shobj-conf # if test -f ${srcdir}/support/shobj-conf; then AC_MSG_CHECKING(configuration for building shared libraries) eval `TERMCAP_LIB=$TERMCAP_LIB ${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}` # case "$SHLIB_LIBS" in # *curses*|*termcap*|*termlib*) ;; # *) SHLIB_LIBS="$SHLIB_LIBS $TERMCAP_LIB" ;; # esac AC_SUBST(SHOBJ_CC) AC_SUBST(SHOBJ_CFLAGS) AC_SUBST(SHOBJ_LD) AC_SUBST(SHOBJ_LDFLAGS) AC_SUBST(SHOBJ_XLDFLAGS) AC_SUBST(SHOBJ_LIBS) AC_SUBST(SHOBJ_STATUS) AC_SUBST(SHLIB_STATUS) AC_SUBST(SHLIB_XLDFLAGS) AC_SUBST(SHLIB_DOT) AC_SUBST(SHLIB_LIBPREF) AC_SUBST(SHLIB_LIBSUFF) AC_SUBST(SHLIB_LIBVERSION) AC_SUBST(SHLIB_DLLVERSION) AC_SUBST(SHLIB_LIBS) AC_MSG_RESULT($SHLIB_STATUS) # SHLIB_STATUS is either `supported' or `unsupported'. If it's # `unsupported', turn off any default shared library building if test "$SHLIB_STATUS" = 'unsupported'; then opt_shared_libs=no fi # shared library versioning # quoted for m4 so I can use character classes SHLIB_MAJOR=[`expr "$LIBVERSION" : '\([0-9]\)\..*'`] SHLIB_MINOR=[`expr "$LIBVERSION" : '[0-9]\.\([0-9]\).*'`] AC_SUBST(SHLIB_MAJOR) AC_SUBST(SHLIB_MINOR) fi if test "$opt_static_libs" = "yes"; then STATIC_TARGET=static STATIC_INSTALL_TARGET=install-static fi if test "$opt_shared_libs" = "yes"; then SHARED_TARGET=shared SHARED_INSTALL_TARGET=install-shared fi AC_SUBST(STATIC_TARGET) AC_SUBST(SHARED_TARGET) AC_SUBST(STATIC_INSTALL_TARGET) AC_SUBST(SHARED_INSTALL_TARGET) if test "$opt_install_examples" = "yes"; then EXAMPLES_INSTALL_TARGET=install-examples fi AC_SUBST(EXAMPLES_INSTALL_TARGET) case "$build_os" in msdosdjgpp*) BUILD_DIR=`pwd.exe` ;; # to prevent //d/path/file *) BUILD_DIR=`pwd` ;; esac case "$BUILD_DIR" in *\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;; *) ;; esac AC_SUBST(BUILD_DIR) AC_SUBST(CFLAGS) AC_SUBST(LOCAL_CFLAGS) AC_SUBST(LOCAL_LDFLAGS) AC_SUBST(LOCAL_DEFS) AC_SUBST(AR) AC_SUBST(ARFLAGS) AC_SUBST(host_cpu) AC_SUBST(host_os) AC_SUBST(LIBVERSION) AC_SUBST(TERMCAP_LIB) AC_SUBST(TERMCAP_PKG_CONFIG_LIB) AC_OUTPUT([Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc], [ # Makefile uses this timestamp file to record whether config.h is up to date. echo > stamp-h ]) readline-8.0/xfree.c000664 000436 000120 00000002773 13052147566 014510 0ustar00chetadmin000000 000000 /* xfree.c -- safe version of free that ignores attempts to free NUL */ /* Copyright (C) 1991-2010,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) #include #endif #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include "xmalloc.h" /* **************************************************************** */ /* */ /* Memory Deallocation. */ /* */ /* **************************************************************** */ /* Use this as the function to call when adding unwind protects so we don't need to know what free() returns. */ void xfree (PTR_T string) { if (string) free (string); } readline-8.0/xmalloc.c000664 000436 000120 00000003732 13060556732 015030 0ustar00chetadmin000000 000000 /* xmalloc.c -- safe versions of malloc and realloc */ /* Copyright (C) 1991-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) #include #endif #include #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include "xmalloc.h" /* **************************************************************** */ /* */ /* Memory Allocation and Deallocation. */ /* */ /* **************************************************************** */ static void memory_error_and_abort (char *fname) { fprintf (stderr, "%s: out of virtual memory\n", fname); exit (2); } /* Return a pointer to free()able block of memory large enough to hold BYTES number of bytes. If the memory cannot be allocated, print an error message and abort. */ PTR_T xmalloc (size_t bytes) { PTR_T temp; temp = malloc (bytes); if (temp == 0) memory_error_and_abort ("xmalloc"); return (temp); } PTR_T xrealloc (PTR_T pointer, size_t bytes) { PTR_T temp; temp = pointer ? realloc (pointer, bytes) : malloc (bytes); if (temp == 0) memory_error_and_abort ("xrealloc"); return (temp); } readline-8.0/undo.c000644 000436 000120 00000017744 13347570306 014345 0ustar00chetadmin000000 000000 /* undo.c - manage list of changes to lines, offering opportunity to undo them */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #if defined (HAVE_UNISTD_H) # include /* for _POSIX_VERSION */ #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include /* System-specific feature definitions and include files. */ #include "rldefs.h" /* Some standard library routines. */ #include "readline.h" #include "history.h" #include "rlprivate.h" #include "xmalloc.h" extern void _hs_replace_history_data PARAMS((int, histdata_t *, histdata_t *)); extern HIST_ENTRY *_rl_saved_line_for_history; /* Non-zero tells rl_delete_text and rl_insert_text to not add to the undo list. */ int _rl_doing_an_undo = 0; /* How many unclosed undo groups we currently have. */ int _rl_undo_group_level = 0; /* The current undo list for THE_LINE. */ UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL; /* **************************************************************** */ /* */ /* Undo, and Undoing */ /* */ /* **************************************************************** */ static UNDO_LIST * alloc_undo_entry (enum undo_code what, int start, int end, char *text) { UNDO_LIST *temp; temp = (UNDO_LIST *)xmalloc (sizeof (UNDO_LIST)); temp->what = what; temp->start = start; temp->end = end; temp->text = text; temp->next = (UNDO_LIST *)NULL; return temp; } /* Remember how to undo something. Concatenate some undos if that seems right. */ void rl_add_undo (enum undo_code what, int start, int end, char *text) { UNDO_LIST *temp; temp = alloc_undo_entry (what, start, end, text); temp->next = rl_undo_list; rl_undo_list = temp; } /* Free an UNDO_LIST */ void _rl_free_undo_list (UNDO_LIST *ul) { UNDO_LIST *release; while (ul) { release = ul; ul = ul->next; if (release->what == UNDO_DELETE) xfree (release->text); xfree (release); } } /* Free the existing undo list. */ void rl_free_undo_list (void) { UNDO_LIST *release, *orig_list; orig_list = rl_undo_list; _rl_free_undo_list (rl_undo_list); rl_undo_list = (UNDO_LIST *)NULL; _hs_replace_history_data (-1, (histdata_t *)orig_list, (histdata_t *)NULL); } UNDO_LIST * _rl_copy_undo_entry (UNDO_LIST *entry) { UNDO_LIST *new; new = alloc_undo_entry (entry->what, entry->start, entry->end, (char *)NULL); new->text = entry->text ? savestring (entry->text) : 0; return new; } UNDO_LIST * _rl_copy_undo_list (UNDO_LIST *head) { UNDO_LIST *list, *new, *roving, *c; if (head == 0) return head; list = head; new = 0; while (list) { c = _rl_copy_undo_entry (list); if (new == 0) roving = new = c; else { roving->next = c; roving = roving->next; } list = list->next; } roving->next = 0; return new; } /* Undo the next thing in the list. Return 0 if there is nothing to undo, or non-zero if there was. */ int rl_do_undo (void) { UNDO_LIST *release, *search; int waiting_for_begin, start, end; HIST_ENTRY *cur, *temp; #define TRANS(i) ((i) == -1 ? rl_point : ((i) == -2 ? rl_end : (i))) start = end = waiting_for_begin = 0; do { if (rl_undo_list == 0) return (0); _rl_doing_an_undo = 1; RL_SETSTATE(RL_STATE_UNDOING); /* To better support vi-mode, a start or end value of -1 means rl_point, and a value of -2 means rl_end. */ if (rl_undo_list->what == UNDO_DELETE || rl_undo_list->what == UNDO_INSERT) { start = TRANS (rl_undo_list->start); end = TRANS (rl_undo_list->end); } switch (rl_undo_list->what) { /* Undoing deletes means inserting some text. */ case UNDO_DELETE: rl_point = start; rl_insert_text (rl_undo_list->text); xfree (rl_undo_list->text); break; /* Undoing inserts means deleting some text. */ case UNDO_INSERT: rl_delete_text (start, end); rl_point = start; break; /* Undoing an END means undoing everything 'til we get to a BEGIN. */ case UNDO_END: waiting_for_begin++; break; /* Undoing a BEGIN means that we are done with this group. */ case UNDO_BEGIN: if (waiting_for_begin) waiting_for_begin--; else rl_ding (); break; } _rl_doing_an_undo = 0; RL_UNSETSTATE(RL_STATE_UNDOING); release = rl_undo_list; rl_undo_list = rl_undo_list->next; release->next = 0; /* XXX */ /* If we are editing a history entry, make sure the change is replicated in the history entry's line */ cur = current_history (); if (cur && cur->data && (UNDO_LIST *)cur->data == release) { temp = replace_history_entry (where_history (), rl_line_buffer, (histdata_t)rl_undo_list); xfree (temp->line); FREE (temp->timestamp); xfree (temp); } /* Make sure there aren't any history entries with that undo list */ _hs_replace_history_data (-1, (histdata_t *)release, (histdata_t *)rl_undo_list); /* And make sure this list isn't anywhere in the saved line for history */ if (_rl_saved_line_for_history && _rl_saved_line_for_history->data) { /* Brute force; no finesse here */ search = (UNDO_LIST *)_rl_saved_line_for_history->data; if (search == release) _rl_saved_line_for_history->data = rl_undo_list; else { while (search->next) { if (search->next == release) { search->next = rl_undo_list; break; } search = search->next; } } } xfree (release); } while (waiting_for_begin); return (1); } #undef TRANS int _rl_fix_last_undo_of_type (int type, int start, int end) { UNDO_LIST *rl; for (rl = rl_undo_list; rl; rl = rl->next) { if (rl->what == type) { rl->start = start; rl->end = end; return 0; } } return 1; } /* Begin a group. Subsequent undos are undone as an atomic operation. */ int rl_begin_undo_group (void) { rl_add_undo (UNDO_BEGIN, 0, 0, 0); _rl_undo_group_level++; return 0; } /* End an undo group started with rl_begin_undo_group (). */ int rl_end_undo_group (void) { rl_add_undo (UNDO_END, 0, 0, 0); _rl_undo_group_level--; return 0; } /* Save an undo entry for the text from START to END. */ int rl_modifying (int start, int end) { if (start > end) { SWAP (start, end); } if (start != end) { char *temp = rl_copy_text (start, end); rl_begin_undo_group (); rl_add_undo (UNDO_DELETE, start, end, temp); rl_add_undo (UNDO_INSERT, start, end, (char *)NULL); rl_end_undo_group (); } return 0; } /* Revert the current line to its previous state. */ int rl_revert_line (int count, int key) { if (rl_undo_list == 0) rl_ding (); else { while (rl_undo_list) rl_do_undo (); #if defined (VI_MODE) if (rl_editing_mode == vi_mode) rl_point = rl_mark = 0; /* rl_end should be set correctly */ #endif } return 0; } /* Do some undoing of things that were done. */ int rl_undo_command (int count, int key) { if (count < 0) return 0; /* Nothing to do. */ while (count) { if (rl_do_undo ()) count--; else { rl_ding (); break; } } return 0; } readline-8.0/rlconf.h000664 000436 000000 00000005415 13053055752 014670 0ustar00chetwheel000000 000000 /* rlconf.h -- readline configuration definitions */ /* Copyright (C) 1992-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_RLCONF_H_) #define _RLCONF_H_ /* Define this if you want the vi-mode editing available. */ #define VI_MODE /* Define this to get an indication of file type when listing completions. */ #define VISIBLE_STATS /* Define this to get support for colors when listing completions and in other places. */ #define COLOR_SUPPORT /* This definition is needed by readline.c, rltty.c, and signals.c. */ /* If on, then readline handles signals in a way that doesn't suck. */ #define HANDLE_SIGNALS /* Ugly but working hack for binding prefix meta. */ #define PREFIX_META_HACK /* The next-to-last-ditch effort file name for a user-specific init file. */ #define DEFAULT_INPUTRC "~/.inputrc" /* The ultimate last-ditch filename for an init file -- system-wide. */ #define SYS_INPUTRC "/etc/inputrc" /* If defined, expand tabs to spaces. */ #define DISPLAY_TABS /* If defined, use the terminal escape sequence to move the cursor forward over a character when updating the line rather than rewriting it. */ /* #define HACK_TERMCAP_MOTION */ /* The string inserted by the `insert comment' command. */ #define RL_COMMENT_BEGIN_DEFAULT "#" /* Define this if you want code that allows readline to be used in an X `callback' style. */ #define READLINE_CALLBACKS /* Define this if you want the cursor to indicate insert or overwrite mode. */ /* #define CURSOR_MODE */ /* Define this if you want to enable code that talks to the Linux kernel tty auditing system. */ /* #define ENABLE_TTY_AUDIT_SUPPORT */ /* Defaults for the various editing mode indicators, inserted at the beginning of the last (maybe only) line of the prompt if show-mode-in-prompt is on */ #define RL_EMACS_MODESTR_DEFAULT "@" #define RL_EMACS_MODESTR_DEFLEN 1 #define RL_VI_INS_MODESTR_DEFAULT "(ins)" #define RL_VI_INS_MODESTR_DEFLEN 5 #define RL_VI_CMD_MODESTR_DEFAULT "(cmd)" #define RL_VI_CMD_MODESTR_DEFLEN 5 #endif /* _RLCONF_H_ */ readline-8.0/shell.c000664 000436 000120 00000011225 13052150101 014451 0ustar00chetadmin000000 000000 /* shell.c -- readline utility functions that are normally provided by bash when readline is linked as part of the shell. */ /* Copyright (C) 1997-2009,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_STRING_H) # include #else # include #endif /* !HAVE_STRING_H */ #if defined (HAVE_LIMITS_H) # include #endif #if defined (HAVE_FCNTL_H) #include #endif #if defined (HAVE_PWD_H) #include #endif #include #include "rlstdc.h" #include "rlshell.h" #include "rldefs.h" #include "xmalloc.h" #if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS) extern struct passwd *getpwuid PARAMS((uid_t)); #endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */ #ifndef NULL # define NULL 0 #endif #ifndef CHAR_BIT # define CHAR_BIT 8 #endif /* Nonzero if the integer type T is signed. */ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) /* Bound on length of the string representing an integer value of type T. Subtract one for the sign bit if T is signed; 302 / 1000 is log10 (2) rounded up; add one for integer division truncation; add one more for a minus sign if t is signed. */ #define INT_STRLEN_BOUND(t) \ ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \ + 1 + TYPE_SIGNED (t)) /* All of these functions are resolved from bash if we are linking readline as part of bash. */ /* Does shell-like quoting using single quotes. */ char * sh_single_quote (char *string) { register int c; char *result, *r, *s; result = (char *)xmalloc (3 + (4 * strlen (string))); r = result; *r++ = '\''; for (s = string; s && (c = *s); s++) { *r++ = c; if (c == '\'') { *r++ = '\\'; /* insert escaped single quote */ *r++ = '\''; *r++ = '\''; /* start new quoted string */ } } *r++ = '\''; *r = '\0'; return (result); } /* Set the environment variables LINES and COLUMNS to lines and cols, respectively. */ static char setenv_buf[INT_STRLEN_BOUND (int) + 1]; static char putenv_buf1[INT_STRLEN_BOUND (int) + 6 + 1]; /* sizeof("LINES=") == 6 */ static char putenv_buf2[INT_STRLEN_BOUND (int) + 8 + 1]; /* sizeof("COLUMNS=") == 8 */ void sh_set_lines_and_columns (int lines, int cols) { #if defined (HAVE_SETENV) sprintf (setenv_buf, "%d", lines); setenv ("LINES", setenv_buf, 1); sprintf (setenv_buf, "%d", cols); setenv ("COLUMNS", setenv_buf, 1); #else /* !HAVE_SETENV */ # if defined (HAVE_PUTENV) sprintf (putenv_buf1, "LINES=%d", lines); putenv (putenv_buf1); sprintf (putenv_buf2, "COLUMNS=%d", cols); putenv (putenv_buf2); # endif /* HAVE_PUTENV */ #endif /* !HAVE_SETENV */ } char * sh_get_env_value (const char *varname) { return ((char *)getenv (varname)); } char * sh_get_home_dir (void) { static char *home_dir = (char *)NULL; struct passwd *entry; if (home_dir) return (home_dir); home_dir = (char *)NULL; #if defined (HAVE_GETPWUID) # if defined (__TANDEM) entry = getpwnam (getlogin ()); # else entry = getpwuid (getuid ()); # endif if (entry) home_dir = savestring (entry->pw_dir); #endif #if defined (HAVE_GETPWENT) endpwent (); /* some systems need this */ #endif return (home_dir); } #if !defined (O_NDELAY) # if defined (FNDELAY) # define O_NDELAY FNDELAY # endif #endif int sh_unset_nodelay_mode (int fd) { #if defined (HAVE_FCNTL) int flags, bflags; if ((flags = fcntl (fd, F_GETFL, 0)) < 0) return -1; bflags = 0; #ifdef O_NONBLOCK bflags |= O_NONBLOCK; #endif #ifdef O_NDELAY bflags |= O_NDELAY; #endif if (flags & bflags) { flags &= ~bflags; return (fcntl (fd, F_SETFL, flags)); } #endif return 0; } readline-8.0/CHANGELOG000664 000436 000000 00000104006 13301621631 014431 0ustar00chetwheel000000 000000 [Readline-specific changelog. Descriptions of changes to the source are found in the bash changelog.] 6/9 --- Makefile.in - quote value of ${INSTALL_DATA} when passing it to makes in subdirectories 7/1 --- Makefile.in - don't pass INSTALL_DATA to a make in the `doc' subdirectory; let autoconf set the value itself in the Makefile - removed a stray `-' before $(RANLIB) in the `install' recipe doc/Makefile.in - add a VPATH assignment so the documentation is not remade if it's already up-to-date in the distribution configure.in - call AC_SUBST(LOCAL_LDFLAGS), since Makefile.in contains @LOCAL_LDFLAGS@ 7/9 --- config.h.in - add define lines for STRUCT_WINSIZE_IN_SYS_IOCTL and STRUCT_WINSIZE_IN_TERMIOS configure.in - call BASH_STRUCT_WINSIZE to look for the definition of `struct winsize' 7/17 ---- configure.in - call AC_MINIX config.h.in - add define line for AC_MINIX 7/18 ---- Makefile.in - add `install-shared' and `uninstall-shared' targets 8/4 --- Makefile.in - install and uninstall libhistory.a in the `install' and `uninstall' targets 9/4 --- configure.in - bumped LIBVERSION up to 2.1.1, indicating that this is patch level 1 to release 2.1 9/16 ---- Makefile.in - `make distclean' now descends into the `examples' subdir doc/Makefile.in - the `distclean' and `maintainer-clean' targets should remove Makefile examples/Makefile.in - added the various clean targets 4/2 --- configure.in - bumped LIBVERSION up to 2.2 4/18 ---- [readline-2.2 released] 4/20 ---- Makefile.in - make `libhistory.a' a dependency of `install' - fixed a typo in the recipe for `install' that copied libreadline.a to libhistory.old right after installing it 4/27 ---- doc/Makefile.in - install {readline,history}.info out of the source directory if they are not found in the current (build) directory -- only an issue if the libraries are built in a different directory than the source directory 5/1 --- support/shobj-conf - script from the bash distribution to do shared object and library configuration shlib/Makefile.in - new directory and makefile to handle building shared versions of libreadline and libhistory, controlled by support/shobj-conf 5/7 --- doc/Makefile.in - set SHELL to /bin/sh, rather than relying on make to be correct 5/14 ---- savestring.c - new file, moved from shell.c, for backwards compatibility Makefile.in, shlib/Makefile.in - make sure savestring.c is compiled and added to libreadline and libhistory [THERE ARE NO MORE #ifdef SHELL LINES IN THE C SOURCE FILES.] 5/15 ---- README - updated description of shared library creation for the new scheme [THERE ARE NO MORE #ifdef SHELL LINES IN ANY OF THE SOURCE FILES.] Makefile.in - bumped SHLIB_MAJOR up to 4 since we've augmented the library API - rlconf.h is now one of the installed headers, so applications can find out whether things like vi-mode are available in the installed libreadline 5/20 ---- configure.in - changed RL_LIBRARY_VERSION to 4.0 to match the version of the installed shared libraries 6/5 --- rlstdc.h - new file Makefile.in - rlstdc.h is now one of the installed headers 8/3 --- shlib/Makefile.in - made the suffix rule that creates xx.so from xx.c write the compiler output to `a.o', which is then mv'd to xx.so, because some compilers (Sun WSpro 4.2, for example) don't allow any suffixes other than `.o' for `cc -c' (not even `a.out') 9/15 ---- Makefile.in - AR and ARFLAGS are now substituted by configure, used in recipes that build the libraries configure.in - use AC_CHECK_PROG to check for ar - set ARFLAGS if it has not already been set in the environment 10/5 ---- Makefile.in - removed savestring.o from object file list 10/28 ----- shlib/Makefile.in - don't use a fixed filename in the .c.so suffix rule to avoid problems with parallel makes 12/21 ----- support/shlib-install - new script to install shared readline and history libraries shlib/Makefile.in - changed to call shlib-install for install and uninstall targets [readline-4.0-beta1 frozen] 12/22 ----- configure.in - call AC_SUBST for SHOBJ_XLDFLAGS and SHLIB_LIBS shlib/Makefile.in - SHOBJ_XLDFLAGS and SHLIB_LIBS are now substituted by configure - add $(SHLIB_LIBS) at end of command line that builds the shared libraries (currently needed only by AIX 4.2) 12/31 ----- MANIFEST, MANIFEST.doc - the TOC html files are no longer generated and no longer part of the distribution 2/18/1999 --------- configure.in - set MAKE_SHELL to /bin/sh and substitute into the Makefiles Makefile.in,{doc,examples,shlib}/Makefile.in - set SHELL from @MAKE_SHELL@ [readline-4.0 released] 3/11 ---- doc/Makefile.in - removed references to HTMLTOC, since separate HTML table-of-contents files are no longer created examples/Makefile.in - remove `*.exe' in clean target for MS-DOS Makefile.in - make `readline' target depend on ./libreadline.a - configure now substitutes TERMCAP_LIB into Makefile.in - use ${TERMCAP_LIB} instead of -ltermcap in recipe for `readline' - clean target now removes readline and readline.exe in case they get built configure.in - use `pwd.exe' to set BUILD_DIR on MS-DOS DJGPP 3/15 ---- support/shlib-install - Irix 5.x and Irix 6.x should install shared libraries like Solaris 2 - changes for installing on hp-ux 1[01].x 3/23 ---- configure.in - make sure that the $CC argument to shobj-conf is quoted 4/8 --- xmalloc.h, rlprivate.h, rlshell.h - new files Makefile.in,shlib/Makefile.in - add dependencies on xmalloc.h, rlshell.h - add xmalloc.h, rlprivate.h, rlshell.h to list of header files MANIFEST - add xmalloc.h, rlprivate.h, rlshell.h 4/9 --- Makefile.in,shlib/Makefile.in - add dependencies on rlprivate.h 4/13 ---- doc/Makefile.in - add variable, PSDVI, which is the desired resolution of the generated postscript files. Set to 300 because I don't have any 600-dpi printers - set LANGUAGE= before calling makeinfo, so messages are in English - add rluserman.{info,dvi,ps,html} to appropriate variables - add rules to create rluserman.{info,dvi,ps,html} - install and uninstall rluserman.info, but don't update the directory file in $(infodir) yet MANIFEST - add doc/rluserman.{texinfo,info,dvi,ps,html} 4/30 ---- configure.in - updated library version to 4.1 5/3 --- configure.in - SHLIB_MAJOR and SHLIB_MINOR shared library version numbers are constructed from $LIBRARY_VERSION and substituted into Makefiles 5/5 --- support/shlib-install - OSF/1 installs shared libraries like Solaris Makefile.in - broke the header file install and uninstall into two new targets: install-headers and uninstall-headers - install and uninstall depend on install-headers and uninstall-headers respectively - changed install-shared and uninstall-shared targets to depend on install-headers and uninstall-headers, respectively, so users may choose to install only the shared libraries. I'm not sure about the uninstall one yet -- maybe it should check whether or not the static libraries are installed and not remove the header files if they are 9/3 --- configure.in, config.h.in - added test for memmove (for later use) - changed version to 4.1-beta1 9/13 ---- examples/rlfe.c - Per Bothner's `rlfe' readline front-end program examples/Makefile.in - added rules to build rlfe 9/21 ---- support/shlib-install - changes to handle FreeBSD-3.x elf or a.out shared libraries, which have different semantics and need different naming conventions 1/24/2000 --------- doc/Makefile.in - remove *.bt and *.bts on `make clean' 2/4 --- configure.in - changed LIBVERSION to 4.1-beta5 3/17/2000 --------- [readline-4.1 released] 3/23 ---- Makefile.in - remove the `-t' argument to ranlib in the install recipe; some ranlibs don't have it and attempt to create a file named `-t' 3/27 ---- support/shlib-install - install shared libraries unwritable by anyone on HP-UX - changed symlinks to relative pathnames on all platforms shlib/Makefile.in - added missing `includedir' assignment, substituted by configure Makefile.in - added missing @SET_MAKE@ so configure can set $MAKE appropriately configure.in - add call to AC_PROG_MAKE_SET 8/30 ---- shlib/Makefile.in - change the soname bound into the shared libraries, so it includes only the major version number. If it includes the minor version, programs depending on it must be rebuilt (which may or may not be a bad thing) 9/6 --- examples/rlfe.c - add -l option to log input and output (-a option appends to logfile) - add -n option to set readline application name - add -v, -h options for version and help information - change a few things because getopt() is now used to parse arguments 9/12 ---- support/shlib-install - fix up the libname on HPUX 11 10/18 ----- configure.in - changed library version to 4.2-alpha 10/30 ----- configure.in - add -fsigned-char to LOCAL_CFLAGS for Linux running on the IBM S/390 Makefile.in - added new file, rltypedefs.h, installed by default with `make install' 11/2 ---- compat.c - new file, with backwards-compatibility function definitions Makefile.in,shlib/Makefile.in - make sure that compat.o/compat.so are built and linked apppropriately support/shobj-conf - picked up bash version, which means that shared libs built on linux and BSD/OS 4.x will have an soname that does not include the minor version number 11/13 ----- examples/rlfe.c - rlfe can perform filename completion for relative pathnames in the inferior process's context if the OS supports /proc/PID/cwd (linux does it OK, Solaris is slightly warped, none of the BSDs have it) 11/17/2000 ---------- [readline-4.2-alpha released] 11/27 ----- Makefile.in,shlib/Makefile.in - added dependencies for rltypedefs.h shlib/Makefile.in - changed dependencies on histlib.h to $(topdir)/histlib.h 1/22 ---- configure.in - changed release version to 4.2-beta 2/2 --- examples/Makefile.in - build histexamp as part of the examples 2/5 --- doc/Makefile.in - don't remove the dvi, postscript, html, info, and text `objects' on a `make distclean', only on a `make maintainer-clean' 3/6 --- doc/history.{0,3}, doc/history_3.ps - new manual page for history library doc/Makefile.in - rules to install and uninstall history.3 in ${man3dir} - rules to build history.0 and history_3.ps 4/2 --- configure.in - changed LIBVERSION to `4.2' 4/5 --- [readline-4.2 frozen] 4/9 --- [readline-4.2 released] 5/2 --- Makefile.in,{doc,examples,shlib}/Makefile.in - added support for DESTDIR installation root prefix, to support building packages doc/Makefile.in - add an info `dir' file entry for rluserman.info on `make install' - change man1ext to `.1' and man3ext to `.3' - install man pages with a $(man3ext) extension in the target directory - add support for installing html documentation if `htmldir' has a value Makefile.in - on `make install', install from the `shlib' directory, too - on `make uninstall', uninstall in the `doc' and `shlib' subdirectories, too support/shlib-install - add `freebsdelf*', `freebsdaout*', Hurd, `sysv4*', `sysv5*', `dgux*' targets for symlink creation 5/7 --- configure.in, config.h.in - check for , define HAVE_LIMITS_H if found 5/8 --- aclocal.m4 - pick up change to BASH_CHECK_LIB_TERMCAP that adds check for libtinfo (termcap-specific portion of ncurses-5.2) 5/9 --- configure.in - call AC_C_CONST to find out whether or not the compiler supports `const' config.h.in - placeholder for `const' define, if any 5/10 ---- configure.in - fix AC_CHECK_PROG(ar, ...) test to specify right value for the case where ar is not found; should produce a better error message 5/14 ---- configure.in,config.h.in - check for vsnprintf, define HAVE_VSNPRINTF if found 5/21 ---- configure.in, config.h.in - add checks for size_t, ssize_t 5/30 ---- configure.in - update autoconf to version 2.50, use in AC_PREREQ - changed AC_INIT to new flavor - added AC_CONFIG_SRCDIR - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS - call AC_C_PROTOTYPES - AC_RETSIGTYPE -> AC_TYPE_SIGNAL 8/22 ---- configure.in - updated the version number to 4.2a Makefile.in,shlib/Makefile.in - make sure tilde.o is built -DREADLINE_LIBRARY when being built as part of the standalone library, so it picks up the right include files 8/23 ---- support/shlib-install - support for Darwin/MacOS X shared library installation 9/24 ---- examples/readlinebuf.h - a new file, a C++ streambuf interface that uses readline for I/O. Donated by Dimitris Vyzovitis 10/9 ---- configure.in - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ [readline-4.2a-beta1 frozen] 10/15 ----- configure.in, config.h.in - check for , define HAVE_MEMORY_H if found - check for , define HAVE_STRINGS_H if found 10/18 ----- configure.in, config.h.in - check for isascii, define HAVE_ISASCII if found configure.in - changed the macro names from bash as appropriate: BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T 10/22 ----- configure.in - check for isxdigit with AC_CHECK_FUNCS config.h.in - new define for HAVE_ISXDIGIT 10/29 ----- configure.in, config.h.in - check for strpbrk with AC_CHECK_FUNCS, define HAVE_STRPBRK if found 11/1 ---- Makefile.in - make sure DESTDIR is passed to install and uninstall makes in subdirectories - when saving old copies of installed libraries, make sure we use DESTDIR for the old installation tree [readline-4.2a-rc1 frozen] 11/2 ---- Makefile.in, shlib/Makefile.in - don't put -I$(includedir) into CFLAGS 11/15 ----- [readline-4.2a released] 11/20 ----- examples/rlcat.c - new file examples/Makefile.in - changes for rlcat 11/28 ----- configure.in - default TERMCAP_LIB to -lcurses if $prefer_curses == yes (as when --with-curses is supplied) examples/Makefile.in - substitute @LDFLAGS@ in LDFLAGS assignment 11/29 ----- config.h.in - add necessary defines for multibyte include files and functions - add code to define HANDLE_MULTIBYTE if prerequisites are met configure.in - call BASH_CHECK_MULTIBYTE 12/14 ----- config.h.in - add #undef PROTOTYPES, filled in by AC_C_PROTOTYPES 12/17 ----- config.h.in - moved HANDLE_MULTIBYTE code to rlmbutil.h rlmbutil.h, mbutil.c - new files Makefile.in, shlib/Makefile.in - added rules for mbutil.c 12/20 ----- configure.in - added --enable-shared, --enable-static options to configure to say which libraries are built by default (both default to yes) - if SHLIB_STATUS == 'unsupported', turn off default shared library building - substitute new STATIC_TARGET, SHARED_TARGET, STATIC_INSTALL_TARGET, and SHARED_INSTALL_TARGET Makefile.in - `all' target now depends on (substituted) @STATIC_TARGET@ and @SHARED_TARGET@ - `install' target now depends on (substituted) @STATIC_INSTALL_TARGET@ and @SHARED_INSTALL_TARGET@ INSTALL, README - updated with new info about --enable-shared and --enable-static 1/10/2002 --------- configure.in - bumped the library version number to 4.3 1/24 ---- Makefile.in,shlib/Makefile.in - changes for new file, text.c, with character and text handling functions from readline.c 2/20 ---- {configure.config.h}.in - call AC_C_CHAR_UNSIGNED, define __CHAR_UNSIGNED__ if chars are unsigned by default 5/20 ---- doc/Makefile.in - new maybe-clean target that removes the generated documentation if the build directory differs from the source directory - distclean target now depends on maybe-clean 7/17 ---- [readline-4.3 released] 7/18 ---- shlib/Makefile.in - fix bad dependency: text.so: terminal.c, make it depend on text.c 8/7 --- support/shlib-install - break `linux' out into its own stanza: it seems that linux distributions are all moving to the following scheme: libreadline.so.4.3 installed version libreadline.so.4 -> libreadline.so.4.3 symlink libreadline.so -> libreadline.so.4 symlink 10/29 ----- support/shlib-install - change INSTALL_LINK[12] to use `&&' instead of `;' so it only tries the link if the cd succeeds; put ${echo} in there, too - use $LN instead of `ln -s' so it works on machines without symlinks - change special linux stanza to use cd before ln also - change to use $INSTALL_LINK1 and $INSTALL_LINK2 appropriately instead of explicit commands in various stanzas 2/1 --- config.h.in - add HAVE_MBRTOWC and HAVE_MBRLEN - add NO_MULTIBYTE_SUPPORT for new configure argument - add STDC_HEADERS configure.in - new argument --enable-multibyte (enabled by default), allows multibyte support to be turned off even on systems that support it - add check for ansi stdc headers with call to AC_HEADER_STDC 2/3 --- configure.in - add call to BASH_FUNC_CTYPE_NONASCII config.h.in - add CTYPE_NON_ASCII 2/20 ---- doc/manvers.texinfo - renamed to version.texi to match other GNU software - UPDATE-MONTH variable is now `UPDATED-MONTH' doc/{hist,rlman,rluserman}.texinfo - include version.texi doc/{rltech,rluser,hstech,hsuser}.texi - changed the suffix from `texinfo' to `texi' doc/Makefile.in - made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi doc/{rlman,rluserman}.texinfo - changed the suffix from `texinfo' to `texi' doc/hist.texinfo - renamed to history.texi to be more consistent 6/11 ---- shlib/Makefile.in - have configure substitute value of `@LDFLAGS@' into the assignment to SHLIB_XLDFLAGS 6/16 ---- configure.in - readline and history libraries are now at version 5.0 8/18 ---- support/shlib-install - support for FreeBSD-gnu (from Robert Millan) 12/4 ---- Makefile.in - add variables for localedir and the PACKAGE_* variables, auto-set by configure 12/9 ---- Makefile.in - use mkinstalldirs instead of mkdirs 4/22 ---- Makefile.in - separate doc install/uninstall out into two new targets: install-doc and uninstall-doc - make install-doc and uninstall-doc prerequisites of appropriate install and uninstall targets examples/rl-fgets.c - new example from Harold Levy that wraps fgets replacement functions that call readline in a shared library that can be interposed with LD_PRELOAD 7/27 ---- [readline-5.0 released] 11/15 ----- examples/rlfe/{ChangeLog,Makefile.in,README,config.h.in,configure,configure.in,extern.h,os.h,pty.c,rlfe.c,screen.h} - new version of rlfe, rlfe-0.4, from Per Bothner; now a standalone application 11/16 ----- shlib/Makefile.in - substitute TERMCAP_LIB in from configure configure.in - if SHLIB_LIBS doesn't include a termcap library (curses, ncurses, termcap, termlib), append the value of $TERMCAP_LIB to it 11/30 ----- configure.in - take out change from 11/16; it doesn't work for some systems (e.g., SunOS 4.x and Solaris 2.6) - add support for --enable-purify configure argument - pass TERMCAP_LIB in environment when calling shobj-conf examples/Makefile.in - add support for building examples with purify 1/23/2005 --------- configure.in - set BUILD_DIR to contain backslashes to escape any spaces in the directory name -- this is what make will accept in targets and prerequisites, so it's better than trying to use double quotes 2/25 ---- configure.in - change check for sys/ptem.h to include sys/stream.h if present, to avoid the `present but cannot be compiled' messages on Solaris and SVR4.2 (does anyone still use SVR4.2?) 5/7 --- configure.in - add cross-compiling support from the bash configure.in, which cygwin and mingw have apparently adopted - add check for pwd.h, fcntl.h - add checks for fcntl, kill system calls - add checks for getpw{ent,nam,uid} C library functions - pass a compile-time option through to Makefiles if cross-compiling config.h.in - add HAVE_PWD_H for , HAVE_FCNTL_H for - add HAVE_FCNTL, HAVE_KILL for respective system calls - add HAVE_GETPW{ENT,NAM,UID} for passwd functions Makefile.in,shlib/Makefile.in - @CROSS_COMPILE@ is substituted into DEFS (equal to -DCROSS_COMPILING if bash is being cross-compiled) 8/2 --- examples/Makefile.in - use $(READLINE_LIB) instead of -lreadline to get around MacOS X 10.4's preference for (incompatible) shared libraries over static libraries in the load path 8/11 ---- support/shobj-conf - new variable: SHLIB_LIBPREF, prefix for shared library name (defaults to `lib' - new variable: SHLIB_DLLVERSION, used on Cygwin to set the library version number - new variable: SHLIB_DOT, separator character between library name and suffix and version information (defaults to `.') - new stanza for cygwin to generate windows-compatible dll support/shlib-install - add new option `-b bindir' for systems like cygwin/windows that require it - new stanza for cygwin that installs a dll into $bindir and an implied link library into $libdir configure.in - substitute new variables from shobj-conf shlib/Makefile.in - substitute bindir, SHLIB_DOT, SHLIB_LIBPREF, SHLIB_DLLVERSION from configure - pass `-b $(bindir)' to shlib-install for install and uninstall targets - library names now use $SHLIB_LIBPREF and $SHLIB_DOT INSTALL,README - document new SHLIB_DOT, SHLIB_LIBPREF, and SHLIB_DLLVERSION variables 10/4 ---- [readline-5.1-beta1 frozen] 12/1 ---- configure.in - changed release status to `release' [readline-5.1 frozen] 12/9 ---- [readline-5.1 released] 12/14 ----- examples/rlfe/Makefile.in - add @LIBS@ to LIBS assignment to pick up extra libraries from configure 1/3/2006 -------- support/shlib-install - Install shared libraries with execute bit set on Linux 6/9 --- [readline-5.2-alpha frozen] 6/26 ---- configure.in - set CROSS_COMPILE to the empty string by default, so we don't inherit a random value from the environment 7/8 --- [readline-5.2-alpha released] [readline-5.2-beta released] 9/12 ---- config.h.in - add defines for wcscoll, iswctype, iswupper, iswlower, towupper, towlower functions - replace define for wctomb with one for wcrtomb - add defines for wchar_t, wint_t, wctype_t types 10/11 ----- [readline-5.2 released] 11/9 ---- examples/rlfe/{configure.in,Makefile.in,config.h.in,rlfe.c,pty.c} - portability fixes from Mike Frysinger 11/21 ----- Makefile.in - add `install-examples' and `uninstall-examples' targets examples/Makefile.in - add correct variables to build examples on Windows - add appropriate rules to install and uninstall example sources in $(datadir)/readline 11/27 ----- config.h.in - move #undef of HAVE_STRCOLL out of config.h.in, since autoconf tries to substitute it based on configure tests 4/27/2007 --------- examples/autoconf - new directory with example autoconf macros to detect readline and return information about the installed version 6/13 ---- support/shlib-install - changes to support AIX 5.x shared library installation 3/20/2008 --------- support/shlib-install - add support for NetBSD and Interix shared library installation 4/22 ---- support/wcwidth.c - updated implementation from 2007-05 7/18 ---- support/shlib-install - support for mingw32, contributed by Carlo Bramix 8/4 --- configure.in - changed to readline-6.0 8/18 ---- support/config.{guess,sub} - updated to newer versions from autoconf-2.62 distribution 3/5/2009 -------- support/shlib-install - take a new -V host_vendor argument - add ${host_vendor} to string tested in case statement for symlink creation section - add support for FreeBSD/gentoo, which uses Linux library naming scheme - change FreeBSD symlink rules, since FreeBSD 7+ has only ELF shared libraries. DragonflyBSD rules are the same. Fix from Timothy Redaelli shlib/Makefile.in - add definition of host_vendor, substituted by configure - add -V host_vendor argument to all invocations of shlib-install. Fix from Timothy Redaelli 3/10 ---- configure.in - add call to AC_SYS_LARGEFILE for readdir and largefile support on Linux config.h.in - add _FILE_OFFSET_BITS define 4/19 ---- Makefile.in - add targets for making and installing documentation required by GNU coding standards. Fix from Joseph Myers posixselect.h - pick up from bash. Inspired by Mike Frysinger 10/28 ----- support/shlib-install - decrease the default version of FreeBSD that installs shared libraries to 4.x. Advice from Peter Jeremy 12/18 ----- [readline-6.1-rc1 released] 12/23 ----- doc/Makefile.in - make sure $(topdir) is not ".." before removing all of the formatted documentation in `make distclean'. $(topdir) is set to `..' if readline is being built in the source directory. Fixes problem noticed by THOUMIN Damien 12/29 ----- [readline-6.1 frozen] 2/5/2010 -------- examples/Makefile.in - make sure to install example C files using $(srcdir)/$$f in case we're building outside the source directory. Bug report and fix from Peter Breitenlohner 7/25 ---- xfree.c - new file with xfree() implementation, moved from xmalloc.c 12/28 ----- {examples,shlib}/Makefile.in - Cygwin-based changes from Eric Blake 3/26/2011 --------- Makefile.in - don't ignore failures when building, installing, or cleaning in the shlib subdirectory. Sample patch from Mike Frysinger shlib/Makefile.in - split the install and uninstall targets into install-supported and install-unsupported targets that depend on the value of SHLIB_STATUS 4/2 --- {,shlib}/Makefile.in - add dependency for callback.o/callback.so on xmalloc.h. From Jan Kratochvil {,doc,examples,shlib}/Makefile.in - fix typo: htm target should be html. From Jan Kratochvil - remove `.' from VPATH. From Jan Kratochvil examples/rlfe/configure.in - quote AC_PROGRAM_SOURCE. From Jan Kratochvil 5/17 ---- config.h.in - WCWIDTH_BROKEN: new define, picked up from bash, defined on systems where wcwidth returns 1 for Unicode combining characters 11/28 ----- support/shlib-install - make sure solaris2 systems make the installed shared library executable. ldd warns about it otherwise. Bug and fix from Tim Mooney examples/hist_erasedups.c - new example program, shows how to erase duplicates from the history list examples/hist_purgecmd.c - new example program, shows how to remove all entries matching a string or pattern from the history list 1/12/2012 --------- colors.[ch],parse-colors.[ch]} - new files, part of color infrastructure support Makefile.in,shlib/Makefile.in - arrange to have colors.o and parse-colors.o added to library (static and shared versions) {configure,config.h}.in - check for stdbool.h, define HAVE_STDBOOL_H if found rldefs.h - COLOR_SUPPORT: if defined, compile in colors.c and parse-colors.c for color support 1/18 ---- {configure,config.h}.in - new check: check for AUDIT_USER_TTY defined in , define HAVE_DECL_AUDIT_USER_TTY if both are found 8/7 --- configure.in - AC_CANONICAL_BUILD: call to set the build_xxx variables - use $build_os instead of $host_os to decide when DJGPP should run `pwd.exe' to figure out the build directory. Report and fix from Yao Qi 8/29 ---- configure.ac - new name for configure.in MANIFEST,Makefile.in - configure.in -> configure.ac 1/5/2013 -------- configure.ac - move version number up to 6.3 1/31 ---- configure.ac - use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it will find $host-prefixed versions of utilities. Report and fix from Mike Frysinger 3/4 --- Makefile.in - PACKAGE_TARNAME, docdir: new variables substituted by autoconf - OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary documentation files to be installed into $(docdir) - install: add new rule to install $(OTHER_DOCS) - uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS) 4/29 ---- Makefile.in - installdirs: make sure to create $(DESTDIR)$(docdir). Report from 1/27/2014 --------- Makefile.in - install-examples: should not depend on `shared', since the examples themselves are not built using shared libraries. Report from support/shobj-conf - [from bash] darwin: changed the install_name embedded into the shared library to contain only the major version number, not the minor one. The idea is that the minor versions should all be API/ABI compatible, and it is better to link automatically with the latest one. Idea from Max Horn 2/26/2014 --------- [readline-6.3 released] 3/14 ---- shlib/Makefile.in - fix typo in dependency list for vi_mode.so: it should not depend on just $(topdir). Report and fix from Natanael Copa 4/15 ---- {.,shlib,examples}/Makefile.in - make sure $(INCLUDES) appears before $(CPPFLAGS) in the various CFLAGS assignments so readline looks in its own source and build directories (INCLUDES) before some directories specified by the user or builder (CPPFLAGS). Report and fix from Max Horn 6/2 --- config.h.in - use correct symbols: HAVE_STRUCT_DIRENT_D_INO, HAVE_STRUCT_DIRENT_D_FILENO HAVE_STRUCT_DIRENT_D_NAMLEN. They don't really matter, but they are what posixdir.h looks for. Report from Ross Burton 6/11 ---- readline.pc.in - new file, config file for pkgconfig. Patch to add from Jirka Klimes {MANIFEST,configure.ac,Makefile.in} - readline.pc: changes to create file for pkgconfig 10/13 ----- doc/Makefile.in - readline.pdf, history.pdf, rluserman.pdf: use texi2dvi --pdf to generate these. Suggestion from Siep Kroonenberg 11/29 ----- config.h.in - HAVE_PSELECT: define if pselect(2) available configure.ac - check for pselect(2), define HAVE_PSELECT if found 12/29 ----- configure.ac - bump version number up to 6.4 1/6/2015 -------- configure.ac,config.h.in - look for ncurses/termcap.h, define HAVE_NCURSES_TERMCAP_H 4/20 ---- configure.ac - add template definitions set by AC_USE_SYSTEM_EXTENSIONS from a report from Andreas Schwab 4/24 ---- configure.ac,config.h.in - add check for sys/ioctl.h to AC_CHECK_HEADERS, define HAVE_SYS_IOCTL_H if found 5/29 ---- configure.ac - bump library version to 7.0 because of addition of rl_callback_sigcleanup 8/26 ---- configure.ac,Makefile.in,examples/Makefile.in - remove references to purify 11/21 ----- configure.ac,config.h.in - fnmatch: check for libc function, define HAVE_FNMATCH if found. Now used by vi-mode history search functions 7/12 ---- Makefile.in,examples/Makefile.in - add support for building with address sanitizer, using new target `asan' 4/23/2018 --------- configure.ac - TERMCAP_PKG_CONFIG_LIB: new variable, defined from TERMCAP_LIB, defaults to termcap readline.pc.in - change Requires.private to use TERMCAP_PKG_CONFIG_LIB instead of hardcoded `tinfo'. Report and fix from Thomas Petazzoni 5/4 --- Makefile.in - new targets to install and uninstall the `readline.pc' pkgconfig file - install-{static,shared}: add install-pc to the list of prereqs - uninstall{,-shared}: add uninstall-pc to list of prereqs. Change from Thomas Petazzoni configure.ac,Makefile.in - add new configure option to optionally disable installing the source code examples. From Thomas Petazzoni 5/23 ---- Makefile.in - install-pc: make sure we install readline.pc into an existing pkgconfig directory. Report from ilove zfs 5/24 ---- Makefile.in - installdirs: create $(pkgconfigdir) if it doesn't exist readline-8.0/keymaps.c000664 000436 000120 00000007750 13207062672 015044 0ustar00chetadmin000000 000000 /* keymaps.c -- Functions and keymaps for the GNU Readline library. */ /* Copyright (C) 1988,1989-2009,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include /* for FILE * definition for readline.h */ #include "readline.h" #include "rlconf.h" #include "emacs_keymap.c" #if defined (VI_MODE) #include "vi_keymap.c" #endif #include "xmalloc.h" /* **************************************************************** */ /* */ /* Functions for manipulating Keymaps. */ /* */ /* **************************************************************** */ /* Return a new, empty keymap. Free it with free() when you are done. */ Keymap rl_make_bare_keymap (void) { register int i; Keymap keymap; keymap = (Keymap)xmalloc (KEYMAP_SIZE * sizeof (KEYMAP_ENTRY)); for (i = 0; i < KEYMAP_SIZE; i++) { keymap[i].type = ISFUNC; keymap[i].function = (rl_command_func_t *)NULL; } #if 0 for (i = 'A'; i < ('Z' + 1); i++) { keymap[i].type = ISFUNC; keymap[i].function = rl_do_lowercase_version; } #endif return (keymap); } /* A convenience function that returns 1 if there are no keys bound to functions in KEYMAP */ int rl_empty_keymap (Keymap keymap) { int i; for (i = 0; i < ANYOTHERKEY; i++) { if (keymap[i].type != ISFUNC || keymap[i].function) return 0; } return 1; } /* Return a new keymap which is a copy of MAP. Just copies pointers, does not copy text of macros or descend into child keymaps. */ Keymap rl_copy_keymap (Keymap map) { register int i; Keymap temp; temp = rl_make_bare_keymap (); for (i = 0; i < KEYMAP_SIZE; i++) { temp[i].type = map[i].type; temp[i].function = map[i].function; } return (temp); } /* Return a new keymap with the printing characters bound to rl_insert, the uppercase Meta characters bound to run their lowercase equivalents, and the Meta digits bound to produce numeric arguments. */ Keymap rl_make_keymap (void) { register int i; Keymap newmap; newmap = rl_make_bare_keymap (); /* All ASCII printing characters are self-inserting. */ for (i = ' '; i < 127; i++) newmap[i].function = rl_insert; newmap[TAB].function = rl_insert; newmap[RUBOUT].function = rl_rubout; /* RUBOUT == 127 */ newmap[CTRL('H')].function = rl_rubout; #if KEYMAP_SIZE > 128 /* Printing characters in ISO Latin-1 and some 8-bit character sets. */ for (i = 128; i < 256; i++) newmap[i].function = rl_insert; #endif /* KEYMAP_SIZE > 128 */ return (newmap); } /* Free the storage associated with MAP. */ void rl_discard_keymap (Keymap map) { int i; if (map == 0) return; for (i = 0; i < KEYMAP_SIZE; i++) { switch (map[i].type) { case ISFUNC: break; case ISKMAP: rl_discard_keymap ((Keymap)map[i].function); xfree ((char *)map[i].function); break; case ISMACR: xfree ((char *)map[i].function); break; } } } /* Convenience function that discards, then frees, MAP. */ void rl_free_keymap (Keymap map) { rl_discard_keymap (map); xfree ((char *)map); } readline-8.0/doc/000775 000436 000000 00000000000 13413164027 013770 5ustar00chetwheel000000 000000 readline-8.0/readline.c000664 000436 000000 00000121616 13323430030 015147 0ustar00chetwheel000000 000000 /* readline.c -- a general facility for reading lines of input with emacs style editing and completion. */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #include "posixstat.h" #include #if defined (HAVE_SYS_FILE_H) # include #endif /* HAVE_SYS_FILE_H */ #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_LOCALE_H) # include #endif #include #include "posixjmp.h" #include #if !defined (errno) extern int errno; #endif /* !errno */ /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "rlmbutil.h" #if defined (__EMX__) # define INCL_DOSPROCESS # include #endif /* __EMX__ */ /* Some standard library routines. */ #include "readline.h" #include "history.h" #include "rlprivate.h" #include "rlshell.h" #include "xmalloc.h" #ifndef RL_LIBRARY_VERSION # define RL_LIBRARY_VERSION "5.1" #endif #ifndef RL_READLINE_VERSION # define RL_READLINE_VERSION 0x0501 #endif extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); #if defined (COLOR_SUPPORT) extern void _rl_parse_colors PARAMS((void)); /* XXX */ #endif /* Forward declarations used in this file. */ static char *readline_internal PARAMS((void)); static void readline_initialize_everything PARAMS((void)); static void bind_arrow_keys_internal PARAMS((Keymap)); static void bind_arrow_keys PARAMS((void)); static void bind_bracketed_paste_prefix PARAMS((void)); static void readline_default_bindings PARAMS((void)); static void reset_default_bindings PARAMS((void)); static int _rl_subseq_result PARAMS((int, Keymap, int, int)); static int _rl_subseq_getchar PARAMS((int)); /* **************************************************************** */ /* */ /* Line editing input utility */ /* */ /* **************************************************************** */ const char *rl_library_version = RL_LIBRARY_VERSION; int rl_readline_version = RL_READLINE_VERSION; /* True if this is `real' readline as opposed to some stub substitute. */ int rl_gnu_readline_p = 1; /* A pointer to the keymap that is currently in use. By default, it is the standard emacs keymap. */ Keymap _rl_keymap = emacs_standard_keymap; /* The current style of editing. */ int rl_editing_mode = emacs_mode; /* The current insert mode: input (the default) or overwrite */ int rl_insert_mode = RL_IM_DEFAULT; /* Non-zero if we called this function from _rl_dispatch(). It's present so functions can find out whether they were called from a key binding or directly from an application. */ int rl_dispatching; /* Non-zero if the previous command was a kill command. */ int _rl_last_command_was_kill = 0; /* The current value of the numeric argument specified by the user. */ int rl_numeric_arg = 1; /* Non-zero if an argument was typed. */ int rl_explicit_arg = 0; /* Temporary value used while generating the argument. */ int rl_arg_sign = 1; /* Non-zero means we have been called at least once before. */ static int rl_initialized; #if 0 /* If non-zero, this program is running in an EMACS buffer. */ static int running_in_emacs; #endif /* Flags word encapsulating the current readline state. */ unsigned long rl_readline_state = RL_STATE_NONE; /* The current offset in the current input line. */ int rl_point; /* Mark in the current input line. */ int rl_mark; /* Length of the current input line. */ int rl_end; /* Make this non-zero to return the current input_line. */ int rl_done; /* The last function executed by readline. */ rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL; /* Top level environment for readline_internal (). */ procenv_t _rl_top_level; /* The streams we interact with. */ FILE *_rl_in_stream, *_rl_out_stream; /* The names of the streams that we do input and output to. */ FILE *rl_instream = (FILE *)NULL; FILE *rl_outstream = (FILE *)NULL; /* Non-zero means echo characters as they are read. Defaults to no echo; set to 1 if there is a controlling terminal, we can get its attributes, and the attributes include `echo'. Look at rltty.c:prepare_terminal_settings for the code that sets it. */ int _rl_echoing_p = 0; /* Current prompt. */ char *rl_prompt = (char *)NULL; int rl_visible_prompt_length = 0; /* Set to non-zero by calling application if it has already printed rl_prompt and does not want readline to do it the first time. */ int rl_already_prompted = 0; /* The number of characters read in order to type this complete command. */ int rl_key_sequence_length = 0; /* If non-zero, then this is the address of a function to call just before readline_internal_setup () prints the first prompt. */ rl_hook_func_t *rl_startup_hook = (rl_hook_func_t *)NULL; /* If non-zero, this is the address of a function to call just before readline_internal_setup () returns and readline_internal starts reading input characters. */ rl_hook_func_t *rl_pre_input_hook = (rl_hook_func_t *)NULL; /* What we use internally. You should always refer to RL_LINE_BUFFER. */ static char *the_line; /* The character that can generate an EOF. Really read from the terminal driver... just defaulted here. */ int _rl_eof_char = CTRL ('D'); /* Non-zero makes this the next keystroke to read. */ int rl_pending_input = 0; /* If non-zero when readline_internal returns, it means we found EOF */ int _rl_eof_found = 0; /* Pointer to a useful terminal name. */ const char *rl_terminal_name = (const char *)NULL; /* Non-zero means to always use horizontal scrolling in line display. */ int _rl_horizontal_scroll_mode = 0; /* Non-zero means to display an asterisk at the starts of history lines which have been modified. */ int _rl_mark_modified_lines = 0; /* The style of `bell' notification preferred. This can be set to NO_BELL, AUDIBLE_BELL, or VISIBLE_BELL. */ int _rl_bell_preference = AUDIBLE_BELL; /* String inserted into the line by rl_insert_comment (). */ char *_rl_comment_begin; /* Keymap holding the function currently being executed. */ Keymap rl_executing_keymap; /* Keymap we're currently using to dispatch. */ Keymap _rl_dispatching_keymap; /* Non-zero means to erase entire line, including prompt, on empty input lines. */ int rl_erase_empty_line = 0; /* Non-zero means to read only this many characters rather than up to a character bound to accept-line. */ int rl_num_chars_to_read = 0; /* Line buffer and maintenance. */ char *rl_line_buffer = (char *)NULL; int rl_line_buffer_len = 0; /* Key sequence `contexts' */ _rl_keyseq_cxt *_rl_kscxt = 0; int rl_executing_key; char *rl_executing_keyseq = 0; int _rl_executing_keyseq_size = 0; /* Timeout (specified in milliseconds) when reading characters making up an ambiguous multiple-key sequence */ int _rl_keyseq_timeout = 500; #define RESIZE_KEYSEQ_BUFFER() \ do \ { \ if (rl_key_sequence_length + 2 >= _rl_executing_keyseq_size) \ { \ _rl_executing_keyseq_size += 16; \ rl_executing_keyseq = xrealloc (rl_executing_keyseq, _rl_executing_keyseq_size); \ } \ } \ while (0); /* Forward declarations used by the display, termcap, and history code. */ /* **************************************************************** */ /* */ /* `Forward' declarations */ /* */ /* **************************************************************** */ /* Non-zero means do not parse any lines other than comments and parser directives. */ unsigned char _rl_parsing_conditionalized_out = 0; /* Non-zero means to convert characters with the meta bit set to escape-prefixed characters so we can indirect through emacs_meta_keymap or vi_escape_keymap. */ int _rl_convert_meta_chars_to_ascii = 1; /* Non-zero means to output characters with the meta bit set directly rather than as a meta-prefixed escape sequence. */ int _rl_output_meta_chars = 0; /* Non-zero means to look at the termios special characters and bind them to equivalent readline functions at startup. */ int _rl_bind_stty_chars = 1; /* Non-zero means to go through the history list at every newline (or whenever rl_done is set and readline returns) and revert each line to its initial state. */ int _rl_revert_all_at_newline = 0; /* Non-zero means to honor the termios ECHOCTL bit and echo control characters corresponding to keyboard-generated signals. */ int _rl_echo_control_chars = 1; /* Non-zero means to prefix the displayed prompt with a character indicating the editing mode: @ for emacs, : for vi-command, + for vi-insert. */ int _rl_show_mode_in_prompt = 0; /* Non-zero means to attempt to put the terminal in `bracketed paste mode', where it will prefix pasted text with an escape sequence and send another to mark the end of the paste. */ int _rl_enable_bracketed_paste = 0; /* **************************************************************** */ /* */ /* Top Level Functions */ /* */ /* **************************************************************** */ /* Non-zero means treat 0200 bit in terminal input as Meta bit. */ int _rl_meta_flag = 0; /* Forward declaration */ /* Set up the prompt and expand it. Called from readline() and rl_callback_handler_install (). */ int rl_set_prompt (const char *prompt) { FREE (rl_prompt); rl_prompt = prompt ? savestring (prompt) : (char *)NULL; rl_display_prompt = rl_prompt ? rl_prompt : ""; rl_visible_prompt_length = rl_expand_prompt (rl_prompt); return 0; } /* Read a line of input. Prompt with PROMPT. An empty PROMPT means none. A return value of NULL means that EOF was encountered. */ char * readline (const char *prompt) { char *value; #if 0 int in_callback; #endif /* If we are at EOF return a NULL string. */ if (rl_pending_input == EOF) { rl_clear_pending_input (); return ((char *)NULL); } #if 0 /* If readline() is called after installing a callback handler, temporarily turn off the callback state to avoid ensuing messiness. Patch supplied by the gdb folks. XXX -- disabled. This can be fooled and readline left in a strange state by a poorly-timed longjmp. */ if (in_callback = RL_ISSTATE (RL_STATE_CALLBACK)) RL_UNSETSTATE (RL_STATE_CALLBACK); #endif rl_set_prompt (prompt); rl_initialize (); if (rl_prep_term_function) (*rl_prep_term_function) (_rl_meta_flag); #if defined (HANDLE_SIGNALS) rl_set_signals (); #endif value = readline_internal (); if (rl_deprep_term_function) (*rl_deprep_term_function) (); #if defined (HANDLE_SIGNALS) rl_clear_signals (); #endif #if 0 if (in_callback) RL_SETSTATE (RL_STATE_CALLBACK); #endif #if HAVE_DECL_AUDIT_USER_TTY && defined (HAVE_LIBAUDIT_H) && defined (ENABLE_TTY_AUDIT_SUPPORT) if (value) _rl_audit_tty (value); #endif return (value); } #if defined (READLINE_CALLBACKS) # define STATIC_CALLBACK #else # define STATIC_CALLBACK static #endif STATIC_CALLBACK void readline_internal_setup (void) { char *nprompt; _rl_in_stream = rl_instream; _rl_out_stream = rl_outstream; /* Enable the meta key only for the duration of readline(), if this terminal has one and the terminal has been initialized */ if (_rl_enable_meta & RL_ISSTATE (RL_STATE_TERMPREPPED)) _rl_enable_meta_key (); if (rl_startup_hook) (*rl_startup_hook) (); #if defined (VI_MODE) if (rl_editing_mode == vi_mode) rl_vi_insertion_mode (1, 'i'); /* don't want to reset last */ else #endif /* VI_MODE */ if (_rl_show_mode_in_prompt) _rl_reset_prompt (); /* If we're not echoing, we still want to at least print a prompt, because rl_redisplay will not do it for us. If the calling application has a custom redisplay function, though, let that function handle it. */ if (_rl_echoing_p == 0 && rl_redisplay_function == rl_redisplay) { if (rl_prompt && rl_already_prompted == 0) { nprompt = _rl_strip_prompt (rl_prompt); fprintf (_rl_out_stream, "%s", nprompt); fflush (_rl_out_stream); xfree (nprompt); } } else { if (rl_prompt && rl_already_prompted) rl_on_new_line_with_prompt (); else rl_on_new_line (); (*rl_redisplay_function) (); } if (rl_pre_input_hook) (*rl_pre_input_hook) (); RL_CHECK_SIGNALS (); } STATIC_CALLBACK char * readline_internal_teardown (int eof) { char *temp; HIST_ENTRY *entry; RL_CHECK_SIGNALS (); /* Restore the original of this history line, iff the line that we are editing was originally in the history, AND the line has changed. */ entry = current_history (); if (entry && rl_undo_list) { temp = savestring (the_line); rl_revert_line (1, 0); entry = replace_history_entry (where_history (), the_line, (histdata_t)NULL); _rl_free_history_entry (entry); strcpy (the_line, temp); xfree (temp); } if (_rl_revert_all_at_newline) _rl_revert_all_lines (); /* At any rate, it is highly likely that this line has an undo list. Get rid of it now. */ if (rl_undo_list) rl_free_undo_list (); /* Disable the meta key, if this terminal has one and we were told to use it. The check whether or not we sent the enable string is in _rl_disable_meta_key(); the flag is set in _rl_enable_meta_key */ _rl_disable_meta_key (); /* Restore normal cursor, if available. */ _rl_set_insert_mode (RL_IM_INSERT, 0); return (eof ? (char *)NULL : savestring (the_line)); } void _rl_internal_char_cleanup (void) { #if defined (VI_MODE) /* In vi mode, when you exit insert mode, the cursor moves back over the previous character. We explicitly check for that here. */ if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap) rl_vi_check (); #endif /* VI_MODE */ if (rl_num_chars_to_read && rl_end >= rl_num_chars_to_read) { (*rl_redisplay_function) (); _rl_want_redisplay = 0; rl_newline (1, '\n'); } if (rl_done == 0) { (*rl_redisplay_function) (); _rl_want_redisplay = 0; } /* If the application writer has told us to erase the entire line if the only character typed was something bound to rl_newline, do so. */ if (rl_erase_empty_line && rl_done && rl_last_func == rl_newline && rl_point == 0 && rl_end == 0) _rl_erase_entire_line (); } STATIC_CALLBACK int #if defined (READLINE_CALLBACKS) readline_internal_char (void) #else readline_internal_charloop (void) #endif { static int lastc, eof_found; int c, code, lk, r; lastc = EOF; #if !defined (READLINE_CALLBACKS) eof_found = 0; while (rl_done == 0) { #endif lk = _rl_last_command_was_kill; #if defined (HAVE_POSIX_SIGSETJMP) code = sigsetjmp (_rl_top_level, 0); #else code = setjmp (_rl_top_level); #endif if (code) { (*rl_redisplay_function) (); _rl_want_redisplay = 0; /* If we get here, we're not being called from something dispatched from _rl_callback_read_char(), which sets up its own value of _rl_top_level (saving and restoring the old, of course), so we can just return here. */ if (RL_ISSTATE (RL_STATE_CALLBACK)) return (0); } if (rl_pending_input == 0) { /* Then initialize the argument and number of keys read. */ _rl_reset_argument (); rl_executing_keyseq[rl_key_sequence_length = 0] = '\0'; } RL_SETSTATE(RL_STATE_READCMD); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_READCMD); /* look at input.c:rl_getc() for the circumstances under which this will be returned; punt immediately on read error without converting it to a newline; assume that rl_read_key has already called the signal handler. */ if (c == READERR) { #if defined (READLINE_CALLBACKS) RL_SETSTATE(RL_STATE_DONE); return (rl_done = 1); #else eof_found = 1; break; #endif } /* EOF typed to a non-blank line is ^D the first time, EOF the second time in a row. This won't return any partial line read from the tty. If we want to change this, to force any existing line to be returned when read(2) reads EOF, for example, this is the place to change. */ if (c == EOF && rl_end) { if (RL_SIG_RECEIVED ()) { RL_CHECK_SIGNALS (); if (rl_signal_event_hook) (*rl_signal_event_hook) (); /* XXX */ } /* XXX - reading two consecutive EOFs returns EOF */ if (RL_ISSTATE (RL_STATE_TERMPREPPED)) { if (lastc == _rl_eof_char || lastc == EOF) rl_end = 0; else c = _rl_eof_char; } else c = NEWLINE; } /* The character _rl_eof_char typed to blank line, and not as the previous character is interpreted as EOF. This doesn't work when READLINE_CALLBACKS is defined, so hitting a series of ^Ds will erase all the chars on the line and then return EOF. */ if (((c == _rl_eof_char && lastc != c) || c == EOF) && rl_end == 0) { #if defined (READLINE_CALLBACKS) RL_SETSTATE(RL_STATE_DONE); return (rl_done = 1); #else eof_found = 1; break; #endif } lastc = c; r = _rl_dispatch ((unsigned char)c, _rl_keymap); RL_CHECK_SIGNALS (); /* If there was no change in _rl_last_command_was_kill, then no kill has taken place. Note that if input is pending we are reading a prefix command, so nothing has changed yet. */ if (rl_pending_input == 0 && lk == _rl_last_command_was_kill) _rl_last_command_was_kill = 0; _rl_internal_char_cleanup (); #if defined (READLINE_CALLBACKS) return 0; #else } return (eof_found); #endif } #if defined (READLINE_CALLBACKS) static int readline_internal_charloop (void) { int eof = 1; while (rl_done == 0) eof = readline_internal_char (); return (eof); } #endif /* READLINE_CALLBACKS */ /* Read a line of input from the global rl_instream, doing output on the global rl_outstream. If rl_prompt is non-null, then that is our prompt. */ static char * readline_internal (void) { readline_internal_setup (); _rl_eof_found = readline_internal_charloop (); return (readline_internal_teardown (_rl_eof_found)); } void _rl_init_line_state (void) { rl_point = rl_end = rl_mark = 0; the_line = rl_line_buffer; the_line[0] = 0; } void _rl_set_the_line (void) { the_line = rl_line_buffer; } #if defined (READLINE_CALLBACKS) _rl_keyseq_cxt * _rl_keyseq_cxt_alloc (void) { _rl_keyseq_cxt *cxt; cxt = (_rl_keyseq_cxt *)xmalloc (sizeof (_rl_keyseq_cxt)); cxt->flags = cxt->subseq_arg = cxt->subseq_retval = 0; cxt->okey = 0; cxt->ocxt = _rl_kscxt; cxt->childval = 42; /* sentinel value */ return cxt; } void _rl_keyseq_cxt_dispose (_rl_keyseq_cxt *cxt) { xfree (cxt); } void _rl_keyseq_chain_dispose (void) { _rl_keyseq_cxt *cxt; while (_rl_kscxt) { cxt = _rl_kscxt; _rl_kscxt = _rl_kscxt->ocxt; _rl_keyseq_cxt_dispose (cxt); } } #endif static int _rl_subseq_getchar (int key) { int k; if (key == ESC) RL_SETSTATE(RL_STATE_METANEXT); RL_SETSTATE(RL_STATE_MOREINPUT); k = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); if (key == ESC) RL_UNSETSTATE(RL_STATE_METANEXT); return k; } #if defined (READLINE_CALLBACKS) int _rl_dispatch_callback (_rl_keyseq_cxt *cxt) { int nkey, r; /* For now */ /* The first time this context is used, we want to read input and dispatch on it. When traversing the chain of contexts back `up', we want to use the value from the next context down. We're simulating recursion using a chain of contexts. */ if ((cxt->flags & KSEQ_DISPATCHED) == 0) { nkey = _rl_subseq_getchar (cxt->okey); if (nkey < 0) { _rl_abort_internal (); return -1; } r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg); cxt->flags |= KSEQ_DISPATCHED; } else r = cxt->childval; /* For now */ if (r != -3) /* don't do this if we indicate there will be other matches */ r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ)); RL_CHECK_SIGNALS (); /* We only treat values < 0 specially to simulate recursion. */ if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ { _rl_keyseq_chain_dispose (); RL_UNSETSTATE (RL_STATE_MULTIKEY); return r; } if (r != -3) /* magic value that says we added to the chain */ _rl_kscxt = cxt->ocxt; if (_rl_kscxt) _rl_kscxt->childval = r; if (r != -3) _rl_keyseq_cxt_dispose (cxt); return r; } #endif /* READLINE_CALLBACKS */ /* Do the command associated with KEY in MAP. If the associated command is really a keymap, then read another key, and dispatch into that map. */ int _rl_dispatch (register int key, Keymap map) { _rl_dispatching_keymap = map; return _rl_dispatch_subseq (key, map, 0); } int _rl_dispatch_subseq (register int key, Keymap map, int got_subseq) { int r, newkey; char *macro; rl_command_func_t *func; #if defined (READLINE_CALLBACKS) _rl_keyseq_cxt *cxt; #endif if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii) { if (map[ESC].type == ISKMAP) { if (RL_ISSTATE (RL_STATE_MACRODEF)) _rl_add_macro_char (ESC); RESIZE_KEYSEQ_BUFFER (); rl_executing_keyseq[rl_key_sequence_length++] = ESC; map = FUNCTION_TO_KEYMAP (map, ESC); key = UNMETA (key); return (_rl_dispatch (key, map)); } else rl_ding (); return 0; } if (RL_ISSTATE (RL_STATE_MACRODEF)) _rl_add_macro_char (key); r = 0; switch (map[key].type) { case ISFUNC: func = map[key].function; if (func) { /* Special case rl_do_lowercase_version (). */ if (func == rl_do_lowercase_version) /* Should we do anything special if key == ANYOTHERKEY? */ return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map)); rl_executing_keymap = map; rl_executing_key = key; RESIZE_KEYSEQ_BUFFER(); rl_executing_keyseq[rl_key_sequence_length++] = key; rl_executing_keyseq[rl_key_sequence_length] = '\0'; rl_dispatching = 1; RL_SETSTATE(RL_STATE_DISPATCHING); r = (*func) (rl_numeric_arg * rl_arg_sign, key); RL_UNSETSTATE(RL_STATE_DISPATCHING); rl_dispatching = 0; /* If we have input pending, then the last command was a prefix command. Don't change the state of rl_last_func. Otherwise, remember the last command executed in this variable. */ if (rl_pending_input == 0 && map[key].function != rl_digit_argument) rl_last_func = map[key].function; RL_CHECK_SIGNALS (); } else if (map[ANYOTHERKEY].function) { /* OK, there's no function bound in this map, but there is a shadow function that was overridden when the current keymap was created. Return -2 to note that. */ if (RL_ISSTATE (RL_STATE_MACROINPUT)) _rl_prev_macro_key (); else _rl_unget_char (key); return -2; } else if (got_subseq) { /* Return -1 to note that we're in a subsequence, but we don't have a matching key, nor was one overridden. This means we need to back up the recursion chain and find the last subsequence that is bound to a function. */ if (RL_ISSTATE (RL_STATE_MACROINPUT)) _rl_prev_macro_key (); else _rl_unget_char (key); return -1; } else { #if defined (READLINE_CALLBACKS) RL_UNSETSTATE (RL_STATE_MULTIKEY); _rl_keyseq_chain_dispose (); #endif _rl_abort_internal (); return -1; } break; case ISKMAP: if (map[key].function != 0) { #if defined (VI_MODE) /* The only way this test will be true is if a subsequence has been bound starting with ESC, generally the arrow keys. What we do is check whether there's input in the queue, which there generally will be if an arrow key has been pressed, and, if there's not, just dispatch to (what we assume is) rl_vi_movement_mode right away. This is essentially an input test with a zero timeout (by default) or a timeout determined by the value of `keyseq-timeout' */ /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued takes microseconds, so multiply by 1000 */ if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap && (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && _rl_pushed_input_available () == 0 && _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key))); /* This is a very specific test. It can possibly be generalized in the future, but for now it handles a specific case of ESC being the last character in a keyboard macro. */ if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap && (RL_ISSTATE (RL_STATE_INPUTPENDING) == 0) && (RL_ISSTATE (RL_STATE_MACROINPUT) && _rl_peek_macro_key () == 0) && _rl_pushed_input_available () == 0 && _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key))); #endif RESIZE_KEYSEQ_BUFFER (); rl_executing_keyseq[rl_key_sequence_length++] = key; _rl_dispatching_keymap = FUNCTION_TO_KEYMAP (map, key); /* Allocate new context here. Use linked contexts (linked through cxt->ocxt) to simulate recursion */ #if defined (READLINE_CALLBACKS) # if defined (VI_MODE) /* If we're redoing a vi mode command and we know there is a shadowed function corresponding to this key, just call it -- all the redoable vi mode commands already have all the input they need, and rl_vi_redo assumes that one call to rl_dispatch is sufficient to complete the command. */ if (_rl_vi_redoing && RL_ISSTATE (RL_STATE_CALLBACK) && map[ANYOTHERKEY].function != 0) return (_rl_subseq_result (-2, map, key, got_subseq)); # endif if (RL_ISSTATE (RL_STATE_CALLBACK)) { /* Return 0 only the first time, to indicate success to _rl_callback_read_char. The rest of the time, we're called from _rl_dispatch_callback, so we return -3 to indicate special handling is necessary. */ r = RL_ISSTATE (RL_STATE_MULTIKEY) ? -3 : 0; cxt = _rl_keyseq_cxt_alloc (); if (got_subseq) cxt->flags |= KSEQ_SUBSEQ; cxt->okey = key; cxt->oldmap = map; cxt->dmap = _rl_dispatching_keymap; cxt->subseq_arg = got_subseq || cxt->dmap[ANYOTHERKEY].function; RL_SETSTATE (RL_STATE_MULTIKEY); _rl_kscxt = cxt; return r; /* don't indicate immediate success */ } #endif /* Tentative inter-character timeout for potential multi-key sequences? If no input within timeout, abort sequence and act as if we got non-matching input. */ /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued takes microseconds, so multiply by 1000 */ if (_rl_keyseq_timeout > 0 && (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && _rl_pushed_input_available () == 0 && _rl_dispatching_keymap[ANYOTHERKEY].function && _rl_input_queued (_rl_keyseq_timeout*1000) == 0) return (_rl_subseq_result (-2, map, key, got_subseq)); newkey = _rl_subseq_getchar (key); if (newkey < 0) { _rl_abort_internal (); return -1; } r = _rl_dispatch_subseq (newkey, _rl_dispatching_keymap, got_subseq || map[ANYOTHERKEY].function); return _rl_subseq_result (r, map, key, got_subseq); } else { _rl_abort_internal (); /* XXX */ return -1; } break; case ISMACR: if (map[key].function != 0) { rl_executing_keyseq[rl_key_sequence_length] = '\0'; macro = savestring ((char *)map[key].function); _rl_with_macro_input (macro); return 0; } break; } #if defined (VI_MODE) if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && key != ANYOTHERKEY && _rl_dispatching_keymap == vi_movement_keymap && _rl_vi_textmod_command (key)) _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); #endif return (r); } static int _rl_subseq_result (int r, Keymap map, int key, int got_subseq) { Keymap m; int type, nt; rl_command_func_t *func, *nf; if (r == -2) /* We didn't match anything, and the keymap we're indexed into shadowed a function previously bound to that prefix. Call the function. The recursive call to _rl_dispatch_subseq has already taken care of pushing any necessary input back onto the input queue with _rl_unget_char. */ { m = _rl_dispatching_keymap; type = m[ANYOTHERKEY].type; func = m[ANYOTHERKEY].function; if (type == ISFUNC && func == rl_do_lowercase_version) r = _rl_dispatch (_rl_to_lower ((unsigned char)key), map); else if (type == ISFUNC) { /* If we shadowed a function, whatever it is, we somehow need a keymap with map[key].func == shadowed-function. Let's use this one. Then we can dispatch using the original key, since there are commands (e.g., in vi mode) for which it matters. */ nt = m[key].type; nf = m[key].function; m[key].type = type; m[key].function = func; /* Don't change _rl_dispatching_keymap, set it here */ _rl_dispatching_keymap = map; /* previous map */ r = _rl_dispatch_subseq (key, m, 0); m[key].type = nt; m[key].function = nf; } else /* We probably shadowed a keymap, so keep going. */ r = _rl_dispatch (ANYOTHERKEY, m); } else if (r < 0 && map[ANYOTHERKEY].function) { /* We didn't match (r is probably -1), so return something to tell the caller that it should try ANYOTHERKEY for an overridden function. */ if (RL_ISSTATE (RL_STATE_MACROINPUT)) _rl_prev_macro_key (); else _rl_unget_char (key); _rl_dispatching_keymap = map; return -2; } else if (r < 0 && got_subseq) /* XXX */ { /* OK, back up the chain. */ if (RL_ISSTATE (RL_STATE_MACROINPUT)) _rl_prev_macro_key (); else _rl_unget_char (key); _rl_dispatching_keymap = map; return -1; } return r; } /* **************************************************************** */ /* */ /* Initializations */ /* */ /* **************************************************************** */ /* Initialize readline (and terminal if not already). */ int rl_initialize (void) { /* If we have never been called before, initialize the terminal and data structures. */ if (rl_initialized == 0) { RL_SETSTATE(RL_STATE_INITIALIZING); readline_initialize_everything (); RL_UNSETSTATE(RL_STATE_INITIALIZING); rl_initialized++; RL_SETSTATE(RL_STATE_INITIALIZED); } else (void)_rl_init_locale (); /* check current locale */ /* Initialize the current line information. */ _rl_init_line_state (); /* We aren't done yet. We haven't even gotten started yet! */ rl_done = 0; RL_UNSETSTATE(RL_STATE_DONE); /* Tell the history routines what is going on. */ _rl_start_using_history (); /* Make the display buffer match the state of the line. */ rl_reset_line_state (); /* No such function typed yet. */ rl_last_func = (rl_command_func_t *)NULL; /* Parsing of key-bindings begins in an enabled state. */ _rl_parsing_conditionalized_out = 0; #if defined (VI_MODE) if (rl_editing_mode == vi_mode) _rl_vi_initialize_line (); #endif /* Each line starts in insert mode (the default). */ _rl_set_insert_mode (RL_IM_DEFAULT, 1); return 0; } #if 0 #if defined (__EMX__) static void _emx_build_environ (void) { TIB *tibp; PIB *pibp; char *t, **tp; int c; DosGetInfoBlocks (&tibp, &pibp); t = pibp->pib_pchenv; for (c = 1; *t; c++) t += strlen (t) + 1; tp = environ = (char **)xmalloc ((c + 1) * sizeof (char *)); t = pibp->pib_pchenv; while (*t) { *tp++ = t; t += strlen (t) + 1; } *tp = 0; } #endif /* __EMX__ */ #endif /* Initialize the entire state of the world. */ static void readline_initialize_everything (void) { #if 0 #if defined (__EMX__) if (environ == 0) _emx_build_environ (); #endif #endif #if 0 /* Find out if we are running in Emacs -- UNUSED. */ running_in_emacs = sh_get_env_value ("EMACS") != (char *)0; #endif /* Set up input and output if they are not already set up. */ if (!rl_instream) rl_instream = stdin; if (!rl_outstream) rl_outstream = stdout; /* Bind _rl_in_stream and _rl_out_stream immediately. These values may change, but they may also be used before readline_internal () is called. */ _rl_in_stream = rl_instream; _rl_out_stream = rl_outstream; /* Allocate data structures. */ if (rl_line_buffer == 0) rl_line_buffer = (char *)xmalloc (rl_line_buffer_len = DEFAULT_BUFFER_SIZE); /* Initialize the terminal interface. */ if (rl_terminal_name == 0) rl_terminal_name = sh_get_env_value ("TERM"); _rl_init_terminal_io (rl_terminal_name); /* Bind tty characters to readline functions. */ readline_default_bindings (); /* Initialize the function names. */ rl_initialize_funmap (); /* Decide whether we should automatically go into eight-bit mode. */ _rl_init_eightbit (); /* Read in the init file. */ rl_read_init_file ((char *)NULL); /* XXX */ if (_rl_horizontal_scroll_mode && _rl_term_autowrap) { _rl_screenwidth--; _rl_screenchars -= _rl_screenheight; } /* Override the effect of any `set keymap' assignments in the inputrc file. */ rl_set_keymap_from_edit_mode (); /* Try to bind a common arrow key prefix, if not already bound. */ bind_arrow_keys (); /* Bind the bracketed paste prefix assuming that the user will enable it on terminals that support it. */ bind_bracketed_paste_prefix (); /* If the completion parser's default word break characters haven't been set yet, then do so now. */ if (rl_completer_word_break_characters == (char *)NULL) rl_completer_word_break_characters = (char *)rl_basic_word_break_characters; #if defined (COLOR_SUPPORT) if (_rl_colored_stats || _rl_colored_completion_prefix) _rl_parse_colors (); #endif rl_executing_keyseq = malloc (_rl_executing_keyseq_size = 16); if (rl_executing_keyseq) rl_executing_keyseq[0] = '\0'; } /* If this system allows us to look at the values of the regular input editing characters, then bind them to their readline equivalents, iff the characters are not bound to keymaps. */ static void readline_default_bindings (void) { if (_rl_bind_stty_chars) rl_tty_set_default_bindings (_rl_keymap); } /* Reset the default bindings for the terminal special characters we're interested in back to rl_insert and read the new ones. */ static void reset_default_bindings (void) { if (_rl_bind_stty_chars) { rl_tty_unset_default_bindings (_rl_keymap); rl_tty_set_default_bindings (_rl_keymap); } } /* Bind some common arrow key sequences in MAP. */ static void bind_arrow_keys_internal (Keymap map) { Keymap xkeymap; xkeymap = _rl_keymap; _rl_keymap = map; #if defined (__MSDOS__) rl_bind_keyseq_if_unbound ("\033[0A", rl_get_previous_history); rl_bind_keyseq_if_unbound ("\033[0B", rl_backward_char); rl_bind_keyseq_if_unbound ("\033[0C", rl_forward_char); rl_bind_keyseq_if_unbound ("\033[0D", rl_get_next_history); #endif rl_bind_keyseq_if_unbound ("\033[A", rl_get_previous_history); rl_bind_keyseq_if_unbound ("\033[B", rl_get_next_history); rl_bind_keyseq_if_unbound ("\033[C", rl_forward_char); rl_bind_keyseq_if_unbound ("\033[D", rl_backward_char); rl_bind_keyseq_if_unbound ("\033[H", rl_beg_of_line); rl_bind_keyseq_if_unbound ("\033[F", rl_end_of_line); rl_bind_keyseq_if_unbound ("\033OA", rl_get_previous_history); rl_bind_keyseq_if_unbound ("\033OB", rl_get_next_history); rl_bind_keyseq_if_unbound ("\033OC", rl_forward_char); rl_bind_keyseq_if_unbound ("\033OD", rl_backward_char); rl_bind_keyseq_if_unbound ("\033OH", rl_beg_of_line); rl_bind_keyseq_if_unbound ("\033OF", rl_end_of_line); /* Key bindings for control-arrow keys */ rl_bind_keyseq_if_unbound ("\033[1;5C", rl_forward_word); rl_bind_keyseq_if_unbound ("\033[1;5D", rl_backward_word); rl_bind_keyseq_if_unbound ("\033[3;5~", rl_kill_word); /* Key bindings for alt-arrow keys */ rl_bind_keyseq_if_unbound ("\033[1;3C", rl_forward_word); rl_bind_keyseq_if_unbound ("\033[1;3D", rl_backward_word); #if defined (__MINGW32__) rl_bind_keyseq_if_unbound ("\340H", rl_get_previous_history); rl_bind_keyseq_if_unbound ("\340P", rl_get_next_history); rl_bind_keyseq_if_unbound ("\340M", rl_forward_char); rl_bind_keyseq_if_unbound ("\340K", rl_backward_char); rl_bind_keyseq_if_unbound ("\340G", rl_beg_of_line); rl_bind_keyseq_if_unbound ("\340O", rl_end_of_line); rl_bind_keyseq_if_unbound ("\340S", rl_delete); rl_bind_keyseq_if_unbound ("\340R", rl_overwrite_mode); /* These may or may not work because of the embedded NUL. */ rl_bind_keyseq_if_unbound ("\\000H", rl_get_previous_history); rl_bind_keyseq_if_unbound ("\\000P", rl_get_next_history); rl_bind_keyseq_if_unbound ("\\000M", rl_forward_char); rl_bind_keyseq_if_unbound ("\\000K", rl_backward_char); rl_bind_keyseq_if_unbound ("\\000G", rl_beg_of_line); rl_bind_keyseq_if_unbound ("\\000O", rl_end_of_line); rl_bind_keyseq_if_unbound ("\\000S", rl_delete); rl_bind_keyseq_if_unbound ("\\000R", rl_overwrite_mode); #endif _rl_keymap = xkeymap; } /* Try and bind the common arrow key prefixes after giving termcap and the inputrc file a chance to bind them and create `real' keymaps for the arrow key prefix. */ static void bind_arrow_keys (void) { bind_arrow_keys_internal (emacs_standard_keymap); #if defined (VI_MODE) bind_arrow_keys_internal (vi_movement_keymap); /* Unbind vi_movement_keymap[ESC] to allow users to repeatedly hit ESC in vi command mode while still allowing the arrow keys to work. */ if (vi_movement_keymap[ESC].type == ISKMAP) rl_bind_keyseq_in_map ("\033", (rl_command_func_t *)NULL, vi_movement_keymap); bind_arrow_keys_internal (vi_insertion_keymap); #endif } static void bind_bracketed_paste_prefix (void) { Keymap xkeymap; xkeymap = _rl_keymap; _rl_keymap = emacs_standard_keymap; rl_bind_keyseq_if_unbound (BRACK_PASTE_PREF, rl_bracketed_paste_begin); _rl_keymap = vi_insertion_keymap; rl_bind_keyseq_if_unbound (BRACK_PASTE_PREF, rl_bracketed_paste_begin); _rl_keymap = xkeymap; } /* **************************************************************** */ /* */ /* Saving and Restoring Readline's state */ /* */ /* **************************************************************** */ int rl_save_state (struct readline_state *sp) { if (sp == 0) return -1; sp->point = rl_point; sp->end = rl_end; sp->mark = rl_mark; sp->buffer = rl_line_buffer; sp->buflen = rl_line_buffer_len; sp->ul = rl_undo_list; sp->prompt = rl_prompt; sp->rlstate = rl_readline_state; sp->done = rl_done; sp->kmap = _rl_keymap; sp->lastfunc = rl_last_func; sp->insmode = rl_insert_mode; sp->edmode = rl_editing_mode; sp->kseq = rl_executing_keyseq; sp->kseqlen = rl_key_sequence_length; sp->inf = rl_instream; sp->outf = rl_outstream; sp->pendingin = rl_pending_input; sp->macro = rl_executing_macro; sp->catchsigs = rl_catch_signals; sp->catchsigwinch = rl_catch_sigwinch; sp->entryfunc = rl_completion_entry_function; sp->menuentryfunc = rl_menu_completion_entry_function; sp->ignorefunc = rl_ignore_some_completions_function; sp->attemptfunc = rl_attempted_completion_function; sp->wordbreakchars = rl_completer_word_break_characters; return (0); } int rl_restore_state (struct readline_state *sp) { if (sp == 0) return -1; rl_point = sp->point; rl_end = sp->end; rl_mark = sp->mark; the_line = rl_line_buffer = sp->buffer; rl_line_buffer_len = sp->buflen; rl_undo_list = sp->ul; rl_prompt = sp->prompt; rl_readline_state = sp->rlstate; rl_done = sp->done; _rl_keymap = sp->kmap; rl_last_func = sp->lastfunc; rl_insert_mode = sp->insmode; rl_editing_mode = sp->edmode; rl_executing_keyseq = sp->kseq; rl_key_sequence_length = sp->kseqlen; rl_instream = sp->inf; rl_outstream = sp->outf; rl_pending_input = sp->pendingin; rl_executing_macro = sp->macro; rl_catch_signals = sp->catchsigs; rl_catch_sigwinch = sp->catchsigwinch; rl_completion_entry_function = sp->entryfunc; rl_menu_completion_entry_function = sp->menuentryfunc; rl_ignore_some_completions_function = sp->ignorefunc; rl_attempted_completion_function = sp->attemptfunc; rl_completer_word_break_characters = sp->wordbreakchars; return (0); } readline-8.0/mbutil.c000644 000436 000120 00000025076 13302032340 014647 0ustar00chetadmin000000 000000 /* mbutil.c -- readline multibyte character utility functions */ /* Copyright (C) 2001-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #include #include "posixjmp.h" #if defined (HAVE_UNISTD_H) # include /* for _POSIX_VERSION */ #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include #include /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "rlmbutil.h" #if defined (TIOCSTAT_IN_SYS_IOCTL) # include #endif /* TIOCSTAT_IN_SYS_IOCTL */ /* Some standard library routines. */ #include "readline.h" #include "rlprivate.h" #include "xmalloc.h" /* Declared here so it can be shared between the readline and history libraries. */ #if defined (HANDLE_MULTIBYTE) int rl_byte_oriented = 0; #else int rl_byte_oriented = 1; #endif /* Ditto */ int _rl_utf8locale = 0; /* **************************************************************** */ /* */ /* Multibyte Character Utility Functions */ /* */ /* **************************************************************** */ #if defined(HANDLE_MULTIBYTE) /* **************************************************************** */ /* */ /* UTF-8 specific Character Utility Functions */ /* */ /* **************************************************************** */ /* Return the length in bytes of the possibly-multibyte character beginning at S. Encoding is UTF-8. */ static int _rl_utf8_mblen (const char *s, size_t n) { unsigned char c, c1; if (s == 0) return (0); /* no shift states */ if (n <= 0) return (-1); c = (unsigned char)*s; if (c < 0x80) return (c != 0); if (c >= 0xc2) { c1 = (unsigned char)s[1]; if (c < 0xe0) { if (n >= 2 && (s[1] ^ 0x80) < 0x40) return 2; } else if (c < 0xf0) { if (n >= 3 && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 && (c >= 0xe1 || c1 >= 0xa0) && (c != 0xed || c1 < 0xa0)) return 3; } else if (c < 0xf8) { if (n >= 4 && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 && (s[3] ^ 0x80) < 0x40 && (c >= 0xf1 || c1 >= 0x90) && (c < 0xf4 || (c == 0xf4 && c1 < 0x90))) return 4; } } /* invalid or incomplete multibyte character */ return -1; } static int _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_zero) { size_t tmp, len; mbstate_t ps; int point; wchar_t wc; tmp = 0; memset(&ps, 0, sizeof (mbstate_t)); if (seed < 0) seed = 0; if (count <= 0) return seed; point = seed + _rl_adjust_point (string, seed, &ps); /* if _rl_adjust_point returns -1, the character or string is invalid. treat as a byte. */ if (point == seed - 1) /* invalid */ return seed + 1; /* if this is true, means that seed was not pointing to a byte indicating the beginning of a multibyte character. Correct the point and consume one char. */ if (seed < point) count--; while (count > 0) { len = strlen (string + point); if (len == 0) break; if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) { tmp = 1; wc = (wchar_t) string[point]; memset(&ps, 0, sizeof(mbstate_t)); } else tmp = mbrtowc (&wc, string+point, len, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* invalid bytes. assume a byte represents a character */ point++; count--; /* reset states. */ memset(&ps, 0, sizeof(mbstate_t)); } else if (MB_NULLWCH (tmp)) break; /* found wide '\0' */ else { /* valid bytes */ point += tmp; if (find_non_zero) { if (WCWIDTH (wc) == 0) continue; else count--; } else count--; } } if (find_non_zero) { tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && WCWIDTH (wc) == 0) { point += tmp; tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); } } return point; } /*static*/ int _rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero) { mbstate_t ps; int prev, non_zero_prev, point, length; size_t tmp; wchar_t wc; memset(&ps, 0, sizeof(mbstate_t)); length = strlen(string); if (seed < 0) return 0; else if (length < seed) return length; prev = non_zero_prev = point = 0; while (point < seed) { if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) { tmp = 1; wc = (wchar_t) string[point]; memset(&ps, 0, sizeof(mbstate_t)); } else tmp = mbrtowc (&wc, string + point, length - point, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* in this case, bytes are invalid or too short to compose multibyte char, so assume that the first byte represents a single character anyway. */ tmp = 1; /* clear the state of the byte sequence, because in this case effect of mbstate is undefined */ memset(&ps, 0, sizeof (mbstate_t)); /* Since we're assuming that this byte represents a single non-zero-width character, don't forget about it. */ prev = point; } else if (MB_NULLWCH (tmp)) break; /* Found '\0' char. Can this happen? */ else { if (find_non_zero) { if (WCWIDTH (wc) != 0) prev = point; } else prev = point; } point += tmp; } return prev; } /* return the number of bytes parsed from the multibyte sequence starting at src, if a non-L'\0' wide character was recognized. It returns 0, if a L'\0' wide character was recognized. It returns (size_t)(-1), if an invalid multibyte sequence was encountered. It returns (size_t)(-2) if it couldn't parse a complete multibyte character. */ int _rl_get_char_len (char *src, mbstate_t *ps) { size_t tmp, l; int mb_cur_max; /* Look at no more than MB_CUR_MAX characters */ l = (size_t)strlen (src); if (_rl_utf8locale && l > 0 && UTF8_SINGLEBYTE(*src)) tmp = (*src != 0) ? 1 : 0; else { mb_cur_max = MB_CUR_MAX; tmp = mbrlen((const char *)src, (l < mb_cur_max) ? l : mb_cur_max, ps); } if (tmp == (size_t)(-2)) { /* too short to compose multibyte char */ if (ps) memset (ps, 0, sizeof(mbstate_t)); return -2; } else if (tmp == (size_t)(-1)) { /* invalid to compose multibyte char */ /* initialize the conversion state */ if (ps) memset (ps, 0, sizeof(mbstate_t)); return -1; } else if (tmp == (size_t)0) return 0; else return (int)tmp; } /* compare the specified two characters. If the characters matched, return 1. Otherwise return 0. */ int _rl_compare_chars (char *buf1, int pos1, mbstate_t *ps1, char *buf2, int pos2, mbstate_t *ps2) { int i, w1, w2; if ((w1 = _rl_get_char_len (&buf1[pos1], ps1)) <= 0 || (w2 = _rl_get_char_len (&buf2[pos2], ps2)) <= 0 || (w1 != w2) || (buf1[pos1] != buf2[pos2])) return 0; for (i = 1; i < w1; i++) if (buf1[pos1+i] != buf2[pos2+i]) return 0; return 1; } /* adjust pointed byte and find mbstate of the point of string. adjusted point will be point <= adjusted_point, and returns differences of the byte(adjusted_point - point). if point is invalid (point < 0 || more than string length), it returns -1 */ int _rl_adjust_point (char *string, int point, mbstate_t *ps) { size_t tmp; int length, pos; tmp = 0; pos = 0; length = strlen(string); if (point < 0) return -1; if (length < point) return -1; while (pos < point) { if (_rl_utf8locale && UTF8_SINGLEBYTE(string[pos])) tmp = 1; else tmp = mbrlen (string + pos, length - pos, ps); if (MB_INVALIDCH ((size_t)tmp)) { /* in this case, bytes are invalid or too short to compose multibyte char, so assume that the first byte represents a single character anyway. */ pos++; /* clear the state of the byte sequence, because in this case effect of mbstate is undefined */ if (ps) memset (ps, 0, sizeof (mbstate_t)); } else if (MB_NULLWCH (tmp)) pos++; else pos += tmp; } return (pos - point); } int _rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length) { int i; if ((end - seed) < length) return 0; for (i = 0; i < length; i++) if (string[seed + i] != mbchar[i]) return 0; return 1; } wchar_t _rl_char_value (char *buf, int ind) { size_t tmp; wchar_t wc; mbstate_t ps; int l; if (MB_LEN_MAX == 1 || rl_byte_oriented) return ((wchar_t) buf[ind]); if (_rl_utf8locale && UTF8_SINGLEBYTE(buf[ind])) return ((wchar_t) buf[ind]); l = strlen (buf); if (ind >= l - 1) return ((wchar_t) buf[ind]); if (l < ind) /* Sanity check */ l = strlen (buf+ind); memset (&ps, 0, sizeof (mbstate_t)); tmp = mbrtowc (&wc, buf + ind, l - ind, &ps); if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp)) return ((wchar_t) buf[ind]); return wc; } #endif /* HANDLE_MULTIBYTE */ /* Find next `count' characters started byte point of the specified seed. If flags is MB_FIND_NONZERO, we look for non-zero-width multibyte characters. */ #undef _rl_find_next_mbchar int _rl_find_next_mbchar (char *string, int seed, int count, int flags) { #if defined (HANDLE_MULTIBYTE) return _rl_find_next_mbchar_internal (string, seed, count, flags); #else return (seed + count); #endif } /* Find previous character started byte point of the specified seed. Returned point will be point <= seed. If flags is MB_FIND_NONZERO, we look for non-zero-width multibyte characters. */ #undef _rl_find_prev_mbchar int _rl_find_prev_mbchar (char *string, int seed, int flags) { #if defined (HANDLE_MULTIBYTE) return _rl_find_prev_mbchar_internal (string, seed, flags); #else return ((seed == 0) ? seed : seed - 1); #endif } readline-8.0/COPYING000644 000436 000000 00000104513 11050304560 014251 0ustar00chetwheel000000 000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . readline-8.0/display.c000644 000436 000120 00000313016 13354275154 015035 0ustar00chetadmin000000 000000 /* display.c -- readline redisplay facility. */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #include "posixstat.h" #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include #ifdef __MSDOS__ # include #endif /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "rlmbutil.h" /* Termcap library stuff. */ #include "tcap.h" /* Some standard library routines. */ #include "readline.h" #include "history.h" #include "rlprivate.h" #include "xmalloc.h" #if !defined (strchr) && !defined (__STDC__) extern char *strchr (), *strrchr (); #endif /* !strchr && !__STDC__ */ static void update_line PARAMS((char *, char *, int, int, int, int)); static void space_to_eol PARAMS((int)); static void delete_chars PARAMS((int)); static void insert_some_chars PARAMS((char *, int, int)); static void open_some_spaces PARAMS((int)); static void cr PARAMS((void)); static void redraw_prompt PARAMS((char *)); /* Values for FLAGS */ #define PMT_MULTILINE 0x01 static char *expand_prompt PARAMS((char *, int, int *, int *, int *, int *)); /* State of visible and invisible lines. */ struct line_state { char *line; int *lbreaks; int lbsize; #if defined (HANDLE_MULTIBYTE) int wbsize; int *wrapped_line; #endif }; /* The line display buffers. One is the line currently displayed on the screen. The other is the line about to be displayed. */ static struct line_state line_state_array[2]; static struct line_state *line_state_visible = &line_state_array[0]; static struct line_state *line_state_invisible = &line_state_array[1]; static int line_structures_initialized = 0; /* Backwards-compatible names. */ #define inv_lbreaks (line_state_invisible->lbreaks) #define inv_lbsize (line_state_invisible->lbsize) #define vis_lbreaks (line_state_visible->lbreaks) #define vis_lbsize (line_state_visible->lbsize) #define visible_line (line_state_visible->line) #define invisible_line (line_state_invisible->line) #if defined (HANDLE_MULTIBYTE) static int _rl_col_width PARAMS((const char *, int, int, int)); #else # define _rl_col_width(l, s, e, f) (((e) <= (s)) ? 0 : (e) - (s)) #endif /* Heuristic used to decide whether it is faster to move from CUR to NEW by backing up or outputting a carriage return and moving forward. CUR and NEW are either both buffer positions or absolute screen positions. */ #define CR_FASTER(new, cur) (((new) + 1) < ((cur) - (new))) /* _rl_last_c_pos is an absolute cursor position in multibyte locales and a buffer index in others. This macro is used when deciding whether the current cursor position is in the middle of a prompt string containing invisible characters. XXX - might need to take `modmark' into account. */ /* XXX - only valid when tested against _rl_last_c_pos; buffer indices need to use prompt_last_invisible directly. */ #define PROMPT_ENDING_INDEX \ ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? prompt_physical_chars : prompt_last_invisible+1) /* **************************************************************** */ /* */ /* Display stuff */ /* */ /* **************************************************************** */ /* This is the stuff that is hard for me. I never seem to write good display routines in C. Let's see how I do this time. */ /* (PWP) Well... Good for a simple line updater, but totally ignores the problems of input lines longer than the screen width. update_line and the code that calls it makes a multiple line, automatically wrapping line update. Careful attention needs to be paid to the vertical position variables. */ /* Keep two buffers; one which reflects the current contents of the screen, and the other to draw what we think the new contents should be. Then compare the buffers, and make whatever changes to the screen itself that we should. Finally, make the buffer that we just drew into be the one which reflects the current contents of the screen, and place the cursor where it belongs. Commands that want to can fix the display themselves, and then let this function know that the display has been fixed by setting the RL_DISPLAY_FIXED variable. This is good for efficiency. */ /* Application-specific redisplay function. */ rl_voidfunc_t *rl_redisplay_function = rl_redisplay; /* Global variables declared here. */ /* What YOU turn on when you have handled all redisplay yourself. */ int rl_display_fixed = 0; /* The stuff that gets printed out before the actual text of the line. This is usually pointing to rl_prompt. */ char *rl_display_prompt = (char *)NULL; /* Variables used to include the editing mode in the prompt. */ char *_rl_emacs_mode_str; int _rl_emacs_modestr_len; char *_rl_vi_ins_mode_str; int _rl_vi_ins_modestr_len; char *_rl_vi_cmd_mode_str; int _rl_vi_cmd_modestr_len; /* Pseudo-global variables declared here. */ /* Hints for other parts of readline to give to the display engine. */ int _rl_suppress_redisplay = 0; int _rl_want_redisplay = 0; /* The visible cursor position. If you print some text, adjust this. */ /* NOTE: _rl_last_c_pos is used as a buffer index when not in a locale supporting multibyte characters, and an absolute cursor position when in such a locale. This is an artifact of the donated multibyte support. Care must be taken when modifying its value. */ int _rl_last_c_pos = 0; int _rl_last_v_pos = 0; /* Number of physical lines consumed by the current line buffer currently on screen minus 1. */ int _rl_vis_botlin = 0; /* This is a hint update_line gives to rl_redisplay that it has adjusted the value of _rl_last_c_pos *and* taken the presence of any invisible chars in the prompt into account. rl_redisplay notes this and does not do the adjustment itself. */ static int cpos_adjusted; /* The index into the line buffer corresponding to the cursor position */ static int cpos_buffer_position; /* A flag to note when we're displaying the first line of the prompt */ static int displaying_prompt_first_line; /* The number of multibyte characters in the prompt, if any */ static int prompt_multibyte_chars; static int _rl_inv_botlin = 0; /* Variables used only in this file. */ /* The last left edge of text that was displayed. This is used when doing horizontal scrolling. It shifts in thirds of a screenwidth. */ static int last_lmargin; /* A buffer for `modeline' messages. */ static char *msg_buf = 0; static int msg_bufsiz = 0; /* Non-zero forces the redisplay even if we thought it was unnecessary. */ static int forced_display; /* Default and initial buffer size. Can grow. */ static int line_size = 1024; /* Variables to keep track of the expanded prompt string, which may include invisible characters. */ static char *local_prompt, *local_prompt_prefix; static int local_prompt_len; static int prompt_prefix_length; /* Number of chars in the buffer that contribute to visible chars on the screen. This might be different from the number of physical chars in the presence of multibyte characters */ static int prompt_visible_length; /* The number of invisible characters in the line currently being displayed on the screen. */ static int visible_wrap_offset; /* The number of invisible characters in the prompt string. Static so it can be shared between rl_redisplay and update_line */ static int wrap_offset; /* The index of the last invisible character in the prompt string. */ static int prompt_last_invisible; /* The length (buffer offset) of the first line of the last (possibly multi-line) buffer displayed on the screen. */ static int visible_first_line_len; /* Number of invisible characters on the first physical line of the prompt. Only valid when the number of physical characters in the prompt exceeds (or is equal to) _rl_screenwidth. */ static int prompt_invis_chars_first_line; static int prompt_last_screen_line; static int prompt_physical_chars; /* An array of indexes into the prompt string where we will break physical screen lines. It's easier to compute in expand_prompt and use later in rl_redisplay instead of having rl_redisplay try to guess about invisible characters in the prompt or use heuristics about where they are. */ static int *local_prompt_newlines; /* set to a non-zero value by rl_redisplay if we are marking modified history lines and the current line is so marked. */ static int modmark; static int line_totbytes; /* Variables to save and restore prompt and display information. */ /* These are getting numerous enough that it's time to create a struct. */ static char *saved_local_prompt; static char *saved_local_prefix; static int *saved_local_prompt_newlines; static int saved_last_invisible; static int saved_visible_length; static int saved_prefix_length; static int saved_local_length; static int saved_invis_chars_first_line; static int saved_physical_chars; /* Return a string indicating the editing mode, for use in the prompt. */ static char * prompt_modestr (int *lenp) { if (rl_editing_mode == emacs_mode) { if (lenp) *lenp = _rl_emacs_mode_str ? _rl_emacs_modestr_len : RL_EMACS_MODESTR_DEFLEN; return _rl_emacs_mode_str ? _rl_emacs_mode_str : RL_EMACS_MODESTR_DEFAULT; } else if (_rl_keymap == vi_insertion_keymap) { if (lenp) *lenp = _rl_vi_ins_mode_str ? _rl_vi_ins_modestr_len : RL_VI_INS_MODESTR_DEFLEN; return _rl_vi_ins_mode_str ? _rl_vi_ins_mode_str : RL_VI_INS_MODESTR_DEFAULT; /* vi insert mode */ } else { if (lenp) *lenp = _rl_vi_cmd_mode_str ? _rl_vi_cmd_modestr_len : RL_VI_CMD_MODESTR_DEFLEN; return _rl_vi_cmd_mode_str ? _rl_vi_cmd_mode_str : RL_VI_CMD_MODESTR_DEFAULT; /* vi command mode */ } } /* Expand the prompt string S and return the number of visible characters in *LP, if LP is not null. This is currently more-or-less a placeholder for expansion. LIP, if non-null is a place to store the index of the last invisible character in the returned string. NIFLP, if non-zero, is a place to store the number of invisible characters in the first prompt line. The previous are used as byte counts -- indexes into a character buffer. *VLP gets the number of physical characters in the expanded prompt (visible length) */ /* Current implementation: \001 (^A) start non-visible characters \002 (^B) end non-visible characters all characters except \001 and \002 (following a \001) are copied to the returned string; all characters except those between \001 and \002 are assumed to be `visible'. */ /* Possible values for FLAGS: PMT_MULTILINE caller indicates that this is part of a multiline prompt */ /* This approximates the number of lines the prompt will take when displayed */ #define APPROX_DIV(n, d) (((n) < (d)) ? 1 : ((n) / (d)) + 1) static char * expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) { char *r, *ret, *p, *igstart, *nprompt, *ms; int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; int mlen, newlines, newlines_guess, bound; int mb_cur_max; /* We only expand the mode string for the last line of a multiline prompt (a prompt with embedded newlines). */ ms = (((pmt == rl_prompt) ^ (flags & PMT_MULTILINE)) && _rl_show_mode_in_prompt) ? prompt_modestr (&mlen) : 0; if (ms) { l = strlen (pmt); nprompt = (char *)xmalloc (l + mlen + 1); memcpy (nprompt, ms, mlen); strcpy (nprompt + mlen, pmt); } else nprompt = pmt; mb_cur_max = MB_CUR_MAX; if (_rl_screenwidth == 0) _rl_get_screen_size (0, 0); /* avoid division by zero */ /* Short-circuit if we can. We can do this if we are treating the prompt as a sequence of bytes and there are no invisible characters in the prompt to deal with. Since we populate local_prompt_newlines, we have to run through the rest of the function if this prompt looks like it's going to be longer than one screen line. */ if ((mb_cur_max <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0) { l = strlen (nprompt); if (l < (_rl_screenwidth > 0 ? _rl_screenwidth : 80)) { r = (nprompt == pmt) ? savestring (pmt) : nprompt; if (lp) *lp = l; if (lip) *lip = 0; if (niflp) *niflp = 0; if (vlp) *vlp = l; local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * 2); local_prompt_newlines[0] = 0; local_prompt_newlines[1] = -1; return r; } } l = strlen (nprompt); /* XXX */ r = ret = (char *)xmalloc (l + 1); /* Guess at how many screen lines the prompt will take to size the array that keeps track of where the line wraps happen */ newlines_guess = (_rl_screenwidth > 0) ? APPROX_DIV(l, _rl_screenwidth) : APPROX_DIV(l, 80); local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * (newlines_guess + 1)); local_prompt_newlines[newlines = 0] = 0; for (rl = 1; rl <= newlines_guess; rl++) local_prompt_newlines[rl] = -1; rl = physchars = 0; /* mode string now part of nprompt */ invfl = 0; /* invisible chars in first line of prompt */ invflset = 0; /* we only want to set invfl once */ igstart = 0; /* we're not ignoring any characters yet */ for (ignoring = last = ninvis = 0, p = nprompt; p && *p; p++) { /* This code strips the invisible character string markers RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE */ if (ignoring == 0 && *p == RL_PROMPT_START_IGNORE) /* XXX - check ignoring? */ { ignoring = 1; igstart = p; continue; } else if (ignoring && *p == RL_PROMPT_END_IGNORE) { ignoring = 0; if (p != (igstart + 1)) last = r - ret - 1; continue; } else { #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) { pind = p - nprompt; ind = _rl_find_next_mbchar (nprompt, pind, 1, MB_FIND_NONZERO); l = ind - pind; while (l--) *r++ = *p++; if (!ignoring) { /* rl ends up being assigned to prompt_visible_length, which is the number of characters in the buffer that contribute to characters on the screen, which might not be the same as the number of physical characters on the screen in the presence of multibyte characters */ rl += ind - pind; physchars += _rl_col_width (nprompt, pind, ind, 0); } else ninvis += ind - pind; p--; /* compensate for later increment */ } else #endif { *r++ = *p; if (!ignoring) { rl++; /* visible length byte counter */ physchars++; } else ninvis++; /* invisible chars byte counter */ } if (invflset == 0 && physchars >= _rl_screenwidth) { invfl = ninvis; invflset = 1; } if (physchars >= (bound = (newlines + 1) * _rl_screenwidth) && local_prompt_newlines[newlines+1] == -1) { int new; if (physchars > bound) /* should rarely happen */ { #if defined (HANDLE_MULTIBYTE) *r = '\0'; /* need null-termination for strlen */ if (mb_cur_max > 1 && rl_byte_oriented == 0) new = _rl_find_prev_mbchar (ret, r - ret, MB_FIND_ANY); else #endif new = r - ret - (physchars - bound); /* XXX */ } else new = r - ret; local_prompt_newlines[++newlines] = new; } } } if (rl < _rl_screenwidth) invfl = ninvis; *r = '\0'; if (lp) *lp = rl; if (lip) *lip = last; if (niflp) *niflp = invfl; if (vlp) *vlp = physchars; if (nprompt != pmt) free (nprompt); return ret; } /* Just strip out RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE from PMT and return the rest of PMT. */ char * _rl_strip_prompt (char *pmt) { char *ret; ret = expand_prompt (pmt, 0, (int *)NULL, (int *)NULL, (int *)NULL, (int *)NULL); return ret; } void _rl_reset_prompt (void) { rl_visible_prompt_length = rl_expand_prompt (rl_prompt); } /* * Expand the prompt string into the various display components, if * necessary. * * local_prompt = expanded last line of string in rl_display_prompt * (portion after the final newline) * local_prompt_prefix = portion before last newline of rl_display_prompt, * expanded via expand_prompt * prompt_visible_length = number of visible characters in local_prompt * prompt_prefix_length = number of visible characters in local_prompt_prefix * * It also tries to keep track of the number of invisible characters in the * prompt string, and where they are. * * This function is called once per call to readline(). It may also be * called arbitrarily to expand the primary prompt. * * The return value is the number of visible characters on the last line * of the (possibly multi-line) prompt. In this case, multi-line means * there are embedded newlines in the prompt string itself, not that the * number of physical characters exceeds the screen width and the prompt * wraps. */ int rl_expand_prompt (char *prompt) { char *p, *t; int c; /* Clear out any saved values. */ FREE (local_prompt); FREE (local_prompt_prefix); local_prompt = local_prompt_prefix = (char *)0; local_prompt_len = 0; prompt_last_invisible = prompt_invis_chars_first_line = 0; prompt_visible_length = prompt_physical_chars = 0; if (prompt == 0 || *prompt == 0) return (0); p = strrchr (prompt, '\n'); if (p == 0) { /* The prompt is only one logical line, though it might wrap. */ local_prompt = expand_prompt (prompt, 0, &prompt_visible_length, &prompt_last_invisible, &prompt_invis_chars_first_line, &prompt_physical_chars); local_prompt_prefix = (char *)0; local_prompt_len = local_prompt ? strlen (local_prompt) : 0; return (prompt_visible_length); } else { /* The prompt spans multiple lines. */ t = ++p; local_prompt = expand_prompt (p, PMT_MULTILINE, &prompt_visible_length, &prompt_last_invisible, &prompt_invis_chars_first_line, &prompt_physical_chars); c = *t; *t = '\0'; /* The portion of the prompt string up to and including the final newline is now null-terminated. */ local_prompt_prefix = expand_prompt (prompt, PMT_MULTILINE, &prompt_prefix_length, (int *)NULL, (int *)NULL, (int *)NULL); *t = c; local_prompt_len = local_prompt ? strlen (local_prompt) : 0; return (prompt_prefix_length); } } /* Initialize the VISIBLE_LINE and INVISIBLE_LINE arrays, and their associated arrays of line break markers. MINSIZE is the minimum size of VISIBLE_LINE and INVISIBLE_LINE; if it is greater than LINE_SIZE, LINE_SIZE is increased. If the lines have already been allocated, this ensures that they can hold at least MINSIZE characters. */ static void init_line_structures (int minsize) { register int n; if (invisible_line == 0) /* initialize it */ { if (line_size < minsize) line_size = minsize; visible_line = (char *)xmalloc (line_size); invisible_line = (char *)xmalloc (line_size); } else if (line_size < minsize) /* ensure it can hold MINSIZE chars */ { line_size *= 2; if (line_size < minsize) line_size = minsize; visible_line = (char *)xrealloc (visible_line, line_size); invisible_line = (char *)xrealloc (invisible_line, line_size); } for (n = minsize; n < line_size; n++) { visible_line[n] = 0; invisible_line[n] = 1; } if (vis_lbreaks == 0) { /* should be enough. */ inv_lbsize = vis_lbsize = 256; #if defined (HANDLE_MULTIBYTE) line_state_visible->wbsize = vis_lbsize; line_state_visible->wrapped_line = (int *)xmalloc (line_state_visible->wbsize * sizeof (int)); line_state_invisible->wbsize = inv_lbsize; line_state_invisible->wrapped_line = (int *)xmalloc (line_state_invisible->wbsize * sizeof (int)); #endif inv_lbreaks = (int *)xmalloc (inv_lbsize * sizeof (int)); vis_lbreaks = (int *)xmalloc (vis_lbsize * sizeof (int)); inv_lbreaks[0] = vis_lbreaks[0] = 0; } line_structures_initialized = 1; } /* Basic redisplay algorithm. See comments inline. */ void rl_redisplay (void) { register int in, out, c, linenum, cursor_linenum; register char *line; int inv_botlin, lb_botlin, lb_linenum, o_cpos; int newlines, lpos, temp, n0, num, prompt_lines_estimate; char *prompt_this_line; int mb_cur_max = MB_CUR_MAX; #if defined (HANDLE_MULTIBYTE) wchar_t wc; size_t wc_bytes; int wc_width; mbstate_t ps; int _rl_wrapped_multicolumn = 0; #endif if (_rl_echoing_p == 0) return; /* Block keyboard interrupts because this function manipulates global data structures. */ _rl_block_sigint (); RL_SETSTATE (RL_STATE_REDISPLAYING); if (!rl_display_prompt) rl_display_prompt = ""; if (line_structures_initialized == 0) { init_line_structures (0); rl_on_new_line (); } /* Draw the line into the buffer. */ cpos_buffer_position = -1; prompt_multibyte_chars = prompt_visible_length - prompt_physical_chars; line = invisible_line; out = inv_botlin = 0; /* Mark the line as modified or not. We only do this for history lines. */ modmark = 0; if (_rl_mark_modified_lines && current_history () && rl_undo_list) { line[out++] = '*'; line[out] = '\0'; modmark = 1; } /* If someone thought that the redisplay was handled, but the currently visible line has a different modification state than the one about to become visible, then correct the caller's misconception. */ if (visible_line[0] != invisible_line[0]) rl_display_fixed = 0; /* If the prompt to be displayed is the `primary' readline prompt (the one passed to readline()), use the values we have already expanded. If not, use what's already in rl_display_prompt. WRAP_OFFSET is the number of non-visible characters in the prompt string. */ /* This is where we output the characters in the prompt before the last newline, if any. If there aren't any embedded newlines, we don't write anything. Copy the last line of the prompt string into the line in any case */ if (rl_display_prompt == rl_prompt || local_prompt) { if (local_prompt_prefix && forced_display) _rl_output_some_chars (local_prompt_prefix, strlen (local_prompt_prefix)); if (local_prompt_len > 0) { temp = local_prompt_len + out + 2; if (temp >= line_size) { line_size = (temp + 1024) - (temp % 1024); visible_line = (char *)xrealloc (visible_line, line_size); line = invisible_line = (char *)xrealloc (invisible_line, line_size); } strncpy (line + out, local_prompt, local_prompt_len); out += local_prompt_len; } line[out] = '\0'; wrap_offset = local_prompt_len - prompt_visible_length; } else { int pmtlen; prompt_this_line = strrchr (rl_display_prompt, '\n'); if (!prompt_this_line) prompt_this_line = rl_display_prompt; else { prompt_this_line++; pmtlen = prompt_this_line - rl_display_prompt; /* temp var */ if (forced_display) { _rl_output_some_chars (rl_display_prompt, pmtlen); /* Make sure we are at column zero even after a newline, regardless of the state of terminal output processing. */ if (pmtlen < 2 || prompt_this_line[-2] != '\r') cr (); } } prompt_physical_chars = pmtlen = strlen (prompt_this_line); temp = pmtlen + out + 2; if (temp >= line_size) { line_size = (temp + 1024) - (temp % 1024); visible_line = (char *)xrealloc (visible_line, line_size); line = invisible_line = (char *)xrealloc (invisible_line, line_size); } strncpy (line + out, prompt_this_line, pmtlen); out += pmtlen; line[out] = '\0'; wrap_offset = prompt_invis_chars_first_line = 0; } #if defined (HANDLE_MULTIBYTE) #define CHECK_INV_LBREAKS() \ do { \ if (newlines >= (inv_lbsize - 2)) \ { \ inv_lbsize *= 2; \ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ } \ if (newlines >= (line_state_invisible->wbsize - 2)) \ { \ line_state_invisible->wbsize *= 2; \ line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \ } \ } while (0) #else #define CHECK_INV_LBREAKS() \ do { \ if (newlines >= (inv_lbsize - 2)) \ { \ inv_lbsize *= 2; \ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ } \ } while (0) #endif /* !HANDLE_MULTIBYTE */ #if defined (HANDLE_MULTIBYTE) #define CHECK_LPOS() \ do { \ lpos++; \ if (lpos >= _rl_screenwidth) \ { \ if (newlines >= (inv_lbsize - 2)) \ { \ inv_lbsize *= 2; \ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ } \ inv_lbreaks[++newlines] = out; \ if (newlines >= (line_state_invisible->wbsize - 2)) \ { \ line_state_invisible->wbsize *= 2; \ line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \ } \ line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; \ lpos = 0; \ } \ } while (0) #else #define CHECK_LPOS() \ do { \ lpos++; \ if (lpos >= _rl_screenwidth) \ { \ if (newlines >= (inv_lbsize - 2)) \ { \ inv_lbsize *= 2; \ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ } \ inv_lbreaks[++newlines] = out; \ lpos = 0; \ } \ } while (0) #endif /* inv_lbreaks[i] is where line i starts in the buffer. */ inv_lbreaks[newlines = 0] = 0; /* lpos is a physical cursor position, so it needs to be adjusted by the number of invisible characters in the prompt, per line. We compute the line breaks in the prompt string in expand_prompt, taking invisible characters into account, and if lpos exceeds the screen width, we copy the data in the loop below. */ lpos = prompt_physical_chars + modmark; #if defined (HANDLE_MULTIBYTE) memset (line_state_invisible->wrapped_line, 0, line_state_invisible->wbsize * sizeof (int)); num = 0; #endif /* prompt_invis_chars_first_line is the number of invisible characters in the first physical line of the prompt. wrap_offset - prompt_invis_chars_first_line is usually the number of invis chars on the second (or, more generally, last) line. */ /* This is zero-based, used to set the newlines */ prompt_lines_estimate = lpos / _rl_screenwidth; /* what if lpos is already >= _rl_screenwidth before we start drawing the contents of the command line? */ if (lpos >= _rl_screenwidth) { temp = 0; /* first copy the linebreaks array we computed in expand_prompt */ while (local_prompt_newlines[newlines+1] != -1) { temp = local_prompt_newlines[newlines+1]; inv_lbreaks[++newlines] = temp; } /* Now set lpos from the last newline */ if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) lpos = _rl_col_width (local_prompt, temp, local_prompt_len, 1) - (wrap_offset - prompt_invis_chars_first_line); else lpos -= (_rl_screenwidth * newlines); } prompt_last_screen_line = newlines; /* Draw the rest of the line (after the prompt) into invisible_line, keeping track of where the cursor is (cpos_buffer_position), the number of the line containing the cursor (lb_linenum), the last line number (lb_botlin and inv_botlin). It maintains an array of line breaks for display (inv_lbreaks). This handles expanding tabs for display and displaying meta characters. */ lb_linenum = 0; #if defined (HANDLE_MULTIBYTE) in = 0; if (mb_cur_max > 1 && rl_byte_oriented == 0) { memset (&ps, 0, sizeof (mbstate_t)); if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[0])) { wc = (wchar_t)rl_line_buffer[0]; wc_bytes = 1; } else wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps); } else wc_bytes = 1; while (in < rl_end) #else for (in = 0; in < rl_end; in++) #endif { c = (unsigned char)rl_line_buffer[in]; #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) { if (MB_INVALIDCH (wc_bytes)) { /* Byte sequence is invalid or shortened. Assume that the first byte represents a character. */ wc_bytes = 1; /* Assume that a character occupies a single column. */ wc_width = 1; memset (&ps, 0, sizeof (mbstate_t)); } else if (MB_NULLWCH (wc_bytes)) break; /* Found '\0' */ else { temp = WCWIDTH (wc); wc_width = (temp >= 0) ? temp : 1; } } #endif if (out + 8 >= line_size) /* XXX - 8 for \t */ { line_size *= 2; visible_line = (char *)xrealloc (visible_line, line_size); invisible_line = (char *)xrealloc (invisible_line, line_size); line = invisible_line; } if (in == rl_point) { cpos_buffer_position = out; lb_linenum = newlines; } #if defined (HANDLE_MULTIBYTE) if (META_CHAR (c) && _rl_output_meta_chars == 0) /* XXX - clean up */ #else if (META_CHAR (c)) #endif { if (_rl_output_meta_chars == 0) { sprintf (line + out, "\\%o", c); if (lpos + 4 >= _rl_screenwidth) { temp = _rl_screenwidth - lpos; CHECK_INV_LBREAKS (); inv_lbreaks[++newlines] = out + temp; #if defined (HANDLE_MULTIBYTE) line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; #endif lpos = 4 - temp; } else lpos += 4; out += 4; } else { line[out++] = c; CHECK_LPOS(); } } #if defined (DISPLAY_TABS) else if (c == '\t') { register int newout; #if 0 newout = (out | (int)7) + 1; #else newout = out + 8 - lpos % 8; #endif temp = newout - out; if (lpos + temp >= _rl_screenwidth) { register int temp2; temp2 = _rl_screenwidth - lpos; CHECK_INV_LBREAKS (); inv_lbreaks[++newlines] = out + temp2; #if defined (HANDLE_MULTIBYTE) line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; #endif lpos = temp - temp2; while (out < newout) line[out++] = ' '; } else { while (out < newout) line[out++] = ' '; lpos += temp; } } #endif else if (c == '\n' && _rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up) { line[out++] = '\0'; /* XXX - sentinel */ CHECK_INV_LBREAKS (); inv_lbreaks[++newlines] = out; #if defined (HANDLE_MULTIBYTE) line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; #endif lpos = 0; } else if (CTRL_CHAR (c) || c == RUBOUT) { line[out++] = '^'; CHECK_LPOS(); line[out++] = CTRL_CHAR (c) ? UNCTRL (c) : '?'; CHECK_LPOS(); } else { #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) { register int i; _rl_wrapped_multicolumn = 0; if (_rl_screenwidth < lpos + wc_width) for (i = lpos; i < _rl_screenwidth; i++) { /* The space will be removed in update_line() */ line[out++] = ' '; _rl_wrapped_multicolumn++; CHECK_LPOS(); } if (in == rl_point) { cpos_buffer_position = out; lb_linenum = newlines; } for (i = in; i < in+wc_bytes; i++) line[out++] = rl_line_buffer[i]; for (i = 0; i < wc_width; i++) CHECK_LPOS(); } else { line[out++] = c; CHECK_LPOS(); } #else line[out++] = c; CHECK_LPOS(); #endif } #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) { in += wc_bytes; if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[in])) { wc = (wchar_t)rl_line_buffer[in]; wc_bytes = 1; memset (&ps, 0, sizeof (mbstate_t)); /* re-init state */ } else wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps); } else in++; #endif } line[out] = '\0'; line_totbytes = out; if (cpos_buffer_position < 0) { cpos_buffer_position = out; lb_linenum = newlines; } inv_botlin = lb_botlin = _rl_inv_botlin = newlines; CHECK_INV_LBREAKS (); inv_lbreaks[newlines+1] = out; #if defined (HANDLE_MULTIBYTE) /* This should be 0 anyway */ line_state_invisible->wrapped_line[newlines+1] = _rl_wrapped_multicolumn; #endif cursor_linenum = lb_linenum; /* CPOS_BUFFER_POSITION == position in buffer where cursor should be placed. CURSOR_LINENUM == line number where the cursor should be placed. */ /* PWP: now is when things get a bit hairy. The visible and invisible line buffers are really multiple lines, which would wrap every (screenwidth - 1) characters. Go through each in turn, finding the changed region and updating it. The line order is top to bottom. */ /* If we can move the cursor up and down, then use multiple lines, otherwise, let long lines display in a single terminal line, and horizontally scroll it. */ displaying_prompt_first_line = 1; if (_rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up) { int nleft, pos, changed_screen_line, tx; if (!rl_display_fixed || forced_display) { forced_display = 0; /* If we have more than a screenful of material to display, then only display a screenful. We should display the last screen, not the first. */ if (out >= _rl_screenchars) { #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) out = _rl_find_prev_mbchar (line, _rl_screenchars, MB_FIND_ANY); else #endif out = _rl_screenchars - 1; } /* The first line is at character position 0 in the buffer. The second and subsequent lines start at inv_lbreaks[N], offset by OFFSET (which has already been calculated above). */ #define INVIS_FIRST() (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset) #define WRAP_OFFSET(line, offset) ((line == 0) \ ? (offset ? INVIS_FIRST() : 0) \ : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0)) #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0) #define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l])) #define INV_LLEN(l) (inv_lbreaks[l+1] - inv_lbreaks[l]) #define VIS_CHARS(line) (visible_line + vis_lbreaks[line]) #define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line) #define INV_LINE(line) (invisible_line + inv_lbreaks[line]) #define OLD_CPOS_IN_PROMPT() (cpos_adjusted == 0 && \ _rl_last_c_pos != o_cpos && \ _rl_last_c_pos > wrap_offset && \ o_cpos < prompt_last_invisible) /* For each line in the buffer, do the updating display. */ for (linenum = 0; linenum <= inv_botlin; linenum++) { /* This can lead us astray if we execute a program that changes the locale from a non-multibyte to a multibyte one. */ o_cpos = _rl_last_c_pos; cpos_adjusted = 0; update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum, VIS_LLEN(linenum), INV_LLEN(linenum), inv_botlin); /* update_line potentially changes _rl_last_c_pos, but doesn't take invisible characters into account, since _rl_last_c_pos is an absolute cursor position in a multibyte locale. We choose to (mostly) compensate for that here, rather than change update_line itself. There are several cases in which update_line adjusts _rl_last_c_pos itself (so it can pass _rl_move_cursor_relative accurate values); it communicates this back by setting cpos_adjusted. If we assume that _rl_last_c_pos is correct (an absolute cursor position) each time update_line is called, then we can assume in our calculations that o_cpos does not need to be adjusted by wrap_offset. */ if (linenum == 0 && (mb_cur_max > 1 && rl_byte_oriented == 0) && OLD_CPOS_IN_PROMPT()) _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ else if (cpos_adjusted == 0 && linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && (mb_cur_max > 1 && rl_byte_oriented == 0) && _rl_last_c_pos != o_cpos && _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) /* XXX - rethink this last one */ /* This assumes that all the invisible characters are split between the first and last lines of the prompt, if the prompt consumes more than two lines. It's usually right */ /* XXX - not sure this is ever executed */ _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); /* If this is the line with the prompt, we might need to compensate for invisible characters in the new line. Do this only if there is not more than one new line (which implies that we completely overwrite the old visible line) and the new line is shorter than the old. Make sure we are at the end of the new line before clearing. */ if (linenum == 0 && inv_botlin == 0 && _rl_last_c_pos == out && (wrap_offset > visible_wrap_offset) && (_rl_last_c_pos < visible_first_line_len)) { if (mb_cur_max > 1 && rl_byte_oriented == 0) nleft = _rl_screenwidth - _rl_last_c_pos; else nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos; if (nleft) _rl_clear_to_eol (nleft); } #if 0 /* This segment is intended to handle the case where the prompt has invisible characters on the second line and the new line to be displayed needs to clear the rest of the old characters out (e.g., when printing the i-search prompt). In general, the case of the new line being shorter than the old. Incomplete */ else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && wrap_offset != prompt_invis_chars_first_line && _rl_last_c_pos == out && #endif /* Since the new first line is now visible, save its length. */ if (linenum == 0) visible_first_line_len = (inv_botlin > 0) ? inv_lbreaks[1] : out - wrap_offset; } /* We may have deleted some lines. If so, clear the left over blank ones at the bottom out. */ if (_rl_vis_botlin > inv_botlin) { char *tt; for (; linenum <= _rl_vis_botlin; linenum++) { tt = VIS_CHARS (linenum); _rl_move_vert (linenum); _rl_move_cursor_relative (0, tt); _rl_clear_to_eol ((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth); } } _rl_vis_botlin = inv_botlin; /* CHANGED_SCREEN_LINE is set to 1 if we have moved to a different screen line during this redisplay. */ changed_screen_line = _rl_last_v_pos != cursor_linenum; if (changed_screen_line) { _rl_move_vert (cursor_linenum); /* If we moved up to the line with the prompt using _rl_term_up, the physical cursor position on the screen stays the same, but the buffer position needs to be adjusted to account for invisible characters. */ if ((mb_cur_max == 1 || rl_byte_oriented) && cursor_linenum == 0 && wrap_offset) _rl_last_c_pos += wrap_offset; } /* Now we move the cursor to where it needs to be. First, make sure we are on the correct line (cursor_linenum). */ /* We have to reprint the prompt if it contains invisible characters, since it's not generally OK to just reprint the characters from the current cursor position. But we only need to reprint it if the cursor is before the last invisible character in the prompt string. */ nleft = prompt_visible_length + wrap_offset; if (cursor_linenum == 0 && wrap_offset > 0 && _rl_last_c_pos > 0 && #if 0 _rl_last_c_pos <= PROMPT_ENDING_INDEX && local_prompt) #else _rl_last_c_pos < PROMPT_ENDING_INDEX && local_prompt) #endif { #if defined (__MSDOS__) putc ('\r', rl_outstream); #else if (_rl_term_cr) tputs (_rl_term_cr, 1, _rl_output_character_function); #endif if (modmark) _rl_output_some_chars ("*", 1); _rl_output_some_chars (local_prompt, nleft); if (mb_cur_max > 1 && rl_byte_oriented == 0) _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft, 1) - wrap_offset + modmark; else _rl_last_c_pos = nleft + modmark; } /* Where on that line? And where does that line start in the buffer? */ pos = inv_lbreaks[cursor_linenum]; /* nleft == number of characters in the line buffer between the start of the line and the desired cursor position. */ nleft = cpos_buffer_position - pos; /* NLEFT is now a number of characters in a buffer. When in a multibyte locale, however, _rl_last_c_pos is an absolute cursor position that doesn't take invisible characters in the prompt into account. We use a fudge factor to compensate. */ /* Since _rl_backspace() doesn't know about invisible characters in the prompt, and there's no good way to tell it, we compensate for those characters here and call _rl_backspace() directly if necessary */ if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos) { /* TX == new physical cursor position in multibyte locale. */ if (mb_cur_max > 1 && rl_byte_oriented == 0) tx = _rl_col_width (&visible_line[pos], 0, nleft, 1) - visible_wrap_offset; else tx = nleft; if (tx >= 0 && _rl_last_c_pos > tx) { _rl_backspace (_rl_last_c_pos - tx); /* XXX */ _rl_last_c_pos = tx; } } /* We need to note that in a multibyte locale we are dealing with _rl_last_c_pos as an absolute cursor position, but moving to a point specified by a buffer position (NLEFT) that doesn't take invisible characters into account. */ if (mb_cur_max > 1 && rl_byte_oriented == 0) _rl_move_cursor_relative (nleft, &invisible_line[pos]); else if (nleft != _rl_last_c_pos) _rl_move_cursor_relative (nleft, &invisible_line[pos]); } } else /* Do horizontal scrolling. Much simpler */ { #define M_OFFSET(margin, offset) ((margin) == 0 ? offset : 0) int lmargin, ndisp, nleft, phys_c_pos, t; /* Always at top line. */ _rl_last_v_pos = 0; /* Compute where in the buffer the displayed line should start. This will be LMARGIN. */ /* The number of characters that will be displayed before the cursor. */ ndisp = cpos_buffer_position - wrap_offset; nleft = prompt_visible_length + wrap_offset; /* Where the new cursor position will be on the screen. This can be longer than SCREENWIDTH; if it is, lmargin will be adjusted. */ phys_c_pos = cpos_buffer_position - (last_lmargin ? last_lmargin : wrap_offset); t = _rl_screenwidth / 3; /* If the number of characters had already exceeded the screenwidth, last_lmargin will be > 0. */ /* If the number of characters to be displayed is more than the screen width, compute the starting offset so that the cursor is about two-thirds of the way across the screen. */ if (phys_c_pos > _rl_screenwidth - 2) { lmargin = cpos_buffer_position - (2 * t); if (lmargin < 0) lmargin = 0; /* If the left margin would be in the middle of a prompt with invisible characters, don't display the prompt at all. */ if (wrap_offset && lmargin > 0 && lmargin < nleft) lmargin = nleft; } else if (ndisp < _rl_screenwidth - 2) /* XXX - was -1 */ lmargin = 0; else if (phys_c_pos < 1) { /* If we are moving back towards the beginning of the line and the last margin is no longer correct, compute a new one. */ lmargin = ((cpos_buffer_position - 1) / t) * t; /* XXX */ if (wrap_offset && lmargin > 0 && lmargin < nleft) lmargin = nleft; } else lmargin = last_lmargin; displaying_prompt_first_line = lmargin < nleft; /* If the first character on the screen isn't the first character in the display line, indicate this with a special character. */ if (lmargin > 0) line[lmargin] = '<'; /* If SCREENWIDTH characters starting at LMARGIN do not encompass the whole line, indicate that with a special character at the right edge of the screen. If LMARGIN is 0, we need to take the wrap offset into account. */ t = lmargin + M_OFFSET (lmargin, wrap_offset) + _rl_screenwidth; if (t > 0 && t < out) line[t - 1] = '>'; if (rl_display_fixed == 0 || forced_display || lmargin != last_lmargin) { forced_display = 0; o_cpos = _rl_last_c_pos; cpos_adjusted = 0; update_line (&visible_line[last_lmargin], &invisible_line[lmargin], 0, _rl_screenwidth + visible_wrap_offset, _rl_screenwidth + (lmargin ? 0 : wrap_offset), 0); if ((mb_cur_max > 1 && rl_byte_oriented == 0) && displaying_prompt_first_line && OLD_CPOS_IN_PROMPT()) _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ /* If the visible new line is shorter than the old, but the number of invisible characters is greater, and we are at the end of the new line, we need to clear to eol. */ t = _rl_last_c_pos - M_OFFSET (lmargin, wrap_offset); if ((M_OFFSET (lmargin, wrap_offset) > visible_wrap_offset) && (_rl_last_c_pos == out) && displaying_prompt_first_line && t < visible_first_line_len) { nleft = _rl_screenwidth - t; _rl_clear_to_eol (nleft); } visible_first_line_len = out - lmargin - M_OFFSET (lmargin, wrap_offset); if (visible_first_line_len > _rl_screenwidth) visible_first_line_len = _rl_screenwidth; _rl_move_cursor_relative (cpos_buffer_position - lmargin, &invisible_line[lmargin]); last_lmargin = lmargin; } } fflush (rl_outstream); /* Swap visible and non-visible lines. */ { struct line_state *vtemp = line_state_visible; line_state_visible = line_state_invisible; line_state_invisible = vtemp; rl_display_fixed = 0; /* If we are displaying on a single line, and last_lmargin is > 0, we are not displaying any invisible characters, so set visible_wrap_offset to 0. */ if (_rl_horizontal_scroll_mode && last_lmargin) visible_wrap_offset = 0; else visible_wrap_offset = wrap_offset; } RL_UNSETSTATE (RL_STATE_REDISPLAYING); _rl_release_sigint (); } /* PWP: update_line() is based on finding the middle difference of each line on the screen; vis: /old first difference /beginning of line | /old last same /old EOL v v v v old: eddie> Oh, my little gruntle-buggy is to me, as lurgid as new: eddie> Oh, my little buggy says to me, as lurgid as ^ ^ ^ ^ \beginning of line | \new last same \new end of line \new first difference All are character pointers for the sake of speed. Special cases for no differences, as well as for end of line additions must be handled. Could be made even smarter, but this works well enough */ static void update_line (char *old, char *new, int current_line, int omax, int nmax, int inv_botlin) { register char *ofd, *ols, *oe, *nfd, *nls, *ne; int temp, lendiff, wsatend, od, nd, twidth, o_cpos; int current_invis_chars; int col_lendiff, col_temp; int bytes_to_insert; int mb_cur_max = MB_CUR_MAX; #if defined (HANDLE_MULTIBYTE) mbstate_t ps_new, ps_old; int new_offset, old_offset; #endif /* If we're at the right edge of a terminal that supports xn, we're ready to wrap around, so do so. This fixes problems with knowing the exact cursor position and cut-and-paste with certain terminal emulators. In this calculation, TEMP is the physical screen position of the cursor. */ if (mb_cur_max > 1 && rl_byte_oriented == 0) temp = _rl_last_c_pos; else temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset); if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode && _rl_last_v_pos == current_line - 1) { /* We're going to wrap around by writing the first character of NEW to the screen and dealing with changes to what's visible by modifying OLD to match it. Complicated by the presence of multi-width characters at the end of the line or beginning of the new one. */ /* old is always somewhere in visible_line; new is always somewhere in invisible_line. These should always be null-terminated. */ #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) { wchar_t wc; mbstate_t ps; int oldwidth, newwidth; int oldbytes, newbytes; size_t ret; /* This fixes only double-column characters, but if the wrapped character consumes more than three columns, spaces will be inserted in the string buffer. */ /* XXX remember that we are working on the invisible line right now; we don't swap visible and invisible until just before rl_redisplay returns */ /* This will remove the extra placeholder space we added with _rl_wrapped_multicolumn */ if (current_line < line_state_invisible->wbsize && line_state_invisible->wrapped_line[current_line] > 0) _rl_clear_to_eol (line_state_invisible->wrapped_line[current_line]); /* 1. how many screen positions does first char in old consume? */ memset (&ps, 0, sizeof (mbstate_t)); ret = mbrtowc (&wc, old, mb_cur_max, &ps); oldbytes = ret; if (MB_INVALIDCH (ret)) { oldwidth = 1; oldbytes = 1; } else if (MB_NULLWCH (ret)) oldwidth = 0; else oldwidth = WCWIDTH (wc); if (oldwidth < 0) oldwidth = 1; /* 2. how many screen positions does the first char in new consume? */ memset (&ps, 0, sizeof (mbstate_t)); ret = mbrtowc (&wc, new, mb_cur_max, &ps); newbytes = ret; if (MB_INVALIDCH (ret)) { newwidth = 1; newbytes = 1; } else if (MB_NULLWCH (ret)) newwidth = 0; else newwidth = WCWIDTH (wc); if (newwidth < 0) newwidth = 1; /* 3. if the new width is less than the old width, we need to keep going in new until we have consumed at least that many screen positions, and figure out how many bytes that will take */ while (newbytes < nmax && newwidth < oldwidth) { int t; ret = mbrtowc (&wc, new+newbytes, mb_cur_max, &ps); if (MB_INVALIDCH (ret)) { newwidth += 1; newbytes += 1; } else if (MB_NULLWCH (ret)) break; else { t = WCWIDTH (wc); newwidth += (t >= 0) ? t : 1; newbytes += ret; } } /* 4. If the new width is more than the old width, keep going in old until we have consumed exactly that many screen positions, and figure out how many bytes that will take. This is an optimization */ while (oldbytes < omax && oldwidth < newwidth) { int t; ret = mbrtowc (&wc, old+oldbytes, mb_cur_max, &ps); if (MB_INVALIDCH (ret)) { oldwidth += 1; oldbytes += 1; } else if (MB_NULLWCH (ret)) break; else { t = WCWIDTH (wc); oldwidth += (t >= 0) ? t : 1; oldbytes += ret; } } /* 5. write the first newbytes of new, which takes newwidth. This is where the screen wrapping takes place, and we are now writing characters onto the new line. We need to fix up old so it accurately reflects what is on the screen after the _rl_output_some_chars below. */ if (newwidth > 0) { int count, i, j; char *optr; _rl_output_some_chars (new, newbytes); _rl_last_c_pos = newwidth; _rl_last_v_pos++; /* 5a. If the number of screen positions doesn't match, punt and do a dumb update. */ if (newwidth != oldwidth) { ne = new + nmax; nd = newbytes; nfd = new + nd; goto dumb_update; } if (oldbytes != 0 && newbytes != 0) { /* We have written as many bytes from new as we need to consume the first character of old. Fix up `old' so it reflects the new screen contents. We use +1 in the memmove call to copy the trailing NUL. */ memmove (old+newbytes, old+oldbytes, strlen (old+oldbytes) + 1); memcpy (old, new, newbytes); j = newbytes - oldbytes; omax += j; /* Fix up indices if we copy data from one line to another */ for (i = current_line+1; i <= inv_botlin+1; i++) vis_lbreaks[i] += j; } } else { putc (' ', rl_outstream); _rl_last_c_pos = 1; _rl_last_v_pos++; if (old[0] && new[0]) old[0] = new[0]; } } else #endif { if (new[0]) putc (new[0], rl_outstream); else putc (' ', rl_outstream); _rl_last_c_pos = 1; _rl_last_v_pos++; if (old[0] && new[0]) old[0] = new[0]; } } /* Find first difference. */ #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) { /* See if the old line is a subset of the new line, so that the only change is adding characters. */ temp = (omax < nmax) ? omax : nmax; if (memcmp (old, new, temp) == 0) /* adding at the end */ { new_offset = old_offset = temp; ofd = old + temp; nfd = new + temp; } else { memset (&ps_new, 0, sizeof(mbstate_t)); memset (&ps_old, 0, sizeof(mbstate_t)); /* Are the old and new lines the same? */ if (omax == nmax && STREQN (new, old, omax)) { old_offset = omax; new_offset = nmax; ofd = old + omax; nfd = new + nmax; } else { /* Go through the line from the beginning and find the first difference. */ new_offset = old_offset = 0; for (ofd = old, nfd = new; (ofd - old < omax) && *ofd && _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); ) { old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY); new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY); ofd = old + old_offset; nfd = new + new_offset; } } } } else #endif for (ofd = old, nfd = new; (ofd - old < omax) && *ofd && (*ofd == *nfd); ofd++, nfd++) ; /* Move to the end of the screen line. ND and OD are used to keep track of the distance between ne and new and oe and old, respectively, to move a subtraction out of each loop. */ for (od = ofd - old, oe = ofd; od < omax && *oe; oe++, od++); for (nd = nfd - new, ne = nfd; nd < nmax && *ne; ne++, nd++); /* If no difference, continue to next line. */ if (ofd == oe && nfd == ne) return; #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0 && _rl_utf8locale) { wchar_t wc; mbstate_t ps = { 0 }; int t; /* If the first character in the difference is a zero-width character, assume it's a combining character and back one up so the two base characters no longer compare equivalently. */ t = mbrtowc (&wc, ofd, mb_cur_max, &ps); if (t > 0 && UNICODE_COMBINING_CHAR (wc) && WCWIDTH (wc) == 0) { old_offset = _rl_find_prev_mbchar (old, ofd - old, MB_FIND_ANY); new_offset = _rl_find_prev_mbchar (new, nfd - new, MB_FIND_ANY); ofd = old + old_offset; /* equal by definition */ nfd = new + new_offset; } } #endif wsatend = 1; /* flag for trailing whitespace */ #if defined (HANDLE_MULTIBYTE) /* Find the last character that is the same between the two lines. This bounds the region that needs to change. */ if (mb_cur_max > 1 && rl_byte_oriented == 0) { ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY); nls = new + _rl_find_prev_mbchar (new, ne - new, MB_FIND_ANY); while ((ols > ofd) && (nls > nfd)) { memset (&ps_old, 0, sizeof (mbstate_t)); memset (&ps_new, 0, sizeof (mbstate_t)); #if 0 /* On advice from jir@yamato.ibm.com */ _rl_adjust_point (old, ols - old, &ps_old); _rl_adjust_point (new, nls - new, &ps_new); #endif if (_rl_compare_chars (old, ols - old, &ps_old, new, nls - new, &ps_new) == 0) break; if (*ols == ' ') wsatend = 0; ols = old + _rl_find_prev_mbchar (old, ols - old, MB_FIND_ANY); nls = new + _rl_find_prev_mbchar (new, nls - new, MB_FIND_ANY); } } else { #endif /* HANDLE_MULTIBYTE */ ols = oe - 1; /* find last same */ nls = ne - 1; while ((ols > ofd) && (nls > nfd) && (*ols == *nls)) { if (*ols != ' ') wsatend = 0; ols--; nls--; } #if defined (HANDLE_MULTIBYTE) } #endif if (wsatend) { ols = oe; nls = ne; } #if defined (HANDLE_MULTIBYTE) /* This may not work for stateful encoding, but who cares? To handle stateful encoding properly, we have to scan each string from the beginning and compare. */ else if (_rl_compare_chars (ols, 0, NULL, nls, 0, NULL) == 0) #else else if (*ols != *nls) #endif { if (*ols) /* don't step past the NUL */ { if (mb_cur_max > 1 && rl_byte_oriented == 0) ols = old + _rl_find_next_mbchar (old, ols - old, 1, MB_FIND_ANY); else ols++; } if (*nls) { if (mb_cur_max > 1 && rl_byte_oriented == 0) nls = new + _rl_find_next_mbchar (new, nls - new, 1, MB_FIND_ANY); else nls++; } } /* count of invisible characters in the current invisible line. */ current_invis_chars = W_OFFSET (current_line, wrap_offset); if (_rl_last_v_pos != current_line) { _rl_move_vert (current_line); /* We have moved up to a new screen line. This line may or may not have invisible characters on it, but we do our best to recalculate visible_wrap_offset based on what we know. */ if (current_line == 0) visible_wrap_offset = prompt_invis_chars_first_line; /* XXX */ if ((mb_cur_max == 1 || rl_byte_oriented) && current_line == 0 && visible_wrap_offset) _rl_last_c_pos += visible_wrap_offset; } /* If this is the first line and there are invisible characters in the prompt string, and the prompt string has not changed, and the current cursor position is before the last invisible character in the prompt, and the index of the character to move to is past the end of the prompt string, then redraw the entire prompt string. We can only do this reliably if the terminal supports a `cr' capability. This can also happen if the prompt string has changed, and the first difference in the line is in the middle of the prompt string, after a sequence of invisible characters (worst case) and before the end of the prompt. In this case, we have to redraw the entire prompt string so that the entire sequence of invisible characters is drawn. We need to handle the worst case, when the difference is after (or in the middle of) a sequence of invisible characters that changes the text color and before the sequence that restores the text color to normal. Then we have to make sure that the lines still differ -- if they don't, we can return immediately. This is not an efficiency hack -- there is a problem with redrawing portions of the prompt string if they contain terminal escape sequences (like drawing the `unbold' sequence without a corresponding `bold') that manifests itself on certain terminals. */ lendiff = local_prompt_len; if (lendiff > nmax) lendiff = nmax; od = ofd - old; /* index of first difference in visible line */ nd = nfd - new; /* nd, od are buffer indexes */ if (current_line == 0 && !_rl_horizontal_scroll_mode && _rl_term_cr && lendiff > prompt_visible_length && _rl_last_c_pos > 0 && (((od > 0 || nd > 0) && (od <= prompt_last_invisible || nd <= prompt_last_invisible)) || ((od >= lendiff) && _rl_last_c_pos < PROMPT_ENDING_INDEX))) { #if defined (__MSDOS__) putc ('\r', rl_outstream); #else tputs (_rl_term_cr, 1, _rl_output_character_function); #endif if (modmark) _rl_output_some_chars ("*", 1); _rl_output_some_chars (local_prompt, lendiff); if (mb_cur_max > 1 && rl_byte_oriented == 0) { /* We take wrap_offset into account here so we can pass correct information to _rl_move_cursor_relative. */ _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff, 1) - wrap_offset + modmark; cpos_adjusted = 1; } else _rl_last_c_pos = lendiff + modmark; /* Now if we have printed the prompt string because the first difference was within the prompt, see if we need to recompute where the lines differ. Check whether where we are now is past the last place where the old and new lines are the same and short-circuit now if we are. */ if ((od <= prompt_last_invisible || nd <= prompt_last_invisible) && omax == nmax && lendiff > (ols-old) && lendiff > (nls-new)) return; /* XXX - we need to fix up our calculations if we are now past the old ofd/nfd and the prompt length (or line length) has changed. We punt on the problem and do a dumb update. We'd like to be able to just output the prompt from the beginning of the line up to the first difference, but you don't know the number of invisible characters in that case. This needs a lot of work to be efficient. */ if ((od <= prompt_last_invisible || nd <= prompt_last_invisible)) { nfd = new + lendiff; /* number of characters we output above */ nd = lendiff; /* Do a dumb update and return */ dumb_update: temp = ne - nfd; if (temp > 0) { _rl_output_some_chars (nfd, temp); if (mb_cur_max > 1 && rl_byte_oriented == 0) { _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1); /* Need to adjust here based on wrap_offset. Guess that if this is the line containing the last line of the prompt we need to adjust by wrap_offset-prompt_invis_chars_first_line on the assumption that this is the number of invisible characters in the last line of the prompt. */ if (wrap_offset > prompt_invis_chars_first_line && current_line == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && _rl_horizontal_scroll_mode == 0) { _rl_last_c_pos -= wrap_offset - prompt_invis_chars_first_line; cpos_adjusted = 1; } } else _rl_last_c_pos += temp; } if (nmax < omax) goto clear_rest_of_line; /* XXX */ else return; } } o_cpos = _rl_last_c_pos; /* When this function returns, _rl_last_c_pos is correct, and an absolute cursor position in multibyte mode, but a buffer index when not in a multibyte locale. */ _rl_move_cursor_relative (od, old); #if defined (HANDLE_MULTIBYTE) /* We need to indicate that the cursor position is correct in the presence of invisible characters in the prompt string. Let's see if setting this when we make sure we're at the end of the drawn prompt string works. */ if (current_line == 0 && mb_cur_max > 1 && rl_byte_oriented == 0 && (_rl_last_c_pos > 0 || o_cpos > 0) && _rl_last_c_pos == prompt_physical_chars) cpos_adjusted = 1; #endif /* if (len (new) > len (old)) lendiff == difference in buffer (bytes) col_lendiff == difference on screen (columns) When not using multibyte characters, these are equal */ lendiff = (nls - nfd) - (ols - ofd); if (mb_cur_max > 1 && rl_byte_oriented == 0) col_lendiff = _rl_col_width (new, nfd - new, nls - new, 1) - _rl_col_width (old, ofd - old, ols - old, 1); else col_lendiff = lendiff; /* If we are changing the number of invisible characters in a line, and the spot of first difference is before the end of the invisible chars, lendiff needs to be adjusted. */ if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */ current_invis_chars != visible_wrap_offset) { if (mb_cur_max > 1 && rl_byte_oriented == 0) { lendiff += visible_wrap_offset - current_invis_chars; col_lendiff += visible_wrap_offset - current_invis_chars; } else { lendiff += visible_wrap_offset - current_invis_chars; col_lendiff = lendiff; } } /* We use temp as a count of the number of bytes from the first difference to the end of the new line. col_temp is the corresponding number of screen columns. A `dumb' update moves to the spot of first difference and writes TEMP bytes. */ /* Insert (diff (len (old), len (new)) ch. */ temp = ne - nfd; if (mb_cur_max > 1 && rl_byte_oriented == 0) col_temp = _rl_col_width (new, nfd - new, ne - new, 1); else col_temp = temp; /* how many bytes from the new line buffer to write to the display */ bytes_to_insert = nls - nfd; /* col_lendiff > 0 if we are adding characters to the line */ if (col_lendiff > 0) /* XXX - was lendiff */ { /* Non-zero if we're increasing the number of lines. */ int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; /* If col_lendiff is > 0, implying that the new string takes up more screen real estate than the old, but lendiff is < 0, meaning that it takes fewer bytes, we need to just output the characters starting from the first difference. These will overwrite what is on the display, so there's no reason to do a smart update. This can really only happen in a multibyte environment. */ if (lendiff < 0) { _rl_output_some_chars (nfd, temp); _rl_last_c_pos += col_temp; /* XXX - was _rl_col_width (nfd, 0, temp, 1); */ /* If nfd begins before any invisible characters in the prompt, adjust _rl_last_c_pos to account for wrap_offset and set cpos_adjusted to let the caller know. */ if (current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } return; } /* Sometimes it is cheaper to print the characters rather than use the terminal's capabilities. If we're growing the number of lines, make sure we actually cause the new line to wrap around on auto-wrapping terminals. */ else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) { /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and _rl_horizontal_scroll_mode == 1, inserting the characters with _rl_term_IC or _rl_term_ic will screw up the screen because of the invisible characters. We need to just draw them. */ /* The same thing happens if we're trying to draw before the last invisible character in the prompt string or we're increasing the number of invisible characters in the line and we're not drawing the entire prompt string. */ if (*ols && ((_rl_horizontal_scroll_mode && _rl_last_c_pos == 0 && lendiff > prompt_visible_length && current_invis_chars > 0) == 0) && (((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible) && (col_lendiff < prompt_visible_length)) == 0) && (visible_wrap_offset >= current_invis_chars)) { open_some_spaces (col_lendiff); _rl_output_some_chars (nfd, bytes_to_insert); if (mb_cur_max > 1 && rl_byte_oriented == 0) _rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1); else _rl_last_c_pos += bytes_to_insert; } else if ((mb_cur_max == 1 || rl_byte_oriented != 0) && *ols == 0 && lendiff > 0) { /* At the end of a line the characters do not have to be "inserted". They can just be placed on the screen. */ _rl_output_some_chars (nfd, temp); _rl_last_c_pos += col_temp; return; } else /* just write from first difference to end of new line */ { _rl_output_some_chars (nfd, temp); _rl_last_c_pos += col_temp; /* If nfd begins before the last invisible character in the prompt, adjust _rl_last_c_pos to account for wrap_offset and set cpos_adjusted to let the caller know. */ if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } return; } if (bytes_to_insert > lendiff) { /* If nfd begins before the last invisible character in the prompt, adjust _rl_last_c_pos to account for wrap_offset and set cpos_adjusted to let the caller know. */ if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } } } else { /* cannot insert chars, write to EOL */ _rl_output_some_chars (nfd, temp); _rl_last_c_pos += col_temp; /* If we're in a multibyte locale and were before the last invisible char in the current line (which implies we just output some invisible characters) we need to adjust _rl_last_c_pos, since it represents a physical character position. */ /* The current_line*rl_screenwidth+prompt_invis_chars_first_line is a crude attempt to compute how far into the new line buffer we are. It doesn't work well in the face of multibyte characters and needs to be rethought. XXX */ if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == prompt_last_screen_line && wrap_offset && displaying_prompt_first_line && wrap_offset != prompt_invis_chars_first_line && ((nfd-new) < (prompt_last_invisible-(current_line*_rl_screenwidth+prompt_invis_chars_first_line)))) { _rl_last_c_pos -= wrap_offset - prompt_invis_chars_first_line; cpos_adjusted = 1; } } } else /* Delete characters from line. */ { /* If possible and inexpensive to use terminal deletion, then do so. */ if (_rl_term_dc && (2 * col_temp) >= -col_lendiff) { /* If all we're doing is erasing the invisible characters in the prompt string, don't bother. It screws up the assumptions about what's on the screen. */ if (_rl_horizontal_scroll_mode && _rl_last_c_pos == 0 && displaying_prompt_first_line && -lendiff == visible_wrap_offset) col_lendiff = 0; /* If we have moved lmargin and we're shrinking the line, we've already moved the cursor to the first character of the new line, so deleting -col_lendiff characters will mess up the cursor position calculation */ if (_rl_horizontal_scroll_mode && displaying_prompt_first_line == 0 && col_lendiff && _rl_last_c_pos < -col_lendiff) col_lendiff = 0; if (col_lendiff) delete_chars (-col_lendiff); /* delete (diff) characters */ /* Copy (new) chars to screen from first diff to last match, overwriting what is there. */ if (bytes_to_insert > 0) { /* If nfd begins at the prompt, or before the invisible characters in the prompt, we need to adjust _rl_last_c_pos in a multibyte locale to account for the wrap offset and set cpos_adjusted accordingly. */ _rl_output_some_chars (nfd, bytes_to_insert); if (mb_cur_max > 1 && rl_byte_oriented == 0) { _rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1); if (current_line == 0 && wrap_offset && displaying_prompt_first_line && _rl_last_c_pos >= wrap_offset && /* XXX was > */ ((nfd - new) <= prompt_last_invisible)) { _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } #if 1 #ifdef HANDLE_MULTIBYTE /* If we write a non-space into the last screen column, remove the note that we added a space to compensate for a multibyte double-width character that didn't fit, since it's only valid for what was previously there. */ /* XXX - watch this */ if (_rl_last_c_pos == _rl_screenwidth && line_state_invisible->wrapped_line[current_line+1] && nfd[bytes_to_insert-1] != ' ') line_state_invisible->wrapped_line[current_line+1] = 0; #endif #endif } else _rl_last_c_pos += bytes_to_insert; /* XXX - we only want to do this if we are at the end of the line so we move there with _rl_move_cursor_relative */ if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) { _rl_move_cursor_relative (ne-new, new); goto clear_rest_of_line; } } } /* Otherwise, print over the existing material. */ else { if (temp > 0) { /* If nfd begins at the prompt, or before the invisible characters in the prompt, we need to adjust _rl_last_c_pos in a multibyte locale to account for the wrap offset and set cpos_adjusted accordingly. */ _rl_output_some_chars (nfd, temp); _rl_last_c_pos += col_temp; /* XXX */ if (mb_cur_max > 1 && rl_byte_oriented == 0) { if (current_line == 0 && wrap_offset && displaying_prompt_first_line && _rl_last_c_pos > wrap_offset && ((nfd - new) <= prompt_last_invisible)) { _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } } } clear_rest_of_line: lendiff = (oe - old) - (ne - new); if (mb_cur_max > 1 && rl_byte_oriented == 0) col_lendiff = _rl_col_width (old, 0, oe - old, 1) - _rl_col_width (new, 0, ne - new, 1); else col_lendiff = lendiff; /* If we've already printed over the entire width of the screen, including the old material, then col_lendiff doesn't matter and space_to_eol will insert too many spaces. XXX - maybe we should adjust col_lendiff based on the difference between _rl_last_c_pos and _rl_screenwidth */ if (col_lendiff && ((mb_cur_max == 1 || rl_byte_oriented) || (_rl_last_c_pos < _rl_screenwidth))) { if (_rl_term_autowrap && current_line < inv_botlin) space_to_eol (col_lendiff); else _rl_clear_to_eol (col_lendiff); } } } } /* Tell the update routines that we have moved onto a new (empty) line. */ int rl_on_new_line (void) { if (visible_line) visible_line[0] = '\0'; _rl_last_c_pos = _rl_last_v_pos = 0; _rl_vis_botlin = last_lmargin = 0; if (vis_lbreaks) vis_lbreaks[0] = vis_lbreaks[1] = 0; visible_wrap_offset = 0; return 0; } /* Clear all screen lines occupied by the current readline line buffer (visible line) */ int rl_clear_visible_line (void) { int curr_line; /* Make sure we move to column 0 so we clear the entire line */ #if defined (__MSDOS__) putc ('\r', rl_outstream); #else tputs (_rl_term_cr, 1, _rl_output_character_function); #endif _rl_last_c_pos = 0; /* Move to the last screen line of the current visible line */ _rl_move_vert (_rl_vis_botlin); /* And erase screen lines going up to line 0 (first visible line) */ for (curr_line = _rl_last_v_pos; curr_line >= 0; curr_line--) { _rl_move_vert (curr_line); _rl_clear_to_eol (0); } return 0; } /* Tell the update routines that we have moved onto a new line with the prompt already displayed. Code originally from the version of readline distributed with CLISP. rl_expand_prompt must have already been called (explicitly or implicitly). This still doesn't work exactly right; it should use expand_prompt() */ int rl_on_new_line_with_prompt (void) { int prompt_size, i, l, real_screenwidth, newlines; char *prompt_last_line, *lprompt; /* Initialize visible_line and invisible_line to ensure that they can hold the already-displayed prompt. */ prompt_size = strlen (rl_prompt) + 1; init_line_structures (prompt_size); /* Make sure the line structures hold the already-displayed prompt for redisplay. */ lprompt = local_prompt ? local_prompt : rl_prompt; strcpy (visible_line, lprompt); strcpy (invisible_line, lprompt); /* If the prompt contains newlines, take the last tail. */ prompt_last_line = strrchr (rl_prompt, '\n'); if (!prompt_last_line) prompt_last_line = rl_prompt; l = strlen (prompt_last_line); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) _rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l, 1); /* XXX */ else _rl_last_c_pos = l; /* Dissect prompt_last_line into screen lines. Note that here we have to use the real screenwidth. Readline's notion of screenwidth might be one less, see terminal.c. */ real_screenwidth = _rl_screenwidth + (_rl_term_autowrap ? 0 : 1); _rl_last_v_pos = l / real_screenwidth; /* If the prompt length is a multiple of real_screenwidth, we don't know whether the cursor is at the end of the last line, or already at the beginning of the next line. Output a newline just to be safe. */ if (l > 0 && (l % real_screenwidth) == 0) _rl_output_some_chars ("\n", 1); last_lmargin = 0; newlines = 0; i = 0; while (i <= l) { _rl_vis_botlin = newlines; vis_lbreaks[newlines++] = i; i += real_screenwidth; } vis_lbreaks[newlines] = l; visible_wrap_offset = 0; rl_display_prompt = rl_prompt; /* XXX - make sure it's set */ return 0; } /* Actually update the display, period. */ int rl_forced_update_display (void) { register char *temp; if (visible_line) { temp = visible_line; while (*temp) *temp++ = '\0'; } rl_on_new_line (); forced_display++; (*rl_redisplay_function) (); return 0; } /* Redraw only the last line of a multi-line prompt. */ void rl_redraw_prompt_last_line (void) { char *t; t = strrchr (rl_display_prompt, '\n'); if (t) redraw_prompt (++t); else rl_forced_update_display (); } /* Move the cursor from _rl_last_c_pos to NEW, which are buffer indices. (Well, when we don't have multibyte characters, _rl_last_c_pos is a buffer index.) DATA is the contents of the screen line of interest; i.e., where the movement is being done. DATA is always the visible line or the invisible line */ void _rl_move_cursor_relative (int new, const char *data) { register int i; int woff; /* number of invisible chars on current line */ int cpos, dpos; /* current and desired cursor positions */ int adjust; int in_invisline; int mb_cur_max = MB_CUR_MAX; woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); cpos = _rl_last_c_pos; if (cpos == 0 && cpos == new) return; #if defined (HANDLE_MULTIBYTE) /* If we have multibyte characters, NEW is indexed by the buffer point in a multibyte string, but _rl_last_c_pos is the display position. In this case, NEW's display position is not obvious and must be calculated. We need to account for invisible characters in this line, as long as we are past them and they are counted by _rl_col_width. */ if (mb_cur_max > 1 && rl_byte_oriented == 0) { adjust = 1; /* Try to short-circuit common cases and eliminate a bunch of multibyte character function calls. */ /* 1. prompt string */ if (new == local_prompt_len && memcmp (data, local_prompt, new) == 0) { dpos = prompt_physical_chars; cpos_adjusted = 1; adjust = 0; } /* 2. prompt_string + line contents */ else if (new > local_prompt_len && local_prompt && memcmp (data, local_prompt, local_prompt_len) == 0) { dpos = prompt_physical_chars + _rl_col_width (data, local_prompt_len, new, 1); cpos_adjusted = 1; adjust = 0; } else dpos = _rl_col_width (data, 0, new, 1); if (displaying_prompt_first_line == 0) adjust = 0; /* yet another special case: printing the last line of a prompt with multibyte characters and invisible characters whose printable length exceeds the screen width with the last invisible character (prompt_last_invisible) in the last line. IN_INVISLINE is the offset of DATA in invisible_line */ in_invisline = 0; if (data > invisible_line && data < invisible_line+inv_lbreaks[_rl_inv_botlin+1]) in_invisline = data - invisible_line; /* Use NEW when comparing against the last invisible character in the prompt string, since they're both buffer indices and DPOS is a desired display position. */ /* NEW is relative to the current displayed line, while PROMPT_LAST_INVISIBLE is relative to the entire (wrapped) line. Need a way to reconcile these two variables by turning NEW into a buffer position relative to the start of the line */ if (adjust && ((new > prompt_last_invisible) || /* XXX - don't use woff here */ (new+in_invisline > prompt_last_invisible) || /* invisible line */ (prompt_physical_chars >= _rl_screenwidth && /* visible line */ _rl_last_v_pos == prompt_last_screen_line && wrap_offset >= woff && dpos >= woff && new > (prompt_last_invisible-(vis_lbreaks[_rl_last_v_pos])-wrap_offset)))) /* XXX last comparison might need to be >= */ { dpos -= woff; /* Since this will be assigned to _rl_last_c_pos at the end (more precisely, _rl_last_c_pos == dpos when this function returns), let the caller know. */ cpos_adjusted = 1; } } else #endif dpos = new; /* If we don't have to do anything, then return. */ if (cpos == dpos) return; /* It may be faster to output a CR, and then move forwards instead of moving backwards. */ /* i == current physical cursor position. */ #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) i = _rl_last_c_pos; else #endif i = _rl_last_c_pos - woff; if (dpos == 0 || CR_FASTER (dpos, _rl_last_c_pos) || (_rl_term_autowrap && i == _rl_screenwidth)) { #if defined (__MSDOS__) putc ('\r', rl_outstream); #else tputs (_rl_term_cr, 1, _rl_output_character_function); #endif /* !__MSDOS__ */ cpos = _rl_last_c_pos = 0; } if (cpos < dpos) { /* Move the cursor forward. We do it by printing the command to move the cursor forward if there is one, else print that portion of the output buffer again. Which is cheaper? */ /* The above comment is left here for posterity. It is faster to print one character (non-control) than to print a control sequence telling the terminal to move forward one character. That kind of control is for people who don't know what the data is underneath the cursor. */ /* However, we need a handle on where the current display position is in the buffer for the immediately preceding comment to be true. In multibyte locales, we don't currently have that info available. Without it, we don't know where the data we have to display begins in the buffer and we have to go back to the beginning of the screen line. In this case, we can use the terminal sequence to move forward if it's available. */ if (mb_cur_max > 1 && rl_byte_oriented == 0) { if (_rl_term_forward_char) { for (i = cpos; i < dpos; i++) tputs (_rl_term_forward_char, 1, _rl_output_character_function); } else { tputs (_rl_term_cr, 1, _rl_output_character_function); for (i = 0; i < new; i++) putc (data[i], rl_outstream); } } else for (i = cpos; i < new; i++) putc (data[i], rl_outstream); } #if defined (HANDLE_MULTIBYTE) /* NEW points to the buffer point, but _rl_last_c_pos is the display point. The byte length of the string is probably bigger than the column width of the string, which means that if NEW == _rl_last_c_pos, then NEW's display point is less than _rl_last_c_pos. */ #endif else if (cpos > dpos) _rl_backspace (cpos - dpos); _rl_last_c_pos = dpos; } /* PWP: move the cursor up or down. */ void _rl_move_vert (int to) { register int delta, i; if (_rl_last_v_pos == to || to > _rl_screenheight) return; if ((delta = to - _rl_last_v_pos) > 0) { for (i = 0; i < delta; i++) putc ('\n', rl_outstream); #if defined (__MSDOS__) putc ('\r', rl_outstream); #else tputs (_rl_term_cr, 1, _rl_output_character_function); #endif _rl_last_c_pos = 0; } else { /* delta < 0 */ #ifdef __DJGPP__ int row, col; fflush (rl_outstream); ScreenGetCursor (&row, &col); ScreenSetCursor (row + delta, col); i = -delta; #else if (_rl_term_up && *_rl_term_up) for (i = 0; i < -delta; i++) tputs (_rl_term_up, 1, _rl_output_character_function); #endif /* !__DJGPP__ */ } _rl_last_v_pos = to; /* Now TO is here */ } /* Physically print C on rl_outstream. This is for functions which know how to optimize the display. Return the number of characters output. */ int rl_show_char (int c) { int n = 1; if (META_CHAR (c) && (_rl_output_meta_chars == 0)) { fprintf (rl_outstream, "M-"); n += 2; c = UNMETA (c); } #if defined (DISPLAY_TABS) if ((CTRL_CHAR (c) && c != '\t') || c == RUBOUT) #else if (CTRL_CHAR (c) || c == RUBOUT) #endif /* !DISPLAY_TABS */ { fprintf (rl_outstream, "C-"); n += 2; c = CTRL_CHAR (c) ? UNCTRL (c) : '?'; } putc (c, rl_outstream); fflush (rl_outstream); return n; } int rl_character_len (int c, int pos) { unsigned char uc; uc = (unsigned char)c; if (META_CHAR (uc)) return ((_rl_output_meta_chars == 0) ? 4 : 1); if (uc == '\t') { #if defined (DISPLAY_TABS) return (((pos | 7) + 1) - pos); #else return (2); #endif /* !DISPLAY_TABS */ } if (CTRL_CHAR (c) || c == RUBOUT) return (2); return ((ISPRINT (uc)) ? 1 : 2); } /* How to print things in the "echo-area". The prompt is treated as a mini-modeline. */ static int msg_saved_prompt = 0; #if defined (USE_VARARGS) int #if defined (PREFER_STDARG) rl_message (const char *format, ...) #else rl_message (va_alist) va_dcl #endif { va_list args; #if defined (PREFER_VARARGS) char *format; #endif #if defined (HAVE_VSNPRINTF) int bneed; #endif #if defined (PREFER_STDARG) va_start (args, format); #else va_start (args); format = va_arg (args, char *); #endif if (msg_buf == 0) msg_buf = xmalloc (msg_bufsiz = 128); #if defined (HAVE_VSNPRINTF) bneed = vsnprintf (msg_buf, msg_bufsiz, format, args); if (bneed >= msg_bufsiz - 1) { msg_bufsiz = bneed + 1; msg_buf = xrealloc (msg_buf, msg_bufsiz); va_end (args); #if defined (PREFER_STDARG) va_start (args, format); #else va_start (args); format = va_arg (args, char *); #endif vsnprintf (msg_buf, msg_bufsiz - 1, format, args); } #else vsprintf (msg_buf, format, args); msg_buf[msg_bufsiz - 1] = '\0'; /* overflow? */ #endif va_end (args); if (saved_local_prompt == 0) { rl_save_prompt (); msg_saved_prompt = 1; } else if (local_prompt != saved_local_prompt) { FREE (local_prompt); FREE (local_prompt_prefix); local_prompt = (char *)NULL; } rl_display_prompt = msg_buf; local_prompt = expand_prompt (msg_buf, 0, &prompt_visible_length, &prompt_last_invisible, &prompt_invis_chars_first_line, &prompt_physical_chars); local_prompt_prefix = (char *)NULL; local_prompt_len = local_prompt ? strlen (local_prompt) : 0; (*rl_redisplay_function) (); return 0; } #else /* !USE_VARARGS */ int rl_message (format, arg1, arg2) char *format; { if (msg_buf == 0) msg_buf = xmalloc (msg_bufsiz = 128); sprintf (msg_buf, format, arg1, arg2); msg_buf[msg_bufsiz - 1] = '\0'; /* overflow? */ rl_display_prompt = msg_buf; if (saved_local_prompt == 0) { rl_save_prompt (); msg_saved_prompt = 1; } else if (local_prompt != saved_local_prompt) { FREE (local_prompt); FREE (local_prompt_prefix); local_prompt = (char *)NULL; } local_prompt = expand_prompt (msg_buf, 0, &prompt_visible_length, &prompt_last_invisible, &prompt_invis_chars_first_line, &prompt_physical_chars); local_prompt_prefix = (char *)NULL; local_prompt_len = local_prompt ? strlen (local_prompt) : 0; (*rl_redisplay_function) (); return 0; } #endif /* !USE_VARARGS */ /* How to clear things from the "echo-area". */ int rl_clear_message (void) { rl_display_prompt = rl_prompt; if (msg_saved_prompt) { rl_restore_prompt (); msg_saved_prompt = 0; } (*rl_redisplay_function) (); return 0; } int rl_reset_line_state (void) { rl_on_new_line (); rl_display_prompt = rl_prompt ? rl_prompt : ""; forced_display = 1; return 0; } /* Save all of the variables associated with the prompt and its display. Most of the complexity is dealing with the invisible characters in the prompt string and where they are. There are enough of these that I should consider a struct. */ void rl_save_prompt (void) { saved_local_prompt = local_prompt; saved_local_prefix = local_prompt_prefix; saved_prefix_length = prompt_prefix_length; saved_local_length = local_prompt_len; saved_last_invisible = prompt_last_invisible; saved_visible_length = prompt_visible_length; saved_invis_chars_first_line = prompt_invis_chars_first_line; saved_physical_chars = prompt_physical_chars; saved_local_prompt_newlines = local_prompt_newlines; local_prompt = local_prompt_prefix = (char *)0; local_prompt_len = 0; local_prompt_newlines = (int *)0; prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0; prompt_invis_chars_first_line = prompt_physical_chars = 0; } void rl_restore_prompt (void) { FREE (local_prompt); FREE (local_prompt_prefix); FREE (local_prompt_newlines); local_prompt = saved_local_prompt; local_prompt_prefix = saved_local_prefix; local_prompt_len = saved_local_length; local_prompt_newlines = saved_local_prompt_newlines; prompt_prefix_length = saved_prefix_length; prompt_last_invisible = saved_last_invisible; prompt_visible_length = saved_visible_length; prompt_invis_chars_first_line = saved_invis_chars_first_line; prompt_physical_chars = saved_physical_chars; /* can test saved_local_prompt to see if prompt info has been saved. */ saved_local_prompt = saved_local_prefix = (char *)0; saved_local_length = 0; saved_last_invisible = saved_visible_length = saved_prefix_length = 0; saved_invis_chars_first_line = saved_physical_chars = 0; saved_local_prompt_newlines = 0; } char * _rl_make_prompt_for_search (int pchar) { int len; char *pmt, *p; rl_save_prompt (); /* We've saved the prompt, and can do anything with the various prompt strings we need before they're restored. We want the unexpanded portion of the prompt string after any final newline. */ p = rl_prompt ? strrchr (rl_prompt, '\n') : 0; if (p == 0) { len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0; pmt = (char *)xmalloc (len + 2); if (len) strcpy (pmt, rl_prompt); pmt[len] = pchar; pmt[len+1] = '\0'; } else { p++; len = strlen (p); pmt = (char *)xmalloc (len + 2); if (len) strcpy (pmt, p); pmt[len] = pchar; pmt[len+1] = '\0'; } /* will be overwritten by expand_prompt, called from rl_message */ prompt_physical_chars = saved_physical_chars + 1; return pmt; } /* Quick redisplay hack when erasing characters at the end of the line. */ void _rl_erase_at_end_of_line (int l) { register int i; _rl_backspace (l); for (i = 0; i < l; i++) putc (' ', rl_outstream); _rl_backspace (l); for (i = 0; i < l; i++) visible_line[--_rl_last_c_pos] = '\0'; rl_display_fixed++; } /* Clear to the end of the line. COUNT is the minimum number of character spaces to clear, but we use a terminal escape sequence if available. */ void _rl_clear_to_eol (int count) { #ifndef __MSDOS__ if (_rl_term_clreol) tputs (_rl_term_clreol, 1, _rl_output_character_function); else #endif if (count) space_to_eol (count); } /* Clear to the end of the line using spaces. COUNT is the minimum number of character spaces to clear, */ static void space_to_eol (int count) { register int i; for (i = 0; i < count; i++) putc (' ', rl_outstream); _rl_last_c_pos += count; } void _rl_clear_screen (void) { #if defined (__DJGPP__) ScreenClear (); ScreenSetCursor (0, 0); #else if (_rl_term_clrpag) tputs (_rl_term_clrpag, 1, _rl_output_character_function); else rl_crlf (); #endif /* __DJGPP__ */ } /* Insert COUNT characters from STRING to the output stream at column COL. */ static void insert_some_chars (char *string, int count, int col) { open_some_spaces (col); _rl_output_some_chars (string, count); } /* Insert COL spaces, keeping the cursor at the same position. We follow the ncurses documentation and use either im/ei with explicit spaces, or IC/ic by itself. We assume there will either be ei or we don't need to use it. */ static void open_some_spaces (int col) { #if !defined (__MSDOS__) && (!defined (__MINGW32__) || defined (NCURSES_VERSION)) char *buffer; register int i; /* If IC is defined, then we do not have to "enter" insert mode. */ if (_rl_term_IC) { buffer = tgoto (_rl_term_IC, 0, col); tputs (buffer, 1, _rl_output_character_function); } else if (_rl_term_im && *_rl_term_im) { tputs (_rl_term_im, 1, _rl_output_character_function); /* just output the desired number of spaces */ for (i = col; i--; ) _rl_output_character_function (' '); /* If there is a string to turn off insert mode, use it now. */ if (_rl_term_ei && *_rl_term_ei) tputs (_rl_term_ei, 1, _rl_output_character_function); /* and move back the right number of spaces */ _rl_backspace (col); } else if (_rl_term_ic && *_rl_term_ic) { /* If there is a special command for inserting characters, then use that first to open up the space. */ for (i = col; i--; ) tputs (_rl_term_ic, 1, _rl_output_character_function); } #endif /* !__MSDOS__ && (!__MINGW32__ || NCURSES_VERSION)*/ } /* Delete COUNT characters from the display line. */ static void delete_chars (int count) { if (count > _rl_screenwidth) /* XXX */ return; #if !defined (__MSDOS__) && (!defined (__MINGW32__) || defined (NCURSES_VERSION)) if (_rl_term_DC && *_rl_term_DC) { char *buffer; buffer = tgoto (_rl_term_DC, count, count); tputs (buffer, count, _rl_output_character_function); } else { if (_rl_term_dc && *_rl_term_dc) while (count--) tputs (_rl_term_dc, 1, _rl_output_character_function); } #endif /* !__MSDOS__ && (!__MINGW32__ || NCURSES_VERSION)*/ } void _rl_update_final (void) { int full_lines, woff, botline_length; full_lines = 0; /* If the cursor is the only thing on an otherwise-blank last line, compensate so we don't print an extra CRLF. */ if (_rl_vis_botlin && _rl_last_c_pos == 0 && visible_line[vis_lbreaks[_rl_vis_botlin]] == 0) { _rl_vis_botlin--; full_lines = 1; } _rl_move_vert (_rl_vis_botlin); woff = W_OFFSET(_rl_vis_botlin, wrap_offset); botline_length = VIS_LLEN(_rl_vis_botlin) - woff; /* If we've wrapped lines, remove the final xterm line-wrap flag. */ if (full_lines && _rl_term_autowrap && botline_length == _rl_screenwidth) { char *last_line; /* LAST_LINE includes invisible characters, so if you want to get the last character of the first line, you have to take WOFF into account. This needs to be done for both calls to _rl_move_cursor_relative, which takes a buffer position as the first argument, and any direct subscripts of LAST_LINE. */ last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; /* = VIS_CHARS(_rl_vis_botlin); */ cpos_buffer_position = -1; /* don't know where we are in buffer */ _rl_move_cursor_relative (_rl_screenwidth - 1 + woff, last_line); /* XXX */ _rl_clear_to_eol (0); putc (last_line[_rl_screenwidth - 1 + woff], rl_outstream); } _rl_vis_botlin = 0; if (botline_length > 0 || _rl_last_c_pos > 0) rl_crlf (); fflush (rl_outstream); rl_display_fixed++; } /* Move to the start of the current line. */ static void cr (void) { if (_rl_term_cr) { #if defined (__MSDOS__) putc ('\r', rl_outstream); #else tputs (_rl_term_cr, 1, _rl_output_character_function); #endif _rl_last_c_pos = 0; } } /* Redraw the last line of a multi-line prompt that may possibly contain terminal escape sequences. Called with the cursor at column 0 of the line to draw the prompt on. */ static void redraw_prompt (char *t) { char *oldp; oldp = rl_display_prompt; rl_save_prompt (); rl_display_prompt = t; local_prompt = expand_prompt (t, PMT_MULTILINE, &prompt_visible_length, &prompt_last_invisible, &prompt_invis_chars_first_line, &prompt_physical_chars); local_prompt_prefix = (char *)NULL; local_prompt_len = local_prompt ? strlen (local_prompt) : 0; rl_forced_update_display (); rl_display_prompt = oldp; rl_restore_prompt(); } /* Redisplay the current line after a SIGWINCH is received. */ void _rl_redisplay_after_sigwinch (void) { char *t; /* Clear the last line (assuming that the screen size change will result in either more or fewer characters on that line only) and put the cursor at column 0. Make sure the right thing happens if we have wrapped to a new screen line. */ if (_rl_term_cr) { _rl_move_vert (_rl_vis_botlin); #if defined (__MSDOS__) putc ('\r', rl_outstream); #else tputs (_rl_term_cr, 1, _rl_output_character_function); #endif _rl_last_c_pos = 0; #if defined (__MSDOS__) space_to_eol (_rl_screenwidth); putc ('\r', rl_outstream); #else if (_rl_term_clreol) tputs (_rl_term_clreol, 1, _rl_output_character_function); else { space_to_eol (_rl_screenwidth); tputs (_rl_term_cr, 1, _rl_output_character_function); } #endif if (_rl_last_v_pos > 0) _rl_move_vert (0); } else rl_crlf (); /* Redraw only the last line of a multi-line prompt. */ t = strrchr (rl_display_prompt, '\n'); if (t) redraw_prompt (++t); else rl_forced_update_display (); } void _rl_clean_up_for_exit (void) { if (_rl_echoing_p) { if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ _rl_move_vert (_rl_vis_botlin); _rl_vis_botlin = 0; fflush (rl_outstream); rl_restart_output (1, 0); } } void _rl_erase_entire_line (void) { cr (); _rl_clear_to_eol (0); cr (); fflush (rl_outstream); } void _rl_ttyflush (void) { fflush (rl_outstream); } /* return the `current display line' of the cursor -- the number of lines to move up to get to the first screen line of the current readline line. */ int _rl_current_display_line (void) { int ret, nleft; /* Find out whether or not there might be invisible characters in the editing buffer. */ if (rl_display_prompt == rl_prompt) nleft = _rl_last_c_pos - _rl_screenwidth - rl_visible_prompt_length; else nleft = _rl_last_c_pos - _rl_screenwidth; if (nleft > 0) ret = 1 + nleft / _rl_screenwidth; else ret = 0; return ret; } #if defined (HANDLE_MULTIBYTE) /* Calculate the number of screen columns occupied by STR from START to END. In the case of multibyte characters with stateful encoding, we have to scan from the beginning of the string to take the state into account. */ static int _rl_col_width (const char *str, int start, int end, int flags) { wchar_t wc; mbstate_t ps; int tmp, point, width, max; if (end <= start) return 0; if (MB_CUR_MAX == 1 || rl_byte_oriented) /* this can happen in some cases where it's inconvenient to check */ return (end - start); memset (&ps, 0, sizeof (mbstate_t)); point = 0; max = end; /* Try to short-circuit common cases. The adjustment to remove wrap_offset is done by the caller. */ /* 1. prompt string */ if (flags && start == 0 && end == local_prompt_len && memcmp (str, local_prompt, local_prompt_len) == 0) return (prompt_physical_chars + wrap_offset); /* 2. prompt string + line contents */ else if (flags && start == 0 && local_prompt_len > 0 && end > local_prompt_len && local_prompt && memcmp (str, local_prompt, local_prompt_len) == 0) { tmp = prompt_physical_chars + wrap_offset; /* XXX - try to call ourselves recursively with non-prompt portion */ tmp += _rl_col_width (str, local_prompt_len, end, flags); return (tmp); } while (point < start) { if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point])) { memset (&ps, 0, sizeof (mbstate_t)); tmp = 1; } else tmp = mbrlen (str + point, max, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* In this case, the bytes are invalid or too short to compose a multibyte character, so we assume that the first byte represents a single character. */ point++; max--; /* Clear the state of the byte sequence, because in this case the effect of mbstate is undefined. */ memset (&ps, 0, sizeof (mbstate_t)); } else if (MB_NULLWCH (tmp)) break; /* Found '\0' */ else { point += tmp; max -= tmp; } } /* If START is not a byte that starts a character, then POINT will be greater than START. In this case, assume that (POINT - START) gives a byte count that is the number of columns of difference. */ width = point - start; while (point < end) { if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point])) { tmp = 1; wc = (wchar_t) str[point]; } else tmp = mbrtowc (&wc, str + point, max, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* In this case, the bytes are invalid or too short to compose a multibyte character, so we assume that the first byte represents a single character. */ point++; max--; /* and assume that the byte occupies a single column. */ width++; /* Clear the state of the byte sequence, because in this case the effect of mbstate is undefined. */ memset (&ps, 0, sizeof (mbstate_t)); } else if (MB_NULLWCH (tmp)) break; /* Found '\0' */ else { point += tmp; max -= tmp; tmp = WCWIDTH(wc); width += (tmp >= 0) ? tmp : 1; } } width += point - end; return width; } #endif /* HANDLE_MULTIBYTE */ readline-8.0/terminal.c000664 000436 000000 00000047513 13365617633 015230 0ustar00chetwheel000000 000000 /* terminal.c -- controlling the terminal with termcap. */ /* Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #include "posixstat.h" #include #if defined (HAVE_SYS_FILE_H) # include #endif /* HAVE_SYS_FILE_H */ #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_LOCALE_H) # include #endif #include /* System-specific feature definitions and include files. */ #include "rldefs.h" #ifdef __MSDOS__ # include #endif #include "rltty.h" #if defined (HAVE_SYS_IOCTL_H) # include /* include for declaration of ioctl */ #endif #include "tcap.h" /* Some standard library routines. */ #include "readline.h" #include "history.h" #include "rlprivate.h" #include "rlshell.h" #include "xmalloc.h" #if defined (__MINGW32__) # include # include static void _win_get_screensize PARAMS((int *, int *)); #endif #if defined (__EMX__) static void _emx_get_screensize PARAMS((int *, int *)); #endif /* If the calling application sets this to a non-zero value, readline will use the $LINES and $COLUMNS environment variables to set its idea of the window size before interrogating the kernel. */ int rl_prefer_env_winsize = 0; /* If this is non-zero, readline will set LINES and COLUMNS in the environment when it handles SIGWINCH. */ int rl_change_environment = 1; /* **************************************************************** */ /* */ /* Terminal and Termcap */ /* */ /* **************************************************************** */ #ifndef __MSDOS__ static char *term_buffer = (char *)NULL; static char *term_string_buffer = (char *)NULL; #endif static int tcap_initialized; #if !defined (__linux__) && !defined (NCURSES_VERSION) # if defined (__EMX__) || defined (NEED_EXTERN_PC) extern # endif /* __EMX__ || NEED_EXTERN_PC */ char PC, *BC, *UP; #endif /* !__linux__ && !NCURSES_VERSION */ /* Some strings to control terminal actions. These are output by tputs (). */ char *_rl_term_clreol; char *_rl_term_clrpag; char *_rl_term_clrscroll; char *_rl_term_cr; char *_rl_term_backspace; char *_rl_term_goto; char *_rl_term_pc; /* Non-zero if we determine that the terminal can do character insertion. */ int _rl_terminal_can_insert = 0; /* How to insert characters. */ char *_rl_term_im; char *_rl_term_ei; char *_rl_term_ic; char *_rl_term_ip; char *_rl_term_IC; /* How to delete characters. */ char *_rl_term_dc; char *_rl_term_DC; /* How to move forward a char, non-destructively */ char *_rl_term_forward_char; /* How to go up a line. */ char *_rl_term_up; /* A visible bell; char if the terminal can be made to flash the screen. */ static char *_rl_visible_bell; /* Non-zero means the terminal can auto-wrap lines. */ int _rl_term_autowrap = -1; /* Non-zero means that this terminal has a meta key. */ static int term_has_meta; /* The sequences to write to turn on and off the meta key, if this terminal has one. */ static char *_rl_term_mm; static char *_rl_term_mo; /* The key sequences output by the arrow keys, if this terminal has any. */ static char *_rl_term_ku; static char *_rl_term_kd; static char *_rl_term_kr; static char *_rl_term_kl; /* How to initialize and reset the arrow keys, if this terminal has any. */ static char *_rl_term_ks; static char *_rl_term_ke; /* The key sequences sent by the Home and End keys, if any. */ static char *_rl_term_kh; static char *_rl_term_kH; static char *_rl_term_at7; /* @7 */ /* Delete key */ static char *_rl_term_kD; /* Insert key */ static char *_rl_term_kI; /* Cursor control */ static char *_rl_term_vs; /* very visible */ static char *_rl_term_ve; /* normal */ static void bind_termcap_arrow_keys PARAMS((Keymap)); /* Variables that hold the screen dimensions, used by the display code. */ int _rl_screenwidth, _rl_screenheight, _rl_screenchars; /* Non-zero means the user wants to enable the keypad. */ int _rl_enable_keypad; /* Non-zero means the user wants to enable a meta key. */ int _rl_enable_meta = 1; #if defined (__EMX__) static void _emx_get_screensize (int *swp, int *shp) { int sz[2]; _scrsize (sz); if (swp) *swp = sz[0]; if (shp) *shp = sz[1]; } #endif #if defined (__MINGW32__) static void _win_get_screensize (int *swp, int *shp) { HANDLE hConOut; CONSOLE_SCREEN_BUFFER_INFO scr; hConOut = GetStdHandle (STD_OUTPUT_HANDLE); if (hConOut != INVALID_HANDLE_VALUE) { if (GetConsoleScreenBufferInfo (hConOut, &scr)) { *swp = scr.dwSize.X; *shp = scr.srWindow.Bottom - scr.srWindow.Top + 1; } } } #endif /* Get readline's idea of the screen size. TTY is a file descriptor open to the terminal. If IGNORE_ENV is true, we do not pay attention to the values of $LINES and $COLUMNS. The tests for TERM_STRING_BUFFER being non-null serve to check whether or not we have initialized termcap. */ void _rl_get_screen_size (int tty, int ignore_env) { char *ss; #if defined (TIOCGWINSZ) struct winsize window_size; #endif /* TIOCGWINSZ */ int wr, wc; wr = wc = -1; #if defined (TIOCGWINSZ) if (ioctl (tty, TIOCGWINSZ, &window_size) == 0) { wc = (int) window_size.ws_col; wr = (int) window_size.ws_row; } #endif /* TIOCGWINSZ */ #if defined (__EMX__) _emx_get_screensize (&wc, &wr); #elif defined (__MINGW32__) _win_get_screensize (&wc, &wr); #endif if (ignore_env || rl_prefer_env_winsize == 0) { _rl_screenwidth = wc; _rl_screenheight = wr; } else _rl_screenwidth = _rl_screenheight = -1; /* Environment variable COLUMNS overrides setting of "co" if IGNORE_ENV is unset. If we prefer the environment, check it first before assigning the value returned by the kernel. */ if (_rl_screenwidth <= 0) { if (ignore_env == 0 && (ss = sh_get_env_value ("COLUMNS"))) _rl_screenwidth = atoi (ss); if (_rl_screenwidth <= 0) _rl_screenwidth = wc; #if defined (__DJGPP__) if (_rl_screenwidth <= 0) _rl_screenwidth = ScreenCols (); #else if (_rl_screenwidth <= 0 && term_string_buffer) _rl_screenwidth = tgetnum ("co"); #endif } /* Environment variable LINES overrides setting of "li" if IGNORE_ENV is unset. */ if (_rl_screenheight <= 0) { if (ignore_env == 0 && (ss = sh_get_env_value ("LINES"))) _rl_screenheight = atoi (ss); if (_rl_screenheight <= 0) _rl_screenheight = wr; #if defined (__DJGPP__) if (_rl_screenheight <= 0) _rl_screenheight = ScreenRows (); #else if (_rl_screenheight <= 0 && term_string_buffer) _rl_screenheight = tgetnum ("li"); #endif } /* If all else fails, default to 80x24 terminal. */ if (_rl_screenwidth <= 1) _rl_screenwidth = 80; if (_rl_screenheight <= 0) _rl_screenheight = 24; /* If we're being compiled as part of bash, set the environment variables $LINES and $COLUMNS to new values. Otherwise, just do a pair of putenv () or setenv () calls. */ if (rl_change_environment) sh_set_lines_and_columns (_rl_screenheight, _rl_screenwidth); if (_rl_term_autowrap == 0) _rl_screenwidth--; _rl_screenchars = _rl_screenwidth * _rl_screenheight; } void _rl_set_screen_size (int rows, int cols) { if (_rl_term_autowrap == -1) _rl_init_terminal_io (rl_terminal_name); if (rows > 0) _rl_screenheight = rows; if (cols > 0) { _rl_screenwidth = cols; if (_rl_term_autowrap == 0) _rl_screenwidth--; } if (rows > 0 || cols > 0) _rl_screenchars = _rl_screenwidth * _rl_screenheight; } void rl_set_screen_size (int rows, int cols) { _rl_set_screen_size (rows, cols); } void rl_get_screen_size (int *rows, int *cols) { if (rows) *rows = _rl_screenheight; if (cols) *cols = _rl_screenwidth; } void rl_reset_screen_size (void) { _rl_get_screen_size (fileno (rl_instream), 0); } void _rl_sigwinch_resize_terminal (void) { _rl_get_screen_size (fileno (rl_instream), 1); } void rl_resize_terminal (void) { _rl_get_screen_size (fileno (rl_instream), 1); if (_rl_echoing_p) { if (CUSTOM_REDISPLAY_FUNC ()) rl_forced_update_display (); else if (RL_ISSTATE(RL_STATE_REDISPLAYING) == 0) _rl_redisplay_after_sigwinch (); } } struct _tc_string { const char * const tc_var; char **tc_value; }; /* This should be kept sorted, just in case we decide to change the search algorithm to something smarter. */ static const struct _tc_string tc_strings[] = { { "@7", &_rl_term_at7 }, { "DC", &_rl_term_DC }, { "E3", &_rl_term_clrscroll }, { "IC", &_rl_term_IC }, { "ce", &_rl_term_clreol }, { "cl", &_rl_term_clrpag }, { "cr", &_rl_term_cr }, { "dc", &_rl_term_dc }, { "ei", &_rl_term_ei }, { "ic", &_rl_term_ic }, { "im", &_rl_term_im }, { "kD", &_rl_term_kD }, /* delete */ { "kH", &_rl_term_kH }, /* home down ?? */ { "kI", &_rl_term_kI }, /* insert */ { "kd", &_rl_term_kd }, { "ke", &_rl_term_ke }, /* end keypad mode */ { "kh", &_rl_term_kh }, /* home */ { "kl", &_rl_term_kl }, { "kr", &_rl_term_kr }, { "ks", &_rl_term_ks }, /* start keypad mode */ { "ku", &_rl_term_ku }, { "le", &_rl_term_backspace }, { "mm", &_rl_term_mm }, { "mo", &_rl_term_mo }, { "nd", &_rl_term_forward_char }, { "pc", &_rl_term_pc }, { "up", &_rl_term_up }, { "vb", &_rl_visible_bell }, { "vs", &_rl_term_vs }, { "ve", &_rl_term_ve }, }; #define NUM_TC_STRINGS (sizeof (tc_strings) / sizeof (struct _tc_string)) /* Read the desired terminal capability strings into BP. The capabilities are described in the TC_STRINGS table. */ static void get_term_capabilities (char **bp) { #if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */ register int i; for (i = 0; i < NUM_TC_STRINGS; i++) *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp); #endif tcap_initialized = 1; } int _rl_init_terminal_io (const char *terminal_name) { const char *term; char *buffer; int tty, tgetent_ret; term = terminal_name ? terminal_name : sh_get_env_value ("TERM"); _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = _rl_term_clrscroll = (char *)NULL; tty = rl_instream ? fileno (rl_instream) : 0; if (term == 0) term = "dumb"; #ifdef __MSDOS__ _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL; _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL; _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; _rl_term_mm = _rl_term_mo = (char *)NULL; _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0; _rl_term_cr = "\r"; _rl_term_backspace = (char *)NULL; _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL; _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL; _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL; #if defined(HACK_TERMCAP_MOTION) _rl_term_forward_char = (char *)NULL; #endif _rl_get_screen_size (tty, 0); #else /* !__MSDOS__ */ /* I've separated this out for later work on not calling tgetent at all if the calling application has supplied a custom redisplay function, (and possibly if the application has supplied a custom input function). */ if (CUSTOM_REDISPLAY_FUNC()) { tgetent_ret = -1; } else { if (term_string_buffer == 0) term_string_buffer = (char *)xmalloc(2032); if (term_buffer == 0) term_buffer = (char *)xmalloc(4080); buffer = term_string_buffer; tgetent_ret = tgetent (term_buffer, term); } if (tgetent_ret <= 0) { FREE (term_string_buffer); FREE (term_buffer); buffer = term_buffer = term_string_buffer = (char *)NULL; _rl_term_autowrap = 0; /* used by _rl_get_screen_size */ /* Allow calling application to set default height and width, using rl_set_screen_size */ if (_rl_screenwidth <= 0 || _rl_screenheight <= 0) { #if defined (__EMX__) _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight); _rl_screenwidth--; #else /* !__EMX__ */ _rl_get_screen_size (tty, 0); #endif /* !__EMX__ */ } /* Defaults. */ if (_rl_screenwidth <= 0 || _rl_screenheight <= 0) { _rl_screenwidth = 79; _rl_screenheight = 24; } /* Everything below here is used by the redisplay code (tputs). */ _rl_screenchars = _rl_screenwidth * _rl_screenheight; _rl_term_cr = "\r"; _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL; _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL; _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; _rl_term_kh = _rl_term_kH = _rl_term_kI = _rl_term_kD = (char *)NULL; _rl_term_ks = _rl_term_ke = _rl_term_at7 = (char *)NULL; _rl_term_mm = _rl_term_mo = (char *)NULL; _rl_term_ve = _rl_term_vs = (char *)NULL; _rl_term_forward_char = (char *)NULL; _rl_terminal_can_insert = term_has_meta = 0; /* Reasonable defaults for tgoto(). Readline currently only uses tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we change that later... */ PC = '\0'; BC = _rl_term_backspace = "\b"; UP = _rl_term_up; return 0; } get_term_capabilities (&buffer); /* Set up the variables that the termcap library expects the application to provide. */ PC = _rl_term_pc ? *_rl_term_pc : 0; BC = _rl_term_backspace; UP = _rl_term_up; if (!_rl_term_cr) _rl_term_cr = "\r"; _rl_term_autowrap = tgetflag ("am") && tgetflag ("xn"); /* Allow calling application to set default height and width, using rl_set_screen_size */ if (_rl_screenwidth <= 0 || _rl_screenheight <= 0) _rl_get_screen_size (tty, 0); /* "An application program can assume that the terminal can do character insertion if *any one of* the capabilities `IC', `im', `ic' or `ip' is provided." But we can't do anything if only `ip' is provided, so... */ _rl_terminal_can_insert = (_rl_term_IC || _rl_term_im || _rl_term_ic); /* Check to see if this terminal has a meta key and clear the capability variables if there is none. */ term_has_meta = tgetflag ("km") != 0; if (term_has_meta == 0) _rl_term_mm = _rl_term_mo = (char *)NULL; #endif /* !__MSDOS__ */ /* Attempt to find and bind the arrow keys. Do not override already bound keys in an overzealous attempt, however. */ bind_termcap_arrow_keys (emacs_standard_keymap); #if defined (VI_MODE) bind_termcap_arrow_keys (vi_movement_keymap); bind_termcap_arrow_keys (vi_insertion_keymap); #endif /* VI_MODE */ return 0; } /* Bind the arrow key sequences from the termcap description in MAP. */ static void bind_termcap_arrow_keys (Keymap map) { Keymap xkeymap; xkeymap = _rl_keymap; _rl_keymap = map; rl_bind_keyseq_if_unbound (_rl_term_ku, rl_get_previous_history); rl_bind_keyseq_if_unbound (_rl_term_kd, rl_get_next_history); rl_bind_keyseq_if_unbound (_rl_term_kr, rl_forward_char); rl_bind_keyseq_if_unbound (_rl_term_kl, rl_backward_char); rl_bind_keyseq_if_unbound (_rl_term_kh, rl_beg_of_line); /* Home */ rl_bind_keyseq_if_unbound (_rl_term_at7, rl_end_of_line); /* End */ rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete); rl_bind_keyseq_if_unbound (_rl_term_kI, rl_overwrite_mode); /* Insert */ _rl_keymap = xkeymap; } char * rl_get_termcap (const char *cap) { register int i; if (tcap_initialized == 0) return ((char *)NULL); for (i = 0; i < NUM_TC_STRINGS; i++) { if (tc_strings[i].tc_var[0] == cap[0] && strcmp (tc_strings[i].tc_var, cap) == 0) return *(tc_strings[i].tc_value); } return ((char *)NULL); } /* Re-initialize the terminal considering that the TERM/TERMCAP variable has changed. */ int rl_reset_terminal (const char *terminal_name) { _rl_screenwidth = _rl_screenheight = 0; _rl_init_terminal_io (terminal_name); return 0; } /* A function for the use of tputs () */ #ifdef _MINIX void _rl_output_character_function (int c) { putc (c, _rl_out_stream); } #else /* !_MINIX */ int _rl_output_character_function (int c) { return putc (c, _rl_out_stream); } #endif /* !_MINIX */ /* Write COUNT characters from STRING to the output stream. */ void _rl_output_some_chars (const char *string, int count) { fwrite (string, 1, count, _rl_out_stream); } /* Move the cursor back. */ int _rl_backspace (int count) { register int i; #ifndef __MSDOS__ if (_rl_term_backspace) for (i = 0; i < count; i++) tputs (_rl_term_backspace, 1, _rl_output_character_function); else #endif for (i = 0; i < count; i++) putc ('\b', _rl_out_stream); return 0; } /* Move to the start of the next line. */ int rl_crlf (void) { #if defined (NEW_TTY_DRIVER) || defined (__MINT__) if (_rl_term_cr) tputs (_rl_term_cr, 1, _rl_output_character_function); #endif /* NEW_TTY_DRIVER || __MINT__ */ putc ('\n', _rl_out_stream); return 0; } /* Ring the terminal bell. */ int rl_ding (void) { if (_rl_echoing_p) { switch (_rl_bell_preference) { case NO_BELL: default: break; case VISIBLE_BELL: if (_rl_visible_bell) { #ifdef __DJGPP__ ScreenVisualBell (); #else tputs (_rl_visible_bell, 1, _rl_output_character_function); #endif break; } /* FALLTHROUGH */ case AUDIBLE_BELL: fprintf (stderr, "\007"); fflush (stderr); break; } return (0); } return (-1); } /* **************************************************************** */ /* */ /* Controlling the Meta Key and Keypad */ /* */ /* **************************************************************** */ static int enabled_meta = 0; /* flag indicating we enabled meta mode */ void _rl_enable_meta_key (void) { #if !defined (__DJGPP__) if (term_has_meta && _rl_term_mm) { tputs (_rl_term_mm, 1, _rl_output_character_function); enabled_meta = 1; } #endif } void _rl_disable_meta_key (void) { #if !defined (__DJGPP__) if (term_has_meta && _rl_term_mo && enabled_meta) { tputs (_rl_term_mo, 1, _rl_output_character_function); enabled_meta = 0; } #endif } void _rl_control_keypad (int on) { #if !defined (__DJGPP__) if (on && _rl_term_ks) tputs (_rl_term_ks, 1, _rl_output_character_function); else if (!on && _rl_term_ke) tputs (_rl_term_ke, 1, _rl_output_character_function); #endif } /* **************************************************************** */ /* */ /* Controlling the Cursor */ /* */ /* **************************************************************** */ /* Set the cursor appropriately depending on IM, which is one of the insert modes (insert or overwrite). Insert mode gets the normal cursor. Overwrite mode gets a very visible cursor. Only does anything if we have both capabilities. */ void _rl_set_cursor (int im, int force) { #ifndef __MSDOS__ if (_rl_term_ve && _rl_term_vs) { if (force || im != rl_insert_mode) { if (im == RL_IM_OVERWRITE) tputs (_rl_term_vs, 1, _rl_output_character_function); else tputs (_rl_term_ve, 1, _rl_output_character_function); } } #endif } readline-8.0/parens.c000664 000436 000120 00000011344 13052153425 014650 0ustar00chetadmin000000 000000 /* parens.c -- implementation of matching parentheses feature. */ /* Copyright (C) 1987, 1989, 1992-2015, 2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (__TANDEM) # include #endif #include "rlconf.h" #if defined (HAVE_CONFIG_H) # include #endif #include #include #if defined (HAVE_UNISTD_H) # include #endif #include "posixselect.h" #if defined (HAVE_STRING_H) # include #else /* !HAVE_STRING_H */ # include #endif /* !HAVE_STRING_H */ #if !defined (strchr) && !defined (__STDC__) extern char *strchr (), *strrchr (); #endif /* !strchr && !__STDC__ */ #include "readline.h" #include "rlprivate.h" static int find_matching_open PARAMS((char *, int, int)); /* Non-zero means try to blink the matching open parenthesis when the close parenthesis is inserted. */ int rl_blink_matching_paren = 0; static int _paren_blink_usec = 500000; /* Change emacs_standard_keymap to have bindings for paren matching when ON_OR_OFF is 1, change them back to self_insert when ON_OR_OFF == 0. */ void _rl_enable_paren_matching (int on_or_off) { if (on_or_off) { /* ([{ */ rl_bind_key_in_map (')', rl_insert_close, emacs_standard_keymap); rl_bind_key_in_map (']', rl_insert_close, emacs_standard_keymap); rl_bind_key_in_map ('}', rl_insert_close, emacs_standard_keymap); #if defined (VI_MODE) /* ([{ */ rl_bind_key_in_map (')', rl_insert_close, vi_insertion_keymap); rl_bind_key_in_map (']', rl_insert_close, vi_insertion_keymap); rl_bind_key_in_map ('}', rl_insert_close, vi_insertion_keymap); #endif } else { /* ([{ */ rl_bind_key_in_map (')', rl_insert, emacs_standard_keymap); rl_bind_key_in_map (']', rl_insert, emacs_standard_keymap); rl_bind_key_in_map ('}', rl_insert, emacs_standard_keymap); #if defined (VI_MODE) /* ([{ */ rl_bind_key_in_map (')', rl_insert, vi_insertion_keymap); rl_bind_key_in_map (']', rl_insert, vi_insertion_keymap); rl_bind_key_in_map ('}', rl_insert, vi_insertion_keymap); #endif } } int rl_set_paren_blink_timeout (int u) { int o; o = _paren_blink_usec; if (u > 0) _paren_blink_usec = u; return (o); } int rl_insert_close (int count, int invoking_key) { if (rl_explicit_arg || !rl_blink_matching_paren) _rl_insert_char (count, invoking_key); else { #if defined (HAVE_SELECT) int orig_point, match_point, ready; struct timeval timer; fd_set readfds; _rl_insert_char (1, invoking_key); (*rl_redisplay_function) (); match_point = find_matching_open (rl_line_buffer, rl_point - 2, invoking_key); /* Emacs might message or ring the bell here, but I don't. */ if (match_point < 0) return 1; FD_ZERO (&readfds); FD_SET (fileno (rl_instream), &readfds); USEC_TO_TIMEVAL (_paren_blink_usec, timer); orig_point = rl_point; rl_point = match_point; (*rl_redisplay_function) (); ready = select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer); rl_point = orig_point; #else /* !HAVE_SELECT */ _rl_insert_char (count, invoking_key); #endif /* !HAVE_SELECT */ } return 0; } static int find_matching_open (char *string, int from, int closer) { register int i; int opener, level, delimiter; switch (closer) { case ']': opener = '['; break; case '}': opener = '{'; break; case ')': opener = '('; break; default: return (-1); } level = 1; /* The closer passed in counts as 1. */ delimiter = 0; /* Delimited state unknown. */ for (i = from; i > -1; i--) { if (delimiter && (string[i] == delimiter)) delimiter = 0; else if (rl_basic_quote_characters && strchr (rl_basic_quote_characters, string[i])) delimiter = string[i]; else if (!delimiter && (string[i] == closer)) level++; else if (!delimiter && (string[i] == opener)) level--; if (!level) break; } return (i); } readline-8.0/README000664 000436 000000 00000017534 13275335033 014120 0ustar00chetwheel000000 000000 Introduction ============ This is the Gnu Readline library, version 8.0. The Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. Both Emacs and vi editing modes are available. The Readline library includes additional functions to maintain a list of previously-entered command lines, to recall and perhaps reedit those lines, and perform csh-like history expansion on previous commands. The history facilites are also placed into a separate library, the History library, as part of the build process. The History library may be used without Readline in applications which desire its capabilities. The Readline library is free software, distributed under the terms of the [GNU] General Public License as published by the Free Software Foundation, version 3 of the License. For more information, see the file COPYING. To build the library, try typing `./configure', then `make'. The configuration process is automated, so no further intervention should be necessary. Readline builds with `gcc' by default if it is available. If you want to use `cc' instead, type CC=cc ./configure if you are using a Bourne-style shell. If you are not, the following may work: env CC=cc ./configure Read the file INSTALL in this directory for more information about how to customize and control the build process. The file rlconf.h contains C preprocessor defines that enable and disable certain Readline features. The special make target `everything' will build the static and shared libraries (if the target platform supports them) and the examples. Examples ======== There are several example programs that use Readline features in the examples directory. The `rl' program is of particular interest. It is a command-line interface to Readline, suitable for use in shell scripts in place of `read'. Shared Libraries ================ There is skeletal support for building shared versions of the Readline and History libraries. The configure script creates a Makefile in the `shlib' subdirectory, and typing `make shared' will cause shared versions of the Readline and History libraries to be built on supported platforms. If `configure' is given the `--enable-shared' option, it will attempt to build the shared libraries by default on supported platforms. Configure calls the script support/shobj-conf to test whether or not shared library creation is supported and to generate the values of variables that are substituted into shlib/Makefile. If you try to build shared libraries on an unsupported platform, `make' will display a message asking you to update support/shobj-conf for your platform. If you need to update support/shobj-conf, you will need to create a `stanza' for your operating system and compiler. The script uses the value of host_os and ${CC} as determined by configure. For instance, FreeBSD 4.2 with any version of gcc is identified as `freebsd4.2-gcc*'. In the stanza for your operating system-compiler pair, you will need to define several variables. They are: SHOBJ_CC The C compiler used to compile source files into shareable object files. This is normally set to the value of ${CC} by configure, and should not need to be changed. SHOBJ_CFLAGS Flags to pass to the C compiler ($SHOBJ_CC) to create position-independent code. If you are using gcc, this should probably be set to `-fpic'. SHOBJ_LD The link editor to be used to create the shared library from the object files created by $SHOBJ_CC. If you are using gcc, a value of `gcc' will probably work. SHOBJ_LDFLAGS Flags to pass to SHOBJ_LD to enable shared object creation. If you are using gcc, `-shared' may be all that is necessary. These should be the flags needed for generic shared object creation. SHLIB_XLDFLAGS Additional flags to pass to SHOBJ_LD for shared library creation. Many systems use the -R option to the link editor to embed a path within the library for run-time library searches. A reasonable value for such systems would be `-R$(libdir)'. SHLIB_LIBS Any additional libraries that shared libraries should be linked against when they are created. SHLIB_LIBPREF The prefix to use when generating the filename of the shared library. The default is `lib'; Cygwin uses `cyg'. SHLIB_LIBSUFF The suffix to add to `libreadline' and `libhistory' when generating the filename of the shared library. Many systems use `so'; HP-UX uses `sl'. SHLIB_LIBVERSION The string to append to the filename to indicate the version of the shared library. It should begin with $(SHLIB_LIBSUFF), and possibly include version information that allows the run-time loader to load the version of the shared library appropriate for a particular program. Systems using shared libraries similar to SunOS 4.x use major and minor library version numbers; for those systems a value of `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' is appropriate. Systems based on System V Release 4 don't use minor version numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems. Other Unix versions use different schemes. SHLIB_DLLVERSION The version number for shared libraries that determines API compatibility between readline versions and the underlying system. Used only on Cygwin. Defaults to $SHLIB_MAJOR, but can be overridden at configuration time by defining DLLVERSION in the environment. SHLIB_DOT The character used to separate the name of the shared library from the suffix and version information. The default is `.'; systems like Cygwin which don't separate version information from the library name should set this to the empty string. SHLIB_STATUS Set this to `supported' when you have defined the other necessary variables. Make uses this to determine whether or not shared library creation should be attempted. You should look at the existing stanzas in support/shobj-conf for ideas. Once you have updated support/shobj-conf, re-run configure and type `make shared'. The shared libraries will be created in the shlib subdirectory. If shared libraries are created, `make install' will install them. You may install only the shared libraries by running `make install-shared' from the top-level build directory. Running `make install' in the shlib subdirectory will also work. If you don't want to install any created shared libraries, run `make install-static'. Documentation ============= The documentation for the Readline and History libraries appears in the `doc' subdirectory. There are three texinfo files and a Unix-style manual page describing the facilities available in the Readline library. The texinfo files include both user and programmer's manuals. HTML versions of the manuals appear in the `doc' subdirectory as well. Usage ===== Our position on the use of Readline through a shared-library linking mechanism is that there is no legal difference between shared-library linking and static linking--either kind of linking combines various modules into a single larger work. The conditions for using Readline in a larger work are stated in section 3 of the GNU GPL. Reporting Bugs ============== Bug reports for Readline should be sent to: bug-readline@gnu.org When reporting a bug, please include the following information: * the version number and release status of Readline (e.g., 4.2-release) * the machine and OS that it is running on * a list of the compilation flags or the contents of `config.h', if appropriate * a description of the bug * a recipe for recreating the bug reliably * a fix for the bug if you have one! If you would like to contact the Readline maintainer directly, send mail to bash-maintainers@gnu.org. Since Readline is developed along with bash, the bug-bash@gnu.org mailing list (mirrored to the Usenet newsgroup gnu.bash.bug) often contains Readline bug reports and fixes. Chet Ramey chet.ramey@case.edu readline-8.0/rlstdc.h000664 000436 000000 00000003453 11543433705 014700 0ustar00chetwheel000000 000000 /* stdc.h -- macros to make source compile on both ANSI C and K&R C compilers. */ /* Copyright (C) 1993-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_RL_STDC_H_) #define _RL_STDC_H_ /* Adapted from BSD /usr/include/sys/cdefs.h. */ /* A function can be defined using prototypes and compile on both ANSI C and traditional C compilers with something like this: extern char *func PARAMS((char *, char *, int)); */ #if !defined (PARAMS) # if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) # define PARAMS(protos) protos # else # define PARAMS(protos) () # endif #endif #ifndef __attribute__ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) # define __attribute__(x) # endif #endif /* Moved from config.h.in because readline.h:rl_message depends on these defines. */ #if defined (__STDC__) && defined (HAVE_STDARG_H) # define PREFER_STDARG # define USE_VARARGS #else # if defined (HAVE_VARARGS_H) # define PREFER_VARARGS # define USE_VARARGS # endif #endif #endif /* !_RL_STDC_H_ */ readline-8.0/posixselect.h000664 000436 000024 00000002524 11172654144 015752 0ustar00chetstaff000000 000000 /* posixselect.h -- wrapper for select(2) includes and definitions */ /* Copyright (C) 2009 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. Bash is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Bash. If not, see . */ #ifndef _POSIXSELECT_H_ #define _POSIXSELECT_H_ #if defined (FD_SET) && !defined (HAVE_SELECT) # define HAVE_SELECT 1 #endif #if defined (HAVE_SELECT) # if !defined (HAVE_SYS_SELECT_H) || !defined (M_UNIX) # include # endif #endif /* HAVE_SELECT */ #if defined (HAVE_SYS_SELECT_H) # include #endif #ifndef USEC_PER_SEC # define USEC_PER_SEC 1000000 #endif #define USEC_TO_TIMEVAL(us, tv) \ do { \ (tv).tv_sec = (us) / USEC_PER_SEC; \ (tv).tv_usec = (us) % USEC_PER_SEC; \ } while (0) #endif /* _POSIXSELECT_H_ */ readline-8.0/history.c000644 000436 000000 00000036501 13055107175 015076 0ustar00chetwheel000000 000000 /* history.c -- standalone history library */ /* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. History is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. History is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with History. If not, see . */ /* The goal is to make the implementation transparent, so that you don't have to know what data types are used, just what functions you can call. I think I have done that. */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_UNISTD_H) # ifdef _MINIX # include # endif # include #endif #include #include "history.h" #include "histlib.h" #include "xmalloc.h" #if !defined (errno) extern int errno; #endif /* How big to make the_history when we first allocate it. */ #define DEFAULT_HISTORY_INITIAL_SIZE 502 #define MAX_HISTORY_INITIAL_SIZE 8192 /* The number of slots to increase the_history by. */ #define DEFAULT_HISTORY_GROW_SIZE 50 static char *hist_inittime PARAMS((void)); /* **************************************************************** */ /* */ /* History Functions */ /* */ /* **************************************************************** */ /* An array of HIST_ENTRY. This is where we store the history. */ static HIST_ENTRY **the_history = (HIST_ENTRY **)NULL; /* Non-zero means that we have enforced a limit on the amount of history that we save. */ static int history_stifled; /* The current number of slots allocated to the input_history. */ static int history_size; /* If HISTORY_STIFLED is non-zero, then this is the maximum number of entries to remember. */ int history_max_entries; int max_input_history; /* backwards compatibility */ /* The current location of the interactive history pointer. Just makes life easier for outside callers. */ int history_offset; /* The number of strings currently stored in the history list. */ int history_length; /* The logical `base' of the history array. It defaults to 1. */ int history_base = 1; /* Return the current HISTORY_STATE of the history. */ HISTORY_STATE * history_get_history_state (void) { HISTORY_STATE *state; state = (HISTORY_STATE *)xmalloc (sizeof (HISTORY_STATE)); state->entries = the_history; state->offset = history_offset; state->length = history_length; state->size = history_size; state->flags = 0; if (history_stifled) state->flags |= HS_STIFLED; return (state); } /* Set the state of the current history array to STATE. */ void history_set_history_state (HISTORY_STATE *state) { the_history = state->entries; history_offset = state->offset; history_length = state->length; history_size = state->size; if (state->flags & HS_STIFLED) history_stifled = 1; } /* Begin a session in which the history functions might be used. This initializes interactive variables. */ void using_history (void) { history_offset = history_length; } /* Return the number of bytes that the primary history entries are using. This just adds up the lengths of the_history->lines and the associated timestamps. */ int history_total_bytes (void) { register int i, result; for (i = result = 0; the_history && the_history[i]; i++) result += HISTENT_BYTES (the_history[i]); return (result); } /* Returns the magic number which says what history element we are looking at now. In this implementation, it returns history_offset. */ int where_history (void) { return (history_offset); } /* Make the current history item be the one at POS, an absolute index. Returns zero if POS is out of range, else non-zero. */ int history_set_pos (int pos) { if (pos > history_length || pos < 0 || !the_history) return (0); history_offset = pos; return (1); } /* Return the current history array. The caller has to be careful, since this is the actual array of data, and could be bashed or made corrupt easily. The array is terminated with a NULL pointer. */ HIST_ENTRY ** history_list (void) { return (the_history); } /* Return the history entry at the current position, as determined by history_offset. If there is no entry there, return a NULL pointer. */ HIST_ENTRY * current_history (void) { return ((history_offset == history_length) || the_history == 0) ? (HIST_ENTRY *)NULL : the_history[history_offset]; } /* Back up history_offset to the previous history entry, and return a pointer to that entry. If there is no previous entry then return a NULL pointer. */ HIST_ENTRY * previous_history (void) { return history_offset ? the_history[--history_offset] : (HIST_ENTRY *)NULL; } /* Move history_offset forward to the next history entry, and return a pointer to that entry. If there is no next entry then return a NULL pointer. */ HIST_ENTRY * next_history (void) { return (history_offset == history_length) ? (HIST_ENTRY *)NULL : the_history[++history_offset]; } /* Return the history entry which is logically at OFFSET in the history array. OFFSET is relative to history_base. */ HIST_ENTRY * history_get (int offset) { int local_index; local_index = offset - history_base; return (local_index >= history_length || local_index < 0 || the_history == 0) ? (HIST_ENTRY *)NULL : the_history[local_index]; } HIST_ENTRY * alloc_history_entry (char *string, char *ts) { HIST_ENTRY *temp; temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY)); temp->line = string ? savestring (string) : string; temp->data = (char *)NULL; temp->timestamp = ts; return temp; } time_t history_get_time (HIST_ENTRY *hist) { char *ts; time_t t; if (hist == 0 || hist->timestamp == 0) return 0; ts = hist->timestamp; if (ts[0] != history_comment_char) return 0; errno = 0; t = (time_t) strtol (ts + 1, (char **)NULL, 10); /* XXX - should use strtol() here */ if (errno == ERANGE) return (time_t)0; return t; } static char * hist_inittime (void) { time_t t; char ts[64], *ret; t = (time_t) time ((time_t *)0); #if defined (HAVE_VSNPRINTF) /* assume snprintf if vsnprintf exists */ snprintf (ts, sizeof (ts) - 1, "X%lu", (unsigned long) t); #else sprintf (ts, "X%lu", (unsigned long) t); #endif ret = savestring (ts); ret[0] = history_comment_char; return ret; } /* Place STRING at the end of the history list. The data field is set to NULL. */ void add_history (const char *string) { HIST_ENTRY *temp; int new_length; if (history_stifled && (history_length == history_max_entries)) { register int i; /* If the history is stifled, and history_length is zero, and it equals history_max_entries, we don't save items. */ if (history_length == 0) return; /* If there is something in the slot, then remove it. */ if (the_history[0]) (void) free_history_entry (the_history[0]); /* Copy the rest of the entries, moving down one slot. Copy includes trailing NULL. */ memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *)); new_length = history_length; history_base++; } else { if (history_size == 0) { if (history_stifled && history_max_entries > 0) history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE) ? MAX_HISTORY_INITIAL_SIZE : history_max_entries + 2; else history_size = DEFAULT_HISTORY_INITIAL_SIZE; the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *)); new_length = 1; } else { if (history_length == (history_size - 1)) { history_size += DEFAULT_HISTORY_GROW_SIZE; the_history = (HIST_ENTRY **) xrealloc (the_history, history_size * sizeof (HIST_ENTRY *)); } new_length = history_length + 1; } } temp = alloc_history_entry ((char *)string, hist_inittime ()); the_history[new_length] = (HIST_ENTRY *)NULL; the_history[new_length - 1] = temp; history_length = new_length; } /* Change the time stamp of the most recent history entry to STRING. */ void add_history_time (const char *string) { HIST_ENTRY *hs; if (string == 0 || history_length < 1) return; hs = the_history[history_length - 1]; FREE (hs->timestamp); hs->timestamp = savestring (string); } /* Free HIST and return the data so the calling application can free it if necessary and desired. */ histdata_t free_history_entry (HIST_ENTRY *hist) { histdata_t x; if (hist == 0) return ((histdata_t) 0); FREE (hist->line); FREE (hist->timestamp); x = hist->data; xfree (hist); return (x); } HIST_ENTRY * copy_history_entry (HIST_ENTRY *hist) { HIST_ENTRY *ret; char *ts; if (hist == 0) return hist; ret = alloc_history_entry (hist->line, (char *)NULL); ts = hist->timestamp ? savestring (hist->timestamp) : hist->timestamp; ret->timestamp = ts; ret->data = hist->data; return ret; } /* Make the history entry at WHICH have LINE and DATA. This returns the old entry so you can dispose of the data. In the case of an invalid WHICH, a NULL pointer is returned. */ HIST_ENTRY * replace_history_entry (int which, const char *line, histdata_t data) { HIST_ENTRY *temp, *old_value; if (which < 0 || which >= history_length) return ((HIST_ENTRY *)NULL); temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY)); old_value = the_history[which]; temp->line = savestring (line); temp->data = data; temp->timestamp = savestring (old_value->timestamp); the_history[which] = temp; return (old_value); } /* Append LINE to the history line at offset WHICH, adding a newline to the end of the current line first. This can be used to construct multi-line history entries while reading lines from the history file. */ void _hs_append_history_line (int which, const char *line) { HIST_ENTRY *hent; size_t newlen, curlen, minlen; char *newline; hent = the_history[which]; curlen = strlen (hent->line); minlen = curlen + strlen (line) + 2; /* min space needed */ if (curlen > 256) /* XXX - for now */ { newlen = 512; /* now realloc in powers of 2 */ /* we recalcluate every time; the operations are cheap */ while (newlen < minlen) newlen <<= 1; } else newlen = minlen; /* Assume that realloc returns the same pointer and doesn't try a new alloc/copy if the new size is the same as the one last passed. */ newline = realloc (hent->line, newlen); if (newline) { hent->line = newline; hent->line[curlen++] = '\n'; strcpy (hent->line + curlen, line); } } /* Replace the DATA in the specified history entries, replacing OLD with NEW. WHICH says which one(s) to replace: WHICH == -1 means to replace all of the history entries where entry->data == OLD; WHICH == -2 means to replace the `newest' history entry where entry->data == OLD; and WHICH >= 0 means to replace that particular history entry's data, as long as it matches OLD. */ void _hs_replace_history_data (int which, histdata_t *old, histdata_t *new) { HIST_ENTRY *entry; register int i, last; if (which < -2 || which >= history_length || history_length == 0 || the_history == 0) return; if (which >= 0) { entry = the_history[which]; if (entry && entry->data == old) entry->data = new; return; } last = -1; for (i = 0; i < history_length; i++) { entry = the_history[i]; if (entry == 0) continue; if (entry->data == old) { last = i; if (which == -1) entry->data = new; } } if (which == -2 && last >= 0) { entry = the_history[last]; entry->data = new; /* XXX - we don't check entry->old */ } } /* Remove history element WHICH from the history. The removed element is returned to you so you can free the line, data, and containing structure. */ HIST_ENTRY * remove_history (int which) { HIST_ENTRY *return_value; register int i; #if 1 int nentries; HIST_ENTRY **start, **end; #endif if (which < 0 || which >= history_length || history_length == 0 || the_history == 0) return ((HIST_ENTRY *)NULL); return_value = the_history[which]; #if 1 /* Copy the rest of the entries, moving down one slot. Copy includes trailing NULL. */ nentries = history_length - which; start = the_history + which; end = start + 1; memmove (start, end, nentries * sizeof (HIST_ENTRY *)); #else for (i = which; i < history_length; i++) the_history[i] = the_history[i + 1]; #endif history_length--; return (return_value); } HIST_ENTRY ** remove_history_range (int first, int last) { HIST_ENTRY **return_value; register int i; int nentries; HIST_ENTRY **start, **end; if (the_history == 0 || history_length == 0) return ((HIST_ENTRY **)NULL); if (first < 0 || first >= history_length || last < 0 || last >= history_length) return ((HIST_ENTRY **)NULL); if (first > last) return (HIST_ENTRY **)NULL; nentries = last - first + 1; return_value = (HIST_ENTRY **)malloc ((nentries + 1) * sizeof (HIST_ENTRY *)); if (return_value == 0) return return_value; /* Return all the deleted entries in a list */ for (i = first ; i <= last; i++) return_value[i - first] = the_history[i]; return_value[i - first] = (HIST_ENTRY *)NULL; /* Copy the rest of the entries, moving down NENTRIES slots. Copy includes trailing NULL. */ start = the_history + first; end = the_history + last + 1; memmove (start, end, (history_length - last) * sizeof (HIST_ENTRY *)); history_length -= nentries; return (return_value); } /* Stifle the history list, remembering only MAX number of lines. */ void stifle_history (int max) { register int i, j; if (max < 0) max = 0; if (history_length > max) { /* This loses because we cannot free the data. */ for (i = 0, j = history_length - max; i < j; i++) free_history_entry (the_history[i]); history_base = i; for (j = 0, i = history_length - max; j < max; i++, j++) the_history[j] = the_history[i]; the_history[j] = (HIST_ENTRY *)NULL; history_length = j; } history_stifled = 1; max_input_history = history_max_entries = max; } /* Stop stifling the history. This returns the previous maximum number of history entries. The value is positive if the history was stifled, negative if it wasn't. */ int unstifle_history (void) { if (history_stifled) { history_stifled = 0; return (history_max_entries); } else return (-history_max_entries); } int history_is_stifled (void) { return (history_stifled); } void clear_history (void) { register int i; /* This loses because we cannot free the data. */ for (i = 0; i < history_length; i++) { free_history_entry (the_history[i]); the_history[i] = (HIST_ENTRY *)NULL; } history_offset = history_length = 0; history_base = 1; /* reset history base to default */ } readline-8.0/rltypedefs.h000664 000436 000024 00000006171 12321534445 015571 0ustar00chetstaff000000 000000 /* rltypedefs.h -- Type declarations for readline functions. */ /* Copyright (C) 2000-2011 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #ifndef _RL_TYPEDEFS_H_ #define _RL_TYPEDEFS_H_ #ifdef __cplusplus extern "C" { #endif /* Old-style, attempt to mark as deprecated in some way people will notice. */ #if !defined (_FUNCTION_DEF) # define _FUNCTION_DEF #if defined(__GNUC__) || defined(__clang__) typedef int Function () __attribute__ ((deprecated)); typedef void VFunction () __attribute__ ((deprecated)); typedef char *CPFunction () __attribute__ ((deprecated)); typedef char **CPPFunction () __attribute__ ((deprecated)); #else typedef int Function (); typedef void VFunction (); typedef char *CPFunction (); typedef char **CPPFunction (); #endif #endif /* _FUNCTION_DEF */ /* New style. */ #if !defined (_RL_FUNCTION_TYPEDEF) # define _RL_FUNCTION_TYPEDEF /* Bindable functions */ typedef int rl_command_func_t PARAMS((int, int)); /* Typedefs for the completion system */ typedef char *rl_compentry_func_t PARAMS((const char *, int)); typedef char **rl_completion_func_t PARAMS((const char *, int, int)); typedef char *rl_quote_func_t PARAMS((char *, int, char *)); typedef char *rl_dequote_func_t PARAMS((char *, int)); typedef int rl_compignore_func_t PARAMS((char **)); typedef void rl_compdisp_func_t PARAMS((char **, int, int)); /* Type for input and pre-read hook functions like rl_event_hook */ typedef int rl_hook_func_t PARAMS((void)); /* Input function type */ typedef int rl_getc_func_t PARAMS((FILE *)); /* Generic function that takes a character buffer (which could be the readline line buffer) and an index into it (which could be rl_point) and returns an int. */ typedef int rl_linebuf_func_t PARAMS((char *, int)); /* `Generic' function pointer typedefs */ typedef int rl_intfunc_t PARAMS((int)); #define rl_ivoidfunc_t rl_hook_func_t typedef int rl_icpfunc_t PARAMS((char *)); typedef int rl_icppfunc_t PARAMS((char **)); typedef void rl_voidfunc_t PARAMS((void)); typedef void rl_vintfunc_t PARAMS((int)); typedef void rl_vcpfunc_t PARAMS((char *)); typedef void rl_vcppfunc_t PARAMS((char **)); typedef char *rl_cpvfunc_t PARAMS((void)); typedef char *rl_cpifunc_t PARAMS((int)); typedef char *rl_cpcpfunc_t PARAMS((char *)); typedef char *rl_cpcppfunc_t PARAMS((char **)); #endif /* _RL_FUNCTION_TYPEDEF */ #ifdef __cplusplus } #endif #endif /* _RL_TYPEDEFS_H_ */ readline-8.0/USAGE000644 000436 000000 00000003751 06746073640 014031 0ustar00chetwheel000000 000000 From rms@gnu.org Thu Jul 22 20:37:55 1999 Flags: 10 Return-Path: rms@gnu.org Received: from arthur.INS.CWRU.Edu (root@arthur.INS.CWRU.Edu [129.22.8.215]) by odin.INS.CWRU.Edu with ESMTP (8.8.6+cwru/CWRU-2.4-ins) id UAA25349; Thu, 22 Jul 1999 20:37:54 -0400 (EDT) (from rms@gnu.org for ) Received: from nike.ins.cwru.edu (root@nike.INS.CWRU.Edu [129.22.8.219]) by arthur.INS.CWRU.Edu with ESMTP (8.8.8+cwru/CWRU-3.6) id UAA05311; Thu, 22 Jul 1999 20:37:51 -0400 (EDT) (from rms@gnu.org for ) Received: from pele.santafe.edu (pele.santafe.edu [192.12.12.119]) by nike.ins.cwru.edu with ESMTP (8.8.7/CWRU-2.5-bsdi) id UAA13350; Thu, 22 Jul 1999 20:37:50 -0400 (EDT) (from rms@gnu.org for ) Received: from wijiji.santafe.edu (wijiji [192.12.12.5]) by pele.santafe.edu (8.9.1/8.9.1) with ESMTP id SAA10831 for ; Thu, 22 Jul 1999 18:37:47 -0600 (MDT) Received: (from rms@localhost) by wijiji.santafe.edu (8.9.1b+Sun/8.9.1) id SAA01089; Thu, 22 Jul 1999 18:37:46 -0600 (MDT) Date: Thu, 22 Jul 1999 18:37:46 -0600 (MDT) Message-Id: <199907230037.SAA01089@wijiji.santafe.edu> X-Authentication-Warning: wijiji.santafe.edu: rms set sender to rms@gnu.org using -f From: Richard Stallman To: chet@nike.ins.cwru.edu Subject: Use of Readline Reply-to: rms@gnu.org I think Allbery's suggestion is a good one. So please add this text in a suitable place. Please don't put it in the GPL itself; that should be the same as the GPL everywhere else. Putting it in the README and/or the documentation would be a good idea. ====================================================================== Our position on the use of Readline through a shared-library linking mechanism is that there is no legal difference between shared-library linking and static linking--either kind of linking combines various modules into a single larger work. The conditions for using Readline in a larger work are stated in section 3 of the GNU GPL. readline-8.0/Makefile.in000664 000436 000000 00000045420 13301612167 015274 0ustar00chetwheel000000 000000 ## -*- text -*- ## # Master Makefile for the GNU readline library. # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . RL_LIBRARY_VERSION = @LIBVERSION@ RL_LIBRARY_NAME = readline PACKAGE = @PACKAGE_NAME@ VERSION = @PACKAGE_VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_VERSION = @PACKAGE_VERSION@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ srcdir = @srcdir@ VPATH = @srcdir@ top_srcdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ CC = @CC@ RANLIB = @RANLIB@ AR = @AR@ ARFLAGS = @ARFLAGS@ RM = rm -f CP = cp MV = mv @SET_MAKE@ SHELL = @MAKE_SHELL@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ bindir = @bindir@ libdir = @libdir@ mandir = @mandir@ includedir = @includedir@ datadir = @datadir@ localedir = @localedir@ pkgconfigdir = ${libdir}/pkgconfig infodir = @infodir@ docdir = @docdir@ man3dir = $(mandir)/man3 # Support an alternate destination root directory for package building DESTDIR = # Programs to make tags files. ETAGS = etags CTAGS = ctags -tw CFLAGS = @CFLAGS@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"' CPPFLAGS = @CPPFLAGS@ DEFS = @DEFS@ @CROSS_COMPILE@ LOCAL_DEFS = @LOCAL_DEFS@ TERMCAP_LIB = @TERMCAP_LIB@ # For libraries which include headers from other libraries. INCLUDES = -I. -I$(srcdir) XCCFLAGS = $(ASAN_CFLAGS) $(DEFS) $(LOCAL_DEFS) $(INCLUDES) $(CPPFLAGS) CCFLAGS = $(XCCFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) # could add -Werror here GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \ -Wwrite-strings -Wstrict-prototypes \ -Wmissing-prototypes -Wno-implicit -pedantic GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@ ASAN_XCFLAGS = -fsanitize=address -fno-omit-frame-pointer ASAN_XLDFLAGS = -fsanitize=address install_examples = @EXAMPLES_INSTALL_TARGET@ .c.o: ${RM} $@ $(CC) -c $(CCFLAGS) $< # The name of the main library target. LIBRARY_NAME = libreadline.a STATIC_LIBS = libreadline.a libhistory.a # The C code source files for this library. CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \ $(srcdir)/vi_mode.c $(srcdir)/parens.c $(srcdir)/rltty.c \ $(srcdir)/complete.c $(srcdir)/bind.c $(srcdir)/isearch.c \ $(srcdir)/display.c $(srcdir)/signals.c $(srcdir)/emacs_keymap.c \ $(srcdir)/vi_keymap.c $(srcdir)/util.c $(srcdir)/kill.c \ $(srcdir)/undo.c $(srcdir)/macro.c $(srcdir)/input.c \ $(srcdir)/callback.c $(srcdir)/terminal.c $(srcdir)/xmalloc.c $(srcdir)/xfree.c \ $(srcdir)/history.c $(srcdir)/histsearch.c $(srcdir)/histexpand.c \ $(srcdir)/histfile.c $(srcdir)/nls.c $(srcdir)/search.c \ $(srcdir)/shell.c $(srcdir)/savestring.c $(srcdir)/tilde.c \ $(srcdir)/text.c $(srcdir)/misc.c $(srcdir)/compat.c \ $(srcdir)/mbutil.c # The header files for this library. HSOURCES = $(srcdir)/readline.h $(srcdir)/rldefs.h $(srcdir)/chardefs.h \ $(srcdir)/keymaps.h $(srcdir)/history.h $(srcdir)/histlib.h \ $(srcdir)/posixstat.h $(srcdir)/posixdir.h $(srcdir)/posixjmp.h \ $(srcdir)/tilde.h $(srcdir)/rlconf.h $(srcdir)/rltty.h \ $(srcdir)/ansi_stdlib.h $(srcdir)/tcap.h $(srcdir)/rlstdc.h \ $(srcdir)/xmalloc.h $(srcdir)/rlprivate.h $(srcdir)/rlshell.h \ $(srcdir)/rltypedefs.h $(srcdir)/rlmbutil.h \ $(srcdir)/colors.h $(srcdir)/parse-colors.h HISTOBJ = history.o histexpand.o histfile.o histsearch.o shell.o mbutil.o TILDEOBJ = tilde.o COLORSOBJ = colors.o parse-colors.o OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \ rltty.o complete.o bind.o isearch.o display.o signals.o \ util.o kill.o undo.o macro.o input.o callback.o terminal.o \ text.o nls.o misc.o $(HISTOBJ) $(TILDEOBJ) $(COLORSOBJ) \ xmalloc.o xfree.o compat.o # The texinfo files which document this library. DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo DOCOBJECT = doc/readline.dvi DOCSUPPORT = doc/Makefile DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT) CREATED_MAKEFILES = Makefile doc/Makefile examples/Makefile shlib/Makefile CREATED_CONFIGURE = config.status config.h config.cache config.log \ stamp-config stamp-h readline.pc CREATED_TAGS = TAGS tags INSTALLED_HEADERS = readline.h chardefs.h keymaps.h history.h tilde.h \ rlstdc.h rlconf.h rltypedefs.h OTHER_DOCS = $(srcdir)/CHANGES $(srcdir)/INSTALL $(srcdir)/README OTHER_INSTALLED_DOCS = CHANGES INSTALL README ########################################################################## TARGETS = @STATIC_TARGET@ @SHARED_TARGET@ INSTALL_TARGETS = @STATIC_INSTALL_TARGET@ @SHARED_INSTALL_TARGET@ all: $(TARGETS) everything: all examples asan: ${MAKE} ${MFLAGS} ASAN_CFLAGS='${ASAN_XCFLAGS}' ASAN_LDFLAGS='${ASAN_XLDFLAGS}' everything static: $(STATIC_LIBS) libreadline.a: $(OBJECTS) $(RM) $@ $(AR) $(ARFLAGS) $@ $(OBJECTS) -test -n "$(RANLIB)" && $(RANLIB) $@ libhistory.a: $(HISTOBJ) xmalloc.o xfree.o $(RM) $@ $(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o xfree.o -test -n "$(RANLIB)" && $(RANLIB) $@ # Since tilde.c is shared between readline and bash, make sure we compile # it with the right flags when it's built as part of readline tilde.o: tilde.c rm -f $@ $(CC) $(CCFLAGS) -DREADLINE_LIBRARY -c $(srcdir)/tilde.c readline: $(OBJECTS) readline.h rldefs.h chardefs.h ./libreadline.a $(CC) $(CCFLAGS) -DREADLINE_LIBRARY -o $@ $(top_srcdir)/examples/rl.c ./libreadline.a ${TERMCAP_LIB} lint: force $(MAKE) $(MFLAGS) CCFLAGS='$(GCC_LINT_CFLAGS)' static Makefile makefile: config.status $(srcdir)/Makefile.in CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status Makefiles makefiles: config.status $(srcdir)/Makefile.in @for mf in $(CREATED_MAKEFILES); do \ CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status ; \ done config.status: configure $(SHELL) ./config.status --recheck config.h: stamp-h stamp-h: config.status $(srcdir)/config.h.in CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status echo > $@ #$(srcdir)/configure: $(srcdir)/configure.ac ## Comment-me-out in distribution # cd $(srcdir) && autoconf ## Comment-me-out in distribution shared: force -test -d shlib || mkdir shlib ( cd shlib ; ${MAKE} ${MFLAGS} all ) documentation: force -test -d doc || mkdir doc -( cd doc && $(MAKE) $(MFLAGS) ) examples: force -test -d examples || mkdir examples -(cd examples && ${MAKE} ${MFLAGS} all ) force: install: $(INSTALL_TARGETS) install-headers: installdirs ${INSTALLED_HEADERS} for f in ${INSTALLED_HEADERS}; do \ $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(includedir)/readline ; \ done uninstall-headers: -test -n "$(includedir)" && cd $(DESTDIR)$(includedir)/readline && \ ${RM} ${INSTALLED_HEADERS} maybe-uninstall-headers: uninstall-headers install-pc: installdirs -$(INSTALL_DATA) $(BUILD_DIR)/readline.pc $(DESTDIR)$(pkgconfigdir)/readline.pc uninstall-pc: -test -n "$(pkgconfigdir)" && cd $(DESTDIR)$(pkgconfigdir) && \ ${RM} readline.pc maybe-uninstall-pc: uninstall-pc install-static: installdirs $(STATIC_LIBS) install-headers install-doc ${install_examples} install-pc -$(MV) $(DESTDIR)$(libdir)/libreadline.a $(DESTDIR)$(libdir)/libreadline.old $(INSTALL_DATA) libreadline.a $(DESTDIR)$(libdir)/libreadline.a -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libreadline.a -$(MV) $(DESTDIR)$(libdir)/libhistory.a $(DESTDIR)$(libdir)/libhistory.old $(INSTALL_DATA) libhistory.a $(DESTDIR)$(libdir)/libhistory.a -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libhistory.a installdirs: $(srcdir)/support/mkinstalldirs -$(SHELL) $(srcdir)/support/mkinstalldirs $(DESTDIR)$(includedir) \ $(DESTDIR)$(includedir)/readline $(DESTDIR)$(libdir) \ $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir) $(DESTDIR)$(docdir) \ $(DESTDIR)$(pkgconfigdir) uninstall: uninstall-headers uninstall-doc uninstall-examples uninstall-pc -test -n "$(DESTDIR)$(libdir)" && cd $(DESTDIR)$(libdir) && \ ${RM} libreadline.a libreadline.old libhistory.a libhistory.old $(SHARED_LIBS) -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall ) install-shared: installdirs install-headers shared install-doc install-pc ( cd shlib ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install ) uninstall-shared: maybe-uninstall-headers maybe-uninstall-pc -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall ) install-examples: installdirs install-headers -( cd examples ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install ) uninstall-examples: maybe-uninstall-headers -( cd examples; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall ) install-doc: installdirs $(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) -( if test -d doc ; then \ cd doc && \ ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} install; \ fi ) uninstall-doc: -( cd $(DESTDIR)$(docdir) && ${RM} ${OTHER_INSTALLED_DOCS} ) -( if test -d doc ; then \ cd doc && \ ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} uninstall; \ fi ) TAGS: force -( cd $(srcdir) && $(ETAGS) $(CSOURCES) $(HSOURCES) ) tags: force -( cd $(srcdir) && $(CTAGS) $(CSOURCES) $(HSOURCES) ) clean: force $(RM) $(OBJECTS) $(STATIC_LIBS) $(RM) readline readline.exe ( cd shlib && $(MAKE) $(MFLAGS) $@ ) -( cd doc && $(MAKE) $(MFLAGS) $@ ) -( cd examples && $(MAKE) $(MFLAGS) $@ ) mostlyclean: clean ( cd shlib && $(MAKE) $(MFLAGS) $@ ) -( cd doc && $(MAKE) $(MFLAGS) $@ ) -( cd examples && $(MAKE) $(MFLAGS) $@ ) distclean maintainer-clean: clean ( cd shlib && $(MAKE) $(MFLAGS) $@ ) -( cd doc && $(MAKE) $(MFLAGS) $@ ) -( cd examples && $(MAKE) $(MFLAGS) $@ ) $(RM) Makefile $(RM) $(CREATED_CONFIGURE) $(RM) $(CREATED_TAGS) readline.pc: config.status $(srcdir)/readline.pc.in $(SHELL) config.status info dvi html pdf ps: -( cd doc && $(MAKE) $(MFLAGS) $@ ) install-info: install-dvi: install-html: install-pdf: install-ps: check: installcheck: dist: force @echo Readline distributions are created using $(srcdir)/support/mkdist. @echo Here is a sample of the necessary commands: @echo bash $(srcdir)/support/mkdist -m $(srcdir)/MANIFEST -s $(srcdir) -r $(RL_LIBRARY_NAME) $(RL_LIBRARY_VERSION) @echo tar cf $(RL_LIBRARY_NAME)-${RL_LIBRARY_VERSION}.tar ${RL_LIBRARY_NAME}-$(RL_LIBRARY_VERSION) @echo gzip $(RL_LIBRARY_NAME)-$(RL_LIBRARY_VERSION).tar # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Dependencies bind.o: ansi_stdlib.h posixstat.h bind.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h bind.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h bind.o: history.h callback.o: rlconf.h callback.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h callback.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h compat.o: ${BUILD_DIR}/config.h compat.o: rlstdc.h rltypedefs.h complete.o: ansi_stdlib.h posixdir.h posixstat.h complete.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h complete.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h display.o: ansi_stdlib.h posixstat.h display.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h display.o: tcap.h display.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h display.o: history.h rlstdc.h funmap.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h funmap.o: rlconf.h ansi_stdlib.h rlstdc.h funmap.o: ${BUILD_DIR}/config.h histexpand.o: ansi_stdlib.h histexpand.o: history.h histlib.h rlstdc.h rltypedefs.h histexpand.o: ${BUILD_DIR}/config.h histfile.o: ansi_stdlib.h histfile.o: history.h histlib.h rlstdc.h rltypedefs.h histfile.o: ${BUILD_DIR}/config.h history.o: ansi_stdlib.h history.o: history.h histlib.h rlstdc.h rltypedefs.h history.o: ${BUILD_DIR}/config.h histsearch.o: ansi_stdlib.h histsearch.o: history.h histlib.h rlstdc.h rltypedefs.h histsearch.o: ${BUILD_DIR}/config.h input.o: ansi_stdlib.h input.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h input.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h isearch.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h isearch.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h isearch.o: ansi_stdlib.h history.h rlstdc.h keymaps.o: emacs_keymap.c vi_keymap.c keymaps.o: keymaps.h rltypedefs.h chardefs.h rlconf.h ansi_stdlib.h keymaps.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h keymaps.o: ${BUILD_DIR}/config.h rlstdc.h kill.o: ansi_stdlib.h kill.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h kill.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h kill.o: history.h rlstdc.h macro.o: ansi_stdlib.h macro.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h macro.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h macro.o: history.h rlstdc.h mbutil.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h mbutil.o: readline.h keymaps.h rltypedefs.h chardefs.h rlstdc.h misc.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h misc.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h misc.o: history.h rlstdc.h ansi_stdlib.h nls.o: ansi_stdlib.h nls.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h nls.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h nls.o: history.h rlstdc.h parens.o: rlconf.h parens.o: ${BUILD_DIR}/config.h parens.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h readline.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h readline.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h readline.o: history.h rlstdc.h readline.o: posixstat.h ansi_stdlib.h posixjmp.h rltty.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h rltty.o: rltty.h rltty.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h savestring.o: ${BUILD_DIR}/config.h search.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h search.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h search.o: ansi_stdlib.h history.h rlstdc.h shell.o: ${BUILD_DIR}/config.h shell.o: ansi_stdlib.h signals.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h signals.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h signals.o: history.h rlstdc.h terminal.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h terminal.o: tcap.h terminal.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h terminal.o: history.h rlstdc.h text.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h text.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h text.o: history.h rlstdc.h ansi_stdlib.h tilde.o: ansi_stdlib.h tilde.o: ${BUILD_DIR}/config.h tilde.o: tilde.h undo.o: ansi_stdlib.h undo.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h undo.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h undo.o: history.h rlstdc.h util.o: posixjmp.h ansi_stdlib.h util.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h util.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h vi_mode.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h vi_mode.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h vi_mode.o: history.h ansi_stdlib.h rlstdc.h xfree.o: ${BUILD_DIR}/config.h xfree.o: ansi_stdlib.h xmalloc.o: ${BUILD_DIR}/config.h xmalloc.o: ansi_stdlib.h colors.o: ${BUILD_DIR}/config.h colors.h colors.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h colors.o: rlconf.h colors.o: ansi_stdlib.h posixstat.h parse-colors.o: ${BUILD_DIR}/config.h colors.h parse-colors.h parse-colors.o: rldefs.h rlconf.h parse-colors.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h bind.o: rlshell.h histfile.o: rlshell.h nls.o: rlshell.h readline.o: rlshell.h shell.o: rlshell.h terminal.o: rlshell.h histexpand.o: rlshell.h bind.o: rlprivate.h callback.o: rlprivate.h complete.o: rlprivate.h display.o: rlprivate.h input.o: rlprivate.h isearch.o: rlprivate.h kill.o: rlprivate.h macro.o: rlprivate.h mbutil.o: rlprivate.h misc.o: rlprivate.h nls.o: rlprivate.h parens.o: rlprivate.h readline.o: rlprivate.h rltty.o: rlprivate.h search.o: rlprivate.h signals.o: rlprivate.h terminal.o: rlprivate.h text.o: rlprivate.h undo.o: rlprivate.h util.o: rlprivate.h vi_mode.o: rlprivate.h colors.o: rlprivate.h parse-colors.o: rlprivate.h bind.o: xmalloc.h callback.o: xmalloc.h complete.o: xmalloc.h display.o: xmalloc.h funmap.o: xmalloc.h histexpand.o: xmalloc.h histfile.o: xmalloc.h history.o: xmalloc.h input.o: xmalloc.h isearch.o: xmalloc.h keymaps.o: xmalloc.h kill.o: xmalloc.h macro.o: xmalloc.h mbutil.o: xmalloc.h misc.o: xmalloc.h readline.o: xmalloc.h savestring.o: xmalloc.h search.o: xmalloc.h shell.o: xmalloc.h terminal.o: xmalloc.h text.o: xmalloc.h tilde.o: xmalloc.h undo.o: xmalloc.h util.o: xmalloc.h vi_mode.o: xmalloc.h xfree.o: xmalloc.h xmalloc.o: xmalloc.h colors.o: xmalloc.h parse-colors.o: xmalloc.h complete.o: rlmbutil.h display.o: rlmbutil.h histexpand.o: rlmbutil.h input.o: rlmbutil.h isearch.o: rlmbutil.h mbutil.o: rlmbutil.h misc.o: rlmbutil.h readline.o: rlmbutil.h search.o: rlmbutil.h text.o: rlmbutil.h vi_mode.o: rlmbutil.h bind.o: $(srcdir)/bind.c callback.o: $(srcdir)/callback.c compat.o: $(srcdir)/compat.c complete.o: $(srcdir)/complete.c display.o: $(srcdir)/display.c funmap.o: $(srcdir)/funmap.c input.o: $(srcdir)/input.c isearch.o: $(srcdir)/isearch.c keymaps.o: $(srcdir)/keymaps.c $(srcdir)/emacs_keymap.c $(srcdir)/vi_keymap.c kill.o: $(srcdir)/kill.c macro.o: $(srcdir)/macro.c mbutil.o: $(srcdir)/mbutil.c misc.o: $(srcdir)/misc.c nls.o: $(srcdir)/nls.c parens.o: $(srcdir)/parens.c readline.o: $(srcdir)/readline.c rltty.o: $(srcdir)/rltty.c savestring.o: $(srcdir)/savestring.c search.o: $(srcdir)/search.c shell.o: $(srcdir)/shell.c signals.o: $(srcdir)/signals.c terminal.o: $(srcdir)/terminal.c text.o: $(srcdir)/text.c tilde.o: $(srcdir)/tilde.c undo.o: $(srcdir)/undo.c util.o: $(srcdir)/util.c vi_mode.o: $(srcdir)/vi_mode.c xfree.o: $(srcdir)/xfree.c xmalloc.o: $(srcdir)/xmalloc.c colors.o: $(srcdir)/parse-colors.c parse-colors.o: $(srcdir)/parse-colors.c histexpand.o: $(srcdir)/histexpand.c histfile.o: $(srcdir)/histfile.c history.o: $(srcdir)/history.c histsearch.o: $(srcdir)/histsearch.c bind.o: bind.c callback.o: callback.c compat.o: compat.c complete.o: complete.c display.o: display.c funmap.o: funmap.c input.o: input.c isearch.o: isearch.c keymaps.o: keymaps.c emacs_keymap.c vi_keymap.c kill.o: kill.c macro.o: macro.c mbutil.o: mbutil.c misc.o: misc.c nls.o: nls.c parens.o: parens.c readline.o: readline.c rltty.o: rltty.c savestring.o: savestring.c search.o: search.c shell.o: shell.c signals.o: signals.c terminal.o: terminal.c text.o: text.c tilde.o: tilde.c undo.o: undo.c util.o: util.c vi_mode.o: vi_mode.c xfree.o: xfree.c xmalloc.o: xmalloc.c histexpand.o: histexpand.c histfile.o: histfile.c history.o: history.c histsearch.o: histsearch.c readline-8.0/rlprivate.h000664 000436 000000 00000043034 13355214046 015412 0ustar00chetwheel000000 000000 /* rlprivate.h -- functions and variables global to the readline library, but not intended for use by applications. */ /* Copyright (C) 1999-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_RL_PRIVATE_H_) #define _RL_PRIVATE_H_ #include "rlconf.h" /* for VISIBLE_STATS */ #include "rlstdc.h" #include "posixjmp.h" /* defines procenv_t */ #include "rlmbutil.h" /* for HANDLE_MULTIBYTE */ /************************************************************************* * * * Convenience definitions * * * *************************************************************************/ #define EMACS_MODE() (rl_editing_mode == emacs_mode) #define VI_COMMAND_MODE() (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap) #define VI_INSERT_MODE() (rl_editing_mode == vi_mode && _rl_keymap == vi_insertion_keymap) #define RL_CHECK_SIGNALS() \ do { \ if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \ } while (0) #define RL_SIG_RECEIVED() (_rl_caught_signal != 0) #define RL_SIGINT_RECEIVED() (_rl_caught_signal == SIGINT) #define RL_SIGWINCH_RECEIVED() (_rl_caught_signal == SIGWINCH) #define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay) #define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc) /************************************************************************* * * * Global structs undocumented in texinfo manual and not in readline.h * * * *************************************************************************/ /* search types */ #define RL_SEARCH_ISEARCH 0x01 /* incremental search */ #define RL_SEARCH_NSEARCH 0x02 /* non-incremental search */ #define RL_SEARCH_CSEARCH 0x04 /* intra-line char search */ /* search flags */ #define SF_REVERSE 0x01 #define SF_FOUND 0x02 #define SF_FAILED 0x04 #define SF_CHGKMAP 0x08 #define SF_PATTERN 0x10 /* unused so far */ typedef struct __rl_search_context { int type; int sflags; char *search_string; int search_string_index; int search_string_size; char **lines; char *allocated_line; int hlen; int hindex; int save_point; int save_mark; int save_line; int last_found_line; char *prev_line_found; UNDO_LIST *save_undo_list; Keymap keymap; /* used when dispatching commands in search string */ Keymap okeymap; /* original keymap */ int history_pos; int direction; int prevc; int lastc; #if defined (HANDLE_MULTIBYTE) char mb[MB_LEN_MAX]; char pmb[MB_LEN_MAX]; #endif char *sline; int sline_len; int sline_index; char *search_terminators; } _rl_search_cxt; /* Callback data for reading numeric arguments */ #define NUM_SAWMINUS 0x01 #define NUM_SAWDIGITS 0x02 #define NUM_READONE 0x04 typedef int _rl_arg_cxt; /* A context for reading key sequences longer than a single character when using the callback interface. */ #define KSEQ_DISPATCHED 0x01 #define KSEQ_SUBSEQ 0x02 #define KSEQ_RECURSIVE 0x04 typedef struct __rl_keyseq_context { int flags; int subseq_arg; int subseq_retval; /* XXX */ int okey; Keymap dmap; Keymap oldmap; struct __rl_keyseq_context *ocxt; int childval; } _rl_keyseq_cxt; /* vi-mode commands that use result of motion command to define boundaries */ #define VIM_DELETE 0x01 #define VIM_CHANGE 0x02 #define VIM_YANK 0x04 /* various states for vi-mode commands that use motion commands. reflects RL_READLINE_STATE */ #define VMSTATE_READ 0x01 #define VMSTATE_NUMARG 0x02 typedef struct __rl_vimotion_context { int op; int state; int flags; /* reserved */ _rl_arg_cxt ncxt; int numeric_arg; int start, end; /* rl_point, rl_end */ int key, motion; /* initial key, motion command */ } _rl_vimotion_cxt; /* fill in more as needed */ /* `Generic' callback data and functions */ typedef struct __rl_callback_generic_arg { int count; int i1, i2; /* add here as needed */ } _rl_callback_generic_arg; typedef int _rl_callback_func_t PARAMS((_rl_callback_generic_arg *)); typedef void _rl_sigcleanup_func_t PARAMS((int, void *)); /************************************************************************* * * * Global functions undocumented in texinfo manual and not in readline.h * * * *************************************************************************/ /************************************************************************* * * * Global variables undocumented in texinfo manual and not in readline.h * * * *************************************************************************/ /* complete.c */ extern int rl_complete_with_tilde_expansion; #if defined (VISIBLE_STATS) extern int rl_visible_stats; #endif /* VISIBLE_STATS */ #if defined (COLOR_SUPPORT) extern int _rl_colored_stats; extern int _rl_colored_completion_prefix; #endif /* readline.c */ extern int rl_line_buffer_len; extern int rl_arg_sign; extern int rl_visible_prompt_length; extern int rl_byte_oriented; /* display.c */ extern int rl_display_fixed; /* parens.c */ extern int rl_blink_matching_paren; /************************************************************************* * * * Global functions and variables unused and undocumented * * * *************************************************************************/ /* kill.c */ extern int rl_set_retained_kills PARAMS((int)); /* terminal.c */ extern void _rl_set_screen_size PARAMS((int, int)); /* undo.c */ extern int _rl_fix_last_undo_of_type PARAMS((int, int, int)); /* util.c */ extern char *_rl_savestring PARAMS((const char *)); /************************************************************************* * * * Functions and variables private to the readline library * * * *************************************************************************/ /* NOTE: Functions and variables prefixed with `_rl_' are pseudo-global: they are global so they can be shared between files in the readline library, but are not intended to be visible to readline callers. */ /************************************************************************* * Undocumented private functions * *************************************************************************/ #if defined(READLINE_CALLBACKS) /* readline.c */ extern void readline_internal_setup PARAMS((void)); extern char *readline_internal_teardown PARAMS((int)); extern int readline_internal_char PARAMS((void)); extern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc PARAMS((void)); extern void _rl_keyseq_cxt_dispose PARAMS((_rl_keyseq_cxt *)); extern void _rl_keyseq_chain_dispose PARAMS((void)); extern int _rl_dispatch_callback PARAMS((_rl_keyseq_cxt *)); /* callback.c */ extern _rl_callback_generic_arg *_rl_callback_data_alloc PARAMS((int)); extern void _rl_callback_data_dispose PARAMS((_rl_callback_generic_arg *)); #endif /* READLINE_CALLBACKS */ /* bind.c */ extern char *_rl_untranslate_macro_value PARAMS((char *, int)); /* complete.c */ extern void _rl_reset_completion_state PARAMS((void)); extern char _rl_find_completion_word PARAMS((int *, int *)); extern void _rl_free_match_list PARAMS((char **)); /* display.c */ extern char *_rl_strip_prompt PARAMS((char *)); extern void _rl_reset_prompt PARAMS((void)); extern void _rl_move_cursor_relative PARAMS((int, const char *)); extern void _rl_move_vert PARAMS((int)); extern void _rl_save_prompt PARAMS((void)); extern void _rl_restore_prompt PARAMS((void)); extern char *_rl_make_prompt_for_search PARAMS((int)); extern void _rl_erase_at_end_of_line PARAMS((int)); extern void _rl_clear_to_eol PARAMS((int)); extern void _rl_clear_screen PARAMS((void)); extern void _rl_update_final PARAMS((void)); extern void _rl_redisplay_after_sigwinch PARAMS((void)); extern void _rl_clean_up_for_exit PARAMS((void)); extern void _rl_erase_entire_line PARAMS((void)); extern int _rl_current_display_line PARAMS((void)); /* input.c */ extern int _rl_any_typein PARAMS((void)); extern int _rl_input_available PARAMS((void)); extern int _rl_input_queued PARAMS((int)); extern void _rl_insert_typein PARAMS((int)); extern int _rl_unget_char PARAMS((int)); extern int _rl_pushed_input_available PARAMS((void)); /* isearch.c */ extern _rl_search_cxt *_rl_scxt_alloc PARAMS((int, int)); extern void _rl_scxt_dispose PARAMS((_rl_search_cxt *, int)); extern int _rl_isearch_dispatch PARAMS((_rl_search_cxt *, int)); extern int _rl_isearch_callback PARAMS((_rl_search_cxt *)); extern int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int)); extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); /* kill.c */ #define BRACK_PASTE_PREF "\033[200~" #define BRACK_PASTE_SUFF "\033[201~" #define BRACK_PASTE_LAST '~' #define BRACK_PASTE_SLEN 6 #define BRACK_PASTE_INIT "\033[?2004h" #define BRACK_PASTE_FINI "\033[?2004l\r" extern char *_rl_bracketed_text PARAMS((size_t *)); /* macro.c */ extern void _rl_with_macro_input PARAMS((char *)); extern int _rl_peek_macro_key PARAMS((void)); extern int _rl_next_macro_key PARAMS((void)); extern int _rl_prev_macro_key PARAMS((void)); extern void _rl_push_executing_macro PARAMS((void)); extern void _rl_pop_executing_macro PARAMS((void)); extern void _rl_add_macro_char PARAMS((int)); extern void _rl_kill_kbd_macro PARAMS((void)); /* misc.c */ extern int _rl_arg_overflow PARAMS((void)); extern void _rl_arg_init PARAMS((void)); extern int _rl_arg_getchar PARAMS((void)); extern int _rl_arg_callback PARAMS((_rl_arg_cxt)); extern void _rl_reset_argument PARAMS((void)); extern void _rl_start_using_history PARAMS((void)); extern int _rl_free_saved_history_line PARAMS((void)); extern void _rl_set_insert_mode PARAMS((int, int)); extern void _rl_revert_all_lines PARAMS((void)); /* nls.c */ extern char *_rl_init_locale PARAMS((void)); extern int _rl_init_eightbit PARAMS((void)); /* parens.c */ extern void _rl_enable_paren_matching PARAMS((int)); /* readline.c */ extern void _rl_init_line_state PARAMS((void)); extern void _rl_set_the_line PARAMS((void)); extern int _rl_dispatch PARAMS((int, Keymap)); extern int _rl_dispatch_subseq PARAMS((int, Keymap, int)); extern void _rl_internal_char_cleanup PARAMS((void)); /* rltty.c */ extern int _rl_disable_tty_signals PARAMS((void)); extern int _rl_restore_tty_signals PARAMS((void)); /* search.c */ extern int _rl_nsearch_callback PARAMS((_rl_search_cxt *)); extern int _rl_nsearch_cleanup PARAMS((_rl_search_cxt *, int)); /* signals.c */ extern void _rl_signal_handler PARAMS((int)); extern void _rl_block_sigint PARAMS((void)); extern void _rl_release_sigint PARAMS((void)); extern void _rl_block_sigwinch PARAMS((void)); extern void _rl_release_sigwinch PARAMS((void)); /* terminal.c */ extern void _rl_get_screen_size PARAMS((int, int)); extern void _rl_sigwinch_resize_terminal PARAMS((void)); extern int _rl_init_terminal_io PARAMS((const char *)); #ifdef _MINIX extern void _rl_output_character_function PARAMS((int)); #else extern int _rl_output_character_function PARAMS((int)); #endif extern void _rl_output_some_chars PARAMS((const char *, int)); extern int _rl_backspace PARAMS((int)); extern void _rl_enable_meta_key PARAMS((void)); extern void _rl_disable_meta_key PARAMS((void)); extern void _rl_control_keypad PARAMS((int)); extern void _rl_set_cursor PARAMS((int, int)); /* text.c */ extern void _rl_fix_point PARAMS((int)); extern int _rl_replace_text PARAMS((const char *, int, int)); extern int _rl_forward_char_internal PARAMS((int)); extern int _rl_backward_char_internal PARAMS((int)); extern int _rl_insert_char PARAMS((int, int)); extern int _rl_overwrite_char PARAMS((int, int)); extern int _rl_overwrite_rubout PARAMS((int, int)); extern int _rl_rubout_char PARAMS((int, int)); #if defined (HANDLE_MULTIBYTE) extern int _rl_char_search_internal PARAMS((int, int, char *, int)); #else extern int _rl_char_search_internal PARAMS((int, int, int)); #endif extern int _rl_set_mark_at_pos PARAMS((int)); /* undo.c */ extern UNDO_LIST *_rl_copy_undo_entry PARAMS((UNDO_LIST *)); extern UNDO_LIST *_rl_copy_undo_list PARAMS((UNDO_LIST *)); extern void _rl_free_undo_list PARAMS((UNDO_LIST *)); /* util.c */ #if defined (USE_VARARGS) && defined (PREFER_STDARG) extern void _rl_ttymsg (const char *, ...) __attribute__((__format__ (printf, 1, 2))); extern void _rl_errmsg (const char *, ...) __attribute__((__format__ (printf, 1, 2))); extern void _rl_trace (const char *, ...) __attribute__((__format__ (printf, 1, 2))); #else extern void _rl_ttymsg (); extern void _rl_errmsg (); extern void _rl_trace (); #endif extern void _rl_audit_tty PARAMS((char *)); extern int _rl_tropen PARAMS((void)); extern int _rl_abort_internal PARAMS((void)); extern int _rl_null_function PARAMS((int, int)); extern char *_rl_strindex PARAMS((const char *, const char *)); extern int _rl_qsort_string_compare PARAMS((char **, char **)); extern int (_rl_uppercase_p) PARAMS((int)); extern int (_rl_lowercase_p) PARAMS((int)); extern int (_rl_pure_alphabetic) PARAMS((int)); extern int (_rl_digit_p) PARAMS((int)); extern int (_rl_to_lower) PARAMS((int)); extern int (_rl_to_upper) PARAMS((int)); extern int (_rl_digit_value) PARAMS((int)); /* vi_mode.c */ extern void _rl_vi_initialize_line PARAMS((void)); extern void _rl_vi_reset_last PARAMS((void)); extern void _rl_vi_set_last PARAMS((int, int, int)); extern int _rl_vi_textmod_command PARAMS((int)); extern int _rl_vi_motion_command PARAMS((int)); extern void _rl_vi_done_inserting PARAMS((void)); extern int _rl_vi_domove_callback PARAMS((_rl_vimotion_cxt *)); extern int _rl_vi_domove_motion_cleanup PARAMS((int, _rl_vimotion_cxt *)); /************************************************************************* * Undocumented private variables * *************************************************************************/ /* bind.c */ extern const char * const _rl_possible_control_prefixes[]; extern const char * const _rl_possible_meta_prefixes[]; /* callback.c */ extern _rl_callback_func_t *_rl_callback_func; extern _rl_callback_generic_arg *_rl_callback_data; /* complete.c */ extern int _rl_complete_show_all; extern int _rl_complete_show_unmodified; extern int _rl_complete_mark_directories; extern int _rl_complete_mark_symlink_dirs; extern int _rl_completion_prefix_display_length; extern int _rl_completion_columns; extern int _rl_print_completions_horizontally; extern int _rl_completion_case_fold; extern int _rl_completion_case_map; extern int _rl_match_hidden_files; extern int _rl_page_completions; extern int _rl_skip_completed_text; extern int _rl_menu_complete_prefix_first; /* display.c */ extern int _rl_vis_botlin; extern int _rl_last_c_pos; extern int _rl_suppress_redisplay; extern int _rl_want_redisplay; extern char *_rl_emacs_mode_str; extern int _rl_emacs_modestr_len; extern char *_rl_vi_ins_mode_str; extern int _rl_vi_ins_modestr_len; extern char *_rl_vi_cmd_mode_str; extern int _rl_vi_cmd_modestr_len; /* isearch.c */ extern char *_rl_isearch_terminators; extern _rl_search_cxt *_rl_iscxt; /* macro.c */ extern char *_rl_executing_macro; /* misc.c */ extern int _rl_history_preserve_point; extern int _rl_history_saved_point; extern _rl_arg_cxt _rl_argcxt; /* nls.c */ extern int _rl_utf8locale; /* readline.c */ extern int _rl_echoing_p; extern int _rl_horizontal_scroll_mode; extern int _rl_mark_modified_lines; extern int _rl_bell_preference; extern int _rl_meta_flag; extern int _rl_convert_meta_chars_to_ascii; extern int _rl_output_meta_chars; extern int _rl_bind_stty_chars; extern int _rl_revert_all_at_newline; extern int _rl_echo_control_chars; extern int _rl_show_mode_in_prompt; extern int _rl_enable_bracketed_paste; extern char *_rl_comment_begin; extern unsigned char _rl_parsing_conditionalized_out; extern Keymap _rl_keymap; extern FILE *_rl_in_stream; extern FILE *_rl_out_stream; extern int _rl_last_command_was_kill; extern int _rl_eof_char; extern int _rl_eof_found; extern procenv_t _rl_top_level; extern _rl_keyseq_cxt *_rl_kscxt; extern int _rl_keyseq_timeout; extern int _rl_executing_keyseq_size; /* search.c */ extern _rl_search_cxt *_rl_nscxt; /* signals.c */ extern int _rl_interrupt_immediately; extern int volatile _rl_caught_signal; extern _rl_sigcleanup_func_t *_rl_sigcleanup; extern void *_rl_sigcleanarg; extern int _rl_echoctl; extern int _rl_intr_char; extern int _rl_quit_char; extern int _rl_susp_char; /* terminal.c */ extern int _rl_enable_keypad; extern int _rl_enable_meta; extern char *_rl_term_clreol; extern char *_rl_term_clrpag; extern char *_rl_term_clrscroll; extern char *_rl_term_im; extern char *_rl_term_ic; extern char *_rl_term_ei; extern char *_rl_term_DC; extern char *_rl_term_up; extern char *_rl_term_dc; extern char *_rl_term_cr; extern char *_rl_term_IC; extern char *_rl_term_forward_char; extern int _rl_screenheight; extern int _rl_screenwidth; extern int _rl_screenchars; extern int _rl_terminal_can_insert; extern int _rl_term_autowrap; /* text.c */ extern int _rl_optimize_typeahead; /* undo.c */ extern int _rl_doing_an_undo; extern int _rl_undo_group_level; /* vi_mode.c */ extern int _rl_vi_last_command; extern int _rl_vi_redoing; extern _rl_vimotion_cxt *_rl_vimvcxt; #endif /* _RL_PRIVATE_H_ */ readline-8.0/aclocal.m4000644 000436 000120 00000410752 13401760506 015062 0ustar00chetadmin000000 000000 nl dnl Bash specific tests dnl dnl Some derived from PDKSH 5.1.3 autoconf tests dnl AC_DEFUN(BASH_C_LONG_LONG, [AC_CACHE_CHECK(for long long, ac_cv_c_long_long, [if test "$GCC" = yes; then ac_cv_c_long_long=yes else AC_TRY_RUN([ int main() { long long foo = 0; exit(sizeof(long long) < sizeof(long)); } ], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) fi]) if test $ac_cv_c_long_long = yes; then AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.]) fi ]) dnl dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX dnl (< changed to <=) added. dnl AC_DEFUN(BASH_C_LONG_DOUBLE, [AC_CACHE_CHECK(for long double, ac_cv_c_long_double, [if test "$GCC" = yes; then ac_cv_c_long_double=yes else AC_TRY_RUN([ int main() { /* The Stardent Vistra knows sizeof(long double), but does not support it. */ long double foo = 0.0; /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ /* On IRIX 5.3, the compiler converts long double to double with a warning, but compiles this successfully. */ exit(sizeof(long double) <= sizeof(double)); } ], ac_cv_c_long_double=yes, ac_cv_c_long_double=no) fi]) if test $ac_cv_c_long_double = yes; then AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.]) fi ]) dnl dnl Check for . This is separated out so that it can be dnl AC_REQUIREd. dnl dnl BASH_HEADER_INTTYPES AC_DEFUN(BASH_HEADER_INTTYPES, [ AC_CHECK_HEADERS(inttypes.h) ]) dnl dnl check for typedef'd symbols in header files, but allow the caller to dnl specify the include files to be checked in addition to the default dnl dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) AC_DEFUN(BASH_CHECK_TYPE, [ AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([BASH_HEADER_INTTYPES]) AC_MSG_CHECKING(for $1) AC_CACHE_VAL(bash_cv_type_$1, [AC_EGREP_CPP($1, [#include #if STDC_HEADERS #include #include #endif #if HAVE_INTTYPES_H #include #endif #if HAVE_STDINT_H #include #endif $2 ], bash_cv_type_$1=yes, bash_cv_type_$1=no)]) AC_MSG_RESULT($bash_cv_type_$1) ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then AC_DEFINE($4) fi]) if test $bash_cv_type_$1 = no; then AC_DEFINE_UNQUOTED($1, $3) fi ]) dnl dnl BASH_CHECK_DECL(FUNC) dnl dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like dnl AC_CHECK_DECL dnl AC_DEFUN(BASH_CHECK_DECL, [ AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([BASH_HEADER_INTTYPES]) AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1, [AC_TRY_LINK( [ #if STDC_HEADERS # include #endif #if HAVE_INTTYPES_H # include #endif ], [return !$1;], bash_cv_decl_$1=yes, bash_cv_decl_$1=no)]) bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` if test $bash_cv_decl_$1 = yes; then AC_DEFINE_UNQUOTED($bash_tr_func, 1) else AC_DEFINE_UNQUOTED($bash_tr_func, 0) fi ]) AC_DEFUN(BASH_DECL_PRINTF, [AC_MSG_CHECKING(for declaration of printf in ) AC_CACHE_VAL(bash_cv_printf_declared, [AC_TRY_RUN([ #include #ifdef __STDC__ typedef int (*_bashfunc)(const char *, ...); #else typedef int (*_bashfunc)(); #endif main() { _bashfunc pf; pf = (_bashfunc) printf; exit(pf == 0); } ], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) bash_cv_printf_declared=yes] )]) AC_MSG_RESULT($bash_cv_printf_declared) if test $bash_cv_printf_declared = yes; then AC_DEFINE(PRINTF_DECLARED) fi ]) AC_DEFUN(BASH_DECL_SBRK, [AC_MSG_CHECKING(for declaration of sbrk in ) AC_CACHE_VAL(bash_cv_sbrk_declared, [AC_EGREP_HEADER(sbrk, unistd.h, bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)]) AC_MSG_RESULT($bash_cv_sbrk_declared) if test $bash_cv_sbrk_declared = yes; then AC_DEFINE(SBRK_DECLARED) fi ]) dnl dnl Check for sys_siglist[] or _sys_siglist[] dnl AC_DEFUN(BASH_DECL_UNDER_SYS_SIGLIST, [AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h]) AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, [AC_TRY_COMPILE([ #include #include #ifdef HAVE_UNISTD_H #include #endif], [ char *msg = _sys_siglist[2]; ], bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) if test $bash_cv_decl_under_sys_siglist = yes; then AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED) fi ]) AC_DEFUN(BASH_UNDER_SYS_SIGLIST, [AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) AC_MSG_CHECKING([for _sys_siglist in system C library]) AC_CACHE_VAL(bash_cv_under_sys_siglist, [AC_TRY_RUN([ #include #include #ifdef HAVE_UNISTD_H #include #endif #ifndef UNDER_SYS_SIGLIST_DECLARED extern char *_sys_siglist[]; #endif main() { char *msg = (char *)_sys_siglist[2]; exit(msg == 0); }], bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) bash_cv_under_sys_siglist=no])]) AC_MSG_RESULT($bash_cv_under_sys_siglist) if test $bash_cv_under_sys_siglist = yes; then AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) fi ]) AC_DEFUN(BASH_SYS_SIGLIST, [AC_REQUIRE([AC_DECL_SYS_SIGLIST]) AC_MSG_CHECKING([for sys_siglist in system C library]) AC_CACHE_VAL(bash_cv_sys_siglist, [AC_TRY_RUN([ #include #include #ifdef HAVE_UNISTD_H #include #endif #if !HAVE_DECL_SYS_SIGLIST extern char *sys_siglist[]; #endif main() { char *msg = sys_siglist[2]; exit(msg == 0); }], bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no) bash_cv_sys_siglist=no])]) AC_MSG_RESULT($bash_cv_sys_siglist) if test $bash_cv_sys_siglist = yes; then AC_DEFINE(HAVE_SYS_SIGLIST) fi ]) dnl Check for the various permutations of sys_siglist and make sure we dnl compile in siglist.o if they're not defined AC_DEFUN(BASH_CHECK_SYS_SIGLIST, [ AC_REQUIRE([BASH_SYS_SIGLIST]) AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) AC_REQUIRE([BASH_FUNC_STRSIGNAL]) if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then SIGLIST_O=siglist.o else SIGLIST_O= fi AC_SUBST([SIGLIST_O]) ]) dnl Check for sys_errlist[] and sys_nerr, check for declaration AC_DEFUN(BASH_SYS_ERRLIST, [AC_MSG_CHECKING([for sys_errlist and sys_nerr]) AC_CACHE_VAL(bash_cv_sys_errlist, [AC_TRY_LINK([#include ], [extern char *sys_errlist[]; extern int sys_nerr; char *msg = sys_errlist[sys_nerr - 1];], bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl AC_MSG_RESULT($bash_cv_sys_errlist) if test $bash_cv_sys_errlist = yes; then AC_DEFINE(HAVE_SYS_ERRLIST) fi ]) dnl dnl Check if dup2() does not clear the close on exec flag dnl AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK, [AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) AC_CACHE_VAL(bash_cv_dup2_broken, [AC_TRY_RUN([ #include #include main() { int fd1, fd2, fl; fd1 = open("/dev/null", 2); if (fcntl(fd1, 2, 1) < 0) exit(1); fd2 = dup2(fd1, 1); if (fd2 < 0) exit(2); fl = fcntl(fd2, 1, 0); /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ exit(fl != 1); } ], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) bash_cv_dup2_broken=no]) ]) AC_MSG_RESULT($bash_cv_dup2_broken) if test $bash_cv_dup2_broken = yes; then AC_DEFINE(DUP2_BROKEN) fi ]) AC_DEFUN(BASH_FUNC_STRSIGNAL, [AC_MSG_CHECKING([for the existence of strsignal]) AC_CACHE_VAL(bash_cv_have_strsignal, [AC_TRY_LINK([#include #include ], [char *s = (char *)strsignal(2);], bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) AC_MSG_RESULT($bash_cv_have_strsignal) if test $bash_cv_have_strsignal = yes; then AC_DEFINE(HAVE_STRSIGNAL) fi ]) dnl Check to see if opendir will open non-directories (not a nice thing) AC_DEFUN(BASH_FUNC_OPENDIR_CHECK, [AC_REQUIRE([AC_HEADER_DIRENT])dnl AC_MSG_CHECKING(if opendir() opens non-directories) AC_CACHE_VAL(bash_cv_opendir_not_robust, [AC_TRY_RUN([ #include #include #include #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ #if defined(HAVE_DIRENT_H) # include #else # define dirent direct # ifdef HAVE_SYS_NDIR_H # include # endif /* SYSNDIR */ # ifdef HAVE_SYS_DIR_H # include # endif /* SYSDIR */ # ifdef HAVE_NDIR_H # include # endif #endif /* HAVE_DIRENT_H */ main() { DIR *dir; int fd, err; err = mkdir("bash-aclocal", 0700); if (err < 0) { perror("mkdir"); exit(1); } unlink("bash-aclocal/not_a_directory"); fd = open("bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); write(fd, "\n", 1); close(fd); dir = opendir("bash-aclocal/not_a_directory"); unlink("bash-aclocal/not_a_directory"); rmdir("bash-aclocal"); exit (dir == 0); }], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no) bash_cv_opendir_not_robust=no] )]) AC_MSG_RESULT($bash_cv_opendir_not_robust) if test $bash_cv_opendir_not_robust = yes; then AC_DEFINE(OPENDIR_NOT_ROBUST) fi ]) dnl AC_DEFUN(BASH_TYPE_SIGHANDLER, [AC_MSG_CHECKING([whether signal handlers are of type void]) AC_CACHE_VAL(bash_cv_void_sighandler, [AC_TRY_COMPILE([#include #include #ifdef signal #undef signal #endif #ifdef __cplusplus extern "C" #endif void (*signal ()) ();], [int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl AC_MSG_RESULT($bash_cv_void_sighandler) if test $bash_cv_void_sighandler = yes; then AC_DEFINE(VOID_SIGHANDLER) fi ]) dnl dnl A signed 16-bit integer quantity dnl AC_DEFUN(BASH_TYPE_BITS16_T, [ if test "$ac_cv_sizeof_short" = 2; then AC_CHECK_TYPE(bits16_t, short) elif test "$ac_cv_sizeof_char" = 2; then AC_CHECK_TYPE(bits16_t, char) else AC_CHECK_TYPE(bits16_t, short) fi ]) dnl dnl An unsigned 16-bit integer quantity dnl AC_DEFUN(BASH_TYPE_U_BITS16_T, [ if test "$ac_cv_sizeof_short" = 2; then AC_CHECK_TYPE(u_bits16_t, unsigned short) elif test "$ac_cv_sizeof_char" = 2; then AC_CHECK_TYPE(u_bits16_t, unsigned char) else AC_CHECK_TYPE(u_bits16_t, unsigned short) fi ]) dnl dnl A signed 32-bit integer quantity dnl AC_DEFUN(BASH_TYPE_BITS32_T, [ if test "$ac_cv_sizeof_int" = 4; then AC_CHECK_TYPE(bits32_t, int) elif test "$ac_cv_sizeof_long" = 4; then AC_CHECK_TYPE(bits32_t, long) else AC_CHECK_TYPE(bits32_t, int) fi ]) dnl dnl An unsigned 32-bit integer quantity dnl AC_DEFUN(BASH_TYPE_U_BITS32_T, [ if test "$ac_cv_sizeof_int" = 4; then AC_CHECK_TYPE(u_bits32_t, unsigned int) elif test "$ac_cv_sizeof_long" = 4; then AC_CHECK_TYPE(u_bits32_t, unsigned long) else AC_CHECK_TYPE(u_bits32_t, unsigned int) fi ]) AC_DEFUN(BASH_TYPE_PTRDIFF_T, [ if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then AC_CHECK_TYPE(ptrdiff_t, int) elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then AC_CHECK_TYPE(ptrdiff_t, long) elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then AC_CHECK_TYPE(ptrdiff_t, [long long]) else AC_CHECK_TYPE(ptrdiff_t, int) fi ]) dnl dnl A signed 64-bit quantity dnl AC_DEFUN(BASH_TYPE_BITS64_T, [ if test "$ac_cv_sizeof_char_p" = 8; then AC_CHECK_TYPE(bits64_t, char *) elif test "$ac_cv_sizeof_double" = 8; then AC_CHECK_TYPE(bits64_t, double) elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then AC_CHECK_TYPE(bits64_t, [long long]) elif test "$ac_cv_sizeof_long" = 8; then AC_CHECK_TYPE(bits64_t, long) else AC_CHECK_TYPE(bits64_t, double) fi ]) AC_DEFUN(BASH_TYPE_LONG_LONG, [ AC_CACHE_CHECK([for long long], bash_cv_type_long_long, [AC_TRY_LINK([ long long ll = 1; int i = 63;], [ long long llm = (long long) -1; return ll << i | ll >> i | llm / ll | llm % ll; ], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')]) if test "$bash_cv_type_long_long" = 'long long'; then AC_DEFINE(HAVE_LONG_LONG, 1) fi ]) AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG, [ AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long, [AC_TRY_LINK([ unsigned long long ull = 1; int i = 63;], [ unsigned long long ullmax = (unsigned long long) -1; return ull << i | ull >> i | ullmax / ull | ullmax % ull; ], bash_cv_type_unsigned_long_long='unsigned long long', bash_cv_type_unsigned_long_long='unsigned long')]) if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1) fi ]) dnl dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify dnl matters, this just checks for rlim_t, quad_t, or long. dnl AC_DEFUN(BASH_TYPE_RLIMIT, [AC_MSG_CHECKING(for size and type of struct rlimit fields) AC_CACHE_VAL(bash_cv_type_rlimit, [AC_TRY_COMPILE([#include #include ], [rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ AC_TRY_RUN([ #include #include #include main() { #ifdef HAVE_QUAD_T struct rlimit rl; if (sizeof(rl.rlim_cur) == sizeof(quad_t)) exit(0); #endif exit(1); }], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) bash_cv_type_rlimit=long])]) ]) AC_MSG_RESULT($bash_cv_type_rlimit) if test $bash_cv_type_rlimit = quad_t; then AC_DEFINE(RLIMTYPE, quad_t) elif test $bash_cv_type_rlimit = rlim_t; then AC_DEFINE(RLIMTYPE, rlim_t) fi ]) AC_DEFUN(BASH_TYPE_SIG_ATOMIC_T, [AC_CACHE_CHECK([for sig_atomic_t in signal.h], ac_cv_have_sig_atomic_t, [AC_TRY_LINK([ #include ],[ sig_atomic_t x; ], ac_cv_have_sig_atomic_t=yes, ac_cv_have_sig_atomic_t=no)]) if test "$ac_cv_have_sig_atomic_t" = "no" then AC_CHECK_TYPE(sig_atomic_t,int) fi ]) AC_DEFUN(BASH_FUNC_LSTAT, [dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an dnl inline function in . AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, [AC_TRY_LINK([ #include #include ],[ lstat(".",(struct stat *)0); ], bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) if test $bash_cv_func_lstat = yes; then AC_DEFINE(HAVE_LSTAT) fi ]) AC_DEFUN(BASH_FUNC_INET_ATON, [ AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton, [AC_TRY_LINK([ #include #include #include struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ], bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)]) if test $bash_cv_func_inet_aton = yes; then AC_DEFINE(HAVE_INET_ATON) else AC_LIBOBJ(inet_aton) fi ]) AC_DEFUN(BASH_FUNC_GETENV, [AC_MSG_CHECKING(to see if getenv can be redefined) AC_CACHE_VAL(bash_cv_getenv_redef, [AC_TRY_RUN([ #ifdef HAVE_UNISTD_H # include #endif #ifndef __STDC__ # ifndef const # define const # endif #endif char * getenv (name) #if defined (__linux__) || defined (__bsdi__) || defined (convex) const char *name; #else char const *name; #endif /* !__linux__ && !__bsdi__ && !convex */ { return "42"; } main() { char *s; /* The next allows this program to run, but does not allow bash to link when it redefines getenv. I'm not really interested in figuring out why not. */ #if defined (NeXT) exit(1); #endif s = getenv("ABCDE"); exit(s == 0); /* force optimizer to leave getenv in */ } ], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) bash_cv_getenv_redef=yes] )]) AC_MSG_RESULT($bash_cv_getenv_redef) if test $bash_cv_getenv_redef = yes; then AC_DEFINE(CAN_REDEFINE_GETENV) fi ]) # We should check for putenv before calling this AC_DEFUN(BASH_FUNC_STD_PUTENV, [ AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([AC_C_PROTOTYPES]) AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv, [AC_TRY_LINK([ #if STDC_HEADERS #include #include #endif #ifndef __STDC__ # ifndef const # define const # endif #endif #ifdef PROTOTYPES extern int putenv (char *); #else extern int putenv (); #endif ], [return (putenv == 0);], bash_cv_std_putenv=yes, bash_cv_std_putenv=no )]) if test $bash_cv_std_putenv = yes; then AC_DEFINE(HAVE_STD_PUTENV) fi ]) # We should check for unsetenv before calling this AC_DEFUN(BASH_FUNC_STD_UNSETENV, [ AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([AC_C_PROTOTYPES]) AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv, [AC_TRY_LINK([ #if STDC_HEADERS #include #include #endif #ifndef __STDC__ # ifndef const # define const # endif #endif #ifdef PROTOTYPES extern int unsetenv (const char *); #else extern int unsetenv (); #endif ], [return (unsetenv == 0);], bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no )]) if test $bash_cv_std_unsetenv = yes; then AC_DEFINE(HAVE_STD_UNSETENV) fi ]) AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS, [AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) AC_CACHE_VAL(bash_cv_ulimit_maxfds, [AC_TRY_RUN([ main() { long maxfds = ulimit(4, 0L); exit (maxfds == -1L); } ], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no) bash_cv_ulimit_maxfds=no] )]) AC_MSG_RESULT($bash_cv_ulimit_maxfds) if test $bash_cv_ulimit_maxfds = yes; then AC_DEFINE(ULIMIT_MAXFDS) fi ]) AC_DEFUN(BASH_FUNC_GETCWD, [AC_MSG_CHECKING([if getcwd() will dynamically allocate memory with 0 size]) AC_CACHE_VAL(bash_cv_getcwd_malloc, [AC_TRY_RUN([ #include #ifdef HAVE_UNISTD_H #include #endif main() { char *xpwd; xpwd = getcwd(0, 0); exit (xpwd == 0); } ], bash_cv_getcwd_malloc=yes, bash_cv_getcwd_malloc=no, [AC_MSG_WARN(cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no) bash_cv_getcwd_malloc=no] )]) AC_MSG_RESULT($bash_cv_getcwd_malloc) if test $bash_cv_getcwd_malloc = no; then AC_DEFINE(GETCWD_BROKEN) AC_LIBOBJ(getcwd) fi ]) dnl dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every dnl system, we can't use AC_PREREQ dnl AC_DEFUN(BASH_FUNC_GETHOSTBYNAME, [if test "X$bash_cv_have_gethostbyname" = "X"; then _bash_needmsg=yes else AC_MSG_CHECKING(for gethostbyname in socket library) _bash_needmsg= fi AC_CACHE_VAL(bash_cv_have_gethostbyname, [AC_TRY_LINK([#include ], [ struct hostent *hp; hp = gethostbyname("localhost"); ], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] ) if test "X$_bash_needmsg" = Xyes; then AC_MSG_CHECKING(for gethostbyname in socket library) fi AC_MSG_RESULT($bash_cv_have_gethostbyname) if test "$bash_cv_have_gethostbyname" = yes; then AC_DEFINE(HAVE_GETHOSTBYNAME) fi ]) AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH, [AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH) AC_CACHE_VAL(bash_cv_fnm_extmatch, [AC_TRY_RUN([ #include main() { #ifdef FNM_EXTMATCH exit (0); #else exit (1); #endif } ], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no) bash_cv_fnm_extmatch=no]) ]) AC_MSG_RESULT($bash_cv_fnm_extmatch) if test $bash_cv_fnm_extmatch = yes; then AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH) fi ]) AC_DEFUN(BASH_FUNC_POSIX_SETJMP, [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) AC_CACHE_VAL(bash_cv_func_sigsetjmp, [AC_TRY_RUN([ #ifdef HAVE_UNISTD_H #include #endif #include #include #include main() { #if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) exit (1); #else int code; sigset_t set, oset; sigjmp_buf xx; /* get the mask */ sigemptyset(&set); sigemptyset(&oset); sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); /* save it */ code = sigsetjmp(xx, 1); if (code) exit(0); /* could get sigmask and compare to oset here. */ /* change it */ sigaddset(&set, SIGINT); sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); /* and siglongjmp */ siglongjmp(xx, 10); exit(1); #endif }], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) bash_cv_func_sigsetjmp=missing] )]) AC_MSG_RESULT($bash_cv_func_sigsetjmp) if test $bash_cv_func_sigsetjmp = present; then AC_DEFINE(HAVE_POSIX_SIGSETJMP) fi ]) AC_DEFUN(BASH_FUNC_STRCOLL, [ AC_MSG_CHECKING(whether or not strcoll and strcmp differ) AC_CACHE_VAL(bash_cv_func_strcoll_broken, [AC_TRY_RUN([ #include #if defined (HAVE_LOCALE_H) #include #endif main(c, v) int c; char *v[]; { int r1, r2; char *deflocale, *defcoll; #ifdef HAVE_SETLOCALE deflocale = setlocale(LC_ALL, ""); defcoll = setlocale(LC_COLLATE, ""); #endif #ifdef HAVE_STRCOLL /* These two values are taken from tests/glob-test. */ r1 = strcoll("abd", "aXd"); #else r1 = 0; #endif r2 = strcmp("abd", "aXd"); /* These two should both be greater than 0. It is permissible for a system to return different values, as long as the sign is the same. */ /* Exit with 1 (failure) if these two values are both > 0, since this tests whether strcoll(3) is broken with respect to strcmp(3) in the default locale. */ exit (r1 > 0 && r2 > 0); } ], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) bash_cv_func_strcoll_broken=no] )]) AC_MSG_RESULT($bash_cv_func_strcoll_broken) if test $bash_cv_func_strcoll_broken = yes; then AC_DEFINE(STRCOLL_BROKEN) fi ]) AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT, [AC_MSG_CHECKING([for printf floating point output in hex notation]) AC_CACHE_VAL(bash_cv_printf_a_format, [AC_TRY_RUN([ #include #include int main() { double y = 0.0; char abuf[1024]; sprintf(abuf, "%A", y); exit(strchr(abuf, 'P') == (char *)0); } ], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no) bash_cv_printf_a_format=no] )]) AC_MSG_RESULT($bash_cv_printf_a_format) if test $bash_cv_printf_a_format = yes; then AC_DEFINE(HAVE_PRINTF_A_FORMAT) fi ]) AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC, [ AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[ #include #include ]) ]) AC_DEFUN(BASH_STRUCT_TERMIO_LDISC, [ AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[ #include #include ]) ]) dnl dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS dnl dnl sets bash_cv_struct_stat_st_blocks dnl dnl unused for now; we'll see how AC_CHECK_MEMBERS works dnl AC_DEFUN(BASH_STRUCT_ST_BLOCKS, [ AC_MSG_CHECKING([for struct stat.st_blocks]) AC_CACHE_VAL(bash_cv_struct_stat_st_blocks, [AC_TRY_COMPILE( [ #include #include ], [ main() { static struct stat a; if (a.st_blocks) return 0; return 0; } ], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no) ]) AC_MSG_RESULT($bash_cv_struct_stat_st_blocks) if test "$bash_cv_struct_stat_st_blocks" = "yes"; then AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) fi ]) AC_DEFUN([BASH_CHECK_LIB_TERMCAP], [ if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else AC_MSG_CHECKING(which library has the termcap functions) _bash_needmsg= fi AC_CACHE_VAL(bash_cv_termcap_lib, [AC_CHECK_FUNC(tgetent, bash_cv_termcap_lib=libc, [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw, bash_cv_termcap_lib=gnutermcap)])])])])])]) if test "X$_bash_needmsg" = "Xyes"; then AC_MSG_CHECKING(which library has the termcap functions) fi AC_MSG_RESULT(using $bash_cv_termcap_lib) if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" TERMCAP_DEP="./lib/termcap/libtermcap.a" elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then TERMCAP_LIB=-ltermcap TERMCAP_DEP= elif test $bash_cv_termcap_lib = libtinfo; then TERMCAP_LIB=-ltinfo TERMCAP_DEP= elif test $bash_cv_termcap_lib = libncurses; then TERMCAP_LIB=-lncurses TERMCAP_DEP= elif test $bash_cv_termcap_lib = libc; then TERMCAP_LIB= TERMCAP_DEP= else TERMCAP_LIB=-lcurses TERMCAP_DEP= fi ]) dnl dnl Check for the presence of getpeername in libsocket. dnl If libsocket is present, check for libnsl and add it to LIBS if dnl it's there, since most systems with libsocket require linking dnl with libnsl as well. This should only be called if getpeername dnl was not found in libc. dnl dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT dnl AS WELL dnl AC_DEFUN(BASH_CHECK_LIB_SOCKET, [ if test "X$bash_cv_have_socklib" = "X"; then _bash_needmsg= else AC_MSG_CHECKING(for socket library) _bash_needmsg=yes fi AC_CACHE_VAL(bash_cv_have_socklib, [AC_CHECK_LIB(socket, getpeername, bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)]) if test "X$_bash_needmsg" = Xyes; then AC_MSG_RESULT($bash_cv_have_socklib) _bash_needmsg= fi if test $bash_cv_have_socklib = yes; then # check for libnsl, add it to LIBS if present if test "X$bash_cv_have_libnsl" = "X"; then _bash_needmsg= else AC_MSG_CHECKING(for libnsl) _bash_needmsg=yes fi AC_CACHE_VAL(bash_cv_have_libnsl, [AC_CHECK_LIB(nsl, t_open, bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) if test "X$_bash_needmsg" = Xyes; then AC_MSG_RESULT($bash_cv_have_libnsl) _bash_needmsg= fi if test $bash_cv_have_libnsl = yes; then LIBS="-lsocket -lnsl $LIBS" else LIBS="-lsocket $LIBS" fi AC_DEFINE(HAVE_LIBSOCKET) AC_DEFINE(HAVE_GETPEERNAME) fi ]) AC_DEFUN(BASH_STRUCT_DIRENT_D_INO, [AC_REQUIRE([AC_HEADER_DIRENT]) AC_MSG_CHECKING(for struct dirent.d_ino) AC_CACHE_VAL(bash_cv_dirent_has_dino, [AC_TRY_COMPILE([ #include #include #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ #if defined(HAVE_DIRENT_H) # include #else # define dirent direct # ifdef HAVE_SYS_NDIR_H # include # endif /* SYSNDIR */ # ifdef HAVE_SYS_DIR_H # include # endif /* SYSDIR */ # ifdef HAVE_NDIR_H # include # endif #endif /* HAVE_DIRENT_H */ ],[ struct dirent d; int z; z = d.d_ino; ], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)]) AC_MSG_RESULT($bash_cv_dirent_has_dino) if test $bash_cv_dirent_has_dino = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_INO) fi ]) AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO, [AC_REQUIRE([AC_HEADER_DIRENT]) AC_MSG_CHECKING(for struct dirent.d_fileno) AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, [AC_TRY_COMPILE([ #include #include #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ #if defined(HAVE_DIRENT_H) # include #else # define dirent direct # ifdef HAVE_SYS_NDIR_H # include # endif /* SYSNDIR */ # ifdef HAVE_SYS_DIR_H # include # endif /* SYSDIR */ # ifdef HAVE_NDIR_H # include # endif #endif /* HAVE_DIRENT_H */ ],[ struct dirent d; int z; z = d.d_fileno; ], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) AC_MSG_RESULT($bash_cv_dirent_has_d_fileno) if test $bash_cv_dirent_has_d_fileno = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_FILENO) fi ]) AC_DEFUN(BASH_STRUCT_DIRENT_D_NAMLEN, [AC_REQUIRE([AC_HEADER_DIRENT]) AC_MSG_CHECKING(for struct dirent.d_namlen) AC_CACHE_VAL(bash_cv_dirent_has_d_namlen, [AC_TRY_COMPILE([ #include #include #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ #if defined(HAVE_DIRENT_H) # include #else # define dirent direct # ifdef HAVE_SYS_NDIR_H # include # endif /* SYSNDIR */ # ifdef HAVE_SYS_DIR_H # include # endif /* SYSDIR */ # ifdef HAVE_NDIR_H # include # endif #endif /* HAVE_DIRENT_H */ ],[ struct dirent d; int z; z = d.d_namlen; ], bash_cv_dirent_has_d_namlen=yes, bash_cv_dirent_has_d_namlen=no)]) AC_MSG_RESULT($bash_cv_dirent_has_d_namlen) if test $bash_cv_dirent_has_d_namlen = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_NAMLEN) fi ]) AC_DEFUN(BASH_STRUCT_TIMEVAL, [AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h) AC_CACHE_VAL(bash_cv_struct_timeval, [ AC_EGREP_HEADER(struct timeval, sys/time.h, bash_cv_struct_timeval=yes, AC_EGREP_HEADER(struct timeval, time.h, bash_cv_struct_timeval=yes, bash_cv_struct_timeval=no)) ]) AC_MSG_RESULT($bash_cv_struct_timeval) if test $bash_cv_struct_timeval = yes; then AC_DEFINE(HAVE_TIMEVAL) fi ]) AC_DEFUN(BASH_STRUCT_TIMEZONE, [AC_MSG_CHECKING(for struct timezone in sys/time.h and time.h) AC_CACHE_VAL(bash_cv_struct_timezone, [ AC_EGREP_HEADER(struct timezone, sys/time.h, bash_cv_struct_timezone=yes, AC_EGREP_HEADER(struct timezone, time.h, bash_cv_struct_timezone=yes, bash_cv_struct_timezone=no)) ]) AC_MSG_RESULT($bash_cv_struct_timezone) if test $bash_cv_struct_timezone = yes; then AC_DEFINE(HAVE_STRUCT_TIMEZONE) fi ]) AC_DEFUN(BASH_STRUCT_WINSIZE, [AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) AC_CACHE_VAL(bash_cv_struct_winsize_header, [AC_TRY_COMPILE([#include #include ], [struct winsize x;], bash_cv_struct_winsize_header=ioctl_h, [AC_TRY_COMPILE([#include #include ], [struct winsize x;], bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) ])]) if test $bash_cv_struct_winsize_header = ioctl_h; then AC_MSG_RESULT(sys/ioctl.h) AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) elif test $bash_cv_struct_winsize_header = termios_h; then AC_MSG_RESULT(termios.h) AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) else AC_MSG_RESULT(not found) fi ]) dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE, [AC_REQUIRE([AC_TYPE_SIGNAL]) AC_MSG_CHECKING(for type of signal functions) AC_CACHE_VAL(bash_cv_signal_vintage, [ AC_TRY_LINK([#include ],[ sigset_t ss; struct sigaction sa; sigemptyset(&ss); sigsuspend(&ss); sigaction(SIGINT, &sa, (struct sigaction *) 0); sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); ], bash_cv_signal_vintage=posix, [ AC_TRY_LINK([#include ], [ int mask = sigmask(SIGINT); sigsetmask(mask); sigblock(mask); sigpause(mask); ], bash_cv_signal_vintage=4.2bsd, [ AC_TRY_LINK([ #include RETSIGTYPE foo() { }], [ int mask = sigmask(SIGINT); sigset(SIGINT, foo); sigrelse(SIGINT); sighold(SIGINT); sigpause(SIGINT); ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7 )] )] ) ]) AC_MSG_RESULT($bash_cv_signal_vintage) if test "$bash_cv_signal_vintage" = posix; then AC_DEFINE(HAVE_POSIX_SIGNALS) elif test "$bash_cv_signal_vintage" = "4.2bsd"; then AC_DEFINE(HAVE_BSD_SIGNALS) elif test "$bash_cv_signal_vintage" = svr3; then AC_DEFINE(HAVE_USG_SIGHOLD) fi ]) dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process. AC_DEFUN(BASH_SYS_PGRP_SYNC, [AC_REQUIRE([AC_FUNC_GETPGRP]) AC_MSG_CHECKING(whether pgrps need synchronization) AC_CACHE_VAL(bash_cv_pgrp_pipe, [AC_TRY_RUN([ #ifdef HAVE_UNISTD_H # include #endif main() { # ifdef GETPGRP_VOID # define getpgID() getpgrp() # else # define getpgID() getpgrp(0) # define setpgid(x,y) setpgrp(x,y) # endif int pid1, pid2, fds[2]; int status; char ok; switch (pid1 = fork()) { case -1: exit(1); case 0: setpgid(0, getpid()); exit(0); } setpgid(pid1, pid1); sleep(2); /* let first child die */ if (pipe(fds) < 0) exit(2); switch (pid2 = fork()) { case -1: exit(3); case 0: setpgid(0, pid1); ok = getpgID() == pid1; write(fds[1], &ok, 1); exit(0); } setpgid(pid2, pid1); close(fds[1]); if (read(fds[0], &ok, 1) != 1) exit(4); wait(&status); wait(&status); exit(ok ? 0 : 5); } ], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) bash_cv_pgrp_pipe=no]) ]) AC_MSG_RESULT($bash_cv_pgrp_pipe) if test $bash_cv_pgrp_pipe = yes; then AC_DEFINE(PGRP_PIPE) fi ]) AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS, [AC_REQUIRE([AC_TYPE_SIGNAL]) AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, [AC_TRY_RUN([ #include #ifdef HAVE_UNISTD_H #include #endif typedef RETSIGTYPE sigfunc(); volatile int nsigint; #ifdef HAVE_POSIX_SIGNALS sigfunc * set_signal_handler(sig, handler) int sig; sigfunc *handler; { struct sigaction act, oact; act.sa_handler = handler; act.sa_flags = 0; sigemptyset (&act.sa_mask); sigemptyset (&oact.sa_mask); sigaction (sig, &act, &oact); return (oact.sa_handler); } #else #define set_signal_handler(s, h) signal(s, h) #endif RETSIGTYPE sigint(s) int s; { nsigint++; } main() { nsigint = 0; set_signal_handler(SIGINT, sigint); kill((int)getpid(), SIGINT); kill((int)getpid(), SIGINT); exit(nsigint != 2); } ], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no) bash_cv_must_reinstall_sighandlers=no] )]) AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers) if test $bash_cv_must_reinstall_sighandlers = yes; then AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) fi ]) dnl check that some necessary job control definitions are present AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING, [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING(for presence of necessary job control definitions) AC_CACHE_VAL(bash_cv_job_control_missing, [AC_TRY_COMPILE([ #include #ifdef HAVE_SYS_WAIT_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include /* add more tests in here as appropriate */ /* signal type */ #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) #error #endif /* signals and tty control. */ #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) #error #endif /* process control */ #if !defined (WNOHANG) || !defined (WUNTRACED) #error #endif /* Posix systems have tcgetpgrp and waitpid. */ #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) #error #endif #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) #error #endif /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) #error #endif ], , bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing )]) AC_MSG_RESULT($bash_cv_job_control_missing) if test $bash_cv_job_control_missing = missing; then AC_DEFINE(JOB_CONTROL_MISSING) fi ]) dnl check whether named pipes are present dnl this requires a previous check for mkfifo, but that is awkward to specify AC_DEFUN(BASH_SYS_NAMED_PIPES, [AC_MSG_CHECKING(for presence of named pipes) AC_CACHE_VAL(bash_cv_sys_named_pipes, [AC_TRY_RUN([ #include #include #ifdef HAVE_UNISTD_H #include #endif /* Add more tests in here as appropriate. */ main() { int fd, err; #if defined (HAVE_MKFIFO) exit (0); #endif #if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) exit (1); #endif #if defined (NeXT) exit (1); #endif err = mkdir("bash-aclocal", 0700); if (err < 0) { perror ("mkdir"); exit(1); } fd = mknod ("bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); if (fd == -1) { rmdir ("bash-aclocal"); exit (1); } close(fd); unlink ("bash-aclocal/sh-np-autoconf"); rmdir ("bash-aclocal"); exit(0); }], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing) bash_cv_sys_named_pipes=missing] )]) AC_MSG_RESULT($bash_cv_sys_named_pipes) if test $bash_cv_sys_named_pipes = missing; then AC_DEFINE(NAMED_PIPES_MISSING) fi ]) AC_DEFUN(BASH_SYS_DEFAULT_MAIL_DIR, [AC_MSG_CHECKING(for default mail directory) AC_CACHE_VAL(bash_cv_mail_dir, [if test -d /var/mail; then bash_cv_mail_dir=/var/mail elif test -d /var/spool/mail; then bash_cv_mail_dir=/var/spool/mail elif test -d /usr/mail; then bash_cv_mail_dir=/usr/mail elif test -d /usr/spool/mail; then bash_cv_mail_dir=/usr/spool/mail else bash_cv_mail_dir=unknown fi ]) AC_MSG_RESULT($bash_cv_mail_dir) AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir") ]) AC_DEFUN(BASH_HAVE_TIOCGWINSZ, [AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl, [AC_TRY_COMPILE([#include #include ], [int x = TIOCGWINSZ;], bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)]) AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl) if test $bash_cv_tiocgwinsz_in_ioctl = yes; then AC_DEFINE(GWINSZ_IN_SYS_IOCTL) fi ]) AC_DEFUN(BASH_HAVE_TIOCSTAT, [AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl, [AC_TRY_COMPILE([#include #include ], [int x = TIOCSTAT;], bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)]) AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl) if test $bash_cv_tiocstat_in_ioctl = yes; then AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) fi ]) AC_DEFUN(BASH_HAVE_FIONREAD, [AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) AC_CACHE_VAL(bash_cv_fionread_in_ioctl, [AC_TRY_COMPILE([#include #include ], [int x = FIONREAD;], bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)]) AC_MSG_RESULT($bash_cv_fionread_in_ioctl) if test $bash_cv_fionread_in_ioctl = yes; then AC_DEFINE(FIONREAD_IN_SYS_IOCTL) fi ]) dnl dnl See if speed_t is declared in . Some versions of linux dnl require a definition of speed_t each time is included, dnl but you can only get speed_t if you include (on some dnl versions) or (on others). dnl AC_DEFUN(BASH_CHECK_SPEED_T, [AC_MSG_CHECKING(for speed_t in sys/types.h) AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, [AC_TRY_COMPILE([#include ], [speed_t x;], bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)]) AC_MSG_RESULT($bash_cv_speed_t_in_sys_types) if test $bash_cv_speed_t_in_sys_types = yes; then AC_DEFINE(SPEED_T_IN_SYS_TYPES) fi ]) AC_DEFUN(BASH_CHECK_GETPW_FUNCS, [AC_MSG_CHECKING(whether getpw functions are declared in pwd.h) AC_CACHE_VAL(bash_cv_getpw_declared, [AC_EGREP_CPP(getpwuid, [ #include #ifdef HAVE_UNISTD_H # include #endif #include ], bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)]) AC_MSG_RESULT($bash_cv_getpw_declared) if test $bash_cv_getpw_declared = yes; then AC_DEFINE(HAVE_GETPW_DECLS) fi ]) AC_DEFUN(BASH_CHECK_DEV_FD, [AC_MSG_CHECKING(whether /dev/fd is available) AC_CACHE_VAL(bash_cv_dev_fd, [bash_cv_dev_fd="" if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then # check for systems like FreeBSD 5 that only provide /dev/fd/[012] if (exec test -r /dev/fd/3 3 #include ], [ int f; f = RLIMIT_DATA; ], bash_cv_kernel_rlimit=no, [AC_TRY_COMPILE([ #include #define _KERNEL #include #undef _KERNEL ], [ int f; f = RLIMIT_DATA; ], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] )]) AC_MSG_RESULT($bash_cv_kernel_rlimit) if test $bash_cv_kernel_rlimit = yes; then AC_DEFINE(RLIMIT_NEEDS_KERNEL) fi ]) dnl dnl Check for 64-bit off_t -- used for malloc alignment dnl dnl C does not allow duplicate case labels, so the compile will fail if dnl sizeof(off_t) is > 4. dnl AC_DEFUN(BASH_CHECK_OFF_T_64, [AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64, AC_TRY_COMPILE([ #ifdef HAVE_UNISTD_H #include #endif #include ],[ switch (0) case 0: case (sizeof (off_t) <= 4):; ], bash_cv_off_t_64=no, bash_cv_off_t_64=yes)) if test $bash_cv_off_t_64 = yes; then AC_DEFINE(HAVE_OFF_T_64) fi]) AC_DEFUN(BASH_CHECK_RTSIGS, [AC_MSG_CHECKING(for unusable real-time signals due to large values) AC_CACHE_VAL(bash_cv_unusable_rtsigs, [AC_TRY_RUN([ #include #include #ifndef NSIG # define NSIG 64 #endif main () { int n_sigs = 2 * NSIG; #ifdef SIGRTMIN int rtmin = SIGRTMIN; #else int rtmin = 0; #endif exit(rtmin < n_sigs); }], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no, [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes) bash_cv_unusable_rtsigs=yes] )]) AC_MSG_RESULT($bash_cv_unusable_rtsigs) if test $bash_cv_unusable_rtsigs = yes; then AC_DEFINE(UNUSABLE_RT_SIGNALS) fi ]) dnl dnl check for availability of multibyte characters and functions dnl dnl geez, I wish I didn't have to check for all of this stuff separately dnl AC_DEFUN(BASH_CHECK_MULTIBYTE, [ AC_CHECK_HEADERS(wctype.h) AC_CHECK_HEADERS(wchar.h) AC_CHECK_HEADERS(langinfo.h) AC_CHECK_HEADERS(mbstr.h) AC_CHECK_FUNC(mbrlen, AC_DEFINE(HAVE_MBRLEN)) AC_CHECK_FUNC(mbscasecmp, AC_DEFINE(HAVE_MBSCMP)) AC_CHECK_FUNC(mbscmp, AC_DEFINE(HAVE_MBSCMP)) AC_CHECK_FUNC(mbsnrtowcs, AC_DEFINE(HAVE_MBSNRTOWCS)) AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) AC_REPLACE_FUNCS(mbschr) AC_CHECK_FUNC(wcrtomb, AC_DEFINE(HAVE_WCRTOMB)) AC_CHECK_FUNC(wcscoll, AC_DEFINE(HAVE_WCSCOLL)) AC_CHECK_FUNC(wcsdup, AC_DEFINE(HAVE_WCSDUP)) AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) AC_CHECK_FUNC(wctype, AC_DEFINE(HAVE_WCTYPE)) AC_REPLACE_FUNCS(wcswidth) dnl checks for both mbrtowc and mbstate_t AC_FUNC_MBRTOWC if test $ac_cv_func_mbrtowc = yes; then AC_DEFINE(HAVE_MBSTATE_T) fi AC_CHECK_FUNCS(iswlower iswupper towlower towupper iswctype) AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, [AC_TRY_LINK( [#include ], [char* cs = nl_langinfo(CODESET);], bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)]) if test $bash_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET) fi dnl check for wchar_t in AC_CACHE_CHECK([for wchar_t in wchar.h], bash_cv_type_wchar_t, [AC_TRY_COMPILE( [#include ], [ wchar_t foo; foo = 0; ], bash_cv_type_wchar_t=yes, bash_cv_type_wchar_t=no)]) if test $bash_cv_type_wchar_t = yes; then AC_DEFINE(HAVE_WCHAR_T, 1, [systems should define this type here]) fi dnl check for wctype_t in AC_CACHE_CHECK([for wctype_t in wctype.h], bash_cv_type_wctype_t, [AC_TRY_COMPILE( [#include ], [ wctype_t foo; foo = 0; ], bash_cv_type_wctype_t=yes, bash_cv_type_wctype_t=no)]) if test $bash_cv_type_wctype_t = yes; then AC_DEFINE(HAVE_WCTYPE_T, 1, [systems should define this type here]) fi dnl check for wint_t in AC_CACHE_CHECK([for wint_t in wctype.h], bash_cv_type_wint_t, [AC_TRY_COMPILE( [#include ], [ wint_t foo; foo = 0; ], bash_cv_type_wint_t=yes, bash_cv_type_wint_t=no)]) if test $bash_cv_type_wint_t = yes; then AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here]) fi dnl check for broken wcwidth AC_CACHE_CHECK([for wcwidth broken with unicode combining characters], bash_cv_wcwidth_broken, [AC_TRY_RUN([ #include #include #include #include #include main(c, v) int c; char **v; { int w; setlocale(LC_ALL, "en_US.UTF-8"); w = wcwidth (0x0301); exit (w == 0); /* exit 0 if wcwidth broken */ } ], bash_cv_wcwidth_broken=yes, bash_cv_wcwidth_broken=no, bash_cv_wcwidth_broken=no)]) if test "$bash_cv_wcwidth_broken" = yes; then AC_DEFINE(WCWIDTH_BROKEN, 1, [wcwidth is usually not broken]) fi if test "$am_cv_func_iconv" = yes; then OLDLIBS="$LIBS" LIBS="$LIBS $LIBINTL $LIBICONV" AC_CHECK_FUNCS(locale_charset) LIBS="$OLDLIBS" fi AC_CHECK_SIZEOF(wchar_t, 4) ]) dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB dnl require: dnl AC_PROG_CC dnl BASH_CHECK_LIB_TERMCAP AC_DEFUN([RL_LIB_READLINE_VERSION], [ AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) AC_MSG_CHECKING([version of installed readline library]) # What a pain in the ass this is. # save cpp and ld options _save_CFLAGS="$CFLAGS" _save_LDFLAGS="$LDFLAGS" _save_LIBS="$LIBS" # Don't set ac_cv_rl_prefix if the caller has already assigned a value. This # allows the caller to do something like $_rl_prefix=$withval if the user # specifies --with-installed-readline=PREFIX as an argument to configure if test -z "$ac_cv_rl_prefix"; then test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} fi eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib LIBS="$LIBS -lreadline ${TERMCAP_LIB}" CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" AC_CACHE_VAL(ac_cv_rl_version, [AC_TRY_RUN([ #include #include extern int rl_gnu_readline_p; main() { FILE *fp; fp = fopen("conftest.rlv", "w"); if (fp == 0) exit(1); if (rl_gnu_readline_p != 1) fprintf(fp, "0.0\n"); else fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); fclose(fp); exit(0); } ], ac_cv_rl_version=`cat conftest.rlv`, ac_cv_rl_version='0.0', ac_cv_rl_version='8.0')]) CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" LIBS="$_save_LIBS" RL_MAJOR=0 RL_MINOR=0 # ( case "$ac_cv_rl_version" in 2*|3*|4*|5*|6*|7*|8*|9*) RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'` ;; esac # ((( case $RL_MAJOR in [[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; [[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; *) _RL_MAJOR=00 ;; esac # ((( case $RL_MINOR in [[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; [[0-9]]) _RL_MINOR=0$RL_MINOR ;; *) _RL_MINOR=00 ;; esac RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" # Readline versions greater than 4.2 have these defines in readline.h if test $ac_cv_rl_version = '0.0' ; then AC_MSG_WARN([Could not test version of installed readline library.]) elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then # set these for use by the caller RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir AC_MSG_RESULT($ac_cv_rl_version) else AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) AC_SUBST(RL_VERSION) AC_SUBST(RL_MAJOR) AC_SUBST(RL_MINOR) # set these for use by the caller RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir AC_MSG_RESULT($ac_cv_rl_version) fi ]) AC_DEFUN(BASH_FUNC_CTYPE_NONASCII, [ AC_MSG_CHECKING(whether the ctype macros accept non-ascii characters) AC_CACHE_VAL(bash_cv_func_ctype_nonascii, [AC_TRY_RUN([ #ifdef HAVE_LOCALE_H #include #endif #include #include main(c, v) int c; char *v[]; { char *deflocale; unsigned char x; int r1, r2; #ifdef HAVE_SETLOCALE /* We take a shot here. If that locale is not known, try the system default. We try this one because '\342' (226) is known to be a printable character in that locale. */ deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); if (deflocale == 0) deflocale = setlocale(LC_ALL, ""); #endif x = '\342'; r1 = isprint(x); x -= 128; r2 = isprint(x); exit (r1 == 0 || r2 == 0); } ], bash_cv_func_ctype_nonascii=yes, bash_cv_func_ctype_nonascii=no, [AC_MSG_WARN(cannot check ctype macros if cross compiling -- defaulting to no) bash_cv_func_ctype_nonascii=no] )]) AC_MSG_RESULT($bash_cv_func_ctype_nonascii) if test $bash_cv_func_ctype_nonascii = yes; then AC_DEFINE(CTYPE_NON_ASCII) fi ]) AC_DEFUN(BASH_CHECK_WCONTINUED, [ AC_MSG_CHECKING(whether WCONTINUED flag to waitpid is unavailable or available but broken) AC_CACHE_VAL(bash_cv_wcontinued_broken, [AC_TRY_RUN([ #include #include #include #include #ifndef errno extern int errno; #endif main() { int x; x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED); if (x == -1 && errno == EINVAL) exit (1); else exit (0); } ], bash_cv_wcontinued_broken=no,bash_cv_wcontinued_broken=yes, [AC_MSG_WARN(cannot check WCONTINUED if cross compiling -- defaulting to no) bash_cv_wcontinued_broken=no] )]) AC_MSG_RESULT($bash_cv_wcontinued_broken) if test $bash_cv_wcontinued_broken = yes; then AC_DEFINE(WCONTINUED_BROKEN) fi ]) dnl dnl tests added for bashdb dnl AC_DEFUN([AM_PATH_LISPDIR], [AC_ARG_WITH(lispdir, AC_HELP_STRING([--with-lispdir], [override the default lisp directory]), [ lispdir="$withval" AC_MSG_CHECKING([where .elc files should go]) AC_MSG_RESULT([$lispdir])], [ # If set to t, that means we are running in a shell under Emacs. # If you have an Emacs named "t", then use the full path. test x"$EMACS" = xt && EMACS= AC_CHECK_PROGS(EMACS, emacs xemacs, no) if test $EMACS != "no"; then if test x${lispdir+set} != xset; then AC_CACHE_CHECK([where .elc files should go], [am_cv_lispdir], [dnl am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'` if test -z "$am_cv_lispdir"; then am_cv_lispdir='${datadir}/emacs/site-lisp' fi ]) lispdir="$am_cv_lispdir" fi fi ]) AC_SUBST(lispdir) ]) dnl dnl tests added for gettext dnl # codeset.m4 serial AM1 (gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, [AC_TRY_LINK([#include ], [char* cs = nl_langinfo(CODESET);], am_cv_langinfo_codeset=yes, am_cv_langinfo_codeset=no) ]) if test $am_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET, 1, [Define if you have and nl_langinfo(CODESET).]) fi ]) # gettext.m4 serial 20 (gettext-0.12) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define(gt_included_intl, ifelse([$1], [external], [no], [yes])) define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Set USE_NLS. AM_NLS ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. dnl Add a version number to the cache macros. define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, [AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no)]) if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], gt_cv_func_gnugettext_libintl, [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], gt_cv_func_gnugettext_libintl=yes, gt_cv_func_gnugettext_libintl=no) dnl Now see whether libintl exists and depends on libiconv. if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext_libintl=yes ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if test "$gt_cv_func_gnugettext_libc" = "yes" \ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl For backward compatibility. Some Makefiles may be using this. if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST(INTLOBJS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl Checks for all prerequisites of the intl subdirectory, dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. AC_DEFUN([AM_INTL_SUBDIR], [ AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_ISC_POSIX])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([jm_GLIBC21])dnl AC_REQUIRE([gt_INTDIV0])dnl AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl AC_REQUIRE([gt_INTTYPES_PRI])dnl AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ __fsetlocking]) AM_ICONV AM_LANGINFO_CODESET if test $ac_cv_header_locale_h = yes; then AM_LC_MESSAGES fi dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least dnl bison-1.26 because earlier versions generate a plural.c that doesn't dnl compile. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the dnl files or have a broken "make" program, hence the plural.c rule will dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not dnl present or too old. AC_CHECK_PROGS([INTLBISON], [bison]) if test -z "$INTLBISON"; then ac_verc_fail=yes else dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac AC_MSG_RESULT([$ac_prog_version]) fi if test $ac_verc_fail = yes; then INTLBISON=: fi ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) # glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # Test for the GNU C Library, version 2.1 or newer. # From Bruno Haible. AC_DEFUN([jm_GLIBC21], [ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, ac_cv_gnu_library_2_1, [AC_EGREP_CPP([Lucky GNU user], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif ], ac_cv_gnu_library_2_1=yes, ac_cv_gnu_library_2_1=no) ] ) AC_SUBST(GLIBC21) GLIBC21="$ac_cv_gnu_library_2_1" ] ) # iconv.m4 serial AM4 (gettext-0.11.3) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) # intdiv0.m4 serial 1 (gettext-0.11.3) dnl Copyright (C) 2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([gt_INTDIV0], [ AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], gt_cv_int_divbyzero_sigfpe, [ AC_TRY_RUN([ #include #include static void #ifdef __cplusplus sigfpe_handler (int sig) #else sigfpe_handler (sig) int sig; #endif { /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ exit (sig != SIGFPE); } int x = 1; int y = 0; int z; int nan; int main () { signal (SIGFPE, sigfpe_handler); /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) signal (SIGTRAP, sigfpe_handler); #endif /* Linux/SPARC yields signal SIGILL. */ #if defined (__sparc__) && defined (__linux__) signal (SIGILL, sigfpe_handler); #endif z = x / y; nan = y / y; exit (1); } ], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, [ # Guess based on the CPU. case "$host_cpu" in alpha* | i[34567]86 | m68k | s390*) gt_cv_int_divbyzero_sigfpe="guessing yes";; *) gt_cv_int_divbyzero_sigfpe="guessing no";; esac ]) ]) case "$gt_cv_int_divbyzero_sigfpe" in *yes) value=1;; *) value=0;; esac AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, [Define if integer division by zero raises signal SIGFPE.]) ]) # inttypes.m4 serial 1 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_INTTYPES_H if exists and doesn't clash with # . AC_DEFUN([gt_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, [ AC_TRY_COMPILE( [#include #include ], [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) ]) if test $gt_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, [Define if exists and doesn't clash with .]) fi ]) # inttypes_h.m4 serial 5 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([jm_AC_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_inttypes_h=yes, jm_ac_cv_header_inttypes_h=no)]) if test $jm_ac_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) # inttypes-pri.m4 serial 1 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. # Define PRI_MACROS_BROKEN if exists and defines the PRI* # macros to non-string values. This is the case on AIX 4.3.3. AC_DEFUN([gt_INTTYPES_PRI], [ AC_REQUIRE([gt_HEADER_INTTYPES_H]) if test $gt_cv_header_inttypes_h = yes; then AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], gt_cv_inttypes_pri_broken, [ AC_TRY_COMPILE([#include #ifdef PRId32 char *p = PRId32; #endif ], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) ]) fi if test "$gt_cv_inttypes_pri_broken" = yes; then AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, [Define if exists and defines unusable PRI* macros.]) fi ]) # isc-posix.m4 serial 2 (gettext-0.11.2) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # This file is not needed with autoconf-2.53 and newer. Remove it in 2005. # This test replaces the one in autoconf. # Currently this macro should have the same name as the autoconf macro # because gettext's gettext.m4 (distributed in the automake package) # still uses it. Otherwise, the use in gettext.m4 makes autoheader # give these diagnostics: # configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX # configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX undefine([AC_ISC_POSIX]) AC_DEFUN([AC_ISC_POSIX], [ dnl This test replaces the obsolescent AC_ISC_POSIX kludge. AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) ] ) # lcmessage.m4 serial 3 (gettext-0.11.3) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995. # Check whether LC_MESSAGES is available in . AC_DEFUN([AM_LC_MESSAGES], [ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi ]) # lib-ld.m4 serial 2 (gettext-0.12) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then acl_cv_prog_gnu_ld=yes else acl_cv_prog_gnu_ld=no fi]) with_gnu_ld=$acl_cv_prog_gnu_ld ]) dnl From libtool-1.4. Sets the variable LD. AC_DEFUN([AC_LIB_PROG_LD], [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) # lib-link.m4 serial 4 (gettext-0.12) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) # lib-prefix.m4 serial 2 (gettext-0.12) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) # nls.m4 serial 1 (gettext-0.12) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ]) AC_DEFUN([AM_MKINSTALLDIRS], [ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but $(top_srcdir). dnl Try to locate it. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) ]) # po.m4 serial 1 (gettext-0.12) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AM_NLS])dnl dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU msgfmt. if test "$GMSGFMT" != ":"; then dnl If it is no GNU msgfmt we define it as : so that the dnl Makefiles still can work. if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` AC_MSG_RESULT( [found $GMSGFMT program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po fi AC_OUTPUT_COMMANDS([ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= GMOFILES= UPDATEPOFILES= DUMMYPOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) # progtest.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # stdint_h.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_STDINT_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([jm_AC_HEADER_STDINT_H], [ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_stdint_h=yes, jm_ac_cv_header_stdint_h=no)]) if test $jm_ac_cv_header_stdint_h = yes; then AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) # uintmax_t.m4 serial 7 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. AC_PREREQ(2.13) # Define uintmax_t to 'unsigned long' or 'unsigned long long' # if it is not already defined in or . AC_DEFUN([jm_AC_TYPE_UINTMAX_T], [ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) test $ac_cv_type_unsigned_long_long = yes \ && ac_type='unsigned long long' \ || ac_type='unsigned long' AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, [Define to unsigned long or unsigned long long if and don't define.]) else AC_DEFINE(HAVE_UINTMAX_T, 1, [Define if you have the 'uintmax_t' type in or .]) fi ]) # ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], [ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], [unsigned long long ullmax = (unsigned long long) -1; return ull << i | ull >> i | ullmax / ull | ullmax % ull;], ac_cv_type_unsigned_long_long=yes, ac_cv_type_unsigned_long_long=no)]) if test $ac_cv_type_unsigned_long_long = yes; then AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, [Define if you have the unsigned long long type.]) fi ]) dnl From gnulib AC_DEFUN([BASH_FUNC_FPURGE], [ AC_CHECK_FUNCS_ONCE([fpurge]) AC_CHECK_FUNCS_ONCE([__fpurge]) AC_CHECK_DECLS([fpurge], , , [#include ]) ]) AC_DEFUN([BASH_FUNC_SNPRINTF], [ AC_CHECK_FUNCS_ONCE([snprintf]) if test X$ac_cv_func_snprintf = Xyes; then AC_CACHE_CHECK([for standard-conformant snprintf], [bash_cv_func_snprintf], [AC_TRY_RUN([ #include main() { int n; n = snprintf (0, 0, "%s", "0123456"); exit(n != 7); } ], bash_cv_func_snprintf=yes, bash_cv_func_snprintf=no, [AC_MSG_WARN([cannot check standard snprintf if cross-compiling]) bash_cv_func_snprintf=yes] )]) if test $bash_cv_func_snprintf = no; then ac_cv_func_snprintf=no fi fi if test $ac_cv_func_snprintf = no; then AC_DEFINE(HAVE_SNPRINTF, 0, [Define if you have a standard-conformant snprintf function.]) fi ]) AC_DEFUN([BASH_FUNC_VSNPRINTF], [ AC_CHECK_FUNCS_ONCE([vsnprintf]) if test X$ac_cv_func_vsnprintf = Xyes; then AC_CACHE_CHECK([for standard-conformant vsnprintf], [bash_cv_func_vsnprintf], [AC_TRY_RUN([ #if HAVE_STDARG_H #include #else #include #endif #include #include static int #if HAVE_STDARG_H foo(const char *fmt, ...) #else foo(format, va_alist) const char *format; va_dcl #endif { va_list args; int n; #if HAVE_STDARG_H va_start(args, fmt); #else va_start(args); #endif n = vsnprintf(0, 0, fmt, args); va_end (args); return n; } main() { int n; n = foo("%s", "0123456"); exit(n != 7); } ], bash_cv_func_vsnprintf=yes, bash_cv_func_vsnprintf=no, [AC_MSG_WARN([cannot check standard vsnprintf if cross-compiling]) bash_cv_func_vsnprintf=yes] )]) if test $bash_cv_func_vsnprintf = no; then ac_cv_func_vsnprintf=no fi fi if test $ac_cv_func_vsnprintf = no; then AC_DEFINE(HAVE_VSNPRINTF, 0, [Define if you have a standard-conformant vsnprintf function.]) fi ]) AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET, [AC_MSG_CHECKING(for offset of exit status in return status from wait) AC_CACHE_VAL(bash_cv_wexitstatus_offset, [AC_TRY_RUN([ #include #include #include main(c, v) int c; char **v; { pid_t pid, p; int s, i, n; s = 0; pid = fork(); if (pid == 0) exit (42); /* wait for the process */ p = wait(&s); if (p != pid) exit (255); /* crack s */ for (i = 0; i < (sizeof(s) - 8); i++) { n = (s >> i) & 0xff; if (n == 42) exit (i); } exit (254); } ], bash_cv_wexitstatus_offset=0, bash_cv_wexitstatus_offset=$?, [AC_MSG_WARN(cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0) bash_cv_wexitstatus_offset=0] )]) if test "$bash_cv_wexitstatus_offset" -gt 32 ; then AC_MSG_WARN(bad exit status from test program -- defaulting to 0) bash_cv_wexitstatus_offset=0 fi AC_MSG_RESULT($bash_cv_wexitstatus_offset) AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset of exit status in wait status word]) ]) AC_DEFUN([BASH_FUNC_SBRK], [ AC_CHECK_FUNCS_ONCE([sbrk]) if test X$ac_cv_func_sbrk = Xyes; then AC_CACHE_CHECK([for working sbrk], [bash_cv_func_sbrk], [AC_TRY_RUN([ #include #include int main(int c, char **v) { void *x; x = sbrk (4096); exit ((x == (void *)-1) ? 1 : 0); } ], bash_cv_func_sbrk=yes, bash_cv_func_snprintf=sbrk, [AC_MSG_WARN([cannot check working sbrk if cross-compiling]) bash_cv_func_sbrk=yes] )]) if test $bash_cv_func_sbrk = no; then ac_cv_func_sbrk=no fi fi if test $ac_cv_func_sbrk = no; then AC_DEFINE(HAVE_SBRK, 0, [Define if you have a working sbrk function.]) fi ]) AC_DEFUN(BASH_FUNC_FNMATCH_EQUIV_FALLBACK, [AC_MSG_CHECKING(whether fnmatch can be used to check bracket equivalence classes) AC_CACHE_VAL(bash_cv_fnmatch_equiv_fallback, [AC_TRY_RUN([ #include #include #include #include #include char *pattern = "[[=a=]]"; /* char *string = "ä"; */ unsigned char string[4] = { '\xc3', '\xa4', '\0' }; int main (int c, char **v) { setlocale (LC_ALL, "de_DE.UTF-8"); if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH) exit (0); exit (1); } ], bash_cv_fnmatch_equiv_fallback=yes, bash_cv_fnmatch_equiv_fallback=no, [AC_MSG_WARN(cannot check fnmatch if cross compiling -- defaulting to no) bash_cv_fnmatch_equiv_fallback=no] )]) AC_MSG_RESULT($bash_cv_fnmatch_equiv_fallback) if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then bash_cv_fnmatch_equiv_value=1 else bash_cv_fnmatch_equiv_value=0 fi AC_DEFINE_UNQUOTED([FNMATCH_EQUIV_FALLBACK], [$bash_cv_fnmatch_equiv_value], [Whether fnmatch can be used for bracket equivalence classes]) ]) readline-8.0/rlshell.h000664 000436 000024 00000002352 11130207321 015035 0ustar00chetstaff000000 000000 /* rlshell.h -- utility functions normally provided by bash. */ /* Copyright (C) 1999-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_RL_SHELL_H_) #define _RL_SHELL_H_ #include "rlstdc.h" extern char *sh_single_quote PARAMS((char *)); extern void sh_set_lines_and_columns PARAMS((int, int)); extern char *sh_get_env_value PARAMS((const char *)); extern char *sh_get_home_dir PARAMS((void)); extern int sh_unset_nodelay_mode PARAMS((int)); #endif /* _RL_SHELL_H_ */ readline-8.0/examples/000775 000436 000000 00000000000 13413164026 015040 5ustar00chetwheel000000 000000 readline-8.0/shlib/000775 000436 000000 00000000000 13413164025 014322 5ustar00chetwheel000000 000000 readline-8.0/histexpand.c000644 000436 000120 00000122535 13347277545 015553 0ustar00chetadmin000000 000000 /* histexpand.c -- history expansion. */ /* Copyright (C) 1989-2018 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. History is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. History is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with History. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_UNISTD_H) # ifndef _MINIX # include # endif # include #endif #include "rlmbutil.h" #include "history.h" #include "histlib.h" #include "chardefs.h" #include "rlshell.h" #include "xmalloc.h" #define HISTORY_WORD_DELIMITERS " \t\n;&()|<>" #define HISTORY_QUOTE_CHARACTERS "\"'`" #define HISTORY_EVENT_DELIMITERS "^$*%-" #define slashify_in_quotes "\\`\"$" #define fielddelim(c) (whitespace(c) || (c) == '\n') typedef int _hist_search_func_t PARAMS((const char *, int)); static char error_pointer; static char *subst_lhs; static char *subst_rhs; static int subst_lhs_len; static int subst_rhs_len; /* Characters that delimit history event specifications and separate event specifications from word designators. Static for now */ static char *history_event_delimiter_chars = HISTORY_EVENT_DELIMITERS; static char *get_history_word_specifier PARAMS((char *, char *, int *)); static int history_tokenize_word PARAMS((const char *, int)); static char **history_tokenize_internal PARAMS((const char *, int, int *)); static char *history_substring PARAMS((const char *, int, int)); static void freewords PARAMS((char **, int)); static char *history_find_word PARAMS((char *, int)); static char *quote_breaks PARAMS((char *)); /* Variables exported by this file. */ /* The character that represents the start of a history expansion request. This is usually `!'. */ char history_expansion_char = '!'; /* The character that invokes word substitution if found at the start of a line. This is usually `^'. */ char history_subst_char = '^'; /* During tokenization, if this character is seen as the first character of a word, then it, and all subsequent characters upto a newline are ignored. For a Bourne shell, this should be '#'. Bash special cases the interactive comment character to not be a comment delimiter. */ char history_comment_char = '\0'; /* The list of characters which inhibit the expansion of text if found immediately following history_expansion_char. */ char *history_no_expand_chars = " \t\n\r="; /* If set to a non-zero value, single quotes inhibit history expansion. The default is 0. */ int history_quotes_inhibit_expansion = 0; /* Used to split words by history_tokenize_internal. */ char *history_word_delimiters = HISTORY_WORD_DELIMITERS; /* If set, this points to a function that is called to verify that a particular history expansion should be performed. */ rl_linebuf_func_t *history_inhibit_expansion_function; int history_quoting_state = 0; /* **************************************************************** */ /* */ /* History Expansion */ /* */ /* **************************************************************** */ /* Hairy history expansion on text, not tokens. This is of general use, and thus belongs in this library. */ /* The last string searched for by a !?string? search. */ static char *search_string; /* The last string matched by a !?string? search. */ static char *search_match; /* Return the event specified at TEXT + OFFSET modifying OFFSET to point to after the event specifier. Just a pointer to the history line is returned; NULL is returned in the event of a bad specifier. You pass STRING with *INDEX equal to the history_expansion_char that begins this specification. DELIMITING_QUOTE is a character that is allowed to end the string specification for what to search for in addition to the normal characters `:', ` ', `\t', `\n', and sometimes `?'. So you might call this function like: line = get_history_event ("!echo:p", &index, 0); */ char * get_history_event (const char *string, int *caller_index, int delimiting_quote) { register int i; register char c; HIST_ENTRY *entry; int which, sign, local_index, substring_okay; _hist_search_func_t *search_func; char *temp; /* The event can be specified in a number of ways. !! the previous command !n command line N !-n current command-line minus N !str the most recent command starting with STR !?str[?] the most recent command containing STR All values N are determined via HISTORY_BASE. */ i = *caller_index; if (string[i] != history_expansion_char) return ((char *)NULL); /* Move on to the specification. */ i++; sign = 1; substring_okay = 0; #define RETURN_ENTRY(e, w) \ return ((e = history_get (w)) ? e->line : (char *)NULL) /* Handle !! case. */ if (string[i] == history_expansion_char) { i++; which = history_base + (history_length - 1); *caller_index = i; RETURN_ENTRY (entry, which); } /* Hack case of numeric line specification. */ if (string[i] == '-') { sign = -1; i++; } if (_rl_digit_p (string[i])) { /* Get the extent of the digits and compute the value. */ for (which = 0; _rl_digit_p (string[i]); i++) which = (which * 10) + _rl_digit_value (string[i]); *caller_index = i; if (sign < 0) which = (history_length + history_base) - which; RETURN_ENTRY (entry, which); } /* This must be something to search for. If the spec begins with a '?', then the string may be anywhere on the line. Otherwise, the string must be found at the start of a line. */ if (string[i] == '?') { substring_okay++; i++; } /* Only a closing `?' or a newline delimit a substring search string. */ for (local_index = i; c = string[i]; i++) { #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { int v; mbstate_t ps; memset (&ps, 0, sizeof (mbstate_t)); /* These produce warnings because we're passing a const string to a function that takes a non-const string. */ _rl_adjust_point ((char *)string, i, &ps); if ((v = _rl_get_char_len ((char *)string + i, &ps)) > 1) { i += v - 1; continue; } } #endif /* HANDLE_MULTIBYTE */ if ((!substring_okay && (whitespace (c) || c == ':' || (history_event_delimiter_chars && member (c, history_event_delimiter_chars)) || (history_search_delimiter_chars && member (c, history_search_delimiter_chars)) || string[i] == delimiting_quote)) || string[i] == '\n' || (substring_okay && string[i] == '?')) break; } which = i - local_index; temp = (char *)xmalloc (1 + which); if (which) strncpy (temp, string + local_index, which); temp[which] = '\0'; if (substring_okay && string[i] == '?') i++; *caller_index = i; #define FAIL_SEARCH() \ do { \ history_offset = history_length; xfree (temp) ; return (char *)NULL; \ } while (0) /* If there is no search string, try to use the previous search string, if one exists. If not, fail immediately. */ if (*temp == '\0' && substring_okay) { if (search_string) { xfree (temp); temp = savestring (search_string); } else FAIL_SEARCH (); } search_func = substring_okay ? history_search : history_search_prefix; while (1) { local_index = (*search_func) (temp, -1); if (local_index < 0) FAIL_SEARCH (); if (local_index == 0 || substring_okay) { entry = current_history (); if (entry == 0) FAIL_SEARCH (); history_offset = history_length; /* If this was a substring search, then remember the string that we matched for word substitution. */ if (substring_okay) { FREE (search_string); search_string = temp; FREE (search_match); search_match = history_find_word (entry->line, local_index); } else xfree (temp); return (entry->line); } if (history_offset) history_offset--; else FAIL_SEARCH (); } #undef FAIL_SEARCH #undef RETURN_ENTRY } /* Function for extracting single-quoted strings. Used for inhibiting history expansion within single quotes. */ /* Extract the contents of STRING as if it is enclosed in single quotes. SINDEX, when passed in, is the offset of the character immediately following the opening single quote; on exit, SINDEX is left pointing to the closing single quote. FLAGS currently used to allow backslash to escape a single quote (e.g., for bash $'...'). */ static void hist_string_extract_single_quoted (char *string, int *sindex, int flags) { register int i; for (i = *sindex; string[i] && string[i] != '\''; i++) { if ((flags & 1) && string[i] == '\\' && string[i+1]) i++; } *sindex = i; } static char * quote_breaks (char *s) { register char *p, *r; char *ret; int len = 3; for (p = s; p && *p; p++, len++) { if (*p == '\'') len += 3; else if (whitespace (*p) || *p == '\n') len += 2; } r = ret = (char *)xmalloc (len); *r++ = '\''; for (p = s; p && *p; ) { if (*p == '\'') { *r++ = '\''; *r++ = '\\'; *r++ = '\''; *r++ = '\''; p++; } else if (whitespace (*p) || *p == '\n') { *r++ = '\''; *r++ = *p++; *r++ = '\''; } else *r++ = *p++; } *r++ = '\''; *r = '\0'; return ret; } static char * hist_error(char *s, int start, int current, int errtype) { char *temp; const char *emsg; int ll, elen; ll = current - start; switch (errtype) { case EVENT_NOT_FOUND: emsg = "event not found"; elen = 15; break; case BAD_WORD_SPEC: emsg = "bad word specifier"; elen = 18; break; case SUBST_FAILED: emsg = "substitution failed"; elen = 19; break; case BAD_MODIFIER: emsg = "unrecognized history modifier"; elen = 29; break; case NO_PREV_SUBST: emsg = "no previous substitution"; elen = 24; break; default: emsg = "unknown expansion error"; elen = 23; break; } temp = (char *)xmalloc (ll + elen + 3); strncpy (temp, s + start, ll); temp[ll] = ':'; temp[ll + 1] = ' '; strcpy (temp + ll + 2, emsg); return (temp); } /* Get a history substitution string from STR starting at *IPTR and return it. The length is returned in LENPTR. A backslash can quote the delimiter. If the string is the empty string, the previous pattern is used. If there is no previous pattern for the lhs, the last history search string is used. If IS_RHS is 1, we ignore empty strings and set the pattern to "" anyway. subst_lhs is not changed if the lhs is empty; subst_rhs is allowed to be set to the empty string. */ static char * get_subst_pattern (char *str, int *iptr, int delimiter, int is_rhs, int *lenptr) { register int si, i, j, k; char *s; #if defined (HANDLE_MULTIBYTE) mbstate_t ps; #endif s = (char *)NULL; i = *iptr; #if defined (HANDLE_MULTIBYTE) memset (&ps, 0, sizeof (mbstate_t)); _rl_adjust_point (str, i, &ps); #endif for (si = i; str[si] && str[si] != delimiter; si++) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { int v; if ((v = _rl_get_char_len (str + si, &ps)) > 1) si += v - 1; else if (str[si] == '\\' && str[si + 1] == delimiter) si++; } else #endif /* HANDLE_MULTIBYTE */ if (str[si] == '\\' && str[si + 1] == delimiter) si++; if (si > i || is_rhs) { s = (char *)xmalloc (si - i + 1); for (j = 0, k = i; k < si; j++, k++) { /* Remove a backslash quoting the search string delimiter. */ if (str[k] == '\\' && str[k + 1] == delimiter) k++; s[j] = str[k]; } s[j] = '\0'; if (lenptr) *lenptr = j; } i = si; if (str[i]) i++; *iptr = i; return s; } static void postproc_subst_rhs (void) { char *new; int i, j, new_size; new = (char *)xmalloc (new_size = subst_rhs_len + subst_lhs_len); for (i = j = 0; i < subst_rhs_len; i++) { if (subst_rhs[i] == '&') { if (j + subst_lhs_len >= new_size) new = (char *)xrealloc (new, (new_size = new_size * 2 + subst_lhs_len)); strcpy (new + j, subst_lhs); j += subst_lhs_len; } else { /* a single backslash protects the `&' from lhs interpolation */ if (subst_rhs[i] == '\\' && subst_rhs[i + 1] == '&') i++; if (j >= new_size) new = (char *)xrealloc (new, new_size *= 2); new[j++] = subst_rhs[i]; } } new[j] = '\0'; xfree (subst_rhs); subst_rhs = new; subst_rhs_len = j; } /* Expand the bulk of a history specifier starting at STRING[START]. Returns 0 if everything is OK, -1 if an error occurred, and 1 if the `p' modifier was supplied and the caller should just print the returned string. Returns the new index into string in *END_INDEX_PTR, and the expanded specifier in *RET_STRING. */ /* need current line for !# */ static int history_expand_internal (char *string, int start, int qc, int *end_index_ptr, char **ret_string, char *current_line) { int i, n, starting_index; int substitute_globally, subst_bywords, want_quotes, print_only; char *event, *temp, *result, *tstr, *t, c, *word_spec; int result_len; #if defined (HANDLE_MULTIBYTE) mbstate_t ps; memset (&ps, 0, sizeof (mbstate_t)); #endif result = (char *)xmalloc (result_len = 128); i = start; /* If it is followed by something that starts a word specifier, then !! is implied as the event specifier. */ if (member (string[i + 1], ":$*%^")) { char fake_s[3]; int fake_i = 0; i++; fake_s[0] = fake_s[1] = history_expansion_char; fake_s[2] = '\0'; event = get_history_event (fake_s, &fake_i, 0); } else if (string[i + 1] == '#') { i += 2; event = current_line; } else event = get_history_event (string, &i, qc); if (event == 0) { *ret_string = hist_error (string, start, i, EVENT_NOT_FOUND); xfree (result); return (-1); } /* If a word specifier is found, then do what that requires. */ starting_index = i; word_spec = get_history_word_specifier (string, event, &i); /* There is no such thing as a `malformed word specifier'. However, it is possible for a specifier that has no match. In that case, we complain. */ if (word_spec == (char *)&error_pointer) { *ret_string = hist_error (string, starting_index, i, BAD_WORD_SPEC); xfree (result); return (-1); } /* If no word specifier, than the thing of interest was the event. */ temp = word_spec ? savestring (word_spec) : savestring (event); FREE (word_spec); /* Perhaps there are other modifiers involved. Do what they say. */ want_quotes = substitute_globally = subst_bywords = print_only = 0; starting_index = i; while (string[i] == ':') { c = string[i + 1]; if (c == 'g' || c == 'a') { substitute_globally = 1; i++; c = string[i + 1]; } else if (c == 'G') { subst_bywords = 1; i++; c = string[i + 1]; } switch (c) { default: *ret_string = hist_error (string, i+1, i+2, BAD_MODIFIER); xfree (result); xfree (temp); return -1; case 'q': want_quotes = 'q'; break; case 'x': want_quotes = 'x'; break; /* :p means make this the last executed line. So we return an error state after adding this line to the history. */ case 'p': print_only++; break; /* :t discards all but the last part of the pathname. */ case 't': tstr = strrchr (temp, '/'); if (tstr) { tstr++; t = savestring (tstr); xfree (temp); temp = t; } break; /* :h discards the last part of a pathname. */ case 'h': tstr = strrchr (temp, '/'); if (tstr) *tstr = '\0'; break; /* :r discards the suffix. */ case 'r': tstr = strrchr (temp, '.'); if (tstr) *tstr = '\0'; break; /* :e discards everything but the suffix. */ case 'e': tstr = strrchr (temp, '.'); if (tstr) { t = savestring (tstr); xfree (temp); temp = t; } break; /* :s/this/that substitutes `that' for the first occurrence of `this'. :gs/this/that substitutes `that' for each occurrence of `this'. :& repeats the last substitution. :g& repeats the last substitution globally. */ case '&': case 's': { char *new_event; int delimiter, failed, si, l_temp, ws, we; if (c == 's') { if (i + 2 < (int)strlen (string)) { #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { _rl_adjust_point (string, i + 2, &ps); if (_rl_get_char_len (string + i + 2, &ps) > 1) delimiter = 0; else delimiter = string[i + 2]; } else #endif /* HANDLE_MULTIBYTE */ delimiter = string[i + 2]; } else break; /* no search delimiter */ i += 3; t = get_subst_pattern (string, &i, delimiter, 0, &subst_lhs_len); /* An empty substitution lhs with no previous substitution uses the last search string as the lhs. */ if (t) { FREE (subst_lhs); subst_lhs = t; } else if (!subst_lhs) { if (search_string && *search_string) { subst_lhs = savestring (search_string); subst_lhs_len = strlen (subst_lhs); } else { subst_lhs = (char *) NULL; subst_lhs_len = 0; } } FREE (subst_rhs); subst_rhs = get_subst_pattern (string, &i, delimiter, 1, &subst_rhs_len); /* If `&' appears in the rhs, it's supposed to be replaced with the lhs. */ if (member ('&', subst_rhs)) postproc_subst_rhs (); } else i += 2; /* If there is no lhs, the substitution can't succeed. */ if (subst_lhs_len == 0) { *ret_string = hist_error (string, starting_index, i, NO_PREV_SUBST); xfree (result); xfree (temp); return -1; } l_temp = strlen (temp); /* Ignore impossible cases. */ if (subst_lhs_len > l_temp) { *ret_string = hist_error (string, starting_index, i, SUBST_FAILED); xfree (result); xfree (temp); return (-1); } /* Find the first occurrence of THIS in TEMP. */ /* Substitute SUBST_RHS for SUBST_LHS in TEMP. There are three cases to consider: 1. substitute_globally == subst_bywords == 0 2. substitute_globally == 1 && subst_bywords == 0 3. substitute_globally == 0 && subst_bywords == 1 In the first case, we substitute for the first occurrence only. In the second case, we substitute for every occurrence. In the third case, we tokenize into words and substitute the first occurrence of each word. */ si = we = 0; for (failed = 1; (si + subst_lhs_len) <= l_temp; si++) { /* First skip whitespace and find word boundaries if we're past the end of the word boundary we found the last time. */ if (subst_bywords && si > we) { for (; temp[si] && fielddelim (temp[si]); si++) ; ws = si; we = history_tokenize_word (temp, si); } if (STREQN (temp+si, subst_lhs, subst_lhs_len)) { int len = subst_rhs_len - subst_lhs_len + l_temp; new_event = (char *)xmalloc (1 + len); strncpy (new_event, temp, si); strncpy (new_event + si, subst_rhs, subst_rhs_len); strncpy (new_event + si + subst_rhs_len, temp + si + subst_lhs_len, l_temp - (si + subst_lhs_len)); new_event[len] = '\0'; xfree (temp); temp = new_event; failed = 0; if (substitute_globally) { /* Reported to fix a bug that causes it to skip every other match when matching a single character. Was si += subst_rhs_len previously. */ si += subst_rhs_len - 1; l_temp = strlen (temp); substitute_globally++; continue; } else if (subst_bywords) { si = we; l_temp = strlen (temp); continue; } else break; } } if (substitute_globally > 1) { substitute_globally = 0; continue; /* don't want to increment i */ } if (failed == 0) continue; /* don't want to increment i */ *ret_string = hist_error (string, starting_index, i, SUBST_FAILED); xfree (result); xfree (temp); return (-1); } } i += 2; } /* Done with modifiers. */ /* Believe it or not, we have to back the pointer up by one. */ --i; if (want_quotes) { char *x; if (want_quotes == 'q') x = sh_single_quote (temp); else if (want_quotes == 'x') x = quote_breaks (temp); else x = savestring (temp); xfree (temp); temp = x; } n = strlen (temp); if (n >= result_len) result = (char *)xrealloc (result, n + 2); strcpy (result, temp); xfree (temp); *end_index_ptr = i; *ret_string = result; return (print_only); } /* Expand the string STRING, placing the result into OUTPUT, a pointer to a string. Returns: -1) If there was an error in expansion. 0) If no expansions took place (or, if the only change in the text was the de-slashifying of the history expansion character) 1) If expansions did take place 2) If the `p' modifier was given and the caller should print the result If an error occurred in expansion, then OUTPUT contains a descriptive error message. */ #define ADD_STRING(s) \ do \ { \ int sl = strlen (s); \ j += sl; \ if (j >= result_len) \ { \ while (j >= result_len) \ result_len += 128; \ result = (char *)xrealloc (result, result_len); \ } \ strcpy (result + j - sl, s); \ } \ while (0) #define ADD_CHAR(c) \ do \ { \ if (j >= result_len - 1) \ result = (char *)xrealloc (result, result_len += 64); \ result[j++] = c; \ result[j] = '\0'; \ } \ while (0) int history_expand (char *hstring, char **output) { register int j; int i, r, l, passc, cc, modified, eindex, only_printing, dquote, squote, flag; char *string; /* The output string, and its length. */ int result_len; char *result; #if defined (HANDLE_MULTIBYTE) char mb[MB_LEN_MAX]; mbstate_t ps; #endif /* Used when adding the string. */ char *temp; if (output == 0) return 0; /* Setting the history expansion character to 0 inhibits all history expansion. */ if (history_expansion_char == 0) { *output = savestring (hstring); return (0); } /* Prepare the buffer for printing error messages. */ result = (char *)xmalloc (result_len = 256); result[0] = '\0'; only_printing = modified = 0; l = strlen (hstring); /* Grovel the string. Only backslash and single quotes can quote the history escape character. We also handle arg specifiers. */ /* Before we grovel forever, see if the history_expansion_char appears anywhere within the text. */ /* The quick substitution character is a history expansion all right. That is to say, "^this^that^" is equivalent to "!!:s^this^that^", and in fact, that is the substitution that we do. */ if (hstring[0] == history_subst_char) { string = (char *)xmalloc (l + 5); string[0] = string[1] = history_expansion_char; string[2] = ':'; string[3] = 's'; strcpy (string + 4, hstring); l += 4; } else { #if defined (HANDLE_MULTIBYTE) memset (&ps, 0, sizeof (mbstate_t)); #endif string = hstring; /* If not quick substitution, still maybe have to do expansion. */ /* `!' followed by one of the characters in history_no_expand_chars is NOT an expansion. */ dquote = history_quoting_state == '"'; squote = history_quoting_state == '\''; /* If the calling application tells us we are already reading a single-quoted string, consume the rest of the string right now and then go on. */ i = 0; if (squote && history_quotes_inhibit_expansion) { hist_string_extract_single_quoted (string, &i, 0); squote = 0; if (string[i]) i++; } for ( ; string[i]; i++) { #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { int v; v = _rl_get_char_len (string + i, &ps); if (v > 1) { i += v - 1; continue; } } #endif /* HANDLE_MULTIBYTE */ cc = string[i + 1]; /* The history_comment_char, if set, appearing at the beginning of a word signifies that the rest of the line should not have history expansion performed on it. Skip the rest of the line and break out of the loop. */ if (history_comment_char && string[i] == history_comment_char && dquote == 0 && (i == 0 || member (string[i - 1], history_word_delimiters))) { while (string[i]) i++; break; } else if (string[i] == history_expansion_char) { if (cc == 0 || member (cc, history_no_expand_chars)) continue; /* DQUOTE won't be set unless history_quotes_inhibit_expansion is set. The idea here is to treat double-quoted strings the same as the word outside double quotes; in effect making the double quote part of history_no_expand_chars when DQUOTE is set. */ else if (dquote && cc == '"') continue; /* If the calling application has set history_inhibit_expansion_function to a function that checks for special cases that should not be history expanded, call the function and skip the expansion if it returns a non-zero value. */ else if (history_inhibit_expansion_function && (*history_inhibit_expansion_function) (string, i)) continue; else break; } /* Shell-like quoting: allow backslashes to quote double quotes inside a double-quoted string. */ else if (dquote && string[i] == '\\' && cc == '"') i++; /* More shell-like quoting: if we're paying attention to single quotes and letting them quote the history expansion character, then we need to pay attention to double quotes, because single quotes are not special inside double-quoted strings. */ else if (history_quotes_inhibit_expansion && string[i] == '"') { dquote = 1 - dquote; } else if (dquote == 0 && history_quotes_inhibit_expansion && string[i] == '\'') { /* If this is bash, single quotes inhibit history expansion. */ flag = (i > 0 && string[i - 1] == '$'); i++; hist_string_extract_single_quoted (string, &i, flag); } else if (history_quotes_inhibit_expansion && string[i] == '\\') { /* If this is bash, allow backslashes to quote single quotes and the history expansion character. */ if (cc == '\'' || cc == history_expansion_char) i++; } } if (string[i] != history_expansion_char) { xfree (result); *output = savestring (string); return (0); } } /* Extract and perform the substitution. */ dquote = history_quoting_state == '"'; squote = history_quoting_state == '\''; /* If the calling application tells us we are already reading a single-quoted string, consume the rest of the string right now and then go on. */ i = j = 0; if (squote && history_quotes_inhibit_expansion) { int c; hist_string_extract_single_quoted (string, &i, 0); squote = 0; for (c = 0; c < i; c++) ADD_CHAR (string[c]); if (string[i]) { ADD_CHAR (string[i]); i++; } } for (passc = 0; i < l; i++) { int qc, tchar = string[i]; if (passc) { passc = 0; ADD_CHAR (tchar); continue; } #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { int k, c; c = tchar; memset (mb, 0, sizeof (mb)); for (k = 0; k < MB_LEN_MAX; k++) { mb[k] = (char)c; memset (&ps, 0, sizeof (mbstate_t)); if (_rl_get_char_len (mb, &ps) == -2) c = string[++i]; else break; } if (strlen (mb) > 1) { ADD_STRING (mb); continue; } } #endif /* HANDLE_MULTIBYTE */ if (tchar == history_expansion_char) tchar = -3; else if (tchar == history_comment_char) tchar = -2; switch (tchar) { default: ADD_CHAR (string[i]); break; case '\\': passc++; ADD_CHAR (tchar); break; case '"': dquote = 1 - dquote; ADD_CHAR (tchar); break; case '\'': { /* If history_quotes_inhibit_expansion is set, single quotes inhibit history expansion, otherwise they are treated like double quotes. */ if (squote) { squote = 0; ADD_CHAR (tchar); } else if (dquote == 0 && history_quotes_inhibit_expansion) { int quote, slen; flag = (i > 0 && string[i - 1] == '$'); quote = i++; hist_string_extract_single_quoted (string, &i, flag); slen = i - quote + 2; temp = (char *)xmalloc (slen); strncpy (temp, string + quote, slen); temp[slen - 1] = '\0'; ADD_STRING (temp); xfree (temp); } else if (dquote == 0 && squote == 0 && history_quotes_inhibit_expansion == 0) { squote = 1; ADD_CHAR (string[i]); } else ADD_CHAR (string[i]); break; } case -2: /* history_comment_char */ if ((dquote == 0 || history_quotes_inhibit_expansion == 0) && (i == 0 || member (string[i - 1], history_word_delimiters))) { temp = (char *)xmalloc (l - i + 1); strcpy (temp, string + i); ADD_STRING (temp); xfree (temp); i = l; } else ADD_CHAR (string[i]); break; case -3: /* history_expansion_char */ cc = string[i + 1]; /* If the history_expansion_char is followed by one of the characters in history_no_expand_chars, then it is not a candidate for expansion of any kind. */ if (cc == 0 || member (cc, history_no_expand_chars) || (dquote && cc == '"') || (history_inhibit_expansion_function && (*history_inhibit_expansion_function) (string, i))) { ADD_CHAR (string[i]); break; } #if defined (NO_BANG_HASH_MODIFIERS) /* There is something that is listed as a `word specifier' in csh documentation which means `the expanded text to this point'. That is not a word specifier, it is an event specifier. If we don't want to allow modifiers with `!#', just stick the current output line in again. */ if (cc == '#') { if (result) { temp = (char *)xmalloc (1 + strlen (result)); strcpy (temp, result); ADD_STRING (temp); xfree (temp); } i++; break; } #endif qc = squote ? '\'' : (dquote ? '"' : 0); r = history_expand_internal (string, i, qc, &eindex, &temp, result); if (r < 0) { *output = temp; xfree (result); if (string != hstring) xfree (string); return -1; } else { if (temp) { modified++; if (*temp) ADD_STRING (temp); xfree (temp); } only_printing += r == 1; i = eindex; } break; } } *output = result; if (string != hstring) xfree (string); if (only_printing) { #if 0 add_history (result); #endif return (2); } return (modified != 0); } /* Return a consed string which is the word specified in SPEC, and found in FROM. NULL is returned if there is no spec. The address of ERROR_POINTER is returned if the word specified cannot be found. CALLER_INDEX is the offset in SPEC to start looking; it is updated to point to just after the last character parsed. */ static char * get_history_word_specifier (char *spec, char *from, int *caller_index) { register int i = *caller_index; int first, last; int expecting_word_spec = 0; char *result; /* The range of words to return doesn't exist yet. */ first = last = 0; result = (char *)NULL; /* If we found a colon, then this *must* be a word specification. If it isn't, then it is an error. */ if (spec[i] == ':') { i++; expecting_word_spec++; } /* Handle special cases first. */ /* `%' is the word last searched for. */ if (spec[i] == '%') { *caller_index = i + 1; return (search_match ? savestring (search_match) : savestring ("")); } /* `*' matches all of the arguments, but not the command. */ if (spec[i] == '*') { *caller_index = i + 1; result = history_arg_extract (1, '$', from); return (result ? result : savestring ("")); } /* `$' is last arg. */ if (spec[i] == '$') { *caller_index = i + 1; return (history_arg_extract ('$', '$', from)); } /* Try to get FIRST and LAST figured out. */ if (spec[i] == '-') first = 0; else if (spec[i] == '^') { first = 1; i++; } else if (_rl_digit_p (spec[i]) && expecting_word_spec) { for (first = 0; _rl_digit_p (spec[i]); i++) first = (first * 10) + _rl_digit_value (spec[i]); } else return ((char *)NULL); /* no valid `first' for word specifier */ if (spec[i] == '^' || spec[i] == '*') { last = (spec[i] == '^') ? 1 : '$'; /* x* abbreviates x-$ */ i++; } else if (spec[i] != '-') last = first; else { i++; if (_rl_digit_p (spec[i])) { for (last = 0; _rl_digit_p (spec[i]); i++) last = (last * 10) + _rl_digit_value (spec[i]); } else if (spec[i] == '$') { i++; last = '$'; } #if 0 else if (!spec[i] || spec[i] == ':') /* check against `:' because there could be a modifier separator */ #else else /* csh seems to allow anything to terminate the word spec here, leaving it as an abbreviation. */ #endif last = -1; /* x- abbreviates x-$ omitting word `$' */ } *caller_index = i; if (last >= first || last == '$' || last < 0) result = history_arg_extract (first, last, from); return (result ? result : (char *)&error_pointer); } /* Extract the args specified, starting at FIRST, and ending at LAST. The args are taken from STRING. If either FIRST or LAST is < 0, then make that arg count from the right (subtract from the number of tokens, so that FIRST = -1 means the next to last token on the line). If LAST is `$' the last arg from STRING is used. */ char * history_arg_extract (int first, int last, const char *string) { register int i, len; char *result; int size, offset; char **list; /* XXX - think about making history_tokenize return a struct array, each struct in array being a string and a length to avoid the calls to strlen below. */ if ((list = history_tokenize (string)) == NULL) return ((char *)NULL); for (len = 0; list[len]; len++) ; if (last < 0) last = len + last - 1; if (first < 0) first = len + first - 1; if (last == '$') last = len - 1; if (first == '$') first = len - 1; last++; if (first >= len || last > len || first < 0 || last < 0 || first > last) result = ((char *)NULL); else { for (size = 0, i = first; i < last; i++) size += strlen (list[i]) + 1; result = (char *)xmalloc (size + 1); result[0] = '\0'; for (i = first, offset = 0; i < last; i++) { strcpy (result + offset, list[i]); offset += strlen (list[i]); if (i + 1 < last) { result[offset++] = ' '; result[offset] = 0; } } } for (i = 0; i < len; i++) xfree (list[i]); xfree (list); return (result); } static int history_tokenize_word (const char *string, int ind) { register int i, j; int delimiter, nestdelim, delimopen; i = ind; delimiter = nestdelim = 0; if (member (string[i], "()\n")) /* XXX - included \n, but why? been here forever */ { i++; return i; } if (ISDIGIT (string[i])) { j = i; while (string[j] && ISDIGIT (string[j])) j++; if (string[j] == 0) return (j); if (string[j] == '<' || string[j] == '>') i = j; /* digit sequence is a file descriptor */ else { i = j; goto get_word; /* digit sequence is part of a word */ } } if (member (string[i], "<>;&|")) { int peek = string[i + 1]; if (peek == string[i]) { if (peek == '<' && string[i + 2] == '-') i++; else if (peek == '<' && string[i + 2] == '<') i++; i += 2; return i; } else if (peek == '&' && (string[i] == '>' || string[i] == '<')) { j = i + 2; while (string[j] && ISDIGIT (string[j])) /* file descriptor */ j++; if (string[j] =='-') /* <&[digits]-, >&[digits]- */ j++; return j; } else if ((peek == '>' && string[i] == '&') || (peek == '|' && string[i] == '>')) { i += 2; return i; } /* XXX - process substitution -- separated out for later -- bash-4.2 */ else if (peek == '(' && (string[i] == '>' || string[i] == '<')) /*)*/ { i += 2; delimopen = '('; delimiter = ')'; nestdelim = 1; goto get_word; } i++; return i; } get_word: /* Get word from string + i; */ if (delimiter == 0 && member (string[i], HISTORY_QUOTE_CHARACTERS)) delimiter = string[i++]; for (; string[i]; i++) { if (string[i] == '\\' && string[i + 1] == '\n') { i++; continue; } if (string[i] == '\\' && delimiter != '\'' && (delimiter != '"' || member (string[i], slashify_in_quotes))) { i++; continue; } /* delimiter must be set and set to something other than a quote if nestdelim is set, so these tests are safe. */ if (nestdelim && string[i] == delimopen) { nestdelim++; continue; } if (nestdelim && string[i] == delimiter) { nestdelim--; if (nestdelim == 0) delimiter = 0; continue; } if (delimiter && string[i] == delimiter) { delimiter = 0; continue; } /* Command and process substitution; shell extended globbing patterns */ if (nestdelim == 0 && delimiter == 0 && member (string[i], "<>$!@?+*") && string[i+1] == '(') /*)*/ { i += 2; delimopen = '('; delimiter = ')'; nestdelim = 1; continue; } if (delimiter == 0 && (member (string[i], history_word_delimiters))) break; if (delimiter == 0 && member (string[i], HISTORY_QUOTE_CHARACTERS)) delimiter = string[i]; } return i; } static char * history_substring (const char *string, int start, int end) { register int len; register char *result; len = end - start; result = (char *)xmalloc (len + 1); strncpy (result, string + start, len); result[len] = '\0'; return result; } /* Parse STRING into tokens and return an array of strings. If WIND is not -1 and INDP is not null, we also want the word surrounding index WIND. The position in the returned array of strings is returned in *INDP. */ static char ** history_tokenize_internal (const char *string, int wind, int *indp) { char **result; register int i, start, result_index, size; /* If we're searching for a string that's not part of a word (e.g., " "), make sure we set *INDP to a reasonable value. */ if (indp && wind != -1) *indp = -1; /* Get a token, and stuff it into RESULT. The tokens are split exactly where the shell would split them. */ for (i = result_index = size = 0, result = (char **)NULL; string[i]; ) { /* Skip leading whitespace. */ for (; string[i] && fielddelim (string[i]); i++) ; if (string[i] == 0 || string[i] == history_comment_char) return (result); start = i; i = history_tokenize_word (string, start); /* If we have a non-whitespace delimiter character (which would not be skipped by the loop above), use it and any adjacent delimiters to make a separate field. Any adjacent white space will be skipped the next time through the loop. */ if (i == start && history_word_delimiters) { i++; while (string[i] && member (string[i], history_word_delimiters)) i++; } /* If we are looking for the word in which the character at a particular index falls, remember it. */ if (indp && wind != -1 && wind >= start && wind < i) *indp = result_index; if (result_index + 2 >= size) result = (char **)xrealloc (result, ((size += 10) * sizeof (char *))); result[result_index++] = history_substring (string, start, i); result[result_index] = (char *)NULL; } return (result); } /* Return an array of tokens, much as the shell might. The tokens are parsed out of STRING. */ char ** history_tokenize (const char *string) { return (history_tokenize_internal (string, -1, (int *)NULL)); } /* Free members of WORDS from START to an empty string */ static void freewords (char **words, int start) { register int i; for (i = start; words[i]; i++) xfree (words[i]); } /* Find and return the word which contains the character at index IND in the history line LINE. Used to save the word matched by the last history !?string? search. */ static char * history_find_word (char *line, int ind) { char **words, *s; int i, wind; words = history_tokenize_internal (line, ind, &wind); if (wind == -1 || words == 0) { if (words) freewords (words, 0); FREE (words); return ((char *)NULL); } s = words[wind]; for (i = 0; i < wind; i++) xfree (words[i]); freewords (words, wind + 1); xfree (words); return s; } readline-8.0/compat.c000664 000436 000120 00000004515 13052147500 014642 0ustar00chetadmin000000 000000 /* compat.c -- backwards compatibility functions. */ /* Copyright (C) 2000-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #include "rlstdc.h" #include "rltypedefs.h" extern void rl_free_undo_list PARAMS((void)); extern int rl_maybe_save_line PARAMS((void)); extern int rl_maybe_unsave_line PARAMS((void)); extern int rl_maybe_replace_line PARAMS((void)); extern int rl_crlf PARAMS((void)); extern int rl_ding PARAMS((void)); extern int rl_alphabetic PARAMS((int)); extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *)); extern char *rl_username_completion_function PARAMS((const char *, int)); extern char *rl_filename_completion_function PARAMS((const char *, int)); /* Provide backwards-compatible entry points for old function names. */ void free_undo_list (void) { rl_free_undo_list (); } int maybe_replace_line (void) { return rl_maybe_replace_line (); } int maybe_save_line (void) { return rl_maybe_save_line (); } int maybe_unsave_line (void) { return rl_maybe_unsave_line (); } int ding (void) { return rl_ding (); } int crlf (void) { return rl_crlf (); } int alphabetic (int c) { return rl_alphabetic (c); } char ** completion_matches (const char *s, rl_compentry_func_t *f) { return rl_completion_matches (s, f); } char * username_completion_function (const char *s, int i) { return rl_username_completion_function (s, i); } char * filename_completion_function (const char *s, int i) { return rl_filename_completion_function (s, i); } readline-8.0/readline.h000664 000436 000000 00000114652 13350222372 015166 0ustar00chetwheel000000 000000 /* Readline.h -- the names of functions callable from within readline. */ /* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_READLINE_H_) #define _READLINE_H_ #ifdef __cplusplus extern "C" { #endif #if defined (READLINE_LIBRARY) # include "rlstdc.h" # include "rltypedefs.h" # include "keymaps.h" # include "tilde.h" #else # include # include # include # include #endif /* Hex-encoded Readline version number. */ #define RL_READLINE_VERSION 0x0800 /* Readline 8.0 */ #define RL_VERSION_MAJOR 8 #define RL_VERSION_MINOR 0 /* Readline data structures. */ /* Maintaining the state of undo. We remember individual deletes and inserts on a chain of things to do. */ /* The actions that undo knows how to undo. Notice that UNDO_DELETE means to insert some text, and UNDO_INSERT means to delete some text. I.e., the code tells undo what to undo, not how to undo it. */ enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; /* What an element of THE_UNDO_LIST looks like. */ typedef struct undo_list { struct undo_list *next; int start, end; /* Where the change took place. */ char *text; /* The text to insert, if undoing a delete. */ enum undo_code what; /* Delete, Insert, Begin, End. */ } UNDO_LIST; /* The current undo list for RL_LINE_BUFFER. */ extern UNDO_LIST *rl_undo_list; /* The data structure for mapping textual names to code addresses. */ typedef struct _funmap { const char *name; rl_command_func_t *function; } FUNMAP; extern FUNMAP **funmap; /* **************************************************************** */ /* */ /* Functions available to bind to key sequences */ /* */ /* **************************************************************** */ /* Bindable commands for numeric arguments. */ extern int rl_digit_argument PARAMS((int, int)); extern int rl_universal_argument PARAMS((int, int)); /* Bindable commands for moving the cursor. */ extern int rl_forward_byte PARAMS((int, int)); extern int rl_forward_char PARAMS((int, int)); extern int rl_forward PARAMS((int, int)); extern int rl_backward_byte PARAMS((int, int)); extern int rl_backward_char PARAMS((int, int)); extern int rl_backward PARAMS((int, int)); extern int rl_beg_of_line PARAMS((int, int)); extern int rl_end_of_line PARAMS((int, int)); extern int rl_forward_word PARAMS((int, int)); extern int rl_backward_word PARAMS((int, int)); extern int rl_refresh_line PARAMS((int, int)); extern int rl_clear_screen PARAMS((int, int)); extern int rl_skip_csi_sequence PARAMS((int, int)); extern int rl_arrow_keys PARAMS((int, int)); extern int rl_previous_screen_line PARAMS((int, int)); extern int rl_next_screen_line PARAMS((int, int)); /* Bindable commands for inserting and deleting text. */ extern int rl_insert PARAMS((int, int)); extern int rl_quoted_insert PARAMS((int, int)); extern int rl_tab_insert PARAMS((int, int)); extern int rl_newline PARAMS((int, int)); extern int rl_do_lowercase_version PARAMS((int, int)); extern int rl_rubout PARAMS((int, int)); extern int rl_delete PARAMS((int, int)); extern int rl_rubout_or_delete PARAMS((int, int)); extern int rl_delete_horizontal_space PARAMS((int, int)); extern int rl_delete_or_show_completions PARAMS((int, int)); extern int rl_insert_comment PARAMS((int, int)); /* Bindable commands for changing case. */ extern int rl_upcase_word PARAMS((int, int)); extern int rl_downcase_word PARAMS((int, int)); extern int rl_capitalize_word PARAMS((int, int)); /* Bindable commands for transposing characters and words. */ extern int rl_transpose_words PARAMS((int, int)); extern int rl_transpose_chars PARAMS((int, int)); /* Bindable commands for searching within a line. */ extern int rl_char_search PARAMS((int, int)); extern int rl_backward_char_search PARAMS((int, int)); /* Bindable commands for readline's interface to the command history. */ extern int rl_beginning_of_history PARAMS((int, int)); extern int rl_end_of_history PARAMS((int, int)); extern int rl_get_next_history PARAMS((int, int)); extern int rl_get_previous_history PARAMS((int, int)); /* Bindable commands for managing the mark and region. */ extern int rl_set_mark PARAMS((int, int)); extern int rl_exchange_point_and_mark PARAMS((int, int)); /* Bindable commands to set the editing mode (emacs or vi). */ extern int rl_vi_editing_mode PARAMS((int, int)); extern int rl_emacs_editing_mode PARAMS((int, int)); /* Bindable commands to change the insert mode (insert or overwrite) */ extern int rl_overwrite_mode PARAMS((int, int)); /* Bindable commands for managing key bindings. */ extern int rl_re_read_init_file PARAMS((int, int)); extern int rl_dump_functions PARAMS((int, int)); extern int rl_dump_macros PARAMS((int, int)); extern int rl_dump_variables PARAMS((int, int)); /* Bindable commands for word completion. */ extern int rl_complete PARAMS((int, int)); extern int rl_possible_completions PARAMS((int, int)); extern int rl_insert_completions PARAMS((int, int)); extern int rl_old_menu_complete PARAMS((int, int)); extern int rl_menu_complete PARAMS((int, int)); extern int rl_backward_menu_complete PARAMS((int, int)); /* Bindable commands for killing and yanking text, and managing the kill ring. */ extern int rl_kill_word PARAMS((int, int)); extern int rl_backward_kill_word PARAMS((int, int)); extern int rl_kill_line PARAMS((int, int)); extern int rl_backward_kill_line PARAMS((int, int)); extern int rl_kill_full_line PARAMS((int, int)); extern int rl_unix_word_rubout PARAMS((int, int)); extern int rl_unix_filename_rubout PARAMS((int, int)); extern int rl_unix_line_discard PARAMS((int, int)); extern int rl_copy_region_to_kill PARAMS((int, int)); extern int rl_kill_region PARAMS((int, int)); extern int rl_copy_forward_word PARAMS((int, int)); extern int rl_copy_backward_word PARAMS((int, int)); extern int rl_yank PARAMS((int, int)); extern int rl_yank_pop PARAMS((int, int)); extern int rl_yank_nth_arg PARAMS((int, int)); extern int rl_yank_last_arg PARAMS((int, int)); extern int rl_bracketed_paste_begin PARAMS((int, int)); /* Not available unless _WIN32 is defined. */ #if defined (_WIN32) extern int rl_paste_from_clipboard PARAMS((int, int)); #endif /* Bindable commands for incremental searching. */ extern int rl_reverse_search_history PARAMS((int, int)); extern int rl_forward_search_history PARAMS((int, int)); /* Bindable keyboard macro commands. */ extern int rl_start_kbd_macro PARAMS((int, int)); extern int rl_end_kbd_macro PARAMS((int, int)); extern int rl_call_last_kbd_macro PARAMS((int, int)); extern int rl_print_last_kbd_macro PARAMS((int, int)); /* Bindable undo commands. */ extern int rl_revert_line PARAMS((int, int)); extern int rl_undo_command PARAMS((int, int)); /* Bindable tilde expansion commands. */ extern int rl_tilde_expand PARAMS((int, int)); /* Bindable terminal control commands. */ extern int rl_restart_output PARAMS((int, int)); extern int rl_stop_output PARAMS((int, int)); /* Miscellaneous bindable commands. */ extern int rl_abort PARAMS((int, int)); extern int rl_tty_status PARAMS((int, int)); /* Bindable commands for incremental and non-incremental history searching. */ extern int rl_history_search_forward PARAMS((int, int)); extern int rl_history_search_backward PARAMS((int, int)); extern int rl_history_substr_search_forward PARAMS((int, int)); extern int rl_history_substr_search_backward PARAMS((int, int)); extern int rl_noninc_forward_search PARAMS((int, int)); extern int rl_noninc_reverse_search PARAMS((int, int)); extern int rl_noninc_forward_search_again PARAMS((int, int)); extern int rl_noninc_reverse_search_again PARAMS((int, int)); /* Bindable command used when inserting a matching close character. */ extern int rl_insert_close PARAMS((int, int)); /* Not available unless READLINE_CALLBACKS is defined. */ extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *)); extern void rl_callback_read_char PARAMS((void)); extern void rl_callback_handler_remove PARAMS((void)); extern void rl_callback_sigcleanup PARAMS((void)); /* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */ /* VI-mode bindable commands. */ extern int rl_vi_redo PARAMS((int, int)); extern int rl_vi_undo PARAMS((int, int)); extern int rl_vi_yank_arg PARAMS((int, int)); extern int rl_vi_fetch_history PARAMS((int, int)); extern int rl_vi_search_again PARAMS((int, int)); extern int rl_vi_search PARAMS((int, int)); extern int rl_vi_complete PARAMS((int, int)); extern int rl_vi_tilde_expand PARAMS((int, int)); extern int rl_vi_prev_word PARAMS((int, int)); extern int rl_vi_next_word PARAMS((int, int)); extern int rl_vi_end_word PARAMS((int, int)); extern int rl_vi_insert_beg PARAMS((int, int)); extern int rl_vi_append_mode PARAMS((int, int)); extern int rl_vi_append_eol PARAMS((int, int)); extern int rl_vi_eof_maybe PARAMS((int, int)); extern int rl_vi_insertion_mode PARAMS((int, int)); extern int rl_vi_insert_mode PARAMS((int, int)); extern int rl_vi_movement_mode PARAMS((int, int)); extern int rl_vi_arg_digit PARAMS((int, int)); extern int rl_vi_change_case PARAMS((int, int)); extern int rl_vi_put PARAMS((int, int)); extern int rl_vi_column PARAMS((int, int)); extern int rl_vi_delete_to PARAMS((int, int)); extern int rl_vi_change_to PARAMS((int, int)); extern int rl_vi_yank_to PARAMS((int, int)); extern int rl_vi_yank_pop PARAMS((int, int)); extern int rl_vi_rubout PARAMS((int, int)); extern int rl_vi_delete PARAMS((int, int)); extern int rl_vi_back_to_indent PARAMS((int, int)); extern int rl_vi_unix_word_rubout PARAMS((int, int)); extern int rl_vi_first_print PARAMS((int, int)); extern int rl_vi_char_search PARAMS((int, int)); extern int rl_vi_match PARAMS((int, int)); extern int rl_vi_change_char PARAMS((int, int)); extern int rl_vi_subst PARAMS((int, int)); extern int rl_vi_overstrike PARAMS((int, int)); extern int rl_vi_overstrike_delete PARAMS((int, int)); extern int rl_vi_replace PARAMS((int, int)); extern int rl_vi_set_mark PARAMS((int, int)); extern int rl_vi_goto_mark PARAMS((int, int)); /* VI-mode utility functions. */ extern int rl_vi_check PARAMS((void)); extern int rl_vi_domove PARAMS((int, int *)); extern int rl_vi_bracktype PARAMS((int)); extern void rl_vi_start_inserting PARAMS((int, int, int)); /* VI-mode pseudo-bindable commands, used as utility functions. */ extern int rl_vi_fWord PARAMS((int, int)); extern int rl_vi_bWord PARAMS((int, int)); extern int rl_vi_eWord PARAMS((int, int)); extern int rl_vi_fword PARAMS((int, int)); extern int rl_vi_bword PARAMS((int, int)); extern int rl_vi_eword PARAMS((int, int)); /* **************************************************************** */ /* */ /* Well Published Functions */ /* */ /* **************************************************************** */ /* Readline functions. */ /* Read a line of input. Prompt with PROMPT. A NULL PROMPT means none. */ extern char *readline PARAMS((const char *)); extern int rl_set_prompt PARAMS((const char *)); extern int rl_expand_prompt PARAMS((char *)); extern int rl_initialize PARAMS((void)); /* Undocumented; unused by readline */ extern int rl_discard_argument PARAMS((void)); /* Utility functions to bind keys to readline commands. */ extern int rl_add_defun PARAMS((const char *, rl_command_func_t *, int)); extern int rl_bind_key PARAMS((int, rl_command_func_t *)); extern int rl_bind_key_in_map PARAMS((int, rl_command_func_t *, Keymap)); extern int rl_unbind_key PARAMS((int)); extern int rl_unbind_key_in_map PARAMS((int, Keymap)); extern int rl_bind_key_if_unbound PARAMS((int, rl_command_func_t *)); extern int rl_bind_key_if_unbound_in_map PARAMS((int, rl_command_func_t *, Keymap)); extern int rl_unbind_function_in_map PARAMS((rl_command_func_t *, Keymap)); extern int rl_unbind_command_in_map PARAMS((const char *, Keymap)); extern int rl_bind_keyseq PARAMS((const char *, rl_command_func_t *)); extern int rl_bind_keyseq_in_map PARAMS((const char *, rl_command_func_t *, Keymap)); extern int rl_bind_keyseq_if_unbound PARAMS((const char *, rl_command_func_t *)); extern int rl_bind_keyseq_if_unbound_in_map PARAMS((const char *, rl_command_func_t *, Keymap)); extern int rl_generic_bind PARAMS((int, const char *, char *, Keymap)); extern char *rl_variable_value PARAMS((const char *)); extern int rl_variable_bind PARAMS((const char *, const char *)); /* Backwards compatibility, use rl_bind_keyseq_in_map instead. */ extern int rl_set_key PARAMS((const char *, rl_command_func_t *, Keymap)); /* Backwards compatibility, use rl_generic_bind instead. */ extern int rl_macro_bind PARAMS((const char *, const char *, Keymap)); /* Undocumented in the texinfo manual; not really useful to programs. */ extern int rl_translate_keyseq PARAMS((const char *, char *, int *)); extern char *rl_untranslate_keyseq PARAMS((int)); extern rl_command_func_t *rl_named_function PARAMS((const char *)); extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *)); extern rl_command_func_t *rl_function_of_keyseq_len PARAMS((const char *, size_t, Keymap, int *)); extern void rl_list_funmap_names PARAMS((void)); extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap)); extern char **rl_invoking_keyseqs PARAMS((rl_command_func_t *)); extern void rl_function_dumper PARAMS((int)); extern void rl_macro_dumper PARAMS((int)); extern void rl_variable_dumper PARAMS((int)); extern int rl_read_init_file PARAMS((const char *)); extern int rl_parse_and_bind PARAMS((char *)); /* Functions for manipulating keymaps. */ extern Keymap rl_make_bare_keymap PARAMS((void)); extern int rl_empty_keymap PARAMS((Keymap)); extern Keymap rl_copy_keymap PARAMS((Keymap)); extern Keymap rl_make_keymap PARAMS((void)); extern void rl_discard_keymap PARAMS((Keymap)); extern void rl_free_keymap PARAMS((Keymap)); extern Keymap rl_get_keymap_by_name PARAMS((const char *)); extern char *rl_get_keymap_name PARAMS((Keymap)); extern void rl_set_keymap PARAMS((Keymap)); extern Keymap rl_get_keymap PARAMS((void)); extern int rl_set_keymap_name PARAMS((const char *, Keymap)); /* Undocumented; used internally only. */ extern void rl_set_keymap_from_edit_mode PARAMS((void)); extern char *rl_get_keymap_name_from_edit_mode PARAMS((void)); /* Functions for manipulating the funmap, which maps command names to functions. */ extern int rl_add_funmap_entry PARAMS((const char *, rl_command_func_t *)); extern const char **rl_funmap_names PARAMS((void)); /* Undocumented, only used internally -- there is only one funmap, and this function may be called only once. */ extern void rl_initialize_funmap PARAMS((void)); /* Utility functions for managing keyboard macros. */ extern void rl_push_macro_input PARAMS((char *)); /* Functions for undoing, from undo.c */ extern void rl_add_undo PARAMS((enum undo_code, int, int, char *)); extern void rl_free_undo_list PARAMS((void)); extern int rl_do_undo PARAMS((void)); extern int rl_begin_undo_group PARAMS((void)); extern int rl_end_undo_group PARAMS((void)); extern int rl_modifying PARAMS((int, int)); /* Functions for redisplay. */ extern void rl_redisplay PARAMS((void)); extern int rl_on_new_line PARAMS((void)); extern int rl_on_new_line_with_prompt PARAMS((void)); extern int rl_forced_update_display PARAMS((void)); extern int rl_clear_visible_line PARAMS((void)); extern int rl_clear_message PARAMS((void)); extern int rl_reset_line_state PARAMS((void)); extern int rl_crlf PARAMS((void)); #if defined (USE_VARARGS) && defined (PREFER_STDARG) extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2))); #else extern int rl_message (); #endif extern int rl_show_char PARAMS((int)); /* Undocumented in texinfo manual. */ extern int rl_character_len PARAMS((int, int)); extern void rl_redraw_prompt_last_line PARAMS((void)); /* Save and restore internal prompt redisplay information. */ extern void rl_save_prompt PARAMS((void)); extern void rl_restore_prompt PARAMS((void)); /* Modifying text. */ extern void rl_replace_line PARAMS((const char *, int)); extern int rl_insert_text PARAMS((const char *)); extern int rl_delete_text PARAMS((int, int)); extern int rl_kill_text PARAMS((int, int)); extern char *rl_copy_text PARAMS((int, int)); /* Terminal and tty mode management. */ extern void rl_prep_terminal PARAMS((int)); extern void rl_deprep_terminal PARAMS((void)); extern void rl_tty_set_default_bindings PARAMS((Keymap)); extern void rl_tty_unset_default_bindings PARAMS((Keymap)); extern int rl_tty_set_echoing PARAMS((int)); extern int rl_reset_terminal PARAMS((const char *)); extern void rl_resize_terminal PARAMS((void)); extern void rl_set_screen_size PARAMS((int, int)); extern void rl_get_screen_size PARAMS((int *, int *)); extern void rl_reset_screen_size PARAMS((void)); extern char *rl_get_termcap PARAMS((const char *)); /* Functions for character input. */ extern int rl_stuff_char PARAMS((int)); extern int rl_execute_next PARAMS((int)); extern int rl_clear_pending_input PARAMS((void)); extern int rl_read_key PARAMS((void)); extern int rl_getc PARAMS((FILE *)); extern int rl_set_keyboard_input_timeout PARAMS((int)); /* `Public' utility functions . */ extern void rl_extend_line_buffer PARAMS((int)); extern int rl_ding PARAMS((void)); extern int rl_alphabetic PARAMS((int)); extern void rl_free PARAMS((void *)); /* Readline signal handling, from signals.c */ extern int rl_set_signals PARAMS((void)); extern int rl_clear_signals PARAMS((void)); extern void rl_cleanup_after_signal PARAMS((void)); extern void rl_reset_after_signal PARAMS((void)); extern void rl_free_line_state PARAMS((void)); extern int rl_pending_signal PARAMS((void)); extern void rl_check_signals PARAMS((void)); extern void rl_echo_signal_char PARAMS((int)); extern int rl_set_paren_blink_timeout PARAMS((int)); /* History management functions. */ extern void rl_clear_history PARAMS((void)); /* Undocumented. */ extern int rl_maybe_save_line PARAMS((void)); extern int rl_maybe_unsave_line PARAMS((void)); extern int rl_maybe_replace_line PARAMS((void)); /* Completion functions. */ extern int rl_complete_internal PARAMS((int)); extern void rl_display_match_list PARAMS((char **, int, int)); extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *)); extern char *rl_username_completion_function PARAMS((const char *, int)); extern char *rl_filename_completion_function PARAMS((const char *, int)); extern int rl_completion_mode PARAMS((rl_command_func_t *)); #if 0 /* Backwards compatibility (compat.c). These will go away sometime. */ extern void free_undo_list PARAMS((void)); extern int maybe_save_line PARAMS((void)); extern int maybe_unsave_line PARAMS((void)); extern int maybe_replace_line PARAMS((void)); extern int ding PARAMS((void)); extern int alphabetic PARAMS((int)); extern int crlf PARAMS((void)); extern char **completion_matches PARAMS((char *, rl_compentry_func_t *)); extern char *username_completion_function PARAMS((const char *, int)); extern char *filename_completion_function PARAMS((const char *, int)); #endif /* **************************************************************** */ /* */ /* Well Published Variables */ /* */ /* **************************************************************** */ /* The version of this incarnation of the readline library. */ extern const char *rl_library_version; /* e.g., "4.2" */ extern int rl_readline_version; /* e.g., 0x0402 */ /* True if this is real GNU readline. */ extern int rl_gnu_readline_p; /* Flags word encapsulating the current readline state. */ extern unsigned long rl_readline_state; /* Says which editing mode readline is currently using. 1 means emacs mode; 0 means vi mode. */ extern int rl_editing_mode; /* Insert or overwrite mode for emacs mode. 1 means insert mode; 0 means overwrite mode. Reset to insert mode on each input line. */ extern int rl_insert_mode; /* The name of the calling program. You should initialize this to whatever was in argv[0]. It is used when parsing conditionals. */ extern const char *rl_readline_name; /* The prompt readline uses. This is set from the argument to readline (), and should not be assigned to directly. */ extern char *rl_prompt; /* The prompt string that is actually displayed by rl_redisplay. Public so applications can more easily supply their own redisplay functions. */ extern char *rl_display_prompt; /* The line buffer that is in use. */ extern char *rl_line_buffer; /* The location of point, and end. */ extern int rl_point; extern int rl_end; /* The mark, or saved cursor position. */ extern int rl_mark; /* Flag to indicate that readline has finished with the current input line and should return it. */ extern int rl_done; /* If set to a character value, that will be the next keystroke read. */ extern int rl_pending_input; /* Non-zero if we called this function from _rl_dispatch(). It's present so functions can find out whether they were called from a key binding or directly from an application. */ extern int rl_dispatching; /* Non-zero if the user typed a numeric argument before executing the current function. */ extern int rl_explicit_arg; /* The current value of the numeric argument specified by the user. */ extern int rl_numeric_arg; /* The address of the last command function Readline executed. */ extern rl_command_func_t *rl_last_func; /* The name of the terminal to use. */ extern const char *rl_terminal_name; /* The input and output streams. */ extern FILE *rl_instream; extern FILE *rl_outstream; /* If non-zero, Readline gives values of LINES and COLUMNS from the environment greater precedence than values fetched from the kernel when computing the screen dimensions. */ extern int rl_prefer_env_winsize; /* If non-zero, then this is the address of a function to call just before readline_internal () prints the first prompt. */ extern rl_hook_func_t *rl_startup_hook; /* If non-zero, this is the address of a function to call just before readline_internal_setup () returns and readline_internal starts reading input characters. */ extern rl_hook_func_t *rl_pre_input_hook; /* The address of a function to call periodically while Readline is awaiting character input, or NULL, for no event handling. */ extern rl_hook_func_t *rl_event_hook; /* The address of a function to call if a read is interrupted by a signal. */ extern rl_hook_func_t *rl_signal_event_hook; /* The address of a function to call if Readline needs to know whether or not there is data available from the current input source. */ extern rl_hook_func_t *rl_input_available_hook; /* The address of the function to call to fetch a character from the current Readline input stream */ extern rl_getc_func_t *rl_getc_function; extern rl_voidfunc_t *rl_redisplay_function; extern rl_vintfunc_t *rl_prep_term_function; extern rl_voidfunc_t *rl_deprep_term_function; /* Dispatch variables. */ extern Keymap rl_executing_keymap; extern Keymap rl_binding_keymap; extern int rl_executing_key; extern char *rl_executing_keyseq; extern int rl_key_sequence_length; /* Display variables. */ /* If non-zero, readline will erase the entire line, including any prompt, if the only thing typed on an otherwise-blank line is something bound to rl_newline. */ extern int rl_erase_empty_line; /* If non-zero, the application has already printed the prompt (rl_prompt) before calling readline, so readline should not output it the first time redisplay is done. */ extern int rl_already_prompted; /* A non-zero value means to read only this many characters rather than up to a character bound to accept-line. */ extern int rl_num_chars_to_read; /* The text of a currently-executing keyboard macro. */ extern char *rl_executing_macro; /* Variables to control readline signal handling. */ /* If non-zero, readline will install its own signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU. */ extern int rl_catch_signals; /* If non-zero, readline will install a signal handler for SIGWINCH that also attempts to call any calling application's SIGWINCH signal handler. Note that the terminal is not cleaned up before the application's signal handler is called; use rl_cleanup_after_signal() to do that. */ extern int rl_catch_sigwinch; /* If non-zero, the readline SIGWINCH handler will modify LINES and COLUMNS in the environment. */ extern int rl_change_environment; /* Completion variables. */ /* Pointer to the generator function for completion_matches (). NULL means to use rl_filename_completion_function (), the default filename completer. */ extern rl_compentry_func_t *rl_completion_entry_function; /* Optional generator for menu completion. Default is rl_completion_entry_function (rl_filename_completion_function). */ extern rl_compentry_func_t *rl_menu_completion_entry_function; /* If rl_ignore_some_completions_function is non-NULL it is the address of a function to call after all of the possible matches have been generated, but before the actual completion is done to the input line. The function is called with one argument; a NULL terminated array of (char *). If your function removes any of the elements, they must be free()'ed. */ extern rl_compignore_func_t *rl_ignore_some_completions_function; /* Pointer to alternative function to create matches. 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 then call the value of rl_completion_entry_function to try to match, otherwise use the array of strings returned. */ extern rl_completion_func_t *rl_attempted_completion_function; /* The basic list of characters that signal a break between words for the completer routine. The initial contents of this variable is what breaks words in the shell, i.e. "n\"\\'`@$>". */ extern const char *rl_basic_word_break_characters; /* The list of characters that signal a break between words for rl_complete_internal. The default list is the contents of rl_basic_word_break_characters. */ extern /*const*/ char *rl_completer_word_break_characters; /* Hook function to allow an application to set the completion word break characters before readline breaks up the line. Allows position-dependent word break characters. */ extern rl_cpvfunc_t *rl_completion_word_break_hook; /* 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. */ extern const char *rl_completer_quote_characters; /* List of quote characters which cause a word break. */ extern const char *rl_basic_quote_characters; /* List of characters that need to be quoted in filenames by the completer. */ extern const char *rl_filename_quote_characters; /* List of characters that are word break characters, but should be left in TEXT when it is passed to the completion function. The shell uses this to help determine what kind of completing to do. */ extern const char *rl_special_prefixes; /* If non-zero, then this is the address of a function to call when completing on a directory name. The function is called with the address of a string (the current directory name) as an arg. It changes what is displayed when the possible completions are printed or inserted. The directory completion hook should perform any necessary dequoting. This function should return 1 if it modifies the directory name pointer passed as an argument. If the directory completion hook returns 0, it should not modify the directory name pointer passed as an argument. */ extern rl_icppfunc_t *rl_directory_completion_hook; /* If non-zero, this is the address of a function to call when completing a directory name. This function takes the address of the directory name to be modified as an argument. Unlike rl_directory_completion_hook, it only modifies the directory name used in opendir(2), not what is displayed when the possible completions are printed or inserted. If set, it takes precedence over rl_directory_completion_hook. The directory rewrite hook should perform any necessary dequoting. This function has the same return value properties as the directory_completion_hook. I'm not happy with how this works yet, so it's undocumented. I'm trying it in bash to see how well it goes. */ extern rl_icppfunc_t *rl_directory_rewrite_hook; /* If non-zero, this is the address of a function for the completer to call before deciding which character to append to a completed name. It should modify the directory name passed as an argument if appropriate, and return non-zero if it modifies the name. This should not worry about dequoting the filename; that has already happened by the time it gets here. */ extern rl_icppfunc_t *rl_filename_stat_hook; /* If non-zero, this is the address of a function to call when reading directory entries from the filesystem for completion and comparing them to the partial word to be completed. The function should either return its first argument (if no conversion takes place) or newly-allocated memory. This can, for instance, convert filenames between character sets for comparison against what's typed at the keyboard. The returned value is what is added to the list of matches. The second argument is the length of the filename to be converted. */ extern rl_dequote_func_t *rl_filename_rewrite_hook; /* Backwards compatibility with previous versions of readline. */ #define rl_symbolic_link_hook rl_directory_completion_hook /* If non-zero, then this is the address of a function to call when completing a word would normally display the list of possible matches. This function is called instead of actually doing the display. It takes three arguments: (char **matches, int num_matches, int max_length) where MATCHES is the array of strings that matched, NUM_MATCHES is the number of strings in that array, and MAX_LENGTH is the length of the longest string in that array. */ extern rl_compdisp_func_t *rl_completion_display_matches_hook; /* 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 finder function. */ extern int rl_filename_completion_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 filename contains any characters in rl_word_break_chars. This is ALWAYS non-zero on entry, and can only be changed within a completion entry finder function. */ extern int rl_filename_quoting_desired; /* Set to a function to quote a filename in an application-specific fashion. Called with the text to quote, the type of match found (single or multiple) and a pointer to the quoting character to be used, which the function can reset if desired. */ extern rl_quote_func_t *rl_filename_quoting_function; /* Function to call to remove quoting characters from a filename. Called before completion is attempted, so the embedded quotes do not interfere with matching names in the file system. */ extern rl_dequote_func_t *rl_filename_dequoting_function; /* Function to call to decide whether or not a word break character is quoted. If a character is quoted, it does not break words for the completer. */ extern rl_linebuf_func_t *rl_char_is_quoted_p; /* Non-zero means to suppress normal filename completion after the user-specified completion function has been called. */ extern int rl_attempted_completion_over; /* Set to a character describing the type of completion being attempted by rl_complete_internal; available for use by application completion functions. */ extern int rl_completion_type; /* Set to the last key used to invoke one of the completion functions */ extern int rl_completion_invoking_key; /* 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. */ extern int rl_completion_query_items; /* Character appended to completed words when at the end of the line. The default is a space. Nothing is added if this is '\0'. */ extern int rl_completion_append_character; /* If set to non-zero by an application completion function, rl_completion_append_character will not be appended. */ extern int rl_completion_suppress_append; /* Set to any quote character readline thinks it finds before any application completion function is called. */ extern int rl_completion_quote_character; /* Set to a non-zero value if readline found quoting anywhere in the word to be completed; set before any application completion function is called. */ extern int rl_completion_found_quote; /* If non-zero, the completion functions don't append any closing quote. This is set to 0 by rl_complete_internal and may be changed by an application-specific completion function. */ extern int rl_completion_suppress_quote; /* If non-zero, readline will sort the completion matches. On by default. */ extern int rl_sort_completion_matches; /* If non-zero, a slash will be appended to completed filenames that are symbolic links to directory names, subject to the value of the mark-directories variable (which is user-settable). This exists so that application completion functions can override the user's preference (set via the mark-symlinked-directories variable) if appropriate. It's set to the value of _rl_complete_mark_symlink_dirs in rl_complete_internal before any application-specific completion function is called, so without that function doing anything, the user's preferences are honored. */ extern int rl_completion_mark_symlink_dirs; /* If non-zero, then disallow duplicates in the matches. */ extern int rl_ignore_completion_duplicates; /* If this is non-zero, completion is (temporarily) inhibited, and the completion character will be inserted as any other. */ extern int rl_inhibit_completion; /* Applications can set this to non-zero to have readline's signal handlers installed during the entire duration of reading a complete line, as in readline-6.2. This should be used with care, because it can result in readline receiving signals and not handling them until it's called again via rl_callback_read_char, thereby stealing them from the application. By default, signal handlers are only active while readline is active. */ extern int rl_persistent_signal_handlers; /* Input error; can be returned by (*rl_getc_function) if readline is reading a top-level command (RL_ISSTATE (RL_STATE_READCMD)). */ #define READERR (-2) /* Definitions available for use by readline clients. */ #define RL_PROMPT_START_IGNORE '\001' #define RL_PROMPT_END_IGNORE '\002' /* Possible values for do_replace argument to rl_filename_quoting_function, called by rl_complete_internal. */ #define NO_MATCH 0 #define SINGLE_MATCH 1 #define MULT_MATCH 2 /* Possible state values for rl_readline_state */ #define RL_STATE_NONE 0x000000 /* no state; before first call */ #define RL_STATE_INITIALIZING 0x0000001 /* initializing */ #define RL_STATE_INITIALIZED 0x0000002 /* initialization done */ #define RL_STATE_TERMPREPPED 0x0000004 /* terminal is prepped */ #define RL_STATE_READCMD 0x0000008 /* reading a command key */ #define RL_STATE_METANEXT 0x0000010 /* reading input after ESC */ #define RL_STATE_DISPATCHING 0x0000020 /* dispatching to a command */ #define RL_STATE_MOREINPUT 0x0000040 /* reading more input in a command function */ #define RL_STATE_ISEARCH 0x0000080 /* doing incremental search */ #define RL_STATE_NSEARCH 0x0000100 /* doing non-inc search */ #define RL_STATE_SEARCH 0x0000200 /* doing a history search */ #define RL_STATE_NUMERICARG 0x0000400 /* reading numeric argument */ #define RL_STATE_MACROINPUT 0x0000800 /* getting input from a macro */ #define RL_STATE_MACRODEF 0x0001000 /* defining keyboard macro */ #define RL_STATE_OVERWRITE 0x0002000 /* overwrite mode */ #define RL_STATE_COMPLETING 0x0004000 /* doing completion */ #define RL_STATE_SIGHANDLER 0x0008000 /* in readline sighandler */ #define RL_STATE_UNDOING 0x0010000 /* doing an undo */ #define RL_STATE_INPUTPENDING 0x0020000 /* rl_execute_next called */ #define RL_STATE_TTYCSAVED 0x0040000 /* tty special chars saved */ #define RL_STATE_CALLBACK 0x0080000 /* using the callback interface */ #define RL_STATE_VIMOTION 0x0100000 /* reading vi motion arg */ #define RL_STATE_MULTIKEY 0x0200000 /* reading multiple-key command */ #define RL_STATE_VICMDONCE 0x0400000 /* entered vi command mode at least once */ #define RL_STATE_CHARSEARCH 0x0800000 /* vi mode char search */ #define RL_STATE_REDISPLAYING 0x1000000 /* updating terminal display */ #define RL_STATE_DONE 0x2000000 /* done; accepted line */ #define RL_SETSTATE(x) (rl_readline_state |= (x)) #define RL_UNSETSTATE(x) (rl_readline_state &= ~(x)) #define RL_ISSTATE(x) (rl_readline_state & (x)) struct readline_state { /* line state */ int point; int end; int mark; int buflen; char *buffer; UNDO_LIST *ul; char *prompt; /* global state */ int rlstate; int done; Keymap kmap; /* input state */ rl_command_func_t *lastfunc; int insmode; int edmode; char *kseq; int kseqlen; int pendingin; FILE *inf; FILE *outf; char *macro; /* signal state */ int catchsigs; int catchsigwinch; /* search state */ /* completion state */ rl_compentry_func_t *entryfunc; rl_compentry_func_t *menuentryfunc; rl_compignore_func_t *ignorefunc; rl_completion_func_t *attemptfunc; char *wordbreakchars; /* options state */ /* hook state */ /* reserved for future expansion, so the struct size doesn't change */ char reserved[64]; }; extern int rl_save_state PARAMS((struct readline_state *)); extern int rl_restore_state PARAMS((struct readline_state *)); #ifdef __cplusplus } #endif #endif /* _READLINE_H_ */ readline-8.0/tcap.h000664 000436 000024 00000003171 12651440357 014340 0ustar00chetstaff000000 000000 /* tcap.h -- termcap library functions and variables. */ /* Copyright (C) 1996-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_RLTCAP_H_) #define _RLTCAP_H_ #if defined (HAVE_CONFIG_H) # include "config.h" #endif #if defined (HAVE_TERMCAP_H) # if defined (__linux__) && !defined (SPEED_T_IN_SYS_TYPES) # include "rltty.h" # endif # include #elif defined (HAVE_NCURSES_TERMCAP_H) # include #else /* On Solaris2, sys/types.h #includes sys/reg.h, which #defines PC. Unfortunately, PC is a global variable used by the termcap library. */ #ifdef PC # undef PC #endif extern char PC; extern char *UP, *BC; extern short ospeed; extern int tgetent (); extern int tgetflag (); extern int tgetnum (); extern char *tgetstr (); extern int tputs (); extern char *tgoto (); #endif /* HAVE_TERMCAP_H */ #endif /* !_RLTCAP_H_ */ readline-8.0/search.c000664 000436 000120 00000042405 13363140430 014624 0ustar00chetadmin000000 000000 /* search.c - code for non-incremental searching in emacs and vi modes. */ /* Copyright (C) 1992-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #include #if defined (HAVE_UNISTD_H) # include #endif #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif #include "rldefs.h" #include "rlmbutil.h" #include "readline.h" #include "history.h" #include "histlib.h" #include "rlprivate.h" #include "xmalloc.h" #ifdef abs # undef abs #endif #define abs(x) (((x) >= 0) ? (x) : -(x)) _rl_search_cxt *_rl_nscxt = 0; extern HIST_ENTRY *_rl_saved_line_for_history; /* Functions imported from the rest of the library. */ extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); static char *noninc_search_string = (char *) NULL; static int noninc_history_pos; static char *prev_line_found = (char *) NULL; static int rl_history_search_len; static int rl_history_search_pos; static int rl_history_search_flags; static char *history_search_string; static int history_string_size; static void make_history_line_current PARAMS((HIST_ENTRY *)); static int noninc_search_from_pos PARAMS((char *, int, int, int, int *)); static int noninc_dosearch PARAMS((char *, int, int)); static int noninc_search PARAMS((int, int)); static int rl_history_search_internal PARAMS((int, int)); static void rl_history_search_reinit PARAMS((int)); static _rl_search_cxt *_rl_nsearch_init PARAMS((int, int)); static void _rl_nsearch_abort PARAMS((_rl_search_cxt *)); static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int)); /* Make the data from the history entry ENTRY be the contents of the current line. This doesn't do anything with rl_point; the caller must set it. */ static void make_history_line_current (HIST_ENTRY *entry) { _rl_replace_text (entry->line, 0, rl_end); _rl_fix_point (1); #if defined (VI_MODE) if (rl_editing_mode == vi_mode) /* POSIX.2 says that the `U' command doesn't affect the copy of any command lines to the edit line. We're going to implement that by making the undo list start after the matching line is copied to the current editing buffer. */ rl_free_undo_list (); #endif if (_rl_saved_line_for_history) _rl_free_history_entry (_rl_saved_line_for_history); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; } /* Search the history list for STRING starting at absolute history position POS. If STRING begins with `^', the search must match STRING at the beginning of a history line, otherwise a full substring match is performed for STRING. DIR < 0 means to search backwards through the history list, DIR >= 0 means to search forward. */ static int noninc_search_from_pos (char *string, int pos, int dir, int flags, int *ncp) { int ret, old, sflags; char *s; if (pos < 0) return -1; old = where_history (); if (history_set_pos (pos) == 0) return -1; RL_SETSTATE(RL_STATE_SEARCH); /* These functions return the match offset in the line; history_offset gives the matching line in the history list */ if (flags & SF_PATTERN) { s = string; sflags = 0; /* Non-anchored search */ if (*s == '^') { sflags |= ANCHORED_SEARCH; s++; } ret = _hs_history_patsearch (s, dir, sflags); } else if (*string == '^') ret = history_search_prefix (string + 1, dir); else ret = history_search (string, dir); RL_UNSETSTATE(RL_STATE_SEARCH); if (ncp) *ncp = ret; /* caller will catch -1 to indicate no-op */ if (ret != -1) ret = where_history (); history_set_pos (old); return (ret); } /* Search for a line in the history containing STRING. If DIR is < 0, the search is backwards through previous entries, else through subsequent entries. Returns 1 if the search was successful, 0 otherwise. */ static int noninc_dosearch (char *string, int dir, int flags) { int oldpos, pos; HIST_ENTRY *entry; if (string == 0 || *string == '\0' || noninc_history_pos < 0) { rl_ding (); return 0; } pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir, flags, (int *)0); if (pos == -1) { /* Search failed, current history position unchanged. */ rl_maybe_unsave_line (); rl_clear_message (); rl_point = 0; rl_ding (); return 0; } noninc_history_pos = pos; oldpos = where_history (); history_set_pos (noninc_history_pos); entry = current_history (); /* will never be NULL after successful search */ #if defined (VI_MODE) if (rl_editing_mode != vi_mode) #endif history_set_pos (oldpos); make_history_line_current (entry); rl_point = 0; rl_mark = rl_end; rl_clear_message (); return 1; } static _rl_search_cxt * _rl_nsearch_init (int dir, int pchar) { _rl_search_cxt *cxt; char *p; cxt = _rl_scxt_alloc (RL_SEARCH_NSEARCH, 0); if (dir < 0) cxt->sflags |= SF_REVERSE; /* not strictly needed */ #if defined (VI_MODE) if (VI_COMMAND_MODE() && (pchar == '?' || pchar == '/')) cxt->sflags |= SF_PATTERN; #endif cxt->direction = dir; cxt->history_pos = cxt->save_line; rl_maybe_save_line (); /* Clear the undo list, since reading the search string should create its own undo list, and the whole list will end up being freed when we finish reading the search string. */ rl_undo_list = 0; /* Use the line buffer to read the search string. */ rl_line_buffer[0] = 0; rl_end = rl_point = 0; p = _rl_make_prompt_for_search (pchar ? pchar : ':'); rl_message ("%s", p); xfree (p); RL_SETSTATE(RL_STATE_NSEARCH); _rl_nscxt = cxt; return cxt; } int _rl_nsearch_cleanup (_rl_search_cxt *cxt, int r) { _rl_scxt_dispose (cxt, 0); _rl_nscxt = 0; RL_UNSETSTATE(RL_STATE_NSEARCH); return (r != 1); } static void _rl_nsearch_abort (_rl_search_cxt *cxt) { rl_maybe_unsave_line (); rl_clear_message (); rl_point = cxt->save_point; rl_mark = cxt->save_mark; rl_restore_prompt (); RL_UNSETSTATE (RL_STATE_NSEARCH); } /* Process just-read character C according to search context CXT. Return -1 if the caller should abort the search, 0 if we should break out of the loop, and 1 if we should continue to read characters. */ static int _rl_nsearch_dispatch (_rl_search_cxt *cxt, int c) { if (c < 0) c = CTRL ('C'); switch (c) { case CTRL('W'): rl_unix_word_rubout (1, c); break; case CTRL('U'): rl_unix_line_discard (1, c); break; case RETURN: case NEWLINE: return 0; case CTRL('H'): case RUBOUT: if (rl_point == 0) { _rl_nsearch_abort (cxt); return -1; } _rl_rubout_char (1, c); break; case CTRL('C'): case CTRL('G'): rl_ding (); _rl_nsearch_abort (cxt); return -1; default: #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_insert_text (cxt->mb); else #endif _rl_insert_char (1, c); break; } (*rl_redisplay_function) (); return 1; } /* Perform one search according to CXT, using NONINC_SEARCH_STRING. Return -1 if the search should be aborted, any other value means to clean up using _rl_nsearch_cleanup (). Returns 1 if the search was successful, 0 otherwise. */ static int _rl_nsearch_dosearch (_rl_search_cxt *cxt) { rl_mark = cxt->save_mark; /* If rl_point == 0, we want to re-use the previous search string and start from the saved history position. If there's no previous search string, punt. */ if (rl_point == 0) { if (noninc_search_string == 0) { rl_ding (); rl_restore_prompt (); RL_UNSETSTATE (RL_STATE_NSEARCH); return -1; } } else { /* We want to start the search from the current history position. */ noninc_history_pos = cxt->save_line; FREE (noninc_search_string); noninc_search_string = savestring (rl_line_buffer); /* If we don't want the subsequent undo list generated by the search matching a history line to include the contents of the search string, we need to clear rl_line_buffer here. For now, we just clear the undo list generated by reading the search string. (If the search fails, the old undo list will be restored by rl_maybe_unsave_line.) */ rl_free_undo_list (); } rl_restore_prompt (); return (noninc_dosearch (noninc_search_string, cxt->direction, cxt->sflags&SF_PATTERN)); } /* Search non-interactively through the history list. DIR < 0 means to search backwards through the history of previous commands; otherwise the search is for commands subsequent to the current position in the history list. PCHAR is the character to use for prompting when reading the search string; if not specified (0), it defaults to `:'. */ static int noninc_search (int dir, int pchar) { _rl_search_cxt *cxt; int c, r; cxt = _rl_nsearch_init (dir, pchar); if (RL_ISSTATE (RL_STATE_CALLBACK)) return (0); /* Read the search string. */ r = 0; while (1) { c = _rl_search_getchar (cxt); if (c < 0) { _rl_nsearch_abort (cxt); return 1; } if (c == 0) break; r = _rl_nsearch_dispatch (cxt, c); if (r < 0) return 1; else if (r == 0) break; } r = _rl_nsearch_dosearch (cxt); return ((r >= 0) ? _rl_nsearch_cleanup (cxt, r) : (r != 1)); } /* Search forward through the history list for a string. If the vi-mode code calls this, KEY will be `?'. */ int rl_noninc_forward_search (int count, int key) { return noninc_search (1, (key == '?') ? '?' : 0); } /* Reverse search the history list for a string. If the vi-mode code calls this, KEY will be `/'. */ int rl_noninc_reverse_search (int count, int key) { return noninc_search (-1, (key == '/') ? '/' : 0); } /* Search forward through the history list for the last string searched for. If there is no saved search string, abort. If the vi-mode code calls this, KEY will be `N'. */ int rl_noninc_forward_search_again (int count, int key) { int r; if (!noninc_search_string) { rl_ding (); return (1); } #if defined (VI_MODE) if (VI_COMMAND_MODE() && key == 'N') r = noninc_dosearch (noninc_search_string, 1, SF_PATTERN); else #endif r = noninc_dosearch (noninc_search_string, 1, 0); return (r != 1); } /* Reverse search in the history list for the last string searched for. If there is no saved search string, abort. If the vi-mode code calls this, KEY will be `n'. */ int rl_noninc_reverse_search_again (int count, int key) { int r; if (!noninc_search_string) { rl_ding (); return (1); } #if defined (VI_MODE) if (VI_COMMAND_MODE() && key == 'n') r = noninc_dosearch (noninc_search_string, -1, SF_PATTERN); else #endif r = noninc_dosearch (noninc_search_string, -1, 0); return (r != 1); } #if defined (READLINE_CALLBACKS) int _rl_nsearch_callback (_rl_search_cxt *cxt) { int c, r; c = _rl_search_getchar (cxt); if (c <= 0) { if (c < 0) _rl_nsearch_abort (cxt); return 1; } r = _rl_nsearch_dispatch (cxt, c); if (r != 0) return 1; r = _rl_nsearch_dosearch (cxt); return ((r >= 0) ? _rl_nsearch_cleanup (cxt, r) : (r != 1)); } #endif static int rl_history_search_internal (int count, int dir) { HIST_ENTRY *temp; int ret, oldpos, newcol; char *t; rl_maybe_save_line (); temp = (HIST_ENTRY *)NULL; /* Search COUNT times through the history for a line matching history_search_string. If history_search_string[0] == '^', the line must match from the start; otherwise any substring can match. When this loop finishes, TEMP, if non-null, is the history line to copy into the line buffer. */ while (count) { RL_CHECK_SIGNALS (); ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir, 0, &newcol); if (ret == -1) break; /* Get the history entry we found. */ rl_history_search_pos = ret; oldpos = where_history (); history_set_pos (rl_history_search_pos); temp = current_history (); /* will never be NULL after successful search */ history_set_pos (oldpos); /* Don't find multiple instances of the same line. */ if (prev_line_found && STREQ (prev_line_found, temp->line)) continue; prev_line_found = temp->line; count--; } /* If we didn't find anything at all, return. */ if (temp == 0) { rl_maybe_unsave_line (); rl_ding (); /* If you don't want the saved history line (last match) to show up in the line buffer after the search fails, change the #if 0 to #if 1 */ #if 0 if (rl_point > rl_history_search_len) { rl_point = rl_end = rl_history_search_len; rl_line_buffer[rl_end] = '\0'; rl_mark = 0; } #else rl_point = rl_history_search_len; /* rl_maybe_unsave_line changes it */ rl_mark = rl_end; #endif return 1; } /* Copy the line we found into the current line buffer. */ make_history_line_current (temp); /* decide where to put rl_point -- need to change this for pattern search */ if (rl_history_search_flags & ANCHORED_SEARCH) rl_point = rl_history_search_len; /* easy case */ else { #if 0 t = strstr (rl_line_buffer, history_search_string); /* XXX */ rl_point = t ? (int)(t - rl_line_buffer) + rl_history_search_len : rl_end; #else rl_point = (newcol >= 0) ? newcol : rl_end; #endif } rl_mark = rl_end; return 0; } static void rl_history_search_reinit (int flags) { int sind; rl_history_search_pos = where_history (); rl_history_search_len = rl_point; rl_history_search_flags = flags; prev_line_found = (char *)NULL; if (rl_point) { /* Allocate enough space for anchored and non-anchored searches */ if (rl_history_search_len >= history_string_size - 2) { history_string_size = rl_history_search_len + 2; history_search_string = (char *)xrealloc (history_search_string, history_string_size); } sind = 0; if (flags & ANCHORED_SEARCH) history_search_string[sind++] = '^'; strncpy (history_search_string + sind, rl_line_buffer, rl_point); history_search_string[rl_point + sind] = '\0'; } _rl_free_saved_history_line (); } /* Search forward in the history for the string of characters from the start of the line to rl_point. This is a non-incremental search. The search is anchored to the beginning of the history line. */ int rl_history_search_forward (int count, int ignore) { if (count == 0) return (0); if (rl_last_func != rl_history_search_forward && rl_last_func != rl_history_search_backward) rl_history_search_reinit (ANCHORED_SEARCH); if (rl_history_search_len == 0) return (rl_get_next_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1)); } /* Search backward through the history for the string of characters from the start of the line to rl_point. This is a non-incremental search. */ int rl_history_search_backward (int count, int ignore) { if (count == 0) return (0); if (rl_last_func != rl_history_search_forward && rl_last_func != rl_history_search_backward) rl_history_search_reinit (ANCHORED_SEARCH); if (rl_history_search_len == 0) return (rl_get_previous_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1)); } /* Search forward in the history for the string of characters from the start of the line to rl_point. This is a non-incremental search. The search succeeds if the search string is present anywhere in the history line. */ int rl_history_substr_search_forward (int count, int ignore) { if (count == 0) return (0); if (rl_last_func != rl_history_substr_search_forward && rl_last_func != rl_history_substr_search_backward) rl_history_search_reinit (NON_ANCHORED_SEARCH); if (rl_history_search_len == 0) return (rl_get_next_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1)); } /* Search backward through the history for the string of characters from the start of the line to rl_point. This is a non-incremental search. */ int rl_history_substr_search_backward (int count, int ignore) { if (count == 0) return (0); if (rl_last_func != rl_history_substr_search_forward && rl_last_func != rl_history_substr_search_backward) rl_history_search_reinit (NON_ANCHORED_SEARCH); if (rl_history_search_len == 0) return (rl_get_previous_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1)); } readline-8.0/macro.c000664 000436 000120 00000020035 13052152505 014454 0ustar00chetadmin000000 000000 /* macro.c -- keyboard macros for readline. */ /* Copyright (C) 1994-2009,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #if defined (HAVE_UNISTD_H) # include /* for _POSIX_VERSION */ #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include /* System-specific feature definitions and include files. */ #include "rldefs.h" /* Some standard library routines. */ #include "readline.h" #include "history.h" #include "rlprivate.h" #include "xmalloc.h" #define MAX_MACRO_LEVEL 16 /* **************************************************************** */ /* */ /* Hacking Keyboard Macros */ /* */ /* **************************************************************** */ /* The currently executing macro string. If this is non-zero, then it is a malloc ()'ed string where input is coming from. */ char *rl_executing_macro = (char *)NULL; /* The offset in the above string to the next character to be read. */ static int executing_macro_index; /* The current macro string being built. Characters get stuffed in here by add_macro_char (). */ static char *current_macro = (char *)NULL; /* The size of the buffer allocated to current_macro. */ static int current_macro_size; /* The index at which characters are being added to current_macro. */ static int current_macro_index; /* A structure used to save nested macro strings. It is a linked list of string/index for each saved macro. */ struct saved_macro { struct saved_macro *next; char *string; int sindex; }; /* The list of saved macros. */ static struct saved_macro *macro_list = (struct saved_macro *)NULL; static int macro_level = 0; /* Set up to read subsequent input from STRING. STRING is free ()'ed when we are done with it. */ void _rl_with_macro_input (char *string) { if (macro_level > MAX_MACRO_LEVEL) { _rl_errmsg ("maximum macro execution nesting level exceeded"); _rl_abort_internal (); return; } #if 0 if (rl_executing_macro) /* XXX - later */ #endif _rl_push_executing_macro (); rl_executing_macro = string; executing_macro_index = 0; RL_SETSTATE(RL_STATE_MACROINPUT); } /* Return the next character available from a macro, or 0 if there are no macro characters. */ int _rl_next_macro_key (void) { int c; if (rl_executing_macro == 0) return (0); if (rl_executing_macro[executing_macro_index] == 0) { _rl_pop_executing_macro (); return (_rl_next_macro_key ()); } #if defined (READLINE_CALLBACKS) c = rl_executing_macro[executing_macro_index++]; if (RL_ISSTATE (RL_STATE_CALLBACK) && RL_ISSTATE (RL_STATE_READCMD|RL_STATE_MOREINPUT) && rl_executing_macro[executing_macro_index] == 0) _rl_pop_executing_macro (); return c; #else /* XXX - consider doing the same as the callback code, just not testing whether we're running in callback mode */ return (rl_executing_macro[executing_macro_index++]); #endif } int _rl_peek_macro_key (void) { if (rl_executing_macro == 0) return (0); if (rl_executing_macro[executing_macro_index] == 0 && (macro_list == 0 || macro_list->string == 0)) return (0); if (rl_executing_macro[executing_macro_index] == 0 && macro_list && macro_list->string) return (macro_list->string[0]); return (rl_executing_macro[executing_macro_index]); } int _rl_prev_macro_key (void) { if (rl_executing_macro == 0) return (0); if (executing_macro_index == 0) return (0); executing_macro_index--; return (rl_executing_macro[executing_macro_index]); } /* Save the currently executing macro on a stack of saved macros. */ void _rl_push_executing_macro (void) { struct saved_macro *saver; saver = (struct saved_macro *)xmalloc (sizeof (struct saved_macro)); saver->next = macro_list; saver->sindex = executing_macro_index; saver->string = rl_executing_macro; macro_list = saver; macro_level++; } /* Discard the current macro, replacing it with the one on the top of the stack of saved macros. */ void _rl_pop_executing_macro (void) { struct saved_macro *macro; FREE (rl_executing_macro); rl_executing_macro = (char *)NULL; executing_macro_index = 0; if (macro_list) { macro = macro_list; rl_executing_macro = macro_list->string; executing_macro_index = macro_list->sindex; macro_list = macro_list->next; xfree (macro); } macro_level--; if (rl_executing_macro == 0) RL_UNSETSTATE(RL_STATE_MACROINPUT); } /* Add a character to the macro being built. */ void _rl_add_macro_char (int c) { if (current_macro_index + 1 >= current_macro_size) { if (current_macro == 0) current_macro = (char *)xmalloc (current_macro_size = 25); else current_macro = (char *)xrealloc (current_macro, current_macro_size += 25); } current_macro[current_macro_index++] = c; current_macro[current_macro_index] = '\0'; } void _rl_kill_kbd_macro (void) { if (current_macro) { xfree (current_macro); current_macro = (char *) NULL; } current_macro_size = current_macro_index = 0; FREE (rl_executing_macro); rl_executing_macro = (char *) NULL; executing_macro_index = 0; RL_UNSETSTATE(RL_STATE_MACRODEF); } /* Begin defining a keyboard macro. Keystrokes are recorded as they are executed. End the definition with rl_end_kbd_macro (). If a numeric argument was explicitly typed, then append this definition to the end of the existing macro, and start by re-executing the existing macro. */ int rl_start_kbd_macro (int ignore1, int ignore2) { if (RL_ISSTATE (RL_STATE_MACRODEF)) { _rl_abort_internal (); return 1; } if (rl_explicit_arg) { if (current_macro) _rl_with_macro_input (savestring (current_macro)); } else current_macro_index = 0; RL_SETSTATE(RL_STATE_MACRODEF); return 0; } /* Stop defining a keyboard macro. A numeric argument says to execute the macro right now, that many times, counting the definition as the first time. */ int rl_end_kbd_macro (int count, int ignore) { if (RL_ISSTATE (RL_STATE_MACRODEF) == 0) { _rl_abort_internal (); return 1; } current_macro_index -= rl_key_sequence_length; current_macro[current_macro_index] = '\0'; RL_UNSETSTATE(RL_STATE_MACRODEF); return (rl_call_last_kbd_macro (--count, 0)); } /* Execute the most recently defined keyboard macro. COUNT says how many times to execute it. */ int rl_call_last_kbd_macro (int count, int ignore) { if (current_macro == 0) _rl_abort_internal (); if (RL_ISSTATE (RL_STATE_MACRODEF)) { rl_ding (); /* no recursive macros */ current_macro[--current_macro_index] = '\0'; /* erase this char */ return 0; } while (count--) _rl_with_macro_input (savestring (current_macro)); return 0; } int rl_print_last_kbd_macro (int count, int ignore) { char *m; if (current_macro == 0) { rl_ding (); return 0; } m = _rl_untranslate_macro_value (current_macro, 1); rl_crlf (); printf ("%s", m); fflush (stdout); rl_crlf (); FREE (m); rl_forced_update_display (); rl_display_fixed = 1; return 0; } void rl_push_macro_input (char *macro) { _rl_with_macro_input (macro); } readline-8.0/rldefs.h000664 000436 000024 00000011404 12211146044 014652 0ustar00chetstaff000000 000000 /* rldefs.h -- an attempt to isolate some of the system-specific defines for readline. This should be included after any files that define system-specific constants like _POSIX_VERSION or USG. */ /* Copyright (C) 1987-2011 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_RLDEFS_H_) #define _RLDEFS_H_ #if defined (HAVE_CONFIG_H) # include "config.h" #endif #include "rlstdc.h" #if defined (STRCOLL_BROKEN) # undef HAVE_STRCOLL #endif #if defined (_POSIX_VERSION) && !defined (TERMIOS_MISSING) # define TERMIOS_TTY_DRIVER #else # if defined (HAVE_TERMIO_H) # define TERMIO_TTY_DRIVER # else # if !defined (__MINGW32__) # define NEW_TTY_DRIVER # else # define NO_TTY_DRIVER # endif # endif #endif /* Posix macro to check file in statbuf for directory-ness. This requires that be included before this test. */ #if defined (S_IFDIR) && !defined (S_ISDIR) # define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) #endif /* Decide which flavor of the header file describing the C library string functions to include and include it. */ #if defined (HAVE_STRING_H) # include #else /* !HAVE_STRING_H */ # include #endif /* !HAVE_STRING_H */ #if !defined (strchr) && !defined (__STDC__) extern char *strchr (), *strrchr (); #endif /* !strchr && !__STDC__ */ #if defined (PREFER_STDARG) # include #else # if defined (PREFER_VARARGS) # include # endif #endif #if defined (HAVE_STRCASECMP) #define _rl_stricmp strcasecmp #define _rl_strnicmp strncasecmp #else extern int _rl_stricmp PARAMS((const char *, const char *)); extern int _rl_strnicmp PARAMS((const char *, const char *, int)); #endif #if defined (HAVE_STRPBRK) && !defined (HAVE_MULTIBYTE) # define _rl_strpbrk(a,b) strpbrk((a),(b)) #else extern char *_rl_strpbrk PARAMS((const char *, const char *)); #endif #if !defined (emacs_mode) # define no_mode -1 # define vi_mode 0 # define emacs_mode 1 #endif #if !defined (RL_IM_INSERT) # define RL_IM_INSERT 1 # define RL_IM_OVERWRITE 0 # # define RL_IM_DEFAULT RL_IM_INSERT #endif /* If you cast map[key].function to type (Keymap) on a Cray, the compiler takes the value of map[key].function and divides it by 4 to convert between pointer types (pointers to functions and pointers to structs are different sizes). This is not what is wanted. */ #if defined (CRAY) # define FUNCTION_TO_KEYMAP(map, key) (Keymap)((int)map[key].function) # define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)((int)(data)) #else # define FUNCTION_TO_KEYMAP(map, key) (Keymap)(map[key].function) # define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)(data) #endif #ifndef savestring #define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x)) #endif /* Possible values for _rl_bell_preference. */ #define NO_BELL 0 #define AUDIBLE_BELL 1 #define VISIBLE_BELL 2 /* Definitions used when searching the line for characters. */ /* NOTE: it is necessary that opposite directions are inverses */ #define FTO 1 /* forward to */ #define BTO -1 /* backward to */ #define FFIND 2 /* forward find */ #define BFIND -2 /* backward find */ /* Possible values for the found_quote flags word used by the completion functions. It says what kind of (shell-like) quoting we found anywhere in the line. */ #define RL_QF_SINGLE_QUOTE 0x01 #define RL_QF_DOUBLE_QUOTE 0x02 #define RL_QF_BACKSLASH 0x04 #define RL_QF_OTHER_QUOTE 0x08 /* Default readline line buffer length. */ #define DEFAULT_BUFFER_SIZE 256 #if !defined (STREQ) #define STREQ(a, b) (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0)) #define STREQN(a, b, n) (((n) == 0) ? (1) \ : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0)) #endif #if !defined (RL_STRLEN) # define RL_STRLEN(s) (((s) && (s)[0]) ? ((s)[1] ? ((s)[2] ? strlen(s) : 2) : 1) : 0) #endif #if !defined (FREE) # define FREE(x) if (x) free (x) #endif #if !defined (SWAP) # define SWAP(s, e) do { int t; t = s; s = e; e = t; } while (0) #endif /* CONFIGURATION SECTION */ #include "rlconf.h" #endif /* !_RLDEFS_H_ */ readline-8.0/MANIFEST000664 000436 000000 00000005463 13350231034 014355 0ustar00chetwheel000000 000000 # # Master distribution manifest for the standalone readline distribution # doc d examples d examples/autoconf d examples/rlfe d support d shlib d COPYING f README f MANIFEST f INSTALL f CHANGELOG f CHANGES f NEWS f USAGE f aclocal.m4 f config.h.in f configure f configure.ac f Makefile.in f readline.pc.in f ansi_stdlib.h f chardefs.h f colors.h f history.h f histlib.h f keymaps.h f parse-colors.h f posixdir.h f posixjmp.h f posixselect.h f posixstat.h f readline.h f rlconf.h f rldefs.h f rlmbutil.h f rlprivate.h f rlshell.h f rlstdc.h f rltty.h f rltypedefs.h f rlwinsize.h f tcap.h f tilde.h f xmalloc.h f bind.c f callback.c f colors.c f compat.c f complete.c f display.c f emacs_keymap.c f funmap.c f input.c f isearch.c f keymaps.c f kill.c f macro.c f mbutil.c f misc.c f nls.c f parens.c f parse-colors.c f readline.c f rltty.c f savestring.c f search.c f shell.c f signals.c f terminal.c f text.c f tilde.c f undo.c f util.c f vi_keymap.c f vi_mode.c f xfree.c f xmalloc.c f history.c f histexpand.c f histfile.c f histsearch.c f patchlevel f shlib/Makefile.in f support/config.guess f support/config.rpath f support/config.sub f support/install.sh f support/mkdirs f support/mkdist f support/mkinstalldirs f support/shobj-conf f support/shlib-install f support/wcwidth.c f doc/Makefile.in f doc/texinfo.tex f doc/version.texi f doc/fdl.texi f doc/rlman.texi f doc/rltech.texi f doc/rluser.texi f doc/rluserman.texi f doc/history.texi f doc/hstech.texi f doc/hsuser.texi f doc/readline.3 f doc/history.3 f doc/texi2dvi f doc/texi2html f examples/Makefile.in f examples/excallback.c f examples/fileman.c f examples/manexamp.c f examples/readlinebuf.h f examples/rl-fgets.c f examples/rlbasic.c f examples/rlcat.c f examples/rlevent.c f examples/rlkeymaps.c f examples/rltest.c f examples/rl-callbacktest.c f examples/rl.c f examples/rlptytest.c f examples/rlversion.c f examples/histexamp.c f examples/hist_erasedups.c f examples/hist_purgecmd.c f examples/Inputrc f examples/autoconf/BASH_CHECK_LIB_TERMCAP f examples/autoconf/RL_LIB_READLINE_VERSION f examples/autoconf/wi_LIB_READLINE f examples/rlfe/ChangeLog f examples/rlfe/Makefile.in f examples/rlfe/README f examples/rlfe/config.h.in f examples/rlfe/configure f examples/rlfe/configure.in f examples/rlfe/extern.h f examples/rlfe/os.h f examples/rlfe/pty.c f examples/rlfe/rlfe.c f examples/rlfe/screen.h f examples/rlwrap-0.30.tar.gz f # formatted documentation, from MANIFEST.doc doc/readline.ps f doc/history.ps f doc/rluserman.ps f doc/readline.dvi f doc/history.dvi f doc/rluserman.dvi f doc/readline.info f doc/history.info f doc/rluserman.info f doc/readline.html f doc/history.html f doc/rluserman.html f doc/readline.0 f doc/history.0 f doc/readline_3.ps f doc/history_3.ps f doc/history.pdf f doc/readline.pdf f doc/rluserman.pdf f readline-8.0/tilde.h000664 000436 000000 00000005746 11130207325 014502 0ustar00chetwheel000000 000000 /* tilde.h: Externally available variables and function in libtilde.a. */ /* Copyright (C) 1992-2009 Free Software Foundation, Inc. This file contains the Readline Library (Readline), a set of routines for providing Emacs style line input to programs that ask for it. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_TILDE_H_) # define _TILDE_H_ #ifdef __cplusplus extern "C" { #endif /* A function can be defined using prototypes and compile on both ANSI C and traditional C compilers with something like this: extern char *func PARAMS((char *, char *, int)); */ #if !defined (PARAMS) # if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) # define PARAMS(protos) protos # else # define PARAMS(protos) () # endif #endif typedef char *tilde_hook_func_t PARAMS((char *)); /* If non-null, this contains the address of a function that the application wants called before trying the standard tilde expansions. The function is called with the text sans tilde, and returns a malloc()'ed string which is the expansion, or a NULL pointer if the expansion fails. */ extern tilde_hook_func_t *tilde_expansion_preexpansion_hook; /* If non-null, this contains the address of a function to call if the standard meaning for expanding a tilde fails. The function is called with the text (sans tilde, as in "foo"), and returns a malloc()'ed string which is the expansion, or a NULL pointer if there is no expansion. */ extern tilde_hook_func_t *tilde_expansion_failure_hook; /* When non-null, this is a NULL terminated array of strings which are duplicates for a tilde prefix. Bash uses this to expand `=~' and `:~'. */ extern char **tilde_additional_prefixes; /* When non-null, this is a NULL terminated array of strings which match the end of a username, instead of just "/". Bash sets this to `:' and `=~'. */ extern char **tilde_additional_suffixes; /* Return a new string which is the result of tilde expanding STRING. */ extern char *tilde_expand PARAMS((const char *)); /* Do the work of tilde expansion on FILENAME. FILENAME starts with a tilde. If there is no expansion, call tilde_expansion_failure_hook. */ extern char *tilde_expand_word PARAMS((const char *)); /* Find the portion of the string beginning with ~ that should be expanded. */ extern char *tilde_find_word PARAMS((const char *, int, int *)); #ifdef __cplusplus } #endif #endif /* _TILDE_H_ */ readline-8.0/parse-colors.h000644 000436 000000 00000002777 11741616321 016021 0ustar00chetwheel000000 000000 /* `dir', `vdir' and `ls' directory listing programs for GNU. Modified by Chet Ramey for Readline. Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* Written by Richard Stallman and David MacKenzie. */ /* Color support by Peter Anvin and Dennis Flaherty based on original patches by Greg Lee . */ #ifndef _PARSE_COLORS_H_ #define _PARSE_COLORS_H_ #include "readline.h" #define LEN_STR_PAIR(s) sizeof (s) - 1, s void _rl_parse_colors (void); static const char *const indicator_name[]= { "lc", "rc", "ec", "rs", "no", "fi", "di", "ln", "pi", "so", "bd", "cd", "mi", "or", "ex", "do", "su", "sg", "st", "ow", "tw", "ca", "mh", "cl", NULL }; /* Buffer for color sequences */ static char *color_buf; #endif /* !_PARSE_COLORS_H_ */ readline-8.0/vi_mode.c000644 000436 000000 00000150541 13354466001 015016 0ustar00chetwheel000000 000000 /* vi_mode.c -- A vi emulation mode for Bash. Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */ /* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY /* **************************************************************** */ /* */ /* VI Emulation Mode */ /* */ /* **************************************************************** */ #include "rlconf.h" #if defined (VI_MODE) #if defined (HAVE_CONFIG_H) # include #endif #include #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #if defined (HAVE_UNISTD_H) # include #endif #include /* Some standard library routines. */ #include "rldefs.h" #include "rlmbutil.h" #include "readline.h" #include "history.h" #include "rlprivate.h" #include "xmalloc.h" #ifndef member #define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0) #endif /* Increment START to the next character in RL_LINE_BUFFER, handling multibyte chars */ #if defined (HANDLE_MULTIBYTE) #define INCREMENT_POS(start) \ do { \ if (MB_CUR_MAX == 1 || rl_byte_oriented) \ start++; \ else \ start = _rl_find_next_mbchar (rl_line_buffer, start, 1, MB_FIND_ANY); \ } while (0) #else /* !HANDLE_MULTIBYTE */ #define INCREMENT_POS(start) (start)++ #endif /* !HANDLE_MULTIBYTE */ /* This is global so other parts of the code can check whether the last command was a text modification command. */ int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */ _rl_vimotion_cxt *_rl_vimvcxt = 0; /* Non-zero indicates we are redoing a vi-mode command with `.' */ int _rl_vi_redoing; /* Non-zero means enter insertion mode. */ static int _rl_vi_doing_insert; /* Command keys which do movement for xxx_to commands. */ static const char * const vi_motion = " hl^$0ftFT;,%wbeWBE|`"; /* Keymap used for vi replace characters. Created dynamically since rarely used. */ static Keymap vi_replace_map; /* The number of characters inserted in the last replace operation. */ static int vi_replace_count; /* If non-zero, we have text inserted after a c[motion] command that put us implicitly into insert mode. Some people want this text to be attached to the command so that it is `redoable' with `.'. */ static int vi_continued_command; static char *vi_insert_buffer; static int vi_insert_buffer_size; static int _rl_vi_last_repeat = 1; static int _rl_vi_last_arg_sign = 1; static int _rl_vi_last_motion; #if defined (HANDLE_MULTIBYTE) static char _rl_vi_last_search_mbchar[MB_LEN_MAX]; static int _rl_vi_last_search_mblen; #else static int _rl_vi_last_search_char; #endif static char _rl_vi_last_replacement[MB_LEN_MAX+1]; /* reserve for trailing NULL */ static int _rl_vi_last_key_before_insert; /* Text modification commands. These are the `redoable' commands. */ static const char * const vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~"; /* Arrays for the saved marks. */ static int vi_mark_chars['z' - 'a' + 1]; static void _rl_vi_replace_insert PARAMS((int)); static void _rl_vi_save_replace PARAMS((void)); static void _rl_vi_stuff_insert PARAMS((int)); static void _rl_vi_save_insert PARAMS((UNDO_LIST *)); static void vi_save_insert_buffer PARAMS ((int, int)); static inline void _rl_vi_backup PARAMS((void)); static int _rl_vi_arg_dispatch PARAMS((int)); static int rl_digit_loop1 PARAMS((void)); static int _rl_vi_set_mark PARAMS((void)); static int _rl_vi_goto_mark PARAMS((void)); static inline int _rl_vi_advance_point PARAMS((void)); static inline int _rl_vi_backup_point PARAMS((void)); static void _rl_vi_append_forward PARAMS((int)); static int _rl_vi_callback_getchar PARAMS((char *, int)); #if defined (READLINE_CALLBACKS) static int _rl_vi_callback_set_mark PARAMS((_rl_callback_generic_arg *)); static int _rl_vi_callback_goto_mark PARAMS((_rl_callback_generic_arg *)); static int _rl_vi_callback_change_char PARAMS((_rl_callback_generic_arg *)); static int _rl_vi_callback_char_search PARAMS((_rl_callback_generic_arg *)); #endif static int rl_domove_read_callback PARAMS((_rl_vimotion_cxt *)); static int rl_domove_motion_callback PARAMS((_rl_vimotion_cxt *)); static int rl_vi_domove_getchar PARAMS((_rl_vimotion_cxt *)); static int vi_change_dispatch PARAMS((_rl_vimotion_cxt *)); static int vi_delete_dispatch PARAMS((_rl_vimotion_cxt *)); static int vi_yank_dispatch PARAMS((_rl_vimotion_cxt *)); static int vidomove_dispatch PARAMS((_rl_vimotion_cxt *)); void _rl_vi_initialize_line (void) { register int i, n; n = sizeof (vi_mark_chars) / sizeof (vi_mark_chars[0]); for (i = 0; i < n; i++) vi_mark_chars[i] = -1; RL_UNSETSTATE(RL_STATE_VICMDONCE); } void _rl_vi_reset_last (void) { _rl_vi_last_command = 'i'; _rl_vi_last_repeat = 1; _rl_vi_last_arg_sign = 1; _rl_vi_last_motion = 0; } void _rl_vi_set_last (int key, int repeat, int sign) { _rl_vi_last_command = key; _rl_vi_last_repeat = repeat; _rl_vi_last_arg_sign = sign; } /* A convenience function that calls _rl_vi_set_last to save the last command information and enters insertion mode. */ void rl_vi_start_inserting (int key, int repeat, int sign) { _rl_vi_set_last (key, repeat, sign); rl_begin_undo_group (); /* ensure inserts aren't concatenated */ rl_vi_insertion_mode (1, key); } /* Is the command C a VI mode text modification command? */ int _rl_vi_textmod_command (int c) { return (member (c, vi_textmod)); } int _rl_vi_motion_command (int c) { return (member (c, vi_motion)); } static void _rl_vi_replace_insert (int count) { int nchars; nchars = strlen (vi_insert_buffer); rl_begin_undo_group (); while (count--) /* nchars-1 to compensate for _rl_replace_text using `end+1' in call to rl_delete_text */ _rl_replace_text (vi_insert_buffer, rl_point, rl_point+nchars-1); rl_end_undo_group (); } static void _rl_vi_stuff_insert (int count) { rl_begin_undo_group (); while (count--) rl_insert_text (vi_insert_buffer); rl_end_undo_group (); } /* Bound to `.'. Called from command mode, so we know that we have to redo a text modification command. The default for _rl_vi_last_command puts you back into insert mode. */ int rl_vi_redo (int count, int c) { int r; if (rl_explicit_arg == 0) { rl_numeric_arg = _rl_vi_last_repeat; rl_arg_sign = _rl_vi_last_arg_sign; } r = 0; _rl_vi_redoing = 1; /* If we're redoing an insert with `i', stuff in the inserted text and do not go into insertion mode. */ if (_rl_vi_last_command == 'i' && vi_insert_buffer && *vi_insert_buffer) { _rl_vi_stuff_insert (count); /* And back up point over the last character inserted. */ if (rl_point > 0) _rl_vi_backup (); } else if (_rl_vi_last_command == 'R' && vi_insert_buffer && *vi_insert_buffer) { _rl_vi_replace_insert (count); /* And back up point over the last character inserted. */ if (rl_point > 0) _rl_vi_backup (); } /* Ditto for redoing an insert with `I', but move to the beginning of the line like the `I' command does. */ else if (_rl_vi_last_command == 'I' && vi_insert_buffer && *vi_insert_buffer) { rl_beg_of_line (1, 'I'); _rl_vi_stuff_insert (count); if (rl_point > 0) _rl_vi_backup (); } /* Ditto for redoing an insert with `a', but move forward a character first like the `a' command does. */ else if (_rl_vi_last_command == 'a' && vi_insert_buffer && *vi_insert_buffer) { _rl_vi_append_forward ('a'); _rl_vi_stuff_insert (count); if (rl_point > 0) _rl_vi_backup (); } /* Ditto for redoing an insert with `A', but move to the end of the line like the `A' command does. */ else if (_rl_vi_last_command == 'A' && vi_insert_buffer && *vi_insert_buffer) { rl_end_of_line (1, 'A'); _rl_vi_stuff_insert (count); if (rl_point > 0) _rl_vi_backup (); } else r = _rl_dispatch (_rl_vi_last_command, _rl_keymap); _rl_vi_redoing = 0; return (r); } /* A placeholder for further expansion. */ int rl_vi_undo (int count, int key) { return (rl_undo_command (count, key)); } /* Yank the nth arg from the previous line into this line at point. */ int rl_vi_yank_arg (int count, int key) { /* Readline thinks that the first word on a line is the 0th, while vi thinks the first word on a line is the 1st. Compensate. */ if (rl_explicit_arg) rl_yank_nth_arg (count - 1, 0); else rl_yank_nth_arg ('$', 0); return (0); } /* With an argument, move back that many history lines, else move to the beginning of history. */ int rl_vi_fetch_history (int count, int c) { int wanted; /* Giving an argument of n means we want the nth command in the history file. The command number is interpreted the same way that the bash `history' command does it -- that is, giving an argument count of 450 to this command would get the command listed as number 450 in the output of `history'. */ if (rl_explicit_arg) { wanted = history_base + where_history () - count; if (wanted <= 0) rl_beginning_of_history (0, 0); else rl_get_previous_history (wanted, c); } else rl_beginning_of_history (count, 0); return (0); } /* Search again for the last thing searched for. */ int rl_vi_search_again (int count, int key) { switch (key) { case 'n': rl_noninc_reverse_search_again (count, key); break; case 'N': rl_noninc_forward_search_again (count, key); break; } return (0); } /* Do a vi style search. */ int rl_vi_search (int count, int key) { switch (key) { case '?': _rl_free_saved_history_line (); rl_noninc_forward_search (count, key); break; case '/': _rl_free_saved_history_line (); rl_noninc_reverse_search (count, key); break; default: rl_ding (); break; } return (0); } /* Completion, from vi's point of view. */ int rl_vi_complete (int ignore, int key) { if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point]))) { if (!whitespace (rl_line_buffer[rl_point + 1])) rl_vi_end_word (1, 'E'); _rl_vi_advance_point (); } if (key == '*') rl_complete_internal ('*'); /* Expansion and replacement. */ else if (key == '=') rl_complete_internal ('?'); /* List possible completions. */ else if (key == '\\') rl_complete_internal (TAB); /* Standard Readline completion. */ else rl_complete (0, key); if (key == '*' || key == '\\') rl_vi_start_inserting (key, 1, rl_arg_sign); return (0); } /* Tilde expansion for vi mode. */ int rl_vi_tilde_expand (int ignore, int key) { rl_tilde_expand (0, key); rl_vi_start_inserting (key, 1, rl_arg_sign); return (0); } /* Previous word in vi mode. */ int rl_vi_prev_word (int count, int key) { if (count < 0) return (rl_vi_next_word (-count, key)); if (rl_point == 0) { rl_ding (); return (0); } if (_rl_uppercase_p (key)) rl_vi_bWord (count, key); else rl_vi_bword (count, key); return (0); } /* Next word in vi mode. */ int rl_vi_next_word (int count, int key) { if (count < 0) return (rl_vi_prev_word (-count, key)); if (rl_point >= (rl_end - 1)) { rl_ding (); return (0); } if (_rl_uppercase_p (key)) rl_vi_fWord (count, key); else rl_vi_fword (count, key); return (0); } static inline int _rl_vi_advance_point (void) { int point; point = rl_point; if (rl_point < rl_end) #if defined (HANDLE_MULTIBYTE) { if (MB_CUR_MAX == 1 || rl_byte_oriented) rl_point++; else { point = rl_point; rl_point = _rl_forward_char_internal (1); if (point == rl_point || rl_point > rl_end) rl_point = rl_end; } } #else rl_point++; #endif return point; } /* Move the cursor back one character. */ static inline void _rl_vi_backup (void) { if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); else rl_point--; } /* Move the point back one character, returning the starting value and not doing anything at the beginning of the line */ static inline int _rl_vi_backup_point (void) { int point; point = rl_point; if (rl_point > 0) #if defined (HANDLE_MULTIBYTE) { if (MB_CUR_MAX == 1 || rl_byte_oriented) rl_point--; else { point = rl_point; rl_point = _rl_backward_char_internal (1); if (rl_point < 0) rl_point = 0; /* XXX - not really necessary */ } } #else rl_point--; #endif return point; } /* Move to the end of the ?next? word. */ int rl_vi_end_word (int count, int key) { if (count < 0) { rl_ding (); return 1; } if (_rl_uppercase_p (key)) rl_vi_eWord (count, key); else rl_vi_eword (count, key); return (0); } /* Move forward a word the way that 'W' does. */ int rl_vi_fWord (int count, int ignore) { while (count-- && rl_point < (rl_end - 1)) { /* Skip until whitespace. */ while (!whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) _rl_vi_advance_point (); /* Now skip whitespace. */ while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) _rl_vi_advance_point (); } return (0); } int rl_vi_bWord (int count, int ignore) { while (count-- && rl_point > 0) { /* If we are at the start of a word, move back to whitespace so we will go back to the start of the previous word. */ if (!whitespace (rl_line_buffer[rl_point]) && whitespace (rl_line_buffer[rl_point - 1])) rl_point--; while (rl_point > 0 && whitespace (rl_line_buffer[rl_point])) _rl_vi_backup_point (); if (rl_point > 0) { do _rl_vi_backup_point (); while (rl_point > 0 && !whitespace (rl_line_buffer[rl_point])); if (rl_point > 0) /* hit whitespace */ rl_point++; if (rl_point < 0) rl_point = 0; } } return (0); } int rl_vi_eWord (int count, int ignore) { int opoint; while (count-- && rl_point < (rl_end - 1)) { if (whitespace (rl_line_buffer[rl_point]) == 0) _rl_vi_advance_point (); /* Move to the next non-whitespace character (to the start of the next word). */ while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) _rl_vi_advance_point (); if (rl_point && rl_point < rl_end) { opoint = rl_point; /* Skip whitespace. */ while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) opoint = _rl_vi_advance_point (); /* XXX - why? */ /* Skip until whitespace. */ while (rl_point < rl_end && !whitespace (rl_line_buffer[rl_point])) opoint = _rl_vi_advance_point (); /* Move back to the last character of the word. */ rl_point = opoint; } } return (0); } int rl_vi_fword (int count, int ignore) { int opoint; while (count-- && rl_point < (rl_end - 1)) { /* Move to white space (really non-identifer). */ if (_rl_isident (rl_line_buffer[rl_point])) { while (_rl_isident (rl_line_buffer[rl_point]) && rl_point < rl_end) _rl_vi_advance_point (); } else /* if (!whitespace (rl_line_buffer[rl_point])) */ { while (!_rl_isident (rl_line_buffer[rl_point]) && !whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) _rl_vi_advance_point (); } opoint = rl_point; /* Move past whitespace. */ while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) opoint = _rl_vi_advance_point (); } return (0); } int rl_vi_bword (int count, int ignore) { int opoint; while (count-- && rl_point > 0) { int prev_is_ident, cur_is_ident; /* If we are at the start of a word, move back to whitespace so we will go back to the start of the previous word. */ if (!whitespace (rl_line_buffer[rl_point]) && whitespace (rl_line_buffer[rl_point - 1])) if (--rl_point == 0) break; /* If this character and the previous character are `opposite', move back so we don't get messed up by the rl_point++ down there in the while loop. Without this code, words like `l;' screw up the function. */ cur_is_ident = _rl_isident (rl_line_buffer[rl_point]); opoint = _rl_vi_backup_point (); prev_is_ident = _rl_isident (rl_line_buffer[rl_point]); if ((cur_is_ident && !prev_is_ident) || (!cur_is_ident && prev_is_ident)) ; /* leave point alone, we backed it up one character */ else rl_point = opoint; while (rl_point > 0 && whitespace (rl_line_buffer[rl_point])) _rl_vi_backup_point (); if (rl_point > 0) { opoint = rl_point; if (_rl_isident (rl_line_buffer[rl_point])) do opoint = _rl_vi_backup_point (); while (rl_point > 0 && _rl_isident (rl_line_buffer[rl_point])); else do opoint = _rl_vi_backup_point (); while (rl_point > 0 && !_rl_isident (rl_line_buffer[rl_point]) && !whitespace (rl_line_buffer[rl_point])); if (rl_point > 0) rl_point = opoint; if (rl_point < 0) rl_point = 0; } } return (0); } int rl_vi_eword (int count, int ignore) { int opoint; while (count-- && rl_point < (rl_end - 1)) { if (whitespace (rl_line_buffer[rl_point]) == 0) _rl_vi_advance_point (); while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) _rl_vi_advance_point (); opoint = rl_point; if (rl_point < rl_end) { if (_rl_isident (rl_line_buffer[rl_point])) do { opoint = _rl_vi_advance_point (); } while (rl_point < rl_end && _rl_isident (rl_line_buffer[rl_point])); else do { opoint = _rl_vi_advance_point (); } while (rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point]) && !whitespace (rl_line_buffer[rl_point])); } rl_point = opoint; } return (0); } int rl_vi_insert_beg (int count, int key) { rl_beg_of_line (1, key); rl_vi_insert_mode (1, key); return (0); } static void _rl_vi_append_forward (int key) { _rl_vi_advance_point (); } int rl_vi_append_mode (int count, int key) { _rl_vi_append_forward (key); rl_vi_start_inserting (key, 1, rl_arg_sign); return (0); } int rl_vi_append_eol (int count, int key) { rl_end_of_line (1, key); rl_vi_append_mode (1, key); return (0); } /* What to do in the case of C-d. */ int rl_vi_eof_maybe (int count, int c) { return (rl_newline (1, '\n')); } /* Insertion mode stuff. */ /* Switching from one mode to the other really just involves switching keymaps. */ int rl_vi_insertion_mode (int count, int key) { _rl_keymap = vi_insertion_keymap; _rl_vi_last_key_before_insert = key; if (_rl_show_mode_in_prompt) _rl_reset_prompt (); return (0); } int rl_vi_insert_mode (int count, int key) { rl_vi_start_inserting (key, 1, rl_arg_sign); return (0); } static void vi_save_insert_buffer (int start, int len) { /* Same code as _rl_vi_save_insert below */ if (len >= vi_insert_buffer_size) { vi_insert_buffer_size += (len + 32) - (len % 32); vi_insert_buffer = (char *)xrealloc (vi_insert_buffer, vi_insert_buffer_size); } strncpy (vi_insert_buffer, rl_line_buffer + start, len - 1); vi_insert_buffer[len-1] = '\0'; } static void _rl_vi_save_replace (void) { int len, start, end; UNDO_LIST *up; up = rl_undo_list; if (up == 0 || up->what != UNDO_END || vi_replace_count <= 0) { if (vi_insert_buffer_size >= 1) vi_insert_buffer[0] = '\0'; return; } /* Let's try it the quick and easy way for now. This should essentially accommodate every UNDO_INSERT and save the inserted text to vi_insert_buffer */ end = rl_point; start = end - vi_replace_count + 1; len = vi_replace_count + 1; vi_save_insert_buffer (start, len); } static void _rl_vi_save_insert (UNDO_LIST *up) { int len, start, end; if (up == 0 || up->what != UNDO_INSERT) { if (vi_insert_buffer_size >= 1) vi_insert_buffer[0] = '\0'; return; } start = up->start; end = up->end; len = end - start + 1; vi_save_insert_buffer (start, len); } void _rl_vi_done_inserting (void) { if (_rl_vi_doing_insert) { /* The `C', `s', and `S' commands set this. */ rl_end_undo_group (); /* Now, the text between rl_undo_list->next->start and rl_undo_list->next->end is what was inserted while in insert mode. It gets copied to VI_INSERT_BUFFER because it depends on absolute indices into the line which may change (though they probably will not). */ _rl_vi_doing_insert = 0; if (_rl_vi_last_key_before_insert == 'R') _rl_vi_save_replace (); /* Half the battle */ else _rl_vi_save_insert (rl_undo_list->next); vi_continued_command = 1; } else { if (rl_undo_list && (_rl_vi_last_key_before_insert == 'i' || _rl_vi_last_key_before_insert == 'a' || _rl_vi_last_key_before_insert == 'I' || _rl_vi_last_key_before_insert == 'A')) _rl_vi_save_insert (rl_undo_list); /* XXX - Other keys probably need to be checked. */ else if (_rl_vi_last_key_before_insert == 'C') rl_end_undo_group (); while (_rl_undo_group_level > 0) rl_end_undo_group (); vi_continued_command = 0; } } int rl_vi_movement_mode (int count, int key) { if (rl_point > 0) rl_backward_char (1, key); _rl_keymap = vi_movement_keymap; _rl_vi_done_inserting (); /* This is how POSIX.2 says `U' should behave -- everything up until the first time you go into command mode should not be undone. */ if (RL_ISSTATE (RL_STATE_VICMDONCE) == 0) rl_free_undo_list (); if (_rl_show_mode_in_prompt) _rl_reset_prompt (); RL_SETSTATE (RL_STATE_VICMDONCE); return (0); } int rl_vi_arg_digit (int count, int c) { if (c == '0' && rl_numeric_arg == 1 && !rl_explicit_arg) return (rl_beg_of_line (1, c)); else return (rl_digit_argument (count, c)); } /* Change the case of the next COUNT characters. */ #if defined (HANDLE_MULTIBYTE) static int _rl_vi_change_mbchar_case (int count) { wchar_t wc; char mb[MB_LEN_MAX+1]; int mlen, p; size_t m; mbstate_t ps; memset (&ps, 0, sizeof (mbstate_t)); if (_rl_adjust_point (rl_line_buffer, rl_point, &ps) > 0) count--; while (count-- && rl_point < rl_end) { m = mbrtowc (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps); if (MB_INVALIDCH (m)) wc = (wchar_t)rl_line_buffer[rl_point]; else if (MB_NULLWCH (m)) wc = L'\0'; if (iswupper (wc)) wc = towlower (wc); else if (iswlower (wc)) wc = towupper (wc); else { /* Just skip over chars neither upper nor lower case */ rl_forward_char (1, 0); continue; } /* Vi is kind of strange here. */ if (wc) { p = rl_point; mlen = wcrtomb (mb, wc, &ps); if (mlen >= 0) mb[mlen] = '\0'; rl_begin_undo_group (); rl_vi_delete (1, 0); if (rl_point < p) /* Did we retreat at EOL? */ _rl_vi_advance_point (); rl_insert_text (mb); rl_end_undo_group (); rl_vi_check (); } else rl_forward_char (1, 0); } return 0; } #endif int rl_vi_change_case (int count, int ignore) { int c, p; /* Don't try this on an empty line. */ if (rl_point >= rl_end) return (0); c = 0; #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) return (_rl_vi_change_mbchar_case (count)); #endif while (count-- && rl_point < rl_end) { if (_rl_uppercase_p (rl_line_buffer[rl_point])) c = _rl_to_lower (rl_line_buffer[rl_point]); else if (_rl_lowercase_p (rl_line_buffer[rl_point])) c = _rl_to_upper (rl_line_buffer[rl_point]); else { /* Just skip over characters neither upper nor lower case. */ rl_forward_char (1, c); continue; } /* Vi is kind of strange here. */ if (c) { p = rl_point; rl_begin_undo_group (); rl_vi_delete (1, c); if (rl_point < p) /* Did we retreat at EOL? */ rl_point++; _rl_insert_char (1, c); rl_end_undo_group (); rl_vi_check (); } else rl_forward_char (1, c); } return (0); } int rl_vi_put (int count, int key) { if (!_rl_uppercase_p (key) && (rl_point + 1 <= rl_end)) rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); while (count--) rl_yank (1, key); rl_backward_char (1, key); return (0); } /* Move the cursor back one character if you're at the end of the line */ int rl_vi_check (void) { if (rl_point && rl_point == rl_end) _rl_vi_backup (); return (0); } /* Move to the character position specified by COUNT */ int rl_vi_column (int count, int key) { if (count > rl_end) rl_end_of_line (1, key); else { rl_point = 0; rl_point = _rl_forward_char_internal (count - 1); } return (0); } /* Process C as part of the current numeric argument. Return -1 if the argument should be aborted, 0 if we should not read any more chars, and 1 if we should continue to read chars. */ static int _rl_vi_arg_dispatch (int c) { int key; key = c; if (c >= 0 && _rl_keymap[c].type == ISFUNC && _rl_keymap[c].function == rl_universal_argument) { rl_numeric_arg *= 4; return 1; } c = UNMETA (c); if (_rl_digit_p (c)) { if (rl_explicit_arg) rl_numeric_arg = (rl_numeric_arg * 10) + _rl_digit_value (c); else rl_numeric_arg = _rl_digit_value (c); rl_explicit_arg = 1; return 1; /* keep going */ } else { rl_clear_message (); rl_stuff_char (key); return 0; /* done */ } } /* A simplified loop for vi. Don't dispatch key at end. Don't recognize minus sign? Should this do rl_save_prompt/rl_restore_prompt? */ static int rl_digit_loop1 (void) { int c, r; while (1) { if (_rl_arg_overflow ()) return 1; c = _rl_arg_getchar (); r = _rl_vi_arg_dispatch (c); if (r <= 0) break; } RL_UNSETSTATE(RL_STATE_NUMERICARG); return (0); } /* This set of functions is basically to handle the commands that take a motion argument while in callback mode: read the command, read the motion command modifier, find the extent of the text to affect, and dispatch the command for execution. */ static void _rl_mvcxt_init (_rl_vimotion_cxt *m, int op, int key) { m->op = op; m->state = m->flags = 0; m->ncxt = 0; m->numeric_arg = -1; m->start = rl_point; m->end = rl_end; m->key = key; m->motion = -1; } static _rl_vimotion_cxt * _rl_mvcxt_alloc (int op, int key) { _rl_vimotion_cxt *m; m = xmalloc (sizeof (_rl_vimotion_cxt)); _rl_mvcxt_init (m, op, key); return m; } static void _rl_mvcxt_dispose (_rl_vimotion_cxt *m) { xfree (m); } static int rl_domove_motion_callback (_rl_vimotion_cxt *m) { int c; _rl_vi_last_motion = c = m->motion; /* Append a blank character temporarily so that the motion routines work right at the end of the line. Original value of rl_end is saved as m->end. */ rl_line_buffer[rl_end++] = ' '; rl_line_buffer[rl_end] = '\0'; _rl_dispatch (c, _rl_keymap); #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) { /* Messy case where char search can be vi motion command; see rest of details in callback.c. vi_char_search and callback_char_search just set and unset the CHARSEARCH state. This is where any vi motion command that needs to set its own state should be handled, with any corresponding code to manage that state in callback.c */ if (RL_ISSTATE (RL_STATE_CHARSEARCH)) return 0; else return (_rl_vi_domove_motion_cleanup (c, m)); } #endif return (_rl_vi_domove_motion_cleanup (c, m)); } int _rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *m) { int r; /* Remove the blank that we added in rl_domove_motion_callback. */ rl_end = m->end; rl_line_buffer[rl_end] = '\0'; if (rl_point > rl_end) rl_point = rl_end; /* No change in position means the command failed. */ if (rl_mark == rl_point) { RL_UNSETSTATE (RL_STATE_VIMOTION); return (-1); } /* rl_vi_f[wW]ord () leaves the cursor on the first character of the next word. If we are not at the end of the line, and we are on a non-whitespace character, move back one (presumably to whitespace). */ if ((_rl_to_upper (c) == 'W') && rl_point < rl_end && rl_point > rl_mark && !whitespace (rl_line_buffer[rl_point])) rl_point--; /* XXX */ /* If cw or cW, back up to the end of a word, so the behaviour of ce or cE is the actual result. Brute-force, no subtlety. */ if (m->key == 'c' && rl_point >= rl_mark && (_rl_to_upper (c) == 'W')) { /* Don't move farther back than where we started. */ while (rl_point > rl_mark && whitespace (rl_line_buffer[rl_point])) rl_point--; /* Posix.2 says that if cw or cW moves the cursor towards the end of the line, the character under the cursor should be deleted. */ if (rl_point == rl_mark) _rl_vi_advance_point (); else { /* Move past the end of the word so that the kill doesn't remove the last letter of the previous word. Only do this if we are not at the end of the line. */ if (rl_point >= 0 && rl_point < (rl_end - 1) && !whitespace (rl_line_buffer[rl_point])) _rl_vi_advance_point (); } } if (rl_mark < rl_point) SWAP (rl_point, rl_mark); #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) (*rl_redisplay_function)(); /* make sure motion is displayed */ #endif r = vidomove_dispatch (m); return (r); } #define RL_VIMOVENUMARG() (RL_ISSTATE (RL_STATE_VIMOTION) && RL_ISSTATE (RL_STATE_NUMERICARG)) static int rl_domove_read_callback (_rl_vimotion_cxt *m) { int c, save; c = m->motion; if (member (c, vi_motion)) { #if defined (READLINE_CALLBACKS) /* If we just read a vi-mode motion command numeric argument, turn off the `reading numeric arg' state */ if (RL_ISSTATE (RL_STATE_CALLBACK) && RL_VIMOVENUMARG()) RL_UNSETSTATE (RL_STATE_NUMERICARG); #endif /* Should do everything, including turning off RL_STATE_VIMOTION */ return (rl_domove_motion_callback (m)); } else if (m->key == c && (m->key == 'd' || m->key == 'y' || m->key == 'c')) { rl_mark = rl_end; rl_beg_of_line (1, c); _rl_vi_last_motion = c; RL_UNSETSTATE (RL_STATE_VIMOTION); return (vidomove_dispatch (m)); } #if defined (READLINE_CALLBACKS) /* XXX - these need to handle rl_universal_argument bindings */ /* Reading vi motion char continuing numeric argument */ else if (_rl_digit_p (c) && RL_ISSTATE (RL_STATE_CALLBACK) && RL_VIMOVENUMARG()) { return (_rl_vi_arg_dispatch (c)); } /* Readine vi motion char starting numeric argument */ else if (_rl_digit_p (c) && RL_ISSTATE (RL_STATE_CALLBACK) && RL_ISSTATE (RL_STATE_VIMOTION) && (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)) { RL_SETSTATE (RL_STATE_NUMERICARG); return (_rl_vi_arg_dispatch (c)); } #endif else if (_rl_digit_p (c)) { /* This code path taken when not in callback mode */ save = rl_numeric_arg; rl_numeric_arg = _rl_digit_value (c); rl_explicit_arg = 1; RL_SETSTATE (RL_STATE_NUMERICARG); rl_digit_loop1 (); rl_numeric_arg *= save; c = rl_vi_domove_getchar (m); if (c < 0) { m->motion = 0; return -1; } m->motion = c; return (rl_domove_motion_callback (m)); } else { RL_UNSETSTATE (RL_STATE_VIMOTION); RL_UNSETSTATE (RL_STATE_NUMERICARG); return (1); } } static int rl_vi_domove_getchar (_rl_vimotion_cxt *m) { int c; RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); return c; } #if defined (READLINE_CALLBACKS) int _rl_vi_domove_callback (_rl_vimotion_cxt *m) { int c, r; m->motion = c = rl_vi_domove_getchar (m); if (c < 0) return 1; /* EOF */ r = rl_domove_read_callback (m); return ((r == 0) ? r : 1); /* normalize return values */ } #endif /* This code path is taken when not in callback mode. */ int rl_vi_domove (int x, int *ignore) { int r; _rl_vimotion_cxt *m; m = _rl_vimvcxt; *ignore = m->motion = rl_vi_domove_getchar (m); if (m->motion < 0) { m->motion = 0; return -1; } return (rl_domove_read_callback (m)); } static int vi_delete_dispatch (_rl_vimotion_cxt *m) { /* These are the motion commands that do not require adjusting the mark. */ if (((strchr (" l|h^0bBFT`", m->motion) == 0) && (rl_point >= m->start)) && (rl_mark < rl_end)) INCREMENT_POS (rl_mark); rl_kill_text (rl_point, rl_mark); return (0); } int rl_vi_delete_to (int count, int key) { int c, r; _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key); _rl_vimvcxt->start = rl_point; rl_mark = rl_point; if (_rl_uppercase_p (key)) { _rl_vimvcxt->motion = '$'; r = rl_domove_motion_callback (_rl_vimvcxt); } else if (_rl_vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */ { _rl_vimvcxt->motion = _rl_vi_last_motion; r = rl_domove_motion_callback (_rl_vimvcxt); } else if (_rl_vi_redoing) /* handle redoing `dd' here */ { _rl_vimvcxt->motion = _rl_vi_last_motion; rl_mark = rl_end; rl_beg_of_line (1, key); RL_UNSETSTATE (RL_STATE_VIMOTION); r = vidomove_dispatch (_rl_vimvcxt); } #if defined (READLINE_CALLBACKS) else if (RL_ISSTATE (RL_STATE_CALLBACK)) { RL_SETSTATE (RL_STATE_VIMOTION); return (0); } #endif else r = rl_vi_domove (key, &c); if (r < 0) { rl_ding (); r = -1; } _rl_mvcxt_dispose (_rl_vimvcxt); _rl_vimvcxt = 0; return r; } static int vi_change_dispatch (_rl_vimotion_cxt *m) { /* These are the motion commands that do not require adjusting the mark. c[wW] are handled by special-case code in rl_vi_domove(), and already leave the mark at the correct location. */ if (((strchr (" l|hwW^0bBFT`", m->motion) == 0) && (rl_point >= m->start)) && (rl_mark < rl_end)) INCREMENT_POS (rl_mark); /* The cursor never moves with c[wW]. */ if ((_rl_to_upper (m->motion) == 'W') && rl_point < m->start) rl_point = m->start; if (_rl_vi_redoing) { if (vi_insert_buffer && *vi_insert_buffer) rl_begin_undo_group (); rl_delete_text (rl_point, rl_mark); if (vi_insert_buffer && *vi_insert_buffer) { rl_insert_text (vi_insert_buffer); rl_end_undo_group (); } } else { rl_begin_undo_group (); /* to make the `u' command work */ rl_kill_text (rl_point, rl_mark); /* `C' does not save the text inserted for undoing or redoing. */ if (_rl_uppercase_p (m->key) == 0) _rl_vi_doing_insert = 1; /* XXX -- TODO -- use m->numericarg? */ rl_vi_start_inserting (m->key, rl_numeric_arg, rl_arg_sign); } return (0); } int rl_vi_change_to (int count, int key) { int c, r; _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key); _rl_vimvcxt->start = rl_point; rl_mark = rl_point; if (_rl_uppercase_p (key)) { _rl_vimvcxt->motion = '$'; r = rl_domove_motion_callback (_rl_vimvcxt); } else if (_rl_vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */ { _rl_vimvcxt->motion = _rl_vi_last_motion; r = rl_domove_motion_callback (_rl_vimvcxt); } else if (_rl_vi_redoing) /* handle redoing `cc' here */ { _rl_vimvcxt->motion = _rl_vi_last_motion; rl_mark = rl_end; rl_beg_of_line (1, key); RL_UNSETSTATE (RL_STATE_VIMOTION); r = vidomove_dispatch (_rl_vimvcxt); } #if defined (READLINE_CALLBACKS) else if (RL_ISSTATE (RL_STATE_CALLBACK)) { RL_SETSTATE (RL_STATE_VIMOTION); return (0); } #endif else r = rl_vi_domove (key, &c); if (r < 0) { rl_ding (); r = -1; /* normalize return value */ } _rl_mvcxt_dispose (_rl_vimvcxt); _rl_vimvcxt = 0; return r; } static int vi_yank_dispatch (_rl_vimotion_cxt *m) { /* These are the motion commands that do not require adjusting the mark. */ if (((strchr (" l|h^0%bBFT`", m->motion) == 0) && (rl_point >= m->start)) && (rl_mark < rl_end)) INCREMENT_POS (rl_mark); rl_begin_undo_group (); rl_kill_text (rl_point, rl_mark); rl_end_undo_group (); rl_do_undo (); rl_point = m->start; return (0); } int rl_vi_yank_to (int count, int key) { int c, r; _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key); _rl_vimvcxt->start = rl_point; rl_mark = rl_point; if (_rl_uppercase_p (key)) { _rl_vimvcxt->motion = '$'; r = rl_domove_motion_callback (_rl_vimvcxt); } else if (_rl_vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */ { _rl_vimvcxt->motion = _rl_vi_last_motion; r = rl_domove_motion_callback (_rl_vimvcxt); } else if (_rl_vi_redoing) /* handle redoing `yy' here */ { _rl_vimvcxt->motion = _rl_vi_last_motion; rl_mark = rl_end; rl_beg_of_line (1, key); RL_UNSETSTATE (RL_STATE_VIMOTION); r = vidomove_dispatch (_rl_vimvcxt); } #if defined (READLINE_CALLBACKS) else if (RL_ISSTATE (RL_STATE_CALLBACK)) { RL_SETSTATE (RL_STATE_VIMOTION); return (0); } #endif else r = rl_vi_domove (key, &c); if (r < 0) { rl_ding (); r = -1; } _rl_mvcxt_dispose (_rl_vimvcxt); _rl_vimvcxt = 0; return r; } static int vidomove_dispatch (_rl_vimotion_cxt *m) { int r; switch (m->op) { case VIM_DELETE: r = vi_delete_dispatch (m); break; case VIM_CHANGE: r = vi_change_dispatch (m); break; case VIM_YANK: r = vi_yank_dispatch (m); break; default: _rl_errmsg ("vidomove_dispatch: unknown operator %d", m->op); r = 1; break; } RL_UNSETSTATE (RL_STATE_VIMOTION); return r; } int rl_vi_rubout (int count, int key) { int opoint; if (count < 0) return (rl_vi_delete (-count, key)); if (rl_point == 0) { rl_ding (); return 1; } opoint = rl_point; if (count > 1 && MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_backward_char (count, key); else if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); else rl_point -= count; if (rl_point < 0) rl_point = 0; rl_kill_text (rl_point, opoint); return (0); } int rl_vi_delete (int count, int key) { int end; if (count < 0) return (rl_vi_rubout (-count, key)); if (rl_end == 0) { rl_ding (); return 1; } if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) end = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); else end = rl_point + count; if (end >= rl_end) end = rl_end; rl_kill_text (rl_point, end); if (rl_point > 0 && rl_point == rl_end) rl_backward_char (1, key); return (0); } /* This does what Posix specifies vi-mode C-w to do: using whitespace and punctuation characters as the word boundaries. */ #define vi_unix_word_boundary(c) (whitespace(c) || ispunct(c)) int rl_vi_unix_word_rubout (int count, int key) { int orig_point; if (rl_point == 0) rl_ding (); else { orig_point = rl_point; if (count <= 0) count = 1; while (count--) { /* This isn't quite what ksh93 does but it seems to match what the Posix description of sh specifies, with a few accommodations for sequences of whitespace characters between words and at the end of the line. */ /* Skip over whitespace at the end of the line as a special case */ if (rl_point > 0 && (rl_line_buffer[rl_point] == 0) && whitespace (rl_line_buffer[rl_point - 1])) while (--rl_point > 0 && whitespace (rl_line_buffer[rl_point])) ; /* If we're at the start of a word, move back to word boundary so we move back to the `preceding' word */ if (rl_point > 0 && (vi_unix_word_boundary (rl_line_buffer[rl_point]) == 0) && vi_unix_word_boundary (rl_line_buffer[rl_point - 1])) rl_point--; /* If we are at a word boundary (whitespace/punct), move backward past a sequence of word boundary characters. If we are at the end of a word (non-word boundary), move back to a word boundary */ if (rl_point > 0 && vi_unix_word_boundary (rl_line_buffer[rl_point])) while (rl_point && vi_unix_word_boundary (rl_line_buffer[rl_point - 1])) rl_point--; else if (rl_point > 0 && vi_unix_word_boundary (rl_line_buffer[rl_point]) == 0) while (rl_point > 0 && (vi_unix_word_boundary (rl_line_buffer[rl_point - 1]) == 0)) _rl_vi_backup_point (); } rl_kill_text (orig_point, rl_point); } return 0; } int rl_vi_back_to_indent (int count, int key) { rl_beg_of_line (1, key); while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) rl_point++; return (0); } int rl_vi_first_print (int count, int key) { return (rl_vi_back_to_indent (1, key)); } static int _rl_cs_dir, _rl_cs_orig_dir; #if defined (READLINE_CALLBACKS) static int _rl_vi_callback_char_search (_rl_callback_generic_arg *data) { int c; #if defined (HANDLE_MULTIBYTE) c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); #else RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); #endif if (c <= 0) { RL_UNSETSTATE (RL_STATE_CHARSEARCH); return -1; } #if !defined (HANDLE_MULTIBYTE) _rl_vi_last_search_char = c; #endif _rl_callback_func = 0; _rl_want_redisplay = 1; RL_UNSETSTATE (RL_STATE_CHARSEARCH); #if defined (HANDLE_MULTIBYTE) return (_rl_char_search_internal (data->count, _rl_cs_dir, _rl_vi_last_search_mbchar, _rl_vi_last_search_mblen)); #else return (_rl_char_search_internal (data->count, _rl_cs_dir, _rl_vi_last_search_char)); #endif } #endif int rl_vi_char_search (int count, int key) { int c; #if defined (HANDLE_MULTIBYTE) static char *target; static int tlen; #else static char target; #endif if (key == ';' || key == ',') { if (_rl_cs_orig_dir == 0) return 1; #if defined (HANDLE_MULTIBYTE) if (_rl_vi_last_search_mblen == 0) return 1; #else if (_rl_vi_last_search_char == 0) return 1; #endif _rl_cs_dir = (key == ';') ? _rl_cs_orig_dir : -_rl_cs_orig_dir; } else { switch (key) { case 't': _rl_cs_orig_dir = _rl_cs_dir = FTO; break; case 'T': _rl_cs_orig_dir = _rl_cs_dir = BTO; break; case 'f': _rl_cs_orig_dir = _rl_cs_dir = FFIND; break; case 'F': _rl_cs_orig_dir = _rl_cs_dir = BFIND; break; } if (_rl_vi_redoing) { /* set target and tlen below */ } #if defined (READLINE_CALLBACKS) else if (RL_ISSTATE (RL_STATE_CALLBACK)) { _rl_callback_data = _rl_callback_data_alloc (count); _rl_callback_data->i1 = _rl_cs_dir; _rl_callback_data->i2 = key; _rl_callback_func = _rl_vi_callback_char_search; RL_SETSTATE (RL_STATE_CHARSEARCH); return (0); } #endif else { #if defined (HANDLE_MULTIBYTE) c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); if (c <= 0) return -1; _rl_vi_last_search_mblen = c; #else RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); if (c < 0) return -1; _rl_vi_last_search_char = c; #endif } } #if defined (HANDLE_MULTIBYTE) target = _rl_vi_last_search_mbchar; tlen = _rl_vi_last_search_mblen; #else target = _rl_vi_last_search_char; #endif #if defined (HANDLE_MULTIBYTE) return (_rl_char_search_internal (count, _rl_cs_dir, target, tlen)); #else return (_rl_char_search_internal (count, _rl_cs_dir, target)); #endif } /* Match brackets */ int rl_vi_match (int ignore, int key) { int count = 1, brack, pos, tmp, pre; pos = rl_point; if ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0) { if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { while ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0) { pre = rl_point; rl_forward_char (1, key); if (pre == rl_point) break; } } else while ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0 && rl_point < rl_end - 1) rl_forward_char (1, key); if (brack <= 0) { rl_point = pos; rl_ding (); return 1; } } pos = rl_point; if (brack < 0) { while (count) { tmp = pos; if (MB_CUR_MAX == 1 || rl_byte_oriented) pos--; else { pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY); if (tmp == pos) pos--; } if (pos >= 0) { int b = rl_vi_bracktype (rl_line_buffer[pos]); if (b == -brack) count--; else if (b == brack) count++; } else { rl_ding (); return 1; } } } else { /* brack > 0 */ while (count) { if (MB_CUR_MAX == 1 || rl_byte_oriented) pos++; else pos = _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY); if (pos < rl_end) { int b = rl_vi_bracktype (rl_line_buffer[pos]); if (b == -brack) count--; else if (b == brack) count++; } else { rl_ding (); return 1; } } } rl_point = pos; return (0); } int rl_vi_bracktype (int c) { switch (c) { case '(': return 1; case ')': return -1; case '[': return 2; case ']': return -2; case '{': return 3; case '}': return -3; default: return 0; } } static int _rl_vi_change_char (int count, int c, char *mb) { int p; if (c == '\033' || c == CTRL ('C')) return -1; rl_begin_undo_group (); while (count-- && rl_point < rl_end) { p = rl_point; rl_vi_delete (1, c); if (rl_point < p) /* Did we retreat at EOL? */ _rl_vi_append_forward (c); #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_insert_text (mb); else #endif _rl_insert_char (1, c); } /* The cursor shall be left on the last character changed. */ rl_backward_char (1, c); rl_end_undo_group (); return (0); } static int _rl_vi_callback_getchar (char *mb, int mlen) { int c; RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); if (c < 0) return -1; #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) c = _rl_read_mbstring (c, mb, mlen); #endif return c; } #if defined (READLINE_CALLBACKS) static int _rl_vi_callback_change_char (_rl_callback_generic_arg *data) { int c; char mb[MB_LEN_MAX+1]; c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); #if defined (HANDLE_MULTIBYTE) strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); #else _rl_vi_last_replacement[0] = c; #endif _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* XXX */ if (c < 0) return -1; _rl_callback_func = 0; _rl_want_redisplay = 1; return (_rl_vi_change_char (data->count, c, mb)); } #endif int rl_vi_change_char (int count, int key) { int c; char mb[MB_LEN_MAX+1]; if (_rl_vi_redoing) { strncpy (mb, _rl_vi_last_replacement, MB_LEN_MAX); c = (unsigned char)_rl_vi_last_replacement[0]; /* XXX */ mb[MB_LEN_MAX] = '\0'; } #if defined (READLINE_CALLBACKS) else if (RL_ISSTATE (RL_STATE_CALLBACK)) { _rl_callback_data = _rl_callback_data_alloc (count); _rl_callback_func = _rl_vi_callback_change_char; return (0); } #endif else { c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); #ifdef HANDLE_MULTIBYTE strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); #else _rl_vi_last_replacement[0] = c; #endif _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* just in case */ } if (c < 0) return -1; return (_rl_vi_change_char (count, c, mb)); } int rl_vi_subst (int count, int key) { /* If we are redoing, rl_vi_change_to will stuff the last motion char */ if (_rl_vi_redoing == 0) rl_stuff_char ((key == 'S') ? 'c' : 'l'); /* `S' == `cc', `s' == `cl' */ return (rl_vi_change_to (count, 'c')); } int rl_vi_overstrike (int count, int key) { if (_rl_vi_doing_insert == 0) { _rl_vi_doing_insert = 1; rl_begin_undo_group (); } if (count > 0) { _rl_overwrite_char (count, key); vi_replace_count += count; } return (0); } int rl_vi_overstrike_delete (int count, int key) { int i, s; for (i = 0; i < count; i++) { if (vi_replace_count == 0) { rl_ding (); break; } s = rl_point; if (rl_do_undo ()) vi_replace_count--; if (rl_point == s) rl_backward_char (1, key); } if (vi_replace_count == 0 && _rl_vi_doing_insert) { rl_end_undo_group (); rl_do_undo (); _rl_vi_doing_insert = 0; } return (0); } int rl_vi_replace (int count, int key) { int i; vi_replace_count = 0; if (vi_replace_map == 0) { vi_replace_map = rl_make_bare_keymap (); for (i = 0; i < ' '; i++) if (vi_insertion_keymap[i].type == ISFUNC) vi_replace_map[i].function = vi_insertion_keymap[i].function; for (i = ' '; i < KEYMAP_SIZE; i++) vi_replace_map[i].function = rl_vi_overstrike; vi_replace_map[RUBOUT].function = rl_vi_overstrike_delete; /* Make sure these are what we want. */ vi_replace_map[ESC].function = rl_vi_movement_mode; vi_replace_map[RETURN].function = rl_newline; vi_replace_map[NEWLINE].function = rl_newline; /* If the normal vi insertion keymap has ^H bound to erase, do the same here. Probably should remove the assignment to RUBOUT up there, but I don't think it will make a difference in real life. */ if (vi_insertion_keymap[CTRL ('H')].type == ISFUNC && vi_insertion_keymap[CTRL ('H')].function == rl_rubout) vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete; /* Make sure this is the value we need. */ vi_replace_map[ANYOTHERKEY].type = ISFUNC; vi_replace_map[ANYOTHERKEY].function = (rl_command_func_t *)NULL; } rl_vi_start_inserting (key, 1, rl_arg_sign); _rl_vi_last_key_before_insert = key; _rl_keymap = vi_replace_map; return (0); } #if 0 /* Try to complete the word we are standing on or the word that ends with the previous character. A space matches everything. Word delimiters are space and ;. */ int rl_vi_possible_completions (void) { int save_pos = rl_point; if (rl_line_buffer[rl_point] != ' ' && rl_line_buffer[rl_point] != ';') { while (rl_point < rl_end && rl_line_buffer[rl_point] != ' ' && rl_line_buffer[rl_point] != ';') _rl_vi_advance_point (); } else if (rl_line_buffer[rl_point - 1] == ';') { rl_ding (); return (0); } rl_possible_completions (); rl_point = save_pos; return (0); } #endif /* Functions to save and restore marks. */ static int _rl_vi_set_mark (void) { int ch; RL_SETSTATE(RL_STATE_MOREINPUT); ch = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ { rl_ding (); return 1; } ch -= 'a'; vi_mark_chars[ch] = rl_point; return 0; } #if defined (READLINE_CALLBACKS) static int _rl_vi_callback_set_mark (_rl_callback_generic_arg *data) { _rl_callback_func = 0; _rl_want_redisplay = 1; return (_rl_vi_set_mark ()); } #endif int rl_vi_set_mark (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) { _rl_callback_data = 0; _rl_callback_func = _rl_vi_callback_set_mark; return (0); } #endif return (_rl_vi_set_mark ()); } static int _rl_vi_goto_mark (void) { int ch; RL_SETSTATE(RL_STATE_MOREINPUT); ch = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); if (ch == '`') { rl_point = rl_mark; return 0; } else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ { rl_ding (); return 1; } ch -= 'a'; if (vi_mark_chars[ch] == -1) { rl_ding (); return 1; } rl_point = vi_mark_chars[ch]; return 0; } #if defined (READLINE_CALLBACKS) static int _rl_vi_callback_goto_mark (_rl_callback_generic_arg *data) { _rl_callback_func = 0; _rl_want_redisplay = 1; return (_rl_vi_goto_mark ()); } #endif int rl_vi_goto_mark (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) { _rl_callback_data = 0; _rl_callback_func = _rl_vi_callback_goto_mark; return (0); } #endif return (_rl_vi_goto_mark ()); } #endif /* VI_MODE */ readline-8.0/emacs_keymap.c000664 000436 000120 00000111413 13060556757 016032 0ustar00chetadmin000000 000000 /* emacs_keymap.c -- the keymap for emacs_mode in readline (). */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (BUFSIZ) #include #endif /* !BUFSIZ */ #include "readline.h" /* An array of function pointers, one for each possible key. If the type byte is ISKMAP, then the pointer is the address of a keymap. */ KEYMAP_ENTRY_ARRAY emacs_standard_keymap = { /* Control keys. */ { ISFUNC, rl_set_mark }, /* Control-@ */ { ISFUNC, rl_beg_of_line }, /* Control-a */ { ISFUNC, rl_backward_char }, /* Control-b */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */ { ISFUNC, rl_delete }, /* Control-d */ { ISFUNC, rl_end_of_line }, /* Control-e */ { ISFUNC, rl_forward_char }, /* Control-f */ { ISFUNC, rl_abort }, /* Control-g */ { ISFUNC, rl_rubout }, /* Control-h */ { ISFUNC, rl_complete }, /* Control-i */ { ISFUNC, rl_newline }, /* Control-j */ { ISFUNC, rl_kill_line }, /* Control-k */ { ISFUNC, rl_clear_screen }, /* Control-l */ { ISFUNC, rl_newline }, /* Control-m */ { ISFUNC, rl_get_next_history }, /* Control-n */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */ { ISFUNC, rl_get_previous_history }, /* Control-p */ { ISFUNC, rl_quoted_insert }, /* Control-q */ { ISFUNC, rl_reverse_search_history }, /* Control-r */ { ISFUNC, rl_forward_search_history }, /* Control-s */ { ISFUNC, rl_transpose_chars }, /* Control-t */ { ISFUNC, rl_unix_line_discard }, /* Control-u */ { ISFUNC, rl_quoted_insert }, /* Control-v */ { ISFUNC, rl_unix_word_rubout }, /* Control-w */ { ISKMAP, (rl_command_func_t *)emacs_ctlx_keymap }, /* Control-x */ { ISFUNC, rl_yank }, /* Control-y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */ { ISKMAP, (rl_command_func_t *)emacs_meta_keymap }, /* Control-[ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */ { ISFUNC, rl_char_search }, /* Control-] */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */ { ISFUNC, rl_undo_command }, /* Control-_ */ /* The start of printing characters. */ { ISFUNC, rl_insert }, /* SPACE */ { ISFUNC, rl_insert }, /* ! */ { ISFUNC, rl_insert }, /* " */ { ISFUNC, rl_insert }, /* # */ { ISFUNC, rl_insert }, /* $ */ { ISFUNC, rl_insert }, /* % */ { ISFUNC, rl_insert }, /* & */ { ISFUNC, rl_insert }, /* ' */ { ISFUNC, rl_insert }, /* ( */ { ISFUNC, rl_insert }, /* ) */ { ISFUNC, rl_insert }, /* * */ { ISFUNC, rl_insert }, /* + */ { ISFUNC, rl_insert }, /* , */ { ISFUNC, rl_insert }, /* - */ { ISFUNC, rl_insert }, /* . */ { ISFUNC, rl_insert }, /* / */ /* Regular digits. */ { ISFUNC, rl_insert }, /* 0 */ { ISFUNC, rl_insert }, /* 1 */ { ISFUNC, rl_insert }, /* 2 */ { ISFUNC, rl_insert }, /* 3 */ { ISFUNC, rl_insert }, /* 4 */ { ISFUNC, rl_insert }, /* 5 */ { ISFUNC, rl_insert }, /* 6 */ { ISFUNC, rl_insert }, /* 7 */ { ISFUNC, rl_insert }, /* 8 */ { ISFUNC, rl_insert }, /* 9 */ /* A little more punctuation. */ { ISFUNC, rl_insert }, /* : */ { ISFUNC, rl_insert }, /* ; */ { ISFUNC, rl_insert }, /* < */ { ISFUNC, rl_insert }, /* = */ { ISFUNC, rl_insert }, /* > */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* @ */ /* Uppercase alphabet. */ { ISFUNC, rl_insert }, /* A */ { ISFUNC, rl_insert }, /* B */ { ISFUNC, rl_insert }, /* C */ { ISFUNC, rl_insert }, /* D */ { ISFUNC, rl_insert }, /* E */ { ISFUNC, rl_insert }, /* F */ { ISFUNC, rl_insert }, /* G */ { ISFUNC, rl_insert }, /* H */ { ISFUNC, rl_insert }, /* I */ { ISFUNC, rl_insert }, /* J */ { ISFUNC, rl_insert }, /* K */ { ISFUNC, rl_insert }, /* L */ { ISFUNC, rl_insert }, /* M */ { ISFUNC, rl_insert }, /* N */ { ISFUNC, rl_insert }, /* O */ { ISFUNC, rl_insert }, /* P */ { ISFUNC, rl_insert }, /* Q */ { ISFUNC, rl_insert }, /* R */ { ISFUNC, rl_insert }, /* S */ { ISFUNC, rl_insert }, /* T */ { ISFUNC, rl_insert }, /* U */ { ISFUNC, rl_insert }, /* V */ { ISFUNC, rl_insert }, /* W */ { ISFUNC, rl_insert }, /* X */ { ISFUNC, rl_insert }, /* Y */ { ISFUNC, rl_insert }, /* Z */ /* Some more punctuation. */ { ISFUNC, rl_insert }, /* [ */ { ISFUNC, rl_insert }, /* \ */ { ISFUNC, rl_insert }, /* ] */ { ISFUNC, rl_insert }, /* ^ */ { ISFUNC, rl_insert }, /* _ */ { ISFUNC, rl_insert }, /* ` */ /* Lowercase alphabet. */ { ISFUNC, rl_insert }, /* a */ { ISFUNC, rl_insert }, /* b */ { ISFUNC, rl_insert }, /* c */ { ISFUNC, rl_insert }, /* d */ { ISFUNC, rl_insert }, /* e */ { ISFUNC, rl_insert }, /* f */ { ISFUNC, rl_insert }, /* g */ { ISFUNC, rl_insert }, /* h */ { ISFUNC, rl_insert }, /* i */ { ISFUNC, rl_insert }, /* j */ { ISFUNC, rl_insert }, /* k */ { ISFUNC, rl_insert }, /* l */ { ISFUNC, rl_insert }, /* m */ { ISFUNC, rl_insert }, /* n */ { ISFUNC, rl_insert }, /* o */ { ISFUNC, rl_insert }, /* p */ { ISFUNC, rl_insert }, /* q */ { ISFUNC, rl_insert }, /* r */ { ISFUNC, rl_insert }, /* s */ { ISFUNC, rl_insert }, /* t */ { ISFUNC, rl_insert }, /* u */ { ISFUNC, rl_insert }, /* v */ { ISFUNC, rl_insert }, /* w */ { ISFUNC, rl_insert }, /* x */ { ISFUNC, rl_insert }, /* y */ { ISFUNC, rl_insert }, /* z */ /* Final punctuation. */ { ISFUNC, rl_insert }, /* { */ { ISFUNC, rl_insert }, /* | */ { ISFUNC, rl_insert }, /* } */ { ISFUNC, rl_insert }, /* ~ */ { ISFUNC, rl_rubout }, /* RUBOUT */ #if KEYMAP_SIZE > 128 /* Pure 8-bit characters (128 - 159). These might be used in some character sets. */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ { ISFUNC, rl_insert }, /* ? */ /* ISO Latin-1 characters (160 - 255) */ { ISFUNC, rl_insert }, /* No-break space */ { ISFUNC, rl_insert }, /* Inverted exclamation mark */ { ISFUNC, rl_insert }, /* Cent sign */ { ISFUNC, rl_insert }, /* Pound sign */ { ISFUNC, rl_insert }, /* Currency sign */ { ISFUNC, rl_insert }, /* Yen sign */ { ISFUNC, rl_insert }, /* Broken bar */ { ISFUNC, rl_insert }, /* Section sign */ { ISFUNC, rl_insert }, /* Diaeresis */ { ISFUNC, rl_insert }, /* Copyright sign */ { ISFUNC, rl_insert }, /* Feminine ordinal indicator */ { ISFUNC, rl_insert }, /* Left pointing double angle quotation mark */ { ISFUNC, rl_insert }, /* Not sign */ { ISFUNC, rl_insert }, /* Soft hyphen */ { ISFUNC, rl_insert }, /* Registered sign */ { ISFUNC, rl_insert }, /* Macron */ { ISFUNC, rl_insert }, /* Degree sign */ { ISFUNC, rl_insert }, /* Plus-minus sign */ { ISFUNC, rl_insert }, /* Superscript two */ { ISFUNC, rl_insert }, /* Superscript three */ { ISFUNC, rl_insert }, /* Acute accent */ { ISFUNC, rl_insert }, /* Micro sign */ { ISFUNC, rl_insert }, /* Pilcrow sign */ { ISFUNC, rl_insert }, /* Middle dot */ { ISFUNC, rl_insert }, /* Cedilla */ { ISFUNC, rl_insert }, /* Superscript one */ { ISFUNC, rl_insert }, /* Masculine ordinal indicator */ { ISFUNC, rl_insert }, /* Right pointing double angle quotation mark */ { ISFUNC, rl_insert }, /* Vulgar fraction one quarter */ { ISFUNC, rl_insert }, /* Vulgar fraction one half */ { ISFUNC, rl_insert }, /* Vulgar fraction three quarters */ { ISFUNC, rl_insert }, /* Inverted questionk mark */ { ISFUNC, rl_insert }, /* Latin capital letter a with grave */ { ISFUNC, rl_insert }, /* Latin capital letter a with acute */ { ISFUNC, rl_insert }, /* Latin capital letter a with circumflex */ { ISFUNC, rl_insert }, /* Latin capital letter a with tilde */ { ISFUNC, rl_insert }, /* Latin capital letter a with diaeresis */ { ISFUNC, rl_insert }, /* Latin capital letter a with ring above */ { ISFUNC, rl_insert }, /* Latin capital letter ae */ { ISFUNC, rl_insert }, /* Latin capital letter c with cedilla */ { ISFUNC, rl_insert }, /* Latin capital letter e with grave */ { ISFUNC, rl_insert }, /* Latin capital letter e with acute */ { ISFUNC, rl_insert }, /* Latin capital letter e with circumflex */ { ISFUNC, rl_insert }, /* Latin capital letter e with diaeresis */ { ISFUNC, rl_insert }, /* Latin capital letter i with grave */ { ISFUNC, rl_insert }, /* Latin capital letter i with acute */ { ISFUNC, rl_insert }, /* Latin capital letter i with circumflex */ { ISFUNC, rl_insert }, /* Latin capital letter i with diaeresis */ { ISFUNC, rl_insert }, /* Latin capital letter eth (Icelandic) */ { ISFUNC, rl_insert }, /* Latin capital letter n with tilde */ { ISFUNC, rl_insert }, /* Latin capital letter o with grave */ { ISFUNC, rl_insert }, /* Latin capital letter o with acute */ { ISFUNC, rl_insert }, /* Latin capital letter o with circumflex */ { ISFUNC, rl_insert }, /* Latin capital letter o with tilde */ { ISFUNC, rl_insert }, /* Latin capital letter o with diaeresis */ { ISFUNC, rl_insert }, /* Multiplication sign */ { ISFUNC, rl_insert }, /* Latin capital letter o with stroke */ { ISFUNC, rl_insert }, /* Latin capital letter u with grave */ { ISFUNC, rl_insert }, /* Latin capital letter u with acute */ { ISFUNC, rl_insert }, /* Latin capital letter u with circumflex */ { ISFUNC, rl_insert }, /* Latin capital letter u with diaeresis */ { ISFUNC, rl_insert }, /* Latin capital letter Y with acute */ { ISFUNC, rl_insert }, /* Latin capital letter thorn (Icelandic) */ { ISFUNC, rl_insert }, /* Latin small letter sharp s (German) */ { ISFUNC, rl_insert }, /* Latin small letter a with grave */ { ISFUNC, rl_insert }, /* Latin small letter a with acute */ { ISFUNC, rl_insert }, /* Latin small letter a with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter a with tilde */ { ISFUNC, rl_insert }, /* Latin small letter a with diaeresis */ { ISFUNC, rl_insert }, /* Latin small letter a with ring above */ { ISFUNC, rl_insert }, /* Latin small letter ae */ { ISFUNC, rl_insert }, /* Latin small letter c with cedilla */ { ISFUNC, rl_insert }, /* Latin small letter e with grave */ { ISFUNC, rl_insert }, /* Latin small letter e with acute */ { ISFUNC, rl_insert }, /* Latin small letter e with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter e with diaeresis */ { ISFUNC, rl_insert }, /* Latin small letter i with grave */ { ISFUNC, rl_insert }, /* Latin small letter i with acute */ { ISFUNC, rl_insert }, /* Latin small letter i with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter i with diaeresis */ { ISFUNC, rl_insert }, /* Latin small letter eth (Icelandic) */ { ISFUNC, rl_insert }, /* Latin small letter n with tilde */ { ISFUNC, rl_insert }, /* Latin small letter o with grave */ { ISFUNC, rl_insert }, /* Latin small letter o with acute */ { ISFUNC, rl_insert }, /* Latin small letter o with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter o with tilde */ { ISFUNC, rl_insert }, /* Latin small letter o with diaeresis */ { ISFUNC, rl_insert }, /* Division sign */ { ISFUNC, rl_insert }, /* Latin small letter o with stroke */ { ISFUNC, rl_insert }, /* Latin small letter u with grave */ { ISFUNC, rl_insert }, /* Latin small letter u with acute */ { ISFUNC, rl_insert }, /* Latin small letter u with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter u with diaeresis */ { ISFUNC, rl_insert }, /* Latin small letter y with acute */ { ISFUNC, rl_insert }, /* Latin small letter thorn (Icelandic) */ { ISFUNC, rl_insert } /* Latin small letter y with diaeresis */ #endif /* KEYMAP_SIZE > 128 */ }; KEYMAP_ENTRY_ARRAY emacs_meta_keymap = { /* Meta keys. Just like above, but the high bit is set. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-@ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-a */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-b */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-c */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-d */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-e */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-f */ { ISFUNC, rl_abort }, /* Meta-Control-g */ { ISFUNC, rl_backward_kill_word }, /* Meta-Control-h */ { ISFUNC, rl_tab_insert }, /* Meta-Control-i */ { ISFUNC, rl_vi_editing_mode }, /* Meta-Control-j */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-k */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-l */ { ISFUNC, rl_vi_editing_mode }, /* Meta-Control-m */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-n */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-o */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-p */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-q */ { ISFUNC, rl_revert_line }, /* Meta-Control-r */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-s */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-t */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-u */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-v */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-w */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-x */ { ISFUNC, rl_yank_nth_arg }, /* Meta-Control-y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-z */ { ISFUNC, rl_complete }, /* Meta-Control-[ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-\ */ { ISFUNC, rl_backward_char_search }, /* Meta-Control-] */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-^ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-_ */ /* The start of printing characters. */ { ISFUNC, rl_set_mark }, /* Meta-SPACE */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-! */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-" */ { ISFUNC, rl_insert_comment }, /* Meta-# */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-$ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-% */ { ISFUNC, rl_tilde_expand }, /* Meta-& */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-' */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-( */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-) */ { ISFUNC, rl_insert_completions }, /* Meta-* */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-+ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-, */ { ISFUNC, rl_digit_argument }, /* Meta-- */ { ISFUNC, rl_yank_last_arg}, /* Meta-. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-/ */ /* Regular digits. */ { ISFUNC, rl_digit_argument }, /* Meta-0 */ { ISFUNC, rl_digit_argument }, /* Meta-1 */ { ISFUNC, rl_digit_argument }, /* Meta-2 */ { ISFUNC, rl_digit_argument }, /* Meta-3 */ { ISFUNC, rl_digit_argument }, /* Meta-4 */ { ISFUNC, rl_digit_argument }, /* Meta-5 */ { ISFUNC, rl_digit_argument }, /* Meta-6 */ { ISFUNC, rl_digit_argument }, /* Meta-7 */ { ISFUNC, rl_digit_argument }, /* Meta-8 */ { ISFUNC, rl_digit_argument }, /* Meta-9 */ /* A little more punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-: */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-; */ { ISFUNC, rl_beginning_of_history }, /* Meta-< */ { ISFUNC, rl_possible_completions }, /* Meta-= */ { ISFUNC, rl_end_of_history }, /* Meta-> */ { ISFUNC, rl_possible_completions }, /* Meta-? */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-@ */ /* Uppercase alphabet. */ { ISFUNC, rl_do_lowercase_version }, /* Meta-A */ { ISFUNC, rl_do_lowercase_version }, /* Meta-B */ { ISFUNC, rl_do_lowercase_version }, /* Meta-C */ { ISFUNC, rl_do_lowercase_version }, /* Meta-D */ { ISFUNC, rl_do_lowercase_version }, /* Meta-E */ { ISFUNC, rl_do_lowercase_version }, /* Meta-F */ { ISFUNC, rl_do_lowercase_version }, /* Meta-G */ { ISFUNC, rl_do_lowercase_version }, /* Meta-H */ { ISFUNC, rl_do_lowercase_version }, /* Meta-I */ { ISFUNC, rl_do_lowercase_version }, /* Meta-J */ { ISFUNC, rl_do_lowercase_version }, /* Meta-K */ { ISFUNC, rl_do_lowercase_version }, /* Meta-L */ { ISFUNC, rl_do_lowercase_version }, /* Meta-M */ { ISFUNC, rl_do_lowercase_version }, /* Meta-N */ { ISFUNC, rl_do_lowercase_version }, /* Meta-O */ { ISFUNC, rl_do_lowercase_version }, /* Meta-P */ { ISFUNC, rl_do_lowercase_version }, /* Meta-Q */ { ISFUNC, rl_do_lowercase_version }, /* Meta-R */ { ISFUNC, rl_do_lowercase_version }, /* Meta-S */ { ISFUNC, rl_do_lowercase_version }, /* Meta-T */ { ISFUNC, rl_do_lowercase_version }, /* Meta-U */ { ISFUNC, rl_do_lowercase_version }, /* Meta-V */ { ISFUNC, rl_do_lowercase_version }, /* Meta-W */ { ISFUNC, rl_do_lowercase_version }, /* Meta-X */ { ISFUNC, rl_do_lowercase_version }, /* Meta-Y */ { ISFUNC, rl_do_lowercase_version }, /* Meta-Z */ /* Some more punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-[ */ /* was rl_arrow_keys */ { ISFUNC, rl_delete_horizontal_space }, /* Meta-\ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-] */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-^ */ { ISFUNC, rl_yank_last_arg }, /* Meta-_ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-` */ /* Lowercase alphabet. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-a */ { ISFUNC, rl_backward_word }, /* Meta-b */ { ISFUNC, rl_capitalize_word }, /* Meta-c */ { ISFUNC, rl_kill_word }, /* Meta-d */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-e */ { ISFUNC, rl_forward_word }, /* Meta-f */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-g */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-h */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-i */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-j */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-k */ { ISFUNC, rl_downcase_word }, /* Meta-l */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-m */ { ISFUNC, rl_noninc_forward_search }, /* Meta-n */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-o */ /* was rl_arrow_keys */ { ISFUNC, rl_noninc_reverse_search }, /* Meta-p */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-q */ { ISFUNC, rl_revert_line }, /* Meta-r */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-s */ { ISFUNC, rl_transpose_words }, /* Meta-t */ { ISFUNC, rl_upcase_word }, /* Meta-u */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-v */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-w */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-x */ { ISFUNC, rl_yank_pop }, /* Meta-y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-z */ /* Final punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-{ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-| */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-} */ { ISFUNC, rl_tilde_expand }, /* Meta-~ */ { ISFUNC, rl_backward_kill_word }, /* Meta-rubout */ #if KEYMAP_SIZE > 128 /* Undefined keys. */ { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 } #endif /* KEYMAP_SIZE > 128 */ }; KEYMAP_ENTRY_ARRAY emacs_ctlx_keymap = { /* Control keys. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-d */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-e */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */ { ISFUNC, rl_abort }, /* Control-g */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-h */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-i */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-j */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-k */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-l */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-m */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-n */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-p */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-q */ { ISFUNC, rl_re_read_init_file }, /* Control-r */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-s */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-t */ { ISFUNC, rl_undo_command }, /* Control-u */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-v */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-w */ { ISFUNC, rl_exchange_point_and_mark }, /* Control-x */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-[ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-_ */ /* The start of printing characters. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* SPACE */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */ { ISFUNC, (rl_command_func_t *)0x0 }, /* " */ { ISFUNC, (rl_command_func_t *)0x0 }, /* # */ { ISFUNC, (rl_command_func_t *)0x0 }, /* $ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* % */ { ISFUNC, (rl_command_func_t *)0x0 }, /* & */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */ { ISFUNC, rl_start_kbd_macro }, /* ( */ { ISFUNC, rl_end_kbd_macro }, /* ) */ { ISFUNC, (rl_command_func_t *)0x0 }, /* * */ { ISFUNC, (rl_command_func_t *)0x0 }, /* + */ { ISFUNC, (rl_command_func_t *)0x0 }, /* , */ { ISFUNC, (rl_command_func_t *)0x0 }, /* - */ { ISFUNC, (rl_command_func_t *)0x0 }, /* . */ { ISFUNC, (rl_command_func_t *)0x0 }, /* / */ /* Regular digits. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* 0 */ { ISFUNC, (rl_command_func_t *)0x0 }, /* 1 */ { ISFUNC, (rl_command_func_t *)0x0 }, /* 2 */ { ISFUNC, (rl_command_func_t *)0x0 }, /* 3 */ { ISFUNC, (rl_command_func_t *)0x0 }, /* 4 */ { ISFUNC, (rl_command_func_t *)0x0 }, /* 5 */ { ISFUNC, (rl_command_func_t *)0x0 }, /* 6 */ { ISFUNC, (rl_command_func_t *)0x0 }, /* 7 */ { ISFUNC, (rl_command_func_t *)0x0 }, /* 8 */ { ISFUNC, (rl_command_func_t *)0x0 }, /* 9 */ /* A little more punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* : */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ; */ { ISFUNC, (rl_command_func_t *)0x0 }, /* < */ { ISFUNC, (rl_command_func_t *)0x0 }, /* = */ { ISFUNC, (rl_command_func_t *)0x0 }, /* > */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ? */ { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */ /* Uppercase alphabet. */ { ISFUNC, rl_do_lowercase_version }, /* A */ { ISFUNC, rl_do_lowercase_version }, /* B */ { ISFUNC, rl_do_lowercase_version }, /* C */ { ISFUNC, rl_do_lowercase_version }, /* D */ { ISFUNC, rl_do_lowercase_version }, /* E */ { ISFUNC, rl_do_lowercase_version }, /* F */ { ISFUNC, rl_do_lowercase_version }, /* G */ { ISFUNC, rl_do_lowercase_version }, /* H */ { ISFUNC, rl_do_lowercase_version }, /* I */ { ISFUNC, rl_do_lowercase_version }, /* J */ { ISFUNC, rl_do_lowercase_version }, /* K */ { ISFUNC, rl_do_lowercase_version }, /* L */ { ISFUNC, rl_do_lowercase_version }, /* M */ { ISFUNC, rl_do_lowercase_version }, /* N */ { ISFUNC, rl_do_lowercase_version }, /* O */ { ISFUNC, rl_do_lowercase_version }, /* P */ { ISFUNC, rl_do_lowercase_version }, /* Q */ { ISFUNC, rl_do_lowercase_version }, /* R */ { ISFUNC, rl_do_lowercase_version }, /* S */ { ISFUNC, rl_do_lowercase_version }, /* T */ { ISFUNC, rl_do_lowercase_version }, /* U */ { ISFUNC, rl_do_lowercase_version }, /* V */ { ISFUNC, rl_do_lowercase_version }, /* W */ { ISFUNC, rl_do_lowercase_version }, /* X */ { ISFUNC, rl_do_lowercase_version }, /* Y */ { ISFUNC, rl_do_lowercase_version }, /* Z */ /* Some more punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* [ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* \ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ^ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* _ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ` */ /* Lowercase alphabet. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* a */ { ISFUNC, (rl_command_func_t *)0x0 }, /* b */ { ISFUNC, (rl_command_func_t *)0x0 }, /* c */ { ISFUNC, (rl_command_func_t *)0x0 }, /* d */ { ISFUNC, rl_call_last_kbd_macro }, /* e */ { ISFUNC, (rl_command_func_t *)0x0 }, /* f */ { ISFUNC, (rl_command_func_t *)0x0 }, /* g */ { ISFUNC, (rl_command_func_t *)0x0 }, /* h */ { ISFUNC, (rl_command_func_t *)0x0 }, /* i */ { ISFUNC, (rl_command_func_t *)0x0 }, /* j */ { ISFUNC, (rl_command_func_t *)0x0 }, /* k */ { ISFUNC, (rl_command_func_t *)0x0 }, /* l */ { ISFUNC, (rl_command_func_t *)0x0 }, /* m */ { ISFUNC, (rl_command_func_t *)0x0 }, /* n */ { ISFUNC, (rl_command_func_t *)0x0 }, /* o */ { ISFUNC, (rl_command_func_t *)0x0 }, /* p */ { ISFUNC, (rl_command_func_t *)0x0 }, /* q */ { ISFUNC, (rl_command_func_t *)0x0 }, /* r */ { ISFUNC, (rl_command_func_t *)0x0 }, /* s */ { ISFUNC, (rl_command_func_t *)0x0 }, /* t */ { ISFUNC, (rl_command_func_t *)0x0 }, /* u */ { ISFUNC, (rl_command_func_t *)0x0 }, /* v */ { ISFUNC, (rl_command_func_t *)0x0 }, /* w */ { ISFUNC, (rl_command_func_t *)0x0 }, /* x */ { ISFUNC, (rl_command_func_t *)0x0 }, /* y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* z */ /* Final punctuation. */ { ISFUNC, (rl_command_func_t *)0x0 }, /* { */ { ISFUNC, (rl_command_func_t *)0x0 }, /* | */ { ISFUNC, (rl_command_func_t *)0x0 }, /* } */ { ISFUNC, (rl_command_func_t *)0x0 }, /* ~ */ { ISFUNC, rl_backward_kill_line }, /* RUBOUT */ #if KEYMAP_SIZE > 128 /* Undefined keys. */ { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 }, { ISFUNC, (rl_command_func_t *)0x0 } #endif /* KEYMAP_SIZE > 128 */ }; readline-8.0/isearch.c000664 000436 000000 00000060017 13355220743 015014 0ustar00chetwheel000000 000000 /* isearch.c - incremental searching */ /* **************************************************************** */ /* */ /* I-Search and Searching */ /* */ /* **************************************************************** */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #include #if defined (HAVE_UNISTD_H) # include #endif #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif #include "rldefs.h" #include "rlmbutil.h" #include "readline.h" #include "history.h" #include "rlprivate.h" #include "xmalloc.h" /* Variables exported to other files in the readline library. */ char *_rl_isearch_terminators = (char *)NULL; _rl_search_cxt *_rl_iscxt = 0; /* Variables imported from other files in the readline library. */ extern HIST_ENTRY *_rl_saved_line_for_history; static int rl_search_history PARAMS((int, int)); static _rl_search_cxt *_rl_isearch_init PARAMS((int)); static void _rl_isearch_fini PARAMS((_rl_search_cxt *)); /* Last line found by the current incremental search, so we don't `find' identical lines many times in a row. Now part of isearch context. */ /* static char *prev_line_found; */ /* Last search string and its length. */ static char *last_isearch_string; static int last_isearch_string_len; static char * const default_isearch_terminators = "\033\012"; _rl_search_cxt * _rl_scxt_alloc (int type, int flags) { _rl_search_cxt *cxt; cxt = (_rl_search_cxt *)xmalloc (sizeof (_rl_search_cxt)); cxt->type = type; cxt->sflags = flags; cxt->search_string = 0; cxt->search_string_size = cxt->search_string_index = 0; cxt->lines = 0; cxt->allocated_line = 0; cxt->hlen = cxt->hindex = 0; cxt->save_point = rl_point; cxt->save_mark = rl_mark; cxt->save_line = where_history (); cxt->last_found_line = cxt->save_line; cxt->prev_line_found = 0; cxt->save_undo_list = 0; cxt->keymap = _rl_keymap; cxt->okeymap = _rl_keymap; cxt->history_pos = 0; cxt->direction = 0; cxt->prevc = cxt->lastc = 0; cxt->sline = 0; cxt->sline_len = cxt->sline_index = 0; cxt->search_terminators = 0; return cxt; } void _rl_scxt_dispose (_rl_search_cxt *cxt, int flags) { FREE (cxt->search_string); FREE (cxt->allocated_line); FREE (cxt->lines); xfree (cxt); } /* Search backwards through the history looking for a string which is typed interactively. Start with the current line. */ int rl_reverse_search_history (int sign, int key) { return (rl_search_history (-sign, key)); } /* Search forwards through the history looking for a string which is typed interactively. Start with the current line. */ int rl_forward_search_history (int sign, int key) { return (rl_search_history (sign, key)); } /* Display the current state of the search in the echo-area. SEARCH_STRING contains the string that is being searched for, DIRECTION is zero for forward, or non-zero for reverse, WHERE is the history list number of the current line. If it is -1, then this line is the starting one. */ static void rl_display_search (char *search_string, int flags, int where) { char *message; int msglen, searchlen; searchlen = (search_string && *search_string) ? strlen (search_string) : 0; message = (char *)xmalloc (searchlen + 64); msglen = 0; #if defined (NOTDEF) if (where != -1) { sprintf (message, "[%d]", where + history_base); msglen = strlen (message); } #endif /* NOTDEF */ message[msglen++] = '('; if (flags & SF_FAILED) { strcpy (message + msglen, "failed "); msglen += 7; } if (flags & SF_REVERSE) { strcpy (message + msglen, "reverse-"); msglen += 8; } strcpy (message + msglen, "i-search)`"); msglen += 10; if (search_string) { strcpy (message + msglen, search_string); msglen += searchlen; } strcpy (message + msglen, "': "); rl_message ("%s", message); xfree (message); (*rl_redisplay_function) (); } static _rl_search_cxt * _rl_isearch_init (int direction) { _rl_search_cxt *cxt; register int i; HIST_ENTRY **hlist; cxt = _rl_scxt_alloc (RL_SEARCH_ISEARCH, 0); if (direction < 0) cxt->sflags |= SF_REVERSE; cxt->search_terminators = _rl_isearch_terminators ? _rl_isearch_terminators : default_isearch_terminators; /* Create an array of pointers to the lines that we want to search. */ hlist = history_list (); rl_maybe_replace_line (); i = 0; if (hlist) for (i = 0; hlist[i]; i++); /* Allocate space for this many lines, +1 for the current input line, and remember those lines. */ cxt->lines = (char **)xmalloc ((1 + (cxt->hlen = i)) * sizeof (char *)); for (i = 0; i < cxt->hlen; i++) cxt->lines[i] = hlist[i]->line; if (_rl_saved_line_for_history) cxt->lines[i] = _rl_saved_line_for_history->line; else { /* Keep track of this so we can free it. */ cxt->allocated_line = (char *)xmalloc (1 + strlen (rl_line_buffer)); strcpy (cxt->allocated_line, &rl_line_buffer[0]); cxt->lines[i] = cxt->allocated_line; } cxt->hlen++; /* The line where we start the search. */ cxt->history_pos = cxt->save_line; rl_save_prompt (); /* Initialize search parameters. */ cxt->search_string = (char *)xmalloc (cxt->search_string_size = 128); cxt->search_string[cxt->search_string_index = 0] = '\0'; /* Normalize DIRECTION into 1 or -1. */ cxt->direction = (direction >= 0) ? 1 : -1; cxt->sline = rl_line_buffer; cxt->sline_len = strlen (cxt->sline); cxt->sline_index = rl_point; _rl_iscxt = cxt; /* save globally */ return cxt; } static void _rl_isearch_fini (_rl_search_cxt *cxt) { /* First put back the original state. */ rl_replace_line (cxt->lines[cxt->save_line], 0); rl_restore_prompt (); /* Save the search string for possible later use. */ FREE (last_isearch_string); last_isearch_string = cxt->search_string; last_isearch_string_len = cxt->search_string_index; cxt->search_string = 0; if (cxt->last_found_line < cxt->save_line) rl_get_previous_history (cxt->save_line - cxt->last_found_line, 0); else rl_get_next_history (cxt->last_found_line - cxt->save_line, 0); /* If the string was not found, put point at the end of the last matching line. If last_found_line == orig_line, we didn't find any matching history lines at all, so put point back in its original position. */ if (cxt->sline_index < 0) { if (cxt->last_found_line == cxt->save_line) cxt->sline_index = cxt->save_point; else cxt->sline_index = strlen (rl_line_buffer); rl_mark = cxt->save_mark; } rl_point = cxt->sline_index; /* Don't worry about where to put the mark here; rl_get_previous_history and rl_get_next_history take care of it. */ _rl_fix_point (0); rl_clear_message (); } int _rl_search_getchar (_rl_search_cxt *cxt) { int c; /* Read a key and decide how to proceed. */ RL_SETSTATE(RL_STATE_MOREINPUT); c = cxt->lastc = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); #if defined (HANDLE_MULTIBYTE) /* This ends up with C (and LASTC) being set to the last byte of the multibyte character. In most cases c == lastc == mb[0] */ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) c = cxt->lastc = _rl_read_mbstring (cxt->lastc, cxt->mb, MB_LEN_MAX); #endif RL_CHECK_SIGNALS (); return c; } #define ENDSRCH_CHAR(c) \ ((CTRL_CHAR (c) || META_CHAR (c) || (c) == RUBOUT) && ((c) != CTRL ('G'))) /* Process just-read character C according to isearch context CXT. Return -1 if the caller should just free the context and return, 0 if we should break out of the loop, and 1 if we should continue to read characters. */ int _rl_isearch_dispatch (_rl_search_cxt *cxt, int c) { int n, wstart, wlen, limit, cval, incr; char *paste; size_t pastelen; int j; rl_command_func_t *f; f = (rl_command_func_t *)NULL; if (c < 0) { cxt->sflags |= SF_FAILED; cxt->history_pos = cxt->last_found_line; return -1; } /* If we are moving into a new keymap, modify cxt->keymap and go on. This can be a problem if c == ESC and we want to terminate the incremental search, so we check */ if (c >= 0 && cxt->keymap[c].type == ISKMAP && strchr (cxt->search_terminators, cxt->lastc) == 0) { /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued takes microseconds, so multiply by 1000. If we don't get any additional input and this keymap shadows another function, process that key as if it was all we read. */ if (_rl_keyseq_timeout > 0 && RL_ISSTATE (RL_STATE_CALLBACK) == 0 && RL_ISSTATE (RL_STATE_INPUTPENDING) == 0 && _rl_pushed_input_available () == 0 && ((Keymap)(cxt->keymap[c].function))[ANYOTHERKEY].function && _rl_input_queued (_rl_keyseq_timeout*1000) == 0) goto add_character; cxt->okeymap = cxt->keymap; cxt->keymap = FUNCTION_TO_KEYMAP (cxt->keymap, c); cxt->sflags |= SF_CHGKMAP; /* XXX - we should probably save this sequence, so we can do something useful if this doesn't end up mapping to a command we interpret here. Right now we just save the most recent character that caused the index into a new keymap. */ cxt->prevc = c; #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { if (cxt->mb[1] == 0) { cxt->pmb[0] = c; /* XXX should be == cxt->mb[0] */ cxt->pmb[1] = '\0'; } else memcpy (cxt->pmb, cxt->mb, sizeof (cxt->pmb)); } #endif return 1; } add_character: /* Translate the keys we do something with to opcodes. */ if (c >= 0 && cxt->keymap[c].type == ISFUNC) { f = cxt->keymap[c].function; if (f == rl_reverse_search_history) cxt->lastc = (cxt->sflags & SF_REVERSE) ? -1 : -2; else if (f == rl_forward_search_history) cxt->lastc = (cxt->sflags & SF_REVERSE) ? -2 : -1; else if (f == rl_rubout) cxt->lastc = -3; else if (c == CTRL ('G') || f == rl_abort) cxt->lastc = -4; else if (c == CTRL ('W') || f == rl_unix_word_rubout) /* XXX */ cxt->lastc = -5; else if (c == CTRL ('Y') || f == rl_yank) /* XXX */ cxt->lastc = -6; else if (f == rl_bracketed_paste_begin) cxt->lastc = -7; } /* If we changed the keymap earlier while translating a key sequence into a command, restore it now that we've succeeded. */ if (cxt->sflags & SF_CHGKMAP) { cxt->keymap = cxt->okeymap; cxt->sflags &= ~SF_CHGKMAP; /* If we indexed into a new keymap, but didn't map to a command that affects the search (lastc > 0), and the character that mapped to a new keymap would have ended the search (ENDSRCH_CHAR(cxt->prevc)), handle that now as if the previous char would have ended the search and we would have read the current character. */ /* XXX - should we check cxt->mb? */ if (cxt->lastc > 0 && ENDSRCH_CHAR (cxt->prevc)) { rl_stuff_char (cxt->lastc); rl_execute_next (cxt->prevc); /* XXX - do we insert everything in cxt->pmb? */ return (0); } /* Otherwise, if the current character is mapped to self-insert or nothing (i.e., not an editing command), and the previous character was a keymap index, then we need to insert both the previous character and the current character into the search string. */ else if (cxt->lastc > 0 && cxt->prevc > 0 && cxt->keymap[cxt->prevc].type == ISKMAP && (f == 0 || f == rl_insert)) { /* Make lastc be the next character read */ /* XXX - do we insert everything in cxt->mb? */ rl_execute_next (cxt->lastc); /* Dispatch on the previous character (insert into search string) */ cxt->lastc = cxt->prevc; #if defined (HANDLE_MULTIBYTE) /* Have to overwrite cxt->mb here because dispatch uses it below */ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { if (cxt->pmb[1] == 0) { cxt->mb[0] = cxt->lastc; /* == cxt->prevc */ cxt->mb[1] = '\0'; } else memcpy (cxt->mb, cxt->pmb, sizeof (cxt->mb)); } #endif cxt->prevc = 0; } else if (cxt->lastc > 0 && cxt->prevc > 0 && f && f != rl_insert) { rl_stuff_char (cxt->lastc); rl_execute_next (cxt->prevc); /* XXX - do we insert everything in cxt->pmb? */ return (0); } } /* The characters in isearch_terminators (set from the user-settable variable isearch-terminators) are used to terminate the search but not subsequently execute the character as a command. The default value is "\033\012" (ESC and C-J). */ if (cxt->lastc > 0 && strchr (cxt->search_terminators, cxt->lastc)) { /* ESC still terminates the search, but if there is pending input or if input arrives within 0.1 seconds (on systems with select(2)) it is used as a prefix character with rl_execute_next. WATCH OUT FOR THIS! This is intended to allow the arrow keys to be used like ^F and ^B are used to terminate the search and execute the movement command. XXX - since _rl_input_available depends on the application- settable keyboard timeout value, this could alternatively use _rl_input_queued(100000) */ if (cxt->lastc == ESC && (_rl_pushed_input_available () || _rl_input_available ())) rl_execute_next (ESC); return (0); } #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { if (cxt->lastc >= 0 && (cxt->mb[0] && cxt->mb[1] == '\0') && ENDSRCH_CHAR (cxt->lastc)) { /* This sets rl_pending_input to LASTC; it will be picked up the next time rl_read_key is called. */ rl_execute_next (cxt->lastc); return (0); } } else #endif if (cxt->lastc >= 0 && ENDSRCH_CHAR (cxt->lastc)) { /* This sets rl_pending_input to LASTC; it will be picked up the next time rl_read_key is called. */ rl_execute_next (cxt->lastc); return (0); } /* Now dispatch on the character. `Opcodes' affect the search string or state. Other characters are added to the string. */ switch (cxt->lastc) { /* search again */ case -1: if (cxt->search_string_index == 0) { if (last_isearch_string) { cxt->search_string_size = 64 + last_isearch_string_len; cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); strcpy (cxt->search_string, last_isearch_string); cxt->search_string_index = last_isearch_string_len; rl_display_search (cxt->search_string, cxt->sflags, -1); break; } return (1); } else if ((cxt->sflags & SF_REVERSE) && cxt->sline_index >= 0) cxt->sline_index--; else if (cxt->sline_index != cxt->sline_len) cxt->sline_index++; else rl_ding (); break; /* switch directions */ case -2: cxt->direction = -cxt->direction; if (cxt->direction < 0) cxt->sflags |= SF_REVERSE; else cxt->sflags &= ~SF_REVERSE; break; /* delete character from search string. */ case -3: /* C-H, DEL */ /* This is tricky. To do this right, we need to keep a stack of search positions for the current search, with sentinels marking the beginning and end. But this will do until we have a real isearch-undo. */ if (cxt->search_string_index == 0) rl_ding (); else if (MB_CUR_MAX == 1 || rl_byte_oriented) cxt->search_string[--cxt->search_string_index] = '\0'; else { wstart = _rl_find_prev_mbchar (cxt->search_string, cxt->search_string_index, MB_FIND_NONZERO); if (wstart >= 0) cxt->search_string[cxt->search_string_index = wstart] = '\0'; else cxt->search_string[cxt->search_string_index = 0] = '\0'; } if (cxt->search_string_index == 0) rl_ding (); break; case -4: /* C-G, abort */ rl_replace_line (cxt->lines[cxt->save_line], 0); rl_point = cxt->save_point; rl_mark = cxt->save_mark; rl_restore_prompt(); rl_clear_message (); return -1; case -5: /* C-W */ /* skip over portion of line we already matched and yank word */ wstart = rl_point + cxt->search_string_index; if (wstart >= rl_end) { rl_ding (); break; } /* if not in a word, move to one. */ cval = _rl_char_value (rl_line_buffer, wstart); if (_rl_walphabetic (cval) == 0) { rl_ding (); break; } n = MB_NEXTCHAR (rl_line_buffer, wstart, 1, MB_FIND_NONZERO);; while (n < rl_end) { cval = _rl_char_value (rl_line_buffer, n); if (_rl_walphabetic (cval) == 0) break; n = MB_NEXTCHAR (rl_line_buffer, n, 1, MB_FIND_NONZERO);; } wlen = n - wstart + 1; if (cxt->search_string_index + wlen + 1 >= cxt->search_string_size) { cxt->search_string_size += wlen + 1; cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); } for (; wstart < n; wstart++) cxt->search_string[cxt->search_string_index++] = rl_line_buffer[wstart]; cxt->search_string[cxt->search_string_index] = '\0'; break; case -6: /* C-Y */ /* skip over portion of line we already matched and yank rest */ wstart = rl_point + cxt->search_string_index; if (wstart >= rl_end) { rl_ding (); break; } n = rl_end - wstart + 1; if (cxt->search_string_index + n + 1 >= cxt->search_string_size) { cxt->search_string_size += n + 1; cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); } for (n = wstart; n < rl_end; n++) cxt->search_string[cxt->search_string_index++] = rl_line_buffer[n]; cxt->search_string[cxt->search_string_index] = '\0'; break; case -7: /* bracketed paste */ paste = _rl_bracketed_text (&pastelen); if (paste == 0 || *paste == 0) { free (paste); break; } if (cxt->search_string_index + pastelen + 1 >= cxt->search_string_size) { cxt->search_string_size += pastelen + 2; cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); } strcpy (cxt->search_string + cxt->search_string_index, paste); cxt->search_string_index += pastelen; free (paste); break; /* Add character to search string and continue search. */ default: #if defined (HANDLE_MULTIBYTE) wlen = (cxt->mb[0] == 0 || cxt->mb[1] == 0) ? 1 : RL_STRLEN (cxt->mb); #else wlen = 1; #endif if (cxt->search_string_index + wlen + 1 >= cxt->search_string_size) { cxt->search_string_size += 128; /* 128 much greater than MB_CUR_MAX */ cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); } #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { int j; if (cxt->mb[0] == 0 || cxt->mb[1] == 0) cxt->search_string[cxt->search_string_index++] = cxt->mb[0]; else for (j = 0; j < wlen; ) cxt->search_string[cxt->search_string_index++] = cxt->mb[j++]; } else #endif cxt->search_string[cxt->search_string_index++] = cxt->lastc; /* XXX - was c instead of lastc */ cxt->search_string[cxt->search_string_index] = '\0'; break; } for (cxt->sflags &= ~(SF_FOUND|SF_FAILED);; ) { if (cxt->search_string_index == 0) { cxt->sflags |= SF_FAILED; break; } limit = cxt->sline_len - cxt->search_string_index + 1; /* Search the current line. */ while ((cxt->sflags & SF_REVERSE) ? (cxt->sline_index >= 0) : (cxt->sline_index < limit)) { if (STREQN (cxt->search_string, cxt->sline + cxt->sline_index, cxt->search_string_index)) { cxt->sflags |= SF_FOUND; break; } else cxt->sline_index += cxt->direction; if (cxt->sline_index < 0) { cxt->sline_index = 0; break; } } if (cxt->sflags & SF_FOUND) break; /* Move to the next line, but skip new copies of the line we just found and lines shorter than the string we're searching for. */ do { /* Move to the next line. */ cxt->history_pos += cxt->direction; /* At limit for direction? */ if ((cxt->sflags & SF_REVERSE) ? (cxt->history_pos < 0) : (cxt->history_pos == cxt->hlen)) { cxt->sflags |= SF_FAILED; break; } /* We will need these later. */ cxt->sline = cxt->lines[cxt->history_pos]; cxt->sline_len = strlen (cxt->sline); } while ((cxt->prev_line_found && STREQ (cxt->prev_line_found, cxt->lines[cxt->history_pos])) || (cxt->search_string_index > cxt->sline_len)); if (cxt->sflags & SF_FAILED) { /* XXX - reset sline_index if < 0 */ if (cxt->sline_index < 0) cxt->sline_index = 0; break; } /* Now set up the line for searching... */ cxt->sline_index = (cxt->sflags & SF_REVERSE) ? cxt->sline_len - cxt->search_string_index : 0; } if (cxt->sflags & SF_FAILED) { /* We cannot find the search string. Ding the bell. */ rl_ding (); cxt->history_pos = cxt->last_found_line; rl_display_search (cxt->search_string, cxt->sflags, (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos); return 1; } /* We have found the search string. Just display it. But don't actually move there in the history list until the user accepts the location. */ if (cxt->sflags & SF_FOUND) { cxt->prev_line_found = cxt->lines[cxt->history_pos]; rl_replace_line (cxt->lines[cxt->history_pos], 0); rl_point = cxt->sline_index; cxt->last_found_line = cxt->history_pos; rl_display_search (cxt->search_string, cxt->sflags, (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos); } return 1; } int _rl_isearch_cleanup (_rl_search_cxt *cxt, int r) { if (r >= 0) _rl_isearch_fini (cxt); _rl_scxt_dispose (cxt, 0); _rl_iscxt = 0; RL_UNSETSTATE(RL_STATE_ISEARCH); return (r != 0); } /* Search through the history looking for an interactively typed string. This is analogous to i-search. We start the search in the current line. DIRECTION is which direction to search; >= 0 means forward, < 0 means backwards. */ static int rl_search_history (int direction, int invoking_key) { _rl_search_cxt *cxt; /* local for now, but saved globally */ int c, r; RL_SETSTATE(RL_STATE_ISEARCH); cxt = _rl_isearch_init (direction); rl_display_search (cxt->search_string, cxt->sflags, -1); /* If we are using the callback interface, all we do is set up here and return. The key is that we leave RL_STATE_ISEARCH set. */ if (RL_ISSTATE (RL_STATE_CALLBACK)) return (0); r = -1; for (;;) { c = _rl_search_getchar (cxt); /* We might want to handle EOF here (c == 0) */ r = _rl_isearch_dispatch (cxt, cxt->lastc); if (r <= 0) break; } /* The searching is over. The user may have found the string that she was looking for, or else she may have exited a failing search. If LINE_INDEX is -1, then that shows that the string searched for was not found. We use this to determine where to place rl_point. */ return (_rl_isearch_cleanup (cxt, r)); } #if defined (READLINE_CALLBACKS) /* Called from the callback functions when we are ready to read a key. The callback functions know to call this because RL_ISSTATE(RL_STATE_ISEARCH). If _rl_isearch_dispatch finishes searching, this function is responsible for turning off RL_STATE_ISEARCH, which it does using _rl_isearch_cleanup. */ int _rl_isearch_callback (_rl_search_cxt *cxt) { int c, r; c = _rl_search_getchar (cxt); /* We might want to handle EOF here */ r = _rl_isearch_dispatch (cxt, cxt->lastc); return (r <= 0) ? _rl_isearch_cleanup (cxt, r) : 0; } #endif readline-8.0/kill.c000644 000436 000000 00000041526 13355213755 014340 0ustar00chetwheel000000 000000 /* kill.c -- kill ring management. */ /* Copyright (C) 1994-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (HAVE_CONFIG_H) # include #endif #include #if defined (HAVE_UNISTD_H) # include /* for _POSIX_VERSION */ #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include /* System-specific feature definitions and include files. */ #include "rldefs.h" /* Some standard library routines. */ #include "readline.h" #include "history.h" #include "rlprivate.h" #include "xmalloc.h" /* **************************************************************** */ /* */ /* Killing Mechanism */ /* */ /* **************************************************************** */ /* What we assume for a max number of kills. */ #define DEFAULT_MAX_KILLS 10 /* The real variable to look at to find out when to flush kills. */ static int rl_max_kills = DEFAULT_MAX_KILLS; /* Where to store killed text. */ static char **rl_kill_ring = (char **)NULL; /* Where we are in the kill ring. */ static int rl_kill_index; /* How many slots we have in the kill ring. */ static int rl_kill_ring_length; static int _rl_copy_to_kill_ring PARAMS((char *, int)); static int region_kill_internal PARAMS((int)); static int _rl_copy_word_as_kill PARAMS((int, int)); static int rl_yank_nth_arg_internal PARAMS((int, int, int)); /* How to say that you only want to save a certain amount of kill material. */ int rl_set_retained_kills (int num) { return 0; } /* Add TEXT to the kill ring, allocating a new kill ring slot as necessary. This uses TEXT directly, so the caller must not free it. If APPEND is non-zero, and the last command was a kill, the text is appended to the current kill ring slot, otherwise prepended. */ static int _rl_copy_to_kill_ring (char *text, int append) { char *old, *new; int slot; /* First, find the slot to work with. */ if (_rl_last_command_was_kill == 0 || rl_kill_ring == 0) { /* Get a new slot. */ if (rl_kill_ring == 0) { /* If we don't have any defined, then make one. */ rl_kill_ring = (char **) xmalloc (((rl_kill_ring_length = 1) + 1) * sizeof (char *)); rl_kill_ring[slot = 0] = (char *)NULL; } else { /* We have to add a new slot on the end, unless we have exceeded the max limit for remembering kills. */ slot = rl_kill_ring_length; if (slot == rl_max_kills) { register int i; xfree (rl_kill_ring[0]); for (i = 0; i < slot; i++) rl_kill_ring[i] = rl_kill_ring[i + 1]; } else { slot = rl_kill_ring_length += 1; rl_kill_ring = (char **)xrealloc (rl_kill_ring, (slot + 1) * sizeof (char *)); } rl_kill_ring[--slot] = (char *)NULL; } } else slot = rl_kill_ring_length - 1; /* If the last command was a kill, prepend or append. */ if (_rl_last_command_was_kill && rl_kill_ring[slot] && rl_editing_mode != vi_mode) { old = rl_kill_ring[slot]; new = (char *)xmalloc (1 + strlen (old) + strlen (text)); if (append) { strcpy (new, old); strcat (new, text); } else { strcpy (new, text); strcat (new, old); } xfree (old); xfree (text); rl_kill_ring[slot] = new; } else rl_kill_ring[slot] = text; rl_kill_index = slot; return 0; } /* The way to kill something. This appends or prepends to the last kill, if the last command was a kill command. if FROM is less than TO, then the text is appended, otherwise prepended. If the last command was not a kill command, then a new slot is made for this kill. */ int rl_kill_text (int from, int to) { char *text; /* Is there anything to kill? */ if (from == to) { _rl_last_command_was_kill++; return 0; } text = rl_copy_text (from, to); /* Delete the copied text from the line. */ rl_delete_text (from, to); _rl_copy_to_kill_ring (text, from < to); _rl_last_command_was_kill++; return 0; } /* Now REMEMBER! In order to do prepending or appending correctly, kill commands always make rl_point's original position be the FROM argument, and rl_point's extent be the TO argument. */ /* **************************************************************** */ /* */ /* Killing Commands */ /* */ /* **************************************************************** */ /* Delete the word at point, saving the text in the kill ring. */ int rl_kill_word (int count, int key) { int orig_point; if (count < 0) return (rl_backward_kill_word (-count, key)); else { orig_point = rl_point; rl_forward_word (count, key); if (rl_point != orig_point) rl_kill_text (orig_point, rl_point); rl_point = orig_point; if (rl_editing_mode == emacs_mode) rl_mark = rl_point; } return 0; } /* Rubout the word before point, placing it on the kill ring. */ int rl_backward_kill_word (int count, int key) { int orig_point; if (count < 0) return (rl_kill_word (-count, key)); else { orig_point = rl_point; rl_backward_word (count, key); if (rl_point != orig_point) rl_kill_text (orig_point, rl_point); if (rl_editing_mode == emacs_mode) rl_mark = rl_point; } return 0; } /* Kill from here to the end of the line. If DIRECTION is negative, kill back to the line start instead. */ int rl_kill_line (int direction, int key) { int orig_point; if (direction < 0) return (rl_backward_kill_line (1, key)); else { orig_point = rl_point; rl_end_of_line (1, key); if (orig_point != rl_point) rl_kill_text (orig_point, rl_point); rl_point = orig_point; if (rl_editing_mode == emacs_mode) rl_mark = rl_point; } return 0; } /* Kill backwards to the start of the line. If DIRECTION is negative, kill forwards to the line end instead. */ int rl_backward_kill_line (int direction, int key) { int orig_point; if (direction < 0) return (rl_kill_line (1, key)); else { if (rl_point == 0) rl_ding (); else { orig_point = rl_point; rl_beg_of_line (1, key); if (rl_point != orig_point) rl_kill_text (orig_point, rl_point); if (rl_editing_mode == emacs_mode) rl_mark = rl_point; } } return 0; } /* Kill the whole line, no matter where point is. */ int rl_kill_full_line (int count, int key) { rl_begin_undo_group (); rl_point = 0; rl_kill_text (rl_point, rl_end); rl_mark = 0; rl_end_undo_group (); return 0; } /* The next two functions mimic unix line editing behaviour, except they save the deleted text on the kill ring. This is safer than not saving it, and since we have a ring, nobody should get screwed. */ /* This does what C-w does in Unix. We can't prevent people from using behaviour that they expect. */ int rl_unix_word_rubout (int count, int key) { int orig_point; if (rl_point == 0) rl_ding (); else { orig_point = rl_point; if (count <= 0) count = 1; while (count--) { while (rl_point && whitespace (rl_line_buffer[rl_point - 1])) rl_point--; while (rl_point && (whitespace (rl_line_buffer[rl_point - 1]) == 0)) rl_point--; /* XXX - multibyte? */ } rl_kill_text (orig_point, rl_point); if (rl_editing_mode == emacs_mode) rl_mark = rl_point; } return 0; } /* This deletes one filename component in a Unix pathname. That is, it deletes backward to directory separator (`/') or whitespace. */ int rl_unix_filename_rubout (int count, int key) { int orig_point, c; if (rl_point == 0) rl_ding (); else { orig_point = rl_point; if (count <= 0) count = 1; while (count--) { c = rl_line_buffer[rl_point - 1]; while (rl_point && (whitespace (c) || c == '/')) { rl_point--; c = rl_line_buffer[rl_point - 1]; } while (rl_point && (whitespace (c) == 0) && c != '/') { rl_point--; /* XXX - multibyte? */ c = rl_line_buffer[rl_point - 1]; } } rl_kill_text (orig_point, rl_point); if (rl_editing_mode == emacs_mode) rl_mark = rl_point; } return 0; } /* Here is C-u doing what Unix does. You don't *have* to use these key-bindings. We have a choice of killing the entire line, or killing from where we are to the start of the line. We choose the latter, because if you are a Unix weenie, then you haven't backspaced into the line at all, and if you aren't, then you know what you are doing. */ int rl_unix_line_discard (int count, int key) { if (rl_point == 0) rl_ding (); else { rl_kill_text (rl_point, 0); rl_point = 0; if (rl_editing_mode == emacs_mode) rl_mark = rl_point; } return 0; } /* Copy the text in the `region' to the kill ring. If DELETE is non-zero, delete the text from the line as well. */ static int region_kill_internal (int delete) { char *text; if (rl_mark != rl_point) { text = rl_copy_text (rl_point, rl_mark); if (delete) rl_delete_text (rl_point, rl_mark); _rl_copy_to_kill_ring (text, rl_point < rl_mark); } _rl_last_command_was_kill++; return 0; } /* Copy the text in the region to the kill ring. */ int rl_copy_region_to_kill (int count, int key) { return (region_kill_internal (0)); } /* Kill the text between the point and mark. */ int rl_kill_region (int count, int key) { int r, npoint; npoint = (rl_point < rl_mark) ? rl_point : rl_mark; r = region_kill_internal (1); _rl_fix_point (1); rl_point = npoint; return r; } /* Copy COUNT words to the kill ring. DIR says which direction we look to find the words. */ static int _rl_copy_word_as_kill (int count, int dir) { int om, op, r; om = rl_mark; op = rl_point; if (dir > 0) rl_forward_word (count, 0); else rl_backward_word (count, 0); rl_mark = rl_point; if (dir > 0) rl_backward_word (count, 0); else rl_forward_word (count, 0); r = region_kill_internal (0); rl_mark = om; rl_point = op; return r; } int rl_copy_forward_word (int count, int key) { if (count < 0) return (rl_copy_backward_word (-count, key)); return (_rl_copy_word_as_kill (count, 1)); } int rl_copy_backward_word (int count, int key) { if (count < 0) return (rl_copy_forward_word (-count, key)); return (_rl_copy_word_as_kill (count, -1)); } /* Yank back the last killed text. This ignores arguments. */ int rl_yank (int count, int key) { if (rl_kill_ring == 0) { _rl_abort_internal (); return 1; } _rl_set_mark_at_pos (rl_point); rl_insert_text (rl_kill_ring[rl_kill_index]); return 0; } /* If the last command was yank, or yank_pop, and the text just before point is identical to the current kill item, then delete that text from the line, rotate the index down, and yank back some other text. */ int rl_yank_pop (int count, int key) { int l, n; if (((rl_last_func != rl_yank_pop) && (rl_last_func != rl_yank)) || !rl_kill_ring) { _rl_abort_internal (); return 1; } l = strlen (rl_kill_ring[rl_kill_index]); n = rl_point - l; if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l)) { rl_delete_text (n, rl_point); rl_point = n; rl_kill_index--; if (rl_kill_index < 0) rl_kill_index = rl_kill_ring_length - 1; rl_yank (1, 0); return 0; } else { _rl_abort_internal (); return 1; } } #if defined (VI_MODE) int rl_vi_yank_pop (int count, int key) { int l, n; if (((rl_last_func != rl_vi_yank_pop) && (rl_last_func != rl_vi_put)) || !rl_kill_ring) { _rl_abort_internal (); return 1; } l = strlen (rl_kill_ring[rl_kill_index]); n = rl_point - l; if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l)) { rl_delete_text (n, rl_point); rl_point = n; rl_kill_index--; if (rl_kill_index < 0) rl_kill_index = rl_kill_ring_length - 1; rl_vi_put (1, 'p'); return 0; } else { _rl_abort_internal (); return 1; } } #endif /* VI_MODE */ /* Yank the COUNTh argument from the previous history line, skipping HISTORY_SKIP lines before looking for the `previous line'. */ static int rl_yank_nth_arg_internal (int count, int key, int history_skip) { register HIST_ENTRY *entry; char *arg; int i, pos; pos = where_history (); if (history_skip) { for (i = 0; i < history_skip; i++) entry = previous_history (); } entry = previous_history (); history_set_pos (pos); if (entry == 0) { rl_ding (); return 1; } arg = history_arg_extract (count, count, entry->line); if (!arg || !*arg) { rl_ding (); FREE (arg); return 1; } rl_begin_undo_group (); _rl_set_mark_at_pos (rl_point); #if defined (VI_MODE) /* Vi mode always inserts a space before yanking the argument, and it inserts it right *after* rl_point. */ if (rl_editing_mode == vi_mode) { rl_vi_append_mode (1, key); rl_insert_text (" "); } #endif /* VI_MODE */ rl_insert_text (arg); xfree (arg); rl_end_undo_group (); return 0; } /* Yank the COUNTth argument from the previous history line. */ int rl_yank_nth_arg (int count, int key) { return (rl_yank_nth_arg_internal (count, key, 0)); } /* Yank the last argument from the previous history line. This `knows' how rl_yank_nth_arg treats a count of `$'. With an argument, this behaves the same as rl_yank_nth_arg. */ int rl_yank_last_arg (int count, int key) { static int history_skip = 0; static int explicit_arg_p = 0; static int count_passed = 1; static int direction = 1; static int undo_needed = 0; int retval; if (rl_last_func != rl_yank_last_arg) { history_skip = 0; explicit_arg_p = rl_explicit_arg; count_passed = count; direction = 1; } else { if (undo_needed) rl_do_undo (); if (count < 0) /* XXX - was < 1 */ direction = -direction; history_skip += direction; if (history_skip < 0) history_skip = 0; } if (explicit_arg_p) retval = rl_yank_nth_arg_internal (count_passed, key, history_skip); else retval = rl_yank_nth_arg_internal ('$', key, history_skip); undo_needed = retval == 0; return retval; } /* Having read the special escape sequence denoting the beginning of a `bracketed paste' sequence, read the rest of the pasted input until the closing sequence and insert the pasted text as a single unit without interpretation. */ char * _rl_bracketed_text (size_t *lenp) { int c; size_t len, cap; char *buf; len = 0; buf = xmalloc (cap = 64); buf[0] = '\0'; RL_SETSTATE (RL_STATE_MOREINPUT); while ((c = rl_read_key ()) >= 0) { if (RL_ISSTATE (RL_STATE_MACRODEF)) _rl_add_macro_char (c); if (c == '\r') /* XXX */ c = '\n'; if (len == cap) buf = xrealloc (buf, cap *= 2); buf[len++] = c; if (len >= BRACK_PASTE_SLEN && c == BRACK_PASTE_LAST && STREQN (buf + len - BRACK_PASTE_SLEN, BRACK_PASTE_SUFF, BRACK_PASTE_SLEN)) { len -= BRACK_PASTE_SLEN; break; } } RL_UNSETSTATE (RL_STATE_MOREINPUT); if (c >= 0) { if (len == cap) buf = xrealloc (buf, cap + 1); buf[len] = '\0'; } if (lenp) *lenp = len; return (buf); } int rl_bracketed_paste_begin (int count, int key) { int retval, c; size_t len, cap; char *buf; buf = _rl_bracketed_text (&len); retval = rl_insert_text (buf) == len ? 0 : 1; xfree (buf); return (retval); } /* A special paste command for Windows users. */ #if defined (_WIN32) #include int rl_paste_from_clipboard (int count, int key) { char *data, *ptr; int len; if (OpenClipboard (NULL) == 0) return (0); data = (char *)GetClipboardData (CF_TEXT); if (data) { ptr = strchr (data, '\r'); if (ptr) { len = ptr - data; ptr = (char *)xmalloc (len + 1); ptr[len] = '\0'; strncpy (ptr, data, len); } else ptr = data; _rl_set_mark_at_pos (rl_point); rl_insert_text (ptr); if (ptr != data) xfree (ptr); CloseClipboard (); } return (0); } #endif /* _WIN32 */ readline-8.0/input.c000644 000436 000120 00000037332 13354235125 014525 0ustar00chetadmin000000 000000 /* input.c -- character input functions for readline. */ /* Copyright (C) 1994-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (__TANDEM) # include #endif #if defined (HAVE_CONFIG_H) # include #endif #include #include #if defined (HAVE_SYS_FILE_H) # include #endif /* HAVE_SYS_FILE_H */ #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include #include "posixselect.h" #if defined (FIONREAD_IN_SYS_IOCTL) # include #endif #include #include #if !defined (errno) extern int errno; #endif /* !errno */ /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "rlmbutil.h" /* Some standard library routines. */ #include "readline.h" #include "rlprivate.h" #include "rlshell.h" #include "xmalloc.h" /* What kind of non-blocking I/O do we have? */ #if !defined (O_NDELAY) && defined (O_NONBLOCK) # define O_NDELAY O_NONBLOCK /* Posix style */ #endif #if defined (HAVE_PSELECT) extern sigset_t _rl_orig_sigset; #endif /* Non-null means it is a pointer to a function to run while waiting for character input. */ rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL; /* A function to call if a read(2) is interrupted by a signal. */ rl_hook_func_t *rl_signal_event_hook = (rl_hook_func_t *)NULL; /* A function to replace _rl_input_available for applications using the callback interface. */ rl_hook_func_t *rl_input_available_hook = (rl_hook_func_t *)NULL; rl_getc_func_t *rl_getc_function = rl_getc; static int _keyboard_input_timeout = 100000; /* 0.1 seconds; it's in usec */ static int ibuffer_space PARAMS((void)); static int rl_get_char PARAMS((int *)); static int rl_gather_tyi PARAMS((void)); /* Windows isatty returns true for every character device, including the null device, so we need to perform additional checks. */ #if defined (_WIN32) && !defined (__CYGWIN__) #include #include #define WIN32_LEAN_AND_MEAN 1 #include int win32_isatty (int fd) { if (_isatty(fd)) { HANDLE h; DWORD ignored; if ((h = (HANDLE) _get_osfhandle (fd)) == INVALID_HANDLE_VALUE) { errno = EBADF; return 0; } if (GetConsoleMode (h, &ignored) != 0) return 1; } errno = ENOTTY; return 0; } #define isatty(x) win32_isatty(x) #endif /* **************************************************************** */ /* */ /* Character Input Buffering */ /* */ /* **************************************************************** */ static int pop_index, push_index; static unsigned char ibuffer[512]; static int ibuffer_len = sizeof (ibuffer) - 1; #define any_typein (push_index != pop_index) int _rl_any_typein (void) { return any_typein; } int _rl_pushed_input_available (void) { return (push_index != pop_index); } /* Return the amount of space available in the buffer for stuffing characters. */ static int ibuffer_space (void) { if (pop_index > push_index) return (pop_index - push_index - 1); else return (ibuffer_len - (push_index - pop_index)); } /* Get a key from the buffer of characters to be read. Return the key in KEY. Result is non-zero if there was a key, or 0 if there wasn't. */ static int rl_get_char (int *key) { if (push_index == pop_index) return (0); *key = ibuffer[pop_index++]; #if 0 if (pop_index >= ibuffer_len) #else if (pop_index > ibuffer_len) #endif pop_index = 0; return (1); } /* Stuff KEY into the *front* of the input buffer. Returns non-zero if successful, zero if there is no space left in the buffer. */ int _rl_unget_char (int key) { if (ibuffer_space ()) { pop_index--; if (pop_index < 0) pop_index = ibuffer_len; ibuffer[pop_index] = key; return (1); } return (0); } /* If a character is available to be read, then read it and stuff it into IBUFFER. Otherwise, just return. Returns number of characters read (0 if none available) and -1 on error (EIO). */ static int rl_gather_tyi (void) { int tty; register int tem, result; int chars_avail, k; char input; #if defined(HAVE_SELECT) fd_set readfds, exceptfds; struct timeval timeout; #endif chars_avail = 0; input = 0; tty = fileno (rl_instream); #if defined (HAVE_SELECT) FD_ZERO (&readfds); FD_ZERO (&exceptfds); FD_SET (tty, &readfds); FD_SET (tty, &exceptfds); USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout); result = select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout); if (result <= 0) return 0; /* Nothing to read. */ #endif result = -1; errno = 0; #if defined (FIONREAD) result = ioctl (tty, FIONREAD, &chars_avail); if (result == -1 && errno == EIO) return -1; if (result == -1) chars_avail = 0; #endif #if defined (O_NDELAY) if (result == -1) { tem = fcntl (tty, F_GETFL, 0); fcntl (tty, F_SETFL, (tem | O_NDELAY)); chars_avail = read (tty, &input, 1); fcntl (tty, F_SETFL, tem); if (chars_avail == -1 && errno == EAGAIN) return 0; if (chars_avail == -1 && errno == EIO) return -1; if (chars_avail == 0) /* EOF */ { rl_stuff_char (EOF); return (0); } } #endif /* O_NDELAY */ #if defined (__MINGW32__) /* Use getch/_kbhit to check for available console input, in the same way that we read it normally. */ chars_avail = isatty (tty) ? _kbhit () : 0; result = 0; #endif /* If there's nothing available, don't waste time trying to read something. */ if (chars_avail <= 0) return 0; tem = ibuffer_space (); if (chars_avail > tem) chars_avail = tem; /* One cannot read all of the available input. I can only read a single character at a time, or else programs which require input can be thwarted. If the buffer is larger than one character, I lose. Damn! */ if (tem < ibuffer_len) chars_avail = 0; if (result != -1) { while (chars_avail--) { RL_CHECK_SIGNALS (); k = (*rl_getc_function) (rl_instream); if (rl_stuff_char (k) == 0) break; /* some problem; no more room */ if (k == NEWLINE || k == RETURN) break; } } else { if (chars_avail) rl_stuff_char (input); } return 1; } int rl_set_keyboard_input_timeout (int u) { int o; o = _keyboard_input_timeout; if (u >= 0) _keyboard_input_timeout = u; return (o); } /* Is there input available to be read on the readline input file descriptor? Only works if the system has select(2) or FIONREAD. Uses the value of _keyboard_input_timeout as the timeout; if another readline function wants to specify a timeout and not leave it up to the user, it should use _rl_input_queued(timeout_value_in_microseconds) instead. */ int _rl_input_available (void) { #if defined(HAVE_SELECT) fd_set readfds, exceptfds; struct timeval timeout; #endif #if !defined (HAVE_SELECT) && defined(FIONREAD) int chars_avail; #endif int tty; if (rl_input_available_hook) return (*rl_input_available_hook) (); tty = fileno (rl_instream); #if defined (HAVE_SELECT) FD_ZERO (&readfds); FD_ZERO (&exceptfds); FD_SET (tty, &readfds); FD_SET (tty, &exceptfds); timeout.tv_sec = 0; timeout.tv_usec = _keyboard_input_timeout; return (select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout) > 0); #else #if defined (FIONREAD) if (ioctl (tty, FIONREAD, &chars_avail) == 0) return (chars_avail); #endif #endif #if defined (__MINGW32__) if (isatty (tty)) return (_kbhit ()); #endif return 0; } int _rl_input_queued (int t) { int old_timeout, r; old_timeout = rl_set_keyboard_input_timeout (t); r = _rl_input_available (); rl_set_keyboard_input_timeout (old_timeout); return r; } void _rl_insert_typein (int c) { int key, t, i; char *string; i = key = 0; string = (char *)xmalloc (ibuffer_len + 1); string[i++] = (char) c; while ((t = rl_get_char (&key)) && _rl_keymap[key].type == ISFUNC && _rl_keymap[key].function == rl_insert) string[i++] = key; if (t) _rl_unget_char (key); string[i] = '\0'; rl_insert_text (string); xfree (string); } /* Add KEY to the buffer of characters to be read. Returns 1 if the character was stuffed correctly; 0 otherwise. */ int rl_stuff_char (int key) { if (ibuffer_space () == 0) return 0; if (key == EOF) { key = NEWLINE; rl_pending_input = EOF; RL_SETSTATE (RL_STATE_INPUTPENDING); } ibuffer[push_index++] = key; #if 0 if (push_index >= ibuffer_len) #else if (push_index > ibuffer_len) #endif push_index = 0; return 1; } /* Make C be the next command to be executed. */ int rl_execute_next (int c) { rl_pending_input = c; RL_SETSTATE (RL_STATE_INPUTPENDING); return 0; } /* Clear any pending input pushed with rl_execute_next() */ int rl_clear_pending_input (void) { rl_pending_input = 0; RL_UNSETSTATE (RL_STATE_INPUTPENDING); return 0; } /* **************************************************************** */ /* */ /* Character Input */ /* */ /* **************************************************************** */ /* Read a key, including pending input. */ int rl_read_key (void) { int c, r; if (rl_pending_input) { c = rl_pending_input; /* XXX - cast to unsigned char if > 0? */ rl_clear_pending_input (); } else { /* If input is coming from a macro, then use that. */ if (c = _rl_next_macro_key ()) return ((unsigned char)c); /* If the user has an event function, then call it periodically. */ if (rl_event_hook) { while (rl_event_hook) { if (rl_get_char (&c) != 0) break; if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */ { rl_done = 1; return (errno == EIO ? (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF) : '\n'); } else if (r > 0) /* read something */ continue; RL_CHECK_SIGNALS (); if (rl_done) /* XXX - experimental */ return ('\n'); (*rl_event_hook) (); } } else { if (rl_get_char (&c) == 0) c = (*rl_getc_function) (rl_instream); /* fprintf(stderr, "rl_read_key: calling RL_CHECK_SIGNALS: _rl_caught_signal = %d", _rl_caught_signal); */ RL_CHECK_SIGNALS (); } } return (c); } int rl_getc (FILE *stream) { int result; unsigned char c; #if defined (HAVE_PSELECT) sigset_t empty_set; fd_set readfds; #endif while (1) { RL_CHECK_SIGNALS (); /* We know at this point that _rl_caught_signal == 0 */ #if defined (__MINGW32__) if (isatty (fileno (stream))) return (_getch ()); /* "There is no error return." */ #endif result = 0; #if defined (HAVE_PSELECT) FD_ZERO (&readfds); FD_SET (fileno (stream), &readfds); # if defined (HANDLE_SIGNALS) result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset); # else sigemptyset (&empty_set); sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set); result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &empty_set); # endif /* HANDLE_SIGNALS */ #endif if (result >= 0) result = read (fileno (stream), &c, sizeof (unsigned char)); if (result == sizeof (unsigned char)) return (c); /* If zero characters are returned, then the file that we are reading from is empty! Return EOF in that case. */ if (result == 0) return (EOF); #if defined (__BEOS__) if (errno == EINTR) continue; #endif #if defined (EWOULDBLOCK) # define X_EWOULDBLOCK EWOULDBLOCK #else # define X_EWOULDBLOCK -99 #endif #if defined (EAGAIN) # define X_EAGAIN EAGAIN #else # define X_EAGAIN -99 #endif if (errno == X_EWOULDBLOCK || errno == X_EAGAIN) { if (sh_unset_nodelay_mode (fileno (stream)) < 0) return (EOF); continue; } #undef X_EWOULDBLOCK #undef X_EAGAIN /* fprintf(stderr, "rl_getc: result = %d errno = %d\n", result, errno); */ handle_error: /* If the error that we received was EINTR, then try again, this is simply an interrupted system call to read (). We allow the read to be interrupted if we caught SIGHUP, SIGTERM, or any of the other signals readline treats specially. If the application sets an event hook, call it for other signals. Otherwise (not EINTR), some error occurred, also signifying EOF. */ if (errno != EINTR) return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); /* fatal signals of interest */ #if defined (SIGHUP) else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM) #else else if (_rl_caught_signal == SIGTERM) #endif return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); /* keyboard-generated signals of interest */ #if defined (SIGQUIT) else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT) #else else if (_rl_caught_signal == SIGINT) #endif RL_CHECK_SIGNALS (); /* non-keyboard-generated signals of interest */ #if defined (SIGWINCH) else if (_rl_caught_signal == SIGWINCH) RL_CHECK_SIGNALS (); #endif /* SIGWINCH */ #if defined (SIGALRM) else if (_rl_caught_signal == SIGALRM # if defined (SIGVTALRM) || _rl_caught_signal == SIGVTALRM # endif ) RL_CHECK_SIGNALS (); #endif /* SIGALRM */ if (rl_signal_event_hook) (*rl_signal_event_hook) (); } } #if defined (HANDLE_MULTIBYTE) /* read multibyte char */ int _rl_read_mbchar (char *mbchar, int size) { int mb_len, c; size_t mbchar_bytes_length; wchar_t wc; mbstate_t ps, ps_back; memset(&ps, 0, sizeof (mbstate_t)); memset(&ps_back, 0, sizeof (mbstate_t)); mb_len = 0; while (mb_len < size) { RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); if (c < 0) break; mbchar[mb_len++] = c; mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); if (mbchar_bytes_length == (size_t)(-1)) break; /* invalid byte sequence for the current locale */ else if (mbchar_bytes_length == (size_t)(-2)) { /* shorted bytes */ ps = ps_back; continue; } else if (mbchar_bytes_length == 0) { mbchar[0] = '\0'; /* null wide character */ mb_len = 1; break; } else if (mbchar_bytes_length > (size_t)(0)) break; } return mb_len; } /* Read a multibyte-character string whose first character is FIRST into the buffer MB of length MLEN. Returns the last character read, which may be FIRST. Used by the search functions, among others. Very similar to _rl_read_mbchar. */ int _rl_read_mbstring (int first, char *mb, int mlen) { int i, c, n; mbstate_t ps; c = first; memset (mb, 0, mlen); for (i = 0; c >= 0 && i < mlen; i++) { mb[i] = (char)c; memset (&ps, 0, sizeof (mbstate_t)); n = _rl_get_char_len (mb, &ps); if (n == -2) { /* Read more for multibyte character */ RL_SETSTATE (RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE (RL_STATE_MOREINPUT); } else break; } return c; } #endif /* HANDLE_MULTIBYTE */ readline-8.0/NEWS000664 000436 000000 00000037045 13373101722 013731 0ustar00chetwheel000000 000000 This is a terse description of the new features added to readline-8.0 since the release of readline-7.0. New Features in Readline a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as Posix specifies (uses fnmatch(3) if available). b. There are new `next-screen-line' and `previous-screen-line' bindable commands, which move the cursor to the same column in the next, or previous, physical line, respectively. c. There are default key bindings for control-arrow-key key combinations. d. A negative argument (-N) to `quoted-insert' means to insert the next N characters using quoted-insert. e. New public function: rl_check_signals(), which allows applications to respond to signals that readline catches while waiting for input using a custom read function. f. There is new support for conditionally testing the readline version in an inputrc file, with a full set of arithmetic comparison operators available. g. There is a simple variable comparison facility available for use within an inputrc file. Allowable operators are equality and inequality; string variables may be compared to a value; boolean variables must be compared to either `on' or `off'; variable names are separated from the operator by whitespace. h. The history expansion library now understands command and process substitution and extended globbing and allows them to appear anywhere in a word. i. The history library has a new variable that allows applications to set the initial quoting state, so quoting state can be inherited from a previous line. j. Readline now allows application-defined keymap names; there is a new public function, rl_set_keymap_name(), to do that. k. The "Insert" keypad key, if available, now puts readline into overwrite mode. ------------------------------------------------------------------------------- This is a terse description of the new features added to readline-7.0 since the release of readline-6.3. New Features in Readline a. The history truncation code now uses the same error recovery mechansim as the history writing code, and restores the old version of the history file on error. The error recovery mechanism handles symlinked history files. b. There is a new bindable variable, `enable-bracketed-paste', which enables support for a terminal's bracketed paste mode. c. The editing mode indicators can now be strings and are user-settable (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string' variables). Mode strings can contain invisible character sequences. Setting mode strings to null strings restores the defaults. d. Prompt expansion adds the mode string to the last line of a multi-line prompt (one with embedded newlines). e. There is a new bindable variable, `colored-completion-prefix', which, if set, causes the common prefix of a set of possible completions to be displayed in color. f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs- mode yank-pop. g. The redisplay code underwent several efficiency improvements for multibyte locales. h. The insert-char function attempts to batch-insert all pending typeahead that maps to self-insert, as long as it is coming from the terminal. i. rl_callback_sigcleanup: a new application function that can clean up and unset any state set by readline's callback mode. Intended to be used after a signal. j. If an incremental search string has its last character removed with DEL, the resulting empty search string no longer matches the previous line. k. If readline reads a history file that begins with `#' (or the value of the history comment character) and has enabled history timestamps, the history entries are assumed to be delimited by timestamps. This allows multi-line history entries. l. Readline now throws an error if it parses a key binding without a terminating `:' or whitespace. m. The default binding for ^W in vi mode now uses word boundaries specified by Posix (vi-unix-word-rubout is bindable command name). n. rl_clear_visible_line: new application-callable function; clears all screen lines occupied by the current visible readline line. o. rl_tty_set_echoing: application-callable function that controls whether or not readline thinks it is echoing terminal output. p. Handle >| and strings of digits preceding and following redirection specifications as single tokens when tokenizing the line for history expansion. q. Fixed a bug with displaying completions when the prefix display length is greater than the length of the completions to be displayed. r. The :p history modifier now applies to the entire line, so any expansion specifying :p causes the line to be printed instead of expanded. s. New application-callable function: rl_pending_signal(): returns the signal number of any signal readline has caught but not yet handled. t. New application-settable variable: rl_persistent_signal_handlers: if set to a non-zero value, readline will enable the readline-6.2 signal handler behavior in callback mode: handlers are installed when rl_callback_handler_install is called and removed removed when a complete line has been read. ------------------------------------------------------------------------------- This is a terse description of the new features added to readline-6.3 since the release of readline-6.2. New Features in Readline a. Readline is now more responsive to SIGHUP and other fatal signals when reading input from the terminal or performing word completion but no longer attempts to run any not-allowable functions from a signal handler context. b. There are new bindable commands to search the history for the string of characters between the beginning of the line and the point (history-substring-search-forward, history-substring-search-backward) c. Readline allows quoted strings as the values of variables when setting them with `set'. As a side effect, trailing spaces and tabs are ignored when setting a string variable's value. d. The history library creates a backup of the history file when writing it and restores the backup on a write error. e. New application-settable variable: rl_filename_stat_hook: a function called with a filename before using it in a call to stat(2). Bash uses it to expand shell variables so things like $HOME/Downloads have a slash appended. f. New bindable function `print-last-kbd-macro', prints the most-recently- defined keyboard macro in a reusable format. g. New user-settable variable `colored-stats', enables use of colored text to denote file types when displaying possible completions (colored analog of visible-stats). h. New user-settable variable `keyseq-timout', acts as an inter-character timeout when reading input or incremental search strings. i. New application-callable function: rl_clear_history. Clears the history list and frees all readline-associated private data. j. New user-settable variable, show-mode-in-prompt, adds a characters to the beginning of the prompt indicating the current editing mode. k. New application-settable variable: rl_input_available_hook; function to be called when readline detects there is data available on its input file descriptor. l. Readline calls an application-set event hook (rl_event_hook) after it gets a signal while reading input (read returns -1/EINTR but readline does not handle the signal immediately) to allow the application to handle or otherwise note it. m. If the user-settable variable `history-size' is set to a value less than 0, the history list size is unlimited. n. New application-settable variable: rl_signal_event_hook; function that is called when readline is reading terminal input and read(2) is interrupted by a signal. Currently not called for SIGHUP or SIGTERM. ------------------------------------------------------------------------------- This is a terse description of the new features added to readline-6.1 since the release of readline-6.0. New Features in Readline a. New bindable function: menu-complete-backward. b. In the vi insertion keymap, C-n is now bound to menu-complete by default, and C-p to menu-complete-backward. c. When in vi command mode, repeatedly hitting ESC now does nothing, even when ESC introduces a bound key sequence. This is closer to how historical vi behaves. d. New bindable function: skip-csi-sequence. Can be used as a default to consume key sequences generated by keys like Home and End without having to bind all keys. e. New application-settable function: rl_filename_rewrite_hook. Can be used to rewite or modify filenames read from the file system before they are compared to the word to be completed. f. New bindable variable: skip-completed-text, active when completing in the middle of a word. If enabled, it means that characters in the completion that match characters in the remainder of the word are "skipped" rather than inserted into the line. g. The pre-readline-6.0 version of menu completion is available as "old-menu-complete" for users who do not like the readline-6.0 version. h. New bindable variable: echo-control-characters. If enabled, and the tty ECHOCTL bit is set, controls the echoing of characters corresponding to keyboard-generated signals. i. New bindable variable: enable-meta-key. Controls whether or not readline sends the smm/rmm sequences if the terminal indicates it has a meta key that enables eight-bit characters. ------------------------------------------------------------------------------- This is a terse description of the new features added to readline-6.0 since the release of readline-5.2. New Features in Readline a. A new variable, rl_sort_completion_matches; allows applications to inhibit match list sorting (but beware: some things don't work right if applications do this). b. A new variable, rl_completion_invoking_key; allows applications to discover the key that invoked rl_complete or rl_menu_complete. c. The functions rl_block_sigint and rl_release_sigint are now public and available to calling applications who want to protect critical sections (like redisplay). d. The functions rl_save_state and rl_restore_state are now public and available to calling applications; documented rest of readline's state flag values. e. A new user-settable variable, `history-size', allows setting the maximum number of entries in the history list. f. There is a new implementation of menu completion, with several improvements over the old; the most notable improvement is a better `completions browsing' mode. g. The menu completion code now uses the rl_menu_completion_entry_function variable, allowing applications to provide their own menu completion generators. h. There is support for replacing a prefix of a pathname with a `...' when displaying possible completions. This is controllable by setting the `completion-prefix-display-length' variable. Matches with a common prefix longer than this value have the common prefix replaced with `...'. i. There is a new `revert-all-at-newline' variable. If enabled, readline will undo all outstanding changes to all history lines when `accept-line' is executed. ------------------------------------------------------------------------------- This is a terse description of the new features added to readline-5.2 since the release of readline-5.1. New Features in Readline a. Calling applications can now set the keyboard timeout to 0, allowing poll-like behavior. b. The value of SYS_INPUTRC (configurable at compilation time) is now used as the default last-ditch startup file. c. The history file reading functions now allow windows-like \r\n line terminators. ------------------------------------------------------------------------------- This is a terse description of the new features added to readline-5.1 since the release of readline-5.0. New Features in Readline a. The key sequence sent by the keypad `delete' key is now automatically bound to delete-char. b. A negative argument to menu-complete now cycles backward through the completion list. c. A new bindable readline variable: bind-tty-special-chars. If non-zero, readline will bind the terminal special characters to their readline equivalents when it's called (on by default). d. New bindable command: vi-rubout. Saves deleted text for possible reinsertion, as with any vi-mode `text modification' command; `X' is bound to this in vi command mode. e. If the rl_completion_query_items is set to a value < 0, readline never asks the user whether or not to view the possible completions. f. New application-callable auxiliary function, rl_variable_value, returns a string corresponding to a readline variable's value. g. When parsing inputrc files and variable binding commands, the parser strips trailing whitespace from values assigned to boolean variables before checking them. h. A new external application-controllable variable that allows the LINES and COLUMNS environment variables to set the window size regardless of what the kernel returns. ------------------------------------------------------------------------------- This is a terse description of the new features added to readline-5.0 since the release of readline-4.3. New Features in Readline a. History expansion has a new `a' modifier equivalent to the `g' modifier for compatibility with the BSD csh. b. History expansion has a new `G' modifier equivalent to the BSD csh `g' modifier, which performs a substitution once per word. c. All non-incremental search operations may now undo the operation of replacing the current line with the history line. d. The text inserted by an `a' command in vi mode can be reinserted with `.'. e. New bindable variable, `show-all-if-unmodified'. If set, the readline completer will list possible completions immediately if there is more than one completion and partial completion cannot be performed. f. There is a new application-callable `free_history_entry()' function. g. History list entries now contain timestamp information; the history file functions know how to read and write timestamp information associated with each entry. h. Four new key binding functions have been added: rl_bind_key_if_unbound() rl_bind_key_if_unbound_in_map() rl_bind_keyseq_if_unbound() rl_bind_keyseq_if_unbound_in_map() i. New application variable, rl_completion_quote_character, set to any quote character readline finds before it calls the application completion function. j. New application variable, rl_completion_suppress_quote, settable by an application completion function. If set to non-zero, readline does not attempt to append a closing quote to a completed word. k. New application variable, rl_completion_found_quote, set to a non-zero value if readline determines that the word to be completed is quoted. Set before readline calls any application completion function. l. New function hook, rl_completion_word_break_hook, called when readline needs to break a line into words when completion is attempted. Allows the word break characters to vary based on position in the line. m. New bindable command: unix-filename-rubout. Does the same thing as unix-word-rubout, but adds `/' to the set of word delimiters. n. When listing completions, directories have a `/' appended if the `mark-directories' option has been enabled. readline-8.0/rltty.h000664 000436 000000 00000004743 11130207321 014547 0ustar00chetwheel000000 000000 /* rltty.h - tty driver-related definitions used by some library files. */ /* Copyright (C) 1995-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_RLTTY_H_) #define _RLTTY_H_ /* Posix systems use termios and the Posix signal functions. */ #if defined (TERMIOS_TTY_DRIVER) # include #endif /* TERMIOS_TTY_DRIVER */ /* System V machines use termio. */ #if defined (TERMIO_TTY_DRIVER) # include # if !defined (TCOON) # define TCOON 1 # endif #endif /* TERMIO_TTY_DRIVER */ /* Other (BSD) machines use sgtty. */ #if defined (NEW_TTY_DRIVER) # include #endif #include "rlwinsize.h" /* Define _POSIX_VDISABLE if we are not using the `new' tty driver and it is not already defined. It is used both to determine if a special character is disabled and to disable certain special characters. Posix systems should set to 0, USG systems to -1. */ #if !defined (NEW_TTY_DRIVER) && !defined (_POSIX_VDISABLE) # if defined (_SVR4_VDISABLE) # define _POSIX_VDISABLE _SVR4_VDISABLE # else # if defined (_POSIX_VERSION) # define _POSIX_VDISABLE 0 # else /* !_POSIX_VERSION */ # define _POSIX_VDISABLE -1 # endif /* !_POSIX_VERSION */ # endif /* !_SVR4_DISABLE */ #endif /* !NEW_TTY_DRIVER && !_POSIX_VDISABLE */ typedef struct _rl_tty_chars { unsigned char t_eof; unsigned char t_eol; unsigned char t_eol2; unsigned char t_erase; unsigned char t_werase; unsigned char t_kill; unsigned char t_reprint; unsigned char t_intr; unsigned char t_quit; unsigned char t_susp; unsigned char t_dsusp; unsigned char t_start; unsigned char t_stop; unsigned char t_lnext; unsigned char t_flush; unsigned char t_status; } _RL_TTY_CHARS; #endif /* _RLTTY_H_ */ readline-8.0/bind.c000644 000436 000000 00000220620 13350463063 014305 0ustar00chetwheel000000 000000 /* bind.c -- key binding and startup file support for the readline library. */ /* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #if defined (__TANDEM) # include #endif #if defined (HAVE_CONFIG_H) # include #endif #include #include #include #if defined (HAVE_SYS_FILE_H) # include #endif /* HAVE_SYS_FILE_H */ #if defined (HAVE_UNISTD_H) # include #endif /* HAVE_UNISTD_H */ #if defined (HAVE_STDLIB_H) # include #else # include "ansi_stdlib.h" #endif /* HAVE_STDLIB_H */ #include #if !defined (errno) extern int errno; #endif /* !errno */ #include "posixstat.h" /* System-specific feature definitions and include files. */ #include "rldefs.h" /* Some standard library routines. */ #include "readline.h" #include "history.h" #include "rlprivate.h" #include "rlshell.h" #include "xmalloc.h" #if !defined (strchr) && !defined (__STDC__) extern char *strchr (), *strrchr (); #endif /* !strchr && !__STDC__ */ /* Variables exported by this file. */ Keymap rl_binding_keymap; static int _rl_skip_to_delim PARAMS((char *, int, int)); #if defined (USE_VARARGS) && defined (PREFER_STDARG) static void _rl_init_file_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); #else static void _rl_init_file_error (); #endif static rl_command_func_t *_rl_function_of_keyseq_internal PARAMS((const char *, size_t, Keymap, int *)); static char *_rl_read_file PARAMS((char *, size_t *)); static int _rl_read_init_file PARAMS((const char *, int)); static int glean_key_from_name PARAMS((char *)); static int find_boolean_var PARAMS((const char *)); static int find_string_var PARAMS((const char *)); static const char *boolean_varname PARAMS((int)); static const char *string_varname PARAMS((int)); static char *_rl_get_string_variable_value PARAMS((const char *)); static int substring_member_of_array PARAMS((const char *, const char * const *)); static int _rl_get_keymap_by_name PARAMS((const char *)); static int _rl_get_keymap_by_map PARAMS((Keymap)); static int currently_reading_init_file; /* used only in this file */ static int _rl_prefer_visible_bell = 1; #define OP_EQ 1 #define OP_NE 2 #define OP_GT 3 #define OP_GE 4 #define OP_LT 5 #define OP_LE 6 #define OPSTART(c) ((c) == '=' || (c) == '!' || (c) == '<' || (c) == '>') #define CMPSTART(c) ((c) == '=' || (c) == '!') /* **************************************************************** */ /* */ /* Binding keys */ /* */ /* **************************************************************** */ /* rl_add_defun (char *name, rl_command_func_t *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. */ int rl_add_defun (const char *name, rl_command_func_t *function, int key) { if (key != -1) rl_bind_key (key, function); rl_add_funmap_entry (name, function); return 0; } /* Bind KEY to FUNCTION. Returns non-zero if KEY is out of range. */ int rl_bind_key (int key, rl_command_func_t *function) { char keyseq[3]; int l; if (key < 0) return (key); if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii) { if (_rl_keymap[ESC].type == ISKMAP) { Keymap escmap; escmap = FUNCTION_TO_KEYMAP (_rl_keymap, ESC); key = UNMETA (key); escmap[key].type = ISFUNC; escmap[key].function = function; return (0); } return (key); } /* If it's bound to a function or macro, just overwrite. Otherwise we have to treat it as a key sequence so rl_generic_bind handles shadow keymaps for us. If we are binding '\' make sure to escape it so it makes it through the call to rl_translate_keyseq. */ if (_rl_keymap[key].type != ISKMAP) { _rl_keymap[key].type = ISFUNC; _rl_keymap[key].function = function; } else { l = 0; if (key == '\\') keyseq[l++] = '\\'; keyseq[l++] = key; keyseq[l] = '\0'; rl_bind_keyseq (keyseq, function); } rl_binding_keymap = _rl_keymap; return (0); } /* Bind KEY to FUNCTION in MAP. Returns non-zero in case of invalid KEY. */ int rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map) { int result; Keymap oldmap; oldmap = _rl_keymap; _rl_keymap = map; result = rl_bind_key (key, function); _rl_keymap = oldmap; return (result); } /* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right now, this is always used to attempt to bind the arrow keys. */ int rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *default_func, Keymap kmap) { char *keyseq; keyseq = rl_untranslate_keyseq ((unsigned char)key); return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap)); } int rl_bind_key_if_unbound (int key, rl_command_func_t *default_func) { char *keyseq; keyseq = rl_untranslate_keyseq ((unsigned char)key); return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap)); } /* Make KEY do nothing in the currently selected keymap. Returns non-zero in case of error. This is not the same as self-insert; this makes it a dead key. */ int rl_unbind_key (int key) { return (rl_bind_key (key, (rl_command_func_t *)NULL)); } /* Make KEY do nothing in MAP. Returns non-zero in case of error. */ int rl_unbind_key_in_map (int key, Keymap map) { return (rl_bind_key_in_map (key, (rl_command_func_t *)NULL, map)); } /* Unbind all keys bound to FUNCTION in MAP. */ int rl_unbind_function_in_map (rl_command_func_t *func, Keymap map) { register int i, rval; for (i = rval = 0; i < KEYMAP_SIZE; i++) { if (map[i].type == ISFUNC && map[i].function == func) { map[i].function = (rl_command_func_t *)NULL; rval = 1; } } return rval; } /* Unbind all keys bound to COMMAND, which is a bindable command name, in MAP */ int rl_unbind_command_in_map (const char *command, Keymap map) { rl_command_func_t *func; func = rl_named_function (command); if (func == 0) return 0; return (rl_unbind_function_in_map (func, map)); } /* Bind the key sequence represented by the string KEYSEQ to FUNCTION, starting in the current keymap. This makes new keymaps as necessary. */ int rl_bind_keyseq (const char *keyseq, rl_command_func_t *function) { return (rl_generic_bind (ISFUNC, keyseq, (char *)function, _rl_keymap)); } /* Bind the key sequence represented by the string KEYSEQ to FUNCTION. This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ int rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) { return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map)); } /* Backwards compatibility; equivalent to rl_bind_keyseq_in_map() */ int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map) { return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map)); } /* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right now, this is always used to attempt to bind the arrow keys, hence the check for rl_vi_movement_mode. */ int rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *default_func, Keymap kmap) { rl_command_func_t *func; char *keys; int keys_len; if (keyseq) { /* Handle key sequences that require translations and `raw' ones that don't. This might be a problem with backslashes. */ keys = (char *)xmalloc (1 + (2 * strlen (keyseq))); if (rl_translate_keyseq (keyseq, keys, &keys_len)) { xfree (keys); return -1; } func = rl_function_of_keyseq_len (keys, keys_len, kmap, (int *)NULL); xfree (keys); #if defined (VI_MODE) if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode) #else if (!func || func == rl_do_lowercase_version) #endif return (rl_bind_keyseq_in_map (keyseq, default_func, kmap)); else return 1; } return 0; } int rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *default_func) { return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap)); } /* Bind the key sequence represented by the string KEYSEQ to the string of characters MACRO. This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ int rl_macro_bind (const char *keyseq, const char *macro, Keymap map) { char *macro_keys; int macro_keys_len; macro_keys = (char *)xmalloc ((2 * strlen (macro)) + 1); if (rl_translate_keyseq (macro, macro_keys, ¯o_keys_len)) { xfree (macro_keys); return -1; } rl_generic_bind (ISMACR, keyseq, macro_keys, map); return 0; } /* 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, right now this can be a function (ISFUNC), a macro (ISMACR), or a keymap (ISKMAP). This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map) { char *keys; int keys_len, prevkey; register int i; KEYMAP_ENTRY k; Keymap prevmap; k.function = 0; /* If no keys to bind to, exit right away. */ if (keyseq == 0 || *keyseq == 0) { if (type == ISMACR) xfree (data); return -1; } keys = (char *)xmalloc (1 + (2 * strlen (keyseq))); /* Translate the ASCII representation of KEYSEQ into an array of characters. Stuff the characters into KEYS, and the length of KEYS into KEYS_LEN. */ if (rl_translate_keyseq (keyseq, keys, &keys_len)) { xfree (keys); return -1; } prevmap = map; prevkey = keys[0]; /* Bind keys, making new keymaps as necessary. */ for (i = 0; i < keys_len; i++) { unsigned char uc = keys[i]; int ic; if (i > 0) prevkey = ic; ic = uc; if (ic < 0 || ic >= KEYMAP_SIZE) { xfree (keys); return -1; } if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii) { ic = UNMETA (ic); if (map[ESC].type == ISKMAP) { prevmap = map; map = FUNCTION_TO_KEYMAP (map, ESC); } } if ((i + 1) < keys_len) { if (map[ic].type != ISKMAP) { /* We allow subsequences of keys. If a keymap is being created that will `shadow' an existing function or macro key binding, we save that keybinding into the ANYOTHERKEY index in the new map. The dispatch code will look there to find the function to execute if the subsequence is not matched. ANYOTHERKEY was chosen to be greater than UCHAR_MAX. */ k = map[ic]; map[ic].type = ISKMAP; map[ic].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap()); } prevmap = map; map = FUNCTION_TO_KEYMAP (map, ic); /* The dispatch code will return this function if no matching key sequence is found in the keymap. This (with a little help from the dispatch code in readline.c) allows `a' to be mapped to something, `abc' to be mapped to something else, and the function bound to `a' to be executed when the user types `abx', leaving `bx' in the input queue. */ if (k.function && ((k.type == ISFUNC && k.function != rl_do_lowercase_version) || k.type == ISMACR)) { map[ANYOTHERKEY] = k; k.function = 0; } } else { if (map[ic].type == ISMACR) xfree ((char *)map[ic].function); else if (map[ic].type == ISKMAP) { prevmap = map; map = FUNCTION_TO_KEYMAP (map, ic); ic = ANYOTHERKEY; /* If we're trying to override a keymap with a null function (e.g., trying to unbind it), we can't use a null pointer here because that's indistinguishable from having not been overridden. We use a special bindable function that does nothing. */ if (type == ISFUNC && data == 0) data = (char *)_rl_null_function; } map[ic].function = KEYMAP_TO_FUNCTION (data); map[ic].type = type; } rl_binding_keymap = map; } /* If we unbound a key (type == ISFUNC, data == 0), and the prev keymap points to the keymap where we unbound the key (sanity check), and the current binding keymap is empty (rl_empty_keymap() returns non-zero), and the binding keymap has ANYOTHERKEY set with type == ISFUNC (overridden function), delete the now-empty keymap, take the previously- overridden function and remove the override. */ /* Right now, this only works one level back. */ if (type == ISFUNC && data == 0 && prevmap[prevkey].type == ISKMAP && (FUNCTION_TO_KEYMAP(prevmap, prevkey) == rl_binding_keymap) && rl_binding_keymap[ANYOTHERKEY].type == ISFUNC && rl_empty_keymap (rl_binding_keymap)) { prevmap[prevkey].type = rl_binding_keymap[ANYOTHERKEY].type; prevmap[prevkey].function = rl_binding_keymap[ANYOTHERKEY].function; rl_discard_keymap (rl_binding_keymap); rl_binding_keymap = prevmap; } xfree (keys); return 0; } /* Translate the ASCII representation of SEQ, stuffing the values into ARRAY, an array of characters. LEN gets the final length of ARRAY. Return non-zero if there was an error parsing SEQ. */ int rl_translate_keyseq (const char *seq, char *array, int *len) { register int i, c, l, temp; for (i = l = 0; c = seq[i]; i++) { if (c == '\\') { c = seq[++i]; if (c == 0) { array[l++] = '\\'; /* preserve trailing backslash */ break; } /* Handle \C- and \M- prefixes. */ if ((c == 'C' || c == 'M') && seq[i + 1] == '-') { /* Handle special case of backwards define. */ if (strncmp (&seq[i], "C-\\M-", 5) == 0) { array[l++] = ESC; /* ESC is meta-prefix */ i += 5; array[l++] = CTRL (_rl_to_upper (seq[i])); } else if (c == 'M') { i++; /* seq[i] == '-' */ /* XXX - obey convert-meta setting */ if (_rl_convert_meta_chars_to_ascii && _rl_keymap[ESC].type == ISKMAP) array[l++] = ESC; /* ESC is meta-prefix */ else if (seq[i+1] == '\\' && seq[i+2] == 'C' && seq[i+3] == '-') { i += 4; temp = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i])); array[l++] = META (temp); } else { /* This doesn't yet handle things like \M-\a, which may or may not have any reasonable meaning. You're probably better off using straight octal or hex. */ i++; array[l++] = META (seq[i]); } } else if (c == 'C') { i += 2; /* Special hack for C-?... */ array[l++] = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i])); } if (seq[i] == '\0') break; continue; } /* Translate other backslash-escaped characters. These are the same escape sequences that bash's `echo' and `printf' builtins handle, with the addition of \d -> RUBOUT. A backslash preceding a character that is not special is stripped. */ switch (c) { case 'a': array[l++] = '\007'; break; case 'b': array[l++] = '\b'; break; case 'd': array[l++] = RUBOUT; /* readline-specific */ break; case 'e': array[l++] = ESC; break; case 'f': array[l++] = '\f'; break; case 'n': array[l++] = NEWLINE; break; case 'r': array[l++] = RETURN; break; case 't': array[l++] = TAB; break; case 'v': array[l++] = 0x0B; break; case '\\': array[l++] = '\\'; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': i++; for (temp = 2, c -= '0'; ISOCTAL ((unsigned char)seq[i]) && temp--; i++) c = (c * 8) + OCTVALUE (seq[i]); i--; /* auto-increment in for loop */ array[l++] = c & largest_char; break; case 'x': i++; for (temp = 2, c = 0; ISXDIGIT ((unsigned char)seq[i]) && temp--; i++) c = (c * 16) + HEXVALUE (seq[i]); if (temp == 2) c = 'x'; i--; /* auto-increment in for loop */ array[l++] = c & largest_char; break; default: /* backslashes before non-special chars just add the char */ array[l++] = c; break; /* the backslash is stripped */ } continue; } array[l++] = c; } *len = l; array[l] = '\0'; return (0); } static int _rl_isescape (int c) { switch (c) { case '\007': case '\b': case '\f': case '\n': case '\r': case TAB: case 0x0b: return (1); default: return (0); } } static int _rl_escchar (int c) { switch (c) { case '\007': return ('a'); case '\b': return ('b'); case '\f': return ('f'); case '\n': return ('n'); case '\r': return ('r'); case TAB: return ('t'); case 0x0b: return ('v'); default: return (c); } } char * rl_untranslate_keyseq (int seq) { static char kseq[16]; int i, c; i = 0; c = seq; if (META_CHAR (c)) { kseq[i++] = '\\'; kseq[i++] = 'M'; kseq[i++] = '-'; c = UNMETA (c); } else if (c == ESC) { kseq[i++] = '\\'; c = 'e'; } else if (CTRL_CHAR (c)) { kseq[i++] = '\\'; kseq[i++] = 'C'; kseq[i++] = '-'; c = _rl_to_lower (UNCTRL (c)); } else if (c == RUBOUT) { kseq[i++] = '\\'; kseq[i++] = 'C'; kseq[i++] = '-'; c = '?'; } if (c == ESC) { kseq[i++] = '\\'; c = 'e'; } else if (c == '\\' || c == '"') { kseq[i++] = '\\'; } kseq[i++] = (unsigned char) c; kseq[i] = '\0'; return kseq; } char * _rl_untranslate_macro_value (char *seq, int use_escapes) { char *ret, *r, *s; int c; r = ret = (char *)xmalloc (7 * strlen (seq) + 1); for (s = seq; *s; s++) { c = *s; if (META_CHAR (c)) { *r++ = '\\'; *r++ = 'M'; *r++ = '-'; c = UNMETA (c); } else if (c == ESC) { *r++ = '\\'; c = 'e'; } else if (CTRL_CHAR (c)) { *r++ = '\\'; if (use_escapes && _rl_isescape (c)) c = _rl_escchar (c); else { *r++ = 'C'; *r++ = '-'; c = _rl_to_lower (UNCTRL (c)); } } else if (c == RUBOUT) { *r++ = '\\'; *r++ = 'C'; *r++ = '-'; c = '?'; } if (c == ESC) { *r++ = '\\'; c = 'e'; } else if (c == '\\' || c == '"') *r++ = '\\'; *r++ = (unsigned char)c; } *r = '\0'; return ret; } /* Return a pointer to the function that STRING represents. If STRING doesn't have a matching function, then a NULL pointer is returned. */ rl_command_func_t * rl_named_function (const char *string) { register int i; rl_initialize_funmap (); for (i = 0; funmap[i]; i++) if (_rl_stricmp (funmap[i]->name, string) == 0) return (funmap[i]->function); return ((rl_command_func_t *)NULL); } /* Return the function (or macro) definition which would be invoked via KEYSEQ if executed in MAP. If MAP is NULL, then the current keymap is used. TYPE, if non-NULL, is a pointer to an int which will receive the type of the object pointed to. One of ISFUNC (function), ISKMAP (keymap), or ISMACR (macro). */ static rl_command_func_t * _rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int *type) { register int i; if (map == 0) map = _rl_keymap; for (i = 0; keyseq && i < len; i++) { unsigned char ic = keyseq[i]; if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii) { if (map[ESC].type == ISKMAP) { map = FUNCTION_TO_KEYMAP (map, ESC); ic = UNMETA (ic); } /* XXX - should we just return NULL here, since this obviously doesn't match? */ else { if (type) *type = map[ESC].type; return (map[ESC].function); } } if (map[ic].type == ISKMAP) { /* If this is the last key in the key sequence, return the map. */ if (keyseq[i + 1] == '\0') { if (type) *type = ISKMAP; return (map[ic].function); } else map = FUNCTION_TO_KEYMAP (map, ic); } /* If we're not at the end of the key sequence, and the current key is bound to something other than a keymap, then the entire key sequence is not bound. */ else if (map[ic].type != ISKMAP && keyseq[i+1]) return ((rl_command_func_t *)NULL); else /* map[ic].type != ISKMAP && keyseq[i+1] == 0 */ { if (type) *type = map[ic].type; return (map[ic].function); } } return ((rl_command_func_t *) NULL); } rl_command_func_t * rl_function_of_keyseq (const char *keyseq, Keymap map, int *type) { return _rl_function_of_keyseq_internal (keyseq, strlen (keyseq), map, type); } rl_command_func_t * rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type) { return _rl_function_of_keyseq_internal (keyseq, len, map, type); } /* The last key bindings file read. */ static char *last_readline_init_file = (char *)NULL; /* The file we're currently reading key bindings from. */ static const char *current_readline_init_file; static int current_readline_init_include_level; static int current_readline_init_lineno; /* Read FILENAME into a locally-allocated buffer and return the buffer. The size of the buffer is returned in *SIZEP. Returns NULL if any errors were encountered. */ static char * _rl_read_file (char *filename, size_t *sizep) { struct stat finfo; size_t file_size; char *buffer; int i, file; file = -1; if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0)) { if (file >= 0) close (file); return ((char *)NULL); } file_size = (size_t)finfo.st_size; /* check for overflow on very large files */ if (file_size != finfo.st_size || file_size + 1 < file_size) { if (file >= 0) close (file); #if defined (EFBIG) errno = EFBIG; #endif return ((char *)NULL); } /* Read the file into BUFFER. */ buffer = (char *)xmalloc (file_size + 1); i = read (file, buffer, file_size); close (file); if (i < 0) { xfree (buffer); return ((char *)NULL); } RL_CHECK_SIGNALS (); buffer[i] = '\0'; if (sizep) *sizep = i; return (buffer); } /* Re-read the current keybindings file. */ int rl_re_read_init_file (int count, int ignore) { int r; r = rl_read_init_file ((const char *)NULL); rl_set_keymap_from_edit_mode (); return r; } /* Do key bindings from a file. If FILENAME is NULL it defaults to the first non-null filename from this list: 1. the filename used for the previous call 2. the value of the shell variable `INPUTRC' 3. ~/.inputrc 4. /etc/inputrc If the file existed and could be opened and read, 0 is returned, otherwise errno is returned. */ int rl_read_init_file (const char *filename) { /* Default the filename. */ if (filename == 0) filename = last_readline_init_file; if (filename == 0) filename = sh_get_env_value ("INPUTRC"); if (filename == 0 || *filename == 0) { filename = DEFAULT_INPUTRC; /* Try to read DEFAULT_INPUTRC; fall back to SYS_INPUTRC on failure */ if (_rl_read_init_file (filename, 0) == 0) return 0; filename = SYS_INPUTRC; } #if defined (__MSDOS__) if (_rl_read_init_file (filename, 0) == 0) return 0; filename = "~/_inputrc"; #endif return (_rl_read_init_file (filename, 0)); } static int _rl_read_init_file (const char *filename, int include_level) { register int i; char *buffer, *openname, *line, *end; size_t file_size; current_readline_init_file = filename; current_readline_init_include_level = include_level; openname = tilde_expand (filename); buffer = _rl_read_file (openname, &file_size); xfree (openname); RL_CHECK_SIGNALS (); if (buffer == 0) return (errno); if (include_level == 0 && filename != last_readline_init_file) { FREE (last_readline_init_file); last_readline_init_file = savestring (filename); } currently_reading_init_file = 1; /* Loop over the lines in the file. Lines that start with `#' are comments; all other lines are commands for readline initialization. */ current_readline_init_lineno = 1; line = buffer; end = buffer + file_size; while (line < end) { /* Find the end of this line. */ for (i = 0; line + i != end && line[i] != '\n'; i++); #if defined (__CYGWIN__) /* ``Be liberal in what you accept.'' */ if (line[i] == '\n' && line[i-1] == '\r') line[i - 1] = '\0'; #endif /* Mark end of line. */ line[i] = '\0'; /* Skip leading whitespace. */ while (*line && whitespace (*line)) { line++; i--; } /* If the line is not a comment, then parse it. */ if (*line && *line != '#') rl_parse_and_bind (line); /* Move to the next line. */ line += i + 1; current_readline_init_lineno++; } xfree (buffer); currently_reading_init_file = 0; return (0); } static void #if defined (PREFER_STDARG) _rl_init_file_error (const char *format, ...) #else _rl_init_file_error (va_alist) va_dcl #endif { va_list args; #if defined (PREFER_VARARGS) char *format; #endif #if defined (PREFER_STDARG) va_start (args, format); #else va_start (args); format = va_arg (args, char *); #endif fprintf (stderr, "readline: "); if (currently_reading_init_file) fprintf (stderr, "%s: line %d: ", current_readline_init_file, current_readline_init_lineno); vfprintf (stderr, format, args); fprintf (stderr, "\n"); fflush (stderr); va_end (args); } /* **************************************************************** */ /* */ /* Parser Helper Functions */ /* */ /* **************************************************************** */ static int parse_comparison_op (s, indp) const char *s; int *indp; { int i, peekc, op; if (OPSTART (s[*indp]) == 0) return -1; i = *indp; peekc = s[i] ? s[i+1] : 0; op = -1; if (s[i] == '=') { op = OP_EQ; if (peekc == '=') i++; i++; } else if (s[i] == '!' && peekc == '=') { op = OP_NE; i += 2; } else if (s[i] == '<' && peekc == '=') { op = OP_LE; i += 2; } else if (s[i] == '>' && peekc == '=') { op = OP_GE; i += 2; } else if (s[i] == '<') { op = OP_LT; i += 1; } else if (s[i] == '>') { op = OP_GT; i += 1; } *indp = i; return op; } /* **************************************************************** */ /* */ /* Parser Directives */ /* */ /* **************************************************************** */ typedef int _rl_parser_func_t PARAMS((char *)); /* Things that mean `Control'. */ const char * const _rl_possible_control_prefixes[] = { "Control-", "C-", "CTRL-", (const char *)NULL }; const char * const _rl_possible_meta_prefixes[] = { "Meta", "M-", (const char *)NULL }; /* Conditionals. */ /* Calling programs set this to have their argv[0]. */ const char *rl_readline_name = "other"; /* Stack of previous values of parsing_conditionalized_out. */ static unsigned char *if_stack = (unsigned char *)NULL; static int if_stack_depth; static int if_stack_size; /* Push _rl_parsing_conditionalized_out, and set parser state based on ARGS. */ static int parser_if (char *args) { int i, llen, boolvar, strvar; boolvar = strvar = -1; /* Push parser state. */ if (if_stack_depth + 1 >= if_stack_size) { if (!if_stack) if_stack = (unsigned char *)xmalloc (if_stack_size = 20); else if_stack = (unsigned char *)xrealloc (if_stack, if_stack_size += 20); } if_stack[if_stack_depth++] = _rl_parsing_conditionalized_out; /* If parsing is turned off, then nothing can turn it back on except for finding the matching endif. In that case, return right now. */ if (_rl_parsing_conditionalized_out) return 0; llen = strlen (args); /* Isolate first argument. */ for (i = 0; args[i] && !whitespace (args[i]); i++); if (args[i]) args[i++] = '\0'; /* Handle "$if term=foo" and "$if mode=emacs" constructs. If this isn't term=foo, or mode=emacs, then check to see if the first word in ARGS is the same as the value stored in rl_readline_name. */ if (rl_terminal_name && _rl_strnicmp (args, "term=", 5) == 0) { char *tem, *tname; /* Terminals like "aaa-60" are equivalent to "aaa". */ tname = savestring (rl_terminal_name); tem = strchr (tname, '-'); if (tem) *tem = '\0'; /* Test the `long' and `short' forms of the terminal name so that if someone has a `sun-cmd' and does not want to have bindings that will be executed if the terminal is a `sun', they can put `$if term=sun-cmd' into their .inputrc. */ _rl_parsing_conditionalized_out = _rl_stricmp (args + 5, tname) && _rl_stricmp (args + 5, rl_terminal_name); xfree (tname); } #if defined (VI_MODE) else if (_rl_strnicmp (args, "mode=", 5) == 0) { int mode; if (_rl_stricmp (args + 5, "emacs") == 0) mode = emacs_mode; else if (_rl_stricmp (args + 5, "vi") == 0) mode = vi_mode; else mode = no_mode; _rl_parsing_conditionalized_out = mode != rl_editing_mode; } #endif /* VI_MODE */ else if (_rl_strnicmp (args, "version", 7) == 0) { int rlversion, versionarg, op, previ, major, minor; _rl_parsing_conditionalized_out = 1; rlversion = RL_VERSION_MAJOR*10 + RL_VERSION_MINOR; /* if "version" is separated from the operator by whitespace, or the operand is separated from the operator by whitespace, restore it. We're more liberal with allowed whitespace for this variable. */ if (i > 0 && i <= llen && args[i-1] == '\0') args[i-1] = ' '; args[llen] = '\0'; /* just in case */ for (i = 7; whitespace (args[i]); i++) ; if (OPSTART(args[i]) == 0) { _rl_init_file_error ("comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line"); return 0; } previ = i; op = parse_comparison_op (args, &i); if (op <= 0) { _rl_init_file_error ("comparison operator expected, found `%s'", args+previ); return 0; } for ( ; args[i] && whitespace (args[i]); i++) ; if (args[i] == 0 || _rl_digit_p (args[i]) == 0) { _rl_init_file_error ("numeric argument expected, found `%s'", args+i); return 0; } major = minor = 0; previ = i; for ( ; args[i] && _rl_digit_p (args[i]); i++) major = major*10 + _rl_digit_value (args[i]); if (args[i] == '.') { if (args[i + 1] && _rl_digit_p (args [i + 1]) == 0) { _rl_init_file_error ("numeric argument expected, found `%s'", args+previ); return 0; } for (++i; args[i] && _rl_digit_p (args[i]); i++) minor = minor*10 + _rl_digit_value (args[i]); } /* optional - check for trailing garbage on the line, allow whitespace and a trailing comment */ previ = i; for ( ; args[i] && whitespace (args[i]); i++) ; if (args[i] && args[i] != '#') { _rl_init_file_error ("trailing garbage on line: `%s'", args+previ); return 0; } versionarg = major*10 + minor; switch (op) { case OP_EQ: _rl_parsing_conditionalized_out = rlversion == versionarg; break; case OP_NE: _rl_parsing_conditionalized_out = rlversion != versionarg; break; case OP_GT: _rl_parsing_conditionalized_out = rlversion > versionarg; break; case OP_GE: _rl_parsing_conditionalized_out = rlversion >= versionarg; break; case OP_LT: _rl_parsing_conditionalized_out = rlversion < versionarg; break; case OP_LE: _rl_parsing_conditionalized_out = rlversion <= versionarg; break; } } /* Check to see if the first word in ARGS is the same as the value stored in rl_readline_name. */ else if (_rl_stricmp (args, rl_readline_name) == 0) _rl_parsing_conditionalized_out = 0; else if ((boolvar = find_boolean_var (args)) >= 0 || (strvar = find_string_var (args)) >= 0) { int op, previ; size_t vlen; const char *vname; char *valuearg, *vval, prevc; _rl_parsing_conditionalized_out = 1; vname = (boolvar >= 0) ? boolean_varname (boolvar) : string_varname (strvar); vlen = strlen (vname); if (i > 0 && i <= llen && args[i-1] == '\0') args[i-1] = ' '; args[llen] = '\0'; /* just in case */ for (i = vlen; whitespace (args[i]); i++) ; if (CMPSTART(args[i]) == 0) { _rl_init_file_error ("equality comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line"); return 0; } previ = i; op = parse_comparison_op (args, &i); if (op != OP_EQ && op != OP_NE) { _rl_init_file_error ("equality comparison operator expected, found `%s'", args+previ); return 0; } for ( ; args[i] && whitespace (args[i]); i++) ; if (args[i] == 0) { _rl_init_file_error ("argument expected, found `%s'", args+i); return 0; } previ = i; valuearg = args + i; for ( ; args[i] && whitespace (args[i]) == 0; i++) ; prevc = args[i]; args[i] = '\0'; /* null-terminate valuearg */ vval = rl_variable_value (vname); if (op == OP_EQ) _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) != 0; else if (op == OP_NE) _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) == 0; args[i] = prevc; } else _rl_parsing_conditionalized_out = 1; return 0; } /* Invert the current parser state if there is anything on the stack. */ static int parser_else (char *args) { register int i; if (if_stack_depth == 0) { _rl_init_file_error ("$else found without matching $if"); return 0; } #if 0 /* Check the previous (n - 1) levels of the stack to make sure that we haven't previously turned off parsing. */ for (i = 0; i < if_stack_depth - 1; i++) #else /* Check the previous (n) levels of the stack to make sure that we haven't previously turned off parsing. */ for (i = 0; i < if_stack_depth; i++) #endif if (if_stack[i] == 1) return 0; /* Invert the state of parsing if at top level. */ _rl_parsing_conditionalized_out = !_rl_parsing_conditionalized_out; return 0; } /* Terminate a conditional, popping the value of _rl_parsing_conditionalized_out from the stack. */ static int parser_endif (char *args) { if (if_stack_depth) _rl_parsing_conditionalized_out = if_stack[--if_stack_depth]; else _rl_init_file_error ("$endif without matching $if"); return 0; } static int parser_include (char *args) { const char *old_init_file; char *e; int old_line_number, old_include_level, r; if (_rl_parsing_conditionalized_out) return (0); old_init_file = current_readline_init_file; old_line_number = current_readline_init_lineno; old_include_level = current_readline_init_include_level; e = strchr (args, '\n'); if (e) *e = '\0'; r = _rl_read_init_file ((const char *)args, old_include_level + 1); current_readline_init_file = old_init_file; current_readline_init_lineno = old_line_number; current_readline_init_include_level = old_include_level; return r; } /* Associate textual names with actual functions. */ static const struct { const char * const name; _rl_parser_func_t *function; } parser_directives [] = { { "if", parser_if }, { "endif", parser_endif }, { "else", parser_else }, { "include", parser_include }, { (char *)0x0, (_rl_parser_func_t *)0x0 } }; /* Handle a parser directive. STATEMENT is the line of the directive without any leading `$'. */ static int handle_parser_directive (char *statement) { register int i; char *directive, *args; /* Isolate the actual directive. */ /* Skip whitespace. */ for (i = 0; whitespace (statement[i]); i++); directive = &statement[i]; for (; statement[i] && !whitespace (statement[i]); i++); if (statement[i]) statement[i++] = '\0'; for (; statement[i] && whitespace (statement[i]); i++); args = &statement[i]; /* Lookup the command, and act on it. */ for (i = 0; parser_directives[i].name; i++) if (_rl_stricmp (directive, parser_directives[i].name) == 0) { (*parser_directives[i].function) (args); return (0); } /* display an error message about the unknown parser directive */ _rl_init_file_error ("%s: unknown parser directive", directive); return (1); } /* Start at STRING[START] and look for DELIM. Return I where STRING[I] == DELIM or STRING[I] == 0. DELIM is usually a double quote. */ static int _rl_skip_to_delim (char *string, int start, int delim) { int i, c, passc; for (i = start,passc = 0; c = string[i]; i++) { if (passc) { passc = 0; if (c == 0) break; continue; } if (c == '\\') { passc = 1; continue; } if (c == delim) break; } return i; } /* Read the binding command from STRING and perform it. A key binding command looks like: Keyname: function-name\0, a variable binding command looks like: set variable value. A new-style keybinding looks like "\C-x\C-x": exchange-point-and-mark. */ int rl_parse_and_bind (char *string) { char *funname, *kname; register int c, i; int key, equivalency, foundmod, foundsep; while (string && whitespace (*string)) string++; if (string == 0 || *string == 0 || *string == '#') return 0; /* If this is a parser directive, act on it. */ if (*string == '$') { handle_parser_directive (&string[1]); return 0; } /* If we aren't supposed to be parsing right now, then we're done. */ if (_rl_parsing_conditionalized_out) return 0; i = 0; /* If this keyname is a complex key expression surrounded by quotes, advance to after the matching close quote. This code allows the backslash to quote characters in the key expression. */ if (*string == '"') { i = _rl_skip_to_delim (string, 1, '"'); /* If we didn't find a closing quote, abort the line. */ if (string[i] == '\0') { _rl_init_file_error ("%s: no closing `\"' in key binding", string); return 1; } else i++; /* skip past closing double quote */ } /* Advance to the colon (:) or whitespace which separates the two objects. */ for (; (c = string[i]) && c != ':' && c != ' ' && c != '\t'; i++ ); if (i == 0) { _rl_init_file_error ("`%s': invalid key binding: missing key sequence", string); return 1; } equivalency = (c == ':' && string[i + 1] == '='); foundsep = c != 0; /* Mark the end of the command (or keyname). */ if (string[i]) string[i++] = '\0'; /* If doing assignment, skip the '=' sign as well. */ if (equivalency) string[i++] = '\0'; /* If this is a command to set a variable, then do that. */ if (_rl_stricmp (string, "set") == 0) { char *var, *value, *e; int s; var = string + i; /* Make VAR point to start of variable name. */ while (*var && whitespace (*var)) var++; /* Make VALUE point to start of value string. */ value = var; while (*value && whitespace (*value) == 0) value++; if (*value) *value++ = '\0'; while (*value && whitespace (*value)) value++; /* Strip trailing whitespace from values of boolean variables. */ if (find_boolean_var (var) >= 0) { /* remove trailing whitespace */ remove_trailing: e = value + strlen (value) - 1; while (e >= value && whitespace (*e)) e--; e++; /* skip back to whitespace or EOS */ if (*e && e >= value) *e = '\0'; } else if ((i = find_string_var (var)) >= 0) { /* Allow quoted strings in variable values */ if (*value == '"') { i = _rl_skip_to_delim (value, 1, *value); value[i] = '\0'; value++; /* skip past the quote */ } else goto remove_trailing; } rl_variable_bind (var, value); return 0; } /* Skip any whitespace between keyname and funname. */ for (; string[i] && whitespace (string[i]); i++); funname = &string[i]; /* Now isolate funname. For straight function names just look for whitespace, since that will signify the end of the string. But this could be a macro definition. In that case, the string is quoted, so skip to the matching delimiter. We allow the backslash to quote the delimiter characters in the macro body. */ /* This code exists to allow whitespace in macro expansions, which would otherwise be gobbled up by the next `for' loop.*/ /* XXX - it may be desirable to allow backslash quoting only if " is the quoted string delimiter, like the shell. */ if (*funname == '\'' || *funname == '"') { i = _rl_skip_to_delim (string, i+1, *funname); if (string[i]) i++; else { _rl_init_file_error ("`%s': missing closing quote for macro", funname); return 1; } } /* Advance to the end of the string. */ for (; string[i] && whitespace (string[i]) == 0; i++); /* No extra whitespace at the end of the string. */ string[i] = '\0'; /* Handle equivalency bindings here. Make the left-hand side be exactly whatever the right-hand evaluates to, including keymaps. */ if (equivalency) { return 0; } if (foundsep == 0) { _rl_init_file_error ("%s: no key sequence terminator", string); return 1; } /* If this is a new-style key-binding, then do the binding with rl_bind_keyseq (). Otherwise, let the older code deal with it. */ if (*string == '"') { char *seq; register int j, k, passc; seq = (char *)xmalloc (1 + strlen (string)); for (j = 1, k = passc = 0; string[j]; j++) { /* Allow backslash to quote characters, but leave them in place. This allows a string to end with a backslash quoting another backslash, or with a backslash quoting a double quote. The backslashes are left in place for rl_translate_keyseq (). */ if (passc || (string[j] == '\\')) { seq[k++] = string[j]; passc = !passc; continue; } if (string[j] == '"') break; seq[k++] = string[j]; } seq[k] = '\0'; /* Binding macro? */ if (*funname == '\'' || *funname == '"') { j = strlen (funname); /* Remove the delimiting quotes from each end of FUNNAME. */ if (j && funname[j - 1] == *funname) funname[j - 1] = '\0'; rl_macro_bind (seq, &funname[1], _rl_keymap); } else rl_bind_keyseq (seq, rl_named_function (funname)); xfree (seq); return 0; } /* Get the actual character we want to deal with. */ kname = strrchr (string, '-'); if (kname == 0) kname = string; else kname++; key = glean_key_from_name (kname); /* Add in control and meta bits. */ foundmod = 0; if (substring_member_of_array (string, _rl_possible_control_prefixes)) { key = CTRL (_rl_to_upper (key)); foundmod = 1; } if (substring_member_of_array (string, _rl_possible_meta_prefixes)) { key = META (key); foundmod = 1; } if (foundmod == 0 && kname != string) { _rl_init_file_error ("%s: unknown key modifier", string); return 1; } /* Temporary. Handle old-style keyname with macro-binding. */ if (*funname == '\'' || *funname == '"') { char useq[2]; int fl = strlen (funname); useq[0] = key; useq[1] = '\0'; if (fl && funname[fl - 1] == *funname) funname[fl - 1] = '\0'; rl_macro_bind (useq, &funname[1], _rl_keymap); } #if defined (PREFIX_META_HACK) /* Ugly, but working hack to keep prefix-meta around. */ else if (_rl_stricmp (funname, "prefix-meta") == 0) { char seq[2]; seq[0] = key; seq[1] = '\0'; rl_generic_bind (ISKMAP, seq, (char *)emacs_meta_keymap, _rl_keymap); } #endif /* PREFIX_META_HACK */ else rl_bind_key (key, rl_named_function (funname)); return 0; } /* Simple structure for boolean readline variables (i.e., those that can have one of two values; either "On" or 1 for truth, or "Off" or 0 for false. */ #define V_SPECIAL 0x1 static const struct { const char * const name; int *value; int flags; } boolean_varlist [] = { { "bind-tty-special-chars", &_rl_bind_stty_chars, 0 }, { "blink-matching-paren", &rl_blink_matching_paren, V_SPECIAL }, { "byte-oriented", &rl_byte_oriented, 0 }, #if defined (COLOR_SUPPORT) { "colored-completion-prefix",&_rl_colored_completion_prefix, 0 }, { "colored-stats", &_rl_colored_stats, 0 }, #endif { "completion-ignore-case", &_rl_completion_case_fold, 0 }, { "completion-map-case", &_rl_completion_case_map, 0 }, { "convert-meta", &_rl_convert_meta_chars_to_ascii, 0 }, { "disable-completion", &rl_inhibit_completion, 0 }, { "echo-control-characters", &_rl_echo_control_chars, 0 }, { "enable-bracketed-paste", &_rl_enable_bracketed_paste, 0 }, { "enable-keypad", &_rl_enable_keypad, 0 }, { "enable-meta-key", &_rl_enable_meta, 0 }, { "expand-tilde", &rl_complete_with_tilde_expansion, 0 }, { "history-preserve-point", &_rl_history_preserve_point, 0 }, { "horizontal-scroll-mode", &_rl_horizontal_scroll_mode, 0 }, { "input-meta", &_rl_meta_flag, 0 }, { "mark-directories", &_rl_complete_mark_directories, 0 }, { "mark-modified-lines", &_rl_mark_modified_lines, 0 }, { "mark-symlinked-directories", &_rl_complete_mark_symlink_dirs, 0 }, { "match-hidden-files", &_rl_match_hidden_files, 0 }, { "menu-complete-display-prefix", &_rl_menu_complete_prefix_first, 0 }, { "meta-flag", &_rl_meta_flag, 0 }, { "output-meta", &_rl_output_meta_chars, 0 }, { "page-completions", &_rl_page_completions, 0 }, { "prefer-visible-bell", &_rl_prefer_visible_bell, V_SPECIAL }, { "print-completions-horizontally", &_rl_print_completions_horizontally, 0 }, { "revert-all-at-newline", &_rl_revert_all_at_newline, 0 }, { "show-all-if-ambiguous", &_rl_complete_show_all, 0 }, { "show-all-if-unmodified", &_rl_complete_show_unmodified, 0 }, { "show-mode-in-prompt", &_rl_show_mode_in_prompt, 0 }, { "skip-completed-text", &_rl_skip_completed_text, 0 }, #if defined (VISIBLE_STATS) { "visible-stats", &rl_visible_stats, 0 }, #endif /* VISIBLE_STATS */ { (char *)NULL, (int *)NULL, 0 } }; static int find_boolean_var (const char *name) { register int i; for (i = 0; boolean_varlist[i].name; i++) if (_rl_stricmp (name, boolean_varlist[i].name) == 0) return i; return -1; } static const char * boolean_varname (int i) { return ((i >= 0) ? boolean_varlist[i].name : (char *)NULL); } /* Hooks for handling special boolean variables, where a function needs to be called or another variable needs to be changed when they're changed. */ static void hack_special_boolean_var (int i) { const char *name; name = boolean_varlist[i].name; if (_rl_stricmp (name, "blink-matching-paren") == 0) _rl_enable_paren_matching (rl_blink_matching_paren); else if (_rl_stricmp (name, "prefer-visible-bell") == 0) { if (_rl_prefer_visible_bell) _rl_bell_preference = VISIBLE_BELL; else _rl_bell_preference = AUDIBLE_BELL; } else if (_rl_stricmp (name, "show-mode-in-prompt") == 0) _rl_reset_prompt (); } typedef int _rl_sv_func_t PARAMS((const char *)); /* These *must* correspond to the array indices for the appropriate string variable. (Though they're not used right now.) */ #define V_BELLSTYLE 0 #define V_COMBEGIN 1 #define V_EDITMODE 2 #define V_ISRCHTERM 3 #define V_KEYMAP 4 #define V_STRING 1 #define V_INT 2 /* Forward declarations */ static int sv_bell_style PARAMS((const char *)); static int sv_combegin PARAMS((const char *)); static int sv_dispprefix PARAMS((const char *)); static int sv_compquery PARAMS((const char *)); static int sv_compwidth PARAMS((const char *)); static int sv_editmode PARAMS((const char *)); static int sv_emacs_modestr PARAMS((const char *)); static int sv_histsize PARAMS((const char *)); static int sv_isrchterm PARAMS((const char *)); static int sv_keymap PARAMS((const char *)); static int sv_seqtimeout PARAMS((const char *)); static int sv_viins_modestr PARAMS((const char *)); static int sv_vicmd_modestr PARAMS((const char *)); static const struct { const char * const name; int flags; _rl_sv_func_t *set_func; } string_varlist[] = { { "bell-style", V_STRING, sv_bell_style }, { "comment-begin", V_STRING, sv_combegin }, { "completion-display-width", V_INT, sv_compwidth }, { "completion-prefix-display-length", V_INT, sv_dispprefix }, { "completion-query-items", V_INT, sv_compquery }, { "editing-mode", V_STRING, sv_editmode }, { "emacs-mode-string", V_STRING, sv_emacs_modestr }, { "history-size", V_INT, sv_histsize }, { "isearch-terminators", V_STRING, sv_isrchterm }, { "keymap", V_STRING, sv_keymap }, { "keyseq-timeout", V_INT, sv_seqtimeout }, { "vi-cmd-mode-string", V_STRING, sv_vicmd_modestr }, { "vi-ins-mode-string", V_STRING, sv_viins_modestr }, { (char *)NULL, 0, (_rl_sv_func_t *)0 } }; static int find_string_var (const char *name) { register int i; for (i = 0; string_varlist[i].name; i++) if (_rl_stricmp (name, string_varlist[i].name) == 0) return i; return -1; } static const char * string_varname (int i) { return ((i >= 0) ? string_varlist[i].name : (char *)NULL); } /* A boolean value that can appear in a `set variable' command is true if the value is null or empty, `on' (case-insensitive), or "1". Any other values result in 0 (false). */ static int bool_to_int (const char *value) { return (value == 0 || *value == '\0' || (_rl_stricmp (value, "on") == 0) || (value[0] == '1' && value[1] == '\0')); } char * rl_variable_value (const char *name) { register int i; /* Check for simple variables first. */ i = find_boolean_var (name); if (i >= 0) return (*boolean_varlist[i].value ? "on" : "off"); i = find_string_var (name); if (i >= 0) return (_rl_get_string_variable_value (string_varlist[i].name)); /* Unknown variable names return NULL. */ return 0; } int rl_variable_bind (const char *name, const char *value) { register int i; int v; /* Check for simple variables first. */ i = find_boolean_var (name); if (i >= 0) { *boolean_varlist[i].value = bool_to_int (value); if (boolean_varlist[i].flags & V_SPECIAL) hack_special_boolean_var (i); return 0; } i = find_string_var (name); /* For the time being, string names without a handler function are simply ignored. */ if (i < 0 || string_varlist[i].set_func == 0) { if (i < 0) _rl_init_file_error ("%s: unknown variable name", name); return 0; } v = (*string_varlist[i].set_func) (value); return v; } static int sv_editmode (const char *value) { if (_rl_strnicmp (value, "vi", 2) == 0) { #if defined (VI_MODE) _rl_keymap = vi_insertion_keymap; rl_editing_mode = vi_mode; #endif /* VI_MODE */ return 0; } else if (_rl_strnicmp (value, "emacs", 5) == 0) { _rl_keymap = emacs_standard_keymap; rl_editing_mode = emacs_mode; return 0; } return 1; } static int sv_combegin (const char *value) { if (value && *value) { FREE (_rl_comment_begin); _rl_comment_begin = savestring (value); return 0; } return 1; } static int sv_dispprefix (const char *value) { int nval = 0; if (value && *value) { nval = atoi (value); if (nval < 0) nval = 0; } _rl_completion_prefix_display_length = nval; return 0; } static int sv_compquery (const char *value) { int nval = 100; if (value && *value) { nval = atoi (value); if (nval < 0) nval = 0; } rl_completion_query_items = nval; return 0; } static int sv_compwidth (const char *value) { int nval = -1; if (value && *value) nval = atoi (value); _rl_completion_columns = nval; return 0; } static int sv_histsize (const char *value) { int nval; nval = 500; if (value && *value) { nval = atoi (value); if (nval < 0) { unstifle_history (); return 0; } } stifle_history (nval); return 0; } static int sv_keymap (const char *value) { Keymap kmap; kmap = rl_get_keymap_by_name (value); if (kmap) { rl_set_keymap (kmap); return 0; } return 1; } static int sv_seqtimeout (const char *value) { int nval; nval = 0; if (value && *value) { nval = atoi (value); if (nval < 0) nval = 0; } _rl_keyseq_timeout = nval; return 0; } static int sv_bell_style (const char *value) { if (value == 0 || *value == '\0') _rl_bell_preference = AUDIBLE_BELL; else if (_rl_stricmp (value, "none") == 0 || _rl_stricmp (value, "off") == 0) _rl_bell_preference = NO_BELL; else if (_rl_stricmp (value, "audible") == 0 || _rl_stricmp (value, "on") == 0) _rl_bell_preference = AUDIBLE_BELL; else if (_rl_stricmp (value, "visible") == 0) _rl_bell_preference = VISIBLE_BELL; else return 1; return 0; } static int sv_isrchterm (const char *value) { int beg, end, delim; char *v; if (value == 0) return 1; /* Isolate the value and translate it into a character string. */ v = savestring (value); FREE (_rl_isearch_terminators); if (v[0] == '"' || v[0] == '\'') { delim = v[0]; for (beg = end = 1; v[end] && v[end] != delim; end++) ; } else { for (beg = end = 0; v[end] && whitespace (v[end]) == 0; end++) ; } v[end] = '\0'; /* The value starts at v + beg. Translate it into a character string. */ _rl_isearch_terminators = (char *)xmalloc (2 * strlen (v) + 1); rl_translate_keyseq (v + beg, _rl_isearch_terminators, &end); _rl_isearch_terminators[end] = '\0'; xfree (v); return 0; } extern char *_rl_emacs_mode_str; static int sv_emacs_modestr (const char *value) { if (value && *value) { FREE (_rl_emacs_mode_str); _rl_emacs_mode_str = (char *)xmalloc (2 * strlen (value) + 1); rl_translate_keyseq (value, _rl_emacs_mode_str, &_rl_emacs_modestr_len); _rl_emacs_mode_str[_rl_emacs_modestr_len] = '\0'; return 0; } else if (value) { FREE (_rl_emacs_mode_str); _rl_emacs_mode_str = (char *)xmalloc (1); _rl_emacs_mode_str[_rl_emacs_modestr_len = 0] = '\0'; return 0; } else if (value == 0) { FREE (_rl_emacs_mode_str); _rl_emacs_mode_str = 0; /* prompt_modestr does the right thing */ _rl_emacs_modestr_len = 0; return 0; } return 1; } static int sv_viins_modestr (const char *value) { if (value && *value) { FREE (_rl_vi_ins_mode_str); _rl_vi_ins_mode_str = (char *)xmalloc (2 * strlen (value) + 1); rl_translate_keyseq (value, _rl_vi_ins_mode_str, &_rl_vi_ins_modestr_len); _rl_vi_ins_mode_str[_rl_vi_ins_modestr_len] = '\0'; return 0; } else if (value) { FREE (_rl_vi_ins_mode_str); _rl_vi_ins_mode_str = (char *)xmalloc (1); _rl_vi_ins_mode_str[_rl_vi_ins_modestr_len = 0] = '\0'; return 0; } else if (value == 0) { FREE (_rl_vi_ins_mode_str); _rl_vi_ins_mode_str = 0; /* prompt_modestr does the right thing */ _rl_vi_ins_modestr_len = 0; return 0; } return 1; } static int sv_vicmd_modestr (const char *value) { if (value && *value) { FREE (_rl_vi_cmd_mode_str); _rl_vi_cmd_mode_str = (char *)xmalloc (2 * strlen (value) + 1); rl_translate_keyseq (value, _rl_vi_cmd_mode_str, &_rl_vi_cmd_modestr_len); _rl_vi_cmd_mode_str[_rl_vi_cmd_modestr_len] = '\0'; return 0; } else if (value) { FREE (_rl_vi_cmd_mode_str); _rl_vi_cmd_mode_str = (char *)xmalloc (1); _rl_vi_cmd_mode_str[_rl_vi_cmd_modestr_len = 0] = '\0'; return 0; } else if (value == 0) { FREE (_rl_vi_cmd_mode_str); _rl_vi_cmd_mode_str = 0; /* prompt_modestr does the right thing */ _rl_vi_cmd_modestr_len = 0; return 0; } return 1; } /* Return the character which matches NAME. For example, `Space' returns ' '. */ typedef struct { const char * const name; int value; } assoc_list; static const assoc_list name_key_alist[] = { { "DEL", 0x7f }, { "ESC", '\033' }, { "Escape", '\033' }, { "LFD", '\n' }, { "Newline", '\n' }, { "RET", '\r' }, { "Return", '\r' }, { "Rubout", 0x7f }, { "SPC", ' ' }, { "Space", ' ' }, { "Tab", 0x09 }, { (char *)0x0, 0 } }; static int glean_key_from_name (char *name) { register int i; for (i = 0; name_key_alist[i].name; i++) if (_rl_stricmp (name, name_key_alist[i].name) == 0) return (name_key_alist[i].value); return (*(unsigned char *)name); /* XXX was return (*name) */ } /* Auxiliary functions to manage keymaps. */ struct name_and_keymap { char *name; Keymap map; }; static struct name_and_keymap builtin_keymap_names[] = { { "emacs", emacs_standard_keymap }, { "emacs-standard", emacs_standard_keymap }, { "emacs-meta", emacs_meta_keymap }, { "emacs-ctlx", emacs_ctlx_keymap }, #if defined (VI_MODE) { "vi", vi_movement_keymap }, { "vi-move", vi_movement_keymap }, { "vi-command", vi_movement_keymap }, { "vi-insert", vi_insertion_keymap }, #endif /* VI_MODE */ { (char *)0x0, (Keymap)0x0 } }; /* -1 for NULL entry */ #define NUM_BUILTIN_KEYMAPS (sizeof (builtin_keymap_names) / sizeof (builtin_keymap_names[0]) - 1) static struct name_and_keymap *keymap_names = builtin_keymap_names; static int _rl_get_keymap_by_name (const char *name) { register int i; for (i = 0; keymap_names[i].name; i++) if (_rl_stricmp (name, keymap_names[i].name) == 0) return (i); return -1; } Keymap rl_get_keymap_by_name (const char *name) { int i; i = _rl_get_keymap_by_name (name); return ((i >= 0) ? keymap_names[i].map : (Keymap) NULL); } static int _rl_get_keymap_by_map (Keymap map) { register int i; for (i = 0; keymap_names[i].name; i++) if (map == keymap_names[i].map) return (i); return -1; } char * rl_get_keymap_name (Keymap map) { int i; i = _rl_get_keymap_by_map (map); return ((i >= 0) ? keymap_names[i].name : (char *)NULL); } int rl_set_keymap_name (const char *name, Keymap map) { int i, ni, mi; /* First check whether or not we're trying to rename a builtin keymap */ mi = _rl_get_keymap_by_map (map); if (mi >= 0 && mi < NUM_BUILTIN_KEYMAPS) return -1; /* Then reject attempts to set one of the builtin names to a new map */ ni = _rl_get_keymap_by_name (name); if (ni >= 0 && ni < NUM_BUILTIN_KEYMAPS) return -1; /* Renaming a keymap we already added */ if (mi >= 0) /* XXX - could be >= NUM_BUILTIN_KEYMAPS */ { xfree (keymap_names[mi].name); keymap_names[mi].name = savestring (name); return mi; } /* Associating new keymap with existing name */ if (ni >= 0) { keymap_names[ni].map = map; return ni; } for (i = 0; keymap_names[i].name; i++) ; if (keymap_names == builtin_keymap_names) { keymap_names = xmalloc ((i + 2) * sizeof (struct name_and_keymap)); memcpy (keymap_names, builtin_keymap_names, i * sizeof (struct name_and_keymap)); } else keymap_names = xrealloc (keymap_names, (i + 2) * sizeof (struct name_and_keymap)); keymap_names[i].name = savestring (name); keymap_names[i].map = map; keymap_names[i+1].name = NULL; keymap_names[i+1].map = NULL; return i; } void rl_set_keymap (Keymap map) { if (map) _rl_keymap = map; } Keymap rl_get_keymap (void) { return (_rl_keymap); } void rl_set_keymap_from_edit_mode (void) { if (rl_editing_mode == emacs_mode) _rl_keymap = emacs_standard_keymap; #if defined (VI_MODE) else if (rl_editing_mode == vi_mode) _rl_keymap = vi_insertion_keymap; #endif /* VI_MODE */ } char * rl_get_keymap_name_from_edit_mode (void) { if (rl_editing_mode == emacs_mode) return "emacs"; #if defined (VI_MODE) else if (rl_editing_mode == vi_mode) return "vi"; #endif /* VI_MODE */ else return "none"; } /* **************************************************************** */ /* */ /* Key Binding and Function Information */ /* */ /* **************************************************************** */ /* Each of the following functions produces information about the state of keybindings and functions known to Readline. The info is always printed to rl_outstream, and in such a way that it can be read back in (i.e., passed to rl_parse_and_bind ()). */ /* Print the names of functions known to Readline. */ void rl_list_funmap_names (void) { register int i; const char **funmap_names; funmap_names = rl_funmap_names (); if (!funmap_names) return; for (i = 0; funmap_names[i]; i++) fprintf (rl_outstream, "%s\n", funmap_names[i]); xfree (funmap_names); } static char * _rl_get_keyname (int key) { char *keyname; int i, c; keyname = (char *)xmalloc (8); c = key; /* Since this is going to be used to write out keysequence-function pairs for possible inclusion in an inputrc file, we don't want to do any special meta processing on KEY. */ #if 1 /* XXX - Experimental */ /* We might want to do this, but the old version of the code did not. */ /* If this is an escape character, we don't want to do any more processing. Just add the special ESC key sequence and return. */ if (c == ESC) { keyname[0] = '\\'; keyname[1] = 'e'; keyname[2] = '\0'; return keyname; } #endif /* RUBOUT is translated directly into \C-? */ if (key == RUBOUT) { keyname[0] = '\\'; keyname[1] = 'C'; keyname[2] = '-'; keyname[3] = '?'; keyname[4] = '\0'; return keyname; } i = 0; /* Now add special prefixes needed for control characters. This can potentially change C. */ if (CTRL_CHAR (c)) { keyname[i++] = '\\'; keyname[i++] = 'C'; keyname[i++] = '-'; c = _rl_to_lower (UNCTRL (c)); } /* XXX experimental code. Turn the characters that are not ASCII or ISO Latin 1 (128 - 159) into octal escape sequences (\200 - \237). This changes C. */ if (c >= 128 && c <= 159) { keyname[i++] = '\\'; keyname[i++] = '2'; c -= 128; keyname[i++] = (c / 8) + '0'; c = (c % 8) + '0'; } /* Now, if the character needs to be quoted with a backslash, do that. */ if (c == '\\' || c == '"') keyname[i++] = '\\'; /* Now add the key, terminate the string, and return it. */ keyname[i++] = (char) c; keyname[i] = '\0'; return keyname; } /* Return a NULL terminated array of strings which represent the key sequences that are used to invoke FUNCTION in MAP. */ char ** rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map) { register int key; char **result; int result_index, result_size; result = (char **)NULL; result_index = result_size = 0; for (key = 0; key < KEYMAP_SIZE; key++) { switch (map[key].type) { case ISMACR: /* Macros match, if, and only if, the pointers are identical. Thus, they are treated exactly like functions in here. */ case ISFUNC: /* If the function in the keymap is the one we are looking for, then add the current KEY to the list of invoking keys. */ if (map[key].function == function) { char *keyname; keyname = _rl_get_keyname (key); if (result_index + 2 > result_size) { result_size += 10; result = (char **)xrealloc (result, result_size * sizeof (char *)); } result[result_index++] = keyname; result[result_index] = (char *)NULL; } break; case ISKMAP: { char **seqs; register int i; /* Find the list of keyseqs in this map which have FUNCTION as their target. Add the key sequences found to RESULT. */ if (map[key].function) seqs = rl_invoking_keyseqs_in_map (function, FUNCTION_TO_KEYMAP (map, key)); else break; if (seqs == 0) break; for (i = 0; seqs[i]; i++) { char *keyname = (char *)xmalloc (6 + strlen (seqs[i])); if (key == ESC) { /* If ESC is the meta prefix and we're converting chars with the eighth bit set to ESC-prefixed sequences, then we can use \M-. Otherwise we need to use the sequence for ESC. */ if (_rl_convert_meta_chars_to_ascii && map[ESC].type == ISKMAP) sprintf (keyname, "\\M-"); else sprintf (keyname, "\\e"); } else if (CTRL_CHAR (key)) sprintf (keyname, "\\C-%c", _rl_to_lower (UNCTRL (key))); else if (key == RUBOUT) sprintf (keyname, "\\C-?"); else if (key == '\\' || key == '"') { keyname[0] = '\\'; keyname[1] = (char) key; keyname[2] = '\0'; } else { keyname[0] = (char) key; keyname[1] = '\0'; } strcat (keyname, seqs[i]); xfree (seqs[i]); if (result_index + 2 > result_size) { result_size += 10; result = (char **)xrealloc (result, result_size * sizeof (char *)); } result[result_index++] = keyname; result[result_index] = (char *)NULL; } xfree (seqs); } break; } } return (result); } /* Return a NULL terminated array of strings which represent the key sequences that can be used to invoke FUNCTION using the current keymap. */ char ** rl_invoking_keyseqs (rl_command_func_t *function) { return (rl_invoking_keyseqs_in_map (function, _rl_keymap)); } /* Print all of the functions and their bindings to rl_outstream. If PRINT_READABLY is non-zero, then print the output in such a way that it can be read back in. */ void rl_function_dumper (int print_readably) { register int i; const char **names; const char *name; names = rl_funmap_names (); fprintf (rl_outstream, "\n"); for (i = 0; name = names[i]; i++) { rl_command_func_t *function; char **invokers; function = rl_named_function (name); invokers = rl_invoking_keyseqs_in_map (function, _rl_keymap); if (print_readably) { if (!invokers) fprintf (rl_outstream, "# %s (not bound)\n", name); else { register int j; for (j = 0; invokers[j]; j++) { fprintf (rl_outstream, "\"%s\": %s\n", invokers[j], name); xfree (invokers[j]); } xfree (invokers); } } else { if (!invokers) fprintf (rl_outstream, "%s is not bound to any keys\n", name); else { register int j; fprintf (rl_outstream, "%s can be found on ", name); for (j = 0; invokers[j] && j < 5; j++) { fprintf (rl_outstream, "\"%s\"%s", invokers[j], invokers[j + 1] ? ", " : ".\n"); } if (j == 5 && invokers[j]) fprintf (rl_outstream, "...\n"); for (j = 0; invokers[j]; j++) xfree (invokers[j]); xfree (invokers); } } } xfree (names); } /* Print all of the current functions and their bindings to rl_outstream. If an explicit argument is given, then print the output in such a way that it can be read back in. */ int rl_dump_functions (int count, int key) { if (rl_dispatching) fprintf (rl_outstream, "\r\n"); rl_function_dumper (rl_explicit_arg); rl_on_new_line (); return (0); } static void _rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix) { register int key; char *keyname, *out; int prefix_len; for (key = 0; key < KEYMAP_SIZE; key++) { switch (map[key].type) { case ISMACR: keyname = _rl_get_keyname (key); out = _rl_untranslate_macro_value ((char *)map[key].function, 0); if (print_readably) fprintf (rl_outstream, "\"%s%s\": \"%s\"\n", prefix ? prefix : "", keyname, out ? out : ""); else fprintf (rl_outstream, "%s%s outputs %s\n", prefix ? prefix : "", keyname, out ? out : ""); xfree (keyname); xfree (out); break; case ISFUNC: break; case ISKMAP: prefix_len = prefix ? strlen (prefix) : 0; if (key == ESC) { keyname = (char *)xmalloc (3 + prefix_len); if (prefix) strcpy (keyname, prefix); keyname[prefix_len] = '\\'; keyname[prefix_len + 1] = 'e'; keyname[prefix_len + 2] = '\0'; } else { keyname = _rl_get_keyname (key); if (prefix) { out = (char *)xmalloc (strlen (keyname) + prefix_len + 1); strcpy (out, prefix); strcpy (out + prefix_len, keyname); xfree (keyname); keyname = out; } } _rl_macro_dumper_internal (print_readably, FUNCTION_TO_KEYMAP (map, key), keyname); xfree (keyname); break; } } } void rl_macro_dumper (int print_readably) { _rl_macro_dumper_internal (print_readably, _rl_keymap, (char *)NULL); } int rl_dump_macros (int count, int key) { if (rl_dispatching) fprintf (rl_outstream, "\r\n"); rl_macro_dumper (rl_explicit_arg); rl_on_new_line (); return (0); } static char * _rl_get_string_variable_value (const char *name) { static char numbuf[32]; char *ret; if (_rl_stricmp (name, "bell-style") == 0) { switch (_rl_bell_preference) { case NO_BELL: return "none"; case VISIBLE_BELL: return "visible"; case AUDIBLE_BELL: default: return "audible"; } } else if (_rl_stricmp (name, "comment-begin") == 0) return (_rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT); else if (_rl_stricmp (name, "completion-display-width") == 0) { sprintf (numbuf, "%d", _rl_completion_columns); return (numbuf); } else if (_rl_stricmp (name, "completion-prefix-display-length") == 0) { sprintf (numbuf, "%d", _rl_completion_prefix_display_length); return (numbuf); } else if (_rl_stricmp (name, "completion-query-items") == 0) { sprintf (numbuf, "%d", rl_completion_query_items); return (numbuf); } else if (_rl_stricmp (name, "editing-mode") == 0) return (rl_get_keymap_name_from_edit_mode ()); else if (_rl_stricmp (name, "history-size") == 0) { sprintf (numbuf, "%d", history_is_stifled() ? history_max_entries : 0); return (numbuf); } else if (_rl_stricmp (name, "isearch-terminators") == 0) { if (_rl_isearch_terminators == 0) return 0; ret = _rl_untranslate_macro_value (_rl_isearch_terminators, 0); if (ret) { strncpy (numbuf, ret, sizeof (numbuf) - 1); xfree (ret); numbuf[sizeof(numbuf) - 1] = '\0'; } else numbuf[0] = '\0'; return numbuf; } else if (_rl_stricmp (name, "keymap") == 0) { ret = rl_get_keymap_name (_rl_keymap); if (ret == 0) ret = rl_get_keymap_name_from_edit_mode (); return (ret ? ret : "none"); } else if (_rl_stricmp (name, "keyseq-timeout") == 0) { sprintf (numbuf, "%d", _rl_keyseq_timeout); return (numbuf); } else if (_rl_stricmp (name, "emacs-mode-string") == 0) return (_rl_emacs_mode_str ? _rl_emacs_mode_str : RL_EMACS_MODESTR_DEFAULT); else if (_rl_stricmp (name, "vi-cmd-mode-string") == 0) return (_rl_vi_cmd_mode_str ? _rl_vi_cmd_mode_str : RL_VI_CMD_MODESTR_DEFAULT); else if (_rl_stricmp (name, "vi-ins-mode-string") == 0) return (_rl_vi_ins_mode_str ? _rl_vi_ins_mode_str : RL_VI_INS_MODESTR_DEFAULT); else return (0); } void rl_variable_dumper (int print_readably) { int i; char *v; for (i = 0; boolean_varlist[i].name; i++) { if (print_readably) fprintf (rl_outstream, "set %s %s\n", boolean_varlist[i].name, *boolean_varlist[i].value ? "on" : "off"); else fprintf (rl_outstream, "%s is set to `%s'\n", boolean_varlist[i].name, *boolean_varlist[i].value ? "on" : "off"); } for (i = 0; string_varlist[i].name; i++) { v = _rl_get_string_variable_value (string_varlist[i].name); if (v == 0) /* _rl_isearch_terminators can be NULL */ continue; if (print_readably) fprintf (rl_outstream, "set %s %s\n", string_varlist[i].name, v); else fprintf (rl_outstream, "%s is set to `%s'\n", string_varlist[i].name, v); } } /* Print all of the current variables and their values to rl_outstream. If an explicit argument is given, then print the output in such a way that it can be read back in. */ int rl_dump_variables (int count, int key) { if (rl_dispatching) fprintf (rl_outstream, "\r\n"); rl_variable_dumper (rl_explicit_arg); rl_on_new_line (); return (0); } /* Return non-zero if any members of ARRAY are a substring in STRING. */ static int substring_member_of_array (const char *string, const char * const *array) { while (*array) { if (_rl_strindex (string, *array)) return (1); array++; } return (0); } readline-8.0/posixstat.h000664 000436 000024 00000010336 11050313766 015443 0ustar00chetstaff000000 000000 /* posixstat.h -- Posix stat(2) definitions for systems that don't have them. */ /* Copyright (C) 1987,1991 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. Bash is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Bash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Bash. If not, see . */ /* This file should be included instead of . It relies on the local sys/stat.h to work though. */ #if !defined (_POSIXSTAT_H_) #define _POSIXSTAT_H_ #include #if defined (STAT_MACROS_BROKEN) # undef S_ISBLK # undef S_ISCHR # undef S_ISDIR # undef S_ISFIFO # undef S_ISREG # undef S_ISLNK #endif /* STAT_MACROS_BROKEN */ /* These are guaranteed to work only on isc386 */ #if !defined (S_IFDIR) && !defined (S_ISDIR) # define S_IFDIR 0040000 #endif /* !S_IFDIR && !S_ISDIR */ #if !defined (S_IFMT) # define S_IFMT 0170000 #endif /* !S_IFMT */ /* Posix 1003.1 5.6.1.1 file types */ /* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but do not provide the S_IS* macros that Posix requires. */ #if defined (_S_IFMT) && !defined (S_IFMT) #define S_IFMT _S_IFMT #endif #if defined (_S_IFIFO) && !defined (S_IFIFO) #define S_IFIFO _S_IFIFO #endif #if defined (_S_IFCHR) && !defined (S_IFCHR) #define S_IFCHR _S_IFCHR #endif #if defined (_S_IFDIR) && !defined (S_IFDIR) #define S_IFDIR _S_IFDIR #endif #if defined (_S_IFBLK) && !defined (S_IFBLK) #define S_IFBLK _S_IFBLK #endif #if defined (_S_IFREG) && !defined (S_IFREG) #define S_IFREG _S_IFREG #endif #if defined (_S_IFLNK) && !defined (S_IFLNK) #define S_IFLNK _S_IFLNK #endif #if defined (_S_IFSOCK) && !defined (S_IFSOCK) #define S_IFSOCK _S_IFSOCK #endif /* Test for each symbol individually and define the ones necessary (some systems claiming Posix compatibility define some but not all). */ #if defined (S_IFBLK) && !defined (S_ISBLK) #define S_ISBLK(m) (((m)&S_IFMT) == S_IFBLK) /* block device */ #endif #if defined (S_IFCHR) && !defined (S_ISCHR) #define S_ISCHR(m) (((m)&S_IFMT) == S_IFCHR) /* character device */ #endif #if defined (S_IFDIR) && !defined (S_ISDIR) #define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) /* directory */ #endif #if defined (S_IFREG) && !defined (S_ISREG) #define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) /* file */ #endif #if defined (S_IFIFO) && !defined (S_ISFIFO) #define S_ISFIFO(m) (((m)&S_IFMT) == S_IFIFO) /* fifo - named pipe */ #endif #if defined (S_IFLNK) && !defined (S_ISLNK) #define S_ISLNK(m) (((m)&S_IFMT) == S_IFLNK) /* symbolic link */ #endif #if defined (S_IFSOCK) && !defined (S_ISSOCK) #define S_ISSOCK(m) (((m)&S_IFMT) == S_IFSOCK) /* socket */ #endif /* * POSIX 1003.1 5.6.1.2 File Modes */ #if !defined (S_IRWXU) # if !defined (S_IREAD) # define S_IREAD 00400 # define S_IWRITE 00200 # define S_IEXEC 00100 # endif /* S_IREAD */ # if !defined (S_IRUSR) # define S_IRUSR S_IREAD /* read, owner */ # define S_IWUSR S_IWRITE /* write, owner */ # define S_IXUSR S_IEXEC /* execute, owner */ # define S_IRGRP (S_IREAD >> 3) /* read, group */ # define S_IWGRP (S_IWRITE >> 3) /* write, group */ # define S_IXGRP (S_IEXEC >> 3) /* execute, group */ # define S_IROTH (S_IREAD >> 6) /* read, other */ # define S_IWOTH (S_IWRITE >> 6) /* write, other */ # define S_IXOTH (S_IEXEC >> 6) /* execute, other */ # endif /* !S_IRUSR */ # define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) # define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) # define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) #endif /* !S_IRWXU */ /* These are non-standard, but are used in builtins.c$symbolic_umask() */ #define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH) #define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH) #define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) #endif /* _POSIXSTAT_H_ */ readline-8.0/history.h000664 000436 000120 00000025033 13317267257 015103 0ustar00chetadmin000000 000000 /* history.h -- the names of functions that you can call in history. */ /* Copyright (C) 1989-2015 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. History is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. History is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with History. If not, see . */ #ifndef _HISTORY_H_ #define _HISTORY_H_ #ifdef __cplusplus extern "C" { #endif #include /* XXX - for history timestamp code */ #if defined READLINE_LIBRARY # include "rlstdc.h" # include "rltypedefs.h" #else # include # include #endif #ifdef __STDC__ typedef void *histdata_t; #else typedef char *histdata_t; #endif /* The structure used to store a history entry. */ typedef struct _hist_entry { char *line; char *timestamp; /* char * rather than time_t for read/write */ histdata_t data; } HIST_ENTRY; /* Size of the history-library-managed space in history entry HS. */ #define HISTENT_BYTES(hs) (strlen ((hs)->line) + strlen ((hs)->timestamp)) /* 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; /* Flag values for the `flags' member of HISTORY_STATE. */ #define HS_STIFLED 0x01 /* Initialization and state management. */ /* Begin a session in which the history functions might be used. This just initializes the interactive variables. */ extern void using_history PARAMS((void)); /* Return the current HISTORY_STATE of the history. */ extern HISTORY_STATE *history_get_history_state PARAMS((void)); /* Set the state of the current history array to STATE. */ extern void history_set_history_state PARAMS((HISTORY_STATE *)); /* Manage the history list. */ /* Place STRING at the end of the history list. The associated data field (if any) is set to NULL. */ extern void add_history PARAMS((const char *)); /* Change the timestamp associated with the most recent history entry to STRING. */ extern void add_history_time PARAMS((const char *)); /* Remove an entry from the history list. WHICH is the magic number that tells us which element to delete. The elements are numbered from 0. */ extern HIST_ENTRY *remove_history PARAMS((int)); /* Remove a set of entries from the history list: FIRST to LAST, inclusive */ extern HIST_ENTRY **remove_history_range PARAMS((int, int)); /* Allocate a history entry consisting of STRING and TIMESTAMP and return a pointer to it. */ extern HIST_ENTRY *alloc_history_entry PARAMS((char *, char *)); /* Copy the history entry H, but not the (opaque) data pointer */ extern HIST_ENTRY *copy_history_entry PARAMS((HIST_ENTRY *)); /* Free the history entry H and return any application-specific data associated with it. */ extern histdata_t free_history_entry PARAMS((HIST_ENTRY *)); /* Make the history entry at WHICH have LINE and DATA. This returns the old entry so you can dispose of the data. In the case of an invalid WHICH, a NULL pointer is returned. */ extern HIST_ENTRY *replace_history_entry PARAMS((int, const char *, histdata_t)); /* Clear the history list and start over. */ extern void clear_history PARAMS((void)); /* Stifle the history list, remembering only MAX number of entries. */ extern void stifle_history PARAMS((int)); /* Stop stifling the history. This returns the previous amount the history was stifled by. The value is positive if the history was stifled, negative if it wasn't. */ extern int unstifle_history PARAMS((void)); /* Return 1 if the history is stifled, 0 if it is not. */ extern int history_is_stifled PARAMS((void)); /* Information about the history list. */ /* Return a NULL terminated array of HIST_ENTRY which is the current input history. Element 0 of this list is the beginning of time. If there is no history, return NULL. */ extern HIST_ENTRY **history_list PARAMS((void)); /* Returns the number which says what history element we are now looking at. */ extern int where_history PARAMS((void)); /* Return the history entry at the current position, as determined by history_offset. If there is no entry there, return a NULL pointer. */ extern HIST_ENTRY *current_history PARAMS((void)); /* Return the history entry which is logically at OFFSET in the history array. OFFSET is relative to history_base. */ extern HIST_ENTRY *history_get PARAMS((int)); /* Return the timestamp associated with the HIST_ENTRY * passed as an argument */ extern time_t history_get_time PARAMS((HIST_ENTRY *)); /* Return the number of bytes that the primary history entries are using. This just adds up the lengths of the_history->lines. */ extern int history_total_bytes PARAMS((void)); /* Moving around the history list. */ /* Set the position in the history list to POS. */ extern int history_set_pos PARAMS((int)); /* Back up history_offset to the previous history entry, and return a pointer to that entry. If there is no previous entry, return a NULL pointer. */ extern HIST_ENTRY *previous_history PARAMS((void)); /* Move history_offset forward to the next item in the input_history, and return the a pointer to that entry. If there is no next entry, return a NULL pointer. */ extern HIST_ENTRY *next_history PARAMS((void)); /* Searching the history list. */ /* Search the history for STRING, starting at history_offset. If DIRECTION < 0, then the search is through previous entries, else through subsequent. If the string is found, then current_history () is the history entry, and the value of this function is the offset in the line of that history entry that the string was found in. Otherwise, nothing is changed, and a -1 is returned. */ extern int history_search PARAMS((const char *, int)); /* Search the history for STRING, starting at history_offset. The search is anchored: matching lines must begin with string. DIRECTION is as in history_search(). */ extern int history_search_prefix PARAMS((const char *, int)); /* Search for STRING in the history list, starting at POS, an absolute index into the list. DIR, if negative, says to search backwards from POS, else forwards. Returns the absolute index of the history element where STRING was found, or -1 otherwise. */ extern int history_search_pos PARAMS((const char *, int, int)); /* Managing the history file. */ /* Add the contents of FILENAME to the history list, a line at a time. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ extern int read_history PARAMS((const char *)); /* Read a range of lines from FILENAME, adding them to the history list. Start reading at the FROM'th line and end at the TO'th. If FROM is zero, start at the beginning. If TO is less than FROM, read until the end of the file. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ extern int read_history_range PARAMS((const char *, int, int)); /* Write the current history to FILENAME. If FILENAME is NULL, then write the history list to ~/.history. Values returned are as in read_history (). */ extern int write_history PARAMS((const char *)); /* Append NELEMENT entries to FILENAME. The entries appended are from the end of the list minus NELEMENTs up to the end of the list. */ extern int append_history PARAMS((int, const char *)); /* Truncate the history file, leaving only the last NLINES lines. */ extern int history_truncate_file PARAMS((const char *, int)); /* History expansion. */ /* Expand the string STRING, placing the result into OUTPUT, a pointer to a string. Returns: 0) If no expansions took place (or, if the only change in the text was the de-slashifying of the history expansion character) 1) If expansions did take place -1) If there was an error in expansion. 2) If the returned line should just be printed. If an error occurred in expansion, then OUTPUT contains a descriptive error message. */ extern int history_expand PARAMS((char *, char **)); /* Extract a string segment consisting of the FIRST through LAST arguments present in STRING. Arguments are broken up as in the shell. */ extern char *history_arg_extract PARAMS((int, int, const char *)); /* Return the text of the history event beginning at the current offset into STRING. Pass STRING with *INDEX equal to the history_expansion_char that begins this specification. DELIMITING_QUOTE is a character that is allowed to end the string specification for what to search for in addition to the normal characters `:', ` ', `\t', `\n', and sometimes `?'. */ extern char *get_history_event PARAMS((const char *, int *, int)); /* Return an array of tokens, much as the shell might. The tokens are parsed out of STRING. */ extern char **history_tokenize PARAMS((const char *)); /* Exported history variables. */ extern int history_base; extern int history_length; extern int history_max_entries; extern int history_offset; extern int history_lines_read_from_file; extern int history_lines_written_to_file; extern char history_expansion_char; extern char history_subst_char; extern char *history_word_delimiters; extern char history_comment_char; extern char *history_no_expand_chars; extern char *history_search_delimiter_chars; extern int history_quotes_inhibit_expansion; extern int history_quoting_state; extern int history_write_timestamps; /* These two are undocumented; the second is reserved for future use */ extern int history_multiline_entries; extern int history_file_version; /* Backwards compatibility */ extern int max_input_history; /* If set, this function is called to decide whether or not a particular history expansion should be treated as a special case for the calling application and not expanded. */ extern rl_linebuf_func_t *history_inhibit_expansion_function; #ifdef __cplusplus } #endif #endif /* !_HISTORY_H_ */ readline-8.0/savestring.c000664 000436 000120 00000002407 13052147664 015555 0ustar00chetadmin000000 000000 /* savestring.c - function version of savestring for backwards compatibility */ /* Copyright (C) 1998,2003,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #define READLINE_LIBRARY #include #ifdef HAVE_STRING_H # include #endif #include "xmalloc.h" /* Backwards compatibility, now that savestring has been removed from all `public' readline header files. */ char * savestring (const char *s) { char *ret; ret = (char *)xmalloc (strlen (s) + 1); strcpy (ret, s); return ret; } readline-8.0/xmalloc.h000664 000436 000000 00000002440 11130207322 015021 0ustar00chetwheel000000 000000 /* xmalloc.h -- memory allocation that aborts on errors. */ /* Copyright (C) 1999-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if !defined (_XMALLOC_H_) #define _XMALLOC_H_ #if defined (READLINE_LIBRARY) # include "rlstdc.h" #else # include #endif #ifndef PTR_T #ifdef __STDC__ # define PTR_T void * #else # define PTR_T char * #endif #endif /* !PTR_T */ extern PTR_T xmalloc PARAMS((size_t)); extern PTR_T xrealloc PARAMS((void *, size_t)); extern void xfree PARAMS((void *)); #endif /* _XMALLOC_H_ */ readline-8.0/shlib/Makefile.in000664 000436 000024 00000044554 12550566466 016430 0ustar00chetstaff000000 000000 ## -*- text -*- ## # Makefile for the GNU readline library shared library support. # # Copyright (C) 1998-2009 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . PACKAGE = @PACKAGE_NAME@ VERSION = @PACKAGE_VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_VERSION = @PACKAGE_VERSION@ RL_LIBRARY_VERSION = @LIBVERSION@ RL_LIBRARY_NAME = readline datarootdir = @datarootdir@ srcdir = @srcdir@ VPATH = @top_srcdir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ CC = @CC@ RANLIB = @RANLIB@ AR = @AR@ ARFLAGS = @ARFLAGS@ RM = rm -f CP = cp MV = mv LN = ln SHELL = @MAKE_SHELL@ host_os = @host_os@ host_vendor = @host_vendor@ prefix = @prefix@ exec_prefix = @exec_prefix@ includedir = @includedir@ bindir = @bindir@ libdir = @libdir@ datadir = @datadir@ localedir = @localedir@ # Support an alternate destination root directory for package building DESTDIR = CFLAGS = @CFLAGS@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"' CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ @CFLAGS@ DEFS = @DEFS@ @CROSS_COMPILE@ LOCAL_DEFS = @LOCAL_DEFS@ # # These values are generated for configure by ${topdir}/support/shobj-conf. # If your system is not supported by that script, but includes facilities for # dynamic loading of shared objects, please update the script and send the # changes to bash-maintainers@gnu.org. # SHOBJ_CC = @SHOBJ_CC@ SHOBJ_CFLAGS = @SHOBJ_CFLAGS@ SHOBJ_LD = @SHOBJ_LD@ SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ SHOBJ_LIBS = @SHOBJ_LIBS@ SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@ SHLIB_LIBS = @SHLIB_LIBS@ SHLIB_DOT = @SHLIB_DOT@ SHLIB_LIBPREF = @SHLIB_LIBPREF@ SHLIB_LIBSUFF = @SHLIB_LIBSUFF@ SHLIB_LIBVERSION = @SHLIB_LIBVERSION@ SHLIB_DLLVERSION = @SHLIB_DLLVERSION@ SHLIB_STATUS = @SHLIB_STATUS@ TERMCAP_LIB = @TERMCAP_LIB@ # shared library versioning SHLIB_MAJOR= @SHLIB_MAJOR@ # shared library systems like SVR4's do not use minor versions SHLIB_MINOR= .@SHLIB_MINOR@ # For libraries which include headers from other libraries. INCLUDES = -I. -I.. -I$(topdir) CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(INCLUDES) $(CPPFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) .SUFFIXES: .so .c.so: ${RM} $@ $(SHOBJ_CC) -c $(CCFLAGS) $(SHOBJ_CFLAGS) -o $*.o $< $(MV) $*.o $@ # The name of the main library target. SHARED_READLINE = $(SHLIB_LIBPREF)readline$(SHLIB_DOT)$(SHLIB_LIBVERSION) SHARED_HISTORY = $(SHLIB_LIBPREF)history$(SHLIB_DOT)$(SHLIB_LIBVERSION) SHARED_LIBS = $(SHARED_READLINE) $(SHARED_HISTORY) # The C code source files for this library. CSOURCES = $(topdir)/readline.c $(topdir)/funmap.c $(topdir)/keymaps.c \ $(topdir)/vi_mode.c $(topdir)/parens.c $(topdir)/rltty.c \ $(topdir)/complete.c $(topdir)/bind.c $(topdir)/isearch.c \ $(topdir)/display.c $(topdir)/signals.c $(topdir)/emacs_keymap.c \ $(topdir)/vi_keymap.c $(topdir)/util.c $(topdir)/kill.c \ $(topdir)/undo.c $(topdir)/macro.c $(topdir)/input.c \ $(topdir)/callback.c $(topdir)/terminal.c $(topdir)/xmalloc.c $(topdir)/xfree.c \ $(topdir)/history.c $(topdir)/histsearch.c $(topdir)/histexpand.c \ $(topdir)/histfile.c $(topdir)/nls.c $(topdir)/search.c \ $(topdir)/shell.c $(topdir)/savestring.c $(topdir)/tilde.c \ $(topdir)/text.c $(topdir)/misc.c $(topdir)/compat.c \ $(topdir)/colors.c $(topdir)/parse-colors.c \ $(topdir)/mbutil.c # The header files for this library. HSOURCES = $(topdir)/readline.h $(topdir)/rldefs.h $(topdir)/chardefs.h \ $(topdir)/keymaps.h $(topdir)/history.h $(topdir)/histlib.h \ $(topdir)/posixstat.h $(topdir)/posixdir.h $(topdir)/posixjmp.h \ $(topdir)/tilde.h $(topdir)/rlconf.h $(topdir)/rltty.h \ $(topdir)/ansi_stdlib.h $(topdir)/tcap.h $(topdir)/rlstdc.h \ $(topdir)/xmalloc.h $(topdir)/rlprivate.h $(topdir)/rlshell.h \ $(topdir)/rltypedefs.h $(topdir)/rlmbutil.h \ $(topdir)/colors.h $(topdir)/parse-colors.h SHARED_HISTOBJ = history.so histexpand.so histfile.so histsearch.so shell.so \ mbutil.so SHARED_TILDEOBJ = tilde.so SHARED_COLORSOBJ = colors.so parse-colors.so SHARED_OBJ = readline.so vi_mode.so funmap.so keymaps.so parens.so search.so \ rltty.so complete.so bind.so isearch.so display.so signals.so \ util.so kill.so undo.so macro.so input.so callback.so terminal.so \ text.so nls.so misc.so \ $(SHARED_HISTOBJ) $(SHARED_TILDEOBJ) $(SHARED_COLORSOBJ) \ xmalloc.so xfree.so compat.so ########################################################################## all: $(SHLIB_STATUS) supported: $(SHARED_LIBS) unsupported: @echo "Your system and compiler (${host_os}-${CC}) are not supported by the" @echo "${topdir}/support/shobj-conf script." @echo "If your operating system provides facilities for creating" @echo "shared libraries, please update the script and re-run configure." @echo "Please send the changes you made to bash-maintainers@gnu.org" @echo "for inclusion in future bash and readline releases." $(SHARED_READLINE): $(SHARED_OBJ) $(RM) $@ $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_OBJ) $(SHLIB_LIBS) $(SHARED_HISTORY): $(SHARED_HISTOBJ) xmalloc.so xfree.so $(RM) $@ $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_HISTOBJ) xmalloc.so xfree.so $(SHLIB_LIBS) # Since tilde.c is shared between readline and bash, make sure we compile # it with the right flags when it's built as part of readline tilde.so: tilde.c ${RM} $@ $(SHOBJ_CC) -c $(CCFLAGS) $(SHOBJ_CFLAGS) -DREADLINE_LIBRARY -c -o tilde.o $(topdir)/tilde.c $(MV) tilde.o $@ installdirs: $(topdir)/support/mkdirs -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(libdir) -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(bindir) install-supported: installdirs $(SHLIB_STATUS) $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -V $(host_vendor) -d $(DESTDIR)$(libdir) -b $(DESTDIR)$(bindir) -i "$(INSTALL_DATA)" $(SHARED_HISTORY) $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -V $(host_vendor) -d $(DESTDIR)$(libdir) -b $(DESTDIR)$(bindir) -i "$(INSTALL_DATA)" $(SHARED_READLINE) @echo install: you may need to run ldconfig install-unsupported: @echo install: shared libraries not supported install: install-$(SHLIB_STATUS) uninstall-supported: $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -V $(host_vendor) -d $(DESTDIR)$(libdir) -b $(DESTDIR)$(bindir) -U $(SHARED_HISTORY) $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -V $(host_vendor) -d $(DESTDIR)$(libdir) -b $(DESTDIR)$(bindir) -U $(SHARED_READLINE) @echo uninstall: you may need to run ldconfig uninstall-unsupported: @echo uninstall: shared libraries not supported uninstall: uninstall-$(SHLIB_STATUS) clean mostlyclean: force $(RM) $(SHARED_OBJ) $(SHARED_LIBS) distclean maintainer-clean: clean $(RM) Makefile force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Dependencies bind.so: $(topdir)/ansi_stdlib.h $(topdir)/posixstat.h bind.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h bind.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h bind.so: $(topdir)/rltypedefs.h bind.so: $(topdir)/tilde.h $(topdir)/history.h compat.so: ${BUILD_DIR}/config.h compat.so: $(topdir)/rlstdc.h $(topdir)/rltypedefs.h callback.so: $(topdir)/rlconf.h callback.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h callback.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h callback.so: $(topdir)/rltypedefs.h callback.so: $(topdir)/tilde.h complete.so: $(topdir)/ansi_stdlib.h $(topdir)/posixdir.h $(topdir)/posixstat.h complete.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h complete.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h complete.so: $(topdir)/rltypedefs.h complete.so: $(topdir)/tilde.h display.so: $(topdir)/ansi_stdlib.h $(topdir)/posixstat.h display.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h display.so: $(topdir)/tcap.h display.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h display.so: $(topdir)/rltypedefs.h display.so: $(topdir)/tilde.h $(topdir)/history.h funmap.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h funmap.so: $(topdir)/rltypedefs.h funmap.so: $(topdir)/rlconf.h $(topdir)/ansi_stdlib.h funmap.so: ${BUILD_DIR}/config.h $(topdir)/tilde.h histexpand.so: $(topdir)/ansi_stdlib.h histexpand.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h histexpand.so: ${BUILD_DIR}/config.h histfile.so: $(topdir)/ansi_stdlib.h histfile.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h histfile.so: ${BUILD_DIR}/config.h history.so: $(topdir)/ansi_stdlib.h history.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h history.so: ${BUILD_DIR}/config.h histsearch.so: $(topdir)/ansi_stdlib.h histsearch.so: $(topdir)/history.h $(topdir)/histlib.h $(topdir)/rltypedefs.h histsearch.so: ${BUILD_DIR}/config.h input.so: $(topdir)/ansi_stdlib.h input.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h input.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h input.so: $(topdir)/rltypedefs.h input.so: $(topdir)/tilde.h isearch.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h isearch.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h isearch.so: $(topdir)/rltypedefs.h isearch.so: $(topdir)/ansi_stdlib.h $(topdir)/history.h $(topdir)/tilde.h keymaps.so: $(topdir)/keymaps.h $(topdir)/chardefs.h $(topdir)/rlconf.h keymaps.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h keymaps.so: $(topdir)/rltypedefs.h keymaps.so: ${BUILD_DIR}/config.h $(topdir)/ansi_stdlib.h $(topdir)/tilde.h kill.so: $(topdir)/ansi_stdlib.h kill.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h kill.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h kill.so: $(topdir)/tilde.h $(topdir)/history.h $(topdir)/rltypedefs.h macro.so: $(topdir)/ansi_stdlib.h macro.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h macro.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h macro.so: $(topdir)/tilde.h $(topdir)/history.h $(topdir)/rltypedefs.h mbutil.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h mbutil.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/rltypedefs.h mbutil.so: $(topdir)/chardefs.h $(topdir)/rlstdc.h misc.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h misc.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h misc.so: $(topdir)/rltypedefs.h misc.so: $(topdir)/history.h $(topdir)/tilde.h $(topdir)/ansi_stdlib.h nls.so: $(topdir)/ansi_stdlib.h nls.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h nls.o: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h nls.o: $(topdir)/rltypedefs.h nls.o: $(topdir)/tilde.h $(topdir)/history.h $(topdir)/rlstdc.h parens.so: $(topdir)/rlconf.h ${BUILD_DIR}/config.h parens.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h parens.so: $(topdir)/rltypedefs.h parens.so: $(topdir)/tilde.h rltty.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h rltty.so: $(topdir)/rltty.h $(topdir)/tilde.h rltty.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h rltty.so: $(topdir)/rltypedefs.h savestring.so: ${BUILD_DIR}/config.h search.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h search.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h search.so: $(topdir)/ansi_stdlib.h $(topdir)/history.h $(topdir)/tilde.h search.so: $(topdir)/rltypedefs.h signals.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h signals.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h signals.so: $(topdir)/history.h $(topdir)/tilde.h signals.so: $(topdir)/rltypedefs.h terminal.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h terminal.so: $(topdir)/tcap.h terminal.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h terminal.so: $(topdir)/tilde.h $(topdir)/history.h terminal.so: $(topdir)/rltypedefs.h text.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h text.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h text.so: $(topdir)/rltypedefs.h text.so: $(topdir)/history.h $(topdir)/tilde.h $(topdir)/ansi_stdlib.h tilde.so: $(topdir)/ansi_stdlib.h ${BUILD_DIR}/config.h $(topdir)/tilde.h undo.so: $(topdir)/ansi_stdlib.h undo.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h undo.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h undo.so: $(topdir)/rltypedefs.h undo.so: $(topdir)/tilde.h $(topdir)/history.h util.so: $(topdir)/posixjmp.h $(topdir)/ansi_stdlib.h util.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h util.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h util.so: $(topdir)/rltypedefs.h $(topdir)/tilde.h vi_mode.so: $(topdir)/rldefs.h ${BUILD_DIR}/config.h $(topdir)/rlconf.h vi_mode.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/chardefs.h vi_mode.so: $(topdir)/history.h $(topdir)/ansi_stdlib.h $(topdir)/tilde.h vi_mode.so: $(topdir)/rltypedefs.h xfree.so: ${BUILD_DIR}/config.h xfree.so: $(topdir)/ansi_stdlib.h xmalloc.so: ${BUILD_DIR}/config.h xmalloc.so: $(topdir)/ansi_stdlib.h bind.so: $(topdir)/rlshell.h histfile.so: $(topdir)/rlshell.h nls.so: $(topdir)/rlshell.h readline.so: $(topdir)/rlshell.h shell.so: $(topdir)/rlshell.h terminal.so: $(topdir)/rlshell.h histexpand.so: $(topdir)/rlshell.h colors.so: $(BUILD_DIR)/config.h $(topdir)/colors.h colors.so: $(topdir)/rlconf.h colors.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/rltypedefs.h colors.so: $(topdir)/chardefs.h $(topdir)/tilde.h $(topdir)/rlstdc.h colors.so: $(topdir)/ansi_stdlib.h $(topdir)/posixstat.h parse-colors.so: $(BUILD_DIR)/config.h $(topdir)/colors.h $(topdir)/parse-colors.h parse-colors.so: $(topdir)/rldefs.h $(topdir)/rlconf.h parse-colors.so: $(topdir)/readline.h $(topdir)/keymaps.h $(topdir)/rltypedefs.h parse-colors.so: $(topdir)/chardefs.h $(topdir)/tilde.h $(topdir)/rlstdc.h bind.so: $(topdir)/rlprivate.h callback.so: $(topdir)/rlprivate.h complete.so: $(topdir)/rlprivate.h display.so: $(topdir)/rlprivate.h input.so: $(topdir)/rlprivate.h isearch.so: $(topdir)/rlprivate.h kill.so: $(topdir)/rlprivate.h macro.so: $(topdir)/rlprivate.h mbutil.so: $(topdir)/rlprivate.h misc.so: $(topdir)/rlprivate.h nls.so: $(topdir)/rlprivate.h parens.so: $(topdir)/rlprivate.h readline.so: $(topdir)/rlprivate.h rltty.so: $(topdir)/rlprivate.h search.so: $(topdir)/rlprivate.h signals.so: $(topdir)/rlprivate.h terminal.so: $(topdir)/rlprivate.h text.so: $(topdir)/rlprivate.h undo.so: $(topdir)/rlprivate.h util.so: $(topdir)/rlprivate.h vi_mode.so: $(topdir)/rlprivate.h colors.so: $(topdir)/rlprivate.h parse-colors.so: $(topdir)/rlprivate.h bind.so: $(topdir)/xmalloc.h callback.so: $(topdir)/xmalloc.h complete.so: $(topdir)/xmalloc.h display.so: $(topdir)/xmalloc.h funmap.so: $(topdir)/xmalloc.h histexpand.so: $(topdir)/xmalloc.h histfile.so: $(topdir)/xmalloc.h history.so: $(topdir)/xmalloc.h input.so: $(topdir)/xmalloc.h isearch.so: $(topdir)/xmalloc.h keymaps.so: $(topdir)/xmalloc.h kill.so: $(topdir)/xmalloc.h macro.so: $(topdir)/xmalloc.h mbutil.so: $(topdir)/xmalloc.h misc.so: $(topdir)/xmalloc.h readline.so: $(topdir)/xmalloc.h savestring.so: $(topdir)/xmalloc.h search.so: $(topdir)/xmalloc.h shell.so: $(topdir)/xmalloc.h terminal.so: $(topdir)/xmalloc.h text.so: $(topdir)/xmalloc.h tilde.so: $(topdir)/xmalloc.h undo.so: $(topdir)/xmalloc.h util.so: $(topdir)/xmalloc.h vi_mode.so: $(topdir)/xmalloc.h xfree.so: $(topdir)/xmalloc.h xmalloc.so: $(topdir)/xmalloc.h colors.so: $(topdir)/xmalloc.h parse-colors.so: $(topdir)/xmalloc.h complete.so: $(topdir)/rlmbutil.h display.so: $(topdir)/rlmbutil.h histexpand.so: $(topdir)/rlmbutil.h input.so: $(topdir)/rlmbutil.h isearch.so: $(topdir)/rlmbutil.h mbutil.so: $(topdir)/rlmbutil.h misc.so: $(topdir)/rlmbutil.h readline.so: $(topdir)/rlmbutil.h search.so: $(topdir)/rlmbutil.h text.so: $(topdir)/rlmbutil.h vi_mode.so: $(topdir)/rlmbutil.h colors.so: $(topdir)/rlmbutil.h parse-colors.so: $(topdir)/rlmbutil.h bind.so: $(topdir)/bind.c callback.so: $(topdir)/callback.c compat.so: $(topdir)/compat.c complete.so: $(topdir)/complete.c display.so: $(topdir)/display.c funmap.so: $(topdir)/funmap.c input.so: $(topdir)/input.c isearch.so: $(topdir)/isearch.c keymaps.so: $(topdir)/keymaps.c $(topdir)/emacs_keymap.c $(topdir)/vi_keymap.c kill.so: $(topdir)/kill.c macro.so: $(topdir)/macro.c mbutil.so: $(topdir)/mbutil.c misc.so: $(topdir)/mbutil.c nls.so: $(topdir)/nls.c parens.so: $(topdir)/parens.c readline.so: $(topdir)/readline.c rltty.so: $(topdir)/rltty.c savestring.so: $(topdir)/savestring.c search.so: $(topdir)/search.c shell.so: $(topdir)/shell.c signals.so: $(topdir)/signals.c terminal.so: $(topdir)/terminal.c text.so: $(topdir)/text.c tilde.so: $(topdir)/tilde.c undo.so: $(topdir)/undo.c util.so: $(topdir)/util.c vi_mode.so: $(topdir)/vi_mode.c xfree.so: $(topdir)/xfree.c xmalloc.so: $(topdir)/xmalloc.c histexpand.so: $(topdir)/histexpand.c histfile.so: $(topdir)/histfile.c history.so: $(topdir)/history.c histsearch.so: $(topdir)/histsearch.c bind.so: bind.c callback.so: callback.c comapt.so: compat.c complete.so: complete.c display.so: display.c funmap.so: funmap.c input.so: input.c isearch.so: isearch.c keymaps.so: keymaps.c emacs_keymap.c vi_keymap.c kill.so: kill.c macro.so: macro.c mbutil.so: mbutil.c misc.so: misc.c nls.so: nls.c parens.so: parens.c readline.so: readline.c rltty.so: rltty.c savestring.so: savestring.c search.so: search.c signals.so: signals.c shell.so: shell.c terminal.so: terminal.c text.so: text.c tilde.so: tilde.c undo.so: undo.c util.so: util.c vi_mode.so: vi_mode.c xfree.so: xfree.c xmalloc.so: xmalloc.c colors.so: colors.c parse-colors.so: parse-colors.c histexpand.so: histexpand.c histfile.so: histfile.c history.so: history.c histsearch.so: histsearch.c readline-8.0/examples/rlcat.c000664 000436 000024 00000006345 13102640223 016317 0ustar00chetstaff000000 000000 /* * rlcat - cat(1) using readline * * usage: rlcat */ /* Copyright (C) 1987-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if defined (HAVE_CONFIG_H) # include #endif #ifdef HAVE_UNISTD_H # include #endif #include #include "posixstat.h" #include #include #include #include #ifdef HAVE_STDLIB_H # include #else extern void exit(); #endif #ifndef errno extern int errno; #endif #if defined (READLINE_LIBRARY) # include "readline.h" # include "history.h" #else # include # include #endif extern int optind; extern char *optarg; static int stdcat(); static char *progname; static int vflag; static void usage() { fprintf (stderr, "%s: usage: %s [-vEVN] [filename]\n", progname, progname); } int main (argc, argv) int argc; char **argv; { char *temp; int opt, Vflag, Nflag; progname = strrchr(argv[0], '/'); if (progname == 0) progname = argv[0]; else progname++; vflag = Vflag = Nflag = 0; while ((opt = getopt(argc, argv, "vEVN")) != EOF) { switch (opt) { case 'v': vflag = 1; break; case 'V': Vflag = 1; break; case 'E': Vflag = 0; break; case 'N': Nflag = 1; break; default: usage (); exit (2); } } argc -= optind; argv += optind; if (isatty(0) == 0 || argc || Nflag) return stdcat(argc, argv); rl_variable_bind ("editing-mode", Vflag ? "vi" : "emacs"); while (temp = readline ("")) { if (*temp) add_history (temp); printf ("%s\n", temp); } return (ferror (stdout)); } static int fcopy(fp) FILE *fp; { int c; char *x; while ((c = getc(fp)) != EOF) { if (vflag && isascii ((unsigned char)c) && isprint((unsigned char)c) == 0) { x = rl_untranslate_keyseq (c); if (fputs (x, stdout) == EOF) return 1; } else if (putchar (c) == EOF) return 1; } return (ferror (stdout)); } int stdcat (argc, argv) int argc; char **argv; { int i, fd, r; char *s; FILE *fp; if (argc == 0) return (fcopy(stdin)); for (i = 0, r = 1; i < argc; i++) { if (*argv[i] == '-' && argv[i][1] == 0) fp = stdin; else { fp = fopen (argv[i], "r"); if (fp == 0) { fprintf (stderr, "%s: %s: cannot open: %s\n", progname, argv[i], strerror(errno)); continue; } } r = fcopy (fp); if (fp != stdin) fclose(fp); } return r; } readline-8.0/examples/excallback.c000644 000436 000024 00000013260 11605321745 017306 0ustar00chetstaff000000 000000 /* From: Jeff Solomon Date: Fri, 9 Apr 1999 10:13:27 -0700 (PDT) To: chet@po.cwru.edu Subject: new readline example Message-ID: <14094.12094.527305.199695@mrclean.Stanford.EDU> Chet, I've been using readline 4.0. Specifically, I've been using the perl version Term::ReadLine::Gnu. It works great. Anyway, I've been playing around the alternate interface and I wanted to contribute a little C program, callback.c, to you that you could use as an example of the alternate interface in the /examples directory of the readline distribution. My example shows how, using the alternate interface, you can interactively change the prompt (which is very nice imo). Also, I point out that you must roll your own terminal setting when using the alternate interface because readline depreps (using your parlance) the terminal while in the user callback. I try to demostrate what I mean with an example. I've included the program below. To compile, I just put the program in the examples directory and made the appropriate changes to the EXECUTABLES and OBJECTS line and added an additional target 'callback'. I compiled on my Sun Solaris2.6 box using Sun's cc. Let me know what you think. Jeff */ /* Copyright (C) 1999 Jeff Solomon */ #if defined (HAVE_CONFIG_H) #include #endif #include #ifdef HAVE_UNISTD_H #include #endif #include #include #include /* xxx - should make this more general */ #ifdef READLINE_LIBRARY # include "readline.h" #else # include #endif #ifndef STDIN_FILENO # define STDIN_FILENO 0 #endif /* This little examples demonstrates the alternate interface to using readline. * In the alternate interface, the user maintains control over program flow and * only calls readline when STDIN is readable. Using the alternate interface, * you can do anything else while still using readline (like talking to a * network or another program) without blocking. * * Specifically, this program highlights two importants features of the * alternate interface. The first is the ability to interactively change the * prompt, which can't be done using the regular interface since rl_prompt is * read-only. * * The second feature really highlights a subtle point when using the alternate * interface. That is, readline will not alter the terminal when inside your * callback handler. So let's so, your callback executes a user command that * takes a non-trivial amount of time to complete (seconds). While your * executing the command, the user continues to type keystrokes and expects them * to be re-echoed on the new prompt when it returns. Unfortunately, the default * terminal configuration doesn't do this. After the prompt returns, the user * must hit one additional keystroke and then will see all of his previous * keystrokes. To illustrate this, compile and run this program. Type "sleep" at * the prompt and then type "bar" before the prompt returns (you have 3 * seconds). Notice how "bar" is re-echoed on the prompt after the prompt * returns? This is what you expect to happen. Now comment out the 4 lines below * the line that says COMMENT LINE BELOW. Recompile and rerun the program and do * the same thing. When the prompt returns, you should not see "bar". Now type * "f", see how "barf" magically appears? This behavior is un-expected and not * desired. */ void process_line(char *line); int change_prompt(void); char *get_prompt(void); int prompt = 1; char prompt_buf[40], line_buf[256]; tcflag_t old_lflag; cc_t old_vtime; struct termios term; int main() { fd_set fds; /* Adjust the terminal slightly before the handler is installed. Disable * canonical mode processing and set the input character time flag to be * non-blocking. */ if( tcgetattr(STDIN_FILENO, &term) < 0 ) { perror("tcgetattr"); exit(1); } old_lflag = term.c_lflag; old_vtime = term.c_cc[VTIME]; term.c_lflag &= ~ICANON; term.c_cc[VTIME] = 1; /* COMMENT LINE BELOW - see above */ if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) { perror("tcsetattr"); exit(1); } rl_add_defun("change-prompt", change_prompt, CTRL('t')); rl_callback_handler_install(get_prompt(), process_line); while(1) { FD_ZERO(&fds); FD_SET(fileno(stdin), &fds); if( select(FD_SETSIZE, &fds, NULL, NULL, NULL) < 0) { perror("select"); exit(1); } if( FD_ISSET(fileno(stdin), &fds) ) { rl_callback_read_char(); } } } void process_line(char *line) { if( line == NULL ) { fprintf(stderr, "\n", line); /* reset the old terminal setting before exiting */ term.c_lflag = old_lflag; term.c_cc[VTIME] = old_vtime; if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) { perror("tcsetattr"); exit(1); } exit(0); } if( strcmp(line, "sleep") == 0 ) { sleep(3); } else { fprintf(stderr, "|%s|\n", line); } free (line); } int change_prompt(void) { /* toggle the prompt variable */ prompt = !prompt; /* save away the current contents of the line */ strcpy(line_buf, rl_line_buffer); /* install a new handler which will change the prompt and erase the current line */ rl_callback_handler_install(get_prompt(), process_line); /* insert the old text on the new line */ rl_insert_text(line_buf); /* redraw the current line - this is an undocumented function. It invokes the * redraw-current-line command. */ rl_refresh_line(0, 0); } char * get_prompt(void) { /* The prompts can even be different lengths! */ sprintf(prompt_buf, "%s", prompt ? "Hit ctrl-t to toggle prompt> " : "Pretty cool huh?> "); return prompt_buf; } readline-8.0/examples/rlwrap-0.30.tar.gz000664 000436 000024 00000547341 10737174550 020110 0ustar00chetstaff000000 000000 ‹Wù|Gì[ûsÛ6¶ÎÏø+°jrmïJô3ñ\§ÍF±ÝÄs]ÛµÝfvâÔ‘ „5I0i[ÉfÿöûP¢·ÓN_wïD­) Äã¼Ïw@¤Ên*U֢͵Õ¿Óg Ÿíímÿýdká;|¬¯mon¯oo=Þxò€{o=ü}ZFÚïÿOÕÑló2Óµ±…[ýSõ¿¾±¹¹öYÿ¦þÓºüMEódkëGõÿd:ß~¼¹¶µ±¶±µAúǯòÁgýÿˆ‡âïBűmŠZ¨²ÔE"”‹#ebd UMÅhªE¬. þoJOr‹ÛÌR[%=jƸÂ|´H Œ‹mQè¸úÖÔ"µU.ƺãÌŽÄD¹‰˜è¬&É´0¹k‘ʼn|óõÁáþ[‘9‘«8Ñ©ÈÜ9MšÓùßR›hºÔ&ÇwÙÔíðBßèJ™qµ(rUŠ¢®Tá„w¢TΙk-Ê æ^Ó×íTt—7‰x‹w ¨~×X¬]éøZ¼Ò…Ê©ÅñW« ßÌIÅ$Vhª'ª¦0ï-É“.¥EOg03ïqñÝ\]5‘k{O]­sQëBߊÚÄW„ÇZÔÓR‹&WîJ4¬]ëjD’ÿýü¿oqftQÿîþ¿±õx›ümkkssó1Ú×·6¯}öÿ?â“ÙJçÒ”®É%L^ÉÄ¢IÂP% ½îKx±ƒ뺩úR%¦„cy­3ƒ‡N'új]m%ø²21cpîLŽnIêAË2U$¦6à´¬B\QPÒ²"(è!UpEÒ­ðÈU.PË‹7cÑA5±.A¡]Álƒ4(JÆMiÃb‚aU{m, Ë2¹!­hhC Ô¸ÉJÅtÚ451™*H¬è)V‚ŒÑ¢`¦/I•.¨T·Ö^ EÉýZNTå->|+M?RcIÇC1Dß–šhƒ¸ÀEî"y[Í̈„ìÍ[ÃC0ÖAF5Ù⨠3cXˆ…|,õ!^X÷Hw<3ë ér# ûV·Èe²Ìô¡lP¤ac¥%e5®/mÅyf}J$h¬Ñ¸Hž31fÔ´F Îð#QÌ=š‚Ðh´AVÜOxÆ‘¥ažì:4S˜Yjr2ÍN«;þèÈâ›ÄÀR`»¤N¡ëŽ5“‘/awÔ!’µ"Æ5‹Û/71±¤ ƒ «•”e4ƒ‡9‘•½$B7[ÉË•a3ƒÓÂÈ:ÞÕºJ!3Ærò2qh÷üØT ‘Ø:Ÿ ‡W}¾â>³Å_‘¶sÃwOgwþ¿}~,ÿÇö]mËß.5þDþ_ßÜÜ@ý·µ½±þx{k{ùsk{ýsþÿ#>Àå 0?m ‘š[˜?]aפ¢Fj:ÔÌUO¡Ù“Ê–â ]Î •Ògxkl.vmñOòàJ‹UzRÝ9ñ=å©Q¦åìΉWÓÒb gæ·hÝÓ©¡4<Ä:âAñ }×ÎïÅ©'B|mnKKqh×ÎnÅùDSæÄprêÎ|øœTÔå\£ Ž,bÆØh íýk•‰ý[ÝÜû‘¬âjḤ8&ΩŽ@ÂEÄ‚T‘ø/?“¿?Q5.¯S}Sì?´HyZ¼æbáЪ³#JCZû·\|c“ÅÿríiøV'B|KÕÈ *“ÝD “„Çc™ æÈ-É"±ÐXj©œ#Ì9SN ÒH²NÆKì¥æµ9¶`·B¤¯ àL½Ÿúf5r,XÊ”hµŠ2Öá™R,0© jß"ü“̸@Á/°_”ë ¢Ö·4ö_iAS™MQbq–Ì Â¶E% a æE¥d8Èë”*Q¹Yu¤; QÈo"]3Á(RkE©WcqyO¿¡ÆJ<øüù…ñŸ€åKÒÊêoáþßãõÍÏûªþýƒÀ)ŽLñ«EóSõÿ‰m{{ýñÖ“ÇëTÿ?ÞXÿ\ÿÿ!Ÿ³ ²šîH d¬’ Z’â—ŠMè[ƒø™ÆAÏ¿ß?=;8>zŽ„Øí¸çºøîô0 ‘“º.wVWÝK£¢«ÂÞ oFE¶úïIÖŒ‚­Š3ÛT±^£Q>4UöqõÑÚdû8xôáÚ¯÷1ªUß‹CëÂ/õòäP¼¬lSúå†È*&V¼žùm´É’SkëÌ|Yçe‰Œ9Ÿ¾Â“6»ÿϾ’[ÑpÖ-O¿Ú8Jg_ÈG '1Tªô¬mhvqe|>óŒI*±äÒ]¡.¡:P¡ðɼPì æ¬§²ž Þk~p§åË£ïÄl$êÍ *’(ß1ÂÞp* M1FY'¯ôtdU• H¦mLêVL}QS$K¨çêÄQ«Cé&¶É9ÂäÜsNiå´Éä Á½©mPê„«g8‘Ë£©¼QSZp^'È‹uiŸÕ­`Õµ«mÅ«‡.‘xa•â‘CÁWÊÁ;HkDŠ»__ž}õðÃéÉ7—Ç'ç—üû£Ü=9ù‘'Ê’"5cÚx FU^õÕ£^WÑ€fâz¡Ù¡Ö׫hÆCß6 tôôȰ¦Ÿroÿì|ïà4¬ÿ⻃ýËÓããó²í6~oÀÊËOzܳêê_WÿJ&BÆ‘ËA•ʇ‹ãð85}–dcyº?Üûfßßí¿>ów»UŒõ¡‹G˜Õò OÌ—¦©äÝÕƒ×Þ×½+´ŸÕoÎþÖÛô°N^ù3ÆgOë’Ý%fV2°òýÊÿ6^ý½Rã/Ãk·Ö?ã¿?CÿÁ¯áã¿õý\ü·ñdkmc¦ÿÍ-ÞÿY{²ýÿýŸèüU Öeï8®íHWr«/Ê·{":{%†ÈE¡ÏÅàS˜%ZŸˆÈhyqQ,Gë2:=½7ò"}qqñpý"=‘=ÙÃí}É·˜Ygèõ‚{ùGë³GϹûšç\zþjøýþåÉéñîåÉÁÞåîë½çKSí–¤| ¸"K8¨òè·œ\i]HU*¾’ˆå"=x”8B-W49SÇ„W"&çsl+,½Øqõ¥rí܉ծXªy°- –Xºg ̵¬»¬áH/‡§/ÏoçÀxª7¹¦·οF(TöTšTŽÍµ.$é5†#Àw!ü2@r©aD?FJÚñ±´«^ÐNŠ®hg”¹RÅÚs~\°¥ÿÜ—óÆÕ¼ÆÍH™spØåàðøè%±ÑR½¤Ð>]7$]7yöAh‰Ø¾Îþqt|rvp&ð0 ‘è@¾ ‘É3áÞR[°¼ˆè? ¬¶{zÀ„ ^øAdnUSx,Í 75€° *‚øHôbŠ„AX7h H Zü¬y;ÞHI2äÖð½~Ù ïË’ ÈÊ ˜àð ^ u¶f͆+6Õv[‘~ò ŸQ¦û‚¬ŒÍ{fhwÌ ,ä†öܯ‰8³¾š€yÄŠüƒÅP™ñ¤&-c6‚ù‹3aÕ+Û©„C‡LSQQÒ>"¨´=ô¢Ñ9ü‘dÑ{³…ÚÎáüLJˆ ¸²ë fqâ Vú²{é]<Úo¥μlVàÄzŒjhØýòe8ßa8›o0x²ÞUp)ÄS{Ï%7¸ XP*£Å§b‘ #ša¬kÙÕhè¨XÞQñÑ tÙ‘¯i-¢Ixšús"Pôéxbå2vêZ¯Ì å53N,°ïÝa_´]¥—#YË¢{T'aìNGeCß³pf@/¸šj ¨L§M~Lïfu©ôO=ýT…ÍÛï’ªöå)x³©È,¬Í{Q@/*;z⹸â Âé äAèšx"éÀÔ{ò”aÚvV¨Ã¨ÈõÖœª"6ä®(*äðèì€i­pEUÞïZÊ;P× “Ê+ó­Å eÄ‚AxW”+•£pð%Õº—6½¤&Ì·'S¦wÎpÌXˆ8ó^\)ûéˆæå›‰©5G`Dw²ÍBŸ• ¬D{“‡'Þ°[û—ž´VP²G£z}1²09öìÖ$±Ù·qÉÍ-÷–ï2…t…¯Açä£ä§>H)B„@ 3A‰Q"Ö4ó_Vq"z×¢š¬ö³.¯|øøæmÿoƒ¯þë‡G¿xÞë=ý×Å…üÎù &ffË![ôd}c ’9gX«¤1•;ƒe±*}ËüF7Yí“ÅÄY“hÚa $"¢ŽµÇ¬Ô = ~i/ÈA¾IΚär{Ûmêx]‘qœ†"èeTŸß—ûÄÅ ¼ù/VDD@fFÂnKùô€ç'» —Ôðì__±UQ`›~Fš ]øô'Ñ‘„6³–ƒçŽxÄbná"ÔŠ±üŽLAfó0ˆ(Õ5Sˆ¯FìÐU Êq§2ñ«É\#œìpÐ Ž ’ÙS>fc#ä3šÄ±åubßÎúó¾¹ðöXx™AaIS‚AH¡ y½ðQüú *ÉxÇì†6²ü 'oÒ:>ûÎö*ÌÊñ&L(¿"û_c´@›uÜѱÅ]7´ÖÖ —ˆ¬HÅÂp¿ËuÀ–ë\ g«2 9}~þ¤²×‰˜é'GØÈô"yt7¥ 0ƒf!Êcôµ±£³7Mœ³]ð̾¡bXX°ë;)Ë> ëÓ7‰ü¬¤ÓMóBU–ãŠc³JIþ˜.÷x½{âu!Y2l0b˜+s:&Ʊ݂jo¬XO%‰ 6ß‘iqùɇ§‡¯O‡'—¯Ž¿Ù'4ó|ox>Ü;8}ÞV».¿^°0:µª<{|GùŒìB¡2Vk dbSB2t’Ç—'º8Kz\=¥·á°‚°Ï=ó´ þE>Ú£É9 ß[¿ˆYqÑçî'¡{W«>múç»ç‹‘ƒE_ ’-z…°k¸H˜F§{,›åWW)Á•Ë›+$ ± š°ÝÌ'e}|´+Ðëµ°ÅÀgÁyª0sH“vÐÐZñle¶zWUÒ±&1X+úŽ^¼û`˜Ò³Ýiä)»®Ö'^ëôfžOÐöüÄ‚`jB@sNuwÀ«E3i3E×3N)D·K»²w¯Ž»0 ä„×)*;”ÒFÂt`˜^J¬­HÙ¡ÁøLBy¡ÍDâ`\d©ý8poNóʾ›ÑV±Z(41LC%)­&.èJ'cÊ2;¾-æ¾³€éŸ)ô,û4N„B^ ¯ |`Z¡r¬+¸9Š™ê42¿¦žéúâ[é’V0iÈH>dàNìYêÉ.)ÛÆîˆœGä.f0¯g }C?.]3rµ©›ZsI#ö >âÒéîÃjã<øê…r>°7·}AgÙ(8ËåjdÙëË7ì² —)7ñîò–|¯Í#‘<ò“Šù¤>‹p]™!©°ÿ„¥]«@:–Þ§öÝÑâ>F$界l+ªM(B“SQñÑûàjdn÷÷ÎOáî¼À²¾-yèÊ„3ÇLéÇ—4󥟴ŠZT.~è²jOô³ôôéRG%?÷a0Ô8^…þþ’B›×Á-ªTßP  ½¼ð dü¡"IŒC˜Ÿr<¼+¾!D¬›+©™aŒUU«“ET/`'~ò^ˆ±ó”¾<¢ÃœÐùd_kVÖ Ç·W Šþ™ÄŠør”* ‚í#í«‰¶VŽäBÅÇÆc­¤®/¹˜â²K,{þWPóŪ$òK(’ãy$¤“ÅbouÝ[nFœ4‚¬e«t8sV¹ø’Þ2={úe:~öæé—£ñ³·rÿVQÛ!-/­=Ý\_ò9ÃïZIª‚޼ŠÖòțưhr/2óq¤°Ý8Áh¾öÒZÚ ¡-‘¥yµ¹D¶Ag˜`Qt¬5®DÛÚü>{ Äw¬ö$ôÒ‚ :mÅ‹Sé‚Q°uúöùˆñ¨ISDPÏ$ˆN[!;ò±)íy4pÏvA¨_"9Û_!ž[-n˜õÔH™0X¤Æ¿‡ EÎZD?i–+ÍÐ­ëƒæ-6ë©ó#©·T¨Á¹ ‚#È@5 2WñZ¯4ïß«ÞÅ…ð‡Ü„ÊÌ%ÞqAðï•|VÁoðíÈÞSdx¤im§¸$às•¤Ã’î{ŽRšàpvåˆô 1¬Ä€ ˜Ý—ûÛ{Ç<Èmmò ´{NGU˜Z2Hè„wˆ(ÍzáÕ›C³KðïovOÌ›ã£þZ3j¯yе¶ûK+fP«eóvwçÕ²9æûˆå¹ô•n·>z¾ ò„¦OŽO&©ÈîAÜ¥ C¨ƒ–aÞà?¼èÊ·Ììì)°Šõ™‡!Ɇº q}H”þkįQJ“^k¤+ãåqÎê®ÄG˜ÁÃ^•lÇǃz kùÍN¹!ÝÝ©Ž· ôí´zŽäC—e§˜¼ ¦b¦[b+33VÄG™®€TKëBŽXa4VÁîÎtÒmCÇI-‡!SЪÓ¤GøC°®½…ƒPºBF@—¼¿*áûmÄ×—"ý(\±<ˆ=LXít8Z@é«£Æ+wyQ¸Ý1\Ëœ¹£Õ×»M¯8ÛH)`Y.¶ô<$¬"^º®N@®X]Ë™À¹\ý´M|µÉ0x<¬tÜÁ €Ÿè1{”3¬PHˆ•Ñ»L©¬t’+ãñ5n@wÂÓÁþVÙÏr4â3ºl§ôÍœ1¥°º G)CgÌ!? ű  k°<4# Oƒ rHǘÆÇ.ë©—Ùᆠ€ˆ•-OÕÊp*1X‹Â/•+g0*°ZˆÏS\Ž©`;ÚÚe#Òø™ÐÏñÉöÉ›c¸ Wƒc¦¬W+g á]K 8FÀérh¨Î‡ÎÖÇ$Â0ÂÄ»k†ò¤R`=B{ÔJ/T]ŽèÇñÙ—]HùλÑK(Ä–]c,FWÆAOá¨4¸…uK>Z,OÂJFñ4ÿI˜àaWe °á\”Ñ$Í舀Œ—…·­mSçU1DÐä~)¼²”3mN¼í7µ8,æ´|-&£*s¬ùÊÏlÏèÃEªÀRÚÔê1º©ªdD“ˆHlpyŠ{›µ¦=^%9K¢C-X¼‚À,çDûEws[ï3®0òJW9G ‡‰Lj)Fñq æîB0e•ñR/%FñÕ+ úÛ®ƒs4äMή]tïB¨jù¹+«pvúWÆywwÿðÍÉÑo˜R¸pðë~ìvènÏ’ðN'ÙrÇÁ”Ž“$[ŽèX6_ÁQù9³‰ërÒ <òÞÆjU³²O"6¼-†UfòÎìø)Óm‰¯Xz±ëñXÐZ—îE™¸Ú:mÙ †oBfóE@JIDR›Ç €/>:fru›`–ÏÆ0–]z· ó|¸îªüÓ†.ãªJ÷Zµ{Vm„žO  <ès \ùg… ©C&_/ÅP!^ (XE:cãfœÜPltÅ«ˆ!0oE˜ï‡7/MŒùpXXEƧ‡°%x¦n'£¢„ŠŠîô±òǶ2˜^lB$ɶ‘P%…³ñêC¾ÈEÂ[,DòLZ–ÙþŽÝÕdŠå¤(Hà Š·Q±d½’ál‰J¬ÎQé“CLÔ«ô].t¸y´/DGª6Z—­Ñy·¿\P"²úF´Â-ÚCF{pmFƒÓ‰cñ»iáêâš…¸n5YJËû¥í¦ Ìq.;j‰yï+!ê Ÿ×ûÎîF«á®L¼0šÒ¶U¢8õ«V@vŒ…z™ Ë4·VÊ4‘ÖÄv¶.a éäÓXpìô5Œ ‰¨ >¥íQËæÕà ³©d®U;Â8¥«ƒ„Ø ˜‹‚½¤RšêÌTâV™áΠÍÒß4#£ |ŸPwûÍÉ«:™)§n €7Q×;t®Ë¼Î|”˜/í…/æèöÒ6+¶_¢¡¯«|*°d€Z¦OA> Ÿ4de‘éNúÂÙt„!}ú8®®-?^®­š’ \Øú©Ë'JXŠ— ©;DÏÂò¨RÈP!Þ͇ᇨu.Ÿ·.»t¶vii‚Þ”'žtN‰ýPÐEÐÓ”\zeAoìLD³¹‚Æ3X©Wà.ö&§…\Ŷ¼ïXYåc†!öõ `åN8£Px_4p¶î9r'­ãà»ÞÑDñ«á2þ|óÿíÿ_8á’]n]þËâ¿­iü‡Õõõ?`ÿßÕµoöÿÿŠ?t”›¯éJ4›öê«ÁϱñóÉÑvóùîñ }¸[²¥èpíì5¶÷™—É~±õëÆ;‘ Z¨&f1ýÎQ¨ßÝ-uZã±'åïMPÚ< ñÍ7ëéùïö¿îù4ÓÿçÁzMü¿<\G,8:ÿkßâ?þKþ|g‚7çDrŒØ\bFÖHL ¤ÓÁí°LXb˹ã6™?ÙêØ ¯…-í”MíïPÁßùïGü÷cþûoü÷ßÙÕh•ÿ®ñßkj…þ]ç_âŠôÿ~dÌ ¢úÌ1q Ì ð•-1KÙí·1&¦àÂ9ƒE¥T+m0E5«jzÙ†øÐ,„´oÊ„Û YH³ÂŒL5Q‹}ÛÈÉ4Gî̺¥³ÓâlÖ T;óˆ·†Xf™×9p$—Ö%¾ú~œ…óÅ`˜87ÀPÞJÔت·»D—¾9!†çy»}t´½ò®b5ÐÊÁ:së†÷ZWvèÔK²Ø6ˆM7: ìG­þ˜¥ú¯G;¯¨Åív÷vOÞaÒ/vOöÇÇæÅÁ‘Ù¦ú‡ÛG'»;oö¶ÌᛣÃãMnë¸qBÆ­ÂO‡Û'¯èÙJGmº ¶ Ãçz/ðÕb­Ãí·_6¸Ñ”¶€ ?¦hHN¢GOfQ¶?u8ø}ÒøywÿÅ?{Òµl·P¦[…í×'ÛGüôûÍÉ‚_é³¼u ¸åÉ 0û^ÙöÛùÅÛ· ;;xÜÙÁíòëƒç y¡?¶4ô¿ä'zsxÈ?ùÙ×gzûî%£¤·üÚþØ*n¨¼î™®%Ôë¬Duue²X§¿bQjpÂÂÉýÃó°Ýà2ä±AÃߨCs'СÄÝ>šêðhº¾_\¬ÎsWÎÇÖuÓó¸ÉÝX]¬ð¥¶¿éÝ~j+Z€*sùLŽzÒa2h#Ëq®Žƒåucßäµg ˜"=(5ê<˜<Ÿs 6EžæÃ:L“{üÖPû©ÛPÓ”}„ ÅÀ¯ð+Xþ+~á«»oëÆ_½`Ýý³[ ÜÅùôw¦Ï©^lkºœá¯pˆŒ*êÐtåw“‘ÅÓµZÊ©—‹þš‰5¬óªÄïÑå&ÜŠÑÐ?ì.^åÏåElTÈ3ƒk6öÚä²x±é+ÿá„_Òqïš]²ªlZÑmãÞ‰/T¶À‹]„3+.z/WÔÜF¦Ôz™Æ¦¿ ÎtTͶ½% ÀV Ö¥–#LŒ%äûVºê©º\]Edá,ž©º³°Ý"QŒ$ú¾s¥em¦„úá›d¹(«U¿65ûdßé8M¸Ø(çV©nü‚Ê«²NF~õ™©U.@L}ìJûü/í'd®uƒ¿õ(œ pÎî§”ËV¡jõ_ÑGð#:¬zþ‚ƤóðWTÁÆÿŠ>3äþÓ°sæ?ѨÞ0 ¾¥S@†˜…¨º™‚±¼íÈ)ï ™ª…ðÀÕ§"þw-ð´ítå_š æ«óäèUˆMCÜÊ›ýÌ|¥5^Î Q¼‰0$8|u°ÿ޳"g¹¢ÜE¥~žñ p‹Ä·I|Þ—`bZ ¹ ²nÑ‚Ž)o˜áì%mP]a8ºBfÞ'<ž ®šà,4‡ðÖÅR‡œæ~ÃZ¼½ñvD×Yön ê²ÁC6g+*˜€C…E‚>@Kh Âʦ`î+›ç~gNࢩùe}ùáß+ëËÖË0{¹ÿFã«Ø7EÝå1lg”k½;»ân|Ú°ÙD#9¾N‚Ûb¶ŒË|c mɧv’t`*·¼ÐøÚéú7ká¯`ÿKÀÿùsþúü-ÿÃÿ‚ý×~ñµ—f¶ÿÇ:R@Xûïpþ·Ú£où¿þ%V–†¿¨Û8ÊiÅt\ÊLþÑîµFÔki¥P@­¬‘rÆÈÚF „×~`%mM§Ù2úšTéå¤ocgÃÑÐE¦Å-ò’MÒ{æprÚ£+Q3€q”|¼I/$\ ËæØuo˜¤‹»Æùð­ÙNl‹ÀÍ”lP ë_‰XðÓù M\ð¯ši£Y†ÚÎ{®67q“)vž!¶1Ǧƒ[˜³Î. P'ÃAW§þŽvW],9’‡úYv8¼øðúæ äVZl å"LêZn¸",‚Ù98|·»ÿ’Ƽ{b¢¢ñRǃw½b=~H¬EššméÞi]žŽºsz|½mV×j믘7ÇÛÁ¬@d°³q[<²[Ú†XÝzT'DQu‰é2ßÄNÆwÖ«¸ìÔˆEÿú Q9+È–š._<¥×g† ß7ßnïž4_Qd¢ÂW­î˜Ëª£6Õ¡ÓrfÞ"ø…ƾ :š˜.x[‚ú²ù!DJ¥I¡\’N9xûô©ù[Ùµ[È ådŒáÛî =îůÏÚýì+v¤ñK¢H‰É4Éñe2ïˆKįÚX1¼ Þ%£Q0U³5:çrTRW¤Ù|sÜhþ|pØØÏ¼C–½¨r¯{šé$…o¶m6ëd÷u£‰óÊ;†_´öñÞv/y¤Ák÷Š)gÂMç§7Ý·¢urZ3²qnÿh|€ núeãyóâ†Ï“1¡´ ,¹*;oŽŽÇ™*pìfP5„òÇ.?Îè’£0]q¤â+œS8-SûœÀa¿GHÝΗEîøöµ7Œj¾Bãíëó«nÿ×З¬¢Â54AcÒ^†Ëd+˜Ì:aOžï¨}üq¼öc8Úg:껞ŽOŽ×IW KTeÔ¾ªØI>ùþ¡À,ÑWúX*WøQž7 Ùv_7^¿>ø©µ{™\¿¾Ô©º‚é:eÌZ*¥ÔX©ƒ¿úåòôü¢u>¸o„¨ÿA8Iº>FB\pÔ(8ž3ûÙ¼#©¼Ù­ìKdöÕÒéä¬Bÿ#dEÉ`kl‘¼Ó ÕrŠUEÕÊó›’2Óí­Í*‹¿Ö¨Ñ›Ú”r¸o;ožyÐòŸœðT ~žùMÙéÙö>Î]a™'ö1¯±a9‚ºì3¨ç¿ßKú¥´‚xsã?ç_«6JÁŠ}ˆ¯/÷Ù¦¢à{'êýh¯ùÓöÑîö{ zØ{Ó®þQ¯ie+¸ß' ÃggÅ)ÚÁ¶…D£{»ûκ>nÍŽ§iiæÕO§­}ÏÞLJïšû®5¾â¤Ÿƒ×—GoñíùîñáÞö» ‹×Ûï~ Ü÷fU3µ©;MÛÏÔDóP@˜&“è³îo ÙzÍ”Ît¯×D¨‡  …ãá5gÉí»‹ 3»v©×=KÌ2ýaž&˜z¢!½›1rHë)á*JwfwçÕÍÍdÚ—ÃÒôŽ}ãUi¼ŠÆ‹å ode½l6‘ Į̎uEҸܮc2Á]"êɨIh¿yÖÙ¿¤=¢Ü³ 2KätrÞ<º×r™Y#iɱ楉Z–pi~¢o6ùNÓeÚ‰?_Àš؇ÚmR¯ü)zͤw?zÅ#Ï;Î=ÖL“]ÄM¹ë3eõè5Äƒàø€ÍN’IÒ‡çè»­ê2¹4[ÝN«ß¦UÐ«ë¨øÙ.㦰ßñµÞÔÈó =³„`]ço*"ìH(X„AÜlÐ2…imv9à '!ªn;Õ½Ÿl4›lvðæ؈/,¬º½Ý×»ûÛ'„+ßìì4Žw ×h¹…ZN©°jˆ(ƒúåÆdØ´Qn Ò Ø/é4Ç“”().I;AûÑ”`‡²A%K~MÎÎ@pÙC¢N—Û™c"p×M›ÚiˆL¹ë¦t/x÷¤fÓrÀh<#6…vªÕiàI”ª´I„.."½ÓbóК6Lg í O{ƒö-‘ò ,Ñ·“þ véUû¢×‰šÖðŸÍÓë’·¾0ò˜Ç„t¼üqapúDbÁéË+‹ ÒO—–›6×Ý$Ó›¹¼NÁ&|,!’ÜXO ”ð æ«4AàÉœ§Ö€¢¶4Le˜=(Ç o,¸ty ÖfÐ.aÂÍ1‡w­´{ƒ4i"p§Ø 5UFÓ„@Ua×m¶Áe±~aïý¹Æ¹YÍ™2¿$‹?r‹JË Ö–Šö,$-$Ý@‚îφ¾‡Žjj†¡¦ !7@­6mH°¦MĈkm©‰0ÿfiª„¯þômBó`Mš[²ó•Nå—_7üyf$ÞÈ»à‹\w÷ú´•òº•¦–Ñ– ó 8P%r®=¼Ö„{Œ–{Ô®˜<@Ñš­ñÔ´ƒBJH™UvkšË–#:l]^¥ÙbµLWãÑÚÔ›ujÈbbjjÍ6ÕªœQ6No*ÅbÙ¯…ì œÙWdS™h[Ð{6Ã¥–jºY™ŠS“¬(áò‰öÃ5¡—6n “]²·û‹ËÏø25W´ÈÆ€ŒÍ9R]ÒÉ’„ÍçGºV]oú¯98Ó>´™Ô/ª“a¤Ôõï9Á‘ÞUÈwÓŒ m½¸¹}†vFKˆÓ¬ÜèÝmh7Z¬°DÜkÔZP˜ÈÊs',¸]H„·l*Ë’Y4»¢Ò²Åsz`P„æfµEƒà“ƒœämŒ$Œ‡nÓ¥„ø]¹êvÆþ–qÌSDë*ò!’šÝî ¿ÓŽƒ°HiÀ¹V}€>.¥ùô®’ÅÇ›l#u ø ›Ì1o Y»'êÏètÆlº<ý²¬(­æ` ª*Ý6¯ªæ­YZ1ÆUËÒ}A5"õv’t› ¨Ó,îë8ÐßyÃÕN£ðñh‘s¦†/Ä=gËmb9;¼Æg½Ö9å8Íü¡Âä2ðhìfœÐg)Ñ´[µ¡ôÞº—Ñ}£µó?BMåX "ûé`%¨2Ÿ.¯›ŽA›jO²`Z œÃ„–Â=ðcÑnH)$΃£©a6ãÓ UÜh4wÙ†&UBÅÎlÃ:¾® Pª’©™ÏŠ-Òž²‰ž¨„Y¦3\3¨’Ï YoZ´ÚS¬_Òä„5}˱-[mNâN)äŒr@‰™£[ŽÖ›YMºÌ…<µx:K5dÞ+íÉç¹Vš>ÍmÔºbÞÛÑ[™¦€e†Ls­h›/» ›JcÀP1jJ8åU{ÄÂGŧiŸ°šÐgƒØJÏç–ÙË”q@ê—qìV’÷Ÿ_4ejB²/u@¦Çß½é$-ÔøZcôÌ+§Qv¹,ý9äÕ ëFÕ’iéíÚâ¥ËŒQÉ-GÍÉ´G§uÇGð·›1ŠÖùE™o"fló» Ÿ‡h¢QöÛT±dYXîlÒç¬3º[<ÃÌé J¬Â¢éR+FGȦJbªÈ×rÀz ¿ýgmÈõvrô¦!(6HÈ¥šÙS¹î8à{)ÈC±$Ê&^` Ô1wHƒÃQ’) »-©±ò+´ãýñÔHÐ_ â ^/¥ â„›“áô»Îà*. K話1EI(h2Æž ¦Ž^îȧ·]O´?tEZ, Ú‘Ûm ED»>õU¯ÓL“ùÑ¿4ͦ "¼ÌØ-ÀïÝâW¸Ãf28Ó'ºO‡-Ì 6 ÑËI¶VÛ¾ÒÜ…ÊŒ¥H€»ö:T­¨ `ˆFjkSbéÛ{Ça1þmV§ÊÑÒyù;ý¶¥Tj•ÍS¢ÇgÏu<—§k·>µ[ŸòjŸríV9ÒX;H„…Y¾(‚‚Š^ýÞ®\|f³G¦”XÀFtr¿á/6k÷Ï?¼yÉ6ø§¸2¾Z,n¬Èkû\4]«¬[E ûnïƒq±ºéþíLÚ’U)WØH•ã> ·ÕN‰,ÿØm™j•#×'UîÇx?tkö"æ ¢pã6 ‘ì~ÿå^£Iã~yòÊÌüóp5¨#“…¶v÷ ·ô«ââš©(¿øÚTq«ƒÈ-þ`ªøëÆëƒ£wðÝ~Ùà”V™? ™3ä1yít[ÕÕQ›ÛÏ›¯vf¯‰©=â69Ç7 áܼ¿îh|çˆæÞÎÁ™Äš éí`Hp|²ýú0g©jkC‡ÄxÑ»Y$3^3bI/í° i8±G;fŽ6'îgíá#ôCÓi³•.®HFr>"ÄPÜe['oBê5ãÏ‚)E`ôGLþÈÀA¹`þúooЄÑÈN³iêß¾j5šÛûÏ›ô´Ÿ¯WKŽGˆCVR˜÷blݳ’lÓýüÍ/Â=«Å)oü™ž¤›MÄ>qúuy'Ls­Ï©¨(Ê¥LúÿS3çt_‹º‡-Â×,ŸßjkSã¨q嵯>ÛîmFµ>kTü÷úÕØ´õÛŒðÁüòßþkÇYá.æ¶qtôúø%(ÔùJ§U‰Í$á¾ Â6”ìKt¨é‡hƸ\™}¹Ú·X4å°×ãWoa³wp4¿×ß&kqi‘¦âΦ»Û©dŽ¢HEÒ^’ K5zòì"ýúŒ‹§Ô >€¬e*‰“iJFÌ;e1»07cƒ[×/9L_âäòv?woB$ÌË-¶qÝ”e­4MFΈ߳EÖþH¾Ãêè›_ÔWÿ/›»çkzÍ÷ÿ©=X}€ü/ëk<^},ùÔ~óÿù×øÿÌ’9Ú96ww;uã·¿òÑÔ–ÿÎyVj«+kÌj­¾^«¯ÕL§u90OCs· Þ@ 7´*áðì†:ÈŽŽtªçƒ1Η(ç†ÈäŽâ<ìˆñµ\‹æ{í%Àw_à`ôeþE˵Œ‡‘u0º…‘õΉ`$—`è†óþºÿÑ_v?úbï£/p>š»Ç…y.HÝŒ¯Ñôî£z6ÉíެÝ«¤åÆtÝ „ˆ“ãÛ@·œ—¥-YÓx[ KK’ñÐW4)ç!´€$'´J‹Ô´ëãñ`h¬mªóý Ŷôü°·½ócó•—ŸýÐÜys|rðz÷?ÁoVÚ“t<¸ìþ¦+©Î*@T&/ô9÷"­xË@ÂŽVXG …¤`8äýD’ÀS2íBAÒuS¤Õù Ài‚úœÕS Ž&}ö“1<´ì¸Ð6‡9»öc„‹·"ËÅ2l̵±rôŽ=â›ã²)!ñ÷H£‘2§I»a—u8HÑÊy‹­Ž©Q,+!xZhšc+Ê„üîh÷h‚Màl97œ×‡ËæíÒ·/I—Ç .¨hU:b]% -»è_ ¼ÔF¼ì€ž¤…>»ô`m|Jk·OJjîî³Ä•Ú;OÆšuØ´Ú0¦8·ÒîÑ©,ãï¸}+#+!ÕaÅ$å…ÒÒè”c;<6ۗòûTønb!Pú Û}bâÂèô»ïð¤D.øˆj­hÛ6¹Ý°1ûFidªÿšá•Oè)X’É0œUÙ? 5¨Ö˜âÞGd5Þ¹AŠ„Ÿ0½Kï½iüû›í=³Êå°+É'øо˜*üò¤ñïFÚnÅh4磄¯Žl=ÔXË«ÁIm§Š_¯sqàLɘú!¹6%ßðÏ Gç)O쨱}bpÅ—:”ÛÖÝGv‚‡²`Hʉ*’9ÛZÁdk5~2¸Æá(ùÈ54ê¬*/vŽOÌc®ó‚º¢[·t’OÓë°M¥ÿ&ëÐÊ) PxÁ@pÕê}0U3$¼yasmŠ‘šØ!â̾’þä²ð;]ÃQ2®Ç½;À¢Epw}î%­³ÂçÂO»Ç»'kÑ`Á›¸a$á,s{‘™„/ÄJkmÌ~¸qs¹>-=•û¼QVbÁ3UlßÓƒBǘro±0òHjD:qE8ï|έŒXâZS¼_P¶k»ÐZ)g¬Œ»Bn iUí®‚ÊxÏÕl#X)>­¸—gœ‡4Ìœå>m¢]ȼ…phÅä/ Y*ñ©…{i©|ûå˜ZñE¹¹G¿¹è˜v@Õå·À›ýAS¢zÝð( S—æRðŠ«¸­ž.Z™;ªU4xžŠ°;3Šœ¦ Æ¿D½¯7 ¹n;ŽàDq½2¬3Æl£ºÀA+eÝÏœáù2ΜÂs,ˆêÏ,œÔüzK×±óà:;†äj¸PÙ”¾¨m èù £„›ËŒ¶e±Ñ ×õsæ¾H`M.ÈÜOì²;²q«3f v ™Y(†^rC€å Þ4™òÆ—C©µmûn&^Wv>˜®ÐSÇ0F4´q”"Ì:„,O—’¿Ù+fÿ $ʶl9l¢õé†&pÛO·àÃìLjÁ['þ`.èîÞà<#B¹ËÒ•æÛtõA ’+Qa‘ Š‚H j¢`G­ëËA¿S7÷4 |ða%r=é,ÿÿ¯ù‰nÖÁ$5@¤°P`â]9ˆÁC®q"Iéiç½Á)Ñdì}a{*v%—Äüj®t›úœ¦e_0¿óX7«굿Õ<öóxÑýD—°¤j§8‡Y0\±‹|©-¯Ãg;iÏöñ˜ûX[YýÛÊÚ#³º^¯ÕêVsúh™Sä<—lâêô­IèS1‘ט=ÙX¼ÚÝI·ÓMlNù0½©¹oމCä_nhX°ŽÛ`¡1hjÓC½V§Ñ¯?Ìlóô&s~QÞ5ÎUKØS›Kžvæ"õªvˆª‹ ¤…oœœ´ÿ1Ã$ì@:0mݤʹ‹[[Y_5«ëԮπ=Z µ’5´,€ A,ʾ ôyWW­® çÒ!J¥Í-Æ´óãɨ/û&v@SµÿþàoQ›½Ò «mù.¾¿F¡·ëIæÜñ}›=5c¹ŒÙœØE–¸ÕÿÀ;ÿº5_ cÐv¿2VDIº‡ÖK“£û X–¼ãö€—uueõýgjêÖé?¿¬ÛìP€~r¦™ÿ¹Oöê‘…]öë/KdËÓôtôaÙ7ÉC?¹²‡2ÔºÔCÆ—êÖ×<³#Om±),Þ Ã} XÄ/!¦üÂkËm‘¼QéNr‰’8 rú ²^ž¶éèŽE+¯»}Žþi2tÒdÈ’¸é ¬e'P{\¯­ÎV+ö,õÕUwïåá^yºÑZÜ(aß‡Ñ Ø`tD]¤Q² â²ùɆk„È `;e¹à ¯ªespa®¾BXxóMGößIÿÛ¶þ+ô««×"þ½[]¯±þo}íQí›þï_ñG˜1L™ö|®.ÈâÇz.ª9 ]7%ifèýók ,’îyß×aµ4Cccm•¹F eÂÞгFóÆh¾VäÅm«¯f³±Ð$îÛŽ–„=È9±_å§åoþ>ÿ‘οFÿÿ˜þÇù¯=\°º¾¶Žó_{øèÛùÿWÅÿ ö¼ ‚ÝsLéF &iÕ:+µv›h¿‹ñxX_Y øåt0µAãŸ'Ëýd¼"Ù‘Dî^6T¶5)öŸ9ËRÅÌðÂ*kÿta?¦´¯úùÒPÊùá:¿,ý°ô[ÀRïÖdÃÝe,VëjYƒï›Üͦ©mp±‚j¹sìjyáÖB—ú×6²oÖ6ŒjÚ´~cÖæ`÷KÃuíš®¹_ƒŠ²¼]j†²Ôþ‘ïO\¨Â 3¬}ÿ=ZÁßüõûïËæwÁ_ó½Í]‡gÜGöŸûdT¢_*?•ÖnÓÀZÔÀšhÀÄ™Fp‡ZX³¾.*¦Àû'hý™©¢{éô³š/—ü¼ËHSº£/îà4¥ ñZÙFQê™A{U4ø¹PbÔ õæ¼e,U„¶&ýøzóá.…:ûTöÄ=¯x1RËœv\º½ #¡1e£•|²¼l yB ,%\£¢†¶Ž!ÙQÉo¦õ‚¡!šK¿3–ÒJŸcüñsÙ†O`£åTÔW†ýŸ&£@Æ£òVêo'ư|¡¨ ¤t™ »Ž}°¢È0i0ŒPªÎ‹ÅHÈÛ©h\ ðMÝÝâuïž\ä÷ØÒ`Y¸å©ÜÂ=1ç°¦…{ˆÃÐmî .»cW›‡@GðKg*h¸Ôpq:NEÛÀ=^°Ê›Ë1wÐêtš¹-òÓŽ#Þà{™PsÔ¶Wf;l‹$½b¦Ž໕ ì n+0ÿR@ЈSUF•23aƒŽhúÆJå o±%k>$ש DÝ´ŒŒ¾U̬ÜéÉc4X!l:¥HÙá..¤ÏZ‰Êq#üh¿Y“•’·Ù¨H1jMFWR~¬¬íXp*Û’-͸À­¿øl—'X·i Ž}Ú`M¢¨ƒ2~÷k8ÌÄÕ6PwÃ2^øÎײLØêmx¨Õˆ‡Z˜°?ÉÅy&l•™°'«•ùl:T‘áÌ8®‰=ú!Qx÷`“ê:o‰QÏÀ0tèPÄ3iï™ âG U{y¡S’¼iÄ%X<$‘Pxˆ+Í"ž«‹+©¨å¨B´·)h¯“íØÊiêèëQµìóÄsÁ0[ç-£+ÿ&‘æ´¸¨¢û]‡îtebQ`H¹}a«‹€ wS¼%"é´Ñg„¤ºOE=>š5Ù Ì“/X5Î(E ¶pùe_dù<Ž^š–ŒÃ%±á [zØ–Rb˜Kññ²‹ñ¨¡ DpŒ¯’¦ÉAgY6ËdÃOVì‰Ë'ÉóohwÝêl!‹w#ÑÀ ì–Vü¥e´´Qtt%Š ‡HÅ“3b,äQŒÞsÜH°fîŒ$wô}cªšØ-Kµ˜µ H½Ì&:Z#w¤nXhÙ¼U:V<5ÄB-NJžtøØX«%¥=ììlØnP³ ƒ]Ðî lÝÎì6 /÷Jô ­p?çÚ¶øUq´c…r8I{ry1ëáƒ.;Ì-= v÷)¿¼ßøëÇ6*(/sÊV5,Jw¶p8¾½ëàú‘Ë7huÆ ñmzÈF†EZwXÆK]Ñ@p³s¹§p8„¤¦ÀPéE$jvãôñj¥8x Q±Û&,î©yW¤1ŽÓ´€ 7Šýû¦¶¤ƒßé™ÑŸÈ!¾¯=[BLˆ¥Oæ`ÅCàI¼(UX{Ìò†FÌeÒê;~O 1ÖU•§’øìI*ܸΫþ:¶R`!çÔÇ šAѼbªêgõ- †Gže•I ÷Çû¢›UvWÄïÓ=eÞ;Tç%˜HŒ•¶@ÏT6}¶± f‰ÕL j[¬,P…õîƒÃú“tl+A›–š<é'2¾fIîäÓ°'Îèù3óQHÕöìMúYÅÐþæþ32@¾Á•ãÃ*ØFJe·žri…gÛרÔ”U­!”Üj9o¬îâ —O8ßaõ© >|ЦÚ8ƒ  „¸®ÐLªg´W×Û;Çèx®¤Ûs¶]Ö¡h½§LŠ¿™w}³ÿÊØ&Ðÿ¢ø««ÖÖÄþcíñCú…økßì?þ%ˆŒm¼<Ú~}Ì×8£^MÞ<>xs´ÓÀÍ.äOñaØ%ÖslF"ak]øbãrƒD Ú™pŠ…í×Í{Û/7«Ï5ùæûâ–æ#ßz_ä@?¬Zëuªg-bŽ`JNÎ@ý&êDßô«6yaytJÕqÝCßu÷‰¹»EÍHªu¡—¦zf–þ§ùvþùüwû_÷ü?š™ÿy}uýÍÿüp]â¿<|ø-ÿó¿äÏw&ØñŒ/Èd<`z¬¶\[S°àvX¦s¸å‚ÆJ:¬-Î8ÆKíïPÁßùïGü÷cþûoü÷ß+lËÎ×øïµ µï"þõ€ÿ~È?2s g~ƒ*²<œÓ´¥×<jaîS3!Âþ²‹¥BŸ¦j‚Y8µ ‹ Å0jæréƒ5…b£±®Jg*!Ëò¢»íD¥§DÅL:Ë;‡¿`§õÝL+­ŠQ#X4â¶cncÝð^ëÊYq!ß;®m¸¨~ŽW¡°uÜ8i¾Þþ±A°òr|ÒݲEˆؽ0üp®˜žÞÞ-ésyeëp{çÇí— .ÑëžÚò˜ùnC¥hÿ3,׺l6Ûà[wžc›Å»wÿãW6â÷ËŸï–ð¡yÜ€6âäà¨\dó (k5]×E7”vbß•Mµmª—†è°¤^±9…ÃRÇ;G»‡'y…v÷O'MrÖr û ƒ(8·¢Èñ7›¨Ï½åáå‚hUšZ•ŠÖ ‡Gø÷ÁñIôBë¼ÙÏÖʼA½øÕé9ÕrA`ŸùÅVáb€íþ5~or)‘»¥ÆÏÆÏ'åB:Ñm'`)<ߥÎv^¿>Øçù •Cê5ïm·_ØÞÙ;Ø¡é¼~ÀǃaÓkµ™X¾|Àà¡?›—ˆ:¦SÅî[nµž2tåsÚ)Óëƒý»/ßÐ>o6öŸ7öwv!†y_X¸[ò#,.?(PÒâñ«TŒñPàá–®D… ÒG0¨Á; ùÂÜÙklï³LˆVŸçw]¼[zÞ8>!‚¬|·D{…FŠØ4»gÐxàÔåB°³\Ýmu})¹yðÃÿÓØ9A¦6ï–ð‚6ßQþ -•#@ý[¢þW@F™6*£zB›FU"ªÕ‰¨W÷º05†„ø­+µ÷|ûùs.ÃOåÂóÆ‹í7{8„;{ož3õ]Ý]¦ÿ3[¸Å›D0°U ÀÂdo‚-Æ»KÏ’Ãî²u}špl]yQ€€ y4¶³ƒ–hDÇúo4²2ï´õ~xÈô»³ÿ)_Ý}*ììì=·=öv÷Ô{ÏgU‘×{ÏÝ/÷Xe_ð<ËÝRÌÆ”oÌ+Ð8¡–èK2nÓJè¯6ÿBe=X ‚Êö§m†~Ÿ4~ÞÝqÀÏGÛM”([ü´§[Äôœlñ<Ðï7'8•üJŸå­;Í[þ—|Á•jßËõºýöG~ñöÇ-Ze<îìà‰PÎëƒç y¡?è=¯!¿ä'zsxÈ?ùÙ×gzûî%ß‘oùµý±æ’ø¿ iÈo„¿å«\ö›%´ñÞ%ö{øÎ—ŠÛðo¨D»Ù7»Øç-%Ä«üOùÖ£‹›ÕKƒ±ý¼’2œBÒ~åò~ÜÙ·ô(ï&ýà-ÿ`jRÇ,O[BT¨P§­œæí[ùi¿µ‡ÿ…~Ø÷ƒ ÂÀ•þÈa¼üù­_íXÜÚz>Ç ·øbHïõ'}Ø='zó±kßðÓV!ù”´›VWo¶‚ŸBs{Z›)p7uÿK¿èÄí³¾øÂ[ÒO:øI߯—=œ>n"¾lËÿ—³{Í[W$¯í¯­‚ãÿ¶ä‰ß`®þ­þ¢/ ¼m—geNøÍ¾Ø* Õ£|'zóþiù•óþù¾"ñë +ú+=èUX $/õ)‘ÊÂÖÝR,ë+CìA$@õ7Hr¬ü¦ Ô©çå2ž…-X‰l.f:!pâÄvŒ«î¢ˆÇWÃÚæ?ŒïÞþϳÅtʼnòîÞ]YYü‡c÷ÌȸÎPVÞmˆq§ë™6U¤ï5±‘ö*ÿ¹¼´R©lÐ2Ú ²¼A½Üõù^äL§SÍÆþOeY¾¬«LÿîphwjQ¨›³Å¢müËZÅ<йKVyKÇ*Š…ÙK»ëm¡0éçÁA¸ïN[þ3.úôšg6óv{ [ zÖUŠÍ\¥`)D/C5†u?g^^i;{f2纗Y‰‹mi¥É¬Ìzán "­ò¼¦Dè1ñØåBá’èèÞµLJ£ÙaBªž„Œh…f–·N‰Ø)lm¿¦±6a\¾1b!cµ¼‚e†l¦Æÿ8„Ì×·ÄäÜ_n# Ýþb[ !ÿzã¿ÞŠ#kÿb;–Pþ«Í„äò_l‹iò¿ØFÞ@ ËíåA½À¯‚nÑiBfXYøú¶Õ×ÏéÿCúÿ…ñíÞ]Z>X=9±¹û$¿½Ë‚2õ¢‡ƒéyùvؽckAŸÚ}²hˆMHÚ@Á[‹6$áf`¤‘¶w~<ÞÛ>~µu‹Ve›n8,-W1.~¨Œ¿œÓvn{áòµ±(¼Ö§ÿã+¯ö?¨¢•ãf}²øoË?µüy«TØ}Ž»H„ý|sj†½ÝãCV7(Ê;ºuìm” jçT΀hŠN’Í€(èæµF”A·¨”š’zD 0±"?ÃÅ”zAÒâ~B…eéÞÒí¸È‰ã$Fá/wï®þÊ‘CÌgÏtºmQÆç<4.[7ECMV2ãòC·C£Û}NÑù »©̶PÀßL•ç­¦]“)ìB´Xv ‰ ¦–7¹[˜woþcxÕ‘QÌÛ€ÿÛwÀ ‰/Ö§±…(E¬—Ý;𺎘;’Š}ÌLK\ÓU¹{7¹¤ ¸yÖý´aÏÍ—íC¨Œ_ðS’á80á&Ϻ…¶€ kþDÿ÷ ^þKá%–™À"í2³ºc·|'»åñ‹é-Ïîy¡ð’7Øî‡J:å<Þ›% ±PFHe?œsÕ.}~ àî]ô’ì fŽ^g=3!-®c^É?Çï^Óßl$Å h®NÝÕUßlñ½ŠpAÈ ßf7Óso+¿üºüËÞ½ûþýÒ¯+ïéÏý•s» ƒanÁoÕŽd?:+tÂÐÙ¹'på51Ä*LâËFtè¶š˜búõŒså?6ÆEs®L<•?²)T“³€ïî]?:/è[Y*‡²Çû²E »!ñÒ¬¼_Y¹ÓÙ 1P—ºYè-­¬üòŸ+¿.ݽ[©,†•·:ù‡ ägŒ‡¢òúƒ‰M¸(yÓqkÈ'½³¹¬‡¼³é€"8Ý®%Ôë¬Duue©† ýnV|1šœ¸D툅ÇJ…¿Q‡pû †vkL{hªÃ£éú~q±:£)‘‰ñÓó¸ÉÝXÝ_HƯ²ßOmE ÀÝ=äw0]8ê)”éHpôÖ¥S<ð‹º±ï òÚK·©/½Œµê@˜Y·Ÿ/Óó€äÑ/–bZ Èoý µ›º±â'—}„ÖÍÀ¯ð+Ô+þ+~á«“cÕiAéâŸÝz@¸•/Íô9Õ‹mMW4ü‘±ER›ün2R¾Í¢üEöeÅIÓöŸóªÄïÑåf5•†þaw 4>—±Q¡¾ ˜#‚Üä²x±é+ÿaljšØò»Û®[yšÿíï,÷.’¯MÛÆR¶œï…‚ õ™ŒªÙ¶·d>'’ àò’SS¤ì©ßQwp_=Õ¤EW‘Ó"`†BKÅJQGÉ?'Ý‘„kïrN²Aë¾–‹2y:s<&@Ž}²ï9£‰Fn®,ZqkX7~9Ò|ÿÎL qDÓb…UüØÌ”üÏLmŸÛˆæ(Àn€Fñ±+ãi—¡¦¯ü­æl€ƒr6p?¥\æh…oÐnð#:Æz2}`})Dø+jÄÊÿŠ>¤ÃvÎ|Yú¦Á·t EÈIJ0Z7SP{ë-Ì©ƒ‚™u""‰p} ²âßñw 9ç¼Pàõ±ë"ÿÒœ±0º üO=T5 ý\ÅC¡° 4Þ &BªTàðÕÁþ;e¬”Îm±6—æewWÀxΉÅ6óÐ1ëæ5ç|D§Á6Ÿ£77Nˆž>̵ @ò±°gÃÎ3oꙑ‡G'{E…'sˆÂª8F3o;fæð„•uØÑé1Áá OKXO€#8/ñщw:¨({š9W&´*ÏÂZ/ox@ êU1§MzŽ“KîL¦„_§?!C.’.Ë|/žÂ¨-± ËûŸa_Yÿæþß2ÿŒ°¾¾kälÿïǵZý¿××?¨ÕþÛ*ýõhý›ÿç¿(þ¿l¹P7¥2"bpö nÚ’„ÔD3ÊB‚Ë%vê„Ãf•þzl^µOíMN5GÑWб¿ôµbì/}ûK·‹±?c ¾8ÊþÒ_²¿ô—£ì/}a”}üWˆ³¿ô5âì/}­8ûÁ¼fFÚŸaßÌ ±OOÓ0ÒåÍa¿ ¿äüzMÖst64“(ŸQ¼‡±«QɆlÊQ&²…ƒñ²µ &úã²m7íÑfL7˯¥U©pC«ÒµO]j ‡úùÀdU£©Jï3 !€çÜÖhŽ‹GÅG0¶!#¸§Ä=í!¼Í˜ó7Ò$<¬æÿ±±l7ŒqÓ4 Ì_C?û€ë½Á¹)ÝAÌ\ÁˆÃÿÛjXTW8æÄ üsCšÔ­*2ú+"vT™-³%\K%tm±2ݾ„\å€<›àÑúd,ÄQŸº¹GÖg8Û–$XUÓÅGšj¨ÚRüL…`˜ãöÒœ.‡c‘H¬:¸RktÎ$1tß@©¸÷ýaëÜFXr¡ ¥aâV]­±_uý#‘Þñ¸@ êf„hË:¡œØ¥ÓsjsâJpŸv;aÌ+Þ`õñÙ«ðn“¶S>¹\ÍíK³«õ`ðÖB°¥g1 Vô;#c>wxï´>×ýœ¢%î»%N'Cð岑ºá2Œêü\+a¦€ôƒ)!¦ià_ûÉž÷ ÷6ÿ9I&IGB/¸AÙÆ8˜—·FH®Á¼‚ -‰íQ™[¢ wÜíá>/+t—“eiêJ"ÛòÁÂHgBW°D“sÍ"{s8 W‚¾±·ûzwû¤Ñ<~³³Ó8Þý©Ñ|~ðæ‡½Æñ† ²(ð]Œ1_ ÿá@3׺ÖgAqbMºsÆêa; b¶iBUz7±^€ƒ"¿ÁPnh,HO3Ôó©ì§Ýf{УۿÙâ{$Zë¨wt}ÄæËa~©GÐPÍFãô§¼ rtý¡Á×ÄžèÛLgØâ;Êጴ"j’c0æ`¨è4÷ZU :Þ}ùvwç•:cA®£ºsärCDq¥‰©ÇAT%†ôGìš½ß4Þi»(bpÈLJ"6¼ßH×F×WWão|ÕsÄ4¦65€nÔIýMû©à"9kMzQ|Lû5SŸÈ±^3¼+â! SBSÎz³Óí €nYyÓê5V°Ë[~(µø­b‹p8‘yáÉÎÌñ_f3\@ :¸¨Xì¤qôZB~tS›ir£EÎŒ*W~pEûf慛ǒÓÈY³ù1ÂÏÀ¨‚ŠKnÜõjó.Ñâ|,gæ„ӣ˗6Q#¬Yb·g4Á}ƒ‡iöƒüõ&©]UAž™R¼øáw„îz2t©@h‰tŒœ ERݼlœž4_üx{GS¤Šr3ÿ“‰â÷õV½¾}ZoïÔ;õúóúYýEýâUHÉþe½>¬×ëÿ¬Òú¸~ò±È[û}]RÞŒmàS›©q½3‹Û8ùõ8ªèr Óœ!ù$8"ÈUO䱫„ôìép꾄l§.·¶¶|Bfj'š™ç0žå‚Ëg£KË~Ö: xog2Éèe Ž}rwˆäø{QÈ©ªÅÉÅ MrêpÒKÉÿ¾ØZü\‘z„ð«‚…«Œ¸©¦ýÓ5ƒ?ÚÆ¶mƒÓ0T±)÷«º§NN¿§¶Ž¥–ªŽZBÕ¨Ç[©T©¢üM=íØJLRpéy Ò±ÅYWûƒ*]ÆÉ3zn+²­w3§ôY¶¡+oêä…«–ô†ÒIþR]Lµ¯Ë{S¯ÜƒüG _ Ëó;ëÚ:Ä{Üjö=[×’‰sÚïÛ✼z¸¾´U„&PÈ.Fàkrê‡p=ôm$UÈêß´x‡¶›pW=ÕvœS?ìõŸ¶Qr™\ž&£yÛ<²…U3¯ìÇ$@aܸM©­A·jÕr©öÐÝr:cjÃå¶ Ew¡Yã=ÑÞW+Fÿû\ø¼¥âcãŒ;²ð»qùg"^—£Åǹ‡$¼/ƒPLs¯eéNïb¦$O¯Á)U¦ˆ®à¬=ÌK=ÑŠO+LåßG¥_¤Ô¯¸WÜ÷Å”ÔxögÄÄCIw0 YÄŠ`ÿ€Íò@Ì|––*qÃA(^!t©=¨øúö"mj¹"ŠÑd’n$4cëúü1ÚØæü1Q—t‰™ˆL²y}a‘Dnñ<ùRb?XÛLzíÓåÞ‘ œÛD`#Éê>é_´†Ãk''dÊoyÙ¥7ZayV›š‹ä‡xaº0< Ä}y-²"z³¡ü²†ø•ËK"ý©vïzC˜f4¨k!)—†-É:/“_ôvÌ8°ÜSҤƒ¡ù@Væ|vÀˆ™LìkypeÙíÂ6:Xa^¬/ Eƒ Nô› >)Iá¤ÙX6¡)…ÜB•îGÂ;‚BDxî4íùnZ‘}¹¢FWMÎNmcK£Ñ§©²Õ²è> ¡¿QGÂaKiþì g¢ÉƒØ=¨ànjVóÔd×&CAî„&ybrØT8j‚ß‚ŸäJmDxh>Ãø¼ 4ï¤ÿ±TÄ8h)[p#læ¶çÙ…¬G%ÇJÑú)Ü–1£V€’åóeº?DxPm™C©»ûÏÞp’.ŠTh<º¶ G×›-³È‘ä%e×fÑ,n˜;¥òH\Cgî!Ú$ŒÒ8 qíÐóâb¤}Æ(fÁµ/F˜~eiˆ¸ìÆÚB*Pv:ëBV§¥â¢ì\…ÊÌHТõmþ¤¡!º_Ÿhœš¨N$¢Ï ¤ •Ah}³xæ*I#[NŠeëÙûþ DI×^Â/âöê½ö=¤~sV­vRJËH†WXð3öÔ‰Âí®óÂy&h“N„/ù4T,Þâ½ë!ä¿*³:Ýt؃(Å…`$漕]òÏ.¦¼`Kμ´\çxü´Ô”Ü!¬S¡.GeMå¥õønÑŸ°–eVñ°hN J–1ä;%©Å&¦D !b9^ p£e´q%’¤=Ц—Yõ I+ý¥"9›‹õÏ:é†ü<ë;1æ—þ ïl%”ÙàJÊ!¡ÁGXÓÑ¿4B•ú4*“ý\`Ô˜˜1DÑþ–Œ¶Iª*2YèÐ ‚tI.‚?W-ºd[Í^wQ9 6嬿ÚHf¨(ÀirèìüpÔØþ‘³hòMÈýçþ1þЙŠVyM4q¤€ör Nüq=p¦)œY=¹¤-H½xÞüÆÑA龞½Üèõqã$":é2Ê-“½û}!;”[vvƒ>àÔ‹ª<5^{<ƒÜ>3åWe{%ÏrÐþ¸‹IjˆÏàäiüulïfD'Æ 1Ð÷ûú+ó1åÅ vQJh i>|ç &Bb8Qýx@¿çµ¦H&¿1ýh›)GHꢆ K’~ô’ö˜¨aQëôøN úP`˜ôY[ÓT?ñ’CT’¢å•(LqV‹ü©hC/yñ?NŠb1NGÅ9Z6é—ƒF\$Ì+ƒ«™ïÍŒÓYE™b¿j:ê¹c~>è }¢b2:å! >qK·ž]:·dr1õeîuLéž$á¾.W¦ô·›÷:´ž˜TE‰¨˜ÝãyÇÜ<#òzLKX§dŠe[9Û</—‰,VÌ€à36gV ¯aÝ g?‚lÿ#’ì¢B6I0ß”úŠ&ÆÓþÞÔ5ZN3uŒYeªvZ´Fé¤Ç¼œôUty‘r´Þ¢ñdyF‘U6tV„);„XdËÓÊ.yÓM‰~Œ‹j+DË‚ëbH/ÍoÍ'q²GuvÕ©.e#çÉÈÃ.Æ @ 9#(8<øéä_¾MH*liQaƒó‚™ëe‘;}<|°nˆXMñ-Ò~G5×Ä‘¤*phµÛ“ËI“8ê]NR5!Û‰fä â}–Dã|0bH²0O Ÿ³~U£ ÕO~ú.1¨[Aåˆ ®X¹ÎËAÈR­ÌÞ3 #”Ïá”Ù2AðAža‚£÷ýºkRd“1ˆãÒâûþ¢``|^lÊû¾Oç͵ì)†¡»cŸ„y@yЇWÕæÂ.á]}“6¡ŸoJÄ0FÇh *œW¨A-m°mÈzP¢Ôøy÷D­ŽËñáÈÃU"ÜLeðºOáw³ÀN«¨ => £Dr+K+B¯nÌh‰!åàŸ…ÛøÓØO±À¤oµ€ŽŠ°‡¢˜M}—ÁOi1<âƒË„³§Š#U‹Ml„Èe…²å9´¾ñ[½éOŒMfÞËŽ–åmÊQüb¯»I¯SÑ gý0jgùuÉÕ‡i¥ÃA¿³ ;CÇÃuD«îätœxN[jE$hÐ%»5E¢g{ƒs¸³c­Û£Äg°µðFœ©Éœ Ò:.b<Ay¾æzZ:G%fcÎgØMóv¿ˆ?ê;•Xp Ê„lóÄ{ÇiÕ©Ÿ'rí8S¦îXÑ¢4f/ÅÙW"¡+ºNs±«z[<=w•UŒˆq“®óQ8x"Ð7äXp9"§X¶Úa\L'm0;1]>þV0¤F®±Â7 îs[Éôö¦>>v;BôsNjö}ßÕº%ò\°HAj9¤ÂkÀÏ1£,|.,@Ä AÉâûÕEoüEŸÄ´:YLÖcÒH©s¦bãT9ç ‹ªn à"®F?ß@Ž“´.Œ)t’e ´¹+ƘØç½DÍT¡?‘ oMB%F8›=]ulç¥Út*Ý* š¹“$*súD`À*¥%Éž ’§Ÿ\q¸5'©w@¯*Å‹še:”»1E7¢%è"´­ØTM†Ú}®™Ë?€Ì¤cJs"`0¡ÄRå‰à“Ç#òó4ål ÜÚ"wD4I¨³”ÑÃò¹Ïq] ¡,½Ö-®ÇrQ/­DHå0˨mþûšœa:ì° ³aXÜ'ý*Ðjõî¼AA’W\ª,Lõ³âó¬ÁZ>}´õƒÐÎŽsÏʉV Z‰±ê‚¦¼¶ó­H†ªÜí²]È̲Õé¬Y¥Hî®ð ƒ>áè‡Tð¢Ÿð¸“Ô£÷¢ª­­¿µžüpüô´M“P,þ]–û?²§»‚;¬®¡òk6Òd}¨Œwëî#ø"TÌÀ9ë]%΄΋z¡°¡c7“Uâ¦Ý’èm‚+ HžNËwËæ™$"xóîÉÉæÏ¡¤Û:Êå«X© _F© _¾f¬']7¦ £—yö8”ÁÓ±®‹&ªd1I¹x#Θ±ï„Eh* Ê_LŽ\©…\èô ý“ýj÷4 JnEèÙÈÙÏi©ÅÂz™–“”–ò7ÿÛ8¤!àõéè± XuNoµ˜ºL¯%Àlݵ‹e9Bb6.o+Œ¤Øë'.i¡]ÊgñŸâ{Ûܬ´`ñ’ c%ÎüЮš_¾é•Y­W«¸É~K±JÎÒp÷Šs·@`ÞŸ¾I ø ¶ÉŨpÉ\qÂr¹_ˆpN[× Þ–ew,|vÆJ4ø Id|²Jz“Þ™–©ý¾`Õ"4Ü+^Qa¼¹Ë—(8Še%Wgj2fÉÿ™ve¼ßkaƒIP`À€óÕ_7d¸“3Vá‚D˜Ù©.¦‘ß•^€³)£k<«ª«²µªÉö_±  æ9˜ÓeYö(3~"õá\EãƒÈî½?šŽ{#ó†` ®„`PžꃗQŒÄÊ3}èM:çIÝo6ÀãA˜æTl£ Ñ`AÜØìœíUŸãJ³»ËM«+R‰9¤ +•‘ºc½&d÷XtFM¼%‘A„‚Í‚*fÄ„ŽÑiçLå›ÎZWŽ-¢&µrlP²R°2.(eW€FŽ€Y­ {Õ;ƈe;l¬:³È|´ð{Á™'^  UĉJŸä¦{ÚP öÇWC 'xàZ‘L`Ú\B¼&«íÚPˆä‹rû5súÅÀâàŽ-_ž2ÞöÒÎŽ„Ñkܪ6HȈ §d›=1c#sšw×- p•±ñúYWR­+tÈNd X;Ž–Çv!’¡Iòð°ŸØ¬-ó.­ $º ÌÏÕàñhïíÑöaóÕÁëFâü÷u÷^^ðàãýœ×h¾ÞˆŽUP‹:U’‰y¶Ë ØçÜ^hyWx h!pîŸWœ©tÓ.ÔÜ–}“ËEfC»lö=Bÿseyº]ã‡ü&Ú Vl°Îû$±‡Æðvb ¶¼÷¹¼Óàd­ºSÏ Rè_¶Dž*Ë š‚øZº‹îuÆã1´æŒw¼bbKå¢]„¢xìi‡/ðgMÓ©ÑVÌ‹æÁe«ÔÒjõØBŠ8 0hW"[ÅLwü,VÌlüˆ7˜·ÜÇU{­S[l9k²4ϸ wY§”PjîŒX…‡ìF¬6íóFËÈò†Ñi3\ÑÝíFÉJãÁ²¼“uOÕݸx~\L.ݼûl%ÂâÄßülxL´Y€R˾q÷¬—¸wÖ-F½è ¿ÄÝòå)îå<ÖÔ@9T¡30~bÓí®‹·/Ys&ËÙ3[5‡ÑAÏ ^9ë¥Ì[ñKXÏ%¨(žjÀ΄‰pØkì.ÅW `LްZþÉÙõ­¤r~ç¸ ç4¯Iê€3åÊZ)Æ}ˆ•!Ñ=–¼²ž;±³O i´¤ =ØÎøIΘžâ>±KUö^9 ʹnÖG!ž)8±0 ä‹…sZ qkÐßœÕûýÎiÍ“ù+6§d`…Yj[•–ñMWúlmÒúܽ| èé‚… áÆ~º866Šú<ÀfVü0ÔG Çáá ðqiõÙ,=ˆdÁvˆO÷„†Î!Ã("AMŽ…cë©ä‘5/]ÄžHg¡ Ç‘Êz]hEkNdq±åàØ‰p…«ÏÞM[·,w"§r‰£ WcÉú&WØPZ¼ZƒÝ˜˜•‚BÊ~‡¿“Nvϰµ@zg"êO‰™BØ\÷ 8‘íœN¡Yƒuß8V2H£ý“®¦ÎF€ao•^Æ]%Ó¢u£Xœ®TVoöþ îìjeÌ«ÖÏœbàGdÌÏdŠ-Xr0<ñ@aUÒv”£\¬.¢ÅnÚê /Zö[í×r:v˜sS#)ЇD„s>pŒóÀÔ  À¾7¸dä&˜þòçÂŽ«ÈP hç3Va–Fl]¯{:bq•u½P‚ä}¿hR<Ñ|§vŽ_:íËf?$;£åÝl$Z{Õhõ°Õ] ÎÄBdë·C €5DXÇÄéùƒv—á‹cdIùß²óe®O} ¥À†:¿ÐJ«äâ©\X†UczÐÍ6vçMŠé)a—Twà ›¦&“Oràƒ9`lÌtþW/ÛŽyºé}ªÎM,_+V«L'¹¸®Ê¯Ë½¤Ó¦*ŒëüšdZ»×.Úe‹ka¥tæ&~… „áp®(KÔDs'pPéºE§'ŒnVƒ÷ÍÓÐâ˾<˾ Î"ŽˆÆÓ¾êO çÅ.;PÍ;(&ÞEß’üœÓ #3T8&É鵞¤fo`=Zä¿©x+Ù+¿Vå=˜*‡ ]¼ÐSÍ‘ÚGX„̰±½6ØOìg,¡­Ô ÝÉÔ\·ÝäÐZìC× 'mš¢yOÇýý¾~4±ï«›÷ÿóÞÝï¶Þ7þxO¥Ð©QåÉúÿŽ"xÕWK™Q‚(®VÈf!ÓïsÎA µ,cà†]ñ±7<øWÌ}ö64^GÜN~Mx¶¼:xaÅ=êbèÔ~ÿýÆ—^¢Ùb­˜©ª?yÜ(ˆÜ '¸J¯ºp¨*µ=%)|[‹õÂÂtx5•óŠIW@%PùJ@°Žf~ µ  *Am‹c³ÍƒÉ‰*¥ÃÉ©rŠ*7eäú~ô¾O@ }& ,˜ÝÙè,ƒhvñ6ŠçFz›]gu,šË]¹…Üzª§§‚€²wn|jj±J®ÊxÕªˆ/©æU,ÌkŽ—¬Dpà âs@£3 6š[k<è[oÓö³ˆ,·Ó¿‹¬òQ¨T<áD¦Ú)©øÑ†}«}¬Vi•itVÀњŠ(Ž'1þ³gØ®i´¨ÏëÞ®ÿæ˜n›™i†´9‘àž˜UPq·(ùÔ¬Å;xÏÒÁªíõ’sœÙ›ÀܬD[[­˜¶{MU$b„æZ ˆÊ-†3㟂o`-ýÙ yö‰xAíe÷À…^œ[X¥œŠñM\—ä¬5tøVWM´j¼²ps0dVîE´rÒýt¯LÆßc2>ó­ö+d[‹f1Í!oh“‚úâ½{Ô5hñ©ñÒ'j‘íèñ ýéâ­Ÿ³ØÒIÚ:O2êq¹¼ÁTA±Ä"ªR`ù µ_¡vŽ÷ö÷B-(>kžeX7ƒ¹†ðà!¿zfã_0¾ @°›6ÑnÓ…- Ìûrzï JNúÎØrî`û(îbΆëKÁØ}GÈ¿;>i¼îCÝR‘™K;;+ÚE´23aÅqô#–t¥ˆiA‰è,F£1²¾Œµy–»pÚ3ïß³s[Þ†rÁe…3–xpò4{s\ÇÌ@†Ù(M]×6ÖkÀáÖŽ#„ZBzÌs¶´²«˜âp'yþg€KÑÀÁ!bz!4mÍœ†ƒ† › j6ŒÏ ¸ÄÔØÖvê_Þò+DÆïÖŒM«•¦C}Ά¼ÓLù¬s+¦ö$kìÉ÷ÕX$ 9)WY;´SµÏj?Ýó˜!- es>‰È¡°±4†S‘ÔK‚¦­€ïëùˆF”V¾‰ð5ËÌO£ã݃}&ufúXI3Ϙä# =ûFä’DmpÞï²}Ž`ô9Ö"]Õ*½-úÐãHa‚›…c}ÑeD©Öˆ×Ìa£1Õo“en(6¼W,®¹ýã(7 QÏx|!½ØÞÝ{sÔȪzXl™C€ÃD‹©}Õôº\aRqB'‹FŽ8¨Ç N¶ëÜlûY½÷ͼ²Î(dNæWå°ò+:G/vä}žÅ{^Z=E0i%dœè‚³}uì!wA}ûͧGåà¨ÄS°ýŽÇT‚ ØxkTZÝqÂÎ=c?ĬØ6äè’åsTd‚ÿ®e—ÂöúšO”f“ªðè#Ew„D©Å&YôõžDöáˆC6á ^‚ÈËÐ[) ×QÅ÷éÒ+aÃÙ¡ýê%¸vpkP¶÷ÿñ´×ºXöâ±:%;I8’b€°oÒl$¢;ñ ã‘©â•W“ûâ[nŸwÕ+: h!Ô@p”?µrÙñKS‘xx: ÍÕøï5ÝÜÕxoŒì¢­2½,¯jòêýª[ÈÕxáø òáÖ4 î’âô.©AV09\V0ëG}£Ýtº£^Ÿlo3ØÖ•‹Ëê&mÖöMÐ% šT4i)"¦ô¬<«cp꺛u»îFžÙjîr#džýçÍ¡üéžUƒÈñ%¤UZÚòêê.ZÃÔKåå >cÔ_Í‚í´Ím¦ï™I#1…±xÌÎP ÷oÏ6N–3Ñ+/júÂíXwìƒawaLc3¦¬.¯=¨8¹ ¬y™JcÛ\Ö,¦×ýöÅhÐLÒÞu…³A°½ZAÎŒÚ'ª9¶¼?š`"R ™C¾—1 “#ßÞIÚ¡n5¶@E$ª6Œ[æiÝ<·àЀ~ÚË­h .¿œ£o ÛcR +öâØ9;Pët¢x>Ä7p>‚ºQ@ì [ æ­ƒŒ‡­PCýfPD$¸Qh’ÚïXZ½ä—*%vÛ‚+ù@\;Zýk^.å‘Û(]¢^Çõ-WÞpB#2W±bìÀÂáÀ.Ø™Ô:oW©¼aæþ¾k¤ fÀˆÁ#Κ€¦"Ìl?o¾:Ø©! mÉUbªK#ºl¸*‚owMF,Ì™(Œ½“xZÓóhË*óý P¿bÖÄ{ÒBG¤;ÅS_ e*2æž.WÍËIû"ÐIÍܳـ% Œ6lËf3wNbò(]»ý’UúQÉf{ÛžD¨ì1!ï<Ž  m;°IsWÕ¥j§0 œD=¨}˜7ÂCå™é‡#ô+Âc ¼Ìt8œ—€¸×Q9@~fo<%®˜z^Ï„xôXÑÕŠ«_.»°£n‚¨šVâŠÇÚvºgÞÚn¯ÿ´ýr{wê›çf<­ª©šÂ`‰g-ÂÔb.Îç;°_Ëâ5*2½äŒ³WD( ƒM¬JÕé¿æ!¿èÛ÷~õ„ú`1Àº] ½j×Sˆÿ,â‹´ Çr–sަì@H>¥³ŒžwP3Ÿ ‹nC3r",´bs“EðN2;Œ[ĉTéæ{j &Ä+ŒmòиÜZËÄG!N3ƒJdÜ'yTÆ×Ã]t?†ÛÚ rE >kÅnFSn0M6œâ©Ûô²52Î\';ÇÛ/öÞ¿š‡WÉ–ÅÝ‹SþX‡…d©ÕCnQ‰æ@·ÛU‹cñ™NÎÅ’LC<Œ‚`Cªä¯œsíœXš´"´¬>˜ðfô Ð1­sB-’tŒÅBo,Ç»/g‰[›k›)4 }Ùjϼ½ŸÀ$ˆÅHÔSpò$‡gº/¥»ã4éñ](‡hÇ–úI·„°²ÒAZ’€…x»ûB‚ 5ž—r"•U<é¶»„@»d ·ô†Õ‡Óð!É·jƒM[[*JžÒyH>:7Ä[ûÕ7ÀF¬&D4¼@o±pÇ'Û'oŽgh8 iám¬!jykuõ]¶hͳ›B”¢~¨›[uâíiщád]kÎasØÉ@¬ÑçoÙbÿ¯Èÿª¿j Øùù_×­®­#ÿkíaíÑãÚÚÚ¿­Ò_|Ëÿú/ÊÿjÜž×£|_Ö&iå«åu5_+¯«ù:y]ÍíòºrÁ¿œÕÕüõ¬®æ/gu5_˜Õ•k|…œ®ækät5_+§«›ÕÌŒ®NÍ93³ëÌÄ®>…¥æÔîîSt‹ªP²BžŇü1ÖpÜÔWÍ«n_5ˆšµ/ÎÈ{‚`¨äâdÙJ,x’ì†"ms6Ïaj4âñû牆ÝEöIð b²»äó£5N øÝaÃtMe»˜aÍ+"‹Ð!(žY6uÍA_ûYLD~(5NÇË%çÌmj9ÉáÈ :&Î^×ÅÍ/“#îª;Lšpï mn•4Ľ]K‚¨_T!L§qKN“¦Ä yùˆð¯Þr~Áz^S£½ž6b=ÎÓ@dÖeïéëójï9ñ™àËñwÉp?ãò†³‹±º{_ã¸ñò§ †BtÙfàümÆÔ“Ëašqׯ@—ãµ1’=¶‘ÒùN@­K&"SêJæ€Y°ÛýuÃt¿ÿ^¸;Ùì²4Øø0«¨#ÜžIæÊš¹+KÍç/ö$KHvYÝÇœtßþ‹&í;ÿì Gb¼P­öÂÿˆ£CV<þ,;g 1Çì½Ä~ÅŒí:q® ÍĆ’ÐèÄìE¦ÁÜm ì:Òs Í]#»k˜wˆD8Ž3:^ô/gƒ^op…«c-ÈÊ™¦h PòÌå6 À¾ÝDCÐÓ¤ƒ„ư»+|„yÙâ¸ï|ñpÜw›—)s=aáØ;Øù±b$<¼“ugÃÞߪ©7ûSE‰¤rïGÈ„õŽÔöùá—KÍ;èŠSOË,Å1+;’žä“])çaa2npVx±Ù¥7,£×œnêƒÍ+v:Å­NÇÕ¨Ø"öÀ ψg£eTÈÂÊ©‹¶0}ó ÖÃaË„DÇÁÌ+"ÛÈ ç`ãE›âùÀÁjÑ›gø4Xý‰m“¥.¥ªû比ËVpí¤Î/Xè„íè$È 4Ò¥,Mòƒ|3Tjà|º¸KV¤&=Y;ÛdœGìØ’“É_#\ë^§r®êMÃ Ž¦Ú€ƒ‚M€“¹P²¬Ým/”yÔÔŒÔâ!ª-qL+ŬN«Í6x*?´¼È„¯%æqØê"Œp(é†Ç8LLy¹(¶D†OF² <–hÆ~y\ËÞ (÷Ž´Ø:NÈ(ËòÁfÓömœ^³à”ù ê…àÝc&¬M€–ˆé„-Š5–ÓÜ•‰M¥Ûí\s^¢ÐÒîik eF/} >ÂR­!ǹIúƒÉùEÅÒ"hê;Ó:LÆcoéYË´¼l̶5I¿;*ÒœTK0³Íü[K1h…íÁFî¤Èí­!÷‰<´Û“aW,“tç¾HÜbEVr>E×eƒûn©³ åno–| ¼H€[ä¹—ôÏÇì¢Â’P?u+>¥1}·÷ê‰,ô <ç럃÷QÓsœ·‹Á¨û´»= KºøØ»¬,aw‰^K›ó2EÂ3Ì!Z§°Ñ³Yq‘ë°µý~jÂF¥Åùmá~àÏ3kû¥Fáà@«=£ÿë†ó³ÒéúTÒý ËIê­•ˆÂª>5z”IJÐÕSSÞe>L7u2´%Ù/D¾ñ n<§n‰V˳‡÷©”W©ÇoŽr…h• ´—§Iöï•ɽû#`£Å‘…œ1Ñ ’Tâ,LyŸÝ|,¤bÀS~…ê£"B]H‹ðlDß¾r²}l[TdÃtÍ“ ù/ /sÉel¼|ds^|ð:𻋧áú‰ÄÞÒ?Õª·óZeĉ±Ð¶õ×®9ÎÀ8²X×èx&ÃRNÐTIO0ŠP´Ø¢[ÈU>ÄffÒ‡ÊcŒì’ØÛ¦Øí6¿»Q˜%J#ˆÝiM:ªÁq¬Æj*Uk8a¥¸Í: !tµfµÃ‘áGżÝ?xµ½ÿ²Ì±:T¥f{uì…o•Ù.*šéŒ^{†UÀw$š¦¢ã¤qÖ^uÊÄÖÉ:5ºX>‹]vƜŊX¹®n¨Þ´~HV:/*'9!-ž*; üÙbèBf|pú¹ ¢D©—óþjÑËæø*+-ŸSÞê+JAjf…`$[EÐ>èTO¯Ρ’ÏqÙfÆšZ¬'RAL8*ýÀ²x6]¬ßÙš¶À¤ÅC¼j°yn:étIpdø¤]Ã…+Ž(óËì˜XÝ1OÇzû¿ï ¤ÔÍÁ`ˆÀ…:º%4,‡we”- /“ÎD,\0ÅݳÀÙ›+€£ªúˆF7„3Ò¶Ž5Û÷ƒç8ßÞ‚ðÜû¾wƒ˜J¿äü wK7v3–"4¿0S]hm/|ióCr½±3Òƒ”´h 0¬É´ÃšÐÁˆ“òBÐ[ók\AžQÅý$2s#èFs¡rðA <óR<ã»ßu)ãƒörð÷Áè vr¤ÝHجIbk&c“af\).¯›­ŽÏ“-ÃýSvMдOÆt!vu–¥šQM§êÀ0)™‡{¹ÜûT¬DI[ô»OK r¬±l“¾½®Ô‰ÑÒTLµ&|zML PB‚ñlÁœB£œB¦05 bX’ôÀƒ4‘чoòP^œ*8]èóm ýš[èKÍÔªßrÇ_{8§†ˆX[i»Û5ßÕ=$ªïêA—½°ä™ÔÉe«²ôâcƨ—ˆ%jÍÜyäÁ3Í"ïµ›{Üû9ü-¿¸ K ,~ÞÕç b==XÝœCåÆ/íúj~ñhU×Wýªþç—¯ªðö²t¯v!e┊Ä_+ôO2‚}­Ù[1©5§¾Ö|`ˆ-ä°6”š«oc„OÐuÉ·J@˜)AÞ+¢2Ÿp7w2l ºŽ¦m4Ho]£Ü@˜ZĈObw<³Ù1§Ûƒ÷·eë¼?HùØÎÇÉ·\FwÑ,ãßòÜ6UÖŸ@ø®‘á4-²W²UEÉVe%Ûàì̶Lû´Ì×ó¨íä¥Vƈ-€…D ·ˆŒtÊ ¨&?uYîšq$ÿ^Ëiª;½ìØZ°¦.U‹,æV G›¥AÕ¥v[ƒøÊ "= _ eüÇ&\(Í}Œ'L1¥Õüa¥k‡ã¿ d^oøq´ÆH> ’ó sBøíŠÈÌ‹( ì-uå¢ýÜœÛÊ×aÁ¢$¶&#¥À¸ " ‹©ƒê”U«Õ¢ª†ÓªFƒ¦ _šÂ×”¬íQgÕCË‹ÙB3ûζCÿl}±RaX¬?p±J$†ÔªcÖŒ“ …­ð¬bAí¬”ø¦íLú%*'+dX)Im´Ån’©ŽŒ³ SL(g»dWò¾ZKŽ¥•Ûe1˱9²„ðMIÍœý’^+…™{o5Ù‚æûÖIÊêSâ1p¼HÉnÃÐÄ­ÚSHá½Õþ¼²|ü¥¿N±s±"ˆ“…„Ö}5ÍË âúYÍâWUjÛyqRžïXÔ/ú (þ k–b%£©4µ%ç}e•3u¦{ÅšÏ0ÎqûÙæ–ʹŒ ¾` ݪ˜íÔ¶^0ù˜ÒÆe%½.[ R×Hùí{@“b=Êàͪw"*&ôTg}´>‹”H)|y^±^4/&{‰¸üýê"ÑÁb|ÀÚ®4Ó _µ6Åš;v2¹eï|8 ø¼¹àwtùKƒ>¬ÈÜ9Èj›`ù1ßpªnf™K¡W×ei:U̘é3S~€œº7>ªþ›½Ciý@Öªõ•€Àâ[¿wB^`å½ÿ•ÅÂy€#æOÞ*G7uödôé#µ?”MhÁ ÷~Á&®o²!_Ê~>jÄ·!aÙæîbpåòôI8V‚ðf PÆᣛƒ3;Ù?(“ÙlËUhJËÖÚyð]©APg° PÖà¸ÔãTQü(–èx5ûõJ•à˜Xó'ê %EŸÇyÑ» ]ñ)òc&í 8ÐØ»X’þ͘Œ/|½²æÅz2±*&+ro¥œW¥bÂqÃc˽#´Î²õ·ÆË¶´_5Vg6ɲԥ„ùÇ®0þâO2aŸÕ4 U«mÄ+B4)J;±dcöÒõ‘ÕF´zœëøY™# SµÐ…ÑèªÈRJæÙ¾s®D8fÒiwê$wgñ¸cÕ_´8¶•ÉpÙìÆbk­W@ÊW^g #‡/øµj‰`.éõ­íÒ€Ó,«#f-ðh­ ºÁ€Z€£ß~;m…fNòœ“Õë&£3ÚÍxØÐÝÕB0xxoù­Ôäêú i( :“Ý»hEF ø'¶ÃáÙíCõRív[Ñ‹…´#.‘¶$ Ðx÷K»)/#¾ý~G­ŽC}Ût…ýaå`åmõDã°8ëŒî¼’f·L:ÈGlÜ%2‰&è;ž¦wp§!¼±›H l1|®Ü{ôׂ¦PÅÍÒ$T'˜E"+XûBT“kûnžTÏ´jêöqÚ|=;8µ\7+¹ÎAÖÔ_¶fÆysÕÛϘCdŒÿzú¯Ç2·­éƒåP@v²)*FžNFªg÷–Ý,ó|èÞ#x³à¹œZ£Q÷#¨„@OÈrøv³Û„À`p­¿:x»óæèøàÈV™EHº´9¹Rùg)kR°nz·åU 𬫠0#à ¨Ç "ïºõbþjn¤¹ßØ€žÖùYè÷;ßyЛÿý9Ïð¼¨/ì7æPºM8=êÁ†¤v´Ä”˜žô"²•ÝZ]VÛ:R‚dPº7×ú™ä¤fˆ7;}æøZÝ–g64 ŸiQ#ÄÏw8ŒªT̃Uëáa î½ Áí5Ý‚÷ƒ_u0Ï*p¶—8W› A0›šÓ6`¬ ½JQg“4ØÏNö „E äbQh<ËqVD‘qmÂüÙ½P…ÀˆQA”\wŠƒ‰+ç˜+l¶aåTí5[Ü7;|Él‰ïÌÏVÌ+µŒV'™ÛêŠv›o%žUzš—¼e/¡¨õF®Þ‹ûgÇ¥þãÈ¿Ô †UV32fåìGgœ³Û©!¯Þ«ªŽi¹N9m#!…£ÆÉ›£}è%ë±ÕGaÚBRO‰CihˆûÝŸ3+×fWž×§‚úT†Ab¬;jœÔ¸,ü[tA;‘V».-¢[¨,JÔ[Æf5˜*̦MéÀBù¸S+c*ÒÆ,/ñ*î³½Bm¼@I–Î,¡ÈΞû,$\C]òP©ûÄwÚd·AKdBÓÄ -Kû’£›<¹—>exç7Ä{²£]혀ÐG¹ú”OI… {Bsàõ©å’[Üœêðú”–k0Û.[FO'ôj÷ø¤ÙØ?9zg–ìþȵíR p;´<áji^ªv{0ê(ßφ¾îðŠ 5±¼‘'Õi¢)&ÔÈ#ìG‡»µµõl–ïiˆu#Ä`døß‰Ï  Väµ,bÄ:úëv¢œ=œìÓ Ü-¿«Tõ‚{¥ q4‚Î++!39²*ûœ޳¹‘‚d.,µ¶Ê5pÔó’UÀ»× •X²à¢èÒÖ°ÚˆÅxÐÅÀÅQÞ°Tc÷Ù¤¨¯^7^¼Ý§%¾{|¸·ýŽM»‘'"¬31·aŠ¥ÃÐN…xøËnzš€¡â8!ˆR†$s]äUeUŽ9ôè*AäkþƒAƒÖ,qæ¡3ÉÄA/l¤ ܰ«8*Q»Õñº,®ó³fn¾nYÛG Cd 6ê Ì|è]‰ÍÍéˆÍ0þrð쌖­XÛ‰(—½Žr$¢Z>SnÓTË¡€œõ¦°¸Ì¼3Q„7Öø’.b¥[BÎ8-B]áÝù-·¤ük¶"ƒ¸¢9R÷q¦>gâ\Pqg×ü±;ð¢"›‹Jõ<Œ§Ã¡¦4.Žê‡.ìà¿_“´^RgÅ< +Ûp‚—CÝ8MäÓ¿vk¢±x”p¤+®}%GçœÍhâ$H…Œ¤Ký šä*çd”ÚÁ2(œ 7²Bêæþܖ˶鰽X¾uCE§çÃƱ¾ÑjîØ7 ·ôÍJn OL‰½·ÑøWVá"JÌä¹¹ÑÒ¦FùÞ×! Üq.uúHøÀÃ{*,¡(C•þ*3Oeûòª ½°©¦‰ˆ rá~dŒ#6íÜ'Cr…£ä'—ý‚Z ìRs£Ž8 ûl¥ÑÌž«í;¡Guàáö$ÔÅ ç­P dŒÁrí® ˜ZÓ2õȹìvÐTƒ×hhµ]qüq~»vA»AIõ&oU·Lñcw4F°IeŠÑÜ]D\Ö•HfÙÁ™\ £å¶ÍÔ Çð„ᵺ%×®-ÕkqEh"JöN¿„œ’·§#ÞUÙVíßF% ãïcæH`UÖqØá˜Ãh’è¢VC½ˆZeW‰²À­ëPFPÖ—<1«Ø§§‚ ËQcNEíÁ|Y¨þEºù5¿?œÕÜÊndQ}¡õdNOü–ÙûÄn†ïâÓhÎ…@¿†ÆÏ-§ñ6C¡»¯KC‘V—§q:±:H§+ò‹c‡áÔ̶oål²näÖí1" þC4D7Ó‹ØeÛ½¥E¾•Ðê}@w)‰çžI–aXE•ªcTüòœÅ%"‡aY$ÑíEG&ïàÓRK÷¹–hM=é¸X•‚§J? üÆ„eŸëcuT¹Äôâ’õEŠ±Ë 2Í)¡8ͪ¸ ¦+óð<ÔØØ>¶ûû? ÇUŸ}÷‰ÌÏEUŸ>öôÑËiˆã‹(dq&eP{B1ñÌ8#”xØ®'iüû¼Æé-ˆœ,ÃTU^ÜŒ 9 6ÿ$ìõûiâLÍ?¦fÀ]¸ „œ¤½h7#Ð/KxÖ «C½Ó•¢Ó°•ÌJ€~#Î;ºïuUlÔßÍ|âwº#…+ÆEÔx-}qÇ#@3a¤’©q¸ ™¦`«² FB…[!;í›V7‹§ ƒ'›s`P™ì,¯1‹œ‘ßÔ‘ŽîN.pÍì(0Ê ïéêðþ}OÄŸñ¼GC‰ÈÈ>iF'còtÐÔ)G/ùRwÇgη9BNåC!¥•?ßÀ 0»BJùTËÒ·Ûö€Zã™G]V£9*-F#‡ L{]UÙO6Ãåyâ€3~ÿ}¶'ñ¡ Bò$ ¿FjûLƒ «}ý矋]ùŸy¨G/ˆÌàËùw‡›RøýV“”ýx²gK}™a)ñ$öƒžÝžéQÜ´€eÙ(Ëš8pne‰[íö=ûb:DqØïˆ¸Êú4‹³‡ &™ Xç9|­„¹­ƒkµìzAÍ.8è»x81oÖ¡MmÂÖ§%¶ònL¤˜5‡Ící§fƒòmdË[yA)sÒr.Ú° kòßZNPÌK-^OsËËMWPKÕÔ¸öÓENz•á̲Caø¾ @o`k‹4gŠ0·d{­˜¨DV¼ší×ëë"¬™ÓW¹° ¦*áË G‡Æ’–Hþnǧ·þhH.½ÀÌ0uù1¥L8ÿø «€ÔÍìòr¼Úx’/ûLM«ÕAQ˜l©È¶.ÌÖi ˉø&¹;Yc#Ò‹’?¦e›%]£Œ¡% XËö4¢ Wû0fŠB¾?Œ-A:„aJxUTM¦«Ù†GᗙžÏ>«z¬ðtÅîíºó¤ŽBògóQÜ\I–ÝGF3G2¼dI¶ ßrŠYF'²Y¾¡ûÀ+7£â•ãã{f5pž¬õŽoÌå!c à`0Rðc…áS‹ãu<0*ò‚Ú£7DÂ68Íñ£/gÃ$,- µ|`Tï˜ôˆ¶5ÿ¸æ×C£ù%ŽXÃ,&¥Kθ½¥²¢ßt,¸‘šw/jò¢æ^¬É‹5÷b]^¬êX¼S`±žzFÌ€\}±“ «Œ€Õmr¢WãË!¢˜4a|ÄùSì D6g‹Ž ›~Kšc[@¢Þ;)eÅ,чNw$(ÀgøEWìm0`_A†ßT›&ڃ̛µ©7ëSoˆ„p)˜g³•ªÅ‘D«ðÓõ_ü Ôƒ!pŠ˜ñ£Y²®ÙM™h½‹GÆriæ¶j4ߟ4^‡*÷ n7ëàbï_Qá,K~”äSÒþ§j5nqKjb½¸í Â3æ«t Jì¢ý±TsI¢– ÄvËÐ=ºa­—nÑ'âTŠÃw\ޓյ]xͳ.Gôìþs’݃aùèµêQ©!oʸ¢FLÖ-ÓÆêI'§D"w+Ïp´ìz@‰­Í7»GQ´^ÈWTŠ0ÎAs稱}bþ §·Gû{ï*渹{ôæøˆÞÑÓ[zrÔnÐØ"g­C.Š1d¼ñÆ„Oi¿ÌV6VÚTœà£JÊŸûÎC„ßÓùÌ L†=ZÅŠà×åòÜU°‘­n±V‡P)ÁÊF¸Ì ×¥z9‚-îŽ\ýæÞŒ!Cë`bu±‚¢œál`G¶bÓ¯¢5·NYá&í‹#¯¸”g˜Š9˜•é€\aŠW™ƒÉ‰C. y ⎠Ûl ­ö´{†ØOÌ¢Y´êTÄÄÆïÈý^l»bÃ<[¬ÔN!¤£øž7fˆ]RgÉ3ç$?=IÖ¥~ucÚ?;™é:_d¤~³I:¬·ÅäX)ÝV º„I^ƒí“>ÍæCthfJY[Q”,‡Ê\§³>¬ÏúðÀÈ%üç7º/;¾ˆŒtoňÑýÌlÞÌkå ïÀ@,ÀMÛðò>Z"ÇuïàýƒÇÜp¨j+"<} ´B€p}eŽ× '8s»~’Â"ëµ Ú`”<pÚêÊžö@-'ࢪƔ®¤„ª»^¼Œj@ÁN€æGX÷9'©K"ÚM9ÇŠD:¶hãQ«ËÔ`:l·—cÏWÐ0¸K÷–ðýtl¦CFÆ‰è ’>í ÉØ? Ëâs÷^’²U“¡àLwx¸SÑßœJYÍê«D Öò½½JÂE~Í©â¿7`3““1“à–cjè¦AèçgÞtÊ¥‹Q)šï"va±\"5¨ïbÝ$t‚‡‰Æ}vsp¿ì÷ÒºèÙ¯£h”Ù@–‚ƒÁlØä ›l%Ì!k|4J¶«zÍ*/ú÷&ga7ÌÐøH1âv–JÃjUiL «U9Ô›ÂLó¡ ÀÍ]¶1„Lí¶¹†ìË×9›¹Iv­¸9¶§dAâpƒiâ¤_ÜP/JðåaÆŠÖ—©dƨ^RœD0>ªqhä2r»twɬ³Üž™^ÝM<£¡ÛB‘¢T8ðŒdr“tÏ|âMaq*6V„Øõe²s<·ùê8èöX­ñoòÃtΆÃ+r¸pÎ~îó8µLR'3RVW¬’‡:éO¥T¦>x rfRpµ ¤ËÛ—Û7™ÅGZð݃J1S}]\°ó̱šÅz‘‡Z´)¶J9¢ÀG¥lHVrÏÏ&š?08å`«mfÈ:ür9 s±)¾:yóSóu8™0üágoàé/$Ü À578;ÑÃmb¬Å nrKö)wbe)€¦ÐÓ+×9gønÔæk {z´ N·]¶[9hÛëï&jëP¢Ñ0Ä(Óè‰bü†¹$…˜Ç4ãˆdËÜì¡âŒß8a<;TÔ¬IÐg¨V1Ö©€õ§…‚ÉkþáSn$ÍI_Æùuc‰83¥¼$œj¤£7=ã7/#ÞñßbçÀúÚ:J«µ„~ašÕE樳IÓ?šR)oi¾wöT5wq»¤£ì“s˜Bcw³öSâøÍµÇµ•¿­RÛkjí2fÆ¢Îßsö‰³¾ŸÞ¨Ä~™åûYDvì2M†ˆo!’Ø—¦ºy¯Sñ³ÚdoPf<æ ÇÔ*ù€®Ž (õóíàÐxV5Çz"4”’Ð3ÍD¢‚„Ÿ‰Ñ“PŸN?}|ø®y°ï§ðQ‡B(‘Ë–› ŠNGÐ&^±88;+ª.ô;`'¯?Úkþ´}´»ýÃ^ƒöÞp[·jÍQbFÆ-³m[òVO¬½lº´ŒåͼÅü£¡°ÀVoÎ[Ç?þ((ƒÁÃ9Èó]‹åJqÐ/VÖËÖ3€Ûɶ~š9/Éþ7›¢´Î?þRÕü%‘¸L °ÄR‰G^2ÄMgwËæÿޝ¿fê¯[äÿª=z¼þù¿V×­­>z\û·ÕZíÁ£µoù¿þUù¿xÏëøG„çªâ#ò-×·^ßxE ¼ædð‘é¤Ïàøˆ+ÉaÂ|l¨(é—MÛ$ü¥Ä;£2œÃf­üf0úP’ü«ã‘ ŸuÖÑx_"(ÔlW¬F%ºpIÚÓŸy%mH4-i#´9Úç¬sY¡¿R'qgv`|}Öñ9¶9±¶mW¸i ñ…F5ăm Bd¬h_ô:¿üÊù¸4Ó¶dãbûlš>‚ÄA#‹xa÷yTô7¤ï¾+ÑY„K¥Œ¡) íù`Óf”Â^E•Èßmק׬\´ð/ZšýLwÓ;ÅÇÈ}ÕE÷C©X`—$Y¶¼ËeD~GÔ˜(RŒøùÒƒ5ï^aP}ÚpÉ>á6Zbû[‰‚ª€½DŒñ$Ãrf[žºÙº”äâVÁ¾ ö’‹NÕâ­å'ý›6´úéÇ«lIý+â9½Ü˜--1 Ó’`GÍwK`ïÂëAæya-•¨›% æ¿”­ðŒCMk-±ˆ"*«¢’ymj¡h=òTߊP…%»,ÔiÜÃÉpM¾‡Æ(ls½ÈZT +«`Tbľ‚Úí¦-ô¹”9|ØaøMz ÞÌé·Ð¼>GG3û ¿IŸÁ›9}Ò›œ>hžæ7b·-U/%ÿ„øÍ¥¬ \Gæ™í¼µ©-¨õÝBŽá½Àò§Çþñu1Üúæ¤;h{ÙQìì¿ÝÝ?þ;"33_ræHBÝDi5Š.€.‘÷ÝIŸ™šÑáµ\Ùˆ îó8êkÆ÷z'iuîÜXWÒÇ,o‰äZPCGPoÒ N-¢hsèàBK”Š]Dxõ1z¿ôàsGb‚3±VÇísÝ~¹2øê‰°/.Œ$"”¿¬üiØy‹æÉ”Q:i·“”(º½ËjXÃÆ‹VêS^Ùä_("3gZq‚ôþÀ¦SA,"6 O™ã°ÈÚKöÙOœ÷=}8Ð,m™^w<ö¶›Üí|Ãkpjâ s±ŸIøøòšHž>!á É’dl 8–9ä?,¡—DR¶¤Äý'¯……âÛË»ëIJº¸C‰,Fâíì4a˜dC5+ýA½ò²¾<²xf\vrØùR‹cßU[JÑs0Ð)ú´(1È2ÆÜë-aï9Š[ö ãìÝy߇%µ¡¤kS Átãõ—[¶¶÷½“|Þ¹-'ë|>n‡+X.†›3” Þæ°&ŒMÁˆ8±C 7eJÍÚ²W:ÉÇzU¬8Ól õ(ÀÍ ˆ¸™ò Ÿ¥ß˜ ÈtvJw­ûÕ§>p˜í0„38ëlJÖ U¢ã9hæÑ?Y-/˜pÇYðð˜Ýœ|m{sõ›oF4Î7¤N–Ö<wU9kÈœ^æß…¹`­¦; ¯<]…XÍ`±<‘r>yYÀq ÔygØf8ag¾öŠiý|]iךÃ,[A˜Û›°ï\ldíÛ &B«#΄À•uG*Zb÷‰Íp0u  fþý÷ sklß˪L¼¦'h¯mˆaBY¿‹®ÔÒ“t†@— ›» *Âñ “õ Rîtƒx"ƢТ[‚ÀrØÞÚDïÅëµL±;Ë1éïÅÇ‘_¬€;%^Êåv³wÖkA0º»CtÍ~Ùƒ…(€fåP*ü®^ž]˜ÁU’É™Gêâ^§Ò(¢ž±!Óbž“G$]š)æn™Z—î%Ÿtúª$¬—QºÎ®;aMü.Å=#DlðjÚ/µV>¨Y=«Omð¨VeHU§2Ö ISaIª‡Ñ9g;0E]Æ:Rºº»Ñz²«Ð—ß¹ž+þ>-z‹Çœ%¥¥°;dÕÆjâªv„ÖµÙyþSéXõKVk” Ô'æ‡7/^ïþ‡T=Ìɽ$ƒw†-3šr‘Eÿé‚ÞÏy`)3‚UmM›¿º€œ F¶b9#a„Ø^&6k cm¹£<¬V£f†>k–ÞùŸhîð‚d‰Ç]±ôO˜ò,hØY‡ÍþI«=¿-ÉfûGNÙTÞó¥0ûpåÎà7ë-Çnª°s´¿75Žþ¢…õ™»œh²¡vYŠÙ]þO±?»Í½ÁyNsÙÞJš˜Åc¸JÅ.y*zròN-v”#4¥¢ î2‚£Q )Íò<¶¤•³œ´x7ë³úŸ¢üë™°þÿÑ ý­¶þàëÿk׬>^{üo«µõÕµÚ7ýÿ¿âÏwLBÔ`°ì6~tZdÝ  ¦ÎYÇ ½7_|Q ›PÑ*ÊG§çšF«Ô>[6ãñ°¾²‚À÷I‡0–ÓÁdÔN8‰Çr?¯”}š¨å:±b]6å·± ügMƒq ÕŒ}ç’s”ÊÚ¿æÝ‰R· 9_ÁÿÍÄᛉÃoèYr ÔFO$…ï&ýð—ÜÄRßG¢µA‰4¡Ú莻ÕÉ“E‘(F}FþMBW!ÔÔË55Q½¡jY£ƒáÚ†qñè­I±xÜÔ$¦º4?\s¿ÖÔú8t‘GÓlANåèkk¥fXCž“áþ¶¦¯¡L¥]ãÐ÷sÖá÷Q§ýï ®’Q‰~ÙèrÜÀÚmX‹X •‘4¢7ÚkVÔ`Å…ôþ Zfªè¾V9ï’ŸwY ôż‰¿«!WóèjÍÅc³¶­bÔɶ§ø)\¢˜š ù7jUêlP•£üTöÎîŸ8pIÌã'»=aÊCõgݺµKâçMp©’K-û MßMJ~ãf‡v {ÑÎdXJ+}NÄÇÏeëˆÆÒS6U=g‘W­)»ÚM$M` ËŠJBJ—Éå@²:E£ðÜH ÃH»XŒ„8Ãë@2W2Çê“!Gw·±&€òËßýð££êçp­ã¥¦r¶XÝÜÝíÔåy¹Û¯|4µåu³¶ºº¾R[]Y{`VkõõZ}­f:­Ëi|š»<ËÑÍ7Ç'¯é„¹—£Sä±mÊùŽŠ¾>¤•7ã²±x„…E8uO‰ 4¨ï¾Ã“Å[ô™¸)6µöŽO¶éŠÑ¼…<ê¨ â¨`–ÌÑαN×’4<á¿ß0á‚®,ŽÒ‘…ÅÓVvE3Ʀ·zç¶×G™º‡$hi§lž·.»DìÒ žÐKôµÊGþk‘1ó©˜=@Ìè ˆ™/£e–kjÆ3· e,%]¶Œù£+ÿ+;ÖùˤÎS:_@èÌÝ㼘åÚcɵÂ>º@õ޹ z*·?vS:b.­_¨ß ˆB¦ ‹ÇK$ÎzËiUâq¡mHÁq|=”VdÁ8áǼ‚¹Ë¦ä¯––±òvkɘ¢•óÖ9g¿bÉØGÍ…$ÒSEø~6-MþµdØ_Ösá»bÙü ]úâ%éòt@À­*bf¬+Ïš3¾8-^*4=”´@ YZëáßòû¤·\>6}ŒS9cEš ¤g/ÀÞñœ °b’òBiitÚíŸ ªOG§Íöå°ì>ͽð‚rÁß.ÎGµFøÎrWNßž!áñšá•Ïè)ÒN†™û~ÿ€Ö Z[Pšiž­¼y°zàÜâ™ {oÿþf{ϬBvv€}I>ǹlAš-ûò¤ñï¦ÆJ¡FPŒÆsαGS5öPc-¯\§‹g¯sqàM‰Ì® Oé@(qÚâòôÀ8:âÔ{©#¹mÕýÆÏ'æ!w¹[+T£4«{ÊÖ8m¢ â7fÜ!ž·hŒçº ´ô‹ÀÁ¹2Ë"ß]ºßè¹,ž¡·A“ýÆÜ ú!LÝ‘¾©ag6]°2k˜åÈÒñ8¿¤{”ÿj Òÿ’î¥Fû[1_i‚a¾dRã«-Cúà:ƒ`°åü½\ú¢VLg6‰vü3ZʼnàJþåÍT¾0rµ?xs‚se”ɦˆ5Òq0TÅ—~½aƉ27Œ=|Á.ÚžË%ÛaÜ@¼blj9]< gŽ‘»F8A¡-Ó˜PC†!ÃÊf  ý½jcڲ尉֧šÀe;Ý‚k"ä><† Þ:ù3!w÷çÆ]o$È-D·$¹" –i è!($y¸Ì#bZ×—ƒ~§nîÑõ}Öý*¬pj9é,ÿÿ¯ù‰.·Á$U] ÓÎ=Œ“‡$CN MãP?9¨j¦Åù ¿ø£ÐôA›ÉqæW–u~Á<þÌcݬ>¨×þVðØÏãE÷Ý…D¢²•'˽Òñ¹ÍŒ®™ŠÅÈ´F„¢[à†³}<æ>ÖVVÿ¶²öȬ®×kµúƒÕœ>Zæ”øŽ \¦Î™ëJìåm†V~-qç9üÙíî¤ÛAèkâFÀ /·.Í}sL ÿrCÂuÜËUÏʹìÐÅC¯Õiôë3Û<½ÉhQvMn¶®5ž$¹f;Ú¤S¯j‡¨ºHÐÐIZšÚNñÇd4Žd³„_à™ºI;‘l˜ìóÎ<<3ŠNÉÌýÀZKB±,2/4É2Í—L»×M˜[“@Ôv½¬XÙÛh·?T»œKUÊÔó®f&;›Œ³}Lw|gzqÚÅ­­¬¯šÕÇõ‡ê×gÀ­Äx0èYÑ[&2 –8ÈVïºì« ÂÃÕÕG««Â7ÀÔ¬ÍÉL[ŒK%ô¼o"Ižªý÷{ˆÚìÒC $œ®%˹øÁ{_Fè%×iÂŒ3¾os8¾X,’²ädp`YâVÿïüëÖx|Ñ%Þ}»ßA)²˜ s8$ÕýÄÆœœÎkzYð²®®¬>¢ÿLíAýÁ:ýç—u›CnYK?e?îÓƒ½oda—ýú«4Þ§7ééèòo Œ?2Œë¡L§µnõñå£úƒ‡õµÏìÀS[È ÁŸ$\Û@3MðÍL ì±¶ÜÑ^¢ä¨¥Á® ²0ýIÛtô Ç¢•×Ý>Rv?M†NœËÑÎôÖ²¨=®×Vg«•;–Ä4‘^¼<„Ï[¶ÑZÜ(aß‡Ñ Ø§)µAÇ(92ñ²ùINAªþ$W¼²\EvÙ\˜«„¯‘†™gFí´Ûùå×Íb,®oßJ\_Üø&¬ÿ&¬ÿ&¬ÿÓÂú]K÷i‘Ί" óLæOFH«ÍÁmˆêž÷E$‘ÐuBPi½8ü·FôIn¦RÙ"oÎþÇR] µÏ$El±Z`)aOh“BÎÈÊáI:&D{¶|ñ4~G7qünÒ'ìDïŠþz+z2\Ý(’OÃQ™×áM>4²]öUdãoÞeMë(nð£Öß9V4,Z_Ì¡t1¸J,âSe0äËüNIÒŽ¦xfç[zYõU^¦ê/ŽÑlRp 5 r_oqô夙Ö5¢èuítÞ7šÇ?ýÈ» á«"4°åï†Y‹Š!&ƒ£5ä  ¿fH…fuC…¨gˆ‹xÅ fg +åÙÞTa2”ÒoXÀµ¿ü#EöAÞé{ŸÝÈËΦØÍɵ¶N;N¤-‹pA» @V|û²qRúT¹./,ÜÿT}zIÏåSå#}Ä7—>–UFµ0‹Ùåî!Ùý‚Ò³_0[Œãc,ëRÕ< $†ÉóÉå%õÓ]j¤WæÅ­ a cfI\(?WŸb·«O'púù6‘Äô.‰R@|1 ë "?å– Gu—|°%ß±ÐwŒU,.ii¼g †ày ¥w­kvK’žù´îgݤ§× ÁúpsþtÌD»ËÇÈ꯺cÍvÊŒ NdØÐ¡%j64èÇ1;h:H=NUù”åìûÙìOz½òæï÷3o*æ6oø`Ò.ùýå-eK–Yb£º©NÉ÷²£¤fœ,ߌ°0¦Ö±p¥ gZ¾¥ÍÀnIS¦}iæwkƒ4«m“ë–+—7>ÿ™¢þÙøúˆmn€K½ä”z¬ƒ¿’¦ù=Øš£œÊfvœ#ôk™ß,£Í¯Ñî{#ÑÒÁh–8ïË›Dæˆäk7JŒ(Òäi³™'íÍÛkë=zš{=-¿í0o%7R$+3Ò~‘sÛd]Ǭ&E­ñõZÓ™_ûçZ%RÏïmž@]ÛT™ø_§;í’n̨ë@§¤éÍ›ÄéS+;ªô‘#LŸ±T¹’ô9â=øQì‰88ˆÕKÌX+qrðØ*šCý³VwD®ã ΂è xw²©3q6/Û¶¥´È·ø5±ì£K„†ÝKºˆ|AÅîU “Êeâs®9ºˆ5(QâØì2§É£˜HÒpbÂy$*k‚ü‘‡¯dÇ­T³Š´‚Æó½Pš³di É‰WÑMÒz­ÔʦÁ^Ø>,…²äœÝb¤ÔŽFCÆgãôži€2X+» e¹))! V)eÃ’Í~Ú¥‰@€¦Pc½ Ë––ëq$!zú׆†Gôw›«òÀŽrØ«¼Xë³L—»wÙ,;FPW¼l=Ù–êúÑ0î£aI×~>iAO”%—HC>K­Í©ßâäïKK‡ÿ´&wA,ïéR_hoŠØp•ý_EÕ$lÍÅ[–Ò‹ÉXÅ Õ·€lö‚ÍçGMnÎTèÞ@”r1ú³¹)!ÄÔ7³¤yÅf˜ŽH·Öl“þ߈_ò oZ£ŽÙ‹V‚ÅÆ¦ ,ŽD ˆ±ÿªî­UݪÑÄnqFtþ™]†BøÕ òŽŽsh™Li^ÆÉ|%b.~Iüd²6·¶'(ÜÚ €˜õйyIf±!ñ‚Ì‚šÂ§Í<ê·V1Ü¿[·É¥O›vMÍ3áÆë^|À©Î§WMæš]´[Ú¡˜Â--QþE+æ™ `i•j°ƒ*%—ˆ ]ò¥ÈA€|ÄÍ<Ý @ôv›³úu7‡ÓóþY%S¸µ•Ò_Þž™/sý× =gAÑØ§`k~ŸF¸Ÿ "ˆÃ·ëÍx™72G–æ~fï+æ÷f›¾–v§pç$ÌlQŽ­OáKl}d(ŽAi1EüØ”Öèü¸:ËEM-ŒŒ§“ê 2ld…·™%™cWTøRâ[Ý:°ôwÕ½dä‚ü¢£5Íi ¨ƒññï/ oÓ¶•X R9,Ü-ïwÐŽ­?µ¹vlÙ ¾µñ`°v¬„Ãï̘|…ûãÏÞ 6KÚ¬Áårê¸ v³Ó–)Íû›íCÒUýlcÇB'@ ʶ\¬‘ÔHVü‚3Î2Ï?šÐ´$êgGí!À› [Ú_žÍçÀpB´j¾ÅU¸‚ÀÎØä Q¡Žì¿ ¶*Kו¥ßèr`7f¦á%à zsÕ¿§Ýæäؾ˜>çä}’¶OW@#³Ç¶ø6SHfûItiŽ­EyVúd‰kxËH6WËö:ü¤âR¶H °y/­d k“c¼*|fo&º°VF^rªVÂ#£,¤5í¾©î|3î> ÔÂÌt–¯0[K¾? ¾‹vR à­,Vïz9òâÞ•)8ÝŸ=RúmsZÛáÂßeÁß^ CZèþ p^ðøß“/Œ•¡ÜûM7@ —ß ‹Û¼Þ^¯³TPý“B7o˜®÷ov¯ô÷õîÝüfæncv¯ey*n“®uãt‚¼,\Êò½x!%<'Ì>,mc‘ŸÅ5FóÓ¡Š|ß‹µDÅ |E¨¡Öá¾.áX?‚ `h7ãW±e«L¶-³YSªÈà7Ì[ŽfH=»X½c'B˜šâ@ÈÝï/ÿ°lŽÙk’u¯¸õl™s•ϩȭ"7àUÂE–Ì9§?äPðÔ¸ãÀG.¶¶ÕëRÛ‚±P¤‡ÐîBö‰QâœÆßñ¡Ò‚>‰ÒzÓh/ø5Tè=À`ƒ‡Ìv ³š,Múí^ò¬,m}úú㘠>pg; õ`F" ”F2k!b੪<”¸æõ͵ÂÙXh÷}Fý*èKn+gÎ_iÅ¢Ò wüÙsêæîáE7qzÉãfy ƒíãò¼žÚè;,!‡37ÈiÁŽL–ca†Â6Ÿë[à‰|ÍûÒ-Ðú²L2ØY;0Kgœ35Û[ÙmÕgUí©ì\mx'øo¥"Õçð(ÏÆZwñÑdÃ`Œ„¿óÅ{'ßtfæ,í  ŸÑ·Õ,ØYŒá nPݸô1TÍ™Ú\¸=çnõg¹HŽ-Þs×€é)–xz”ŽEùmJž¬L`†]¯×v{0êè%±VK)«b¬=^ù‹HüëHäýlÚþ¯Óò€8Œ”œu9òwàI2Ô«—Ï–ÏrÄ %kš%ûÝ-§Ä~L žky9 œ—rÇ"hé¯ Æ]9£ùÆâä³8ÿÅ<ˆ²`ûÅwŸŸàûèǯà„_Î0E Òì[·Ë~òñ+8‡ízöhêÔØQ†_á¾o Ëx}¦$o1o†_´,„fÏÊÜ! ò@fOfŒ ²ú²1ØE,Í]…¹“þT.ç`%ŽI0«a;·¦Â-/Èýã"Ÿsr L5µÏ³e[9LÑÚ?W u"JÄš=EÆ¢+3IÃø,(ÏFê# ‹–8³´l,7Å:Ú‰èÝ+šÂím°>9Ilˆ÷Ü Nqˆ1ót¢ZŒaB«ñá¾E=! cÕ‡K~š¡ØðÊT±:òT(/Êøb"¦.j âþülýdJéçrµZ}–|W]¡ÿß›Ûüá’Qåmiÿ~BýàŠ h²Ò»r<¼ì¨oÕût¿ôçipnEÞºZÌŽGV ¡W&GÊ kÖÚ#½e…É¥ZÐôÕègIß<ÇÖGª hÞÊB•ãiÌ´¿û4Db ŸºPxàÞðï²P*t“»™8- !‚w"ƃäîïÕ’;œ2À±ŸéÏôV™G}]BfróC™I,m“ˆÕk{1ZÉÿ6¼l¨+¯1µdšÄØøÙIúµ>„þp]GñV­zú]¶¥+ìÕÏþ-R\¡ík[Yøˆ‚²Ç?sG•ÛQ81F„2d·X i:u,¾W»„–% î4Æw¼$‡ëa¢-xÇN±Œ!‡îJ( w8NƒÍÔ%àæÂõû9»~26?´ÈŸgÁ÷íL¥çøõê#æë¿Î`oÑ÷X´àýs ÞÓ€Ìð=õ¼Ã•ðQºî‹àû]YÒ}àö­_öÙ;ÄþnÂÝžÅþ.¯çAø§þî¶þ³‡ðktráÁ;á²~Bø§i÷û"¢Íëy8âç#0Œ¯X;Àiõ˜øÄkȦó0Õ§/âokñ3ÖŸA„èNPÊŠ(`ФËçý2«ÉK’øÓ‡Y,/Û¨q*\$¥áQL—j¹À2'ð8#èGü%“9¤ôžÐr½DÂ|7œ,»²ZÉ´ H ñŒmn­Yµ™,O±1òúV¿ìjJi7ƒk/jŽ÷:äx?mn^bQÁÄ‚~xfR“5äæCX¯5:·f#0ü »½ÿÇ­A,C{g¯“˜_1ÆL‹K„ š¿Îœ…0Gx=Ó£ó/‚±˜¸ˆM›«ÁñPl¥œ^ÿ7 ƒÉþôº,¦0‡Éšï•2ÿŽÿm¾œ/€·ßì5ko%0¿¿9Ú2¢Y©·Åõf.’ýÍñÔ¹D¥'\CŸä0-‘½P¿üÞTmqæú ¯>¹€"«»ôô›9ü¦ýe´ÔSŠ^_'”ó«“ôž¸é6Šv=Ë®†HŒ“‡««úiU„ØÞC-¶Œ7Ò›Vó]“þtµau¡ÌüKS|¾œÆyÓ®ˆlnæãW›ŸòW¾¡X…â?LkBe7^g¸u» ^‰×»è3t ÂESÂ4¯M™íô0ÝhBEË EM¶Ý²œÆ&;®`!òú©ÓÑõ¸*ÛºÓ‹ÕÈÌ'Zë›t?Ó3 ¿Îàès6ê“ÙL5ßU]_ŒnX¿\xr£ˆÀ)hžr ík€SØìLhЇu{pÊÛ´ihrKaU…–âéäƒÒ›”KŸåRŠ—àö–ÑùXø.›ŸþKL¢Ùy“ÈÅIÏ i§Mÿ3ÄèfH(YnoŠ@e:&µü˜³Ú"”©HÿlS=E,ήêîÆÕ£›UÖUG1ÞæZßפʜn\,ßÛôÃKñç:rq‚§–ãKLÌ3ž¶…/vµe€gXȘS³ò[-©½·lÆ=LÞ3õÃJ0gŠcù-Ÿh͘l³ͽæÆöµZ ãG†Ú=®5­Q`–m:§N à°Þc1øNÈ…y^È¡Yú…ý¦5Ú L×ïlÚã:³¨­`—óΙ5È¥Ùã2–’Õõ†2I({­ýüMføØõe»¥™½‹öA£õ?V$˜_ŠæØàèž_+P„‰{ò$µ!Š´ÜH"²pð¢n_8ÿ‘i_LÚÒ囹ýÑ)Æ?´5¥~ÿày£¼½·w°ÓÜyõfÿÇ&21™‚ªÝZŒ`íhop=bo,2®Œå-kžZ§&EXXã% !¸ZkvX¬Óü $¡ÿ}îìùEƒœÝ_µælìÛ$„͉xð>—´±ç’‚œHôºýI‡Óí™’M¡@¬¢ó÷Ò‹îæ*]ö›:œ Ó}2Õ•A­Oß+ˆ¼(}bü.D¿TàrÁõR°«m`ÊOBšùðMÜoÁ,ØÇÒöÎNãøx–‘— UÈŸÈÂ…R'P2­~v©]P3Seo….dF* £3"ö;çS<ÌYw—i„³x@å³Ï·ôXB3LÎ/  ÕôU³7„¯)ü,Ò‹£FCÖO7,Šxáüô^lŠð9ˆ_aV9í[à„ت3ç¯LwI^2òsÊ™rµÝjZ›Ÿ©O:&ª€È‚âtšyÕ¥F‘¯3¹Ž³ )»*_ú«…‰ìÌjR¥ì%z/i‹å/h’cI5Y ¡ÕÊ››|¤¿ éj-s툫]Þ¶Ôncw`éV»+žj·à{‘vEµÍÅ™Kð)ËCfLìç;žŸû”á©îx†ŽÌÔvl( W+ÒDá3_X+öO›÷z¢³¼ Çj©›`X‘DnjÈoôýÓìeKÞÔ½»tûœeG9[øóÂBaŽÂî÷Œ%ÈíÆý3ƒ©vîh3К&æC+<„[é;!è ®¬$ºSE%tûr$iocËdÂø·ÿ¯ãïâÔ?¬¯¯Gaü9IÃ¥xͱ“Œ¤mb_^óYgoþN”Þ¨MßÕ1X|àã^gÃõkua=9{ŠÆå-üÂ$€:¯HG}ÁO/ ŒŽ€ãñÄ¿¥ø–Zà[jo©¾¥øß-µÀ¬¤Ètû”È’:øñã(wðè´XÂ`t…˜…¤ÝkÔewJ>6k½¥ 8^lD2BHš´7æxÐô%Ó(©:¾#•‘üº¼n¶ÁThÚè¥%K”áÆb-eMNì‘I°& &5Z¡À’j}tª¦Þ¥ÌLF§Dö©¢µ× Í–«H$òSªH’–%ÎðÎVKÙŒÐ×.½;ì‹6]¦²KäÎ…ôY+Q9ëo6 β\¼JÞµÁÒ(ËèJ%Õôh;6ú©(¦J¶4'FwkÀ/>Ûå Öm:=ö •­¨7ØÆ(›z)eÀ¢ÌQÀ9­mÕœ%ŒØ9w_.T¹ùΓqˆÍ­øãTýö8ù¢¸:íx¸ª¿ïy‚j}P˜y`V¼\ÊŒº¬ËdS)I^)/ãÎVå…ãuCˆ? ®ÉÈ­]´FœÂ»ã’®x(»õ9á–G§šd ʯÎß+&wåÕ[ÐqÖõL—¬%j§.dˆ´·Cuágé+\õ“u+šÜ¤G ÷ÃÑPêQ3Å Éj{: šùØê`•&·¡;ÉÝsÌ”¸Œ]›¬ÞÇ5!»Ì!ß-$ŸÑUÞšk‚¤jf¶.ZW”Ò‹à<,3ÜpŸÓöá°ÀŠ6€Ú°Gâ^_vÃXX¤ÂãÁ‡’b²òe¯yЬÕM|mµ±VðÌC[Ìib/·[£ó‹;¶²à 3Õ:Pf$áG€//n›+h™kȽØÝkè·æ™_«S"1’Ñ/?¼yñÒô_rô[”æuœQʶK|ó¨X.ƒÕS¼¼&Žz0‘‰ ²• Øe35²œ6IK2œŠ±ã1USÓz4”2d~èwî-3z”þ•Æ»ø~uqÃùº37%%$0&±Š|7D³âþ-uÇQÞê_«P‰Ýƒ·÷wÝFÞºÒÏî3v•ñ“[P~oý@“oØ“a•V;¯÷'&ömûuãØÔr>¼n2ª_›þøæ¸q$5L<Ü>ÚÞ?8z½½·÷Îü Ãúµ™ØæübœŠ‡'„»´;á4‘¢ äïbV`u°fÇÄeÄfCô깩Qhºàž MË;4ê]ZCçàVPTÓéb©x/ãªmñSí¯´ö*Y%Ô¨ï™ñŸ³t Ú C%‹̳¼-¨›U {*ì"é ‘FÞΖ“ñäÒDm†Åì¦M!¢s›®V"„–Ö‚^Ðe) ÿÚ4]3¤úKà‹]Ã!Ïóäˆ÷6 ®Çᡆ‡ÚênHhÒ†«üwíûïí9“°¶¨LŽfj¾™Mô1ÝHÏÐ-Òx@]²ôKé(i v›jQ,ÌD 좺 ÐfÙ§ÎgӡвbºÓ/¶÷Žö껓£7 «…;fGP}ˆŒ¼à¤žaðÕü¼«1§Íi3’d:ˆ×/aÇ…w/!1ÜUÎ*uuqÕw™xpè°·)h¯“íXòp¨*VOg•}•ðU*Ãäü= CÃæ€ó—þiõVÑý®CwÞ;˜GH¹}a«KN,ÜMñ”ˆ ¤ÓFŸ/8:6è>Í0ð¨b Ûâ¨æ`—¥Ä.¿Œƒà‹,ŸÇÑKÓ’q¢åu…-=lK)1Ì¥øxÙÅ@ nD´QaÛi2¾‚æ´Ûÿ:˲Yö€Eè°bO\>IžC»ëVg Y¼³¨|ìÍ ì–Vü¥e´´Qtt©xR`Fr“z£÷7¬™;cÉ}ߘªÆ®V‹Y»°€ÔËl¢£Å1rGꆅ–áˆÊêrÿ¨EI‹î$–cðV«$Si;; '$>ÔÆp¦ÝÓ^xÒº-œÙm^î•è [á~εmñ«âhÇ åp’ö4äò"êãƒ.;Ì-= v÷)¿¼ßøëÇ6*(/³cïeö8¾tûëG.ߠՃƷé!iÝaÊ$MÀàG‹ærO1à°'ŸÄy$ •^DîÜ8áêqx´»ò¢VzÞøáÍË& ð9²P»ÝaÂ➊|6çá8NÓ‚Ü(öï›vÚ’~§·€ø@½6<¿äDñ}íÙbB,}2(O¢7º®·ˆïnh„e9~O 1vø (*O%IDMÉJtš°t¯ê¯óh+rN}¼ È+¦ª~.!­J,:KZ¸·º—ÉÞ¬²»ê<;ÕSæ½CužQˆ‰ÄQi ôLe3Ðç` b–X ß+ ÔKV4pXahXĽIM@¨t-ƒO_JY’;ù4ì‰^=6¯å÷pö&ýÌToxsÿ ßàÊñal#¥²[O¹´ˆÂ³í üdQVµV6OèbË«»8ÃåÎÃwX}ªÂ™WÁ&b ò§¤Ä’b/$œSÊI3¯·wŽÑñ]I=Öa¶h'Ó:Þ¡h½§TŸXÙû¿ö€Quuy}u%µWÀS/·¿n«ôçуüïãGñ¿««µGk×ÿ­¶ú¸öp}}½V[ý·ÕZíÑjíßÌÿQ )“Yuÿþò‡ŽŒ‘=¯[yŠpPWÀî§œ¡ö£dpMÆíeÃ'é¡s©Ò_Í+ºsÌÞä”?ñ__+Ãñ )ŽoŸÛø “gR›Ûø6É ¹+ð'r…äÅ={ñ—§/þ’üųÏÎ\œæäަ1ïf߸ë·Ïeìf…Ä~œ»Jåa­ mÈ@¬nÕHI•xÐݽÉéÖbP¨Óå~ƒé„IƒórÊà•%5ŠùØ1s÷/`½™ Î64„f¿Óœ1í§\hXtµ Ó-¥“”è®g§uE—¸,ø|6½‘¬µî'Ol4èÑúþÓ°ó÷jEb²CÂ"® ¹Œ'ÎåL»‚,šDmDï{D4‰š"N|#§ì´§ß"F_ô¾Ÿ\áÂß`y¦ Ža¯]^Ígæ± R¡ӴHÖt¥Lw FÝsÆsáÙϘŸª×äö¨+‘J¡•Y]à¨lõºšÞ“GEÄÌüñ/M«‰gnÃJSå½á2Ùäõº(š¸M§»Û:O‰y»]Êi7E4\dâ 62 Rq áþ\ ¿év„ * •Ö<œÁl_/N¹¶úàoÄù-Oék¦| öáwíTÚc©K<Çýñi™CÞ€ù׎¨X ãP<#¥v¿b+‡Ö°uÚíu ‰"&Vq¼lÞ^\?SÑ+÷)I¬Dg¤?‹ O÷¡lêB¡â†SntM¹Ñ“ÆÑëÝâEí¸ßCÍY,Sì9Á4JQÄDö» gxؾ4{ƒ ÇÊÚ*:-Šy´×0eV°ÐÌ6“Y¤6µ@ªÒœPšµôÍÎHyýÆ,q°b‚CdßpXx«@™Ë¨÷I‚oÊÜ馭ñøºt|ò|w_øéƒrFהމ·7Z†Š;1nSóÔÂ(j€bÆù ¸ ×¾kÃð ¨J¹Ké…"ù®˜yìEð,êÚã^f0'»;/ßîîÿ ,8åyƒñŠ5ŽÊáp/Šè%"ÐhA+óÑ1'² +é,}~Åîø"Ä…˜³_rïÊiª,âå5ÌKEj¤;ô™Ä³ý4ÊäըH´8¬ãÚêêûþ1‡‚?ÎĈí\¸oŠ2©—Ýô4!ËÆ-µE‘›,ZY¿òä°²¥ý¥Kÿr8ÆDˆÄì6å}³…Kµ Yæ×¾úùA«ùéã¸:éwa•S,‹ü4š¯Ý—IÊæŽLfØ^ôš*å9Aƒý ‹²‰‘`˜L•\´†tѦ²ü1Ô²ˆ—S±ßŒ ®cTê|°ú÷GhÛs×µ—’ë1õÆáø©/þªvŸ ¹'YQ1½-ÙQFã·§4§æS³j,¤e†¾µ¾½UJÅ^RTY’ÉB¦D{—ð3Ëìôj9%…øÈ–m÷â¢Á¢dK^ä•$°É”› óÊq¸áì8QI%n²¥ú¡—㙬Œg°évè¥@}†ÿ9›$r¸…‚ ¢7qæ£Öåv³Ýþå§ÆÁ‹_$1µyS㓃C±L˜9`í|Sª¿27ž\uÎþ„:i&í‹Çë¾NR«^ŠÁ¥!_b"íÊ{4XÕJ\v/‰Î™&¡p vJ"â[¼ÊÕËrwJ~Š ³í~Ú»&O‚ð{†Ï•ªOÛÍÞY¯unîošÿ¹»³½°Ïý'ŸÚÉwÞYr嘨åeiÆUžÞÝÿUhÝ̇“Ý×_YЬãä¥`ƒ«¸ë?6McçÕ½ò\B;朑jyúLtÉôö–dEüUæ^Õ';Ç4á·éïD nº©ó;4ªýƒ““w2fÙ¹+ <GÉ3ƒØò}e®ôrÑJúnìYFÈPãPÉ)Ùp¬Ë¯Î%BX26ño™~—f!úBx¯ZÙx8§™º(öèPÓ'àö˜ä¸¹I_³´øþt10) ð•Î¥'3Qi÷R³Æ7Â{ˆÁ:'†6BdÈ<ÎãÁT3Ãv½òôÄÜȬ}ž[ÉöHæ,P{4we¢y¢y3J'î[Ñz`Çaû.²]¶Ú£å‡–/¼ö7³ÕaÍé¡¿h;Rpù*mŽW³÷¶¿Xo8€T5î×ètÄÀ(X\¥våáªÛ!Zf3Û9m™gµ†ÄŒ‰û /6lcz9Äl/w1ðiÖRèå¤î=94 P¯?¿d¶ÁÓQéòQ9uúe[B¹E³¸ ®K©*à]D¾]­õWhÊk+)õ)+áîÀ=ÝóºÌ¬_:[âò¨'ë6Ç*ª;ç¡oÐ¥™Çš)‹/>Ö™rGÀ90±ôÝ­"áⵞægC8Í’CÅøEÌqàUǽQëçÄ¢'ï‹uó¾O8÷ý2Pú¨œœî@\õiV=88™ÿ1é¶µâä{Î}®~žÓQp3oŠ•Ü~¹éq8¸L~«5–~ÃÆ¤ØœžC’¬˜}5kÒA~½÷Õ¶¥nî°bübVïìªwJûµtnN‰•ß};´'m×þTÊ‚ãñ±Rþ¡þ8¾¯¿®À|ýÿZmõáê¿ÕV=^_£§Gµ[­­­­®}ÓÿÿkôÿìA¸»—¤iïÚŒºì&Ý2Ük!J][~¼\[5¥ÁðZÂ…”ÚeSûûßÿí -¼Lggæ-(€'çí«­áàtði¹=¸|Z†É±µ0O2ZѧêÌ¹Íæ›£±uëe‡ÊûØ>OÙù» Y3û#À@MÔ¯+iäbý—­–¾’ÑÁÒ_³9“ƒ¥[YäOÿ‹M–þ²ÅÁÒ_58Xú2{™øW08XšmoÐÍLo+{.v»ýöòí­ ÌÒWɪ.Qýrì üÛ'‘ –/žÚ˜_¯¶j4‰ÙÛý¡ùªð öº§\RâŒDÞ7OÞ6Ž3u®Óh ÓÕÞìïRWqIŸ`´Wpq utÄ»½l¾*ÇÃãlFùý¼ØÙ?Ù‹»9k÷ǽ9³Ù=ØÉVÁlX×7cp‡'Toû¨Ñ<7-:ùi°gÿ™Ñ›@`Ðw’@}©d<àÄP3ÚÈýS³éØsà…³N“*™æeëº)F„µ2ÝìûxÖqÙR‚ê À{ü4Þîïüûüí‘ùƒöŸ7ö¶ßÉ#ØÉ;‘j‘ÕÄ5ËV–d±Ù’LÇ :†g‚…]‡}úaùu4)ÿ"‘%Mq…Ú Â.]yFÞ¯½(f‡ܧ†+ÆÁ6Pa±RE6ïl²É®ˆötd"kéL†%[G…z*îàñB®ÄŒ†ŽøH2tß"ÖÅJVµbV­­I,;õ·ÑòwBçÕ°ÛY]ºUÊÍðŠX‡ö¡‰¤\Ž{a5õA%دVÊC¥ OÅgÇ ,Ýälw‘«›.Sf¡b,ø·ðá ã™èÛý½ƒé ðLvâù–¡@ÏG\Ô± 3ù„HnYRl' ¾Ã”§×PtF¼ ¼P(û] VÈ‚àå§b¸LRž'lוâµÃ[°¢è¾Š:_4pHŽä‚‰4µÞA ë4é÷ía=5â—:ð’"š<;Ü&™>*nØ´î\k1|â#ƒúí³.[ì0̵km®Nvhžì¦ÁË.^»8ÄüÈéÁü‹ÎâÎÞÁ~cNÿ×—+4-H5n1Œh¿hûoˆ€ÜÝq`ɪΧÀ u©]«Ð_kÁ«¡ÅyP„º ߃RãéRcWJŠÁÃõ~i£P÷»L×ãƒ_­Kì—Í [ ò¢äè|RÍ=<1kñ£÷Ò5&틬£Vj³7 ˱۵rÅY1NÅÓMPvÍ—]Ë-‹=mñ5YòØýEóàG1P2ȣà ! Ó9hOʇ…Ü.¨KºßrÏ›¶èüûd!†Ú̯Ðés†Äs€uÜØ&ƤñÜAVäÑyKº @ 8÷uÄÕ€ì”T°¯ŠÃŽÒñäãÕ§ëߊ?dª®MW][(®ÖÖÖ<|ôøoo¶é«¯ï}Ðζ³ Ìrƒ@<87ËR¨¯—i^……ñe¸åÈùmÍw¼¶Á+KçE:^˜ÛçšôiÌøÆR²a _—3Ã,ȼ63Ð \ˆ/€…ϳÔÕ®ÖÔ±½úµxÁ˜¤ß–¤FEÓøùäðèàä@ ¢CжœáÉ iT oÃØSEŽfXnþÿй"\¡ä¦É¶¬ˆÃâM:Á‡=§*'•Èh7ÌÜjhÆJ¯ç‘ë~%l‰fóß÷n6•zgâÝé"׳&PÃ.mv*²UúL ª24V·%öÍÀ§}n| »(ºà™̰•ž†¥2†`LôÊW@R–‘¸beE~ž¿nœïz´K³h²eNT2N1)½~gÉ íÙdU°ez+c0¦qtôúøe ­?‘X!áõ¥«d§ó^¶Q‚â.CÁX9ÊCµó”µÛOƒnÇBe+MínKÕ‡#â-“TÃÓîöRÏL±?à ³×Iêm}3ä²xF`eÅJ”|%0ý_¦{µu›½ÒèòòrЪ@ oÆ û`±¢^Û~[¾vÿúð0‹9‡›¦ãðŒ(2Hä™ÉÝbQƒNÙî)¶:åé]Ê,‚Ø, &í‹:Ý-]ŽÃñ1™Â[÷Ø%5¼$PM“IgP ¼Gq'—“^K|ѹ޲VëuPSmõ;ˆ~èªJ —nÚîñh+ŒÇpMnëæ§Çóà‡ãçìŸðsc÷g76)ÒU_ß#k8Yß±‡˜ 8™U‚`¬ OeFMXDÂ:,Û-u—“e&Áõ[ƒ“ºð"µ¸•"xòy÷£¦F)bïÐ(¡«ƒ‹êTeÔl–ƒJE,e‘½xв³î†¯ÝÒT"h) ~­˜ôÅ€KÂ)_]hVNEˆŽÎH¬ØÌf0E¼FW²jx7[IÌVpŒ5á%rÅ$ÂveÝy°2„(‚ƒ–ªø°?–ÁHŒ‚j +„÷ _»ÇÛ2ë_’R?4ùK{¿‚­•ê>²ý^Í"iœ\lkfÉ­¹¹½„~‘C_Q@œ_Dt~!{f‹åˆÍÿ¯CL¸jŽwÔB˜QÜ·ûn/¸ÂÍ7XÅ7êï/Ü–zq rç”'&éeÓ8¹i8R⋤ ßbH,dó÷`LmÏíÑ¢¥{©’Pþ"³|ßcж䲛ÃÜ‹íëßìoö÷ÞÍWgà"kfoÐþà T´¿»Kñå}Ö·zÁí-—y¹2gÚO²>E±[W~eÖ˜—\5‹ÊEŠÅ;ZqÑœP[ð©\þV¦,ñÿ^ÿ—žo—GèŽe’¢0«ÞTi4«ª`eIëRîË/¾«3ª^Ú©øºé2dfCk™Mæ¼kSdô¡zÆ6Ÿ+{„­0ÏÃÕGZnz5Úî]e?ž ¯í5SoV§*·}²Y¶“²³;ÒiÐÔÏ/Q¸ß,¥þ{ØMưªhÿÛ¿ÐþëÁ£GÿeýqíñƒÚㇰÿZ][ýfÿõ¯Šÿò-TË·P-ßBµL…j™aK¥Ôø~M§£þòzûçÃí“W{ýïk¿nx‰ß 7JDï¶þE×ݤ×QÓûÈ& šªæ»ÝÆÞsªGÇ£©¥7B[TtôáïÎýµ{™|d—ü~ó’ µ›&m8Gü7+dL]5ŸÕŸOz4øÒjhðaÿ¾µ a8¬oÕbËúW}^àA1ðÙe…H%XAHŽ©[JðFœ’Á‹ M뉾êØ8þa7m†á&¾‹…ÎýŸ ™…kE"óË xàu•åÌZ_¾AkJ*E]S{§‹ÑV‹›EmÚj(3cN0)îÚâ²¼™‘#ðKx‰,qÍbÁ†Ùr쇺äšÜP÷ Ofæ.é ”ƒÒôšèÒK–rö§êÒ” rºÈKešJ°V:H§h´q>¢ Þ™ ¹pëñ1ƒî0l"ÿ$~¹4ÈýÓÉÙY·Í>Úa£ìò¬ ß £Ab]ëÔ–——ËLô–šq³æ³=O ðº*H|÷e˜&\Èî²A—I†¡v虚jò·Ès¢uΔ0™-Îrj½ÙØ•ÞÊ{ùß9Ñþ1Xo °æð«ÒT#ÙKþâ½´z/­› Z1?5ŽŽwöyk?Ú¶´®ùÞÚh[9mǸ3Ѹ™,L0?‘¯Ù¡)zß=Ù¡°;õËBívkìÖJœ˜âND%uvÖ›¤%ñ ¿-v¡t«Ì åƒ+jßd4Û„NEíÐÀÀV4#[Ö\Råj_©öFœ 9ø©ËÞVVùE @‰^µú’kΉU<·@ªòº„¢’t¸¬"qPfCûΈóãI|o ±îxËÉ4“Uw5Ķ–Å;BÐý½j’«< v¥n¦šûDàÜ#éÓ>u©9 ÑÂ7qj©pÙ!J±?OpõÞæ>Úw±d5Gi*~ŒD¡âÌ”#;ÂØ…qu}ý—ÚÆzíR «"oV/3A„òb—b„âÔ§w¡¬k.N‚âÙxäào=®×´+ÊWÏš¡.L‘ËÐ!§s£–©=v[,µ†ác,µïN-Õ$|_ Îðn“K¨¬ì/iõ'æl[“ö±‰},5~Þ¥]ØÞÝ{sÔð‚?£Ž˜¼é=Âňð7c4aºRܧ)ýìSLÍÆ©s×OÏ‘¡3„eÒ¯Ÿõ÷Ì”ž±ÞîÇ+~»Ït1cÉéލöU—Ðqº¼f1’[>ˆàu ¢cª"N§Ôe(áé6•ƒmb95æ]?)<6â@$³æpÖªL>%m„¾&vAîH4•jcŽûÔ’Ä1ÌW«^zl¯#ieåoºšACê?4Ì!\×ä‰öAÓfOóœÞÄûó烯ÍqërX¦íl‡RÞŠF6Ÿ…ýÈ:eüŠpÞcd iêši8fž‘,§I'œƒ*œõ´ÿüJߌ¤k»$¥ÓºfHÔKŒÄ‚¦­Aˆõ¥ã5Ù1¬ÚØn˜È± û¦zË㈩ºöôM™¨5[€kVMTïx€v.Ô´ïfÅv³¼t>ä÷,¯ŸèÛŠr‚Üu¶ßy1ø]æaÁÄ¢j¡ ñ.Ð ôÔ+O^›ÃnçéJûªƒÅ)!3F©8BUAc§vËëu? è|ò‰ï®ãA™Ô²¿z†fŽPìãzxt°Ó<Ü}ÞÜyûÜƒŠ˜ Ò1¸&-#Wˆª+ù- ø¥ÊMÐ0?ô8*ÇêFÈ)¬–fI0 Q±]Ñ><+ú|$wÂŽˆ¦rˇXoˆ40/EI‹1N»£±d&öê­Ð–9œs8CC‘M»×Á^åÛÞ­F:Z²‘†³<\Уö½¡g¸!šXâGnÓ/ŸäÿámV1H*bÛ{jùc3[’¤e]B4¡†,.Úm·Ò”î…ðÌ‘c‹¼B.ZM+ Á笜‰ñ2xlgÐsòヲAë¦Äe—O¬lJúï36èc>~ÒÇSÙ²Û Êg›:;/¢›QÆõñYè„»= ²¡€Ía’Hz$±ŒOðRÌ~uYã„ ãNHf/+FÌR‘ ÜxVE7ºΗÄœ°Lì(á$Ð¥bµX)Bpæ€ÞJË=›Âð3‰†Ö×TïµïU×,¯=`s_lrS­ÞK ×2vÖ€Q–î­¢­W‚CCE0²pãqh ò8qãE—Þ“Ëläôx¢ª›Õ«£Ñ«Òºf”c®½lÒdÅáˆ-6Ñ$¬ñª´qP$¶/’ö‡Ð\ªFI‡¥Ø¾€âM)Þ”â?3ê5‘à…yhÄŒÀŽ‘ ЖÉq*2é÷ý·Ncå#KÒ&ÀVˆ…Æ‚{[œü¬S©ìU·Ír«]γLk#’½“\ÞË U"ÒG‘Bû0Âe›ïlÔÕd{ÝôNS)k.h:ø¢ 9s_Þ5_7^½k¾ÞÞß~ÙxÝØ?ÉÎü9ŠŸãê¸L.AƒÖ:—,bÔè&E‹p)ù .h÷ªç#“H~+ Üõ¹3Rå•ë%­Æ5ÑŒY,}m@‡ õÜÿÏÞ¿.´‘$ûâèúj=E¶ [—Ö!ÀXnìÆÛ¬1—¸Û½…T@ ’J­’¸LÛûûùpâ¼Áy‚óåÿb'~™YY¥àvÏì½Ö´gIU™‘·ÈȈȸ°¿ugä‘pç{QÐÓÆ*©«£ 4#E“ƒh¢ã¼N!èc3¯#M8N”<¡2}Ñÿòéß»C›Þ:=ã6–9 ^jN›U5™šóhèEòdµòr¥äHhIë € *È*k$óæÖ…™•ÏP™}ôª8ý8Ö“ùrÍjšd©U›ì‘ínèÚ˜Ò**¢a|~Úy°åר«s7"w'Cn7¿ð©ñiñÁê税þæã˜o¶òŒºoܦ…ŽЦ×B·‚qÉ0üÞð‘Sõ.Ѧžç|<†ûk<ÑÈņÌx:Û#[î¡®Öû<ºÁ*¹çäãÚ¢šhÎ5£EdZÖŠu…H=í…=B”…FI»/Ï´öÁ>ÿ†j¿MBBä8“÷ã·BÕû“Þ8¨šÝk‚pG“³hŒ'”íÞ®„˜¿æ9iר£íOY%2ØÄIè{¼ßòÅá?Z,¢†ƒÞ]Cpdrà™D•|ÉdÊHvÄ>Ÿˆb¢O€×èWx6ö8ËÙúëS-Ûìj…Œ«äî.ˆZ|}lé(¸ IŽ[Üf4)¾[qŠIȨ½l·«´öt™ )HRv¢Ã›í‘™„»ö%G)$>£móüKnuÂMö®éæ|M=5\ÌaÅÌKÀSC¼J“òºü"©ž„ºó3Î6:ƒ¿ªÄ€`ÖFTöƒÃõí=ñfwc³ýnw{“DÆŸwØë­ƒ½÷ë¿Ð6eµŠþ²PÖŒZ–1ÒH ŠÀoEF:v‰,†]ŽÇÃV½>!1!ðj±YSýÃΩ>é\ÕE9Z—MœÓwlš»‚žUÛu¤ÈÀÜ„½ZMgÛq\óªšíÛ"häêÙÌxKß xAOigž 4§Ìhx R‹Öñ…9 úÆõ—ŽG VÛNi+ôðÍùkYÚŠ/ÐJÆf±U žGvŒ0ð@:n::MwÝî·ˆÇÄfð•°#LÚce˜ùKv[U¶¯z¦.KYwiÜË1XÑ ýíu´Ü?Õ ø~ûߥF³ùTçl¬,/¯üÇž¬üeÿû/²ÿÕ–UV§˜¤³#˜±ùÆŒD¹¯Íñ¨S­çwÈnÕS¦Ã_h6 Óm4ü'Ø ½ÉðW[ ±ÁðŸb/üU‘UF¤Åå•òW„¼êYŸ Æ›àœà¿é…ˆtñ*$QlÀÆÂ°n,TÍ…ÿ€Wþª "I7[fSi÷Ðs/©ÁB_}Ñ)öuª9ÆØF5Z;¤„áé #‰…ª•‘`¿$—1´J†‹5&žžÒJo}Œ=­—=ü‹<é’û›¯1ûwÝ`Äj¦œ2¶q$›—jjÛ%â†!Åð,žŒ†èŒŽõ.áËGÜ—3eš%F(€~ÈŽÐZìpþeðaXQ¶Àe {1Ÿ›LÑ€Ac£#4*ñ¬"*¬ ðÑÌ ßè²±!y"N‚ÈM7@ÏL_„# ”>õ †ÛqUÖ)RqNI¶¦Š:36€ÚX›»Î2 gƒ96-¤m V¡Úаeè)f¸«ô .¦« ‰#ï âzèQ#¬ÀM9.õ†2ök„Ò´’š$EðCž‡2@,X;<Þ"’ÿyhOshö~ß2 çù "öª›nKuÆn4Nmã æ“1›–Š/ºÿ~cï± `@ ÂV+Å÷#T`0]žbẼø^tÚÔ\x~M×M ÐTgtå‰Îë>{º+ÂËjq%w±jrêÌÅTãbý:€ù«¼à4ƒ M´Ë[JqI‹œXL¹8‚‡cøasµ¢Oy8•²4g[ÈÈÛ!„=¤Ù19U lNM_´ßý¥ï Ý”ƦjFÂ<\¯¯§#F]Î[g:àÑØÏ@ ²Æ›­¸{ñçÍèb.¿“¹~Fê’ØRTÏ•“ÄÉ_¢-“0O±&$Ñ+±„§¥ëÝÉ™6¤v;§‰¡–J'vïNFÃ<×%ßåèº ‚gqFäjaRj¤v×x´8õ¤édkzºIZ¥Øä•“?›øÙ`'éq8F°Ió2ìM"µÀ2U 9²Bo[Á·ìLy”iHØ%|]Œ¿6µ#´2‚›Ó÷ÊÔ3„à›zØ,I^²L¤l8t%ažÎoï}ÛtÞ¦q™Q™NIÖ>ë3I÷ÓgR¢œa ¾ìPâÛÕxˆÅ)+I®+Î4kÇ•­Õ—ë Ó!IÍò0FDB½^›+‰w¤C][a1wÄÆªVŒS¶ ‘ÏÕP½°…èWµy-‡LX¡C ¦ŒÁŽŽh$sžl;j=utl‘† bS¬KÈÛ±ÿ_?ô"߬چ^ª| 7Ù1I‹Í]‡l¨ÛiZÆ]{I”©à¥ ÍQ ©X_/², VûFV«¨+ßrÌ…‘GG¯FäXëÇ9°|Ÿ\^äØzŒøæ®0‡Ð0;5%^뎎Ã>øápl„< ›ëõ˜yícˆ`ôŸëá’ª"J®I„Ní¼«…é{Üc£CBá‚?è{¶%vWdÚa–°ó>oüWò‡|†ê"$u¶†^6Ìß'¹e¾Cú>‘HõBêÊǃ¬Ê˜ŽEŒµ™6ñ€àX‡ozžÏ©]Kt-ŸãØ›#¤q]«&n’œBð&ý™ðE »¬u²ƒùœÀè‰ïŠà:M|xÿ^âúe«å´E¦Ùœ3¨7˜7¶fMx3u~Y¾Eƈœ;9¶Šã2«üÕ&ad£-âö'-&ZcB½ñ ôÜú:/ñÛ¾”.$Þ»¹«x4nÛÞÙ| Òe#˜DÀôs=éúá‹;#oܹ£rå„Ï ‡CÎEš§ˆvãó\n:´H¬-ÏK/×¾*ñÔq’×G§S[Z(9u%‘VÜ9ÖüÞíüØ4똫²žÔ’ª›É¹ ’"±Âtð¨–.wAÑ,’ÍD†D¸|Bã~Mý€B/QUÓC_ lŠ9P³xcMp< w€Tã³LL¢T.ç$Oü{œsÒÿ¹ ÈÎ$Lô‡EÁt=°ï¡vbÖ’q·Õ÷kæ]"¶ë•4uEMɬÑwäf|wúèïßÂ6³ÃÞÑÕ‰©î"â÷ß§Ÿ&Ñ0•èØ]qЯlX¦Ïv„+Š7 r6$÷7½Ÿn0eÉŒù¤¬÷”;2·Sƒ' N!éœ<9:×àW6#ëOfKǹäRÏÌ-âó–ï1Ûáyñ;½é P¼3‘5#'Þ T™œú=‘ ­`&uð_V UGßÑ’‚fz,ýÐŒŒåPt±çœÑSç!çDŸÎÊÃXþ1"F_B/ž¹lÊæ_¤„Ÿ¸£^¤‰ Û,ùkSåíõ¯·Þn¨Æx­ž?.€Að?ª %Ž÷hŠ%) ÍãÍÀŽb*ÆâX«Zr¹9:þM ÅxoÛÖ¿GF?×R¿Q´*q'm”ïdFMSÒ¤<6\©ÐYüJRÙœ¬XGN/¶¦hƒ?Œ³?Ý_œA^Œ&許pRaÝ^eÚ^wä÷=1Î\#åøä×vžm×0´›€P•³HqC Á -7•ÿ{Aå-ÃÉeVã2\èÕʤ =K:\5 ©‘nî}¤F3Yhc?£ÐâÓd¡ÍƒŒæÒ¥^o&‡÷Ù¥êB.éîÀ[€Ý-5þ©R1‘²6§Ô¹Ãý÷Õo;€Êɳ֨i"ðÏVÔÔÀ#0`sñ±àì‚uª‹«'™TÚB(\‚Ppœÿ¶s,žûßv [ƒì<ãE$ü€\Ö#["`Å&°¨lí‡3Ümé°Ó3ýÒÎyK™8ZÆõ1¬‹†2zb²)8Çn¢iâ£[?×1'­ÙCMméë­ôƒÓÐvTÑ5A,øŒH ³2ûA"³†¦ 3J0è ]ÓýiU3¹Xb™¬.`;±×Ó™gŸO'~¥_´ÁÃØ>"1ÏSQÕ†Aó•Qûn¿ïz>½¡±Ë=I 0£ñhz¢(èé÷ë§ò­¦Ò½“^OGÔ¥¤Ä|Þ˜`;çJ%1,É0þ­Âsîö0Ž…ï–™Ê³ˆÜÙl̤¯îÏdøs ã”(þ®DJ¾6£tŽyþ3 òñO/i_%³ÊÆEœaÓJaIÆÚ±-èa¿FRª‡ÓŽ…^„[¥‰­÷CZa:ü/` tã±ß\7”j/gP¼1ôIMB1 òÚ‘?ôˆ-¡AuHHìÚÝQ­&-2µ½’3Õ]n—aàH8¼‡Š þÄï”ËiòÀFÈ9÷¾•Ó7/Ð[Î~¨”•Cñ>“Þ¡/€™C ñ\Ó=U¼k’÷)©ïžoÑõa¡}¦R®}åxfÖ´\y(f+Åo”}iÓ-@|Ý€“e„ñßgÎ*æÜ‚°[Uà$’NάÌòW’«bÜq.Çŧaqšž¾H'ó¾ôè©×¹JŠÜßïöü„ž\×Ëë2é`|ÓocíÚì2ðÅÈg‚˜YT‰b\‰@&\Yø’KaK®<«›gD™Â77G4Ñ‚GX(©˜èVåÎe8¤N¯)[!~Çn$ˆ`BlÚøÚëic“˨b<üÁf˜¨%Õ ¾¨!I_ôòJGoáTÜÖÎï¦ôšÒ ´»©ó3,3® JÆ” dë O-’Rü0Æ.3 Ì5»1|´¢¨ ¬p#܉üÂk8çÍ].Û³ í“Ôv*V”ŸˆÆ‹yå8¨|e1Ûé»tKu Ž!>4V¶mdc÷þöç2ñ6m©‰X.ÎqSæ"Î90„!·_­:h¶›¼<í«ò8ìzwã´ì;L¯\²·%]z¶W5lD‚'"•Ítª5QfÍšªâwz¾óß¾ÎÏvçÕ¨2]íBÂJåa݉ ùÿŸY6ÿíšà€D#d{§S¸¦ÏÌ®³¡=³°†6Äáx†iJ!/÷$2†ŠÝøå",µ’Y:†¡Îçîì¸_P9ÿLÔn'¼VjU5VZÕÖÒ3µ±yƒ±íW#+£M†è<> Œã¢s<äïeILo,ï¯)‡æý§ÐŽG¨»'»:YBÆÈTEf‘Üûð^ÖñNŸî)ìä9—ÒN¦/ìæm¦P+rÜ‹TÙ:üq”¨'·÷|DÇ1Ï€^ñî·JŸ¡AKÉx#>y’û¬žäžA ©t}oSèe³I“Ÿ¾ZßøÛÁÞú†~ÑX0/6Ö÷÷·ÖßÂüðÃþŽ~½L¯sNØÌ[0°é3"ÿ·Ø£2ͦ׹,r áÇÂk$¶]¸§-JÄ|1ØMH:šå¥u/‰¡X|ùŒ#¿wN¼|?˜rºD`›øƒŽoͱ<9ޏu°qôkËë /½ÖIùÈ|Ë;N#¸RÖeE[*•T 1*ÑIWóœ èv{¾Ø¤Û­h–¹ Ä%$¶”icãõnzú*6GÑô`IyÆ’§ß L-¯3 ‘lAîûÏØ.æS5õ*ή@½©bÒÇþ@KF|ßEÌ ;°™cWäN”GÁEÀ>¥7>sY|D4ÞpAG} öÛœsåÀЋ¯²€ÎqB¼ü›+±spmKeŽDØUAa#)e➉ù ¥ÊŒB1lÚßÔkjhÉÅ_pJ6Jfù·ï¿GÒ±á”R9bt¢n–îí]˜uË¿YîEó¯“Áñµ,àü“ö ¡…iA;¸ö ºd"AIT×—gyòµ|çêÆuq{ão/|«ÑׇU„Q L²]6kõ {5xÕÔýÈ8‰²×‹Œ³0Q;:“Ê\/ªJ£â“/ÃEK8Í‚ÿÆ*/¢÷hü%ý$ NDû·RµÃ©ž"¯HÜr\éËÑõÉl|ÍÀ; Þ¾1û†*ú†/d#¾Bbç +k;ĈiÔYl¾wxyDëèŒGu¾ýÖî£XÁt¶'«?U @9ÞâúÊŠ»ÀÒШݶY”?. -Qá¾”J(ñTѪPØÏÇ7-%•ì Y¥øFjðÈVcåo•ݺöȾ½w/žšHKeé–Ä.R%îÇ[ðC€•Àl_éƒèõdĶc²³c\ùñ©B(óÙàŒöŸ2"±f†ã.=ŸJÉjÇŽ4»lÒàiÀó4þ£µ1„øÔ7ñtˆçñ¶¥¾…(OÐä›ôŒ£üHذÆYn×”2ŸbØ'ðïÁÒ¢³–²ˆ¶K³wÊT¥¸©q• [X;Yq)!vönø‰\ЏZ¯Ü»N8V!@ÎZ¤£l–‹R‡O«l’ôܨ¦8|y?|(ý°¯Å&`F›1ãÃñž ùbòcgÄÁ7†©E$Úobò‘?:ÚŽæM™œ8e‘ìñJ8ˆì1%XòÈ™i1‘R´2ÿ<Î<œT…~v±Ç,‚03÷¬Ä'ݼ"šTè©/ƾ £°⃠÷¸ƒ`*;Ñð¹kaÊÇ|hŠ í¾Q þFúÑ?µ´¡ƒ&º3øGŽœØ¦í¹kw´ð\%·d&H¢Séðý—st–Ü/,l‚iwúf«:¢¤&n Ý•-÷œs_.Ý¡..ay1ÅôÃH¡êy ÿ¹E×øâ×&ñ‰”!èŽùó…rz)ïD$ˆŸOÉ.ø"‚n$2G(sm‡cniÒ'Æ<ÕÀæÒq¬eЬ‰ŽI— ‰ßJ˜ÅŽn1ãï\Ø5ûœ×°Ëuh¾¤¯ÑUQ" !5LnÜãÇr↓‡W$Xô˜‚”5ý(‘è¹7áØä1Ö1´ô5Uü¦”B jìp i›ö½Û ;#!!E­”¿SÿðG!SøNÜÝñeõ†SÐÚ°¯D.Ä{‰JqŒ=Qipèqpdí“¶ab=ÍêË.\>Q±€Y›Á«¸¯8³P…³^1å¨X“úÎc ö¬ÃiW¦#ˆÔãDÐbzžœ“µ¸K/_Ú~k¬°Åtٱʣ‰ì\ŽŠÎbËUM q•iPlXHô•ÄíŠÎålS$pà…ÔÌ0¤Ú¼¼ì÷kµ—Ä¡è½ZÏøD×aä㎩îÎr9þñ\–ÑØÜz#¢iH;Òi©f³ÞX 8MÓÉê©,ëAÃïM7\§£›BhPY¢³X¤Ü_i+¿4þ‹œîbíö¯‰ÿÒX\\n þ =[Y”üÍÅ•¿ò?þËò?&×¼¥¼1Üá½Ý(Ÿ®‹ø9žÐÑŒæî<¸€O;3ãÕª?»^U"tr˜¯`,ftåŸü+ÿä_ù'Óù'uÊìP#`›üHgû²ûêLœˆƒžØ“#B+&EoÇ‹NGUC®V}}¸yp¸½™Úö’iKGÁ9íÞÈ%ÖV‘Õ]é;(.~p7õÛ?õE‘ ÔofDÔS«N™›ôêýûÝ6»¹oÃÏ¥‚ÔÝ_ÇtoºÃÒßd¤÷,Nvƒƒ÷ë?mR§Þï¾]ß1«„|F‚Ë7y[ðÍþææëÝm[Pbg™{qŠÉkjñ#2^,.ärâ]/1ìˆÓÂׄ›‡[oÙÛ„U.ñµp’öGíq‰} ’ÚôB$óúÃX"ì{Aç(ÑðÉs})q!÷¹rK/W¾>‚ãMLI¤˜“’°¹y O¦·ãs`Mnú¥ë… ù\¥ÿq„ð âAò†•,Ho‡O ‘Ï£® å®åŸi`.8‰jö8'@ ¦ªü&ž°ç ¯d{¢Ó‚-u´=û߫ٓ¿Œ'Úìç'œÆš±R¡#üd062´€÷‡¾æw‘°b¢Apa½oxKéÍóZkaF>•¿Ö>KL2è#æä…ç—EÚ’ö§¤X¤[ÐùÝPÐ&Ò‚÷ [¹g/|ò›”jhm8%ô¢wp19‰Ê(ÏAW&ƒ˜,À‘ÅÙ[õuGG‹#ðÉ `BhÚE¥O9À’4ÙA¢¬C…q 0Št l¾ý©¢¾K)rS£˜Û-ÜžýGÍä{hÄØ¨eD“A#¼¯8J•†(6a†’‚7 ï_ˆu²Á€c‘V9Ú‚FBªô2è+Pã qÑÈ\ -žgüƒ> üœW%ÞK¼[mÐ fýò›åNǸ¬S”|33pòhå!‡Ü GþuN´x{ƒ@0ú¢~"éúbz£©Š<Ò?ì9뜴SZDušÍ5zÕC+šLn¦ãÎ).ôÀy™¯|Éh²Iizñ¦Iélb:›œ¦Î“êZ’ÀêÊ©}‘µ}úÓÇ EÑ™¹Â…á‘¥G¼•ô„Éí¤¦Èn1e2C,{Œ¢Ýf0—׺oâãÒ»ž)vÔ`9*¬û#TÙ‹t§ x© nYÅq3PŸŒ‚¨p|2ð^Æ@¦úÿÜFúF/ ÏqANÄ«°Ô–ÓÍŒ ×ý%Ã阗²ÃÿÈ€dãá”Sl\"|¹rÃþ%˜',SRøŽåX;n“8èÚœõ Ý¦/9Ón—\yÛ¯¦Çûë‚Ynã¢LáŠåöI¿*ºFÔg½ð2ŽÁÞlÆx“ñ‹‘tAä„8÷à ‘“û—ªþŸ®ÿÇÒÖÿIªñ§OŸÎÐÿ‹º¼±ð´ù´ñtiyñßž.7ÿC-ÿ¥ÿÿׯ?þtz1pîú//Ϻÿyú´¹,ñÿWšO›‹MÜÿ,,4ÿºÿùWü#êËÊj\°ˆ‡ç‹Æö:ùéFìêcòl·Ê CÇÜ*ôUÏûÇÀî¾Þm1ÐCÔoµàeò7ÿlª 'šËMt8ñÎø9ë#»a«u0î>ϱÿp~ Dþy®§æ¡¿i¨k|,ÏÿHÞŒ6¸`hQ±ÐmJú•>D…[4Á;;oälCt‘´ÒyŸÖ |•ß0 ÛÑ:—wеÔ6«ÿÚ:«‹•ÏdÐ>ó¢K©JÏ;Çúöw!Óë ýfU]âöâzÝâqô}±V.•^Ö•†€ÜÑó‹ê¥¢?´®›;?ý—ïϦR·®ãæúm¿ÂD‘xPY¤×þqT.}_=yyÜýžÀ–¸4£8߀iÌ‚t®!…`!¯l¯.å±™K~Ö“gl3£$ž :P´M…)8”‚HOhŸô´ù@‹ÔÜìëwÞ}4–GتW=ß>žÈãÉø|Õ>;ÔEÁ*jH\Kٔͦà7ß`’u׈ŒÐL˜7Å£_¿9±/#µó¶u£»t1Zª{0§ë¦—¸Øúô A9uñM›£µçÛšëœý³ª¹/ü'Û·Çï&¿™úá‡ÍÝ7Ïs‰ ÞN8 8ýÄqø›§AÊÁÿN?Éé|gEŽÏ:Þ¸TS[n>ÒKÎcScÖ µ0äorNæ­™+c£·qpÏ|¢¦äÖÎà>W¸¶£bµö…dŒhårߨ:ýî ì8ýÎ^£Ü7ßüàß_(Pî U{8è”=Öøu®uÆ•kulXô–?‹ìˆz`Efüù8'7j·VHÑïmuôtÕÑ´c_œÈÎÅpù7gÌ8žÇÎ-åZñæç“L׿]¬â]œkùêhçDïVîäµâ(f;è”ñJö¢?Ö©íÙ=λª8ô¸¿7^€dÃDH%¹–Í/+a…~èLËsK}*¤6ã¼¢œX4ŸkdËÚîîc›rZÑÒU½qÕ«"556VDj,°Ì†~ 8[ÔÚ¿åZÉW C<ÚÜÕÕ\ë&±á6œéDްœ=fhèããwŽVNçŽ=N¢Ëà| R§‰¾c:°¸óUqüÐ=ÏG…ó¿UTÿvXÇÛúEÆ«qýt<¾;­ûÎ àœÒÇ)—çß(ûkLÇëÿ»ž«[Ga *ùîxP—æõagÞÊi‰0’ ü°³áŒ5ñ‚aûÅ㣣ãîó“r¿T?>>:>öçÇÇ'u;¦QGs0ùú¸?¬Çjó󜙑̺݇Hé¼Í»ˆ*¿wÐX;Î;­çù¼&©¾‡4/Tˆ¯ØSåy,ÕªnÙ…9íÝ•yôÜbÌ%0øAèw.Ãb)>ß‘Û9ÿ1Ž=“;W&b”B àRqþ(‰|H MÑD¼DÃúì´O¨2lE_(É€°=é?¯,X5ø = ¦q™Ü‹t¸8¯µ”îíxòâS=扑̫áÕŒaòúJæ‘ñÞ$½›ÿÑhv5ÆÄŠx–õâ&4–ºÌîß*qˆ ÜÏ걡*³ç‚O»Ö ?è 2cf”3©óHE¢µË—P¾äÕ­ZB$‹Ov•À䟻¨Ÿø÷ßÏê[µÈÊm­ÄíùþPØÊÏÆ(³}ã³aÖ Ù ŠÀgÏñù‚]¢æƒj5ÕëãQ °Å%ó_×G^…Y–2Þ†V,y½ùÓáá/ õ®]' ™ž×-­µULA•Äù\Ödž„vß”fã—´®tyÂ<÷4„–mL‹‡ðK m~cÑÐ,Lù¾T'ðVÍ72 ÓDÿ^d°Ÿñƒ¡ ñ™™ËèŶì¡ÌïñÒß:è¬.¢Œ“‘¼«418ëMü/©ºWåçɺ5ÏO9Ì®…ï8’³Ôx>ÿ»-ò¹Ï¯èñB?ÏD‡™*$ÕùŒ©#Ëý'˜±õ?n¯ÇŸ:w7ÁàmþÉmÝé"ƒ±›)ÓÚ½¢;Td¾ Çy>.˜‹Î×xNŠp1ìæIZB¬²­tÇLP^z>H~Ä{Ô¹YgñRÚ’¸Î ™4U?0¡CŸ6mp>ò.I—+Ç^ƒ9µ¸¸àT¨QÍ[ÚT¡vø[ÚZºÍÁE|•/6W•é „òt»ÿÏÿ›œAtåµTÌžÓóÿׇ”Sþ8øþ¿ yýÔÿóÿ¨ÿçÿ^É£G}Ÿ^xª\$æˆd¾âÈ¡E˹]ùw÷s{|û¿>¸S  /dï³q¯xpøzk§Â@*6“ø‡5äh±Àc®$›{D‚©hA×6¶¶€Q¦ïIeE,v)' ‡G#ÁÃH›C2‹!­‰ˆggr Š{ð»pRa0ÂwX£…ÜUWøåö<06½ID“þŽ VÔµCÇɶƒ^\«ÿ4™" *}àasä€ÕëC:2C1[»†R³u¹þuÀQ Ÿ³N–{HòÙ¥)ë ~›°}{¹kBmXS1é¢êSÇÆn£>¬¡ y‘«T=Ï]z0pða:MÀÜÁ CF✕o´+°²©¡n¬wî·ámPÁ éÀÕÔ­sDêñ¿÷Ǻo¥‡!OmŽC£Ñ‡àÜG0åB/6'ÃËpt6‰ÄoXà#ø”£®$ð£úÜU <›1 TuäÝ©óÉÌŽ4Уè wǼJ(öü—Ôݱ¬ö8 sÑ%ÚƒOìš°Œ$ÒH Ÿœº¾‡€\zpˆÎ(83"a…æ™MEèš iàŒLñò@ýŽž Á^xcrÝ `Ö¡p ™&§çl8îIĉv~†6‡‹QhH{f€µÊ¿C0pÜ2»p7+J¬{'H¶v>Î]²AsW²Zžc`>ô“7“º‡0CR·¿óº~TQÀŽç툚>§•e> ºlêyN¾0¥!ÐÈôô\áH‡,C´ëË0ìÖX¿Ø˜|€GßוˆÄv÷;…4㘒áŒ}“ØNÙ“~'¬â<[|°Ò\hSpAÔ«ƒTó° i¿z¿»ñ·)½:ôðq½ä5 œILo/̸|jníÖÁ.mxx,òó¢èá91.FUÒ¬“SÆpQ†‡âó8!´¤ÇñaÇŒÄíxFÏ'ƒì¾[©«´ÚæšBŒdDàŠzê‹Dš#õ-õ!Ï3O¿~׈{PÇß%—ËŠîú7fjãÝûן6è¿ÃƒÃ½O;¶?µë6ŽÄ—ˆ{Ä2Ãz íq(«'WæúÄ$P å4â—sFRÌ3o sBªÈ×7­ÖApqà«/tÈüt9±Y"Q ë4=ßx§ŽS•ì¬ K6êó´Ù嶈›ÔW((T}A';QfâÍðäe耈KöÎ{ß°A|æ¢ò[#ÊðÑ/Œ†Àˆ ÝÀwê77Þí~Ÿ¿}ÚÚXßÙÝ)¹ý£Nñ§Ã­íMsâÇo’=¯¨ÃðsÌÅ #àZ×hD±r ©ü|f'göfáK{#Ú®ÇÌGéÏktsçµì"Íi½i®e“ØádR†í”QQÉ•¼–ø %óüKÉ´3Z§Âe¤{ ˜-ˆ€C€-ä½<ïÚ££Ö¯\¥urR/ ³’-÷æÒgï:qã‚^ ~QRÛ\ˆ‚ÜÆQ ;=¨£»ÁØ»…‡f,¸örm¥¶ð²d¬|U¬Ó xqo~=üz<:9)Õ#mË—?>¾ývañ*«É`ˆ¼‚ùý ¹Ž;P…K:”Ý %É8"—þ­ýaêž™_qEÓ·ÍZÒ6ÅZÁlå£ÜœzÏ«l̓[ô7­M?6ÝVîÚã?ßþg¦ýÇBcy þ¿ôoñ)ýö?HÐþ—ýÇ¿âßÜ7õ³`P.ÙbƒÙ¾‰cÇpRÛ®Ú<enk··Äˆ ,¦Eñi!þšÔB÷_¼© %@'ÔçYõUƒ~¨}<×¹1-éŽTŽm믷7¥pÊ& ˜Ÿ#º4'Qðä6Ï70'÷ý®Íõ ­Yò¶âӧоŸ¹jÅT¡ügþ+ êÏûç=ÔQCõÌñâHÐa¸¼\ùyÅ”Ÿ/‰@ô£i :šÕSÖõ‚„Šˆ£Q¡Ë)¡Ïî¸vëÑ=5ÿ敳ÒYkû%Ãÿ'Ì響úüç¿“ý_ö¢ú?‡4~™ýg£Ñ\úËþóÿÌúK ‡ÚÅ„øçÁùßX|º´„õ_ZYY ¯ì?›+Oÿ:ÿÿ5ç¿2 ÀœZ×?`ò9aµ/ìBø‹ä‹ $5¸ ¨px'ᔊ%Õxöl±‚¿Mþ»Ä—ùï ÿ}ÊWùï³ CX¤‰ªàoƒÿ.òß&ÿ]â¿Ë÷ÄcØtj¹Ì\Ø{g­€òUúÿâÓ‚efØRá†AŒ’¹?! ÈÜ×…áh"sŠ%2g†ýÇC‰@IP¾"ÈÜ×…ÁÌŒG™ÓÌ_Cdnv‘ *dz5©v1+j¹A…¼Á±Yê`LÅǪªÞçÿM/ÄÀ«0£üö:X€ÈSm4±8ŒƵŽhbâû·Ÿ—Þôaöp*è4! pð{l70Æ‚œÄÄÚy›´#ÕŽêš>’àRËÜâX|ÒÖ'㥄O„êÀ,1¡x4öGD5â¾ð x7q£¨;Ñ‹+1ú¢±¬™gÍÐk,õîêK7XŸéÔ büi2Ç—Ô1õq–?žÉZ'ì¿­Úëùˆ+ùl+¡ya(¬êG?^ &µptñÈ89ëƒð„ÀoŽ-ótTêØ;“±Á×ùïCä6¨çMUŠ$®Ä£÷ƒž›E»µhr&Qk¨SѤÓ!'ªà«äJÊ…õwi¯ò-D¥[¨Ó½Ò.HÎMÀ¨2v_6LÏ}5ì!›²Éõ€¡H #rÄôIF9ˆÇ±yÏqqPBQHXGêÞB£MkÛ÷×NEŠ›_È«O ·$'¢J­\¯T §0‹÷.üµüqî¾´Ôü‚:ÚÝ;ÜÚÝ9ÉåvŸ‘Cõ%°VfãÜ ãÓù¾_à,=“âL»C_—‡%B€žêeiaÍkþ‰†gÏ+,Âòä¡üåqUśԔïâR Q%2‚Oxp3¥HÔ¿F}s8í™GÓ­”Û÷‡ázióî‡q;ŸËiˆ˜KЗáƒÖΜ¨$´?¸ßj¹¯âÁäâuÊ¥Ôo?™p2l®;¼Ó颺’€£Æ·º#fvvsæ{Îúw>åPïœg4ÍÀ‘µ|îpt'(§Ñ©bÁ@ï<èÛž7Š|“ì»ÅgBìtççTõb¬ÔsÚ]&³ô|C'§Jbß'ý³Œoce3ÌèMf9OÀX/òü¹bðê]OÕÓ/§kñFA£—ÜâåTMÞ¾ùt5UÒÖ Ð$ kòÚµ¸Ž,õ(,‡u¶l[Y•žÌ©ì>„ë„ІAMÍTJ–.Oõ¨OD$\â´<ߘÇ@òêÅw‹¶4:Ü0p0|?ò:9¢x~ŽDf±¾a[@Ös%%9 ›DGY›hUÌAE5†®¤  Ô‰EÕXžll´ óÚ¯>l½Y”È_´-ÙÉ™o‡íÉSS;áØ7Tœ=>øùpÑÕP*`þPÓHb¯|ñ®²C»ˆÖ¯Ë³Œh¿M:¦qºÓ©Ž” ÇóÔŒL题l"ös5êßߺ/U0çxÞÀ˃Tè6þP½[yA½&a¤£÷÷Ãí½×[ûk0=ÿLÔµÓâ×Êjá)g—ï_9T•Žòßõ¥N½sñ‘ÿåKnS§¨ ñé O LöI׫OŸ¸9[”d“×»ÛRšú73?_Õ/9/Aªk0€–\ ‰úÕùùû+bÆyWÿì±µCKãìˆ ïL8ž°‹,¼Å¢@»‡ŽlÂüx_ŨF[BwÏ2ÄIaº“~ÿn }«óW,¾^îµü ’‰„Ñ#pPOb\ÐÌ\ªúÔÒв±úO^ûgåí·ºÞö¡"Qü{¬¥õÙÙš$¼QOäÏ`Áå$ªHauÑ„EìM—ˆØ»ðQZ+brÝ ù$AiÔ½òGâ“nÄQܰs\06s¬ƒäë”T“ÙI åF¿“,âìS…z.~‰“‡'K†©{¢'e­€ª…ÔÄÚ·¢SMŸmŸìi[?ª¶Ojåúq­Ngnrö ÒÆÞ‡6" W·×w>¼Yß8ü°¿¹_ýÛæþÎæûêîÞæþúáÖÎ[}Œ¶„Úë+…¡«CÊ8wºxô:ã8s¥ìfÒðÁ@¾§©Ò’Óïzý?Wç£Ïó¿ë‘&Jìjš¼~we©EtdŸÜ âvu¥½²d(O~„ˆéK .¼,` _Š¿( ’CƒèrØ\XøsúÔ#xuõ* /4ÀÕ/Hk´’†÷G;G°†ÃN,v v¾ÜußÿóúFÀVg[ý#ÀþÌ‘FAfÇ‚aô¥øMÍ?gÆÊY`Ò¼ú—‚ô¯®ÂÇ‚DÙÇâÜv0Ê\g%úÁèœ4³èõ†—DŽÞ44HÑá$ªðR^ª-àtH Ü1ã‰À#¨ý?)ïæJ~׆ÇÍÏöt(/×Ü£û‹A-}ž:hÖ;’ð´{Õd…ß*7<ŒF8?âh¼6xÉP¨O#¯7X¬8MV–lÂ0’GºÅŸd¸ˆÂjlþ §Ît’Á¢±­8š Ò.¸‹tñ^†ÁЗËV:°˜§¸“£prqÉŠlH f n|ñ5]ºˆwðß¡CŸj«:ÅÖßï½[o›ÃÏ?3jžA>¯úÈþ•ï¬dÕÕq±V>.™“pT+Ï×õajÙÞIJB²½˜±Èoþ´¤Š‹…•¥R>F£©ÉscyËÈ£xmùK*¼ßX× ¬Ôñwõ‘Íp#ûñ¯—“5j+ºÎú½•VfÔÚÛ˜]mØñ¦ê=}d½§‰zÜÚâýãJ¶´"-->0®•T;µÕWºÞƽõVÓõÖßëz¯¾¬ÞÆG]ïõÕ{¶®«Õé׳ûÇø,Q—ç¥yÿ\&gåií™®so;Ou;–P©½Am 0áûõnlƒÅå~š*§ùÒtÁÃÙÏ¿'1ÔRu>¦ëÀÛÉVóoIXp«Hâç™uʵßãªÚ¢b›ð<}˳4gt­µYɉÕ0:Ï$\Å]ý×£½Ÿ?žÔë =ã‘*¬¿Úx½ùæí»­ÿüÛûíݽÿÚ?8üðÓÏù_UðÎ:]ÿüâ2øûU¯?‡¿¢ñäúæöî8Üãm‹qLÇæÏÁ ÞDíC£y#‘ ‚Zœ–$…"µ5 Á"¸U#O»y"p±ÝRÐÑÞCðÆÔþ%‹:¢«»ñM±Ä$ð,vuîGF‹ˆ¸ÌÉÒM•63a›jŠ{Î%½—†¯Ç£*q t39T¦§Î8[Ë ­f)Qëq ãfm95OJÊ­;[Û¢&iÿÔ¢Fÿ^Js&GëÞ Àí†'GÑÉ£x‡Âh Övÿ$ /¿V5¦aíÔ›Ï\AóéB58ë3Sè‹9GºÖ?ê?m»u"‚ÁuþqÝýé6–baÇÞpn›‹¨LŠû" vë`£ÜjÔŽ‹'ᎂ¨Ü:O]ÙÎ#–gP•"pwTµ d4·{0K\”ÂI û‹/­w[ÕëÛ{{¨K»ô`uÆœxl@^‡^£Ö¨^cˆØô9¹í‡I¸úŽ “w[Ö@··¦lïµ_oTÍcÞ½Þ•ïÿx3ìÑB³v3ôÎÏjÞy­ôTqÓ{÷¦¦Ö¯ü’D Ò&¬Y½­÷›µøz/Z¬Ë…–\Š%/opãÇöFsïÒùªùÄŽhæŒ+³먠Çr']áQµº4ñ·V8Hƒ¿¥öÛëýƒ—+Xêõ-oÕ•W¡J¬^up»2£šlulòÅrë)æÚ¾ ¢ 2ÏD Ü¥½öSÕá©e¹¹’šjúil°óDn/­¸ô®u0’DÐJõûÒëU£°ç..>¬ƒúµvR®×ÓtM”Ý&p¬xÝaØó˳[¦Z_Ýr°ºBâ^FPú‚xÿ™C[1Û!!ÅfŸ±å‘ ÚòTÝÀI7ŒíGIØâs WHby‡X¢ÖÐÔ¿õAÝàHÊX³oDô£oÜ!âÅ“Þ6¡á»)Ž:z c–•,ÕfÍ|óϘG–ÍǨ‹[U½:e—:Gý¨üé`©œ!ÜšÛÜ´ÐùŸÞÐøû=ø¤Ñ•Õ$'í.eN—jZ³úŸï cŸ ÂèÁWëí¬Q7“£Žk ùA• íxÖ,”réy(¢ ßTÝwêýpÜM æ`ˆàa¾\iTš¥Ï…$Í=*;uVñ5÷-ß$lÆKg–ÍY3Œ¸dˆìCã´ªm`‡­•šøÕd¹çé$ºNO¶€£—Cÿö1.·Q0žˆñÛ‰;‡ÂÄëØ/ØÅØ1Š©¹¬àëF E_\#‚;[ÜAÜIRÅ¢ó]áI²$]5ï±ÙÆŒÜüðóœVÒ‡±±ëáÅ:]ý&žÎŠ’îœk>>¬cç1¬¼²Í×k Ú¡‰×Ûìš|Ÿ°*Ïáv9ÿDSoÄžØÔO5œ?Ü=È«®?@®R8?È;;z"d2Mñ4 ;÷1åfš—Ïöæ¹Ç¶…[‡2 Ìý¼†cÁиʊ©žÏ#ŸWÀÕÜŒûcÊx|h0+ÁF2–s±*ê=Àô¡\yºáòÃ>yTkÊ5n5,ð¹×#ŒM6?tŽþ c…³CªQóÈmÒ<»§E.òøñ^"VQ²aóÈmØ<»§a.òœáds÷6«…Ùjµ@vÆþ`?`kRÕoï_$-e2òÑ@yi›Š¦¯"X¾Œ6±ÚKµfV½ï÷·>fÖœôHPx@ úiý£Qv\{·†±¸°¸ÐÚx/½ U[\jÆ¿ ÀN¡ÔF"ê_Œ¼áe•Ý>´†,èµ>loíð^Ð0ø0*Í6"à =̨`Œ5™5&³FcaN9ú/Î.ý,èÃÚå ɸE4[‡>aÍò8dµu¹NâÌuŠÍz£‹ŽI¶H߯NÎD›ˆÅE¥ ””©öëDÙXAÆ•,÷,¯®Ìn…*¨ä®Z]-·^‡½!É>åaýeµüi¿™@Œ®¼Ë ƨ¤5-¯ýÞØSTˈæÂP‹m_ X…4è_G!í~‘ü^ÿ”Ñ뱩•ÕÕYj2áä?-™nŽ8…¬æTQ΋˜Ý‹c5f’#ÝJ³CLH£‹ 7ô(µÆEZ¯ñRÿk­o}|Ù:j,žÔ­ÅïHz¤k‹µ„WùÑ $˜íÖ÷6ðȨX¼’µï Wö³q1PÁµÏ7`«²VåKz\®ñSæbw¸–>U FKòd}*ˆ:°¼º‚!´Òš@ݧ”òÐ[YrJó–®Þ*K=ˆ/ä§€'[¯¶iNrHŒ.tjµÑ¦HÚ6°–¹™f\²èþÎÿ®¡M¦ Û‹|ãDÝfsÓ³0j..Kï5·X×ÌbÚk$V®Ï2|µ j6‡úÄñw „® RwÎ/àô@o%é(laÇç×nóqÕvŠ%~õÄf¿¥ïÃÉ8*æÝ ~“°n9/lRú® À}”ŹœÆ¦¸O2ø•Ø8VãuU}¢[ÚJÖï%æé ç?øRòjcªÀôÅFYãñÑÒò M.°¦#[¯]C•^D½PÕ ørY“ª8f: 6~³*Gа¡Ø¹_xu©ª›„C¿ÇM~6#µ·ûóæ~aæðQ‡Íîe„‰-ÄÏ5>ÈxÿîOÓ¥GnM‡þ$W/EÎú£1q£K¬ þdÈgËh†“D•åì¥,åÌúIZªÍ§„fÛm­§Z˜2@]â—ÅJZ¨¯×G¸Y„;MÆGü eÛáæ¡2 {µ{5cg„/UÚU©9{½÷±¾øra¡õª¶[;¨M©J¸ZÆýŒ`ÖšK'tÊQÛ4ÔV£–®|9œ>qÅ^×,+2`-΀5µb¦îÊÓUT·Wý`FÿnïÃGAßG]ÊÔŽ^™«™lß©XÏ­6/U+ÞíÉ>õ²µ»q†ç”w _¥Šb,1ûSҜܬþ˜=¬Oì^å{‚N»3œ´M˜‹Ó©âLUô&MÞtd!€öY0޲ŠI<1Þ‡4›ìiìc6ýoy±Y²“•—Ëù˜')1žß[oCAÔh/̰: ‘ 1 @s±4k/:gö 1lg>ï6þ¡ÝDÇk ƒ¼Áüì+KÓunÄš 8R(L¿Î É™S¼yTc¡¶8{$î]xÖ;ãîb|Cucr_–OáëL†‰qO3MÉ62¨Toæt2÷6S€ƒÝû›é"®°œÓšUb2¨óbÉ"±¦¯”zóû0«ð*¶“{¦”1•‘ ‚ÜwvÚTµôhåÖ `´ÙT L14‡HÄó©ÝÏždªH•Ó½|’¡Ìä†l)ð¡ªhwmIû«?¸r#U¹ñøÊ´[|þŸ¸#?ã´•©Óc—.øãö™7ÞÌNK•æbºÊàž*4oÒ§«ÜSãsö ÖT³Êû›Y³­wÆÄ<²åLdÌìÿ½hñ9)c½nò¹‘b𽸱±»wx°ö°<“$bh£#ذވãüƒš.w cL÷£Y­Ñ2äÔ/¦Æ Ý× a€(ÃÈ :¬öÑÍ Žq$ÛβÙ4Õ´e:~êr8¹-³{GÈ[%d7î~ÆUYGÉÑ¡ï—Hƒi.rq¨jŠ€Hü.¤C6=Ð Ÿ UÞíqĚػqö}¢Ì ¥ÁhóÉŽª%¢ºšrk/¦æ¡Ñ¨-6gÀÉ ï_¯ËÚÝ 1žgµ›ÚïõýÞÊ;¾ÎÂДlI}"ÄÒþ¯º²ëëè4§ý„3ñze)+,±Ì`«žý9C×ó'ñÚ¢Vr¦nf«Í…å…²m9åÝ>É:Ûqo—{bŽshZœ£óÞ“ó SRX’H¼Œ8Š*6  òÄ´·7VVÿÆ9”¾äÖªy­Ê&±-yÒ~Ð0ô3«Ñï„#ÄÈÑÕ%{)µ|).½T——u&OuíÐô»Ñ¤'N|Q7iæõþ“=a,{ã/:$=ÂÔñþ…S}X|°Y‡Ï½U´NŸ?ø¼t&Ñ.¥;‹°H«S€-]ÌX4Ì(ß^>þ~2S5ÇW‰Ou8£K÷ÓXRwDøÕ—GOŸ¸/¦lª3ºª 0Ym!³ZùÙË—åÖöÞf=0Æå&rŸeÀéý´Úèrˆá7Bà õH쳌q„Ñy̪&£é©¬_w*$¤|q&¼‹Œ]ÙI"Ôþ¢Ñy£5uuoùi-èFVrë}0f;  ùaµ‡—Ézrk#\û·rƒE3ÚáŸñS‰ÍEUyÏ‹œe̳±ø0ÄE;‡ˆùr‰Ṋ:^ϵ½NG˜.™Š10N£.jÀÇ%Xcâ+d*uWŸí·UŸíµUOyÄØ’Ã?[øÓæí°¹™nœ>ÝúW_ÕÆÁOdÑuãÏ{pmìÔûÄ1A\'ú?ü£M¼i.-4NR®b²)Þ<µŽ%Î êÅ›ÿIñ6b°fõý¯võ3;Ë€§ƒÙB~%ôä|Ô™ÏN·Gs·öçF%fû*AöwwR>WÏ'ÆÑ¤?§Ñ|ŽäÏùLZ²¼05ëKµ„ Ëÿ•óó§5ž9½b’ÿ¸If(^¼®7éSÐÚ>²Ô¿ÜZ:þ {¬6ûg>îžêIãª):;ìà,pÄ@§ËNSIÃj< ( ÆLÎå1à`ºÿذ°Ø'˜TDø i*:lyûóÖÎó)©À§ênoí¼ýùªý`pqÓ\œª{#Þ³ÍÅ8lc/¢%ÞHå F^|zá À»®æD¹™jrV{{ut8Uë–pQ»)—[¸‹ÍJ–ÅÁL{ß3óÇ5ž÷$`‚µ|BÀñ³eFõ©Ç«™a‘n;’9åWÑÔðNÙtÏŒƒIÿŸé­½5¦ó<¹^Ð1™ †#¿JòoìÇ…Dȇߪ„‡µØÇ ¾Ü¿›=y™½RSóòáaäŸL¡¾D©²;gf”ª¬m3ÌØrÚÒ¡çß_sä3=*§«­ãc¹õvçƒu6ILdmu£§™óƒ®UëDsæ‘Âöëb0y¨K•º®”Ñ£zì”2šH0ŒXè"GM…"ÖD•{ˆ‚&»££Œê3:óëѯõÎl¡QæÈéÄ<òªÿ8)œ~å­rÖ©óo;€SñÃD4»ˆnØâÀµ:)$|Ýüï䚎mF˜2 O«Þ-ýy êus1»6½xÀùèÚ­Óuzñ˜¾³f÷O™…~sqô'MheõÏ‚§’¤?¨AFŽŸs I¾tâ‡ßKx:Ûmvßxßn'¼ÌãäÃŒgúQî µºfOF;¯²Ûy•ÑΫév^9íØVð`ÊâF@þÐŒƒí-Éôûs¹#n¡Ë´K~ž½¶®ÓYà4ÿ©K¼²”úùO_fÝÄ¿`¡ylÿm–¡é¦ˆB:Dà=´€êgÑ: Áá:î!!è\q¸ÕÅõG©ª“¡#—é`e?¨:lGëT K—bó§å’uÅ0Ñ™Œ.G[‹Q™•Ò¬2+ºÐÞÆ:Jeâ^N©§–Úüief§œ2Ogujåi\hµ\šQhÕµ.’»ôðìï„\CU­GÁµ7ö«ˆðóKÁÑàY¯[‹ÂZ#qEj¥Ì¿„ Ò‚V£Kö<±àp`¦fÛ?™XYc_# “¨äåᕹßSlIkFL|-G¿‚*· IÔHí«ÎéAˆoRÕóEƒ6{ëOË:–‰QÑgvÝ,ûúª[wh÷/ÇÉ/øòlvÙéà2=îvÓ”µõMú#f ñàö¬Ìsn ÞåÊR9›ú#H]þIl ëP’Å“?‹U)kVJúºmçÄu\ˆ¿zóqž¯H²ˆH"±@üÑ×±AîU!X@œ#Dsð}Þœc·Œ}„øŽjªÓ5QFa8v²ÅŒÑIÌ8¶K2¸ˆ9:·bSOâ…s‚¿Óí,¯zH:‘;ðÇêýF{ýýûµ 4á"ä¹!ÑZ$çHõý¹¾ŽKm.•jöºíh2„ɶßmë”k§ÔùúóAÑ©Ä8 >·ž¤$÷Ô-“Õ Uÿ¦Ë~Œõ#õäÿ•ëª~á<¯•§k*Ÿœ"ªæþ:êHm¶š5c í÷ÎI*‚‡›;‡ë‡[?m®å³¤®ä‰nœpv†!%l¨“‡ j;û—˜XMÔéðüÜvè‘`P'&ÏñçÔ¦$©õXÍ|–¨ñ«‹6ŠyØëöº%Îliz !;T‡w¡­N7«W»öø.2üDC³ü<Ê0G…#-μb8+»0y›.kAyp DNRXÌÞ\úZïPk†($¿áŒB:¨§ “Á‚N»¹ý‘ ™x‡I GÅ>£ºw¬Øæsþ¾ž†ÑbÕïßfôëãáAµÉ3w÷d»¢q8Ì€µ¿D¶|8Ì(Í€ÝõØÏð!e§)—Å²Ý `²Xsn õ³&âwžL?§}›ö¶ "•x(üƒ*¿~øÊ±uèû÷‹aÖô•åšØtM[µÙËã8ÜýwÜ|ý»½7/ {ã{º^ƒÇLøžâ¼O»ž:é"]ÔŒ…¤m)^tN?>'ÝRgm—d´–žŒå;Å÷~Ø?ƒ =­ÝVFhªÅ4?ü¢š­Ôl„L'¾ÃGs´äÝ–¸mù8^fyiu¥\zâDŠ0|@oâŒGú:,»ärºdùSyÃ'#¤ÕÁŠ.«eÊû÷Zr¾x¥S7 i%¾6wÌsÂj¢ìÌÛ¸¹B Û* 蜤W¦åÖÆáÖG·åe‚ˆwœÁò±»öBcA¬HGfô)`œ‰2 a^&¢»Üè'\¾ï…°M­¼\h½®Ær­™rïÞYµ;uÉ»½¢Câüt´Ì'&W"?RXàŸVV§ ñÝp8+æX¿6(yù’qj²@'hS<¾×³VÊYOëɧK•Ýy°ºœ|pð·õ¥Ô“׋ÉïÞ¦<]^h8 Ñèwøˆ(œ‰@°\$Hº v4ºPÍ9àŽ~U'e%u 3þ;ÃõF ‰•D©,i6q¸ˆem¼8YªƒÎH‹ÍùߥWŸÁó¾ÄsÍhÊ~OSË5å.~¼öåŒEväÃ/ìß8k¦:$—åI¾Þ}ÖLðï‰èšáß±sš3Œ6§b°fÈЇ¿•èb¶­àcº#Ñ-2éÀ_ãÄím¤§/õØ•ŒR¯’ÂÑÔeä#ºp°}ôjóäÀj¦¢}výL*ž ºMDŽ67P5#ÂÕ suPñ`닪¤+Æ‚,…â³9Ô©ÚÃtî|’Û#‡Ÿâ̤öåôQ¶·¹s¸õa[ö§fHb¢ÂêtƒxâÑÉÜêÝöž"™‰ÈðB5)$)*ÿœ˜§qnV<ˆÜÔû‚|vkÛµWÞˆx;m/èÕ6pgÕÞîþô"iòËäfÂ=ÐãÉŸ›ÚtåÖ›Ãr ¿AÄê·þÈëuÕ;ÿƧ^\âãG¤ é{£+\#þðEÍ$Jr`ëWˆî™?¾Aª1p#ãI” øRU»ï§|€tÉlÄÀÿ’]Œ|opþctÓíÔtMt«æ²m÷@dùì'«;Ð0÷¼I¯övDýþ1æ4Òhø×ÓéV¾tz¦ ‚X–[ëõgÄ ö&„Åø7Q¹µ³ùóA5ΙàlÉppWE™0J%ËØÇ)ÒX6øbò’ì/ÅF÷¿ÿ‡ý²›YÃuHë <ð;qøŽd„fô„^Ï¢KÖ -Yã>žt¦ãÕ+ÿUxÛzåÇÁñÝ$i;5°}¯ËâÈ+¿¢öö68']-E™Ï|úzÕ^ù$ÜÛ½Ç->:½ppO²ÌYmСq_,)‚‡r¯¥Lp§¡|¬.µ>ìmîW“(Ý.É M†þè!œ#(Ë3 ,”•PV…ÏW:Ë.½avïfÇßéydAš"_òµ7º Lhð©ð©qΙOŸ¦‚«ê=L]‡KµZ·UkÄ×µª1”0éѧJéYš¥C³Í »<˜‡† À`–­OÉí|l!ßIB$W=;yh2\ÜT)I­±º’Oq ÎÈ›¬jI2&°Ý¬áM-2õ¿úÛàö¡¡bdä›VEPÕT¼áƒÍêËÖÎîît0Ë‘_{ƒ®ß¯¢«û›Ý9ØÖèѰèøãp˜Ú‡L„™ºüV„\T¤ía^,âT`g„?xáE5 ü>ñ4âùëƒz9Ó.{Ã¥´´Õ‡F´×óÏìQ7 ®¼N‰IAcÖP! Ã|g8áxîÚ±¡¦‹ønH4 l#! ¬õiHçÎ5¹•jÈG$L“¾`s³r™Æ—›.ghùñ!™JÉh!ÝàÔ¥CLKz®ƒªD¹aw؈%#Zø¨±0Umsgóã=•üŸÂ–¿P+ÜÚâ‚& {?õ!Ý—ÜgIøÈD€-¦:ôñoï« P˳AÝ^õ2A•gWq§dºÚÖáÁì*Á8}on1LŸ>¦“Z0óæøoò zÍÎ7½»GÝv¹ôyïî{±Q+?m;¹8-¦=7qÝØÆ9¯û‘rr­±Ø”â¨03 ýd ™ô©2n ºrëã¦Ä~'bôSšßúƒ ë¢7ºº{à†jzÊžèÓ¤§'2»~k|çæDÍXÜ µÐL¹k:›£TûeªüNx1þáwk¥‚j¼ønQןšòVŠ ¶Òk¥/Âò/7è§ãcõÃ0W1Ö-›ÿõ$êvnN%âsŽhØö¤žOÆlÁoÄøÅ„Ýù=—H 馔|dlÖ9æ̱n<\VäÏ¢nÞuYË‹P”¯ é3#Ç¥uf¨3“ð´[‘}¹¥ºlTƒyƒÄ?Kfœ`aK2M$Lˆ)P2†3n%úU0Âù¾b‰íÛ9+Ì4BÆÛ=XrT ù¥¼I*{´\:ªZªüR$'­ÝöFýd&z„Lœé‡HPrûœÎÙ9=öŒö8Æ+ƒþÆy6IBv¢º> èŽÿñPá§ÃˆWµu¸¹qøa³Ý¦÷&öcêâöœ9DðFmxƒ=oc¦rê6¸vyÔÊhߥšNê‘$ƒ‡XA&rËj©¤ý õп…¸|;æ?„±Ão%yIºÏÓ+vLj *žÇƒ¹–·?¼?ÜÚ^ÿè:Š¨â ±’Ú‡¨ÌO‰õ¥1KáH4”³¶‰ecûÃl¸ëˆ1«ÆlTºwÐAðêà5ÐÇlއÇâ§6KÍ“¢¦Á³îÝ`æ–J€Á0‘²nzè•9lC¶9£ñhÒ+M›éìÑ!Aù*~7˜¡@m*<èô‡ÄÔ4nUTþ§EB¾Å’Z[S ȇô${ÌÃñíbºŸhë~ètÿ?‚yÿ©a,_r¸³™Í6f7;³NºJö\RÂ)çÒ&I§…Ç*ûdkV[ž³VÌÉ ¢7 t©©‰½ížav$IØÔr›xs*§ñìÙÂÂÊý°Fþ Ì‚ÓìªÙuíÜoÓäë~ ¦âìz2ÁÓUïÁy¯ÇW"ÉSJçä…Z½oûbФ ¥-÷%GïØö@À6æú0ìõÂÈÚºêT(ZÄåGþà:…Ñǵ\N.wµ6×ãÚέâüï[{Pá9Éß:ùÖçD›2*¶¼e ÐáÈïzcßð¯Þ€Åí8 ÍO.—ˆm&¦êN ®“‹ÇÖéà4Ä ±Â1°S0»Ó˜>,éM½øO –l¥¹4+ÊWªÜê¬À]ÉrK3‚q%J±ø@]Îü»EÍ“Ï/´°ÚFVÒ ;˜‘ËrØÎ(Ž+ª‡l©ý°9 0?ú„#^Xaûäs/è‰JÄ 9Ž‘Ò|¨»pÂæ':åëÖ˜­Ÿ»×(Æ*‘CrÒ^èu5ûÄeÁZ›€3òf‰Xw¼–«ºŸ’ûír<¶êõÈ»öï²v1˜ÔÂÑE½sTqµ~ø7ë¨^î\ú+’œÊ:ZkòCÇnE4ƒ?f49Ë嶤ûf4˜˜Ñ„D›y:³0'½É'wÎÀ+jÈFx¹ˆˆ ×=ǼÁìÒ{Oâæ`µ,îQ,Œ³®T9ÎHœÉђЊÀ”ˆÿ ]ªÅ(ûG=¤  £”]¤Âë ë‹¼ïwýnÎmÆàÔ6áµ6²brî *‹0jÍÁž\Μ­)«,è—’Ÿ”tòÔÔ¹uF«¹u¢ÇÕ¹vë\?P'7•kO=MéC’ÖšøÇµÜ§©9+}$ÿ¡žy•ÝHœó“5¯ÒÕR‰ÅÝj©WY ò«©.ÚW³3If2Ó¯²jNŸ¶æÔ«ô„&#Þ¬M)qr ½ˆSÀ*ã\EŠr hÕJ.¡GqÞ[cæ ˜v7pˆ¾éüQ×Þ(™ŽZ`Y®½^‹Ø“n·z áÂÍ(ûUxEòƒH°»ª¼½À%Æ¿ØÆpÜRy»ýÖ ùd ÙÔTäÛÖ]õÛ…Å>þtS…ˆüP ®ºI_sÿñ?üߨw3ò†Õ…Zs¡>Ã^äÐñ?« ’Øž./ËçÊRâßš‹Íÿh,,­¬,<]Zj4þc¡Ñ\h.ÿ‡úo5‘2˜ûùßäßÜ7&z€ðµ´ô“‘}´ƒ®|%dÑ‘’ð"5–j6Âá݈ÞâF âÕb›üw‰ÿ.óßþû”ÿ®òßg†i¾‚¿ þ»È›üw‰ÿ.+Ä­Sáù˜­Þ„“tª¢¶ðóñ†GùêÂJua± Ã<»TÓg‘}ˆ6€8ë—åx_ÿ^¢Pé&j9qÚ&~ž˜‘Ž^ÌS}1‡‘€&Ô¶v·7ÄÍ?p ¦¦ÀZ§Ø ?ìÝMu•©3é 6Ÿ-óœ™ ´BÒŒ§ƒ³ ±‘Dc©Ñz8®öB9ñ™ƒ®vj…£kd˜L´ù–ôÔÞä¬tÔû ãèõ WÁƒ›8Ø3€A…Y+B2’x ¾oÑ4¡áUàêy<À®íà¨'3küâÏ|í[ ƒ)ÿÏ[‡ïv?ªõ_ÔÏëûûë;‡¿<ç‹LX~Á?ž!a ÀýÓ˜F$ðÞQ× ÀöæþÆ;ª±þjëýÖá/¸Žx³u¸³yp H¾Uëjo}ÿpkãÃûõ}µ÷ao÷`“ÖöÀg~’êß3·ç¼:°V÷Ç$aD2æ_h9µvžIäð‰q‘¤û‡×Œ`x°Ÿ¯jÇÎ>‡*„Э¢øX5Q«IµÓ;¬¢–TÈ\õhÒÆTœägõ&8'øoz!¼^O†òÛë`a±ÑX¨ §=ýá`]ƵŽìÑÐïÔcÿ¶ã {}ÿp*è4Ħ9gù- ¥ƒ_6©ÁF:Çh^á‹}˜ lBÃLÖ Fmµ>‡(UáÕ÷ÊìýœÍÃö…Á»Éx,öcq9$” ¼f¬!àîÍ"P{,ï(–w´€rŸÌ¬šœõ±±ydþ혧äü\§!à$ü6£Úà»÷á ½Gw²Iïöqh(¾8Q ñh$ïJ£N=Ñ ”“!HÏ —èé¢X&¢QÞèb"Zve X@Ül…ýg8/$•Dnˆ‘‰$;°hL+0âŽ1 ÉØÍé^€¶ ºs_, Í Œ(ͽxØþ€M:®"iJËÑ"ýÏüxñMâh`íÐë\!ضÁ².€qÃ7€Wɪõˆ‹ðC¸=˜¾!6±L´±mâF7žš a¥q&áCtnDö•¾ ¨(Ïpr]"9ì¤C[žáðC˜Cç–Ð(R€öu0»à±jÑ?è•®O3cÍNQ]j‡Ô¦ÔÓï«‹V‹·Œ³Ô@ßÚI…ÔN"‘Æ&Ú§ÇÑ%ÇœÖ';Ò BŠTˆ{0õNkF}’D÷« ½_u{}çÛu¾BÚ¯îîmî¯ní¼ÕBµD“MU£U~VY 74çtÆU™:ÝVìš² ‹ éfzŽX+l3@‡¥Xà.Ÿ'GBóØ÷µ»o~~!ïÞ¾Wjr’ÄÁ öÕZþ8÷_Zj~Aíî’œvŒ­n¿Áh©æšÕ-°þ~ký —Û¸@H8Ü®èÈè‚EðÆ«^VLóÏìW+žk7vÁ@åÇ(‹h¶iœƒ·<"¯Ç£U!º½D¤üÌgŒ´y/bÒÊXP˜ÞD´¬W¾{ÚuýJ ZµÙXXP7á芎Ÿ}ÜÎÕãæ™w¢}49÷Ø¿jôP´³=ƒæÃÜàØXzS]fñšF]AÚ'Õh2(†Hx³= ”çÜ:uzœ´ŽWÖàà!³(†þiÊ)áÛpÏT&rüE[Oðw1Ìá¯ÃÎrsQ \ò‚Å®?©’àÆÏž6øKÓ|éú½±'-h7l©<-"…€À¹aúü*8“OGñù‡MI«úæßzcÙ)¨;›KÝÎHø‰¸;ÒõæŠé^CÑÉÒè;C9j,6¹OúâÖô•ŸŒº +ì_+c»À_2x|ôŽÓKâ..Ý {CÂ6iëâRîOèÇË({Öçžré>.°é7Ó Ÿë­@»LÆ—Òï(@»…þ&÷+8zq£€awW€»~àãÆïðG08#öè`:$s–̯›Q¤«T¯o±E¢{ªÒ~M"¯¨b̬£L¥Q÷Œ¨‘[‹ždUSº-$¼³íØìwvËæ}oÖ¯—§`¥È“Xþ®®TIü`c2¶´¶ð–Rð–¾Á¨-Á4QÖÕÃ(Q_—ÔŸ×ã+Û½ŽÛS¯Ù”–¸Õ ?6£öà‘âtgY±ö•m—Ss¸ø5ð&Ý+†÷‡Ð61ý¡¯‹µ¯ê 1·Ý¡ÇC"ô’€ãbä /Ö¿®ûðO·*ÎêæÕp|ûŰõAà4 sÔ½Cm1|Kº”`ÅýëC°åSh0óÜéÞÆq 4€>ç|}â0ª¯}V­iý”‚þêÔ‹šä)åxM2/8içÔ¾=ìÁ™r‰X/fUñìƒEì´ŽDHì28°a?`…&‹&,G{a¹Q+kí’=ïŸ4ž./àDY^]LxÞâ³+ý žê“É Gûvõ$þ¹¼_9z¿B 𣕧'•%e¿¥áA ¿ÀV–RàúÍf)läׇ‹7êËߣ³Þ‰/_ý£ÞÙ‰|½Æá¿là»yy=8gç´jü­³t‹Ù²qäQ·±pMϺMùè¡@76VnùÛõPŠšˆšr>º–ß—«Ä– tõê²|‡žþhpTýc±¶;ÜœØp×'h>EXâã™|ᇋWxðTòé4”|ð‰Ž(;Ü`5>Våûý `»tEâË”|œùú‹f¾ôô—žSº±çE6YÜÇ×#M¾ G¢p~¥ë.5¤ïÎÏ©"Íd‘æt‘å…DüL-?sJð/·@yÍEå|Ÿz9J¼¥ ØÙáïS/ÝÚø5U :k¨äÏé"£§+•~àß6Ÿ©ø«}5h,,Êèé[ÓâQÔ0_†4§ò}@kŽFؤ\Á©.$G4Kü=Þ”|¢çÿóÝ¢q5þçPp¿3ÚÚÔJø>ìœi´Þ¼¾¢ƒ jt VzéD¾SíË7zÄØ]žÉ“žï”Ö?š¾ÁgDtWòa …Âèêñ·3óuuåÖ|íùcûw‡1„ëUóâúYüíL—Cu Æ?ÇÞeˆž/'}´2„$Ñçê'B 5©º&¢äC7vãÛ5¹]M½…ýªo¿ø ü âÿ]ƒ‹ŒýAäI¥¬^M…ÉÓªjÝÐù0%ÓùÒ*+«ŒôyÙ1ß‹öÉ¢p†ÛZ‚S+«ï6zc±öøvpb ØÒM®R“š.ðꯜèŸÍ—ºå&ÓÕþ²ìƒk¦¹7+ËÊÎ tiÔ¯ŸY!¥N‡B"#Û©n½€Bæü-6J¬(Äáìéì†n¶×ã0lÅy²æTq±Ä?É8]e2~ç-N—UêÐâ™Hà¨ÅØ‘¸,KÍø9¿ø½“ßwVvP£»QŸømVó8ŽÜå2¸GÔL¹Jÿ³qÒ·Y7XǧóãBË*(éw¢ñãBÊ7Q u r#Ç=†J3BĽTË1ÿb¿³ïh9Åø–WÜ_Ìz$*¯,Åï-ï’|ä‚°üKˆaaÜrÉg£Ž­0êÓWaVÎ|ý¶ß³ßü3óíºlë\ÌWp2\@»ÝëDZ²¡Ó\à÷G¿OžÉw¢0ò¹l¿,ë/+·„&ø±dÚå¯wÝ‘gÊ€Uâ§`–äKÏð{·Q`~œK~].sþtAúJ‘Úç·ñº2?ÅO™£²‘_¤œ`¬ìO¤))'™«jœMÄ@ÀâÇìÌQÖL–|q‹£%sg\?vË>fž«Z6DgASó¤¹}¹h¾ZÄŠ%WW¥]ðkò…=ØÊñ±.O™k³_5žçf¿öõ+î/ꆃK¾º9/ÁÅ%_3çæ”Ðœ\˜·á榊5ÓÅšYÅ–RÅ„«KcNÎ)¥9;·3l¶ˆæî¦ ŒREFÓ…œÔ\ÞT$áô¦ s—,ÅÜÞt1°w©‚Âñ¹EÁèÙBÂõÙ×ýÀîNböâ¯`÷Ì/œ£\0”^1¨¿5-ʈ¹?.ÃüŸ|û»þt ¾0—g«é8=e—LþÒ”0λY6ì¡" ¢ù9¢“‚ é eÃíñCà šàÍwæõ<ØÈDUû¬¤þª{-¼¤­9:o¹H÷ûYücuå6þA\e¢>XËăëÕ¸ðõ3÷»iøKùu-‹ݾ4P˜ãä‡ÌsÚÇ9*˜5ß–¯ËöëŠýl´k¾ƒIåÌ­Ê7Ïâó­æÇ­¦Æ:£EЩ/Œ¬ó•yZ[×0¶R€Y[óîŽÑÀð¹ÂË6þ•f>ŒaiÀo$ “´õP4ÖŒ>YnEžn…M©Â¾Ï×äb@,×îq0ÍÕ•³¨;ÍK»Qó5gË^ÜÛ& …OEüÅ.GÀŒÇUýtØÑ_"ïœÆ‚ëÃAp;ìd꼂…ž¡“µŠ ݺ Χ 2æõ»ºÓ“n uîˆâyI”Q‰Ÿ§$¯žù+Y²‰ŽÌbåîÄöM35#1]Ù ]ÈV³†‘?› +«³tƒxoêôi¨3&@K!ÉeãÆÓ4ƃC‹UË3 jhR›_ÃÊík=V‰<ï²7 ̳¼3sÈ1štà‚u€ø¬ÎÒ”¦Ö eeñ­FVC«ºš ¨*`nBÇ|y7{ùuÆ€uµÌÍ8]ÓYÔÉíÌ ÃžAq³¸ü™×óºNÂY_Wc—}]±ó,•é!ßә݆+N3•Ú/´ÓȨf7’….zá‚™pÑ:£pº³ÿòrú”½³ŽGGG]ü²¹°¼ÀV6Öî"YÓ„WÖ&6™v¬@ºìgSQ-¥êö#·Þ­¶y¸â­œRsyf‹Ë÷µÈ=36¡¼Ì@g¥5“¤^Ýb³¹.—Ä_®!A¹î¯r9´Ü Õ¹z'z`¥›ó{Ö .¸ý|vµ˜†pÕl̨¯¥—DõæÑâìÓ³òìj%ÕÚÊ÷÷)~ê‚p܃µ «NõU[sN½Ùú¸½ÙR#Ÿ/Œ~“ë>ì*”Í †ê|¥ç G‹KÒšó埮ž<ÓåíWzþ¬)Ÿ5ÿœnñ7š+Oõ˜OJ_ÅÎÛê®ÜÐc @c-b‚­5atþ@g„ΞÇu²¨âT *óF¸ë76‰øÈ"‘RB*Ì©­B_»&´Étþ€ÓAåÙÔžâ¢Äv™g’š±Y[|)7G×Ytx†­NÒ È’C_ÜRù+Á-¹Ð¾–* {_5PâzˆêÚ¡ÒA3Ž0ü0,|5•ª×3wøx”®M}áÐñ±ÔÁÎF8MF¼ÌV©–œ› J"…óO6@£—Kö„þ–&£`w×AËÃ4°üŽ3á|N‰éêŒCŒ_šÒÞÅ`Ò—”æÂŒáOFCþ¨ f±(“±•Q'\Ü<Ì}èbq%É\5óà‰‚u•ò´Ÿo;‡æóXŸ=ÁDln²„ƆÑböŒÅ7QÇŸìF0+„,MãD8Ìn1nJpʲé×è¡[:&€Ô,Wg“‘,u—l\®Z—ÁÇZ/øõàÒf á ihÆâB|3äðÜŽ. /³$úTþ³îRÜTŽ2Ui)¼E!Sá:º÷áòצô 3j.dŠ:‹T•·AýAb&¥ãª0Þô3¦—ÛK½êÈ?óÜÆ¨jk²¡=>ž²x„o«öÛ³¬1Ø€º¶+7±I(~4fT[h.Ü[‘ ýq½D~;‹4τѹ~šÑ4=Dî‹i¦}úeñZ˜1V¼ËÞõ†»)«äÎ'‘Žƒài…‚Ë-N“ˆéBÍ,j1¸l.Ì\„(Ó¹øòhiù$»Þê}õŸîž­d¡ð3“äÑ,ŠÆ[ùq•¤ iÌäA˜±Þ’.!6F2I¤ò0C‹ VvÕ0…l憬μӅÃáò‚ܨ†Ã•…Nõ!9¼ ²˜O¶Ý¾¬Úü<¹ŸÂFKYËeÈZLo¸ ®Äj 1ÌdÅÆÌ-HçëL…FͺJܾp1]…Ø}-zÿ1M‚Î#:C‰âbL, Ï2x6¹[èlÆHœ2pŽâ‹½åì…æ‡_›*:‰!U‚AÛÿYaryK øÑÀë4ïSß9`i õWÄÌÐ_öX?+_ÚYrËJ¤×‘úûbü5pŸ7 +ãê xšQN´ÄËüq¥?äºX&Cî¦1YsËò¥÷nñ¼IãÒÜŠ¹è–I«Îš´?ØZHczvÝAò]óÏn:óÎ’ã‹fì±á A$™Â”²ÈN,&?;¥.]:?£è÷Þ/k[•`<6ÆÌU÷EUÞ̤ž=º—)35í1ˆ?Ðû•¥S±²4Ý#¾ªV³Šÿ¡ÖÝI¢_ÎüÄ䎿íp2úœœGÓÈ=3ÉU¾x4Ñ,yÓÁÑl¡tyŠ‹Æb©ˆ_(ƒŒúG°Dœ%iëDM¦ð˜­ôñ‘y?ãªx Qó›š4Ÿe*¢ùy²ô­.~;«ü­[Á[|¶˜ÕñY¶&O¢³Fö0­]'ØÐîþ$æ¦êøÁ¬©´ò-çî±åuôÿL„ˆïý¹l†Š)ºœyq{³¬ Sû56%»±C]ÐBãm›Á£˜¢S¾¸,zú¸›·E[c2Êji2J÷s¼8[|Hð¿:±æ žL¿Í`£É`q&ÓI/baÔ| $Ç•}3Qmé±ÕœN5gµvuO[ÍYm]ÝÓÒRfKšÎnj)³©ÌZn[ÙzØ©jIu+F$¥™÷[‰¥z g&3¯òç(ôºH«™¥’½׾Π+°­œe<Ýõûþxt÷à®O[ûŒ›‡šq^˜ÙÜ8˸e|q‹Xvj€Œ9Ö–Ÿ3å?1Õ®3ê/ß_Ÿ=©èoví•û*ß6Ÿe“`6~N’1ž]|о -³Œ8n¯zYFc0 0ˆeF´¹8K>e¥WžßþqC3b:ác¸„8¢9ËHñnb)c߸á\¯6D£ÖÁ· ý=uT޻յw›qs£sqLë³®³.È“¥¯í w=–?]ßÒÿ³(Áys¡Q=Ÿü=GSAŽªÙ žY§šþ5Ó€ðz³—gVÅ›•å,{Û•åêM7c–oVŸ]ݧåÑ7²4=·gáí}bõôýÇ-;‹v†=ªØg_Rçîn|>ñQ鮟¡ø‡ö,"ÄvÙ¼±§ëýcÚØ3èǪ¸,;J8.8 xîœÈP6ðpdzƒØyŽW¿¹¥tÐÁq㸆 ™ *œJŽ‚QEǵ°Y-†ápB']MVó1kiU}©÷¤àÊBç1ÁÆ?ÈÜ÷³­páC¡b ,6ÙšiÊûβ‚Š÷=ËD ±bf0æÀ’¬{p'¹´%ÌÑëÍ “ËÕƒ•;œ$Ç3ÈuJ„oJ6eo8½`“÷‡-á£KfR.—ÒÞÇ cö0ÉT‰­Oñ¾_ÄÌ«û}fˆØ‘/Ô“ýûð—ðÜjŠƒ,í§xÙÈCnáÆÂòìð$éô÷ÃvzëTéÛ–Õ¼˜Rm8³F" ¸¹¤5S©Ž½+_L)8˜ê¸sÉ!y%KÕöÛMx„˜WÿY€Ä°DbC¬Ü°$‰Àa³c”«Ýà‚ËÞ—]–¢º®W+×iÓÄZò~?ì"¬×—‚´5 hç¬ï-e†aqÇX5Á^3ƒ³d$c–”S·ùù0Ê#–Üm>oÒL¹÷g*žQ„é¿›QËD,Ž‹KX{fŠ8GÚ—»+žÌ‚'nÜcìbd 2'ÒNÐN©Š¼>Û6^x ÑŽ¤nCB§É÷Ú½t>™bŸDdûä„N’7¥lÙ¬]–âÐJŽd³ýAS“ok‹“Sâb0©ÇF3ûf‹}²ãþ™Õð:˜Çc|jJ9cAHX€HÍ&î! ¸‡özc„ =×¾Úþpp¨6w^«­µ®Ê‡4¤Âãêu£A–Í”ˆÆŒukÇ¿¢¼s„óGùÑRMfƒC½!P£hë\êxy4“üMrË&œþʶ=®%xµL ³„“ë„\/2e# Áç6ÞO¶|Á¡UvÁ¢SšHü;Ühñgo2ðt`:]Ä",¾ßõ“=ÒÎ=eû½«°½‚Ÿ§¿ W(…Ãó$¼pðU.—½¾%žPcÎZÆëm À§g¥Áñ³ð—øq†½IdfX¾ŒÆ²D·²‰© ô<ˆ'_YBèIØMYÄ‘ùê4Ý·FI©X¯ÚcE¾Rs·ö¡8­ ;}ª‘À¿Ö†^¯o6‰„¢•æé‡?IO¯X0iZCG¯.Œ0³ö‹Ä›ÕˆÕ ¢ fÜúžTìšanWäã©D ³í¥E¤\O­Ëè– _àèÛ÷%ª¹Í€âËAö›Ž†7‹·âöÍ…¯œ˜ev7‡ó,OÙÒTM á’óàþ““ |ÒµÜ]BuŠ{I‚2ÞŠoœXK¤’u½º:JN¥Ž½§ó–7ñÙäBS8>ùåÕ3g×$ÃëØt£¼‹@LjíkæA°†7²+qLÄ3@ îŸ*ð‰ÛqÆŸŒ¹\rMÌìÓDÙû›˜ÉšÈ¡ºüãÅe ÿµ˜®½òˆÚ+¦vÓ©­i‰üäðô±6›}±EN\αÏÁ wböYðÑù(Œ|§ÿv^»¯,K8ö¯ìóØP4ÞY/¼NGqŒ½ƒ«ˆ¼äÄw”Ÿvâîz=0yã)LØÙ>Õ\glHö8J°­vÇIdlyai—}-ª´Ábü2:}·ìë’h®ýD:P¡/œ¹Ìß2sõòí„@¡OèrbûÓë0é ÆÃx½b5s•x̱¶âN»Uq¾f¾?›)Ћfv»YutºàÞáX—Ì4Wc®™ùíRÜ)%í‚kR—ñæÖ8¹±ï–_¼T³ ¸«Æ‚»š´àN™iW½‘‹ž£9¯<çÅ•ƒÒÿ¸î‡¾yÁ?b¤ý¦•çÔ[’#GH0 ¹®N«¥ÃåÇÂèaG-ÆN˜)6)ÅžèhH¥¬›B©4}Á#0t ó^Äþ%;ÞþÊjYG¤0ED$sŽ‹J‰ ùÚ‚ @"”Ò7ýz€ÈG€<Hâ¨S@úà›|mN#x£“ ¯ªëý]ãSæÜu?½쵑z›ô)Çs’4aŽŸ;7ÄeÐ"¯ ¯Ö™]+Qó:aëßø‚‹ÄÈ ¥,ùLœWq §rÆÜ6j Ûê™%èg1RÆ%ˆ³9p8.NY®R좙`[ñÆ·ìjâF¯œ °Ÿ~^3Þ\KÓÞ»e×>ÚØ?Œ2QòÊ:ØPרò[Ï)»aÊŽkTGUFR‚RfÚ©/œÎé<Y¬„DÆèˆy‘ðh“l¯4¦ “g¡Zo —{³o«-žÅqÜâ°ûsàt`_8Œ;àÄ<Ãu”èÁ,Ô²X½fΠ½@™æhË:¢@Ö›è®/Tˆñs±ÌbÇÊ6kÄôüšŽúþÝvÔ?íÝãŽÇö‹SûµL’dæ ¾¾)Åî•Î|³Ë\7–A^™79fp&|úÜ\ê¸!’ËÝH/7i¡>Cöæ7’Ðet®¸J/¼$“S$'¼Êš¹Ó›}ð9WUI·ž'FÈJ„' Ÿ“ü€ ZžL–‘ë?[ÂKÃÛZûþÌOà¸[ö=«‹ïÙÏÙ¾}Ù=lx‡ø½5u´…¦‡¡CáØ¬“N”è^¸ïYyxoRmÑ´'Ê m°9ÖÙÝ7m±„=«„É™/Œ5³eŒˆ6 F¶öÛhÔ5Å%^öôl™+Òx]úуËëp:éõ™‚÷e²U GûÄÆcžBhkè™ÔŸ=úî1Õõ>«Ï ÌzþÔ½r̨ }$EœSï9E'Ý<ë!›ãœòILi©¢×íV/ÃðJ8·py;ùA¤ q†½vû Gã–Ê;¼óÉ’êŠ|Ûº«~»°ØÇŸnª „JpÕMúšû¿þ=þߨw3ò†Õ…Zs¡>Ã^TïúCœbă/<]^–Ï•¥ÄçÂÂâÓåfó? K++ O—–ÿXh,.-®ü‡úo5‘2˜ûùßäßÜ7ª~ êÑ%6¸^{U娞œ_Û&ÕÖÙ²!S1ÚtÄ|’.. º~Õ??÷;ãˆSL›ô¦qÂRõPJÒétïÿÝ#³ýT^{Î =•Ùþß0±ýÿ­yퟩC¿Ìp{=¯ãÖL Ù\ÈHiß@Jû§:¥ý_íSíçÔ.mù`À’°cB?t¢çßÒ%lØíמú!ÄÇÝN§C:¿kg£b¦Ä {«ÿPùy"0ÈWŸ>9O%-qêaÈyòÏY˜3‰j5!k©Ÿ ³¢“ÓF•Äut3Vqùã¼èzMòVHQsê´œáp,0b‘”ÆjŸÞùQûçt2‚E»û8=·î|"G÷¯’¤[ÿ:®!Õh“ŒVj{ÇŠäøì£P¨R½Vž¯ÔuIÓêL0Ê«µŒ9S ¾JÆPú*Ö?·i,0ÇR¯Ó5dlk ¸†·u°Ž~žEÏqh Ìÿÿ¨šN›™‰UöîPëµCΨú9—õUõé—- NûÌÉÁ8©8§UÇr"RÑnó+‘_¾t8œû#NñÙó."^ ¼Ýû>¬þá³~ZjDcP\:ÆZAŽf4e> .D„æ,c Ƭð¾òõ±Xë/)Ÿ8hœ@¡$j-Öš“Ì]&4"‚Uæžy Àèæmz3C:œ¹„¶•Þÿ’Æ$¡¯åœU6{gM]íÏ©w{æP¡ÝˆÞ(@‘yÓ]`]/:LÑZu;§ÌY£‡¼ª™Ít½èòc?wé܉qJsôÿxiPR:î9 cÒ( r¡¤ôãv[c÷ÄÁ=â‰pº rÔÙ&¾sŠjòȳŌˢw®¬~¿"fù­×Á} nZPVê†NLZ½_¼»od [LÙ.rD«LÛAÓÕ¨-1Ü `°€ð%Iuû5ý·§ ää’˜TÝ~CK89?§Þõûw~þÇ<=?tvµ©ÒÉ] Öæ_æâ]>GD;~S ²ª•“„À¼Ï³6“MUÍusšô¯“Åœ-›ã;L3Ïò¡µ^7WY7Þ'ö¾Ù™rZ2Ü?qJ]ªŒQSÍBÄs}y‡ùÖê$B(<‹:ÐÅÓ&½ I¸£¢UYkƒV°[0IfçÜø…® ›ÜÃ9¼*•¦¢p[bMÎ@¿¨3Þµ¾Å"tÄ‘xvÇj3 ðä¢wW“zÅŸ}mïJ ¥ÚÔÀÄîÑØ"š aŽ©‰‘ÙxQ­$#ÀßëͽÍ×›;[›mbäöˆ—ó×Á(ð}—‘³™¸DŒÌ„Ÿ· z»ÂÊ9ÚÉE¢PÃÀM-Þ ;î°J5iò§:§¢4ZŸñœƒè)xÊü˜@ŒoˆYQEf"‰¼FºE΢ijC5J5ïø´Ó¤Ã=XbjòºbPKüçaÅָסµ)éKœ¢ª¥ŽóêE²û$®­¿Úx½ùæí»­ÿüÛûíݽÿÚ?8üðÓÏù_ÞY§ëŸ_\¿êõáð·íëë›Û»è BgQo>âýÛ!ñP,6ˆR6‰ZÆw´ÔLð%ÓÇî&[=ŸØ)˜·+'„ׯG¿¶NÊ-UWõçIg[ýª0Ï].œ´Žën¹R›úEb sšfómÁ0 œÛ-)ï: ôÍëi×§q>N‚*À ²ökfÄú·øáÜêyn^Â}oÉn¬íñ+&ž ×ÜP%¹“é$ôøãS—6[7 \uò‚½˜ªŒï†PJ÷˜Lé9òÏ&AOôÜÒ™’ÎMŽêP’wÊëvùb—¸ôI¿—¤#8ذÎ 9 ‰1ôº¼UÍQÐ ¹#|š‡8yíþÃrŽGª€ÿ妗æê1—£EG–cš/ñq½×IÜËž¶ ¸â.6C£»\œ¨Ý×dÓs¢$o¯€êÒX-@-¿hZí qö{½ZfwPôÝÞ‡ª±P[\`ì$v¥À’A‡°ÜfL;,¨H'é Pê¢| 㤠훡ÄU"q“ç Ã1àn„ããùz]æú¯óõ®þÚâ¯nÔ»ùºjQÁ©ÝM=pÄáÑr2Ìiè»bæÇ¨»={Âíë†4ŽÈ¤»ßó7`é…!U/Ç›Œ§`‹ü²-±Ð/6Ä}•®0”†jÚ×®séw®htœ—¦ µXp‘ð5˜+hnlÉ-¡f¢œU&R=’¤ìWR3bÉ­æRt±©™cBû¯¤áî9”¡[¢‰»ƒ8Àû€A&@²tjäœÆCqnyðPȉûËF/Ò*ÊNÁ˜µÂoª¢K¶Æ 3¹h+™3_éôx™ÁkŒü!ë"+øà=E¬mš­ý­üä†É¢¡ô`=$u┇é–ÊÇ6wK’y:8OTqiáÙŠñþ™à+µE4PQ«g‹ Éú鲡’~G~Ÿ° ì“[~ž3A¾Ô¿ÒíF¦T$<Ùé\ëÜï áéçÙÓÕ*ßc“#<¾‡LÊÉçîr kaË„¨>Gâ°K “…c 9ǰAÌòÆ(à>Ô=tŽó¡G$Î(]@¥ä¬›‹ÌCâQÃùâÑòÖ2¬@r,véÎ;rXH#[Baéuì… NׇÁ½oê"›’ËÊöSQl>×C;­s*oôPа‹á^/Ì ¼ôûz†dûÍq+SÜX‚Lm6f¬¼ 넎Y¯sÑ”¤Àõ…!™ØÓ=VÑõXÂéo› ‰9ž>ÝÃïsj¶‹ôÁò×Üè©&/-kßÈ7bØŒ7˜Õç ÅÐ!ÃT° Õ¶D]‹2Ö/ƒôŽà|Ú}¼š©~\$4+×€[¬xokpòófm‚i¦iú¹ÏÃüœ3ÕŸ;Ö/¤YÝæññàY¡‘tÓ¬ZÍé`–ÕéyÒ†Œézí²PÓ•^ ²€­EÍX¶Èîà‚ù2𨡮`Q NPS*GP_Üç¶ï[… ”§Åœ×+ÒªØ#«’Ÿæö“û(‚\˜¯72a¤€ü{Ñ–ñhÇu;ÜCüžÒ«½å‡ S·eß— ¹4#ârJ§%kzBÅø¥jµZAeÒ&a” k]Á"44S¾Ýü€ˆÉ~õ}¿ Ö¥Ö¨0ñó~Sê':á«Ë K´øl¢•\òì•V¤ :^8iy]^/8eƒíÔ \THê°*…‰uÄ×Czà ×>[k-þ$«ÖOÊóŸêŸDw-ÄäÖj®om­ï¾³ë‡4êŸ@ê>}²¤®Îǧéq­Ç?OsI]ùLúåÒņÖ}Sa­û&hµn~ªàâtA[Ê!ˆ¯ñÈn¨Œ–¤ê}MdÀBüÊúiu{2½#ùÄÏEÓb‚Þš6gPÜF~ÆÄ®%KÍœ–µé.ÈýÅ#H|‚úÉ:òªÿ8)[ ú(*t€“ Z²b޽3ÃÔ’ ’ ©''åøÆg¾Òª$»î|ÜKÐô„Ì89`Ì ARäÊ»š³dÉJÐH.½É84ª6Öwîÿs)ÞªÙû>NÀ êG¢ŽzF*d‡œ£Õ—lõÙ›}ÀÖ‡t(áÚcÔ•;£[e©/¢QLƒË¸Í+3ͧékaÑIiŤfRÇÍVˆT]x#èãø¼¯†Vÿ铯ê—9»/ÒØRÂW!Tï…\ÔÇÝ\rÓ¼õÊP¨VùrC¢ðj#3—Á¹]ØwºdsÙþœVCÃ(DVc«ÇCUïú×õÁ×Zì¡Ï5/i yJ¤ ÖVéKÞ>‹¡¼þ0ÕÊ5®ä¶£5ášIÁa/f ]*¹õæ`ˆ: ýÄè÷I2,1ñ¤GFø¬†¥©ñ2vâC7vO ë΀;ÙóaŠÖg ¼[úÏïSÏæ¥{H6ˆÓ“žSî•®¹™’C(¾§Ú¶ªmw¶ãòö¦³%ªÛcÙù­‚=µ Ç-EÂÀ‹©}š¡µîÅ~€<ݧ\$1ñßPŸçÞT¦5{¬ÒÓê=Pêlt~k÷ld,ÑÉÁÄše†íX;K‘PNÛ†TÇ“LŸ Cš§þYoZaº*M–2ÈÚú¨â2¹x7tˆû‘Ì7ã ‡Öâyrßé¢fï Bw÷ä©´»Ã \¢`©­¡ÁɳùuùSuëþý¨0àbg¤GíæTmwŸ*w´£Éùyp»–7^"ÅŒqôÖkÄòñ 'ðTKáÊüïÛëÛ” ºj<ÝŸikófÕmÐV?O_’þøÇ÷+w°QY$,OïVg+ÿ»mÝä¯Ú™w¥·Jg8ü?Ä+ü·æ þ§ÌränªO1.€}s*N”WVyØåa[”'iPE­–:n¨ããÖ°àÔ,ÌÓz:ßzì1üˆËãÌŸ±õÓed=§]¥êuúP¼¹žÿc¯]VÿçvÌ4w- hl³!FxšYå»bc˜Ð‹wÐôyø*'O§|õm?ÿ)_ç¿Õ·ÇßêÿÚÂwú[BsU¬hm>bÄ~’ÓÙå“甋´ʲ¾qÚ2Ò ºvî.†ÞøRU'@¸ãý9Í3*«k‡ÜÚÁoצÎ#9K¿Uß«o/,içQhý!÷÷‰ÝdSzCnöÉôVøãÑ<´²šš½1$øX0¿cÎn§g6O‡d0ö°òŒéw¯Ç "›‘Ë€Á ’±tÃ\™k0éì¡ÛIÞžÄ.°%µ÷f¯^[¸fg›8z¨j;#Äs‘i´Öè¦2î)åVViðËÃ7‘QÐA“˜yV8ˆm Vf÷ YšÂ@Œ²ÄT½ÞÝ:ÜÛß}Ë»8†YÓÝÙç¹l¦±UÕ–QKµ&†\§-у~tI;?ë¥M³ik¹nŒ×òó¿›¶ªŸóÜ>ÌÞ°΢°ÊF+Ò>;†Dª¹„qã@<¾Pè¹bû>Ø´\×`½‹õ¯1:´³ý·Ò¿¦v:CótcŸv†xzI¤Ë¾x·½ûZÞá1¿&>$~½ûóŽ~MùõÅ(ûîí¾†ŒÇôZ.êõëƒÃý-yÍéõ¨oÞíoó‹QŸžö¯ºÁÈào¯·öe xŒéÓ‰p+nn[×òùøa›Øa<À:wú]‚!³¡G*ì x=J~¥‡¤¿sGõ÷Q_êJ§¡„¡yN¶:(ÙÆüŒLgr"bsHä†DDV')YƒCT;%w]–,/þ4kÏ5ÂíØ‰¶ñIµ[R¦­ñhâ?Pº_R™31¿8ÝÎL !€˜9›·Hòe@.ÄLö¼E¥/•T¼Jóáš³ñZ¹¤,Ò`êR©Ë Q I,¯{!% YœÌwöpK™àÙ„NPÖªHAVØL»Á$ŸKEá§&‘i¬{hÊpÔ3Ù“×æº ž"ó ÷DORËNGrÑ”´emiø‚"ïÄ¢¦è†°ZôÒ੆<]:Iƒvu°ÀÂÔ=i1tñÖy¢+­õY…¹O8&Æ/ì¼çúØéèhÌ’êˆ?X8áxå=Îh691U£Økuàƒ³ÙJ¯8ÔL.ovÀLóy&꧆ð,ž¦FƃÓûU¬lU”ߟôØž“-o‚0xDpc+nÙµªû•JåyT©Ëǯó•<1s‰ ÖIÇ™ÖØžOn¡P3ü° æ€ðd;¡w©Þþv©WÄKõ¯ô —C:¸ †4acÖº±™xJkµ8ZO½šìøo;e”y»‹u´3hÛ ¹'…«Ýæ§êüïñËÏ` Âøåç¼ñÔŒ. ‘¾Ð¡ˆPªžö¦«1ä·…ØÀªÒÓü»ôç³;×?ÖüöÇ m5ñã¯ßÒošfÝv(çÀ—û]+â“~A|ÕíG>øŸØRTÓ|ÿ<ÿ{ã³UæidÓ³žŽ#jŒ Y²lzce·[Ï Y¿‡kò>VÅtÈøÝw¹˜¾ I¼•®gÞrÅç|~©ÍÈy(á f‘·1|A6óöÁžÈá1«'òvˆ=JˆŽÝø‰x•ÚÓ;á¼ÎšÀ gQ¨ðCâéÀæAxSs&ØåZ4ÝU.b%‡Ñ£˜e¿WóS a=bþó-žN5[äÚé:¸—KÞhØ@4xVáÆ»ôAÌ$ùÍ%ŽQÄ~áðìéÁd$C¿?ŒýÛâ‹pÑt­¦™· ÓtM¡ú¼6??ÇÀ UAôS0=ˆÚ£€ÛÑcHï‡3B8TyQ3•ó¦^à·sZm4fe‚õˆ@1„kW=˜[Šh/AŽ©è$ ®*%A7®x®­~Ͻ 'þVgrÁ¸£²:B¼>7>ǰ&Nãb‹XmòÊtßXËâ¾=V8P[¨«!8“S1ÖIåï™Ë/Õþ!fë=ÿãtä(_@HîíË£)É4Ž{“$=‹~tŽõÜc½£!‹­Œi³ÍÞâ¾éB,ÈZ$*™ËéNüI· ÓúÖÇ .þuñŸ–š+SñŸ–šéÿÿÅñŸ ’ï÷!Œ'g¢CUçþÒÁ!mŒªN*hžÔ+¡Ñ/n” Õ_©àïÓŠŠÿ.> *M†¼7tÎU:!±À{ôpÔU? ùóÇ`Ö&Ôç1¶]­ã½à¶VþŠ'õW<©¿âIýwŽ'e]æ\¿s+«w•?$Qùøt~AU«—~oXˆ1ÅqˆË'b9åF“ÁZ‹™³ †éh¸bñâq¬…Š:Õt¯€uæƒRe½ŸpO1êÐÉl(Æxè|·!Äk^ÇvÜ>l{5·DN›òÏ( Ü87 ¶e©VGÍͬâKŒ®W5ÂjÙ;[0°Ì$òPéo4ét|¿Ëá$0Ž)›¥|÷Ò¼…cÓÀÜl0N)¢˜L­LŠÃfíŒÈ6î‰&ã.c&V%Ž–$ÖJ¾ŠIŒZ­^~ªÊ>ÿéÉßaÉñß:ÎÑÂíîníîœÔj5…›‰ýõmu´¾ÿöÃöæÎ!žærïDÛp|šù^p†oÓÌ{à€¬ëõàâ¤Ö$$‹ƒÚfq0ßXõ™ËcVÅY¦YËc{•Z¹éßh?™ƒðOÚM]°Œ»rY ƇîÚ©±ÍE2uR^?ÚØ>ioìî¼ÙzÛ~·¹þzs¿£æŒšKµ2ÂM1M çTPÀ®*Ãæu•Vòf6\iË+é øRðêRÓñšÐ¼æy>Îz]nÁlÀ‘Ÿw~©¼ñ-?GP.ßW)w^‹-v+oÑÀê…S›…îÞæÏ‰iÉ۲ֽʺuÈVpë¤vHã¿Ñáby=¯O\Æã›ؽtíá³&”MÔ²·Aª©*çP?§í ÙùrÒ6õ°ñp½þ|P£^Ð/DéySó=„ñ^;g¿AšHö—ÆþÿÝXÅöµ"öu,\"4F·Ç‚ÕAx8$KÊ5,ªðͲl2ÃË^ê(Ÿî¦/¡Xÿ-¤c2b}œè°Ê)‚îN1–wšÁ/¸Ú—Î>êÔ³TÔF³(çg‡¨^+W«ÂΩ5¢ŸDFȨ¡¢YTÓÍ{€† Ô3 %")¸1žhªÇËâ{¿tëì­ãwÔ )¨ÍQbµsÞ>Rb‚]ö‘Ù‡–tpì =ÓÃs§¶šWì­#¿EƒA?åªîû[eÚOàh¼_XTü¡¦ô¯%g­ÝL”©_V/L^¡k–Å`¬×–èÒ`¨.P·&t‡˜@eÆÁ[—Ó  ¨Îô¦èù·Ÿ ýø?±%z÷m‰7Ô©æŽøÛFEógï„Þ£wBï+w‚Á£qÒÔx$‚%¦(aF5ö?y}’Æi7:îb)ÐaHœäTÿø4æ+4ª?ézŽ'`Þ‡ÞáEBõÏð4Ïð8îfm\ c~$ÆÁ¯áHjÄË[=-âÏû¿M‚‘XžÚPnÚóÂÏÏf$Œö>Œ¶ªÚ?€×¦îÿ¢î1õ@Kaüú*¤œïSØ€ÉÛuI·Kï1⚘ô3º²i8'LØ'œp †ÂQD0iZtN_I:(Í'ÂNÂöþJ]‘öŠë[+1¨×*ǶT{Xd<4Ã4Û4t¤)Â:nG—1J}õÿíÊŸºµR',ÃŒ!*'*h\)vÂþ1òÇÆr°NÄ?³ös5|®~ãó€û‘ØÒé+[iìi _XÂg ÷Sb4¢oîïïîÉ HÁìæHnDZê’[%ÞgúbWadÍ×!Ú”‚©AÐa9Ïþ|܇ Ér“RÇEЉÍÇO‰£X"Ÿ„˜çi}?Šbõ²(œ À4(%)„.?u…ë’ÍâÅ—¼ày0BÀZ8‡IŒ>4ÁKe²Q¶é‚š³ Ë%ÃihVÃf Fõ°^×|ô%.‘êדº\’bf·|ù-_þ±–¦»[ÚÞ(9Î`˜)„¸¤Õk5åÂÖ$ljҊ,bÒ4 }† ŒV†Þ-\±#¦¿¼3¡þ0†Á}"nhÆ]V¹ô?N±£Ô†™ÁþæúëíM}d9Î x.Ù›ƒ²Éz¸°Ö”F"ž£ÉØFÎ=˜0ç€YH>²†¾ž´gA4ˆÓEÅS…™Õ>â»d¢îŠU‹>âe}Œ™MÖ ÿ÷ añ׿?×þ×õ$úØÿ.4aó›Šÿ±òWüÿö¿I'²jµªóÚYÇ´Ë€ä ¢G0h]ŸÝµ’žhê‡sýíG¢…ÚÔúÁ¸æw'/rVÁÛ‚n³º°\m¬ ‡˜3vC(r0³«µømsô3ømOÀ­Ñaó_Z©ÎU/Oè›fàKŸCW ï¥Í)M ¼ìó.çÆ^›SÕ "€Ê\jv.aöÞ°z‰lÞbÌÅ_ʪôÀô„/Œt9ÿ;wÿ³D z®YÑLQwQ•+÷ÕÞæþ6‡²2!¤–à<~W÷€%Éñsî‰:×-n°ªJ†U;Cà?zÃÍGãp¨-`Ì|Ù“«J¼·a™S:Ÿ†"UQÓmˆŠ1?ŦETPGîr½šù¸†<À+`ùþn†cÄ™[’8xLüúà&·Prf_N;y«g e 5‡=ùTuˆ «‹lÙe§um€ä”$AJŸ¬~'B‡˜:Ðv9ÙF_2tJl©/h±÷|vëÀ}‘yHN¹²OsÉ­y7$Tœ¸ûn×ësˆK÷k‹ÃÓÑOU¿Àï9|®%QíH ®Ì¸=æôM=Çü37ôŽS¤ù:oâ™ëmhž;wø‚œ¶n­n Yœ—1*WŠÔþœ^B™©'8~›Ë=‘Gn>}b?0¢ZªÎ.F÷‚V*&póº¦ñ™KtìÎ’%ô·Ò9¹×²KŸè%3½Êëø ÚiÍÁƒû†‘ž&ôFȧ´ÉYãQ±"µÀh£¬E®çsÆæAö¬ù³ÐAÁ߳ͩÍéÛ™ECiIˆ—ªv{F¼™jÀÉ2Xìn©&=Ût[Sgœ?èJh§Ü_ü_]Ÿk†nÿ·¼øüßÓÆrsiq ,Tca™ØÅ¿ø¿Ùú«kµP[|†·×>' k,ÀQëi.WV?¿[?T[ôÿƒ–Êéò¢3QxF‚v‘Ÿ¢>tP8 6»upZíÅ’³•zÁ1“lœ;*û]‰öž«+ÿî,„³—*!ÊãœqP…‚.T)l_C/Ù‘Ö„x³þ-#›ã>ˆÄë-êl8ös,#vÕIͫᣆ0ÈcSÑÖý$ÎIžv†]eFÓÃŽtp—Š´<êû•„–cb|y, = ¢)éZ¼‡t’^y!à,é~í|TßèùõRÍ,@œ—Û P"þ\2nè'X_OGÕ®OSäwsÚñÜ]ñìŽSb"%\üôÇ=_G%î†G¿¹Œ&Œ=´Õv8òâ¬ÂÞ$¶#ÖBÜëŒÂrî#äSè€qú£ð<÷aÜjO¤ŠI’(>v»‹ߊ8çd è÷n÷gu¸«>l¶r[ç ºÕ^¨ˆwŒ^äî¿GÄüÂA ÂKñë;įGG¯yV8r;fÆ8¡t9Øõpž,9ä‹fX©Öõ;°3Ôã—…²3VɬwI/ÍQU»ŠŸLwš6¯Ç}·n‹p@4ιÉi;æv!Ù8_]äø^d4¢=C›æš[‰B|}Õç ìëÈz8q¼+¹ÈGêsŽÀ˜ÍÂmûC`ï†ØOßü€ÐvÁí‹×_½ïAé w„Ýॗ¼¯9‰Y`<ëLÝŠÚ8Ü_Ý—ê‘1’•u‰ñ!o…Q|V%#bõܸÞ[—M Z#þÿœ¤Ð ˆéà=z!lú ì?í‡à¬ÒAzWF ¨/`TŽýNжÕ»8á»R4ÆAWhS]î,íÎ쇃` ·{·¼’ð0ð1æFr_LŒI2oäÄVèïc#¬zÑ•èÔCZxŽXèsÌBñÖEÞ1ÌC-·!µ´Ï¹ÊÀ\Ä4³£c8pÁ!.üq)7ÕŠ Œ$Ñe¬C;y’­;7 ƒÁ1žkê¤a'Y{T==³•©uBòT’sÜ?s K;>ÀÕb2`Ä­(£Ý„X`¡ÑdÂqNâCaY7ïD;‘Î|™4NµJ[§ˆßîE`”ʶ0Äâ>I¬Eÿ6§üzä¬MŽ3Y78,ªˆºð¥Ö™œKlËkõ—§›ZNéÛü¸¾½÷~ó •ÛŸ ˆšJœw•MÕ©xk= ƒŽb·†Ë^]È1€õ¼ÊŒbºõÑÓP¢ á‹|#Á ’½ô¹Ã^©‹Û)ˆ_4MI»Qÿ¬Ó 8!ªÎøãcd²T‘<Ä„ 1”½•‹C– /=ö<41Ld nà(¹b£ƒékœÎ}²Ü®bäÎVµC"²·§_µœŽ÷6×w>oN£­ƒÃõ÷ï×ávØÊ}ˆ8ˆ$±›Sµº5:~.ª3-kä´£³©.ÎmYD54²·¾¿¹sønó`ë@m¯n¼ÛÚy›c Äù’6Ödæ ÆM”Wqö6ÓÉÇÉyâ@˜›…çu.>¯i&Ïß„ƒ7ÕLlÏ3¾-ÓòõÄ“æŸ÷ažHWîŒ@_UûJϪt†‰*†ç矈Ræm8̯ਃÁ¬8|·»?ÌH½ŸœUÔeorö#TDT¹6èÉ¿½¹·þv3§yŸÉ8^-.TÿߨUŸt®ê²f]MüùòŸë”ü¯“ÿ›‹ KÿšKOI\YFüÆÓÅ¿ä¿ſ²}ÿAô^ãB{n¦_|Y_„v'ßñGU©ž ‚P U˜ÊÐ…)²`kÆywƒXŽŠ{&…b¹ô„ùad0_éƒÁ|E°`xÏŒxCþÂx0_òƒëUÔÖ0˜Gþ°cÿúð ƉòöÃÖûÍç0PˆC:mìîýBG¯D暊" îdsPGɈ BÿÖ7Ú[;[‡üeosó¿Š‹µ•F‰hǺõÛ¯·ö‹|…[âë;»;[ëïÛïv¢û(:u\¸Õ:T|›[ (‡»H|UÔªàT(évwß¶5ó‚âI¾#ãwR²…§}°y˜ã ÚæFÉE&>‚<çæ{c¢QŽž´»þÙäIÌðã2ìû$åÚ¼{)Á¼Š†wíÏ…ÛAz2îèúþÛöæÎú«÷›E%ôâÝæû½6â^ï¼-U«Ä+’4Xå2'u$¿ÿ¾@Ž4g´¶³{rrR@qç¥Æµ×+¥¶Ý®Ún?ÐŒèk)DO…€ë†ê±±qΓ¡ ¡ydv‡³¦ñžîÓÔVCôD¦ö®§J;Ýøeó€úQÉ=9‚°1×0¡µ¯µ»éÊ÷‡8w|œ€$IäGÁ?X¾2Òs¸3È4B$‡“± 8•z‹FøzóÍÖÎfñõæ«o+ UyÍZ3t°!fÀcAbߨ¾rãÍûõ·|›Bà¶Þ¶aUì|«£5>¸0#Žf&ƒÝŽv4+BÅ+%_ætG¸B£a’÷&ƒ¨QcBiy©Òáþ/„AÛ{„=Å£zYÍ™èY?˜>½PåzN¥þÅŤê¤rd½k軳ÁÖÚlnîo·ßU’¨®Ûâ[Â`ˆµì´ñµ}Ù6ý\ËÓÊŸM=Êz?órÄcö7>¼?,ÎO, Ú&¦éÈÌ+d=Š¥8¥Ì;ëU#œƒès¬jÍ?.È„îØio½Ù|°Y”Ó³÷ë;oÛ:ZQ‘Ž ¶ü«Î¥Ç ‡Ô?:A.ùï[^«u–ž{â¸E¡œ*«þ7º¸V\ð÷ÒXIšÉW¼Ûùðþ=±·X0¨žÉAäó}‹UE";ŸG˜˜ž¶-V‰¦u¨ßT±âBé9ÆW2¨£èÛÍÃݽÃ6;hKð.âP‰ù8¨¨FEiœ5Qã¿K8Ü‘‹):ù¤= y‡$›½ºŠ7v§-Û1¹îƒa3èNƒ˜µcÅÒÔaˆâ’€ˆu‡¹ãŠKRFŒT^‡ð ñ”:B³ù„^ÿð—½ÍöÞÖëö¡C½·¶7S-™;ØóÉ€sõ >dÞn€f­¿Þ’‘Z¨[oñÖ>“ÆsB˜CœoÞ­ÂýF»Q°„¥/pbúüæÃÎFñHÖ·"`w“Sü~—¶2ÍóAåˆÖá¤$¤.»À ´v?ìolææ‚szªx {G=m¿ãÔšÍ0ŒÛ‹Üœ?èçLЏS)q#ÅÒs~6£ÅgvÄwlT#ŽÝÎÏ(‡`ó®x–brèÙ;œ>1„â8ƒUºÃªÄ"KÖ„RêcªÍMu›~D4£qg‰n›^šåKõSMCXÛÝÛÜÙ;üÅ™)•Š€ýÄËœÄÏl¯­ñäí¼ÝZJªvÄÑ‹J±;£2½î×;Dý{ ùÔH¹ÌYðÞ†nÌìRÌJüó~P{‡ê~= þmªKõ&üÔí O[¸âÞ¶F®+ñ¥bS.͆b]uÐ)ã5U)¨’§$!Îôÿq®ÎXH@Âj ÏØ­ôô€x$0L\Äݳ6¡ÓPo?Þ¤4Eèy_3;¶7÷·6¾¾™ÎûšÚ;ÜþøÕí"Ý߯Ÿ0"÷µ!ÄôëW†xÏŸ6?Þ×ÒŸÔ„Ûùêf@ÇîkeƒøÏͯnû°Þׇ{^?8›ëûtÞ¼~¸›1ïa]Œb´Gâ “ q0GÁË—§¹aç²a2aqŸ>©ñHð¿ã…ÆbÁM×TÿµV>.ÖŽK5ö¿°¹Ê«©F´Wj1ÜÅ/†û0Xg)¨ãœúczòÚvþëÃîáækÌâÆ»õ}š¹j£ ¹fĦGÅs¶Ÿ¡¿µ‹Á¤Ž.êôY7Åêªdí»rn΃ortΓ>Ÿž% €>T jÞ鬚*ÏÍT²BÇvÒ¡Iè<êµI~nËõO; þá³°´ùvsÏÞ0Nb5¨–ùªbè·UEMÍž™®ˆß «Üt^Ýä@ [ÓfJ\Ç¥Ìn-b¢¢iL×™Ò<&ëå#ϼüÉÍÉ*ˆ–Ìäqƒ1Ž”a°—ß` Õj×{£0Dº/­kUKy¤ÿòþØýp¸÷áN«cõÛ»oT.‡|dݰÅg»Ó"TEøVR19Òè—ÜÒ1}t¨ è›ÙØþ9:íz0Ž+™(#©ÈÒ(’£Þä¾ÄO}òþ2åü¿Äþ3…ÿOðÿ[™eÿùô)qçÆþs¹¹LÏ¿üÿþUñœOI|tLÚ5“䥅|µ\µ) ð#÷PÆ·Õ©¼o ÉþÆ›üw ès™­¨‡Ã%¬AS¶ž÷™]âv?¸†ÕÔO9K®f¢HæâKmš0EÙD0Œ3¢$b.VpwÂFž6Å­HGìUunÐî?9Q[ŸàÒ™¸ZÛXGSîy7ÖªiAï±ë|Ф;¦:s¹þR;8/Òß½õ¿­¿u£#X+žT*¹#z{N§\¯xäÓœÅ(È~9ÉP¯Æl»d„ »YÑÔEÅB7&,{0‹•Ü]l*:òH޾>õ]M±½»8À•¦ésÓfË.ö>kÿ»ãíú¶µ 5ëZÔŸÈJX½çŸDŠ‘@Þk¿ÀWªãG&×Zg²æ€óׯ3Êg$êå\eÙR þ…´ý!1Và¡Üv@*Šz»‰}—4¦1—«ðtñØË…f&‚ªÅÊsãĨ~Ø)e ždó#¯ßn{ÃÀ°ðkPÉ›ôrÆsøÝFÂ{g@+]Z.O|•Å! þ¸ãaè8bß« ‚þ¤oÀ•Úƒ§ØšÄ³Œ¥<ÊšÞGó `3:†Ï„æÍúáúûâÑk‰ËÆÞ¦óD¥±o¦Ì§TÖ€¶lŒ¶Œâ¾'€ælÉÄž5 Ê8Öü=¾ ÷RK;Cš˜lFã×WŸ¹óÀtvÂ^xt@muÌE0;–¢ðá×¹O &×, µx”5|žã’Þ/›‡íûpäšZü‡¦‡'hK2 s²ž³C©g¼¸xb»ñ‘©-<0s0žÚü¯[û›’Øq#¹Þµ$òß7l„,â 8Çè’‰(ÓçDÉΜ¶eoo~Ü[ßy­ûïaþÄr šzÿϧÛoÄ–ôï$G:êí´ÏÀÑyBùg'f/T×ÏÞä¶ ”ú{://ëT¼À.ç&ì n€Ãˆi³¤/75 •¸r­V`wçžÉ\ï"4¬'ùœñ/ùµ°fãÖŸ?ò%iLáá$<ŸÜ½Z»8Á¼„¦Nf˜ÙÒÝoÑ9‰þÀÑ[ÝY0a ÌÓŽ<ÞYö°vœ.²G‹tíc%à·Ž¬ q:6%‡þdPS–˜ÑºÁ ¾ËwlM‹Õñ%ý°¸\»ù]H&ƒIÄSAÄ,šœ™!©knr‡&µãÄq«°*>§ÂaB‘šëë˜Òip<³fd»Gß.èè¥]ø¿â|ƈ,¥Ó[“Q\l‡$[¨¸¶Ëé«ï&Ù×Á/4æ›FÕÖèó@;ÓpÌbU¾¨;tZ¨Ÿ`n­™FìK 3¹ÄÓã´§ k‘#áX%`œÀ¹i ‚‚ñ°˜Æ'q$’3ÚpJâ)c¯±Vv#â–ªz­t€­Ï~ÊæÒõá Oë&. ñ©Ô)öæÙD‡ˆ´ô1 ¯|RÈ„ð©é Äç8 ƒx/˜®ñ„0¿âp-\LÄ8 7èyL`XV,Xp~@lÇ.Sé{¼ÁÌ(xñœÊ¼Ãà4¯žÅHŽX7ý~­p<_ŒÛ-Õ §þí¾byբߺcu\6–KùSÎÆÝ•h7&èªf:æ··¶vÞÅàõONùpðnóýûÏÔÉ~z„ysÜÄ›Ò!ô¤6 t±ÕÒ•ŠYÖÂðÑëX *1Jæ®!‹+‹ë²9gb781p´äez:ÒÍÆ†až¸ GÇD,Ë:¥}cº:aŒ4„ƒ)F”g”Î'–Ž1g] }ŒU|2s€Ráš´n©]Ã/Ñ‹”@Y}tGÞ„þ‰L"Ž6aŠ‚Ê1Y¾†8ífÈÆõ}!~ýn‡æœù _ÚZ.-G¸¬ ˜'°úûX $ñu\iqˆN†jã5ï2‰cL©ãHbõ²f±æf>9žœƒø§dñï¾SÛîiβaÄ%Û_õÿ¥&z:¥2ê G¬ÿò?œ?£¯Èö¾:=åÅõíÍŠbbQµÏKKV~Ð7)°ö€gï´w"¦£Ö¿ty‘1‹(.ÌÒŒ$y¸ÿa“>]ùsƒÁµ× ºqK-‰‘}ÿ¤â›õ÷›ÚÆû¹m{çB0ÚÜòôckå ~ÑÞÙ=4b«S/û½¼Â¢5ÔÐu×ä+[+ÌL²vóœ°Êˆ9ìÝímÚç˜ÖblHʾz¿kŸÙ]/ùœa}λF#ÎEö‘³ ’5:4á…uœ¯šL"rµvú0’2Ê‹KéàšN÷®‹"ЀÀº$[öî¿å~&êÝ8f¢ý]Ãüö9r¥g@ô$”:Ýû TýAo;àC^8Ì‘QQD¾Í÷Y1N²Âź3GÃEiÀQ÷¡.)ÓÑY®®EÃR’ø’ _äÀ´lXÂä³è´Žõ4±ŠÚq(BÏ"*hPñ å;5#ŽÏÈŠŽ>¥ÃNÑ9OøZ­–3J¦×›{›;¯7w6¶6˜*Î&‚à4}_n./ýØYZ‘ßIÂÄ·ŸpM„Å?ÁÅÚæ76àßµññ#>Þnügž¥Õüî«ÿÜÈ£àÏ>ÇŽ“õûËAðÛÄlL%ž}~{&VW‡f0vx¤ÿ]+ct§G„_ÃPGgZX tå‡f.mJ¾‹ÅvžžµÒó˜Geºê£Î„Xo+¨bR;$å„ åR4™†í$Fƒd"iÙ*b½ÐŽ#ç4;÷Ý=vÒÓž«p¢"Ä(YŠï¾– ðÈ/–Îfg½ÔÖÎÆû¯73  8:müMÞæGX\:ïh†:µü<¡‡È·ÚFµ[éZ?VÜZ„N¨$«Äµç¦k.:&ãáJîî_DߺÕòÔ1„Ä¢BÐÔqÎé‡÷èÚ@ÒT›}Ê+š y8g'ÒzM“zìæßsÈ\ìUÿ±^ý_ ÕgœU~^ ¨T­®Ñå4§óVI¤‹¡õ¯¦Ú·¹âÁLŒ'ð—Ô:5æûPºã³:¹ª3°" ƒ%0Vƒé· |áH»ØÍ’Òûµº ŠÜ̱8\j ÐyÅ—Ëy=»ãx,Â"âÅÉJ’3aÿu޲8½™X‡PVpBLudÒ)±¥¡‡Ø¬>¢,zQ’•ê{wPì*)ˆÎ_˜)E]6<‹:Ðsºi7L§„÷׬ÊZàÚäWë[‰5­K¥–z„«ÛÍ®“naËq gµ¨šjI-«»–:j~ÁFSÈsíh\˜ µË|A½ÈŠ.Êâi¢Ùh<Ô. J&PKSÎÛFíRtÄÈAHkOC]¥íÿ{}*ŸuÞ“ÐKRà¥Zàw6³»É½«g=ÏJ~þ6!¦üsb{¡û*OÝÇ«þ¹„à×9/ìFà‡ƒ4FHLÉöÝ;ûúöeì]Tèœè\zƒ êG,ëð]úS§ªT­˜»ÈB¯g¡ð‰-KW°„xI"¡ÜúqÛíã!§™ò·:ŽOLRîÚ¸ÙÄÁ–Oº>AÜÊ`01ɱ$8Iâä­SÆó ´¨dÓ’ä¬+œÝ)b ÉØxZí˜jŸV‘Î2”(qø­ÖÏw½è²»DÄó&­M.´óDL'ð–|aš¯>˜ öHßøþûx!âϨQùi@œ°ŒjEí ›~oe},ÅÛ&P¯íš]äãœÍz¶–ÄwMâ“Oç'.tóãa5üW'xœ2…mjÜf¾:¤w¶ò<«´bº¬9>8LVC5³ñT_cþð…›ÂÐñGPiÚD†#Ä—JnÏtïÓ¹奄ò5ÕïÙý€æ‡0S“úYU#ð²²¥ïOKL§#±l |z\qð×dž¹¾å³Ÿ¥¸ Š&~óÉîbfU=Dl/²oŽêϜ˩RåªG†<îbtà~“âÒ‚â}qøiàœ®X_ð¥Ç@)ÎpK;ÔC„Ôêö^…‡÷´¶À›âi­!¡%÷Ý$êݵlE…¢-µá&€ÒClŶغ/…êvá9®Ilh“ØÂã‹„À»ÝŒà£5¸K>ôhµ¶pË2‘-§½½BrÈ15,òŒR},¨ÂúäˆMR!.Y¼”Ü:iTëyœHɰ_qu†ÆØJd—?$µ 3ë5,(R¨Î“Œ»nýÑܤ8)»zaû¶w_³ÂÙRÁÇ¥\J ÏV^ç0y(šìœzÔɧ¿=#yæÓœiµ©+:&UB!’V}±ÿŸá-7Ïð¹†ÓÔ¡½4Ç%zà”)ámZ;3m ¤3ÙZ›÷›ë¯·vÞ¶_秊õ¦ž:Ò Œ¾ºmwÃñgêg”­ËdÔV/“t²O±öFº”iF_5 Ceü¬D:üãT …ì°m Ο«ŠbÚa5mÜÈŒŠ&ÉéÈÿ;‡Â×YÿE‘À‰€ñ(4²Ô<–~×Üjs–‚ë`Ç+šƒ÷ëïÖ Ç¾“H¡5—â“îDb‹%[™yÁ’ULnÞC\_x:óe:PûŒº£øŸ;¡/'šF—>[uúàÅbJ…{–öGî=gñÚ š¨Å1’†Ø€cû äâDeK}L¿4WÍæ¸P4œÛ\Íýó|¼U+Ï×%;¹v‡¶ÞÐÆ7 Æ¢,¶'¶…Õ¨•‹(´Bç^Ó•È(ÐLÝZ0«QÑ@ú!âýŽ8KÅÏ1P胈æaÀ=¤ ×Rw¢ qÒƒ·trLÚ ñ3g~Á¨àáäⲕhkFãªv}c,Â;}dÞˆó+ 0’Àc4b¢¹4w;Ñ#a.ÌèÊÍeØóíV@W8’XÁµXVg¦Ö%ì¥'ª/Æ~´²¸°´*š*SÀ°3¢xsÊ¥DÜ-V,Ñ6®‰Â«ÒXøÍb€p8¿ÎÕÊñ’ÂkE/tá>®˜¨&B‰¯®À"÷?E†[:uI:"%³/sjS¨¸Ö¯Û` ON¸Šr¤s‘Ó¬άq¢Å>k<2°9Î)÷ƒVßu—<".¡^Ô2§97 ¬a•·Ó§[ €Îóû :Ų óø¦àòÓ ¨š…×úÞA,^ FõƒœÁ°²èr3(HÑ Aoµ™ »#~H´ö!³•7œŒVß9V´Š•7sE,¦=ÎÁÁcë:YÅÄ|Q¦³¤5¡Áˆ)”¼?ûæÆéÅ (°ÑŠ)¬$#Ÿ»r̤7¤MÊÚµPÄ6^³MàúéÎxBd›¥u³²©1|1ƒWÊ$ëD3¢v é˜wWuÞ.l×Lc°b‹ßä Ziª~0Û+VXJ{l»Z/X<+ ê†yÿ/>ð³SG“ \WìãÁûÆrª}­æÄ1>— •Øœun4‰m4r¶_r6î‘N {›—x ƒööß`gµGÂ@ Œ¾içÞ9“Dê;^‚d“9Gc(—' &ùéRqºÊ“ÒƒG¬ækÿø!œäÞµFØèÕŒ-GˆK£j•o£¯Ïáð~†¹.X܈µ¢•³^€Y¼l0‘5Ìb÷[·7³Q†òirZ#aVŽ}ûÝÕg•BºŽ8ÕB¨ÎÂaM½aòÎBârZ%ô6eºt?ÿ1m‚÷¼µÍÝ¢°¾·É[B°ºyŽßý “£=ilåµ$¤˜;O°êy-ØÝç;™i·üoi'`l…1£?ÖUã"†«Q¤V0¾,‰j„7’&oñKm–¬PœÿQ[>½æÄ”Âú°…<Ðp‘µ¯7‚üZ_Ùlh,æ’tONGN|…»õøôIç’U}­²—‹ &n&ûç9áxC¢dHɵ;þh,ŠBh9‘þSÌß!4@YJ -yê,¸ Ò JÁͤƒœöeª¨Øéug·*.NJY5Ž$‚ðÁÉ£M:SÇ€8/Ê\ëæ™Ù´^b&¯½æCT_W˜YÀ”U‹Ã‘omŽ«°&.Uâ[Ä3Xp©!m2q„Ï¡4£ ß­Û™¹˜¼á$ ^¤…'íU¦ÓYŠ™4x_í†'ù-é™ÑFVæ^œï͹,÷=²7/t`+4oÈuÜPiÀÿv {#ŸCp8ÞM0×àW|¿¨s«Ì9ó­gÜdbNÒȇÛj³e€Š{ Çú`Û‚Q8´s.—ᤱÄÀ“¸pšÖÖÝ0·½‡³"‘dÍ%8.Gê\ªñ{®Î}ø‘ŒËóvh²1Ù Í…‹G¿¸£õêÿ:ùžóFÌgZLÝë8]!™>ÆÛŠê‰íе÷†¶Açc8Ê_óœ4»Õ­ù¢qbàíÍ,KüŒ*ÖâÔš,GE C}¹özìtÏۇΟ…Ç|u«–Ï9bXýpœ·õÂI)Cße‹‹ñ4.90HVoq¬PãÞ£ Æ.ŽI±ÀÆÛDGq–èÉ\%ŽApÚ½+üs6ÖË3Þƒ^òt׬b`ÎX"~æt·Ó¡¼;wìE°±Úøå-§¡ø9^*\Wè²DÚLP¦ämƒýîŒÊ‚Z+Øê7WKp<Óáx½l}‚ëhBˆu€tðÁئ†ÒÇç”R¯¶W˜Ñ%±ñ ¸ Ú»U1K+­ý‹} µ‡õ5bÌ/žHló» lië}"t¾x4ufcÞî`™&¬¨ó÷Ô[Ç»˜š‚U} øAÑV“Áð…”ïŒÀÐbF÷x(®ç.Þ×â($Zö®öÓ…¤E}h”2߯lÐ)ÒhT8jtðÁô N?©˜¸KæLÆL›ð– ß?a§‡ë,î›ÂÂt§ ¦Vao½ÉX³Šç©ÐæÜÏÏë¯yýZ}©G…•Qײ ùyýuÒ£SŽ[(ºsÂçp¦¯øœcÌÚ¡^§9ÿEì-3 3nKtº ý~»­Í$}ÌúÆûÝõ÷c_^•Ë'ðÁçÒt%íî]±ìEv ^Åêë Zu©( `¦ËôÖÎ›Ý ’«‰Ê¸QûàÝô#dËIÏ¢ä3…‚q¸2fTÞÍ•eIòÌ{U…•×Xû™éð"y*˜g¾Êÿ3ªâž7†nzéô‘¹þóßfŸ§&ÃÚÌ#zê6.…ÞÔÏê^1XÚDÅ#y\š²Ã=Ê1ôn§à!;I=#$Uèú鉄ÌÚwñ ©Ù}Tñ§­×›&éËQl`ži“|”eŸ]ÒDux¢²0çƒDáRv[±#ÓÌ®üøØ¾üøØÎÏ€9£÷Tº4£¹‡ûõGE9‚™P³‡ÀÅK³ZŒ£–è«åŸ%­ºÃYÙ+!Ü[Eá|{`2욀ATº?¬^ê;)W¼Fªº®o“ÐD8~ÌQ¢MÝ@NÀNø#C2ÐŒ p;> DªbFŒÄésŸ-x…ñÏé ;Z¾A,„6ˆ{JÝÑ~·»û7äàöÆQÌhµ @/$¡ER$'Ǩõ8:÷]²×k™ÈôYI¼v;/æò‰›Ã½SIȾã Î^Ýõoù QºÓÖm×rm:&¸™v'œ Æk(0žêt`Ó•`ÔÂÊh1{L”e<›o¨Oô§UVÆî1a?N7.þâó©Çê{Õ8•ÊlQÈ*bÑ9à@Oõî/ºl°r§ujG'iÈ3ÂRý›6É8ʳÔ(±0¯ãT¶ap›ÂSp2,[R^Û"¿Zpkó¿Ç?ªùãù"[8–þºD5ºÌŽÅ•¸Þ¬hcÿ6 ª•}‹6¢¹s…¯/†{ä ¬j¦JkUdÔL M‡<¢ŽSþjû úÚ$÷+Œ3¢¹Œ¡ƒ¶Q«é4p$לø>L=¶âq—ß¹Æ;®ÑÓZÍ1tK¼hC¦õ3'UN-ë®Ë“§5ð„,È]8Xqž#¾ŒjOþ`ì¤ÅÊ¿#^65Ñq ‹™ªÛ¬%ucj’h—ðR”èr¨µæšürÈ_±â'(ê‡T˜¢:ãVîÉ|ÆðiSÛ{·»óKK™·9*‹ìXç±';aqع(ŽÑ‹ÄœPûÙ{¸dfGNS`ø ,ã2¯GBØéZ äçò¹Øn€tšwdöe“N\ÝÃî¾¶ˆsÏ3(mh5}œšöô¬8n,¤±úº9@¶<7\´¶çï{×Éçp«cåÈ v:ÄßÐî>½)Àd‰M‰ÕÀ±²´&ÉÇpC°km<ÓÆàçôWŒ¤U°vvp}l5øŒor%,·x×0)d{¢¢æ£òà9_ŠÄY³/Æœñ.bk(ª¹¦1@¢U2&&±Ö¬SÒ®|Ñ5¡Ñ7ÕkUHÎ×)ûlë¿-wµõ§y¬]sSzÝ‘ žèÞœB0k¬;R£d­{Âu,¶I¡Ì9ÍËí}-áïü(Äâú™ïpzÌ4ÄœšÖb:V—ÜT´ø£ù*½Ä‰un …®œoÌÕG"œ¼I8,2‰ %!¿ÿˆ=òÙ%ó"óßÌðÒœËæÜpuSÚE«ÝþÿìýyCGò8ÿõ¼Š¶ÐFˆ °ãl JŒ…l³ÁÀpì|Œ#i­%¢‘ ÄöóÚŸºú|äZ¼ÔÓGõ]]]]Gñ&’—)H´ªN~ WŠƒç»0çùÕ*)±Øµ˜šj F½ù5—ͯ­ìu Ì âÚ˜¦:£×¹[âñ,d-j¶"Ï'5ÑV*¡ <>’ ɱe¶›à5S[ó…鱊ÄdîMC‘ý†ÌÒ#0=o³PòcòÒ,­àZ\äTð54õ© a›ß¿¿‘/|ÉBÏôdúV,7Q Äm”3Äh”ȧIÎ¥$ª¦3çÂÒÍg-ɰWúI,hÏ–m~NÙ¢›é½ö7ñ~rÿβË߆DÊ脯 ¥~!ëâ©ÙÊ“3¿.+Z¿ÓÙµZþ7¹Î(W~`¤˜Å&5£ÑçWb|­ÇM% – +£X±à‰·JyêNƒ™aÄ0|§íN{xÍoiæCEçíæº2n+ÄV$&,ßhŽ´2Ñ6è˜ËdÑŠiÌR~Qê*¦2 „#þ,›(h$Ýyafµbb`Å—=*Í-%ú—åTÑ€)‚P#(¡±ùbxPÃÐÍ+;‡¸´Ÿ5a$ƒè¾0sJw8S¯^Wò¯_/õõã:}ÁG‘YKKIvD;‹n‹ )‡¹‰ Å»øiÔé£ýIíó™O”дÌ]ùSmìþßtŸÛ}²£ý„Ï0[”Ö­ðÊ"f` úl¼îÞoœÂžKF§Émt"ÿ«1ÐxMO1šz„žÑ ׊ÒP/,ƒ²?ØÛÞ4!ÈþHçZì…0– „qÖ Ï­A¶ýc›#¯æÂü4â„â{rV_åw>ù)4.ÌùÙrxÒ›Q)‰à®F’h‡‘œÁ¤¢;¹õZÎôñÞA}³öT´b¨”¼ã Ø,Ew†ìËÿÀžx\‚b»{G%zå»™ z×¹Šš¸Ð’_ _Œ4S5ÝRV雯!(:y¶HB¡ DšÕuDÀEõ…­²D½·íAÜ#L‹- {,]y3!Êÿu¡ÙûZWÔyòÏ L|^§+ÀËÙçìhìĉ¢UùÒïï!H:èc~•¹3ö­ã«â‹ÍÒµ'°” Æøù†2g1©ªwâÓSak›5”‹,ÔX-ÏFÂ,*íˆÆ”´Ç·¹mDGÑžkrÝEObÌaa–r‚/ò×Ђ67çÈQ¶Zi0?Ô!ÄR›±k'ój±™‡tv¢L¸H ´àÍšÅé ¥HœÅ€.†ê¥:éÀig˜ÉûœJŸGá15ò¯–^Óâe.e†©Õná£d³Ö¬wêYíI`4»-·ÁÎïx3P¦ïå,¨9£ubµ¦Ò~ÇÇ`é^šnÂͲ'FÚI—/j-yN1ƒGö­{ª“-†°'i¬ù„³eã _–•¼`²- ’êH.T(&­zP©ñ¦vÚabuÀœ-¥ë'í9Y§7ˆ^ˆÑLL¨åJšž;@í=çpwæôÄúò‚<¿1,)Z"ÇMä*é Œ’Ÿ£€ÛÞî±µÓtÖªAÉA­Æ³¶FKolU½áHæ•·®ï«©vö¢KتüüÜ2øn§„P×qŸD/Îw>n¨z„:qó _bÇ=,Þ¾¦f¾¦’ÔrI)RF%û Ø€·Q¯…]yÎ,ˆe'»Ï‹Æº6za‚U@wÒší3Ö©Õΰôe•M»Ÿ¶{!:p$DTJ¬Øk7 „åq’”؈F9ë2YCl K¬õ˜pÌß µJ¬ ;ì‚+A—¦ìHØR·o¹l.…S„ŠF ÇÑXú”›%6˜m”ËGÍ=×§b‰Ú&Ö}èê [îw,oa›ãˆoÏr¸Pºõ±ˆ˜üôÚXï,N}óƲl²ôøH¾ms[ñuGˆ„Tô«u¡¯l6‹»$fÁ¤9(.?Êî;̸¾ùë¢ô2¢Qœñt¤}}hî ¿h¤–‚µy«©|m(W»‰Ô FÁ#ų¢}>hØ`Ô‰<×¾"CL$ a?ì æ4캬ªk×XšÎ¥ŽA§` ®O½ç˜ti:CÆëÑÞÞÎâ+™BõІ ë„ï¼ÖržÄ(p$ÈòR’s8™Å&:Dû`øKúkgÈ3.eè,O<˜›%ý¬’€ËBC‚õñP‡Ò³¢å^›maçN¤ð¦ÒÒ7U·½îULüºŠé¿¥UOa)”?Ù·ÒýÿEYO õñÞÁ³Í£IkbÖ à¤£,0œ– ˆ 9bóqþÉÛoÑ­ÉéŠG¥~x%~”‘7ÔŽºA_ùE|?„üE#yj£ŒbwœÙœŠmØA*×^Ò ´_›|ò„vÚÁÆ é«jE œwêÿAñSeyf¶xÔ³m:@¥Òk·;Txá­çCb}.„ïÝZýÝ¢§å7ù´6ñæ3H˜ÊöN?ð½¢"d^¥¨}o|o¿5ÊÃ2ÕBþ•ø€ÆÙ`ƒþ—ñÌ6”é“ï rKÌÈ–Á»®®Adº!D¢Ùc2ÜV+㹘€ƒü²ô\Oä–^±ùU*š°‰ °ƒâ£x<’Î,ƒE'?1»‰r».›xØîЊÆ[¨Hv’bCµpÞaVo茰:Yw£±UÐEÕì·c2æXp ÐsgómiåF~µ”7ɘTÅYÌ~iP)5¼ŒÅÜJüžuª#öqù¦X›žš$‹(pUbî¢\$´cK°;µ *‘.(¦j¤ÄS%ÄñH‘SJ IÊd Îáφ˜ Õ·¾gøÚØÁ™×¥ŒBŒlJk§ÍXÕ«2ç”áÅQõfCäþûqÒ¾ÒªK@L\Ð.8KØ…Úød°cPyo8`qs°°½’èÅ¢M?¯(y× ”s€„uy™6¶7QfÝ@JL)ZÉ‹V¤ABÌjàK÷¢7Øc¶öÆŒZ\€å¤·“†ÐË3a<(¡ g$«¢_îžÒ néÒå”*ÇsNª˜rœjq{¦ê%É3[™*‘¼’zÏ[¹ÿJõ줛!oPNZÅÚ:CËi™õÚwjCS³Å@mœ•ô„ïd¯hhÓ’<@´à>ˆ—7ò+, Ù¡F¯#Û/m<ˆjCî\ÙXäé‰`Á±3ÞÓ¬~*\Z÷œ¶¸Aí3m䙌S2ž`›q‚ xâö¢±¨g‘Ëê%w‘Ìøq‘‘Pn6l7I>äõˆ+kÌ•OÑI 2ò¶‰rK¸ê²."´úýXb5S:2Ö¬M¬(\·ƒfµÑz>øYlJúÓ†hn,²jŽ i¯qÅ1I1î”7âS3”êÓ®AðÿnÿýþtÐ0}i¥|o¥bnœa÷³Ö±ÿÜ¿O¿ß>ð) «+ß®~sïþÚÚ*į®~{ï›ÿ§þV)}1¿“ È¡ ³Öû¹¨Ph†œL€hZ£fäò$‚ ¨¿<:Øllm©ªzôüÉ¡ªííÿ‚rhG{[{JØHê ¾¹õ¬Ž¦*¼ÚÐz6~D­Óܨ䳋(šVt::—(²ã‘Áà0Ž)´iˆ¶‚švÔû“Ú* )©œ ûÞ·àE7ãßÐ{îQýðèV]`Õ­íƒCN€¶a‹ƒþ›ó\­[›G›Šž?>¶Þ€L4”Héz]wø‘méÿ§>/¦ÎÜÿíÞçßÿ&íÿoî»z÷ÿ½ûß®|sïÁ íÿk·ûÿÙÿž‘ÐL;š }¹3oÅ9!Ãòм¼6Ú½þhø0SDã>‰h|³<¿Í+¶sõQ²¥ÌYtûô7d09 $bè¼s Sá"î[|ìâˆÞVÎFlY}±}ôtïù‘ÚÜýE½Ø<8ØÜ=ú…ä¦YúíÍr߆2áðrC7}ʾ•'4^‰æ`¨pY!*Ïêµ§qóÑöÎöÑ/ØéÇÛG»õÃCdªMä|omמïl¨ýçû{‡uèÜC‡B–4¬ö ]Uùÿ¡Æžx¨ªü¢„‹•‡b\ƒrtÚ§:Séڧ䱟n>¤…›-ÈÀvÑoÙ»ÿ;|ª-‚|]þ_$C2‡uèÆæÑÞA‘íP¶ÍOÆò\‰ÿœÒU@ï¸9å%#³›ë°v°½”•I?Ɉ-<Ì¡£°Å€Ìa‘GwL“µÓ0± T*»ÈÏÝÑzu=Ø?¨ûß{‡G^„”y¾›.•ŠÁr~½¸6ðE Î6œgŠxàûªßñVUåI 2µ¸· ßB?0+×b´_´¦Ÿ\êUw2ÚŽ¥(mZéc)»ëÜJ§Œ%™½[Z“#ø4p6ŸÃŽ;°d®‘OˆøÜC»õ‡L ßO7ä|„4”ðbaP$›õ®†_Î#2Gˆ°¾Ð}#y ÕI f\ÏîÓúp;d‡Ò®ÏIfö“±ìÖQxØ Æg„ògÀÁ™b¡™ç°t\3 EcÛBV \ µúæ.[‰Ç8±‡MùèÄ8ŽKsdçöb¿¤DÞ8Qëµú¶×í¬AõíSš–]è¿Ý“Np¸÷ü †YxÝÛσzí9 £ŸÉ°Ñ“úBÁIDÍÑ A:œq¾[oÛÎŒëŰëæG;8Þ'¯"D´~9“âÔ±ÑUÔÌÎ?VG§êu ô[gùûIFdVùô8ÓãÄú•@iþ¨7V­À·h¬¶þÛHÈ\U¬·Ñ»1F¯Š6I_HÞ—áhþ؇‚ „¸ûyÒåËŠÅGKEe-Üçû\.yÿk>ïT\yÿ>w²±!å©d—ä@rµ”·Á•¡b½ŽÕü÷¿–—–n¦¿ rhçùð =ÃabNåbNÑxè8§Dú42£{*: š·†]Ö]8:×|åq–·ÿ}»h¬×9ù¬®b)•Ô6Ÿ`Ñ0<‡+_Múâí&×8Úù.RŠÞ·0ö8*êOÙ¥ø}T‰–¦(l¯ÄÅ[ª©!<Š¥¼¶ûGvŒdóH˜Ñ[ÌtÒ±ïï˜ÑyM Øü²Þ¿‡tb;I%ô)£ZXI=U*ZÑþܪ£¯/Õ»ª°Qp}j¥C÷ÍkC}€ÿó mñÓxèµ¹¨åó߃'ÿ·½ß¨ïþ ‰¥Ò)4˜FÂì2Ú²äi‘ÄT¹Ñeië™ðô3Ñó) > øíc0ßb™Œ¢$̱‹?´_œ‚ÔªŽgÊuóÅOñ⧇A­†ÁZ Câvˆ#äâI9œ")1ûûô¹¿Oa›.aˆÕv )Z< ¶ê)'þâ—øxÈ¡‡A½öt¯A-âÄ욘]‰921Góä N-¢|¿¬ÃB¦ = tNº [xgo÷ ÿS{üÉÁšp¦Ã6·¹¼XÉ äq­±¿½Õ¨½Ø2ÝȇE6%hâ4þÐý¶©–ö~˜Š²y åýÐy˜-Cået;[f:%qÛöý‡ã8Hq:¿ŽÜ 9šæ°ÁØE‡¾³Ž‡Î'§9atºõ0pr<4Ob AŽã‡2‰¥‡Á)`_n3‡òEϹàñÅÅÅu,ê´fdSàCÇÇNØäc“Âß’ªÛbÆÖ²Jãq <–ÇCû…)g±‰¦àC‡áÀÑúëa`X+9D1ØW+_‚·;]¥ùx¼byi:âa€/ÌœÀ¡‡ÖwÅ(> bè˜×)/âa½$pbÌäèyÉf‚pެ(‘h  ÁLìROôZO.ÂAÔr;èÇ@³§õ^N®¼êXóõ0`S¡v½¸ßƒ4ñqˆ?\Üñ?ñ0#/3Ù2^d>åAFaÝ^ñïäÉÄ,Òüb½‰Îú¢A‚òáóÇ·_Öן– ål%h©i=ÈdQ­« <­lG$Nö#š9Ä®ˆ’2 øJ&À–òè»s©¨¿µåôÐiíª“ø¦&€áZQ:ïàÒ` ÍÎyï ”ÇLûŠS”"V7$†®°Di ¸íqX2jÑCÆË*DÕL)”÷ᢺ½÷üpÝÆéÀºšÄXôuï=^L’ÌÆvè—¼,v¤»†UöaÙAŸ”CäH3¦™<†Ù`Tþ¡,9í9§Aj EÛ‚Ï̼‹`ê@®ObFî"P ›GÏ}#îÖ mÂ-IL]óèõ‰;/{Íc;ŠÇÐ4 ÒLÑL\®hƒÍgŒ\‚@ãŸum‹vÖ–€ºK®Š_š#~5Öy7ôÚÏF]^6TÉC«©¨Õ§Ö'ðÏg-~¿ήœoݤ›Yû¤ùQÙ»?ï˜/êguÛ´aŒê•ù‡å?”.Z@Ø%ǨƒºÌ$ÆîúôqQs¿+ÜxÀò†È+9üºõ1~܇ùEÿIâ¬kó‡ü%ÇÞÊdá‡Èª©R•ÖÀƒŠ©«òÔn§ Vșݒ $Ç@rGäÌI–ÍìΉ;æõ¬ø1ƒ8c,xõÎÕcÎ:o¿ä¹ÚZL?åѧVd/ufÃîÐrÑ ÅGÕ–¶G_©ì0H«Ì[úyÌz'ô~ÊïçÖb4B*FVò6±–N !ŽD ØIçEJðí|qµ¨%b& [Ì …Mÿ4^&éXÑ>#Aô<Ï®ßOÒ‹8EÛáVì‚Ô$q\ì7°MkE×øzYoy yîÓýå{ésÓq6_ä9öžTÄå‡Êß³Z`:ŒOwr.‰Ý½‚ufŽˆq Á%$«h£¨Tzu÷Íë¥â†!–Þà#…®ÕëȘ‰ô^+6’(êUQßß3éN$o#@Cð#FR±dv¥rB9õžÑ||Ù.ò²œ±gxoÀ„È<×ĹÞV1S'à+I9çžµ¨B!-‡šþó‰/ÈéJJaWÃ&75³ÎiðÞ"Ò> ²Otè¯P r–´ÎˬøÃïtU÷‡:Û‹½ÞNªÒë!ÕÅä=­*h¿=^¨ú\à-Lï]èï±<©®\þaÎTf)¬rìq êÓ Õ}‚[™C¹-eåPÉDo«…™ |ƺ]ßðVÂ49|§–žÉ ?ªœ»á6M7€|±-ù7Ú}Æä‰»;ð¡ÒŽàúGà¸ñA*c#æí6 hûæŸÞ fªEÁöR¶â½ó;o³;Û‡ûôF EY£è´ØæsJga¤Üo£¨zB–`²:–&dÛz-Êû{[v‚–Ì⢕ðÞ0)^üô*‚~ÇN^åó+¯aÈ¡~°,w]Ì-[¤¦QÞ"[VúC·^÷M»­ÛÞ‚æph…­+ìmàßuåOñ„±õï4XcR=w¼QÔc‹¨â<©R{Ð$C•<ýé³g1¿HoöÈ–¡Gû’~LçnyÉÝ`nÕ½éÑ¿xã¬}U-ÛËnvñIÍö1tG&î*g#eçj/™+$Åðþ½PBXç .4¿ù<sÅ+> ¯OÛþ”ÿ£÷‰çâ$½WyŒõæÉ´àÏ‘ìÀK1Pµ/“jáÕõš7¿jf~-o£’7;ëÔT'f]Ñ–Æ<IöN“áÌ5Y†µfÜÁ »¤Z®˜[HÔq½¿¦ò9¹²º1‰FõIëQkû`o÷Y}÷gåäþàB6ëR¼XåQ‹]W¹/;t¿°/onï4dhrÎÕŠ‘.Ž~x¸Ã¢!Ó—…}G&R'ó§“Î÷€—û›‡¸tÎiÔ†–ê¸ÀùÍÊø|þG˜âH}ûí6@´tÍá×ø Ìù`¾^j€,)¢xoéȆBj0¸’ß¶÷Ç*ñ°ìø%ŽÛ›S¥è7|t§ÀÉE£”™I©Ó°·ìjn³Ó‘™ÂR‰ø$ÏMèÒ¤R§êã·PYú5‘=·¨§ÉÄà×hè>£Ÿn=n°=3º`¦/>ó%ƒ4£+“J·ÚÚT$›HõŒvè¨gâhÜ2{f§2L.""=¹n—Fc.ë¶i9Új©î›B‹²¶¸Õ—hÁ›=õœÆ8#0-eQlú²©JÍUêD6YZgS]êÙvBCIwsáQ‘Ù³l±?ö gÅâ˜`]1ÅÐp÷Ùw<"[xBÙÌ®s©Oì¹™0¿ç s§\©VÎõþOeJÅú ÄatØ©{¯ÒÓ9žÛôÖfö۞݊ X&õÐ)¢Ìë"å­L-ù"Ùæ¥Ì“·†V±} GœûÎÃùô*¯^—_ýšÏ/½®ÿ¯*çšrŒû™0ºl.8.ßÑ¥®™g٠•il¶Íæ‘4BHcʆG)‹NA–ªÂÆ0gW›Éãw§ò>ýNŠÅN,sæÒ´ÎŠO Æ„ó i—¨É›ã’ïašÊq¥r·µmxoçjK–+¯~­¼†Czy¹à"#@£“4ïÕ [aæ‹&® ³^d 味l^9âÔì@Ç› TUñÊêg ¥û’žs5=ÜÎlŒQ¦-ï6DmÕX *D»“N³üÓªÙW¥þÁxy;¸8:ƒÔ+€w’X ¦s3‹qGp”í| Éðþ=×]Áxf¯&‡;âožÆ—cõ”о‘Û@]̶чŸš55î’׿ì%w?{ÎX •ñ+ãÄRiF®Y.“8ºö&íÕ˜#D¡?sn6'‹ýÎßÇ×Õu“€‡K£õ· ºgrZ ¸Ó®©Ë¢4SçæÛo¿õtn¯—W¨us¼&«äÝñb÷ï߇£­Ì«Õtù9J§}æ+„UR¡,fÁPn-‚]: 4çÌÃ@éü÷v]'=ñ Ü]9ŽQÈ÷ 5‡ ]+BÀÊ×2šp(sͧPníFUS Uú.«¶ÓßצW™þïFµ¡xéõ}3jû¿éu¡´±S~zÈ|ƒˆÅfŽ¢?}¿q€@zp‡€~KÅ{ôÏ”:|‰Dkÿàu"b+ò¾Hª "RÍ¢C×±‹b[ZÄŒ :°·v´¨á|¢m„(J¬{W¤‹%H:g%±¡ÊºüÌöH¶# {mâ Ùgˆ›x`„Ò§Ö¿3’¼KÒ]-ó9>B£žŒÑØ¡ãs×LêÆ†+_C<%k Óÿ§ŒzîªO/ú dÞ¬[RH!Óö‡ƒœ¶1þ"¥5KÙȈß‹×J—ž¤F¦—Þ OÓü&f³­jø>p8PšZ·q Ó}J39u=:ï×W¿®£°uò¶\rÏpk[(ÀoÍwGÏP_°Tvû*a·Ôj–òð¯’óù¾©þ˜ÄrÙ½-•„·Z.C˜µ/èdö{“³rˤÔOæË­I—˜òú;+½õ¶=3í«™¹¤í󿛍œÝ‘qYMñLWM»ø¥ì„ºKz"ȸøÎˆÄÌ6L-¤ŒºaòF­9¼´,­œKËMé›ÈVýÂþˆ$ŒÔ$gD³GÕ™ Sh<—ÃýÀúÙbÒ/¹a¨ËvgæœkÕ¤A¤ÏŒ¹€XÍë‰ì‡‹š aj1ìœ9îkº¹‡àºÒìï.eO3¾Lµ³mæ:Sl‡Õ ú+¼( ÷éï¡EôåÀU!CeÌ ®Ÿd-}>ÉÌe4Ó‹Âdë0 nUfŸ&ž‡ŠÛ¬ó¡êDgCž £]µë9µá®>ïíÉÈãæÒqËyÇKÛ^òj[ÆÅœ÷¬í×3«c^f³ZÕ_­¥ôô×íêq4 †EP q·ýÞÈøÀØí:ºDqX²@¦)1:Ì`q‹”~þ¾óЮ,#îT!'мºNž)X“|Z£öe%`V qÊ‘[• ÇîÇz¶õ7 cö—p;&ª¤Ä½˜wK(,Ϳș>ºOë0nö%pÍϬO0F¸6mÖ'X¸±²øë™Ö_ wÎ ¸!h°Í­JºQÙ–kÏ ÎúäYO™0À§àLKÅœhJ!›VÄÇ*«¥„è‰DAL†½lßxפ‡4zÕ¸.ªÚ‚¹Ý®ÀµüBrðíæº6~i¿­4‰»Srå)Æ,.±ÆŠ¾³f¤Á˜d®…ýûÃáDŒýPÁ ¯×Âg?ômŠ'â…(g ¢½ø¨A …Ð¥°&‹~QâΊÍwaùAD襜ãί§­ßèAÁ5é5W9–B=C:¸ö,rʲœãÜê'ÛÜ*š\FÒ‚²­•?6KÊS¢R¾LH€zöë¾Í*Š#,CŠîëÊ7(BûzÊŽÇr©Ôæ³ÀQºqra2m]Aj[;°¹eÙ&¯l.ÝÒ, X6¬,r¿uæ´ØµZåäIÖ3ídùx†[œ^áëÓL%Ýd-YéY‘Cc¡÷‡[b_1cõâܸËHMÚ‹"Ö³-EyytZ ÞÔ°â'Ž«?ž}>ïÍ-„œ©ÇeÄÑøp8I™Ae)à( ÙµŠÆ>ê‚òþÓ½Ý_n”Í\±„@ÅÛÔáè Ë5Ø¡"”^9¼£éým"¢!qÂ1¡B§GgºaÇ*ÃV†‘© ûTiŽ£2œ/]œs3Üâ•ehÚ”VÆ™ŒwßÃyt˜ŸÅJЋ¹ :“æâÏpã¹xˆÆI"~»S4MGP“co½P*îñj:Àû5\ú±Ä=.·¸MŽP·wp«‰lÖo Ù€ 2[„{ûG'{?ú&çÆšÌ-`ï;õ{İ7/~PÜS"áËp2O‡§ný°ñt6¼h0èųÀÕv÷ævÖì ;³ =®íí̇}8ÍÙðN^ÍœÔÙ¨×ä—²lxh0p|-0´àO±²‰kƒ–Æ8”ý£¹šÔ^OoÍþÑ/s¾þp$4²>G›¾‡ƒßÞg.²íÝ££_öçZf'펈Av§4pûp®àõÍg³Á†íNŽ¢ÓA8¸V‹¥FÇ îl?z~´½3»Ëݨ®guøYýÙÞÁ/ót·ûÏÊþ”Î>ûéð¨þlvÓz¼ã+ÃhÐÕÀ]Ù÷Gõƒgó43îG½éËoo¿¾;aýUúƒ¸Yù¾ßnýPi^¶Øe'Š„`tÓ…HÏò#êè³3ĉT,]™kTsöÀ@Ãg´|žaè†Qïí”QØ~Tßýy6 |YÀ˜ íšílïþ4Ø@ ŒW7€NÔ ÓÐq ¡çÆ€îh¸Æ<åàkš¯A¦Æ‘À×îÑKØóúìÙIЧܬù9¬=­oÍ3C­qÝŽ:­)cËà~Ù®ïlÍ2êÀÊœ­¾S¯ÍhÆê9¬Ï·zPÒnMt¸=O×z¤Þu6 ÔîþàïÇsLä°¥fÎäÑÖVýñ<‡:¹ÀΚ7'xH­%³¢1ÙÃù!Îp®Í0tšáÔ¥{t°SÛ<šTÿz¨ý_æÕëD½é vwê»s€¢›æ4H¿àá9ÇÈ_'•vÜœM’ÀÆö^m>²¡¢-y€¢Å·yaÎEt!Ðy©.‚z¶çjé‹Íí¹ZŠtH;žÙN$A¶÷¦´²¡cQ"j²ÊÎÕ”v7šÙŽígõy`zÈ‚›íùî6`’y6é¨×‰›o¦äÏwwöj?ePäü`£.ânt>ˆ/{pþ·ÚI¿^ûGóÞ³:Ü!_ìÂ῵}¸¿³ÉÛt-É"¹6ß„ç‘SBôvR’{éV‹¤ß.QAVÁýXô}V!%ŸOκ{O"@äãà­ZPFEgh¡'-táfB[ÜSaàÓ—¦‰æ€Ç86"*Œ$×ÝÓ¸ƒÝ çn¡ Ïyƒfel¬Å1H†h8Œ^³[Ñ[ x_¾tËýR{ºy°š.˜DÍfvɵtInéðZ‘ðµ—u¨‘ÿ·[¿q©±Ëðü¥~¹q±ÝçÏêÛµ—˸êÌUnÿ¨öež½¼q¡Ã: #Õ·n\0c$C–'DÃÑ Ça¡&íó^Ø,ÖkuðåxñHµúO;yiêݰ}‚gÑ$TèÛp©\1`WµGñâN#iâN§Ñ[nk÷iìíš{ÌL »¹{¸­j.¶NÜÖš®‰÷£‰\5”àI³ˆlÿ±—Óxx!§±.ˆbôIãV@ º±ã#y[Àϲí{£î)´+ g_ÑÈö6 íõ%0ìÆå;ò9Ñ{dâ^»í Ì)PNÑl).BMQ” 2,õã¤}µTTœEÑ§ÚØH¡$@íò ¯¨GOéb–¨Ú|o⩯x‡aoG}èo Èʰ‰Â¥hÒ6V˜4šƒF'BdR-„§M8RÎ/Úÿ}Óéöâþo@ÆŽÞ^^]ÿ^¬;õ#¸ãV ›j[õÇOžnÿç§g»{ûÿßÁáÑóŸ_¼üåÿLVš÷*É{p$k«}ÞBý+«k÷îóàÛ§„8Ž5ˆb•+rR; Fvç2¼Nár`Õdßù~d½Ý­âÀÚeERvyåÔ¸—óù2-4JV9v5SJýà%³*Ä×WÊDÛsì ¶Òƒ»ÊlZ´RŒ%M¶Éë\)¿ÙÕÂ.)Y=c©¸`Ih[˶¸NÔ! m£þ¬&2 ë)Á-LCµ¨ŸmnïT¬lHü,jEÕÉÍ„ ¡üUú«·‰= 1‚Öê‚Ú~|_DÌFH€ÆŠ–Õ0<¥ Û‹.É®ð2Þ~úƒ¨ÙNÆ#1Gؾô<üÿbÚÀí5ÛèÖK¾äѱðì&ǃD?3wáîÝî‘6Ü)š{¦úJP"ëÅí3ÕØ¡?ÏÑKÝN­±¹µu€Ä1¸³ƒ?µ½Í#J¬á-Û[õÝ£íÇÛµMê`HµÆ³úæáóƒ:Z;ãÏÃC€J°žííÖ6~Á09£Ã_f``ps¿~ ÁÕwê(tI™èÂI»Q.vÿë+Ç€õÉ"òå^Uk†¢2C‰ãw’+:‡ÄôîñÑSC‹6ÍÀÒæ-Í.@M?\e´ÈŒW¨ÖUáx1<.2àÚ*Eî%[ý"‰-,R^:^,—ËPì÷ÏKˆv·f®â猡8{Äà êö9«*™Ôµ{9edÑàóËJέWg«ê€S¿Ió޹]ÆD¹º¨9†tÌâvF\§ ÖC,øþ}—)hFÑTŽÑÖ Ù[9.V–òuÌ*/u¦—Ç‹•ÊqqB ÎÄ—]k##5½§õÁm~…ið+=†Z+ïÄ Ô´ZáðoøóÿT~}‰eà?lǼy‹Ð»©Y“ ä@“†¿Np\k[ˆeÊ]¡.Ö^{Б‰‡qyÐvÉ­ç<‚ÛndU5D¥¢…†ÛéöÓz1M¸U©Ë§³@í×ÜSs°¹ðu¡!l¼Å¢z@7çW‹Á‡@gIFM”½ÐyR%Wœœb5nBÎU''D¥áfÀÃ\)˜¬ÛŒ[Qu‡>Õ\3œëzìLöU}¸¥{ÈV´Êz§ºeƉ€tc K²¦`9¿I ÝñšÐJg°æh©;´ã­]¤ë,Ú¬ú¯ þB¿„Ç9X.Ç9Uœ§;x{Äë>,B¤»^§¬%<¤«¤ÿ8¯A@E+EVdÌ¢‚E^nHº÷âÆjõ8œàÝ=/zÍæ rWÇy§Ü1ÝÈR±kÇ9>2L>3¼’h0òøä8§²ŠOi9á5ŽÖßD’­p5’‹¨ÓIª„)?†rÆke*Ge” 2¢?Ææ€©ðhe©H˜UÚƒG6è^^ eáoP½RH³úMÕ¥c•!×nŽ 5Î í¡‘èó 4¼ä‘–PºedÖE]š ”NCE^I¦{"ݱ—‘4Á:`'½°àþ ï ¦~ç˜tÖuæ¬-57º ‡wµha Þ¹‹È)á¯õý÷Çp›¬ï=¾es} 6×z £ûÁŒ{ÌWͼèÌ“üŽÕçMÿí\þ‘s9•º%€n  y  \~õËP?MüdÓ>)Ò‡9Eº Ñ=^ÔšKôä®Ä8vŠâỪ_lZKÇ(3×°Ë|‹QrrëðÄ+Õ]÷Nå3amŽD¾ŠÎ[7ñ§°œ†Yk!Äâp[å¤EMX~‹]›E£ŒŽÜ®f]àÐ'—Ë•£W>yÛ“l(BÏ´ ½‘¡ˆŠg\ 7-e_覗^Ù†bÜc1o~Ü-曵ZaèøgY‘Ù€Þr±Md:HóHÛ wØ…@è,§€Ù!錸G‡û¦˜Ä(4ËV>ßgo/³·¸üov™4©aíê Á[‘ö¥˜8JtŠƒ&e]HöçSCGxxÞ•ã~nr6ô².ÆKl ñšyúún3£a„¦ôÏ‹ Õ¦‹ua¸€¦Ãµü¥H"Dk,¹A˜6*s|_ Idü$¼¬N¡£ôba[º€úÒHû""‹ú°ÉˆÐHõ……³ØF¦ˆY’¨…+“'+$(˜·$‚\TŽm*E! Aú%ä+fq ‘½$p„„®XÖÖêEI½’Scزv ô ¶¹–ìVPoM_äÏiÈ2]Â>¾Ú'ˆúvsJÕ‘:j2:M†í!Mb^­ï¸úCm † ÍŽêÞX-À.SìâAøßP¨§!€ÅçÅdt~³Ï²È®¸=ûᨣêçíå Frš-È$Ü/T›íŠ<‰‚-Óç7Øý0îÄêQÜûº ø¨ƒ,ïˆ!ÔËêYóYxEW¿»·ZZýîßßE¶…N¯a® Üz©ˆu¶ž*Ð)Õ§¿•Wù×Üù rf ê{»È\®¶l‰Í_^ª|UªH´GÃ(ý`ØÌØþË¡Úß;Ü~©äBÌ/†Ù”‘“8[q¯0„eJ7O"¼`¿·‡â59QùW+¯—ÉM1a<@•dþžu áfÚåu¾È–mZz‹éµLϬˆ DÆýÈ+ó¢P½ãAû¼‡.YØ$Ôd¤ÄT$;ÙEQÏŽ·"òÝNЏ#Ê*W®øËk;->ÐÛB´ÉËN'D9o¶äT–SŠ04ž{Â;ÑÝÂ'¦çñÉ0ïªêeeªp…@¨Ê¯Ã›Ô)öí©^{º×¨UýîÊïQ•¥Øž?l +º¬—zKEs¥§¤ÂÕq³ /òM¸ÄKñÂÂÆÆù$³Ã0ŸÈXOI\äŠÊ,T ”4¢Àˆ H>6ªMV(õ †)ðç?º3Zp–³’µ!ǹD“‹/©Ç“¹A†¨[TêMç(6xêDAkh*~HUÝé©Râ¶G·vÂ#V§×Hª*Åç ¹,3ƒ2 ÃËXÇC˜¿„9Q«Eµ×SÏ9\fꮕªƒÆhwa¤AÊ”µ¢ÚúÏ“ý}õ½Z+¯Ü'U@]Éu—ìÍo´‚`"¤ PL¸'³óDŠ ¶{\?.Íd·<‹Ç( çÉbœ †–˜488¢Þ«§Þ~w‰Ày jÆAäÈ €ßpØ;=g¥yavg,µÔÒñVà ë/·´‹x5•úþ[¯'…‚9ýª¡¬õ’.W ÙwEøåðžØ¹Ð•ªLC[˜©qU-Hæ‚®‡4*w¦ç‘K;ÚÝèŽ+ÆJÓboNV."¹@CÞ…ãB!ÅÔ —«9§Jß[Æj¥œÓ/T³øYeô(Þg–Šx½Á“@mˆ;Éz‚Ýì´ˆ$pÚ[`¦UšuzçÇ|•\½^*®ol,i¼76õNQ'˜L ‰°˜Þ70CyÓ’ö¢‘\d䆻a C6jÄ'Ðæ(›Ön©lZà@ƒF³ß¯æxôtºþ×’/Åù¯}_Žó_É¿^ýÚpIŸ×ÿjüë¼»iK´(¸×œä"Õš¯ÿÕïO«ïó@Š|ûýW+ê{»ÂÀ K g\Ä ŠLÓ/SHTw#¹¶%jñðçƒ{åµeµÓÂ5@äuŸ¦‰˜<@ùq =Fç<ʘ¸1q i6t Õ“ES¹p%â Wô¥3¨¯«¿¡ÐJMzâÚ(6Ä::½%’I)L$ Sâ|‰¾I*îm§ñéå©pgûÑÞ£ÿu0€hå%éºr ìøÊ>#¡ð«Í…Vyqyç²ØJ"4û¤Ø§çlöGz óä#æÒ óP@²Pr¤¬›ïÃÚÁöþ‘ù$ûh µ X*¨ýò„¥Ïõ¼zZ7k;{µÍ`óùÑ¢Y ¦o6BÉÛ»÷k9 cÈA¦)æ@h¹`óÅOÁaýˆ,@Scà¬@–d£ƒÍg°ÔqŒï)AP«;[Üßç/äÔ_Öë/8Tðg«Žþ@¸·<íþm#¨’GÏë|¼¹s(áG0‡;›‡O¡6ø|¶·ÅÍ<ƒûv+ê×j\ÎâòЦ`¿~°àòêôW "¹æÚØÊÔ 3ˆ—OÏŠ‘ÁΑ„ vëò¡jʶW³ÙÕó¬;-Q=œ´d͘B Àúì˜0±ÚrHyž^‹Á:}~µ‡ ä¾UÍ—è³ Ïê2†QËM A4hc»LÜ!(Ⱦ/…µÃ¿øº„¼’ÕšrÛ;‰ƒ{ª»¨€Þ‹|û«bP,h" ïfÒè)+.Åùh¬š,_Áÿ‚šÒVáko2ŒÆiœ@Ä•9ëØUƒ­’µu =m+æi:±ô€Ó`&|™&sþäç6$cÞ ÉF•ÊÊ9²Ù©ŸòÜQ©œÅ1R)Äùå—BgvˆÙÒ»J¿'<ê§,qMO†.r_ÀÅ iœË6>K4‡ü*Ès† ~ŽòÚƒ°±ñTØ÷¬ê<ˆzè9u(¤²ŒR(e ›eht&l6£>qº¤{ ëFbŒ®5¶A2Ͳ€2ÚFgh‰=ûB±IŸÞ)9NØMHä—ü¾Úƒ\ºj›!Ý™‘ú†ÏTë¼ î‡¶AÒ=Œ±1>Š%^þ¶çµ±Bb˜sH19¨¢ñ° ú£¥sòPé£eÉ…â}¹º7:ßxW$iŠeûŸÞ—™‰pÂ68Þ+]í™>R—Òm‹IG8 AÇùY¼/÷Ã#][Æ8±œkI ê/Ó)}Õø÷*…¯JKºŒFÂTUÝþ DŸÐņÃgIæW²pˆÇµLX†Ê©IjǪrå¥W¿–Ê>Û2§¼ #‚•ùšÛîqÍ”ª\W^5³^nÇ…\¡ÙÇé{©üºÒ@OïöxŒzÄovòW{±™"xRA’ßÔ‚ã̲֘æYrÀ¸6lBf•pæŒBÔçNMHä7Õ@.% dÚiÉç~8a4!ÓV.7ÞV`YËúãKYŠ 4Bõõíb¾éb>ΘtžÁ”.OŠ¥|Íw)óÛ =å}¹Nؽò: ¿þuÛÄ«Ôi•,>÷â¹”nùXŒƒ´Md*“ÿé}¹)H6É„ô¦p[8>ç@~a~ûË?EYà{¨ø £ RK.•q™yãW¾\Ê••†_ü¹0ƒl9+h†^†˜¾K‚¶A ] –2€Y'"ÄÄhÃ6(¡‹$ "ÛAÔýÃç *ää×_?–O¥[2?~Єô¤Ù¢s&wO.2¶AÒùMµR Hå^»äB÷¾Ü'lƒÎÒ¼š ¤ñÞØ‹:™ôé}¹¦2þ¶AÒ¿ßNEÜu‡c°”jJ:"õí:ýç7Ù Û $§Â¬q"~„”I‡mЄt Ým.ªûÌLŽ%¬÷å~8a´çÂã-gþåOMÈo¤dã6 {dÉà~8aÝÉ”Ùáté2™ŸÞ—ûa&–¿mЄÆú¡+0}Ѭ¶¥TÒ©oÿÓYcã&;agDt5£¢yL\,óËýp©Ò[üZòA§¾ýOïËtÀÐ~Í*´e'Ƥ#ìPš8ÿÓûr?œpÆH˜8£a8šKã ͈rgÞĦ³¥¾ýOïË_Óñ1f.#LMHä—üq‘²< ¹\r ºNØMHt¤üxË{gL…Øßi´M<–ÎúusÖwîb½¸$2¿)óËýpÂfÖèÓ„0ÐãÙ‡‡šêo”qOš‘úv«ä(ïËýpÂ6hB¦}öuÉi¢Çl§2ÓcÒ¦™6Îÿô¾Ü'ì1!_þñ—¤ßX^™þûÁÒx§2âÆ£œ­jcÓÙRßþ§÷•ç$Ú  é€Þ~óÇ·‰s×JMHä—üÑô®KÞ-hüà ۠ é€îÀÄ+Œ¼YúÍž5cFÖ‰L}ûŸé^»Ï«¦÷n#L¿fE:ÓìÆg‹IGØ‘ó' ¿{@&EÅŒ5"SßþgöJ}þÊ õRF˲"3FãdzŽÅ¤#Ò#(uNAón^baDX*)ÝB/ybÊ´bâ'ÉŒ”=#.;ëXŒŸ £RYüÏìuá $¤Ö‡?´©IKœ:òS O/:±à´b M.’Y`RöŒÌé¬9–-‘Þ)áŒÝ@¯Þ $4!ßÔ¬s)™e~C_rà¹NØMÈ´Ëe´51íóB: ¿©ö%Nó§A©° šiP’Ýžß0ßo£vÄ„¤Òùå=£,Cqé  é·AäyZ.q›ÇÃ6hB: ¿þ0%Þ#tâ=ŒÍ¨e`¸Eé  é€ü¦Ú0p¸A"A·äÀs?œ° šié`[ÇÊ^q‰ ŸÞ—ûa烾mЄt@~S=µõIo­,ØRªEéˆÔ·ÿ鮊q“° š3[󸏱L)•HMHä—üþ»¢©2%­ÿpÂ6hB: ûàÂÏèÅ[Ì-¢™TpÈjß7öAÖT3烬ý «aN}%6–“;ë9V³¾ìdÐ× çË| iø|Xþbéjê»ë•×¼rwç•~{â==éÓûr? B½²f4!ðqœ•ø gkt59"õí:8þÊ},»âç2¶A!ôñe~U2éRnÒ·ÿé4†cÜ'lƒ&¤é³둳ÂòKéÆÅ¤#¼ñâ8?‹÷å~8a´ƒi›0>šKÅI{lÔDÍø¼×þeê O¬;‚¼š=>ɯȋ|Aô½"ºìBg¾ÈYªZdõÞ¢ÙöI¸ÊÕÏ‹¥¸Zƒ¤>Šò*äÔ•Ì32FôZÄÁûcñÍæÐc©‘Ðãí—Ïê뎗ËAÔßFäªAÛgR÷Ê+2^W^lìnï>Y'shQ ì.‹ IJ¡„LŸTæ¼ÝñOhˆU’Û@EEwIÚÚ!ö]†L1äù)ã‚’EŽa’³F­ÍÞ`ºÔ¼)]-•œÃòØ“¥Q)ɱ2a‘{+´#rû¨ç’Ñ߉+ˆ]Xl!˜X)®ïÊç–JRáºnþì…¡}V‘Õ6¸¡Å}ôás‹—,T¦"¥7ăøMÔƒl°ˆÚØÀ“<î$ô 3¬ ÌGþwõ‚Ï´”êLÅ‚ˆX{¯^—Y­´šO« Vócʂռ§48¬c®ÓJëtò8ÕûN`âSöºáõi4 on³%É˰7äBÝD­f(lmx†‚YÙò„Â!W©¸JöåÕŠ’–6ËO'˜¬ãvJοZæü%“-™]d“wÎÈLé0šŠ&ÅD,°Ö†qÜÑORE†î0£ v?£“\3„¹<³1sÖ/‰ê

ÕpOÓ!D. {lÈp™NG=鎗J¿å„-5ò6“iŠÁPá]h€Q¯¡A]r m†&VØ';œ\ é’­x„·4ÚîY7qôŸÒõ’-¼E§£ósnûY …Ñ ­õÕ³Ò•:o’¸nØL´ÛAy1ªr©RÔm5Z¯z|ÜDØ##sÚD G¯ë †5¹@.A,Å ÄFþçÿÐ@”Çùw&‚<7LÌMÞ‘^Ö1NÎæÛ‚+0]TšK:ߘj"}1ú‹æž¼Eb„ýi‰ >‚] j¯‹©*l56@£˜0z±ðè´J0Ûáz‰AZÝÁ¹E]b¼‰±>²t.­ ã—q¬HýÍ^â q³òü%\±Wz Ä‹ÆP}ÿ}c³†VçOŒVrÁ*('žy(¶Âþ×»Vp·òpÏæ¸ÊAð³Ž._±M×hÙðÕϛ՟7wž×ñ3Žb­ù ÐĽ®ïiz1*Ÿ——U­ÿ‘Á (U\–#ŸŽì. Ô²R‡QîÄ—tiE|pÓXbckT Ò³‘eÁ`«·å²Ñ)Ǻ[wЄ$Zgx¡=ª &ÃDdÉ:i<,ëµáýkµÀ,×<˜”Œ®dŽTìÔ•ÝT!ÝiES[Eճ⃰ +^½h4aSå0 Ú–…‘›`H•~^vfÆ{¡SöšÛŸÒoËZÖ`ÙŠ“<ú°"鄸ˆšH ÂÄôNL_æÇÛ;u­Ì› Ö%ÍÌ%¾íÐÖk¬¾¶œÖ1f30ôvFBI'|WÙ¸@b²Ëž<®ã$Á±Ó+¦À‰<5­„ºµ}  ùä,µ“_Yr’ŸÀ@¼‚L£&íˆL€ÁÇýƒ:\4MÓŒ‚Aó¢·2€[‚š wj&Ö̓;w€Vz•3RGèiÕMU™•dTQ÷êàè×#cüdúê\)ðMÑÀ—¥©jo(™"A@Ihë‚-£¨_àÒ‹FoaOWÃã+\‘®²;ˆ,ˆ1HŽ Gb–éÈ#X=¸¥Ø8<žî=«=<†§d‘‘Åeº[»è…æEÛßÃ];Kµ§.‘Sq–ü#7ÛÖèd¢^ÉdàpñÜ&Y{n‡‹cvùÄp´?, ‘æÊ.+%¤~ûZn‹Ã–j•ØUÙ-.Ír#‚Ì;½†ÐÒ‹Àðå7N7nv$÷ÄmàkÆ]é‘§® ­rÀMkœ!fXÆçCh5rk`ßhÜáÂŽ0µPCˆ²t’— ú‚ØR6Uj/î•ΛMõʵ^à \Í}S¹Ëòø ’áÝ$š ml|hSf­¯ìíAi=0¬æ#}´VÜ$Æo·$Õqf65¬Â-M©[Ìá0 Ññ'S¦´’e8âæxa¿ ¤[‰é †¢õ=0¤‹™nÃ^Í è¯§ª~ÛžVFý2(W9­L2^Dõ“IE„Ü4ä籎ØB}Øyòí©CÅø‰9,)ÃX#M$h\x8¼>|þ8Ž];(I˜ZJ$Xlùáªõˆ¥¢câÞDxÁ!#`²x)øxОoïl)±g$ôîgsg œçÕùh(!X#øéÞá‘ôŒø§%ÍÅÛq}¥tÙÀæ4*ôŠ`šÉò¬J÷Òw¹ÚŒÏè^_ÀÛéçXçRýJ[™ÝÝóÊ]À]â|_öJp 1Q¨‰ÿÈûÒë„a´«N4oD·u6•“3œfRc’þ5àÖâXr ¢³ýR?œ é Äß")kŠš'bXo¢¨¼Ï¹žíÖ´^"¦·ý;1M‰ý ³þÊiÉkoæ5êm^ãî¡[€B eZa8àÆ]¶aÚÙö§7aõÒð»{‚7@›HÌ ¤n3¾uŸÁ%¿‡F³/Ÿ¸Lk5Û¿š}ög˜n¥cÎ:á9â1ÉN»÷F'-+¼ØªÒÎ÷(טóíå‹^D-‘€¯â©1‡C<}¿ÚÂZ·šc΀"Ï7IÂ÷ÆHš£Òùž3^cymÝ’:U©}ýue(¼NÖÛbäcÅ©Þl¯÷›ô(ÕrÓ?mÚ{7©?.(n“3n×@ÔtâÙdŒU 7ÔA»Å”vó"nãÅ« 5£F—Ïwý˜îÄA›˜t]³#‡·Zƒ#É ‹ÛfÂÝý, Á|ÈÉ%‹ãÕüòÌà™ûºË"bóyâB,}/ëHÁ7lÍ à{Y;úkjoÆÌ•ÂÝ ÀF1ΦšÚ¹ÉÕ:r\sy®‘}íý{?ÄÓædV'3mn¸³•‹Ò­æÄo}S [V-{±ú]Ni_$>„ʉæúêF‰øÂò¯Çez_^&¦ÿ‚ÚT¹r9GBN¥ìêî¤+¯7cMó+“ÌN•W¿Ò;ür¥\^>߀©Ý¼¼§Aò[~.W¼áP°Ó–¬Ô¬Z*Ö¡ñê*|k7kU×:-ï÷;X`ªPî%®|Dw°èOÛöðz=H5Ão—6:ÆV  LÖ ^æclø²^i†¥.ßÚyØI€Î¦»ìdÅ÷J‘¡ðÅ)`Ýhévoà×/M÷Gf#«Qü;©®Ô>Ì,2–ñ’ÿvB­c™Ù’Y£ã—>H§‘î rrùSMá7ûy§\¼¸aQDÂlAÕ%H+ ‰Y-0¸ºìyeàzŒ*6×yoä{ ¡]l„¹ØAù”²c\Tªè̪øc+XaM—?ëÅflÂašÛNǯ,/Ñf1@g_>%´oË¿0˜Q Σ^4 e)8°ÑD±ñ¶V~°ŠŒ÷þõ€d…kEµúÝwkËø÷ý½O¿¡¿èï¿éïwËjmee…þ®.ðwÂ÷èï}úû ý} Ý«ã³á%¢¦Çèv’†vYm÷šå€Þ]ìL\ ¢o,—H9v\8 Tp³ ôn¯Óî¶±«}$œtɸŒ,÷á }Š( ibJ]“±\3qjs‚cùƒð²;ñ¹}Ù¡Æj_E(ÚkKÍrG§5OŽšŽMÐ9z4õˆ%iúºLo@í–ûôxæ òuÑù ôdA  ¶‡$°Álsª„³¸HÇÄó]V0êoµô‡àâ²…®`‹ásSþ¡!ÀHf盜áÞú¹ëð99jXX€½'ÿÔÂ~ïÆ]T–o/=0^aªêf.b$½KõG*ó{Þè£Þ›Ü+M™[f0_™Ä-“ÌWæ­[æíŒ21ÑŒèS鱨`ܼ̆!(n¬ÿe4 _Ñ¿rX˜4Çüo–îÁ,½qᥒ²ÀfÃ…ø6ºª Ó¡ë„ø—ÞXÒ¬aÓÀ%H ÆÛ§“2˜= š·1~’4i'·/N:ÑÛ¨“5~’4ßøñ‚hãÙe´O'Mhàø‚1ÝW¡âÆöãÃjþl( ¥Ü½ˆÿt¹VQ* ðRf†ñÖö;ØZšE‰Ê2"ža-ŠÔmH³*Ó¨Ó’üV".þ±Ö>Ò>€kÀÒqa©h´°~së†O}ÝÎ%•B¥p,ÿ …ÊyîDÑugœdT)rµ¨2æÊÑ9‘ª •rôšÓ¸ôÔf€Xu@¤|æÇà¯á`¤Ý·ß™°PàNô„õ†F@/áõWp ýN9Ã÷¡]%wH‹‰­²§Í­ãŸ ¹Iz£2ㇱíÊ ÎØA³EÓËji|½P”Q*¶EÇtxud†:)«—YÔ2 ÒÓš“ÑÀY“–[ÊÙyS¹%åo”;fÝÝ›;¨¬¦h]¥¦ 'Ti'“–ÿ˜´†²–Ðø òW9ô À0Æ}†3OØïÆSIŽ¤í±´¾ï¥·È†VèOëà”êW§V¿:Oõ«Sª_%AqÝ$ºÁ¨7äõÁU¨ÐZVä[ßU"ô¼B—"Eއ^qPÐ`Øë\1^h4:a±Z;pä\ŠA‰Ô È%i£qFí4Ó‰ã7jtÞ¹ÆsÈÜÛ‘cM~BéÄÃC·*Öôfƒé‚ýЋÄÐ}¯üŸ±p¹QDÌÁâ$¼]â wÇ ìÑ ôÑá–º_^Qpi+T¦€£å±à¼F}»7Œ¡Ñ¢Š–½@:¬ªCâdÐVsD¬ôÎh¢#Hßòí½L&CÊJå“1&·À2õ0ÿ}±»#$ pÊPaв0$2dp7½€•€2X4¡„e“å`ÑÄ"Ïz²kµÈ~®ß'÷0‹Iå×ãÅWaé÷ÍÒÿ5^K`¥ô]ƒ4BËK(¡ÞÇŒ'ú8Ÿ¤õ5¦÷¥ù”„]”4zæ¬LëvIFÈŠ­ãŠ´ùíÝúîžÃ=òGÚÀ²ü=0¤¶óM0 u30k4:sŽí)ÝiÀ`% iŠPÚékQY$¤K{à³p§RîTºÃŽ5œ,"Ûª4q•ö(þÙP¦ÀIÖ¬˜ÇÊL¬8ÕrA‚ÿí¿q¾ÁÚ ¿ÃòõPiÓqǰžŽIêú¸X9>^­2Ä5Ö·§…i_ª-¹Ê¯óTSua™ÑÓú!€ƒâM7·ÞÝ{,09s{OÜßã2æÖS§x—г?qekW) ¹TÔ¥:”Ô-êΦ?£¹“¬ÕíЬ P æ¤Ý=²ò€ÃënZèÂñoèsœgÏ‚™‡ÇH™ öpÄ—“fbl.œÙ˜<®H,LÉìÙ¸“žˆ;Ÿm˜þº3ÇȽ»ÞÚ©I`–o+:KÊs¾Œ­-9áv>i”¶-œÑFó`Ë+¤}ÞÃÁúje’;Ð*xvsVå”ÊÐ en¾C*`&æL(5èâƒHKeúÁ?el.¶¨¼¤[ÀKt4PÒ’é‡òù%jˆã[—kAPP+ú-}à;´Z½§V¿‘“–i“¥Z°ýœž©TpÆ‚©l[|%ÜITáÛ¸ÝJÔޡφKÎ9PaÄÒãè—d£«f„ºŠS&ªÙDÚE³'ráê+Wè§A†=´Àe•ë¥æÓýÌYVÐüpÄÁ±Jb> šøÑu IÌGAcçÊ0Žø(XÆ3³ÎÄå\&ÚŽèP“)8z`I¢Š !9ß!Õž¡¦9)0I›^ȉ*óTŸ‘È6² ÚC€&0õg"©‡¶1ðn’§P““WWï€ÐîÞ·êŽ>4ò*•xJØü.ÌzèhB`¬¨ˆÕ“”¯<]–±Ï9› ›^ŠÖ‘Ô Æ…ô3 !½”‘s 6 ½ä¢}6´H`ÈÊÌD3c2Ð(q8®Ò9‰DîÄäi™çTÞõ| ñ\…l|°Z¶@øUÞ«J!ÝBA¬J•Ó)¬zš2ø=´nó\ "’t“çVÒ: “ Ö³8 Û2À Ö–g¾H2E€ûã`í¡¶¨=TÞ Ë7ªÐ÷Úy6¡9³‡›7‰[xÊ0gfÖÃËd…ã$ÑÐxY2åT‹7ìí"ó_™TRÇKÁg•ƒ'u˜¸¶s÷xznîòN¬ØYa9 :}Ä +©bº®©C±¼coÅ$Ÿ÷Fû,E±[€DwbfS%p¾3»ÅgdÏ©÷wZ¢’9AYÓÉ 7G›wZFʤåD…ÎX“;;«uËÍ]ÎÛæèÕ„ÑÅl»KfªE+™ŠÐÑ0½ƒ“áXb¥í=Æ_î`ÔËZŸäšìæH¦&u]ßú–ñÒûQý#î Ô'ôh9ûPÔï Å;^ÌAñHiÃ#vqhÄugþž_„ÖñzÒF°t»×çëýœ€p&6®fÝhÀ»¾½ÞŽ·bVþ•5GƒËOSiw 3+›žŸ*ËšVÃPw-…¯=Îò0ùÖàT9gG£,ü¸¶fôþ—Vé=OÏUú¡J_+KªéÄìG«q8n}™/[9•ñ\s8þ33ËÔ&×£>\ò‰÷ ”€°°£^B Þa&$l^—íÑwÓ· 5v "’_©™4#=cwñ.ЬvORoSÈÆÄݶèS’ˆã”-ö‘ÐÓ¼›ÕVÔV”Ø¢[l_*¤Ø 7>ç¦áࣤú”V2\Á”Sí²¥ÿáÁx5¬’Ðg³ß‡›3Šàçµn@_ºIN ÓjªÔ„TÖ0¹Ìå¶œgxØI*ŠêR.6¹8S„ùÆAåµ2ÅÌ<)˜xiS!¢µšXeY§eùzíé^cWå&çFC4œ­Æ÷g¨ÔÒ„ïøÄ R"¥à“†~5‹tò¶ŠDÇ6˜göÕ5%é\AÒ&™ç*|2eðâ?™ sÞµ@•µ ¹Aº{(èblïnž½ æ‡3kU8³2u(h‘¥àdÎ0ué¦-šFl~,¸™΄I=a›8|Òãå5ñ-Ó£é ´ ÌG§‰°ÒR‰.ÉÌCkg®uxÏ€•÷m=“8Ÿ§èŒ±ÑŠJbºÕé =âŒKùJ…€¹Ó^ff,óô4û@F®ÊÇ[8Dc qÖ8ˆâœdâ-ꞢB-­À7GvEãkÓ´"·™_ÂCß„úCÝA“µ$Èš¬K1`Ž%‘ ¶ÉÒYȺ/ (SH_Ju„U[¬(¶ô,ƃ9p.ÙÌå¦3Ï…q±Ð§"Ü ¶u]³¹¶2}X”­“g£[‡ ˜OG2Žƒ÷OE0™ æ¡7çÇ/XÅ4ô¢Óǰ ­Ï‰\ÆZ27nÑ%çD-îÊÁ𼈅ò2¶ ‰´Bá?«P•S‘Šä°8EÑ(E¾§a” ì6a¿m\ôVË«+cÜ7Tçql®MZ¿ž%0ûü’¦?[HY<  ŠØ±$FªÁÑ·ƒNÀBÔi#+^çÑh(ïTÄËakáñÊ·{Zs¹c_ÇÖQQá:ùYÑK£4kY‘² š½ÒQ˜mÔÛ;ä'/$ll¿TéÜ›—Šê¶ÏCQ³±œ|ÍÇÃÓNÜ|ƒCÔY'î÷¯‘ûÓLä}eôh¤ÐiÒÒ`ÐÖ*iUă7Jd¥a8Kçd°!<–„gÉeâBÑ \ñHí«6 ?ʨα‡?HFÍÓtÑ¡¶7¡Íœ¹Îñ¨¯rPàì,ö+kxoäÓ" ùà¡‘ÕíàœÁÊ åŒ¨ö†í&€(§€(¸äâÞïEp[…‚Žâ!1ÒÈÜjÙá|”gŸÄ%R·JÎúSÏÃi§ÄóØÞ=<ÚÜÙÑ ±sà]h&Ë'_XþpU(XŠÍf<ê±¾cð¥ÇŒä¢éB¨MEˆd³µA[X{@Kå þ­4k|ëE…Ú«øa·´ù2I~´ÝÈëÇÇ•8Yƒ¿2äâ×dìb‚L˜$PÕz£àc³hük§L‡W‰IsXÛS{[Gèû„aÙÀG|Ù£¿g[I on‚E¼²¬<µ‡©$Côª { ­ ŒSc±ìÊW"ÞÅá>×:iÆÔÀ6¬œ¥” ÷ÈŽ…R¢²v1!ꢥ’w`¿sùŠJÅU ùwõ¡d”=¬lïyE9jfI4 é•÷šxpÿ~aŽKüåED+†y;îë'z¸{Óoõ3Kg‘2 ê?#:5èý:H:¨r¼ÊU u7XIݾúÁ>ê‘mê¶h_pjxgÅVefóô4b;ÝZš€rBÕZ¼øäý ›€øJ;²¤=ŽÉжsƒ­ —Œë.¾Qn°â“6Wdùúæ–:§S™nWØ‚.Ü?È\™A§²ØŒÅèÜh^ ¢áhÐKƲöà"W¡Š›­[$)OÒêÀkåKEþdv†Ú”’}nð‡P¿•í#ßt=.±§_‡`©ÕnéëCÙh˜ZgVJõ0×Âáî즒7/gÁֱ̉2ž!œ²~—ó“ìò˜.nŸ©^Ô¦ÕÜ ‡H‹g—K‘€ õ…±ƒë‡ ½Ài~A¶A ˜öÙ²r @/+-_KŒ(Dò–HÞõ¡@xh˜J´]r¤ÝR’ º~"(d…Ü ¨…†ïGMTü“‹T“ôÅ DÒnE’GÁm^6B]38.<ÝXI8 +r’pG™÷*¶P×fi-=lwvÙ5ino¦ðh¾H]³ø]VÃCÖÔnбõZ ô’÷ĺ¾4ÍEÔ³WP–GM'£Í[?œœÜ Xz“º¤§ÙSÆï3×2§pÖ©%™¾Ä?°Þ§òB61trdGÏV:ÑÙm‘Ý\òÕ¯_¥J~µ‘Ï΢"„Óƒ\«äñ0aôç½e Ð Rª9ÚàßœÍ9Ε*:µ=âämY#%–/ËmÕjI¯º5$¹#mc蓜äI²|µ|UX֚ˈkÎ.E_!åÀ3¯ÅÆ¡hm…$•WÇÇùו¯¾ªœo$• ‚´œ¯T´†Ã„¾Š ÉìT­ëà}ø> RgÖOlÊ>"H‡‹MúŽ“A¤Æ‘¨LÈ­“ôÁ&ÔÓ¬³gÛ‡‡Û»O ±%Zæ_Íçߎþ€ àŠø·ÔK…¤…¡-º…TaJÈåš*•ðáõþoc݆@k@b5Ù¨F¤òMˆ3ú¶Ç'R¢à°@Ñç 2yÑé­ôbšÎî ` @9'{ …TÂV) Ï€ÈyƒÓSêÏÁË*6“5öì§­íƒÆ~nÜo¢wõ#xk,•¥÷‡•äìÙJÍ5K1ixÀÎé‡Ù+Ç”!tÿe˜2žíØ;ZœõdF%ÖÿŒ«yÍv< ÜëE4‡ ‡poë$EU`¦›ŸgV:ž†:ý~yu©¨m…¨ô2ªNk°)% ±"†C C¹&<ƹLÜt)Ä»A¤tݸ¿Cêý[°1´MãrÅ.-XɃ.Ž’9> –éåsó3>4ŽÊd|8‰Ìø éjô«· ‡[˜Ã=îX³•+20Žó‹®UÜbECÉFZf÷†—o€(‚?=üÿ1ŽZPu6 îpS.ÑPW|¦½MÇç9RkõûKèù7Ë$ƒs Ið8nºÝkÃêÜÀV D|ë¨ÉK™‡‹Î8—¶¥±ùâ§Ï%‰@*™/—@ÐõT9UY=RòÞãÙ.'j‰ÿñ4sP÷'œ$8sŸ$c™-{ßAÎv(õBWa7kè M¯ªé-Òê—ŒžÖiäÉ(þmÈûm &¯ƒ™˜ƒÖEÖZÀ3 5°^œ Š£•j,Î d³ÊéÜF Á7ª—ðzõ·P¢aTq.ãäâY›Xä,œ2„M0d$ÖY…¯+}¸í(¸ûüêØê©4P€! •’âbÕ™KÆZ‚TAƒÐßhÈŽñJ‘çr„;ŽyxKöÄò¥ÝO÷Tk#™ùKU–+HàrÔé¬wøÂÇÿõ¯UeÀªüYк²¬Kð³I@N} hn|óúœx@Þå¿öË"{^x×ÿEÉk¯ŽEÿ!Ü„Ñ6 ªSü²àÞ˜l1º# F&!_èH®=¼Ö:r¥2JLˆTÙéS ÄÌIu¥|oå&vI¬5’Y5±vVÆì«ˆ‘VQÚ$+#0™=ôÂT‚ÍÚÎ^ms°‡„JH){<«a“å•(ÁùûƒM°ùühŸE†³€ˆê‘)"HK'ÁÆN«øi}s«~ pøc$öID±¾íÝÇ{‚31˜Q«F{ˆXÄÑqË¿³%¼‚ÑY]ôøŒŽÂ =vo‡ppž‹Ï!ÔíJø9¹öý>¤òÍø„¾ Œêô à^ô<ª–8#\àŸÆ—Œ)ÊüeyBäF·ªä‰ä¾‘:ãØê£ó¼’,ó>?‹EuŒÔ6/r÷Ä…ò ZáÙ/d:Ù2nšFшÒr ÎÍŒ! œÄ“¤‡zšç§­£aô3‚sZL»¿¾ó‹} Qú¨Ûl&¤¿ÔÝ–fã³Þn bæý–Rª:Çí÷ï¸z8³—ëŸsçå6åÓ­ ¦­™7_Y/Yw_“ôn¿|ð´½Nùk|(óÁMš…c>¥üõ0ˆÓùÏŠG¸™ØÄt?÷-fùDÌâ ퟉N¼•ÝÀ`ö¢™K{É,žIêKN†ÏlÒfˆlm®²ÜâyNÖ½÷±næÓEë†ø¹ =²ë\GÉz1˜ù¢¼Ít$[X¶fˆ’C*± Ƀ9‘ƒtUX‘Ÿðj›8öÈH)yábêDøŠ´ÍNI*“ˆ½ 廌ô˜ÎFD€BÎeÕg¥y´ÝmŒ b™‡ç½Q9œO·Ký·î^™ýùDÞ—y·±KÃ]<ží9Qz§˜Öñ3‚¨k$YñÊbo0E4ëRJrdkŸ¯…ø(Dx ƒÏ¸ðñ±¨š–T9Șc!84TIŠ[0®}q¯%].ÃëDÉ5uóÙÑæÁ“x!Å,xŸÃߌ[4ïTx!¢½_ÉùÀž©,“<Ä#¦.l_gÔóó]A®‚ØÀ¹UU»UU»UU»UU»UU»UU»UU»UU»UU»UU»UUûªjÖ¿»x¶Euœ6€v‘»•<¹•<¹•<ùÇHžÐÕ:î¤}ñà(3¸¡YâbäU“>.`åÀ½ì²×DpÇD}L”ô¯1Ƈ-ô‚3fÍàëýmÜXTRŸAì=÷Áñgኳï)”-Èçݼʶ7oòhA 1=*™MoVÆÌÙÈŒ’Üä¬Q»0î¥[Ïã>½ñ©Iš³á©RÜèô|§ljÏ›YñöP–ÜÄqJpb«þèùµj¤%¬ 9‰ Aâû¯œÁc}$”Ø5n“ÁþeGÙ°%ÃV ÙCò§ ˆ=*ÃÕ•ô’¨s†DP/Bg@áàz*ôËU©Mïœþ¬æ`©µˆõ¡J/ó¨%–˜iÇ‘씓– òG{,CƒŒOHL˜\ìdf¬WžZ¼|Ì1­O÷žÕŸì½ØmÔ·¶÷w6q&Ù©(µÆnTÉáþ/=¬as Wƒ[K‘&¦Gþ°ÓT{%%ÎVܬ˜dà|` KÁ‘âèwÕñxiÊÙÝ›h—×x£BŸ´ï/ rÞl~Á€ó—zÔ­Õ>ë[n­–ù„[«U)íöÁöli ³ÖæŸól ÍÉ{­ &®†™×ïZ-ûæ]«ýñbée<ć–ÌB‰%þjHAwù ˆyL@f|·Èâ³Hwà þyÂ†3Èœò“0‡›ú‡Hr`U¾þ­Ç­GJ„CïÚ®ð†Á€ö ¢Åæk@Ô|ÓMY¾¢3IÞ›½Ÿ‰æ½%yoO±ÏLòÞR¼§æË˜ˆM¦¢‡Ã·›ŽÍ¯´+kn¶qhG]º‘p͹UÑæ"°øX°‘©<² l„ ˤ‹—uŠaTH=\;^?áÞb)X£J[ŠùƳŒâƒè•ª ˜hž°µ¦¨Ó‡3²„ç=VËŽ›y7šFÖµI¤RÆ(jH¼ëÔoI¯‹W¿ª×K•Já$X€þî´áø†N÷0!…9§f-"H¨šãÙEš¤Ó~u®qäQO>ìœÇ@a\tµÂA|:bk‚ÿ©+ë¤\X†ÙAíÈó`ºZM˜ÃpGy©ˆ#fÔ®¬PZ%ÙÑ'n÷`ÅNj‡‚×[!là’ÀÕÅkÌìŽBP: >—lúWT QÁ^‘fù…C‰&ü„B'ò£ƒFƒBKZ”·Ãk1DF¾ ôúEgâIÔKûÑ€ýáN½;`W$®Ì7z¸½“ߦÑiý6B¶3CÃC­ ƃ7ÜçA—{­­_³¯”áÞŽtç3‹%Hº%ƒù–¯šñÙ…†0%øÛ¢¿ýÖ)§þòŒ§§òsN¿Ý°O¿@ìÐoÌOÿ«µn¡"E¸[·•Ö§|˜Få(¯Õ3d='gÀZEÞ9ã.þ¿Á!ã5÷Ë0ÎÖÊ«÷Ä“R"Ì ¾‹ð²kÆî¤ÊdMQüÉÀ†4Þ¦1q™u /Û‰˜ºc­&´Jåë/ëõ—G mÛÈòÐ’Þlk"¹0N ;ÅkÌu›]Â0cG,Pf¥áÄ  †¥f{Ðέ¡-‚ûÁ 8¨‡JÝÃ8°ƒRž¸iT¡ÀûÆa“È2õ¼?üY+¸#;ëUxúš0D9Ïe8BúqÑéh(g[µP@„ЍK6£¢(@¿d>±Ü!¾Þ¿€‹AZ.Çðê¢Ë¤s›¹Y´½Ãày([ß°ŠÌn68Æ®úwÌ×UáÕ¯å×KÇ‹ÇåòÒqN.TXæ.c}ÞÚ!‹­V‡7‚Ó}Œ›eÑÊ)…ÐMË:ßÊõ¢Q9j“Ðûy@®“:’ '%XÜw¬w¾eñèGE#vbŽ‹«£E¢qÞ6Zó`ë³e,]Gh¤ L:-MÂñ8~ƒ‡Ýèlx½î>#†­·aožãN¤ºµ›?<PÓ05o¸,l„E®™sƒSC Fw*ç5ÿŒ' S]è¸Ü0ž» Ì08nzç×ÜíÑ•Œ®fiŠXçJ„Òùµò^U ™jØìœ ‡ì‚K@HR»’OäJ|Î*R‰o¿Õ,‰o¿µ¾Í££Rõ¦Ü*´jZÃÛ¡Š·Ó(\݈r£³¢ íËŠ¢ÁU·<ÚJ"›”ݱ »ÃÊó+A#TgĈò™Ký9«`¶[ÏÇÛ/ŸÕבâKRíÀÎCM#9®N#­ÂO³ax|÷Ê+Á‚ ˆ€ÔÁšvˆí¢Ý6Ø™×L¬+ÁêÕLʽc ÄN^üË“Aب/Iý¸Ï©¡D$‡µ=eÈ«ˆÈO#m¿# GKÙð6­ÈFlj7k²å(¯ _· ·ä!߃UÈÖ.ŽOJ%äiöiøçOiËÎ+Y@i>Ëó¨„ËÂe7¸Z{–^ [_šm‘Ï`uüð%EƒÛ),4ÆÌ.š…3gžþcÛ)‹ ÈÈÄ7ÛEH2æÖè!ŸÉhÉ,5áE:ã²ù7¹dþ1—KXѧpT'.‡¥@ì5U %uÒ‡•4rA-^Fh1.>…ûÛ[|äû4Ñqq ì˜ÇŽ?b~«]Ÿ_¶a‹ ïf[YèY`³{°ûÑ(âÅv9*#ëmâ¥Ôƒ^${2ÔuIæ‚>9t c÷BƒdxG–o$ëÑË¢roqqÑ’gv‡—“u¥0ÏÙó„¸ëÑ!jæ~ôrµÉ­l‹¸pŸçäû²uÏál8eDÅ'Êç’3°·¶I²n÷8{2`fMêfàÜ8ý¦8V¾vÓÙy¤ì›KN ø¼‡O·ô·z‘IÍjìOÿ›qŠÉ²þû<ÉýgÙ$|ïæM1þƇò-’מ7F&†Ä^>^ôîºyÍFé$ûe"†vCE©SásÔyóÓ œw'p_Ïc÷Ï…0툰9»î=úsp"²–òœ~㻈µˆVÓ,Oæ&—’I0æ:$|[*ÿøÃb¡}ÖƒdÕhÀXÕ £tL¸× ¤}6ÿ¡’7kàs X’~°:~´½×Ò[UøU-}í 3Ȭܢ>¬žžjOóéG‰×MîÛøh\.k q<‚t†»ª”¨T{éßóBãf°óìÉF»Ö‰ïõùÏ…;éjz±‡‘?š-G”Y{¿šOÕÜŸú%§áÕñœ„˜žÔjÕ£úæf1Ö¸¸%>!L”»#dùw ô…‰$ݬù÷¶Ek5‘LTi>ö_d~)þf³qþÉ&Ò¥»ÞJ¯Ž­ý@^½\ªMµˆ9ÁŽ…7’Iÿç\nqöÿ4ÎvWúÂÙzë䤷{çvïüí÷Îú—¢nÆ®ñó záGwnwÔ펺=æÛcŸ~]øód¯0Åü—3ðÓî+^¦)ï_CÒ4¼¾ø÷‘À÷ªâÖ ÆDY¤ž'¬Šè&*ÏóÞš§–èSîÖÞØ¼³ÁÍ”@ðUšáJ$Æß‡Z×Lmî©Ú¿¿›­=¥ðnWÍ÷îW>@2Ö£ç”Óÿz§ÑB»×ìŒZ‘ú>¶ÂÁyùâ?®§¢®“Êðº%ãш 1ªz³BésÆN|I¼Gh;3O†q'ê±>ÄAíP}Sþ}© š’*N¤uÉp0jÕé<”û¼Bžoðx{§®–ÔâÒ ™Äý¨WT‹NÎ%T¸ /l~BÉâF€_í&¬¾p –"µØ‡É帥>?PMí 8œÍ¹ÜÕ~G³ãL-rZr^ÔRß²º¬`) G%XÍÛ°ÑA­‘·òÁJ«‹o—ûEŒI`!žS! æSlQ²ã\.¾-:¤C‚íñGZ÷Ë+ª†þ›~SÍ&ÙzGeJÔÁY ;(´\ÚÜ=ÜvÝhi÷O8g£ Ò‚Æ4áôŒKž¸X Yù…ã«§O ê"º¢¾…M”†)D‰ôr¦”Ȳ&ö¨¨œ„˜XP½s8ê…è$o™DPž–H-¿w®Õ5V·'ªpUÇ’v]µ{,8¤Á.Üa»Çê°EŽZ-&>èˆ` EýïÆ-¨¯mv¸]ZY)Ü­BE0Päh€NʧƒQ´Ìo]„ ÃÁ ¼†¦þ¡€2ê ó0Âb6&òIQ‡t‡tµº"maÏ'Є…QP«`5’×À>ðfÀU'g÷½p½¯ ªVÕŠúQ­ªuUZ…uŠ«`ûÑ3USXÊ}|%¦'³ºBý¹$ê†ÍAŒ®8Bh]4 õ3C:¹CôÆÂK!k§ˆÉûÇ{{‹WEœ1jûU§ùÀ´ý&†El:´ÛxÌKXz‘öá2¬ªU\Ñ潪ÞaââÒY‘³…Å6yÍM–✣ûa{À®é°¨Ù¨ËŠñÊâRq6:¡¿³´Ù¿ds#Pðñv#EèË6¤+3,«•"Š¥bøÕÊk…ïž^òªMÆ™xQ§WÄl¾¢ô['ìwÞvªpÀIäD„0¼/Žƒ;¥M¸+”6CUÚj<Ýþ²q¸÷ü VÏAäË&F6ê/ê°\övësh#r®uUçÆ©ðÛËíÅC²Lþ÷-t <¼f’œxî Mƒø†?&HþˆIÙ Ô”µYkÔ6kOëŸ7wdygVE ýŠIÙ6Lzìp9jM0fâ¥#µËò Зùjõ’Q¿§ñ„Ré¶ñ%vÅTFOçª?k„f_·$›n mø¶“­úþÖöA•]7Pa½]·âá‡VÔGßÜÖu ”ëÂIíû“Ñ‘pþ÷Y¶, Ùä¦ÎõÎÅW vÔkÂMBê»[ò¦ÝŠÛCãé6HyÿéÞî/ëJ§—5:.5õwFî³Éµ(]ؽcû-xd•[†šºÖÊG+šS<^wH·RÃÖn@óÒ³Ùt³ d*Cg%5·£ïßFñ0ª óÒ®âÞ$ïá2Dsíx¾£J‚6f¢ Ÿ“9èž±×u:dpˆN´s<ë'S$‡w¢ð­E»HžMk”ª›Í¹Ñ<¹,°_ÉQI\´\É*yeƒ[Ϩìd¢‚Ò¼'¿bOÖ F[Ðt®‹jà{ˆd pL ÈEº‹° P2ܳ8JX/wNSEÄ7“$›É©ö Ø"i}É%õ}•j±hÁQ:чg•àîîœáʺ—}ol¼NÈd,.lÇV¬;Ûò«£eÒáË™w >vãKš÷G‡[™óîpŠlÔ‚§zöªXÖË#§×GÁ.WgŽþgö2ÕѲÓS¯³¹cólåôº(cÛh6‡ÍÍÆö~:m:{#Z’žOsíׇ¥õš×%4ûÇïñÓýé ]`n·c%7W’Ò"¤t4=¸_HYˆMØÒV¨}€àÅ¢×8´3C0ˆ7aâ3‘,%£mÌ]BxÔ[=ƒ©>"ùF²n»Ë:FÔ>DW2ç¡#Þ¤ð‚€¡ •ÎÚßL¦yåSˆ‹NKï¤Cm'H4–ztg]X:^|e;¿^:.ó•ãÕJ¿ ¾WeÅO­µI0û8OlH#{ÚÌ>Œ†@¨·ëÄ'šþÚVëƒè-c˜A` ñ!æL†}”ݹ·Z°B´ÈÅ:£nOý{E-R5ÇE2þ$@.=3$€ ÅÖ»ì7ê “›íD{l&¢m5ˆ±wk*^›|€Idmþ!±ŽSáðD€^ir–•Xs0ÊŸÝðZ¡1f·2yÆ«åÍe`Y:ÿ±+ñiÒ¿€.D¨¡éF©#4&q[)Ä£Y»Ö¦$rT j*´t,·ŠÙêlõ‘ÌeàŒ®ª5uOÝWߨf.5U·àQuÃdXÈ· å ¤í2bŸN:ñª…kh»|Qs ó‘ÔÕò«éi ‡1Ì=tõß°ùß¡‹„åâÌ»,y†ñF=U¥µxÃfÎ;‡nü ø“hÅ^öc7ɹÞ8¦RíF È^Œ†LÑ´=<#›$d¯&<_†S¢yöÚI—ߘȎÔ5á¦Õ^® ŽBCt*÷=Z%Ñ"Ð6¾= ÐxT"¯JÍKX]eŸLïø>$Dß][¶vÜJ(­‚˜HTu”1"*NˆÔÅÕxRjÊ­¯³;Kx£—>øarÑM†-²Ç0äÕcPéhГ· ­‘}8êíbUûúkǤš6®ªµC x«CÇ´*¡U#lÉ¥ÝÊr(Ùí(s[5“|¬Ù‹ŒÏªþzïÇæß±"E)þ`‹ C£šZmjØíg&Aš)œg_ö/ ݈œ¡R¬&Vžjë±u¾eýÍû|ã: –êÉãÙ bpa©’e!îò°…ÓÀ¯xך1b@Ñ>HðÝ/Ô :— yµ°*²2¬¹¡eSòb¶nTz¶¿LÝû¶¼B›âÛò*í¦NHt >5®›‚ ³®ã‹­9‰t×¹^2´Èm)”ž6È0¯˜M",¤OËÀÃçQ±Þˆ/lÒs²/M-úwyezÍ<ëN}û¿Ë.ÒˆRm,øLø÷ïŸt\Àçg/ú[G/cëJš‡¦Ó8ÆÊ@»ô£­{©^.ËóÌàÌ'Ûµ Ç¼´¤XwžÍøž p+|¾‚tÙ­ÕàÆùlo«^5øwŽâòœ“ÙÜBŽí²yšXÅ‹â=—ïÑ8 q—ö¡ æGø±c|‰ŒBÌŸÈ*Ç|Šò+ÁLËò$c2aÃfžú°/1Ê,ÄÓÕ §–Ì6µ×C¢-¡¢ÀCŸÞi¬ù>t/n¾Ç’ý}‡?Ò’+9·¿_÷ âæ˜àhgÿS¹9Œ=·X´€(ÙÄÜ·¨g@ѵü’õ· Ö$Sµ¡Í^NT ŸÛ9 AÙ"ºa§+R*6Ãý~N(îÀqYF£ÞˆßTÏBl”ˆØ";_ ˆØT0km$pûhÉÜÜ·3,ŒÉ„GÂ?-3êBxIØ‹h#ËŸïšÞã’wˆøf$š ñÅ·Þ¨E„?—U\`öw³áô÷ùíf¾ÝÌéÍl·]2j"µ§È›höÖû2û~O¢„Ÿ,èÝ‹ ¸;”ÐzÀ¼¹w~‹e3é÷ 3uB Ë ö@cÿ ¾°Wkl?®Ã½HО!SÈÛ•¼i÷ûȘ§¾ö™¸‰Ó-6£kÛí±V}ªµŠÔ-]*™øÍûɪ¦Ð<Q"·3þq‚v˜pKzÞ’ž·¤çíiuKzÞ’ž·¤çíf¾%=ÿÖ¤çúÜ–g}^/ì¤ s‚ sµ‡×Œ¯>ÙÁÃç®h+‚ÿä”âøßô?Æé5–ûË8¼‡ýúÁΧ›'D„ħɫããÊk)¦åÝ£Kœ*Ÿj×»ó ø)¼£/PÓ<Ì#ÿíÕ,9'¦™n`qÐnü)&0ÜLDÖ¨I7'E1i2ƒæ¢\óSUõÏAhʪ÷ŠFßU ‹áûÓb!ŸØ–zN5¢šÓEiç[IΩD[4/½VÏ&Ø¢›ÐjõÏI¬Õÿרµè3jõO¡ÔêÓIµúiµú§kõLj­~#r­ž:Aë>ÁVÿŸ Øês‘l24œ;ÿw¦Íê q–½¶RäYýŸCŸÕ?‘@«ôõ ­~K£Í¢Ñx$y¤˜JSó:PýYÄZݧÖ&ÏâœôYò¬yÜ·™Ô[F™¹h9.ÐH†­æ?Ïû—gñ¸Ó>³‚œaÅý¸³NÌoMüßÌü(ƒ™Î&û’nÂüŠ>‡£° e«ÞŸ2¿€š€{‡ê~ùJéMd­ ´¢fm7t£îÒ2‘Ʊ Œx«ü—G)8Rlóˆ‚}õBi>†Tzß¼ä²õ ]I“éï•¥À3B6ÇmÖÔZy¥¼¦4>Ÿ"‚þ;N‘ÆïŸ6EØû?q‚ÈF Zvï©íAûªt&ë4)ŽsÔcßMT®fcÞ‰õ:(6Çv¬Jhºì©Ç’ ½`n1aâÖ¸þw8»©ÃcG·9Îaž ª ¾R+W+“íq­­ƒ‘ÿ‡…¿³÷¢~°Ø,ªÅB7·ªÂ0 qü¯Âï'ûÑÞóý}ÉîýQ6 pÉZÄ’@EµŽŠFÀ}¼¾cm_œPo»`²¥ðų² Ʋ%z1O7¨ïa”î¯8=`ϧÚÊû˽4YŽ–Ö#ªåîâY±Hµß•Œ(¦È"ãg™5‹mXs+ª ×åµo€mýuQ_R¡È‘tb8!P\ÖC‡ÅàT6ŒGý>§¢-é§ói,ØÚ\Ô˜ÌË ÆP”ïo@‰Q3¿œóo"’¤ýÕB¹2>tºv.þå õ%¤ÏÔKÐÔ–F;T(HÅÆêøŒÔà¢JµVƒYGýKe!QÙ:tWçݸ‡LuzJ?"®s{ ntwZ;ížÊæ]tgºÎé$'Ø÷ß ÞИ›žÖ7·ê‡jUcêÎ|F¬¯“Êe؆+$‹´´µ¿w¸ýR,…ÃöigCÖó@¹Ñ•ÿ:i ÀÆÅ?úâ?Ù¯æÆ)ø‹úËí£Ã£Í£ç‡ö u"q/5·à‘8Rë¼GÖ—†ä§H'ýðƒú·9M èíǧ¾åÖQXçã+8.¿ajÆžÎYG-ùÂΨůãeÈÀ‡Æá™ït„bÖÕêÆ-ã–ƒq3†Á ÃV÷9¸7?xLýó?^æi‡Éxã£èéæÏõÆá/‡›ÛG§©Óˆ´”·¶_ªoÊ÷–•A}ôÀ˜Bð YÑÄj:í&šMEÉNù'¯«ÂE4ã Oe}ÁYöaõt£.ÚyÒ1˜Ÿï+N½èv•áÖÚF÷Wø@ 5>¥«'<ÂÞpåMƒr(%€¯0†'ó‹›ëÒsœsÖ Çè;|£~èéÆ4zC1‚¡™F´ô.ÏÙèX=–sÕ}þ[Ÿ­˜OÎѤ!ÎÆçhµÃøÃíir{𸧉=wÓ_£¯š/p”dÕÕ‹sŸå€¯°–!È¿+xu>N‚;2@óœ;ƒ(™xÌHšwªÌª<ÅëË8^R§‹`_:d2±n³ß?I9ü¨L9B`X{1TwÖì ;™gG‚èO˜vÜä\öº xï‰Ývœ|¶äs¢ôöaô'¯x£„±ÍWdq‰?¸÷þ8›°ªFIxÚî´‡×Sg!«@Ö\üMNèÛúö€žïº'hS«™Á›^º¦ÏqÉ›ï¤êˆƒ2òÑ–Ò˜¨УÞðfhˆ 5£y±Îÿ÷@BSñÍ­˜[+0(G@!Œ“US ãL3´rÄ"Ðgá'›F+‡ñJ½@þ>ûë"ãoœýGÞ xi}æz~¢Ý>ßõ^¼®¦{}±y°»½ûÄíÙºˆwjo?ÖÔÝ2ŒÃÙD•¤¸–^îf=q}nø")z³þˆ¨e¼¥Ì÷eø0œÖú¹¡é¶f¯}ã3& çjécfJÎ$’Û­ÂSÓšÖ º4 ÌG;‰ç­†n;! ¨Œœ^$èçIÌ ý8wSoó£ÚDlÔas4ŒE¨VÜ$oämî¦ÎóÑ£š óݸçÙ¾LÝ#˜ºOÝ£}‚ÐÔÁv“½ØÏ¶Ý]þyöãDˆÕfñVw6ŽѲ,¼Û ÑeÔÙŒZ)bozÓ?0ö@#"oþ'XäY|¾ãŒcöÏæb¸.-þtÞݼ¦áž u ¦èLÈ=‡e$Žqѳôù<Æ}d6Gƒ„”zª cð–xË ¼eÞ2o™·ÌÀ[fà-3ð–xË ¼eÞ2o™·ÌÀ[fà-3ð–xË ¼eÎä[@?]jÔÃK«ô“'÷!©ñÅœ¶9®6Ú¯ О¶BºÐÂnÒdvñ¿ÇÅ¢Efá[þ€)*õÏfã>ÿÒõ±J:·J;·Œ›©Œ›¹5IŽêÏOõò¡I„µ×¸ÐcžTs_J8;«®Ï"œ=’NÕ<agäcä=?þ»ŽGy¹X,bŸÐ#zçš,9LÁ’»ñf܉{hÛLAf¤®X@z.<ùéÕLWaGbæ3’\ȹ»9Šy€'õ£½ý£Æ“ƒ½ŸÚÞÛÝÜil„ ×€ÐxØŒw±v3)ÏÇP{b›²„ÝŒ]vugÒLÃä¢sÙ¹À«äýçY·H ëñöËgõuµ-WHááiçÛèü 3¯|?uÊâ¶¹Ç~››ýÎ(Áÿ ¯êyØ+Õm÷ôsÍŒö„Þ„ Ðk…Žk2É _­½Fôii 4”Þ$ËS›\Ec%Ù0‰FàâKòÓoö›Í ¶´Ôï7Þn½¦>¸O¦ì¦µ”ײêÇØÔwøçjY]o| #È^múY¸æß£AŒdÏÊòÊ©qsû¥z¹£jjµ¼‚ôVüêsl­9½ôˆrýS6A&•üË%® ¤q–yL4|[Œ0òסöY Ë-O5œ“Ókß,«Õo?H¨q˜ºtã²ûêêÕÊkNûúkˆòÛ•Ö`*¿^w°T©D4¸6°ÁáiüVO—ݼN½íþp C!Õ·C³ëU?}¨$¼Æ+•¹7å&\Ði—Z+¯}»®V¿YyPZYûF-Õ^?àùÒ%Cö9Ø[í³6™ŽîÍ4²–Mš@+°ÅÿÝp›ö_Ý{ÄŸuétC–~ø/ôæ¯Ïw޶_–î­©ŸïBZ<ˆÞªïŠêmjÍ™gjâùYu–Í]ˆ_9ò}·™ÀL’á<Ä(å« cÆç–…wË›ËîŽÐ0_ÖÚŽ®äµ±#µN³¬ãdɲ§#É0…½ø7*ts3nýv«1›f¥\s‘§ˆˆ”ýŸG¡f ꓇úŒë›‡ ]66R$-uõrÐñ]ô&Ûíß# ”ü¼E?ß-²½E¶s![»#¿,¾uêùcQ®­xÖõse!^›#Ûžt0û‰šK㮿"6ï¬Bž“ÐDvÃku —)$'ý´æ{fžÜM,l"˜ÿQÛš<‚n¬ŽÉÂôB³»‚åoq÷-îþ8•¸ÊþÓ”TÑŸb”kžÃ¥Î6Å%f¹± Ê£ígõÆ‹môÙôËa¿R‚D>_¹Ó>%?g£‰ &å,*ž¹óÞ(u Ì¡K§qx¾VS½(j%ª4„­6ÖvæBÿÙEçó…‰þ­Î›¸±MÁOÅùÚ7>žVsZ*´¼T¸*äþêGÂùpxhÞȲmïÕžÔö?Í/GÞŽÈd÷“gÄE SrMpâ¤êe—v¯¡Ú©á_ušØ’ž?O8K›þ,eMÀM]·eÀžêÄmB~vç6çÜûX«VÒ°Š‡ŠL?fÓ¹Bñ«¸ß¢­q¨åTÀ“ÓE'§Ÿ5ÁÿéWêx­*#»´(cº¸² Ôj~ÉLû­=õ[rõF¬^FU\d_–× ½Û­?œÝÀuÏä7Øl,œ0›ƒpP?:Ü~rôË~=£>C‘"9º‘ôúÙ™*uÞzÓ‹/ íwn|©N ¸“%"“ùÂ,£ÖÀ‚3ÙÂNÞ¹00’Ë §Ð? CôO¤ÓMt7‡Þ½^ÜÅ£D½ í°7\FqUB‡ßwÚÝö„èÅc]â .îÇÇèæü*ìö;Ѳzº_zþR­®¶'Å[P|Ö ¯åxh·Ê´Ç’»px £®Öü†ÖKé`˜Ñ©öÒ†|¥‹¸1W¡è÷ô0¦³g™0ÈåE»y’«Æ0?‹GÑûµÛ”EÀY§Q'¾d™ƒýAt;]ƒ6|&I4@ß&H»4äÀ¦âܺÖ2P½&_5œ¢¢e½z*î‘'@f±¾£É‹6ʰø‡]fÎOÐxE3I¦aÖÝØˆÄPÒãº÷ðQŠ„½kõ)’—ÀC׌­Di¸b[Ó<‡EB£v5ÃJK `jûüþ†Ã&«}¥h¤«À§£vgK ' 7™jÁP[õ%ù2N†øÚöû½vô X™ÍÕrºËYSŠ]>‚v¡w÷š¹3ólÉk4bs‰–õ‚~âq•“ ¿îØt.Ãë„^C€¹àª-Daº›ÃQˆ‹¥{[ü€¹PÜá%dC£.+H†î9ƒ.L¹un'$°Òi‡‰½Îd¸»…sS© oWN{ƒŽB'¸¼‘™KßÍ ¯¦î-6N…9Ò—_}¥s’"$6®2ò¥ˆµôaüeŒcµ}—±Ñî‡ÿnXÏõ°¼df‰¦ÞŒÒK·y¹—•7‹I™Î—ºc“ïÎÞî”ã‰d™“TJöc2ÈrT€Õ§›¨ƒB[I¯?Œs†rDfÿšaÙÃo¯'9+h\·#8ÜÖa–ÀYÔNBÈÁäwß iÐÇ%$ ®…Û3F½·ª?Âk³ õd=ƒeÔÿ¼´ðc]ßpÙ9y1ãœj¼ü_óyc‰U=VG©š‘þldjÞ.aM£ê¨?Ž@5ø‡R§ÞˆþÓISw2ÿát©éjQj&}>ŠÔ¶[rô–ýä¨gÜOä?ÄuVô)ªÙŸL„NµÓ­û“P÷*դʌ?:¨o>;x|ÍÊ_Äɰ'9ãþ4¯Ï/Û=t0 Ó*:Q‡Æó?:ܲy A±ªñÿßœÉÌÁÞ×ÙxGNX+˜ W‰pŸoÀׇ܇ÍôèCEý7£:ØSÕîógõƒíÚͪâ™û˜êöž½¼Q]°n?®žv 0ÐÇÔÃÏ07›©ÚÞîÏõ—SÛGTF¸è£ëºQUˆF?¦¦ÚÎÞnýF5!*(ÅÓÚ1%ù£Gä°¾yP{ZßúØG75{çäð7‹Ž›žûg„ù¨Ö§Û?žýæÅªDç©ïÕp  ø¿ã•Õµ|#ƒ££¼t¼X>.–ó•ãÕÊ9%¢¢UiÄÅà8áRwíÆpgƒu¦Žî ¯¦LÆø\Ôžn¬Â°aéÜ„5-ÿ8Àk x-çϰ5«­m‰„HÌ­†-cAV[RžwU ÏшÂlÙÉ7¿É-)ðO6·%]ü8±j= ŸMªZ·Æ UKÌ'S­›ð©vÇóŸ.QíLå?\ Z÷4KžZÏø|âÔî˜Ý ÏÝ Ï}Y3Z²ÚþZº¦¿‹ù¬qš&Ût–“o¢Ù,½§}†Ü>·°Ãçûû@ÍWõ Ü„æb…ñæhDɼô—[fn5sÎþ¹(²¹͹Ê[Uó¿Ì~{`ÝX®ª¹…¾¼²yª¾‚º¹ß¥Y çã¹'©œû9gu»ü™×û˜C¯wÃS¯÷'{½ÛsïöÜ»=÷nÏ=5}ùƒ¯÷<ùz7;úzóŸ}½›~½O=ýÐä\3ìßìô“BsŸ~’ÿ=ý¤ÎÛÓïöô»=ýnO¿,<ôåO¿t…ÿ„Ó/Õ§Y§_FöI§_*ëìÓO Ì:ýŒLèn¬ô±Ðƒ3MîGÆ—i<êM—åž³<ŠŽÒCyêÏ|àæ-ŽZý5ó€Î.6÷­ ˜ÀrH›FçÓ³{{lÿ™Ç¶™—‰ç¶—ãöà¾=¸¿èÁ=†¾üÑ=^å?áðëÕ¬ã;³À¤|,ó„#œOoÉß“:Bëp=~‰Gl™{( ¦9ƒφýõJþ–Ï{£r<8¯ÀoEg«¨"¢eD£­€dEd™Ü ‚¬ƒÿªW´eÞÉæ\…=ÉÒâb‚ÏL:íqI'eúìÌÍAihɽëxä {´Äžˆºä Ó€£¿‘4QÔk$íߣ¹œ®ßàßMûÚ̧!¯Ð›ð'ùÖÎå .¶‡ƒÑü›Å¬ÙPuW¡r @¸$¨z¶cvù‡ê~y­¨íí›-©iÚY Û®kå¯ë)Ûé/в96ܘ·òYXöz‚êÒµ«¶ôyö%Étžv"tFŸa[úðnwe.kŒ37åüªv?olo>Ú©C`çyJÄÿ¯¼Ü̱.[ôÓ\âí’Ëeó§/:Cü\?8ÜÞÛý#–Ý‚£:N"Ò¨T‹˜¼{D3…ÌUAMÒJ>_i^¶Ü ¼±:—ƒ°¯ÎÚ4Ý.Üv Üi´¾Zm8/†1œ.”ï%#àùvë„ø#"C(—DˆÐrbÚì1\RVâ!¦á6¥bܸ”Ã2?Ø ÎÄ’sjcᆲ~°0ŽP>?›môõIt>_ðfQ&Úò]"8Î:¹DÎÕ œ&‘ n `C*7yJ³M Ó2ól ¥ŠAàYzÔ˜÷O2Ï««ö.qÁÍÔ§çÙX)mêù±ÛþÁ^­±¿½Õ¨½ØòüK¤ÿåf¿²žcY/Ùú–žðŸ`ûÅî¬Tû¼‡Ä+2…?¬Ï7JÁ-]*µÂa8ˆã! -qcµ^*æ’ü ìAGÏí,û÷¢õŒÊ*¹ˆ?Šs©!Z¶¡"‰PȸD³f Np¢£^Ê{ú ƒbפ>sìp€a¢áeõ<\!+äXW2Y&ã&ÐmÜ'Ë¥G–¨e4ò5ÔŽÊF ªô`sb¢¸=¨±MnÆ ä=f™)¡Zq¯00—!ë8¡w²eJA_gƒ¨¿…fÀÍÚC¨O!vlÆŒ.¨°s­ú¨ññ}Û9ŒÙ<ôA=o¿EWf8€R*Á¡CFúåª]ÓTã *Q–8.(ME&j°.6F-Ùì {Ìœä 9"*щCÒê¹_–qZ¢¢Kº‚¯Á„IËŽ9ã,îÀbC(D½¢žÞ ¤>c3\†äÞ }·q­z4ºíÁaÛ{Ñe‡ôkÚ=¸ pЊÍ%“v¡Ó ë}Dìé&&ÅZ–5Þ2i’R, YÇÁ\R)T XºP¨œo KÖlûÜ4ÂNoÔ}Mk'w K²–1P9>^­ µB¥Ÿ“j섌 €ôÏt}J’m©›%Ûß;Ü~I£ÑŠi ì ¤:‘«ü:O[«n³ÌÄË£zvP¤z'àŒ•_-:¯œâãáŒ"@Þ=Ö0oö_«´·q\^½ûðF§˜¯è'×ãU÷eý¾ªh¨¦‚18¬J^ÅâÕãµRb „T"Ä…]«}v†$:~Óí&§,q‘y¡Të*ecºtéƒp  pG®¼ îV!Æ€ÎÙ—žI˜fÔÒˆ´d©Y°q„2=÷±5¥ïýÒS'àÜ¿É-"ÊD×3êáÉBHk®Þ¨0·—i{ÿæù ôèö@è^á*¹ÚE{_}¥8Š‚Äqƒ£àLÛ‰ðýø Þ{útÀ^EMI-˜N¤؉¯ýÏ¡… ت?>¬–¶ˆ>®íí>Þ~ÒxôâyŸþ7©Rxh¾ä(£EIØ1#,BʾáhãÈÿP]Eg´&'@u¡Ðp³ aYìMWÆIá£asÈêÆôÔ/½Óã+Íô¡àboꢋ]ºî¼=æ¤ìÐ/=œ\>W¸À¶¬¤QU§Î Ø9ò¢‡&ÁÞ–ñõøÝæ³­ú~ãèàyýCÎ> ;I7w!Í1ù>‹i÷ŒM‰ã9Îáë.@Bkmérðqì=`âüí˜ç]ðÜ;Á‡G›GÏ«åŠwïü€Hi„ ½Ýós¾Lå;Î6Bå½:r“9‘€ éJÈ2±39+QÄ–ð“^Ï]•?|ZßÙ!'Û½hŠ5YŽ7µƒQÏÞaùÂL52zoŽ€îëYŸÙd«‹Õ´aÆx4ìHª©5j2psÙ^ÖLÕaÕÕ\¥D¿ 7Êp8šl“×¹R~³«…‚{ÕH¥®3Õï ÷q;p,¨ÃQŸö&s,èÕÖS‚[˜†jQ->ÛÜÞ©>XÙ<øYÄ$öyr35¤J|®ŽeÔFkuÙ)ð÷òRĽXVp—¡ Û‹.rkÈ–ZËm'®!r6Ñ­RÿÜÐqI·fõCæ·ˆí‘;`{â.¡¨Ž°ø˜sNõ• :<·ÏTcó°A£øbsç'u‰ÐšD÷3íÌêÄ2bv–zm @„‚¼kƒRàüH"b9hUÔEÃr,óP ˆgS-…’«9•ËÝa¦Oæ1¾F^ CvàñÍN¿Ñ\C@µ¸˜.#ÍÜBv¨¥ó“¨›{ˆ2ÀÌMZòêø¸òzIq:øq´ iFf•‰…6(6…üuÅ·®¤o P/¥ÄL¤Ì ý~ÇžT‚:«e“>0é•üŠÎ¢›g0þNô7|a«-P®ùdZU-@{xW¦·ÝÅç;o£dN®„NúS˜ºkEšjä¯ê>3£¶÷ìÙæîVLc»_I$ÓA@QÞ'b)|w^?¨?ƒ4þ<<¨ëÙÞnýhóà ïn># Ú¶+÷7÷ëÌQ}§¾ÿy!ø±ý¬Î»Q.vÿk\&zÛœ°d‡ Iµf(*3”Ä ÎCbz ÷Àøè©¡ƒ…Ø@xk.*lÔ08…}‚«Œ6Ts¢ÖUáx1<.2à†É÷ò„²¯À¿U,BV-Ëe(v‚ûç%D»[3WñsÆPœ=bpPu{€œU•ÌêÚ½œ2²Poîe%çÖ«³UuÀ©ß¤yÇÜ.ÉBä~ˆ]Gd=É;±îbÁ÷tHA0І¤‚œÚÊküoé¸XYÊÔñ{䬫—:ÓËãÅJå¸8!gâË.‰µŠ‘š„K¬i2.êWz µVÞ±ˆ@RÁ%ÿ†?ðOå×—XþÃvÌ›·½›š5©@ŽreCýV8!³ [ˆeÊ]¡ƒd0M’½¸±Z• «»æÄ:[—6³µ&œfÉÌ«Õ-¢¾V²dRÅ€hzТÆwR¹·rÍxIKueìNŸžâ‡BÑtÔdŽMàÊ’À2%¢Üï(xrAo•µòzY¡z]MPäl@H¢v¢.¯óEáå÷ä0Ábz-ñ‰¨@Xü—‘(ù]¨×b á6r3é¹6VÄê1nlT$;¢ƒWˆ^Ò¢T ½"´zË-«\¹â,¯Qì´È½´¹¢ñy×AÑz—D8>Áfá/ÊUàDw ÞçH6×8ý+S¯œ¡*¿Î‘¬Sì‰Ì‚†UÅ"ˆò{Tå»?ÖÀº"®K©GOÉNRáê¸YЙ&\›¤xáNacã΂|²0Jï9DpŸmjnK9? Òˆ£ûÞZ @µIà ¥^Ápwþ|bÊå#hv,g¤—OÃÓkéh~SljÀ[[TêMç¨î¼l:QКŠRUwzZP"ukRÇít§×Hª*Åç ¾ž’ï6ÜExÓ^Æê<Âü%ÌR\-ª½žzvøË!Ï1 „®•ªƒÆhwa¤A%A>PÖŠjë?Oö÷Õ÷j­¼r_]à+B (¼‹ZɆ@+&Bº¥“ûx2;„#9Ôíqý¸4iºy»Ês-Oš}Uê°Ä¤ÁÁõhA½ýî:ó,ÔŒƒ†yã‘¿á°wzÎJózïÔ™K-µt¼8èú‹Åmí"^M¥¾O{wsÌÑèW×=1dXÒå ƒáá:ðË/à]<¸ÐÜ$¦ -ÖJ­$sÁq¾ÝI Ê)Åyä’ÆNƒ¥«;îå.•¦™Nö¶˜\ ÿ™ÂqASÎ6ÎåW]q #’ÁI•rÎÈ8aÍw˜ß´êú¡)-‘4Ç“@mwÕIÖìf§E$ÓÞÕ;Æ¿óã?¾J®^/×76–Š4Þz§¨ü@ ‰°˜Þ70CV˜x Q‹j”$"eÙ ûHü*€Jõȱk·T 6-_kq5Ç£‡¤Óõ¿–|Þö¿ö}îö¿6’½úÕúWã_ç…ÜM[bÜÜæ$©Ö|ý¯~ZQ"`AQý¡ÈAàËUZž#'–_™Ô0D=mB«ÎF¦~‡1@€»R-l·æ ÓXx)yz¼½S?TѰY&™Š(l ™H}Ag狯ƒD‘P(ÔV&áø¼š ¬˜2>ª’äFË}”L ÎÝ×BÔ¥5ôÎZùÁ* ÷ÞÆM¦È…J‘‹†Uä5þUÍó%EÙOë›[0Ín‰²y€þ)…¢la<:9t*ï '7ÿ0bÿDŸOD5ÁírÄäS¯èßêi5¬þvä‚Yï…Fü1=³¸·'ÐŒƒÝ [ÈóDÆ2¥yïÇNLN§‹×F/‡Ä™Ît‰ïD·ë´ï±Aá¥ô1pÄA jcUµ—wt:¬a›K"Òùô2¶uL0Ê$ö:z@)ôôP´Œ(Û 0}çòò—¥à8ð¶o`dS®,«é¸}ž®ELb½9G’Í€k„ƒóD‹µ¡ü¹ªT6ðÊùsÇ'Çù×÷ýªr^8( þ5=ɪÅà«••êñ ŠÔa|6¼Dšû1¾:Ðð-zn–áûÈH8Kx`ÙDÊ2Ÿj¸Õ,”´G(h¶#¯Y>r‘·Œ/zpèžâ‹ n¼nÜjŸ]£ŽGŽdû—­j!ÏB šx-ä9P¶wa^vv FB…àÙO[Û}ˆ’PanÙ TQë­yì ÝÏÏÚ–ã‡/Ý‚.å•Þ?ã·h.H.úhEÖÒµ›t)€ÖcœH`™5ÐÙ‹…´$h´1œ±x¹%› È+]ᇠ,•–ª"‹¢‚L‹òÍn÷«š)­e 'NVXWcY)£ˆ(ÛÌÉEûlHÞJ?f¦ªÌ¯¦ç×üÂô×à;·£ Š8Ô©õTˆÍä-‚×,ƒß;˜Ò†mЄt@~ùÇtÀZç¶Ùã½ Û  é€üòþýY\R;{Ùàœ0°¤">ÞKHä—ðoK ²Œ“i&-Û÷_þ‘ìy=úôå’U@ x„WÞL\N‹¿å&àœ TMH¦U/4›m€¦ënØ®‹+B)3ñ¥õÝ„D@£<=vO×¢-^i@¬Gp0‘³"À ì:…²Ú=| `še&“Ò4ÚÃD“u‘µJˆ¸ò×Èo˜™iŽ÷†úÐ!_þ¡‡P±¬Å¥ƒ&¤òË?îÞ9Zs´5é¬`ßGÆ Zi\ I쨇Ëy¯ý; ¼Ï?¸Ò,6&®¡hèS»5‹ÒHöòp¢BÄ‹—ßa½®DƒÎå*±"òîXY™¾ZîˆR“ ¤N|›b掴‹ç#T AÇy³¥Ä£=ù¸bU{Túg%‹ ¸YíÌAK{qIü†ÊGÆÀÄ{së£a"*ÍMÔƒ'Á'Ó5frSæEMP ¾a©39 ÞÉjµ¢‹¤R®”*çè#²\®,,(ÔP€`¾¢*ý+ü¯@³søhï%Ê}Èø £%>%ÑEPa.øÀ†ÌæšwTXÝÞÝ>*™íB`%÷aÙ®ÄptE¯T›|Ì üSZ›-Ôb"©G¢LcÛÑ%h2JÐNÍÉø_äŠ3Ï“U«„åž…o"RÔ)N=ÿL6S°7+sö²@°Î ÀËêµ€mg”á>3GœÌˆ&¶aíë H‚Î7©˜õ™QL³V,,Ãl1™-ºž©¥Ðî17N/¬õñ%2E·`ÎÒ34,©Ê‡_4ÕnÄßP*#Í f"ô™Æo£Bã¼ÓÚ1¡_w¥•"½Åæ_üÇÈnžBoþ4_` Œ^}à˜å:Æ7`½§È± ÿÄá…Bo£^M’À$áîUVë\ì”Á-EVQeþÚ r’˜~yk9qô6±ŸÊfUA.ສL„QP«jM­ÞS«ß#Š¢Ü!Q››ZFCóWL‡NGÝ0y£V¾ý[Ò}ƒkZ̪H/é_.¥Á`%§H߃úfÔÆtožp‡®,¯|¥ül…½g¨.Ÿªâ¸l KY¹IíÈ“ìÈÞ0°Lfò(±°@ï4¨y+ÂP-#݃Cå™QS4ŒHþ/6,ÍscR¼}æ¼8þsA•µ]– zâºOkkC) 0Cfø6.Pý¢çXÁ!5ßN»[-üënãî>Ÿ1„h‘G‰/!“þ®‹U ca&ŸGA¬2Ž”¡‰d¾Ë”s^Wø2æwS2çn¾ÚO›Oê$d‹¹ì×xž£Í?›DŒç½#›S"Æslï>±ù{<ߣçhfmïàÈf5Q6·£ }×U—¶9tâx<™—„y { ž© DM˜/+Þ–;¼ØÜÍó¯OtB’Né´O±e”hÃ6ݱ9t7ï|ø9Lª_ëuBf—¨bvÒÉH®êˆóxßNã&,@“Íû´¹Äœe±a›wZnïÓéMÌcÁ¿.ô³X@SÀ¦\ »J‘€ëm›aѯ3»-þuâŽNÒ3¤gg|Tœñû´&ñ¯G%ü»yükãXVé®XhKÅïJün*þHâõŽÆ„ï’IagE"-Ò ­9X–öÿd°a›Îä²Îá~¥jøéº›ý‘®‚éT ¢Zñ@gà¯tžØ4=Nµ›[œê U¨C©4]ó‘Êëapë’Ç4+öä`óÙÝ|*b<çaí`{ÿÈfäïñ|[›G›6~Ù<¨݆ÛáݼÙ´Ú/OX•ênÞÇð¤ÁŽ6Åàâ1¼YÛÙ«mÂÙ!'åùÑo$!?íÙæOuN߯ô:§rئcîíÝÇ{wó:äîw² ÑH.pËë°MÇ“aÎ9üÉ}ŒŸ-/ÚÙ«,_›•N^üMñ“Soý¨ÁýÕ!¾€ÜŇîF+ò´9ÜgpXdüñËÃþârðSF=“FAg-<ÞÙ|;ŸxÀ)5ŸìlIF 89÷÷5 9uÃÅyØ@X:ä`¢—õúKÄDôkã÷ý‡âù×Å~û[Ûˆÿð7µÒù4ÅÎ~²ÄétÇS³¶î:l®t:™JÐè#•ãì–ÃÍç’É|»c ñÏö¶ê8´ô[é[oàæúq“òKû2"½™¢Irözý6-þµqH ÝÍã_g®8²îÇ’5–µØÜilàKåßÙÛ}‚t^óÊçZa”¬n”wr¡’»ÚÈŒ“rdÓŽÆR­‘HcüR›‘Be“ñ8_yYéçTŠj~/^<šê%ÚÅünÍ‘Äc]H”»î‡&Ô”zƒ‘#Wådge ú"= âÓLçˆSjl]iÛ—C.6¦ ´ ò0mЯA|X¹ËVÂëp$•WËÇÇ_¡ÔÅW•s”ÄxXyø~¡q÷ncá}å<@Ÿ$ÉòC’Ѹ[y¸l’‚õ^0T=ÈP°3‘+ä+Ëçyñy€ Á~°‹…Q1¬'²ÓjÜP§µ1þ¼xR¿&rú¢I2h˜© ú玜¹Þ.¨ŸÉ*Zï>×€,ݱˆ ²£h%'dî2Ò"PùEì("s+ÿŽ?>wë!Ïöóu©(£Z-­—lô’‰¨ëz»çŽŠ`¸&ÄŒÀ:›JQWºQƼ@Ó5/ ¥7 –Ä Iʇ#Ó#,C»CíJâÑ ‰ÙmƒLh'ñå¤Jq²pÎXÂ%N[ =³¢î<gÕ#ô!lùœ1 #²ÀFôë‰Ç°‚æ_^dº´ü$µ—öwPŒ†bBÔEÍ¿(˜FíŸ2 ô4R[{‡¥dx݉– ”fûsW4³TŒJœ¬ÊÆO׆gâ›+=ƒæ%ò8÷ZæwÜ`TP@héÌ‹—‚l/“ëš×Ê;é»±ð9/?«Í6ç>¹Ü<;!eA6µŠxØl„À–õÄV`Qre‡=@Û(ÕNo6‰:±&¯å=Ãi^l—£ò²Ø¬fX£D å—U?Šûí¦mŽýA;a†4Z8\—R¨*ºdØÇ°<[[“™]Th—b,á@Ý«æl!:s'¼£ïhËÿKFVô=`úõ×K•÷ï7’÷ë^VïÏQGÍ5ÀUæÑÒ‡Ö•RRÒ¾*y *c Ò™¡ÍùTbn†áPk´ÌT8Ͳ™“I› Å“ËCÏî—ÖÉà: &ÇQ‡YXž`"Òg¨9™·Žl:À4Á3 àijÄey •ù‹•Ê’ÑìOH•@“˜mF–© ¦Ûpï pš‹lƒç3D f°Ä,Nö9ßÌfbFª…$Z“ÏbT‡Œ—Ø"™Ê©H¢{tÚ—3­$‹Vx×3›È¾•ú6> ’=у89éX¢w}cì”óF+÷¸ÀÍûV¡ÝÜ6qjL=ksϹ“”Él Àí^™J s¤"öéSJö$çåÉÚ fdü½ Ñóo¯@æNË1 ÀÌ} ÛýOݾ¡cJs5äh´ù¬©„V:»8áåí®‡æ}|oÌé)†ŸŠíó°2Ó)Ì”’³èâ‰J íc‰+Z(ðÔ(ó7’ÑP&2;î›b ¼³•½XmkYiõrBÅát8»·,ÿz\&ƒaËË6Q¼ wZ¸Ÿ%´â½ ç=°bKx¬i~e’Ù©³òêW²Q¶\)——Ï7 Bj·çg $¦è)÷fCÁzøY©YµTìñklŒ¡Xâiâe­ŠfˆNKÇûýØæiØ|sZÆŠf»Ó^¯©føíÒÆ¸Å›f;àXÀ"Q$y¥-;·D‹LD”â뮘o-qY# ³é.;Y¡c<•‡"`ñ°ÒÇPà°È$ð‡àOÀpA¥nª¤s¿äTȳ1ÖFô×g‹©éý’®ƒºv ÛÊñKê¦Si¦—˜ô5ª©UöÅž“\X¢&;ÕiÌ'AÅC}.Ùw¥²fœ,e†í+-!óÕ¹$ð~%Â&:ZçWZÖD'ØÁýÊŠ|èDë¯D⃢1hóü;§i¾rÅx¾:/le%ëw£Ñp€£#aM“Ú‰Ö‚TUuR.³%r!ÖdT¥\lb ¹|¤'Œ³§Z„gî¶8áê†mæK¹6—œ9òÆÝ1´ƒ¼®nN=‹õáÔ˜†6ÅT€1NÅ|µ1Ä”¯º‡*dË8fMVášS&›${fp²ýö*r³ØoJ:›g²úMÖ_$?‹3VáxV7Öd—3…sɇI¤Ï‰òÁ‰ùŒäÆö¹¸Ì:S¹±ç·(p¿øGá»Ç8Ô|.Ìi¯”¨.8:¯“©]†ï’9]\ŒýIŒcIßl`ü&ãÀ£ïuô:” ö÷L°s"\׃¹Ñ€]Z÷dläøÄiN!`>¥Á¦§9PeO Jí³WCz4ý@?¤Ɉ†Ò»ÑÌÚ‡8®€@“jK© d5\¬­µ‡\?ÿÅQ2oîl¬‰‰ûÍ*1PŽ1/çºW¿Òs7ż^*P®GèÁ®‹¯ËKËÇÇ«ÜôjGé5ôûG¡--‚`Ôkÿæîß÷®ÅÏ;C5@›ûwÖù'‘sbO ‚Aú¬T0ü&¸Ó‚øK6;¾Z9*~¼È² 2õ¹Úé\|õëbñõR‘ZþzI w*‘Ù„L«~ᵺÂÎ|€¯{’²•+ÀcB.Ø,¨ô·&°-4² :¾ÍÉFµ¬D‚ZChЈ /Éú`ô ìªÂ9,/‚kš”I•Ñ7ïEM´«3¸^Æm …£«}‘WŸ¬ÖÖ ¢Ã½çµº³Yá6+k™B´sB€³¾”ö\+6>­k\£ÎÔŠšˆ§†²t#¹§.‘…Þs¸¼Z÷»€<à˜ÛMTÔ&°Úý1 î}¹hª"Yå_y}`ùV–ÔWpc_ž4 µ‹Ú3éDâtuÃ+  Zd49©~³èCÀE"0Nëw4á&¥IP.MÝý`ÎÍÕ©í9â‡d§€Sz-Çê7.,ÞÕf@XË¥ë‡KN‘LHÈ¡Ýc 2Nƒi“#‰Wp RdïÊ\ƒH±¼²Îr( êz¥…“É;zÖÂiW#,.'-*!¹2o`ì·Bÿ`"­æô›ÄÕH^-ðÐ -ƒmœλ;_9ÅÑ ¦¡(·Ð"DH‘Ó`¼ ¡o }ømœÊH…Vh/˜ñð.n/ âÀ¯‡f‡™’ÎÇÓ+964ážç‰¤oœP†$M_]Îh|+£ñ>¤X6´ì“NÊ{P2Ï)ÙTÚV}›*?–‡Þaæ¢Ú„`g¯ï£ŽîfÆ8͸rÏ÷ÒϵÖIß¶‘oh¶ Ñ¹7k8—7-ĦeeÓ~M -ŸÊ4Å&çä{•½  *¶þÜʺéL̨e Œè¬žX]B"ͽÁ6ØËA¶2 éã˜9l¾k!‹²]¢KµÑÐ^„ x5hEWôHäkE—ƒFØEÖn¿ÑŒG½au•õ0VÌøŒrô ñºåå5†}Äö®/)혶„¶`£Ó ÞT4Iöª”Þ= ‘옓ÈrG$ý,m›ç¾J›Ø9¥SùÇߤ32L)>ýEÚ6ùù ]¡y+]¤g;{ëµâämÍöe]ñsåÉ|1žž¶¸#铿*ø/?®¡ l¤Æ™®%D›9z'Fg´£\ÑWÙM@%‘¬ò³Ç"o ÖŒG†žãÅ„Ä©ðø°‚òÝ3ýŒ[Š@\/£ð®¼׈ºÂ•èÊ¡µÑ´)þlc„ÚÔ’dEB^3Grs$ ]ÛœˆÄ¼6®¥NtÙr»W ÷ì„©g‘‚°›¼o`GµZ¡FéL¶&  ƒ h)nÁ8m d"ÔøÕ`ñl~1ŠzñèübÝ««7ÆRãÍ€`Ы¹ÓFvfÑj±kz†G¶û8Д[»³LB¸`ÆMaIq}^`SÎã¸%$üºÚÜ~É„ÂyÁ*ÄóF·MDÞÚÊý³§r=@.%`0èŒ,Š#!7@qÃ9ȈРÿý•••2ŸÓD¬üfVUVøu¡¼äÙ—ÔŽ‹áv &ž€%áB>ÌäéžIñ`ÔÜ<6s–ôŽŸ:©à,©jã?UbÇ Žm¢ÐûÃh“.Â3ÁµÅjtËÊј.ZEް5^(m¶>"||Õ¦ÀNhéàŠc–žT~å(UUä~Ï«åÄs?ÇYr)'àN³<€Nü4¨N¶,ÈÔ¿1¸›uA{úf=‘¤½ö¦7XVÏIenìÌbBYôžìÈfŒöNÍ‹4ÀxîÕö<³ò,ˆ;ýF½æµö}K˜”$ϯ‰Y§Õßµ}P˜‘_äá, k£= ô‹Ü‘ø7¦-0¼l7##bÎÜ8ãÍÎàH†}Àˆé{Œ´.¦ |‰E§ElW\øz=†ºŸ© ÕÖ»Õ³ã YùÕUÛTVG·¨® N6UŸ`_àjÜv¬ÚÛcîØ4YU²Î •ó‚IŽ Ï)îÄÈV.°MzdðÓhÁVô )lÁŒ•<•þjƒžgË?fJßP x– ðTàIÿþÃEá_g:YhèVøVøVøV˜N®Àj•ø¸ßòl ª5êv¯‘¤Îç¢áã1tÌÆb„øaÕº ÐMZÑMZÁÆhñíQ-ÅÃCc h;M\@äýoRÓ#Å[ûN§ÿå =7 Öné²Õ€ÅgД©÷²¡í[‘”ñ%>Ïð`“µx~Í«A?zºwpøÙë@O…îß§ßoø¿èÄpõÛÿouåþ·+÷î¯}{õÿ­¬®|ûͽÿ§þV)1¿“µ‹h¨€¨¾Vß71 H¡—›—ƒQ9j~XGöÞlna‡ÝðwÄd¨\LLM4R7 áñ)Ïb¼®HHùˆ¹zÚáa9žÂÕ^íŒNÕEgtú9’á *÷:ë,‹#• 2Fý&ž×€h`Ó—Tx=^—›€;Å#˜~A_ö!  &É›76Ƽƒ«·ˆ‰ÅdЂÇâ)'ŠÏÎT­¬^`Õ÷ç͡X†ÜõÑmÎ0>gF·á7c€•ôc&NNÃÖ»òÐØZÔÿéD„¦›2BF$ƒ½,·N;t£ƒb à[?›ªEZcH*´q+ì¶Ø~ ¢öù…ú¾E›@lÀ¼ÅÝÔ¢H²ôŒ%íKBùG0>/â¸TɲªÚMuX†Ù¿î¢ ’jÏÂ!ÌŒåf¯-)Á {­/þM£«+ i8Lèq™÷É^^"L¾Q/ Ï¢Ž¿Ðƒù2%ÍòüE0¿ùN¡†V¤öQoYŽðZuïÞʲzæ~¶©ÔÊÚêêjiõÞÊ·J=?Ü Te…Yè‹]} ‡|gAO_„hg_÷ªFéè~ecb¡¤;ífÔK\©^<¬ «šÙÚd‚¥Ó‰/QV†ƒÆcο.§xù>"Y*‚”ˆ3”mÓ=ÇÿZ‘µ'ާ” /Ãku:9ká­ Vd—}Ò©…B~䨋Ðlˆ²\xVÐdÑ\GíN¡ê`G:Ò&Ymsÿ;…ƒ¾#ªJM« ÓÝæRIßþ ÛtGûe#6î$<Гß4¥›'§Íǃ{Ä{«$°«í¥˜$O¤ðs­b:|Å2>"d"Pzlo£:QÀO-ÿÿö¾µ¹ìÈr¾nÅþˆ2w"xHÔӦ잠(JÂEÊ$Õrò"Yˆ‚«±á_¿yNfÞ{ Ûã‰˜Ž‰ Òîn²êÖ}äÍçÉLî^ïQ[}í!Šì,nRC²BÈ|³UÃÉX™Å™‘›ûS½¢…ŽÅ¢³&í·#S×l'ùÕ:»µ €Vd7:ÝîØõ3búCc~;@˜ÙBÄ7 ŸœÊðÛgÖÞ£½ôLE ËÔ²ï›PGrwôÊÜ›_Þ3Úi®I ïê‘!.$–ª -:R{Ó„O¡ƒd‰¬]+zÄÜ144 cÛ•eæ/"-¬Z&¯â£Ô5Êël2P£‹Yb9CïûsDÙp û¸Sæ•°A:oòt.ê;Àó#‡Ó^Ü~²SfòrxÙŒËjš ±ÖsìÎyÕí#:&’n¿éŸjœJƒ‹ÛÄÜ„ýùNç+Hö`N+Ø]Ù0oNUÐVÌ+ãCYw4Ûz¢éNj΃nlŒˆ­xšñ¬Ol®]‰V[ø–’]£a&WLž‘_¡¿Œ=Ðû¦O* MLÀWâ.hŽ ^­Žô–ñÝ rFx“lH-!/ÄÊ“qDÇóhé°¸)oDª€iД£ÝŒýh2ÆD·P‰Ùwr¦ËrÑîç½½>å’ŠÉî®Ãi×{Ö—ý“{nd’H&5´¹%þ8+¯åšoin™u›[>¡šzÿg}0këA,õ ìs·õ¥`T\Y|LÒ„ÏG .㆗.…#¤ÝhÛ1k h …¬íÄ l4qfSÆpòÖ¬À|@NÍrM Ü•™q‹6¥ o©ÙNŠz1™ÎîŽr$Õ¼˜Á»ªK‚ñ–%¥šåÄiPˆ´“/¬y†£·t"+3y´‹ü‚•špJ.ïñg¸¨ñ‘”=©K>Ô9!ñZ ½[ÖaW²þ¼´XÃõLãü ™†º©Ê¥HÇ‘1M¡ ëŠLâᎳ·4œ×³²°ÊØ‚BB’}sª¤i¤µkê;5Ÿ+¨˜\[àüÃ͵ÖÊÖ˜Ø:ç,Ö²‚A§Éo R›5 ¿ª¡í²ÿ™ýCåXþzqtöé‰|cš­‚üÑ=t=y»zaåw>ëüvD{.eãu–0}Š…d ˜½A…ò.å²ÐÛÌ/ûhzч|•ä/Š”Y‹\mªïZ„£èäã‚gÅݾÞéª5˜|VŸµms ]:rŽž€r$³ ¢6ßOJ2­³Ü ›§–~9ç‰e3¹›«â[ÖûÇÍœ%#áv m#.ÇQRÄòÞ ÖO&ßI¿¾Íó¬Ün†öKšNÑÜrñDvìÈE9@€I„ÚöŠÕC÷¢³Hïý•E Y©ÃÈáM„ÉÌ™V ¦ÜÊèN*€’ÕW™C¿Ò­7¦ìšÒþ,t0L;±W²DY'd´ºÒO íl•2§Õ=%´Ì¿Ü„]S´J¬û@‘q¡÷ùý÷GÙ×z5"kV¥¯Z|ÅåNX$›dW{#UbP³ø¬®«Ù0»mªÇàxSåºÒÜTÜ[‘«Û7Žú/:†·‹j‚¾³3ý:±ZÂËD͸è- ¸ª#Ø$Ó§²xÓŒóØ"&³¢º-é0vÉÿ&ÿV– \ P€iw™¾ÖºÄ‚þÃå·Ôª§Ìgû¸u:Ã3T"£}˜(Ý­BàRœ±Ùw²‚ì‚Oמ–£ §¤–•ל»¸Y·p4]ëevs­°¦ã/k¥0=ÑZN«ÎÔ£Dÿ‚ÐýÙ-sWšI9Ï"å˜~ÇuUÍv‚qŽiœ-SÎ&O¬(ouº²âÉR¥ÓTÑ$kï2BcðùQrn‹ÛËŠK¹·[èRHCîÛ²T"ÑU´e"Ç÷µäfÑF@hnuFE5B5–½åÆÊq½äy³TF´1-T¡çΦ°¶Œðô©‘ÎãòÞìè< ýè° w7>QëK/ÓÀÝæq) jã˜-g3—_l jÑùïUy·Á9JÔðzG »±yvÕå*"lËÙ•ûý 43#·%èæ«—`ÞÙò2±òÕÜ×4{:çÆ`£¾hîî7á³ÚU}r&M½ò›ñzÐÍ*èòwâ]¬áŸÝ˜“|E•¡¯æ€rÉÐ:ÚmSF£+ªQC 1ê •(Y°Tu¶5}ïVöø»a·ç;h]:aì⊼ D²ÎZD[˜>¯ÒC¢¿£h7>mU%ü…lƒèP“"íAOg1!ñ=*Ù¦PQlt¢pšÐÒ1Ü(´·œ eÝPpt‡¨§J€+Ã-ªP•A‘Èp´}Æ•ÌU«UHšS«DÂe5åuÑLÙ¡ Í _€ùÓ9v!/’0‘=Ô>ô}¢0‚b”øÿ¨¨¶Ë,u!xJëNC¾¹NVòÜ›\N醆CüÍtlÔü ¥MÚµlêÙÖÍN ¨ºun6Sü™Ñß6U@ÖpÍ$¿aŸûò7;÷·Ç9<Ë©E=¤D 3€ËÌ“úèÒˆúÓÁ„5Iç S$hâ6a ·*g”CsLR¨h„x± ¿µ‰Sá4A•5Ýåð€íð&2Z}[4îŠNBÕÆÞÈ‚FveE¸OT¹¹¶Æ fíyoð¿éºXÓ‘êB0+¨ ‘!hÈLÕ æg©z®=ͤÒ—[~e㺶m\J¯JaÝ{ÃÊuw<‘Ñ›‡Ó9*~–q÷:ƒ‡÷_WòŸ8ƒÉCÔ…¢†¨@kجÔOM0ó€2v ,: ½gÅLæ2W~fjŒ…mÕ=pE÷áœ^„SŠÙvÏÝán=¦àûüR]ë_^m<ä j¨f¹ìK£îü|uéÒáRw_Th.ÙUd*êÓ¹0,¨Çq$'B0Î<µ]ËŒX呯sØ€=LZ=ráêë×3~]?éñ˜{ó’ßËGV3¢¶ƒÕ"–ÝlÕÒ2)Ú¶žTî³óI&¡%¦ñù´o²eg.¿0¹ÊüdÚœœ°Ñ"UâŠd•åà¿cÓ¡Ûeí¢ä‰—®Ìî­'½. ñAj˜?Ñ<ƒ«'(µék=˜íê.´‘Qšjˆø 7á¶ø+5€[¡hj§=]!füMȸœ©jÒ‚÷m…0ßj´jÁ u2yôäDÅR’]µÎêœsøTfj{a7´²ŠoÉº§-$£CÅJn¢5æ'#¡Ëü²BÈÈ v\X(šÔ°P¼µZ+‡º.¬³Üàõ¹ºMeTË81± i¶M­ìpI) ¯®oÞ^YÄ\œ·‹’…Û¶LaÃ]”l¢yþ"ê ÚtŽ u× Pbnæúkªµtt‰ÌÐŽ´Wtúji@™¨wvž¨*ˆfÂÁ„‚ÇËŒ:εÁúÁÏ?üuðOÄ•”+Ò$oÇUBŠT8ÈNÜsË´²p}ƒ¡B3(˜«ú¬¸fçñBB¸†–øCüÍ‘ Uá7ab¼:<&˜7àÅ>±èBÏóÕL9ˬBËuª{/õèܼK­Mäb¹aƒi-N“t nAf–¥˜$Žæ5L|uÛvC¹æÒþÀÁÀ´l7cнÅ[¸UÖ0HwS]V–¥?+îBôÞ ÅûëÑqD¸ÔˆM_®50FEGÁÞpÞ÷ÌÁø “½¯Î'jôû…9u;g¼¤‹05<Ž3úg{:ã0ýlc7Lƒ:¼i_LAù%Uÿ¬¸jظ@FüZ·A×ì,-ó@²ýE‘"z‰»¾Ä$Àïó’ÛM^´D8»| ê cO•Hó\^­Æ«:€/—œê»y06¨­ €tm¥2‘#Ô½I†PQ-I,[ùÿ‰&9ù ´RÂŽ¹Ž ‹ìõ(_©`§;E®hˆ @ˆÕþ×Õôš¾Àíñ\ƒS(Œ1èòbQòk¹Á‘´™ÖN S”{Žl^s0z¿×zºÞêNþýˆH˜¡èØ)G_4åwöò´#¨ù»&a´™ýtÕ Åâ:É?‘޵¥cðò€0EÂW`î2÷vQ5„­»›©Åŵ74=3D M­à8-Y[,^GüD@Pj˜C‘H*×6ŽŠ•»á#”3^É¢Áý íiñ¡nÓ›sEk}ãÙ{†„²ÊPg’vÌ@­ÆGØD+Ž"Û1Ñyž8P» µƒÄd†¡‡ú-iS ƒñÈ”ÍýƒßøÜC÷õ S8êÛ’5B3ʃàdlâÙÒ4 ĸïVm:’ŸÆ¹2~]3ÞnkïÊR-Ðb )–ùr'å>¼©¾­ƒÍŽÌkX/ ÆÄHxE û‰…SNNÑ ãìàäâ'žÿÞ({txðåü(¿øx”>;ýpvð)Ÿ;*ö]þþìè(?}Ÿ~<8ûp4ÀsgGx" Ùdyê”ÿ}ôç‹£“‹üóÑÙ§ñÅ…Œöö§üàógüàíñQ~|ðUvóèχGŸ/ò¯N²S ÿu,óA5ya|’=_ŒO>p@qÏÆ>^äOÙýýàäÝù:_D×€‹ñÑy&óøqü®»¨ƒs™öNþu|ññôËE˜<wpòSþïã“wƒühÌŽþüùìè\ÖŸÉØãO2ã#ùãøäðøË;ßÊ'§²O²2™çÅ)·ÆŸõÑe22~öéèLöïäâàíøx,ŸrøýøâD>A|ñÎüðËñ,âËÙçÓó#øo°…2ˆløÙøüßóƒóÌ6öO_Â@²»2Ƨƒ“CÔÆAb¹ùO§_ 5dÝÇïð@æ`£ŽòwGï/Æ?ÊñÊ“ò™ó/ŸŽl¿Ï/¸AÇÇùÉÑ¡Ì÷àì§üüèìÇñ!ö!;;ú|0–íFúì £œž(oy6Âá •ýørrŒÕžý鋬g %`ŒƒBmØÌäܳ¯cù8Nhóð|Eþÿ'!£ÓüÓÁO ÌþÉÈC¦Û]ª¢ˆÔyðö{ðVæ3æ´d"ØÑ»ƒOŽÎY ~ÚÀäƒüüóÑáÿ"Ò“³>Ö]‘[ô§/8Eù… ’Èqbi C;2ÜAÐÚ‰Óˆ|{ó^öâ·7ètq|zb“\䜱üóíž>;:‘ýâu:8<ür&W Oà ™Íù¹lãJ†õò6ÏÞù}â>çïÆÇ_Îîј|ùT¶C’ÖÂ8‘÷¤|ü^>uøÑN/ïÜÚŸòro䱃w?ŽÁyô;™Ü…ó±íÉ©`ûHÆÆäSYŸßàö|T˜Ô­Qõ°^PþË/Ã=eǤ\ 6É8Á:«Vüu‘â(“ü6Cé™°¼fþG»ÌÄQ7Ùª òGM;³¸a2À™@Ÿô LŒXÆl’j™ueÊÀ°`Rǹ™¤‚†`±»=#Î]²Ëea!§¨0oK¡¿hE¤â KÃŒÃÛ·þ0ñ}¡,®ÅX¼:.|Im$xݾ—k‹Y‰òÞššÁÆ„ð„ »Öº‘ŠGû©Ãïu`GëóªQ¸¨iŠC$ºÒ ³!×e“ ù‡ÚÄ@²»Z¿Ø†¾Ûã*‘_(˜¨ þÇê&SÿH„ä ^ŸY•žô»´K“¢Îy¿ ÙSVí7&‡)‚r¹î¹-Ó8"³ÛŽÞÐz+J1‘BÓÈý#Ç1ÆQz]”tÿ¾þ<Ú¾i(Ö̰ z–¶Ï®tɵ’ã(\D î`B.àß„ jQ"Ò)Š6†Ø”Ó²¹ÿ1}^–Vé4ÿ¥mÖtrfñÂÎjmép¬§tœÈÃ<" cƽ|{Vhý—T`¾¿™Ó?øOçóg’é"H1"p£)&´@Ó,¡-—€ª5õ\¤ù€hVv+¤~Ï\£O8{ô¬’BæøÝžUß”™fD?ÊsdN­¦Tt€®,I¥Çña.öwUí¾_ý~°qq›ó¼{—ï½>©o­ ¯hç§Ç¢{ÿ”êÍoHFùr½@YìÒÝî(^‹M~e…A9Ãw°±ì#X&Uð¹Aö&ýÜd7ÈH+7ëÌ;½b`Åb!ñ{ ³áÓî oÀ+þ…$õiëÔ,“Iýô¼ÿ—ev[ËÉÌàÝ·å|%VÞ¶Ã!89MévUi\7dü[‰-–Ð<$#óÜ”z-¯õ<ï=€‘ííÛ²éçšÉÝd- ø™F:æŠgG¨itÑ5pvbžŠëÕUšY!8m8õ( ¹´oCZh¶ÅOõºž®Ñ‡Oï8dâå:|HÑAq¼"el¸f—þoBç»1(×±Õ„Þ67œ `0m?¸Ôäcÿ³É?“o¬%"Q$Hý*¹XËU«ç? ò=ÑÕšjÆ:$PZôÔëh+ÏðúQ(Èüº°Ýàe±¸Qôp€~Òó¥o#Kò`CÉdkR^T DÛÔˆPƒÛXé,sÑdŽg~&ؾÊ*u&¢hÛ•~1ñ«·•âu¹Ü…¤LáÎA¢žÔ=…Îóg¶ÔºÈ¶×º¸ïÚ|¬¤ôÿAý'êÿÇõõ¯[ÿïéÞ˽yúúõÞËg¯Ÿïí½þ—§{{/^¾|¬ÿôë?*ܪ•äí_Õ DÍÜÞº\ŠIÎ>*ÂØO޾žk«Ï’,%C´“³žDW92Ñô¡Gñßÿþ['î_»þçóWO_ÿËÞS¹ÿÏ_ì=}ùBë¿=ÖÿüU~>Ÿѽz>¾8:¥¨[ë—šÉ.\%ãb#Ÿóà¥å½ëÉD k3fëlZkò"Ô‰P&ôÅèYÚñ#/ìiZ±sÞtÂXö­üëÏCeåü{%Ÿæòñ72îêgUýßž¿C\ÑÜUóAÖÖ³¢©,H·¾¾-3â¶¢£'¡B'ƒ6Y§6q–iyh8=Q´ãô³z³X‘Ù2û̶°,“„¬-Ô+G×£<-k%Ú¢Æk¤B…Ÿ×ó! è£û£ü]w¦š‡7ål‘eÆz5}X¨O±¤Úm€ÜYœtB;ÏÎÓpÅPÓ¸¦ØŠû(«:,‘¦XÛÅz(3 Ç·%2©Ä|~Ã&0‘vYM×ÌÌy»ú{.%z@>4ë :dm2?a5[VCŽÕbKÆd^ÀÇAtVû%Lˆf}.tõw¸XZÖ3„Užõª‘؇xy€pr°õ&7FŸ+ xÒz´SÙ郥»5òŸ¡×ÍÌšÖ< b·2Î"ô¢ú_•å a½Ùr4÷Õ’î'"7µt<´f¥ŽQ²ß7bœ^7õ¶Ü¶t£¹€\ùtZ¯0 ºД½Ê˜ÏË®Ž£ü£éÖ‡ÏØõôB~š—ü{™ù)òQó®`èbßiÖÎ`×ó¹ç õ&W£üí—çýd Óòru½ŸLÑ\H•ÿí“$¸ ” pVu…ÚO,ÈÏj=5½êxÒR‡;ÚÓ«û)õéŸË8§¤^ˆÜMoMô¥aD™xöå¤Ë„ù ¿ÑËÉtÚ]Î)ün7pFrÎ<žž^Ðé”ZU7¼hy¿›ºÖTçÀøÔtŽÝž…‹Ð5="çúÙvo@†·¿É ô™?þëÇÓOGÂ(XRÆ´®Ý”Ÿíz¹§M¶Ã7Ÿ\VóXèBñq&Nvf¬Rº1•ÊÃöZÈw³Ö²÷âz4õ'Âû¯*GDv’}:8jmøKÛrøþøàÃù‡c]«w‰:üüyûŽßÙïõ÷bEËÖÚyÁ?3ŠE§Ó|wÈ2“]왽»ÁîM ZpBáß°âK²Â²ÿú´úÿ*ÕèaýïÙËW¯žCÿ{þzïõ‹—{/¡ÿ½xöXÿ÷×™¶| ­ UC貤æj)*W)×–Œj©dÓ:XŠ™÷L³g{TÌ(·ÎM ³ÖöýÌž=:}϶÷Ë©° UGt låðâìxø®oèg¤í«j Œb&lDùHrÿЫío.b²ìéèÙïÃïÑ#FéT„Fêë°¯C•>t»1à"yѾÚB l¾–o¼·LÞkQpÒUzÍ™§2c*ˆ9ªýuÛü9e,±åžì·e(hKmìç0ÞN þé»P↹ewûd‘ÑßÊ5·Ú^îaUµ°¢>âÙlD+ÊK9öPîðÎ8{å!úéCÍæo> ¹4éÎI˜1#SPÄTÇe}-í_¥‚fB[õ´Y7 µ’l,% ºRÀ%3¬Tk‹‰?Ö— bB²$gwYÃ<Ð×xæT tÌñ“Sœ¾÷†3FßœZyÁ{ZÐËå ˆ‚%T‡Ë—zªj¼Ãp\3f»OnVóo Ìô…Üëi_'#v…¥Ø"ÏA»ØÅ™v7=ëì[lå·ˆH\›ÅwW4s’;6Ñ¥rÒ bí˜=´ÿ´2Z­¨ÃªARBr#¾W¤y¿;™Å[4CF\—Z wA|µQÒhÕ´Ô(¿‚߈²b3×ÖÓRésä ד' ÏQsEÕÎ+ƒtÊ·qºZ4z5в¸†Œ ß•ÐÛË–uóÂ8¯øŠÔ›fŒ xÏžÞ2ˆJj»B”åûrïéÓQ~. þ‘믮lÍŠã9›¯P÷Ç6m´…©ÍÊâ»AÄ9 Ý·þ¸1­|//WW^H2è’=3`5<»ÅÔC…q‡'üN¹zh¦ú/Ù]b Î~ç›6³»bÝS”»w>þðu|røQ9‰¦• w.³sü¼ºEikTì/øo©¹ÿÖ"µ¾6S·êr½ìn•ò¹æ¹²öåü ‡o{ß ùÂñ울“Ðl¦Ûô (lQL–Áe 7ý8WÝB¢W§åU!#dé°´­Úýi÷B5#VT7oÚÔ”@ ƒ,M®²ºÖ5”eO}LWMÅj‹¬:‰½Äiù(åD¸–Aø¥7]ݺŸ;\ù@ŸÔÚ0V½e5?=eÿ#Yœ;±Ôºñ/º£Á3tU--7u€ ùÙ4L°wøû½ý¸ìÇØg——@­ù‹Qû(x‚¦©Z*AV0‘ßGàý<_Në¦È!i^ù`=„½……_¬d•'׫u9ïSqz;‡„bæ}ÂÖ6NzýDp9,É=F ¹L-¹š^.|NÀµ—²3Í?úrSÙ±O‡P û»-QdÍë›EÝGÈ„f±Å7e;›šö¯[Éwʃ˜Ü;Æ^u‘CÃý~³\.öŸÀiê íFª +º.Górù¤?õ®ˆ•0D—t5ø5†‘¶²‹i†g×*oGÛØ‡yOðœ¸]í”OJŇ£ªIiü«lSµXi›–˜ £ªK#8¹ïÕm?Ìü&$í£´^ªM›hx¸Ï_ fü—ÀMP èά`?㌞¹(þV®QXÊû!—¬«Ñ`Þ ³Bÿõ*t[r«Þ¤=½C­±õ¿OM^uÂ=ÿÞph¯ !¢ºXF(vžŸ°ÆÆ÷¨r´Õß•nXBlß¼†Øa¥üÕ¼£¢tïÖ—Å´ÐJ"3(è^L÷Þ{¯.YJqôDÌôYÛ1–`ocVµr+ýßh©†hÜTg“÷€ÝÛ»Mûpë¾yܸ3N€45rl— T¸÷{tN6&òß|©FúZ~lÞé¶™÷D׌ZÄnØkªU‰ê†¦à´:ƒ¨ÿØ%6xv¦ê̵ê¸Fi1’Åùý.a@ŠÈwoÓ²YÛ j· ¿ˆ{­†``Ä1^o8ÆUJR–‡p°@åVþ…Uª錦H¢Õ½-¯)ÍRP^_¿BÖŸ—Ú±Q 胢j½{ÐDgâ6Šï…G,àÐZÑBœSxP*“¤Ãó?+u0¹ºŒvV|IÂïÌ#˜™E%œ4´” EŒËüäôxqÐø|—Uý4SÎROÈ/:þ³'²“'XTÓžLÂEò'aD„tSϑݑïÂæÙŽô;g—:•Þfï.W º„:EîdÆò\Úc7Hw”þ!îÎ.õí%švo#  0ºÛ`”ÓsU‰È,Esj!8|t|‰ü¸VOOK6­<@–i± û ºç£Ÿw[å¢àð“okÆT^Q8·X)Ic<¥*A;PÇYÄG¬“VV÷&Ð ã*\†3^ÙB±>²üžÏ\X¥Ù+~]É>µù™Û§;!|Í'èˆeÑL˜’Ãm$G9Ë{Ö1Æ2Ô\ùìG)æ†õo† M¢Â,eTÈ\À5òw½Åᣬ Šy”HuçãçG~t |R¬4£%Z†j€'ѹÎϬ™gë$''ytøñ4¿š׬j4ÇKz~ähÔ×ÕÏï,»ߨ L‘6Ñ ¿µ±3š¤ÁW×B”󳼟ÿ–?¾È·ìKC1‘ôpxu£¿MiÚ…ñ¹ý•Çd;ÄèdœznÚiý¾3×¢MÁ£ )šðÉ»ÁÚÉ«mñ£*u÷¶§"Gæ½ÁVt˲®eNÛ”¸‚´Æ­¶Z‘ßõ#whõh޾ʎVQ¸DàžÞ²ãè¾åi…ÏFML¾¦j—ê—ý<`æMÞ#ÿ]éâoL›T9â¡ÒÛK9kIˆtŠü¾Ý®¥$<êÿ«<†U•¾kwúAAï…s]N®Ë¥H‚¦×W°+qéaœä8¢Þ®˜–X,»¦ü ¥ëv&F€Òò kT`qS˜i®‡&ºÜö¢?u` z6ŠW^=º¦oa[ëyŸáÄmþÝ…ãôãƒ|ºÒV8y£u„-áQÉÒ_¯WÖSÁŸckÊPƒ»]Ï'7ÈJmÕì õçkâ&ñöÓ›%Jaã—ÕÔ‡Þ®j<€d|عk_2ä[MÀqk?ËOŠÍ‡×û-RZ<êš nDÏ‚;*Íkw1Ýfnî_­¹ƒçeÂ2Öèp.Kûé%hë‰ù˜j|]4‡ÝÈe­¯¬RC#ü±Ù´Ï7O©l#Hè‹ó‹Ïª2Zä½Ï ä0 åôíQ†¨HÂNÈ+0V´¤½âᱬ¢']&òæ Ðß4íf:Ã0kT>"d¯ÿáâàmðì]R°Á_]ÎWÃPw?zßöC¹‚Éz6Iʆˆ@¨ɽZ‘Í´¤ZH ϰmWJ{µ/¦BpR*±õ€·žB}7´T¶}_†ó3W8#Z®?%‚ãÓÓÕ‡¨ mœu;ºé"öìrû-O ‡hX™åÜQŽo®É¹tG@@|“Ö¡/‚ÏÆÌµ—oOvõ71̙ԧä}îÑ ¾\‡ †µS ¬àé0½_¶í4‹AãÀ ¥~2Õz¥ŽÏý4ß%¦œ=;øüEYëL¦õdå ÇúbߴшtZnóÀRÀ>0¸\5óPæ+ÐâÃé °õ)+¸~sOåéÜäÀÃI n & 'V%¤"PyN®.k½ªw–=Ä®ù=‰P.'£<ÖW†A&ûó|ŸÆ%oê(„…ÿâãã4“_'×+°Vxzñ² }_àÙ~~Þ´Pèÿª®äAUwR—@OáZ¢ÔŒùáwÕu%nþe^ýl£ííçcôÊßzõ“ÿ2ü÷Åé»Ó_ÿ-ÿþâ©çÿ={þôðßÏ_={Äÿ?8óý,;ÿxzv1ÞY`x0¯îˇsDöB®[[]B[±Ì`ïßúƒœ1×ËYòçoQk åÎ-43^ §¡KªA;>=ùgÖñ´k¿GáÃ<Ñ_ä+x9Y£2:ïဢsÅfZ]£NEd?ZK&¬õ¢ÊU¢4Cˆh›Á%V3}n} 6`ѧ«Eq¹êZ\]Â"6‹Â‚:YE„[©%ø™ÑOœ4mWd±oøÉóæþãýû¿·÷ìé ¿ÿ¯žjþÇó—¯ïÿ¯ñ`ÁLK[·Tÿ7 ͸ž9`䬓¨ÖMKXZ[t5ïlŠ|8}pÌ>aÙ;KëËî¥õY¬O2‰ˆï{†XÈi„­›ý6ÔtpZþmULTªß sÉÛE½DY› öE̪^@ôS_›v3VSÎ-^ËXÃlG];;}õÑzÙ9{.¥E”þ¾´bvE¥üNx@ղɺ[ÍhËÌ:!ThÕ<Ù™–\ö¸'”…ü:C[ÅÅÀ¤Ÿ¡R`e]kê¤o9ú¥2Áß¶¹&´û&GB´eå`²á7é<”c›qÄS§I|aÊñЧËu´ÝÜA«b“÷®ˆ,‘ÿ]ÏW£º¹~"ÿ|âÏ=é²ÔvÐrÙH5G%`~5j·ŠÝ Žéײ! 7E‰œ|mü76½£¤]TâÈ nI`Òg3FàÚr5­‡,"ºq? ›{W!:0…pª$Ý_8ï8+¯Z•шWàhöZFü¾zéÁŸë˜QŽdi(‡å’DÛ”4¡«À%³†˜ª/߉ù!ÊüEC°—œòn›m~s?ß©˜®}×j µÝ´°?¶gYõ'ëhgE‰<ùTtoE¡Áâp¸ÇuDÓ¬œÒFæÜ"ÆŸhã¦\JñÂÆa|;Óƒùm^òc±8®…<ØÖ•¯vÆWô7@FR½›æX/¢Ü‰@ņ8MCËV³uŸP…Í­Eÿa†Ë6}qÔÖ¿Ír‡ê´Ø=ëM ›¾¹QÞkËRK^Z&r«”E+zhÔ›×—à5Þœ¸]Í‘s‚jp#ÑFú;ع§s–â==Ïÿ,ä€þ \Úk¹9 R)¦ÈjÐ,a"MØ‚ÙýÇÌsmøÛ9ët I·ëÛËzfŽ‹{ÙÆÝåc¶ÙÓp ;VÏOŽ' ™“x>½^!œ×èe2¯×Ú¹¤ÐÄÂKöd6÷ï-𥰠‚Þ§¦¥úƒ‘ylÜ™X`_æá4ô 3ÄŽžú ×3Z2–ÖP~ÊæQÞF&ôi =ÆiT•Jò³<¤bÆÚ Lvtz˜O‡õãƒÎc<^Œž‡d&æÄoËýèÈ @,Öƒ ±Ð†~c±«…0­)7ïåè)äòÀëåÁJèöú6ƒÃ›V6[¼ú¶Y­æewO™}F1ë!)X¨$^ÔÜÑ,~Nà­^kž`ÁñÑH¶e”“Àd/³–j0Z&ÕÒçÁóMÏÈW|ôš[„(t!ýÂê3Dw Ñí0ýâB~ÈGò#×õLøÑt½oÛG^Ñj% ¯2çFþÅ‘Ô î×­×Ðs×Òh×óÉ(ÿTt›é‘÷ŠáÚƒ7 Í´[ŠÇD«Æ‡ÏÃð£P£/âew?2³,%Ä_D,jHÓR‰ záê…®é 3Xôr'@…U×=Ή[,£\»¤þq­Í¨¨.:®-‚€z‘`£ÛÄZͳ+a/€(G >±ƒ>¥* òÉŸ÷ƒè61ý®ÅvG¬¥º…eêúZÙ õe·Ö¼¹5©XÔYR’eŸ aõùaÑí䦊HP (ÁN*‡§-²s¬&Ë*NCŸÙ×<Úýü0ô;c®H$ìçŸc›Éi9¯Ê©Õ¿„ç×’‡6õ ~ñI¹œ<¹6|9HªaßÍ\¡Œ©W8x¹ºdàsTÖûC«¾ïü·ëjúÇ—˜#|ö4IžÎŸÊÿ²,‰^$#¥méUg( ;£Ú¥FiQwD·óOlÕ/IS^£Ђ"?Ú ñ‡˜ãƒÚà œîeàÁ4.CSe™  /™â(g™|5æã`}'‚k[çšJ#˜5cÄÕ™Í ãlZ•!JV*éZK!1¿ºúKŠIsºáP;—ÑKkMlB¬Götìà<µØ‘e«Œum$$¼iPËÓÿÚ¨Ôí™XÜ™g«4˜As•¦Ý“Áh§Z$à Üž[mRVF`oº•A,Ò´ÌJÒ/b N„ý@…^}·sãîU™PüÜ Ö×>9­xø+­nRKÎãB9z¡ÐªÏñþÜöQþ•Õ—À¥ˆ&¸,câÝ8­µ%Ï¿Šª£xœ}†¾˜.¦[E lSF|›W¿Ë…ú)A£åAt‘,x'¶gIÇ€ÜôÇÒ??????????????????ÿE?ÿš¯ð readline-8.0/examples/rl-fgets.c000644 000436 000024 00000025613 10042030201 016717 0ustar00chetstaff000000 000000 /* Date: Tue, 16 Mar 2004 19:38:40 -0800 From: Harold Levy Subject: fgets(stdin) --> readline() redirector To: chet@po.cwru.edu Hi Chet, Here is something you may find useful enough to include in the readline distribution. It is a shared library that redirects calls to fgets(stdin) to readline() via LD_PRELOAD, and it supports a custom prompt and list of command names. Many people have asked me for this file, so I thought I'd pass it your way in hope of just including it with readline to begin with. Best Regards, -Harold */ /****************************************************************************** ******************************************************************************* FILE NAME: fgets.c TARGET: libfgets.so AUTHOR: Harold Levy VERSION: 1.0 hlevy@synopsys.com ABSTRACT: Customize fgets() behavior via LD_PRELOAD in the following ways: -- If fgets(stdin) is called, redirect to GNU readline() to obtain command-line editing, file-name completion, history, etc. -- A list of commands for command-name completion can be configured by setting the environment-variable FGETS_COMMAND_FILE to a file containing the list of commands to be used. -- Command-line editing with readline() works best when the prompt string is known; you can set this with the FGETS_PROMPT environment variable. -- There special strings that libfgets will interpret as internal commands: _fgets_reset_ reset the command list _fgets_dump_ dump status _fgets_debug_ toggle debug messages HOW TO BUILD: Here are examples of how to build libfgets.so on various platforms; you will have to add -I and -L flags to configure access to the readline header and library files. (32-bit builds with gcc) AIX: gcc -fPIC fgets.c -shared -o libfgets.so -lc -ldl -lreadline -ltermcap HP-UX: gcc -fPIC fgets.c -shared -o libfgets.so -lc -ldld -lreadline Linux: gcc -fPIC fgets.c -shared -o libfgets.so -lc -ldl -lreadline SunOS: gcc -fPIC fgets.c -shared -o libfgets.so -lc -ldl -lgen -lreadline (64-bit builds without gcc) SunOS: SUNWspro/bin/cc -D_LARGEFILE64_SOURCE=1 -xtarget=ultra -xarch=v9 \ -KPIC fgets.c -Bdynamic -lc -ldl -lgen -ltermcap -lreadline HOW TO USE: Different operating systems have different levels of support for the LD_PRELOAD concept. The generic method for 32-bit platforms is to put libtermcap.so, libfgets.so, and libreadline.so (with absolute paths) in the LD_PRELOAD environment variable, and to put their parent directories in the LD_LIBRARY_PATH environment variable. Unfortunately there is no generic method for 64-bit platforms; e.g. for 64-bit SunOS, you would have to build both 32-bit and 64-bit libfgets and libreadline libraries, and use the LD_FLAGS_32 and LD_FLAGS_64 environment variables with preload and library_path configurations (a mix of 32-bit and 64-bit calls are made under 64-bit SunOS). EXAMPLE WRAPPER: Here is an example shell script wrapper around the program "foo" that uses fgets() for command-line input: #!/bin/csh #### replace this with the libtermcap.so directory: set dir1 = "/usr/lib" #### replace this with the libfgets.so directory: set dir2 = "/usr/fgets" #### replace this with the libreadline.so directory: set dir3 = "/usr/local/lib" set lib1 = "${dir1}/libtermcap.so" set lib2 = "${dir2}/libfgets.so" set lib3 = "${dir3}/libreadline.so" if ( "${?LD_PRELOAD}" ) then setenv LD_PRELOAD "${lib1}:${lib2}:${lib3}:${LD_PRELOAD}" else setenv LD_PRELOAD "${lib1}:${lib2}:${lib3}" endif if ( "${?LD_LIBRARY_PATH}" ) then setenv LD_LIBRARY_PATH "${dir1}:${dir2}:${dir3}:${LD_LIBRARY_PATH}" else setenv LD_LIBRARY_PATH "${dir1}:${dir2}:${dir3}" endif setenv FGETS_COMMAND_FILE "${dir2}/foo.commands" setenv FGETS_PROMPT "foo> " exec "foo" $* Copyright (C)©2003-2004 Harold Levy. This code links to the GNU readline library, and as such is bound by 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. The GNU General Public License is often shipped with GNU software, and is generally kept in a file called COPYING or LICENSE. If you do not have a copy of the license, write to the Free Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ******************************************************************************* ******************************************************************************/ #include #include #include #include #include #include #include /* for dynamically connecting to the native fgets() */ #if defined(RTLD_NEXT) #define REAL_LIBC RTLD_NEXT #else #define REAL_LIBC ((void *) -1L) #endif typedef char * ( * fgets_t ) ( char * s, int n, FILE * stream ) ; /* private data */ /* -- writeable data is stored in the shared library's data segment -- every process that uses the shared library gets a private memory copy of its entire data segment -- static data in the shared library is not copied to the application -- only read-only (i.e. 'const') data is stored in the shared library's text segment */ static char ** my_fgets_names = NULL ; static int my_fgets_number_of_names = 0 ; static int my_fgets_debug_flag = 0 ; /* invoked with _fgets_reset_ */ static void my_fgets_reset ( void ) { if ( my_fgets_names && (my_fgets_number_of_names > 0) ) { int i ; if ( my_fgets_debug_flag ) { printf ( "libfgets: removing command list\n" ) ; } for ( i = 0 ; i < my_fgets_number_of_names ; i ++ ) { if ( my_fgets_names[i] ) free ( my_fgets_names[i] ) ; } free ( my_fgets_names ) ; } my_fgets_names = NULL ; my_fgets_number_of_names = 0 ; } /* invoked with _fgets_dump_ */ static void my_fgets_dump ( void ) { char * s ; printf ( "\n" ) ; s = getenv ( "FGETS_PROMPT" ) ; printf ( "FGETS_PROMPT = %s\n", s ? s : "" ) ; s = getenv ( "FGETS_COMMAND_FILE" ) ; printf ( "FGETS_COMMAND_FILE = %s\n", s ? s : "" ) ; printf ( "debug flag = %d\n", my_fgets_debug_flag ) ; printf ( "#commands = %d\n", my_fgets_number_of_names ) ; if ( my_fgets_debug_flag ) { if ( my_fgets_names && (my_fgets_number_of_names > 0) ) { int i ; for ( i = 0 ; i < my_fgets_number_of_names ; i ++ ) { printf ( "%s\n", my_fgets_names[i] ) ; } } } printf ( "\n" ) ; } /* invoked with _fgets_debug_ */ static void my_fgets_debug_toggle ( void ) { my_fgets_debug_flag = my_fgets_debug_flag ? 0 : 1 ; if ( my_fgets_debug_flag ) { printf ( "libfgets: debug flag = %d\n", my_fgets_debug_flag ) ; } } /* read the command list if needed, return the i-th name */ static char * my_fgets_lookup ( int index ) { if ( (! my_fgets_names) || (! my_fgets_number_of_names) ) { char * fname ; FILE * fp ; fgets_t _fgets ; int i ; char buf1[256], buf2[256] ; fname = getenv ( "FGETS_COMMAND_FILE" ) ; if ( ! fname ) { if ( my_fgets_debug_flag ) { printf ( "libfgets: empty or unset FGETS_COMMAND_FILE\n" ) ; } return NULL ; } fp = fopen ( fname, "r" ) ; if ( ! fp ) { if ( my_fgets_debug_flag ) { printf ( "libfgets: cannot open '%s' for reading\n", fname ) ; } return NULL ; } _fgets = (fgets_t) dlsym ( REAL_LIBC, "fgets" ) ; if ( ! _fgets ) { fprintf ( stderr, "libfgets: failed to dynamically link to native fgets()\n" ) ; return NULL ; } for ( i = 0 ; _fgets(buf1,255,fp) ; i ++ ) ; if ( ! i ) { fclose(fp) ; return NULL ; } my_fgets_names = (char**) calloc ( i, sizeof(char*) ) ; rewind ( fp ) ; i = 0 ; while ( _fgets(buf1,255,fp) ) { buf1[255] = 0 ; if ( 1 == sscanf(buf1,"%s",buf2) ) { my_fgets_names[i] = strdup(buf2) ; i ++ ; } } fclose ( fp ) ; my_fgets_number_of_names = i ; if ( my_fgets_debug_flag ) { printf ( "libfgets: successfully read %d commands\n", i ) ; } } if ( index < my_fgets_number_of_names ) { return my_fgets_names[index] ; } else { return NULL ; } } /* generate a list of partial name matches for readline() */ static char * my_fgets_generator ( const char * text, int state ) { static int list_index, len ; char * name ; if ( ! state ) { list_index = 0 ; len = strlen ( text ) ; } while ( ( name = my_fgets_lookup(list_index) ) ) { list_index ++ ; if ( ! strncmp ( name, text, len ) ) { return ( strdup ( name ) ) ; } } return ( NULL ) ; } /* partial name completion callback for readline() */ static char ** my_fgets_completion ( const char * text, int start, int end ) { char ** matches ; matches = NULL ; if ( ! start ) { matches = rl_completion_matches ( text, my_fgets_generator ) ; } return ( matches ) ; } /* fgets() intercept */ char * fgets ( char * s, int n, FILE * stream ) { if ( ! s ) return NULL ; if ( stream == stdin ) { char * prompt ; char * my_fgets_line ; rl_already_prompted = 1 ; rl_attempted_completion_function = my_fgets_completion ; rl_catch_signals = 1 ; rl_catch_sigwinch = 1 ; rl_set_signals () ; prompt = getenv ( "FGETS_PROMPT" ) ; for ( my_fgets_line = 0 ; ! my_fgets_line ; my_fgets_line=readline(prompt) ) ; if ( ! strncmp(my_fgets_line, "_fgets_reset_", 13) ) { my_fgets_reset () ; free ( my_fgets_line ) ; strcpy ( s, "\n" ) ; return ( s ) ; } if ( ! strncmp(my_fgets_line, "_fgets_dump_", 12) ) { my_fgets_dump () ; free ( my_fgets_line ) ; strcpy ( s, "\n" ) ; return ( s ) ; } if ( ! strncmp(my_fgets_line, "_fgets_debug_", 13) ) { my_fgets_debug_toggle () ; free ( my_fgets_line ) ; strcpy ( s, "\n" ) ; return ( s ) ; } (void) strncpy ( s, my_fgets_line, n-1 ) ; (void) strcat ( s, "\n" ) ; if ( *my_fgets_line ) add_history ( my_fgets_line ) ; free ( my_fgets_line ) ; return ( s ) ; } else { static fgets_t _fgets ; _fgets = (fgets_t) dlsym ( REAL_LIBC, "fgets" ) ; if ( ! _fgets ) { fprintf ( stderr, "libfgets: failed to dynamically link to native fgets()\n" ) ; strcpy ( s, "\n" ) ; return ( s ) ; } return ( _fgets ( s, n, stream ) ) ; } } readline-8.0/examples/rlptytest.c000644 000436 000024 00000014736 12707670364 017310 0ustar00chetstaff000000 000000 /* * * Another test harness for the readline callback interface. * * Author: Bob Rossi */ #if defined (HAVE_CONFIG_H) #include #endif #include #include #include #include #include #include #include #if 1 /* LINUX */ #include #else #include #endif #ifdef READLINE_LIBRARY # include "readline.h" #else # include #endif /** * Master/Slave PTY used to keep readline off of stdin/stdout. */ static int masterfd = -1; static int slavefd; void sigint (s) int s; { tty_reset (STDIN_FILENO); close (masterfd); close (slavefd); printf ("\n"); exit (0); } void sigwinch (s) int s; { rl_resize_terminal (); } static int user_input() { int size; const int MAX = 1024; char *buf = (char *)malloc(MAX+1); size = read (STDIN_FILENO, buf, MAX); if (size == -1) return -1; size = write (masterfd, buf, size); if (size == -1) return -1; return 0; } static int readline_input() { const int MAX = 1024; char *buf = (char *)malloc(MAX+1); int size; size = read (masterfd, buf, MAX); if (size == -1) { free( buf ); buf = NULL; return -1; } buf[size] = 0; /* Display output from readline */ if ( size > 0 ) fprintf(stderr, "%s", buf); free( buf ); buf = NULL; return 0; } static void rlctx_send_user_command(char *line) { /* This happens when rl_callback_read_char gets EOF */ if ( line == NULL ) return; if (strcmp (line, "exit") == 0) { tty_reset (STDIN_FILENO); close (masterfd); close (slavefd); printf ("\n"); exit (0); } /* Don't add the enter command */ if ( line && *line != '\0' ) add_history(line); } static void custom_deprep_term_function () { } static int init_readline (int inputfd, int outputfd) { FILE *inputFILE, *outputFILE; inputFILE = fdopen (inputfd, "r"); if (!inputFILE) return -1; outputFILE = fdopen (outputfd, "w"); if (!outputFILE) return -1; rl_instream = inputFILE; rl_outstream = outputFILE; /* Tell readline what the prompt is if it needs to put it back */ rl_callback_handler_install("(rltest): ", rlctx_send_user_command); /* Set the terminal type to dumb so the output of readline can be * understood by tgdb */ if ( rl_reset_terminal("dumb") == -1 ) return -1; /* For some reason, readline can not deprep the terminal. * However, it doesn't matter because no other application is working on * the terminal besides readline */ rl_deprep_term_function = custom_deprep_term_function; using_history(); read_history(".history"); return 0; } static int main_loop(void) { fd_set rset; int max; max = (masterfd > STDIN_FILENO) ? masterfd : STDIN_FILENO; max = (max > slavefd) ? max : slavefd; for (;;) { /* Reset the fd_set, and watch for input from GDB or stdin */ FD_ZERO(&rset); FD_SET(STDIN_FILENO, &rset); FD_SET(slavefd, &rset); FD_SET(masterfd, &rset); /* Wait for input */ if (select(max + 1, &rset, NULL, NULL, NULL) == -1) { if (errno == EINTR) continue; else return -1; } /* Input received through the pty: Handle it * Wrote to masterfd, slave fd has that input, alert readline to read it. */ if (FD_ISSET(slavefd, &rset)) rl_callback_read_char(); /* Input received through the pty. * Readline read from slavefd, and it wrote to the masterfd. */ if (FD_ISSET(masterfd, &rset)) if ( readline_input() == -1 ) return -1; /* Input received: Handle it, write to masterfd (input to readline) */ if (FD_ISSET(STDIN_FILENO, &rset)) if ( user_input() == -1 ) return -1; } return 0; } /* The terminal attributes before calling tty_cbreak */ static struct termios save_termios; static struct winsize size; static enum { RESET, TCBREAK } ttystate = RESET; /* tty_cbreak: Sets terminal to cbreak mode. Also known as noncanonical mode. * 1. Signal handling is still turned on, so the user can still type those. * 2. echo is off * 3. Read in one char at a time. * * fd - The file descriptor of the terminal * * Returns: 0 on sucess, -1 on error */ int tty_cbreak(int fd){ struct termios buf; int ttysavefd = -1; if(tcgetattr(fd, &save_termios) < 0) return -1; buf = save_termios; buf.c_lflag &= ~(ECHO | ICANON); buf.c_iflag &= ~(ICRNL | INLCR); buf.c_cc[VMIN] = 1; buf.c_cc[VTIME] = 0; #if defined (VLNEXT) && defined (_POSIX_VDISABLE) buf.c_cc[VLNEXT] = _POSIX_VDISABLE; #endif #if defined (VDSUSP) && defined (_POSIX_VDISABLE) buf.c_cc[VDSUSP] = _POSIX_VDISABLE; #endif /* enable flow control; only stty start char can restart output */ #if 0 buf.c_iflag |= (IXON|IXOFF); #ifdef IXANY buf.c_iflag &= ~IXANY; #endif #endif /* disable flow control; let ^S and ^Q through to pty */ buf.c_iflag &= ~(IXON|IXOFF); #ifdef IXANY buf.c_iflag &= ~IXANY; #endif if(tcsetattr(fd, TCSAFLUSH, &buf) < 0) return -1; ttystate = TCBREAK; ttysavefd = fd; /* set size */ if(ioctl(fd, TIOCGWINSZ, (char *)&size) < 0) return -1; #ifdef DEBUG err_msg("%d rows and %d cols\n", size.ws_row, size.ws_col); #endif return (0); } int tty_off_xon_xoff (int fd) { struct termios buf; int ttysavefd = -1; if(tcgetattr(fd, &buf) < 0) return -1; buf.c_iflag &= ~(IXON|IXOFF); if(tcsetattr(fd, TCSAFLUSH, &buf) < 0) return -1; return 0; } /* tty_reset: Sets the terminal attributes back to their previous state. * PRE: tty_cbreak must have already been called. * * fd - The file descrioptor of the terminal to reset. * * Returns: 0 on success, -1 on error */ int tty_reset(int fd) { if(ttystate != TCBREAK) return (0); if(tcsetattr(fd, TCSAFLUSH, &save_termios) < 0) return (-1); ttystate = RESET; return 0; } int main() { int val; val = openpty (&masterfd, &slavefd, NULL, NULL, NULL); if (val == -1) return -1; val = tty_off_xon_xoff (masterfd); if (val == -1) return -1; signal (SIGWINCH, sigwinch); signal (SIGINT, sigint); val = init_readline (slavefd, slavefd); if (val == -1) return -1; val = tty_cbreak (STDIN_FILENO); if (val == -1) return -1; val = main_loop (); tty_reset (STDIN_FILENO); if (val == -1) return -1; return 0; } readline-8.0/examples/rlkeymaps.c000664 000436 000000 00000002465 13350231165 017221 0ustar00chetwheel000000 000000 #include #include #include #include #if defined (READLINE_LIBRARY) # include "readline.h" # include "history.h" #else # include # include #endif int main (int c, char **v) { Keymap nmap, emacsmap, newemacs; int r, errs; errs = 0; nmap = rl_make_keymap (); r = rl_set_keymap_name ("emacs", nmap); if (r >= 0) { fprintf (stderr, "rlkeymaps: error: able to rename `emacs' keymap\n"); errs++; } emacsmap = rl_get_keymap_by_name ("emacs"); r = rl_set_keymap_name ("newemacs", emacsmap); if (r >= 0) { fprintf (stderr, "rlkeymaps: error: able to set new name for emacs keymap\n"); errs++; } r = rl_set_keymap_name ("newemacs", nmap); if (r < 0) { fprintf (stderr, "rlkeymaps: error: newemacs: could not set keymap name\n"); errs++; } newemacs = rl_copy_keymap (emacsmap); r = rl_set_keymap_name ("newemacs", newemacs); if (r < 0) { fprintf (stderr, "rlkeymaps: error: newemacs: could not set `newemacs' keymap to new map\n"); errs++; } r = rl_set_keymap_name ("emacscopy", newemacs); if (r < 0) { fprintf (stderr, "rlkeymaps: error: emacscopy: could not rename created keymap\n"); errs++; } exit (errs); } readline-8.0/examples/rl-callbacktest.c000664 000436 000024 00000004770 12707672653 020307 0ustar00chetstaff000000 000000 /* Standard include files. stdio.h is required. */ #include #include #include #include /* Used for select(2) */ #include #include #include #include #include /* Standard readline include files. */ #if defined (READLINE_LIBRARY) # include "readline.h" # include "history.h" #else # include # include #endif extern int errno; static void cb_linehandler (char *); static void signandler (int); int running, sigwinch_received; const char *prompt = "rltest$ "; /* Handle SIGWINCH and window size changes when readline is not active and reading a character. */ static void sighandler (int sig) { sigwinch_received = 1; } /* Callback function called for each line when accept-line executed, EOF seen, or EOF character read. This sets a flag and returns; it could also call exit(3). */ static void cb_linehandler (char *line) { /* Can use ^D (stty eof) or `exit' to exit. */ if (line == NULL || strcmp (line, "exit") == 0) { if (line == 0) printf ("\n"); printf ("exit\n"); /* This function needs to be called to reset the terminal settings, and calling it from the line handler keeps one extra prompt from being displayed. */ rl_callback_handler_remove (); running = 0; } else { if (*line) add_history (line); printf ("input line: %s\n", line); free (line); } } int main (int c, char **v) { fd_set fds; int r; setlocale (LC_ALL, ""); /* Handle SIGWINCH */ signal (SIGWINCH, sighandler); /* Install the line handler. */ rl_callback_handler_install (prompt, cb_linehandler); /* Enter a simple event loop. This waits until something is available to read on readline's input stream (defaults to standard input) and calls the builtin character read callback to read it. It does not have to modify the user's terminal settings. */ running = 1; while (running) { FD_ZERO (&fds); FD_SET (fileno (rl_instream), &fds); r = select (FD_SETSIZE, &fds, NULL, NULL, NULL); if (r < 0 && errno != EINTR) { perror ("rltest: select"); rl_callback_handler_remove (); break; } if (sigwinch_received) { rl_resize_terminal (); sigwinch_received = 0; } if (r < 0) continue; if (FD_ISSET (fileno (rl_instream), &fds)) rl_callback_read_char (); } printf ("rltest: Event loop has exited\n"); return 0; } readline-8.0/examples/rlbasic.c000664 000436 000024 00000000713 12560672062 016637 0ustar00chetstaff000000 000000 #include #include #include #include #if defined (READLINE_LIBRARY) # include "readline.h" # include "history.h" #else # include # include #endif int main (int c, char **v) { char *input; for (;;) { input = readline ((char *)NULL); if (input == 0) break; printf ("%s\n", input); if (strcmp (input, "exit") == 0) break; free (input); } exit (0); } readline-8.0/examples/readlinebuf.h000644 000436 000000 00000006555 11053014510 017470 0ustar00chetwheel000000 000000 /******************************************************************************* * $Revision: 1.2 $ * $Date: 2001/09/11 06:19:36 $ * $Author: vyzo $ * * Contents: A streambuf which uses the GNU readline library for line I/O * (c) 2001 by Dimitris Vyzovitis [vyzo@media.mit.edu] * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program; if not, write to the Free * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * ******************************************************************************/ #ifndef _READLINEBUF_H_ #define _READLINEBUF_H_ #include #include #include #include #include #include #include #if (defined __GNUC__) && (__GNUC__ < 3) #include #else #include using std::streamsize; using std::streambuf; #endif class readlinebuf : public streambuf { public: #if (defined __GNUC__) && (__GNUC__ < 3) typedef char char_type; typedef int int_type; typedef streampos pos_type; typedef streamoff off_type; #endif static const int_type eof = EOF; // this is -1 static const int_type not_eof = 0; private: const char* prompt_; bool history_; char* line_; int low_; int high_; protected: virtual int_type showmanyc() const { return high_ - low_; } virtual streamsize xsgetn( char_type* buf, streamsize n ) { int rd = n > (high_ - low_)? (high_ - low_) : n; memcpy( buf, line_, rd ); low_ += rd; if ( rd < n ) { low_ = high_ = 0; free( line_ ); // free( NULL ) is a noop line_ = readline( prompt_ ); if ( line_ ) { high_ = strlen( line_ ); if ( history_ && high_ ) add_history( line_ ); rd += xsgetn( buf + rd, n - rd ); } } return rd; } virtual int_type underflow() { if ( high_ == low_ ) { low_ = high_ = 0; free( line_ ); // free( NULL ) is a noop line_ = readline( prompt_ ); if ( line_ ) { high_ = strlen( line_ ); if ( history_ && high_ ) add_history( line_ ); } } if ( low_ < high_ ) return line_[low_]; else return eof; } virtual int_type uflow() { int_type c = underflow(); if ( c != eof ) ++low_; return c; } virtual int_type pbackfail( int_type c = eof ) { if ( low_ > 0 ) --low_; else if ( c != eof ) { if ( high_ > 0 ) { char* nl = (char*)realloc( line_, high_ + 1 ); if ( nl ) { line_ = (char*)memcpy( nl + 1, line_, high_ ); high_ += 1; line_[0] = char( c ); } else return eof; } else { assert( !line_ ); line_ = (char*)malloc( sizeof( char ) ); *line_ = char( c ); high_ = 1; } } else return eof; return not_eof; } public: readlinebuf( const char* prompt = NULL, bool history = true ) : prompt_( prompt ), history_( history ), line_( NULL ), low_( 0 ), high_( 0 ) { setbuf( 0, 0 ); } }; #endif readline-8.0/examples/Inputrc000664 000436 000024 00000004472 11130207321 016411 0ustar00chetstaff000000 000000 # My ~/.inputrc file is in -*- text -*- for easy editing with Emacs. # # Notice the various bindings which are conditionalized depending # on which program is running, or what terminal is active. # # Copyright (C) 1989-2009 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # In all programs, all terminals, make sure this is bound. "\C-x\C-r": re-read-init-file # Hp terminals (and some others) have ugly default behaviour for C-h. "\C-h": backward-delete-char "\e\C-h": backward-kill-word "\C-xd": dump-functions # In xterm windows, make the arrow keys do the right thing. $if TERM=xterm "\e[A": previous-history "\e[B": next-history "\e[C": forward-char "\e[D": backward-char # alternate arrow key prefix "\eOA": previous-history "\eOB": next-history "\eOC": forward-char "\eOD": backward-char # Under Xterm in Bash, we bind local Function keys to do something useful. $if Bash "\e[11~": "Function Key 1" "\e[12~": "Function Key 2" "\e[13~": "Function Key 3" "\e[14~": "Function Key 4" "\e[15~": "Function Key 5" # I know the following escape sequence numbers are 1 greater than # the function key. Don't ask me why, I didn't design the xterm terminal. "\e[17~": "Function Key 6" "\e[18~": "Function Key 7" "\e[19~": "Function Key 8" "\e[20~": "Function Key 9" "\e[21~": "Function Key 10" $endif $endif # For Bash, all terminals, add some Bash specific hacks. $if Bash "\C-xv": show-bash-version "\C-x\C-e": shell-expand-line # Here is one for editing my path. "\C-xp": "$PATH\C-x\C-e\C-e\"\C-aPATH=\":\C-b" # Make C-x r read my mail in emacs. # "\C-xr": "emacs -f rmail\C-j" $endif # For FTP, different hacks: $if Ftp "\C-xg": "get \M-?" "\C-xt": "put \M-?" "\M-.": yank-last-arg $endif " ": self-insert readline-8.0/examples/hist_erasedups.c000644 000436 000000 00000005255 13300557554 020242 0ustar00chetwheel000000 000000 /* hist_erasedups -- remove all duplicate entries from history file */ /* Copyright (C) 2011 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #ifndef READLINE_LIBRARY #define READLINE_LIBRARY 1 #endif #include #include #include #ifdef READLINE_LIBRARY # include "history.h" #else # include #endif #include #define STREQ(a, b) ((a)[0] == (b)[0] && strcmp(a, b) == 0) #define STREQN(a, b, n) ((n == 0) ? (1) \ : ((a)[0] == (b)[0] && strncmp(a, b, n) == 0)) int hist_erasedups (void); static void usage() { fprintf (stderr, "hist_erasedups: usage: hist_erasedups [-t] [filename]\n"); exit (2); } int main (argc, argv) int argc; char **argv; { char *fn; int r; while ((r = getopt (argc, argv, "t")) != -1) { switch (r) { case 't': history_write_timestamps = 1; break; default: usage (); } } argv += optind; argc -= optind; fn = argc ? argv[0] : getenv ("HISTFILE"); if (fn == 0) { fprintf (stderr, "hist_erasedups: no history file\n"); usage (); } if ((r = read_history (fn)) != 0) { fprintf (stderr, "hist_erasedups: read_history: %s: %s\n", fn, strerror (r)); exit (1); } hist_erasedups (); if ((r = write_history (fn)) != 0) { fprintf (stderr, "hist_erasedups: write_history: %s: %s\n", fn, strerror (r)); exit (1); } exit (0); } int hist_erasedups () { int r, n; HIST_ENTRY *h, *temp; using_history (); while (h = previous_history ()) { r = where_history (); for (n = 0; n < r; n++) { temp = history_get (n+history_base); if (STREQ (h->line, temp->line)) { remove_history (n); r--; /* have to get one fewer now */ n--; /* compensate for above increment */ history_offset--; /* moving backwards in history list */ } } } using_history (); return r; } readline-8.0/examples/Makefile.in000664 000436 000000 00000013153 13350221642 017106 0ustar00chetwheel000000 000000 # # This is the Makefile for the readline examples subdirectory. # # Copyright (C) 1994,2008,2009 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . RL_LIBRARY_VERSION = @LIBVERSION@ SHELL = @MAKE_SHELL@ RM = rm -f prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ bindir = @bindir@ srcdir = @srcdir@ datadir = @datadir@ VPATH = @srcdir@ top_srcdir = @top_srcdir@ #BUILD_DIR = . BUILD_DIR = @BUILD_DIR@ installdir = $(datadir)/readline INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ EXEEXT = @EXEEXT@ OBJEXT = @OBJEXT@ # Support an alternate destination root directory for package building DESTDIR = DEFS = @DEFS@ CC = @CC@ CFLAGS = @CFLAGS@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DREADLINE_LIBRARY -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"' CPPFLAGS = @CPPFLAGS@ INCLUDES = -I$(srcdir) -I$(top_srcdir) -I.. CCFLAGS = $(ASAN_CFLAGS) $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) $(CPPFLAGS) \ $(CFLAGS) LDFLAGS = -g -L.. @LDFLAGS@ $(ASAN_LDFLAGS) ASAN_XCFLAGS = -fsanitize=address -fno-omit-frame-pointer ASAN_XLDFLAGS = -fsanitize=address READLINE_LIB = ../libreadline.a HISTORY_LIB = ../libhistory.a TERMCAP_LIB = @TERMCAP_LIB@ .c.o: ${RM} $@ $(CC) $(CCFLAGS) -c $< SOURCES = excallback.c fileman.c histexamp.c manexamp.c rl-fgets.c rl.c \ rlbasic.c rlcat.c rlevent.c rlptytest.c rltest.c rlversion.c \ rltest2.c rl-callbacktest.c hist_erasedups.c hist_purgecmd.c \ rlkeymaps.c EXECUTABLES = fileman$(EXEEXT) rltest$(EXEEXT) rl$(EXEEXT) rlcat$(EXEEXT) \ rlevent$(EXEEXT) rlversion$(EXEEXT) histexamp$(EXEEXT) \ rl-callbacktest$(EXEEXT) rlbasic$(EXEEXT) \ hist_erasedups$(EXEEXT) hist_purgecmd$(EXEEXT) \ rlkeymaps$(EXEEXT) OBJECTS = fileman.o rltest.o rl.o rlevent.o rlcat.o rlversion.o histexamp.o \ rltest2.o rl-callbacktest.o rlbasic.o hist_erasedups.o hist_purgecmd.o \ rlkeymaps.o OTHEREXE = rlptytest$(EXEEXT) OTHEROBJ = rlptytest.o all: $(EXECUTABLES) everything: all asan: ${MAKE} ${MFLAGS} ASAN_CFLAGS='${ASAN_XCFLAGS}' ASAN_LDFLAGS='${ASAN_XLDFLAGS}' all check: rlversion$(EXEEXT) @echo Readline version: `rlversion$(EXEEXT)` installdirs: -$(SHELL) $(top_srcdir)/support/mkdirs $(DESTDIR)$(installdir) install: installdirs @for f in $(SOURCES); do \ $(RM) $(DESTDIR)$(installdir)/$$f ; \ $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(installdir) ; \ done uninstall: @for f in $(SOURCES); do \ $(RM) $(DESTDIR)$(installdir)/$$f ; \ done -rmdir $(DESTDIR)$(installdir) rl$(EXEEXT): rl.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rl.o $(READLINE_LIB) $(TERMCAP_LIB) rlbasic$(EXEEXT): rlbasic.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rlbasic.o $(READLINE_LIB) $(TERMCAP_LIB) rlcat$(EXEEXT): rlcat.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rlcat.o $(READLINE_LIB) $(TERMCAP_LIB) rlevent$(EXEEXT): rlevent.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rlevent.o $(READLINE_LIB) $(TERMCAP_LIB) rlkeymaps$(EXEEXT): rlkeymaps.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rlkeymaps.o $(READLINE_LIB) $(TERMCAP_LIB) fileman$(EXEEXT): fileman.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ fileman.o $(READLINE_LIB) $(TERMCAP_LIB) rltest$(EXEEXT): rltest.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rltest.o $(READLINE_LIB) $(TERMCAP_LIB) rltest2$(EXEEXT): rltest2.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rltest2.o $(READLINE_LIB) $(TERMCAP_LIB) rl-callbacktest$(EXEEXT): rl-callbacktest.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rl-callbacktest.o $(READLINE_LIB) $(TERMCAP_LIB) rlptytest$(EXEEXT): rlptytest.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rlptytest.o $(READLINE_LIB) $(TERMCAP_LIB) $(LIBUTIL) rlversion$(EXEEXT): rlversion.o $(READLINE_LIB) $(CC) $(LDFLAGS) -o $@ rlversion.o $(READLINE_LIB) $(TERMCAP_LIB) histexamp$(EXEEXT): histexamp.o $(HISTORY_LIB) $(CC) $(LDFLAGS) -o $@ histexamp.o -lhistory $(TERMCAP_LIB) hist_erasedups$(EXEEXT): hist_erasedups.o $(HISTORY_LIB) $(CC) $(LDFLAGS) -o $@ hist_erasedups.o -lhistory $(TERMCAP_LIB) hist_purgecmd$(EXEEXT): hist_purgecmd.o $(HISTORY_LIB) $(CC) $(LDFLAGS) -o $@ hist_purgecmd.o -lhistory $(TERMCAP_LIB) clean mostlyclean: $(RM) $(OBJECTS) $(OTHEROBJ) $(RM) $(EXECUTABLES) $(OTHEREXE) *.exe distclean maintainer-clean: clean $(RM) Makefile fileman.o: fileman.c rltest.o: rltest.c rltest2.o: rltest2.c rl.o: rl.c rlversion.o: rlversion.c histexamp.o: histexamp.c hist_erasedups.o: hist_erasedups.c hist_purgecmd.o: hist_purgecmd.c rlbasic.o: rlbasic.c rlkeymaps.o: rlkeymaps.c rlcat.o: rlcat.c rlptytest.o: rlptytest.c rl-callbacktest.o: rl-callbacktest.c fileman.o: $(top_srcdir)/readline.h rltest.o: $(top_srcdir)/readline.h rltest2.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h rl.o: $(top_srcdir)/readline.h rlversion.o: $(top_srcdir)/readline.h histexamp.o: $(top_srcdir)/history.h hist_erasedups.o: $(top_srcdir)/history.h hist_purgecmd.o: $(top_srcdir)/history.h rlbasic.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h rlcat.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h rlptytest.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h rl-callbacktest.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h readline-8.0/examples/rltest.c000664 000436 000000 00000004146 13300560005 016516 0ustar00chetwheel000000 000000 /* **************************************************************** */ /* */ /* Testing Readline */ /* */ /* **************************************************************** */ /* Copyright (C) 1987-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if defined (HAVE_CONFIG_H) #include #endif #include #include #ifdef HAVE_STDLIB_H # include #else extern void exit(); #endif #ifdef READLINE_LIBRARY # include "readline.h" # include "history.h" #else # include # include #endif extern HIST_ENTRY **history_list (); int main () { char *temp, *prompt; int done; temp = (char *)NULL; prompt = "readline$ "; done = 0; while (!done) { temp = readline (prompt); /* Test for EOF. */ if (!temp) exit (1); /* If there is anything on the line, print it and remember it. */ if (*temp) { fprintf (stderr, "%s\r\n", temp); add_history (temp); } /* Check for `command' that we handle. */ if (strcmp (temp, "quit") == 0) done = 1; if (strcmp (temp, "list") == 0) { HIST_ENTRY **list; register int i; list = history_list (); if (list) { for (i = 0; list[i]; i++) fprintf (stderr, "%d: %s\r\n", i, list[i]->line); } } free (temp); } exit (0); } readline-8.0/examples/autoconf/000775 000436 000000 00000000000 13413164026 016656 5ustar00chetwheel000000 000000 readline-8.0/examples/manexamp.c000664 000436 000024 00000006344 11130207321 017014 0ustar00chetstaff000000 000000 /* manexamp.c -- The examples which appear in the documentation are here. */ /* Copyright (C) 1987-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #include #include /* **************************************************************** */ /* */ /* How to Emulate gets () */ /* */ /* **************************************************************** */ /* 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); } /* **************************************************************** */ /* */ /* Writing a Function to be Called by Readline. */ /* */ /* **************************************************************** */ /* Invert the case of the COUNT following characters. */ invert_case_line (count, key) int count, key; { register int start, end; start = rl_point; 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 = -1; if (start > end) { int temp = start; start = end; end = temp; } if (start == end) return; /* Tell readline that we are modifying the line, so save the undo information. */ rl_modifying (start, end); for (; start != end; start += direction) { if (_rl_uppercase_p (rl_line_buffer[start])) rl_line_buffer[start] = _rl_to_lower (rl_line_buffer[start]); else if (_rl_lowercase_p (rl_line_buffer[start])) rl_line_buffer[start] = _rl_to_upper (rl_line_buffer[start]); } /* Move point to on top of the last character changed. */ rl_point = end - direction; } readline-8.0/examples/rlfe/000775 000436 000000 00000000000 13413164026 015770 5ustar00chetwheel000000 000000 readline-8.0/examples/rlversion.c000664 000436 000024 00000002413 12560672072 017243 0ustar00chetstaff000000 000000 /* * rlversion -- print out readline's version number */ /* Copyright (C) 1987-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if defined (HAVE_CONFIG_H) # include #endif #include #include #include "posixstat.h" #ifdef HAVE_STDLIB_H # include #else extern void exit(); #endif #ifdef READLINE_LIBRARY # include "readline.h" #else # include #endif int main() { printf ("%s\n", rl_library_version ? rl_library_version : "unknown"); exit (0); } readline-8.0/examples/rl.c000664 000436 000024 00000006177 12560672153 015650 0ustar00chetstaff000000 000000 /* * rl - command-line interface to read a line from the standard input * (or another fd) using readline. * * usage: rl [-p prompt] [-u unit] [-d default] [-n nchars] */ /* Copyright (C) 1987-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if defined (HAVE_CONFIG_H) # include #endif #include #include #include #ifdef HAVE_STDLIB_H # include #else extern void exit(); #endif #if defined (READLINE_LIBRARY) # include "posixstat.h" # include "readline.h" # include "history.h" #else # include # include # include #endif extern int optind; extern char *optarg; #if !defined (strchr) && !defined (__STDC__) extern char *strrchr(); #endif static char *progname; static char *deftext; static int set_deftext () { if (deftext) { rl_insert_text (deftext); deftext = (char *)NULL; rl_startup_hook = (rl_hook_func_t *)NULL; } return 0; } static void usage() { fprintf (stderr, "%s: usage: %s [-p prompt] [-u unit] [-d default] [-n nchars]\n", progname, progname); } int main (argc, argv) int argc; char **argv; { char *temp, *prompt; struct stat sb; int opt, fd, nch; FILE *ifp; progname = strrchr(argv[0], '/'); if (progname == 0) progname = argv[0]; else progname++; /* defaults */ prompt = "readline$ "; fd = nch = 0; deftext = (char *)0; while ((opt = getopt(argc, argv, "p:u:d:n:")) != EOF) { switch (opt) { case 'p': prompt = optarg; break; case 'u': fd = atoi(optarg); if (fd < 0) { fprintf (stderr, "%s: bad file descriptor `%s'\n", progname, optarg); exit (2); } break; case 'd': deftext = optarg; break; case 'n': nch = atoi(optarg); if (nch < 0) { fprintf (stderr, "%s: bad value for -n: `%s'\n", progname, optarg); exit (2); } break; default: usage (); exit (2); } } if (fd != 0) { if (fstat (fd, &sb) < 0) { fprintf (stderr, "%s: %d: bad file descriptor\n", progname, fd); exit (1); } ifp = fdopen (fd, "r"); rl_instream = ifp; } if (deftext && *deftext) rl_startup_hook = set_deftext; if (nch > 0) rl_num_chars_to_read = nch; temp = readline (prompt); /* Test for EOF. */ if (temp == 0) exit (1); printf ("%s\n", temp); exit (0); } readline-8.0/examples/hist_purgecmd.c000644 000436 000000 00000006450 13300557370 020047 0ustar00chetwheel000000 000000 /* hist_purgecmd -- remove all instances of command or pattern from history file */ /* Copyright (C) 2011 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #ifndef READLINE_LIBRARY #define READLINE_LIBRARY 1 #endif #include #include #include #include #ifdef READLINE_LIBRARY # include "history.h" #else # include #endif #include #define STREQ(a, b) ((a)[0] == (b)[0] && strcmp(a, b) == 0) #define STREQN(a, b, n) ((n == 0) ? (1) \ : ((a)[0] == (b)[0] && strncmp(a, b, n) == 0)) #define PURGE_REGEXP 0x01 int hist_purgecmd (char *, int); static void usage() { fprintf (stderr, "hist_purgecmd: usage: hist_purgecmd [-r] [-t] [-f filename] command-spec\n"); exit (2); } int main (argc, argv) int argc; char **argv; { char *fn; int r, flags; flags = 0; fn = 0; while ((r = getopt (argc, argv, "f:rt")) != -1) { switch (r) { case 'f': fn = optarg; break; case 'r': flags |= PURGE_REGEXP; break; case 't': history_write_timestamps = 1; break; default: usage (); } } argv += optind; argc -= optind; if (fn == 0) fn = getenv ("HISTFILE"); if (fn == 0) { fprintf (stderr, "hist_purgecmd: no history file\n"); usage (); } if ((r = read_history (fn)) != 0) { fprintf (stderr, "hist_purgecmd: read_history: %s: %s\n", fn, strerror (r)); exit (1); } for (r = 0; r < argc; r++) hist_purgecmd (argv[r], flags); if ((r = write_history (fn)) != 0) { fprintf (stderr, "hist_purgecmd: write_history: %s: %s\n", fn, strerror (r)); exit (1); } exit (0); } int hist_purgecmd (cmd, flags) char *cmd; int flags; { int r, n, rflags; HIST_ENTRY *temp; regex_t regex = { 0 }; if (flags & PURGE_REGEXP) { rflags = REG_EXTENDED|REG_NOSUB; if (regcomp (®ex, cmd, rflags)) { fprintf (stderr, "hist_purgecmd: %s: invalid regular expression\n", cmd); return -1; } } r = 0; using_history (); r = where_history (); for (n = 0; n < r; n++) { temp = history_get (n+history_base); if (((flags & PURGE_REGEXP) && (regexec (®ex, temp->line, 0, 0, 0) == 0)) || ((flags & PURGE_REGEXP) == 0 && STREQ (temp->line, cmd))) { remove_history (n); r--; /* have to get one fewer now */ n--; /* compensate for above increment */ history_offset--; /* moving backwards in history list */ } } using_history (); if (flags & PURGE_REGEXP) regfree (®ex); return r; } readline-8.0/examples/rlevent.c000664 000436 000000 00000006501 13300557761 016674 0ustar00chetwheel000000 000000 /* * rl - command-line interface to read a line from the standard input * (or another fd) using readline. * * usage: rl [-p prompt] [-u unit] [-d default] [-n nchars] */ /* Copyright (C) 1987-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #if defined (HAVE_CONFIG_H) # include #endif #ifdef HAVE_UNISTD_H # include #else extern int getopt(); extern int sleep(); #endif #include #include #ifdef HAVE_STDLIB_H # include #else extern void exit(); #endif #if defined (READLINE_LIBRARY) # include "posixstat.h" # include "readline.h" # include "history.h" #else # include # include # include #endif extern int optind; extern char *optarg; #if !defined (strchr) && !defined (__STDC__) extern char *strrchr(); #endif static char *progname; static char *deftext; static int event_hook () { fprintf (stderr, "ding!\n"); sleep (1); return 0; } static int set_deftext () { if (deftext) { rl_insert_text (deftext); deftext = (char *)NULL; rl_startup_hook = (rl_hook_func_t *)NULL; } return 0; } static void usage() { fprintf (stderr, "%s: usage: %s [-p prompt] [-u unit] [-d default] [-n nchars]\n", progname, progname); } int main (argc, argv) int argc; char **argv; { char *temp, *prompt; struct stat sb; int opt, fd, nch; FILE *ifp; progname = strrchr(argv[0], '/'); if (progname == 0) progname = argv[0]; else progname++; /* defaults */ prompt = "readline$ "; fd = nch = 0; deftext = (char *)0; while ((opt = getopt(argc, argv, "p:u:d:n:")) != EOF) { switch (opt) { case 'p': prompt = optarg; break; case 'u': fd = atoi(optarg); if (fd < 0) { fprintf (stderr, "%s: bad file descriptor `%s'\n", progname, optarg); exit (2); } break; case 'd': deftext = optarg; break; case 'n': nch = atoi(optarg); if (nch < 0) { fprintf (stderr, "%s: bad value for -n: `%s'\n", progname, optarg); exit (2); } break; default: usage (); exit (2); } } if (fd != 0) { if (fstat (fd, &sb) < 0) { fprintf (stderr, "%s: %d: bad file descriptor\n", progname, fd); exit (1); } ifp = fdopen (fd, "r"); rl_instream = ifp; } if (deftext && *deftext) rl_startup_hook = set_deftext; if (nch > 0) rl_num_chars_to_read = nch; rl_event_hook = event_hook; temp = readline (prompt); /* Test for EOF. */ if (temp == 0) exit (1); printf ("%s\n", temp); exit (0); } readline-8.0/examples/fileman.c000664 000436 000024 00000026564 12560672553 016654 0ustar00chetstaff000000 000000 /* fileman.c - file manager example for readline library. */ /* Copyright (C) 1987-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ /* 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #ifdef HAVE_SYS_FILE_H # include #endif #include #ifdef HAVE_UNISTD_H # include #endif #include #include #include #if defined (HAVE_STRING_H) # include #else /* !HAVE_STRING_H */ # include #endif /* !HAVE_STRING_H */ #ifdef HAVE_STDLIB_H # include #endif #include #ifdef READLINE_LIBRARY # include "readline.h" # include "history.h" #else # include # include #endif extern char *xmalloc PARAMS((size_t)); void initialize_readline PARAMS((void)); void too_dangerous PARAMS((char *)); int execute_line PARAMS((char *)); int valid_argument PARAMS((char *, char *)); /* The names of functions that actually do the manipulation. */ int com_list PARAMS((char *)); int com_view PARAMS((char *)); int com_rename PARAMS((char *)); int com_stat PARAMS((char *)); int com_pwd PARAMS((char *)); int com_delete PARAMS((char *)); int com_help PARAMS((char *)); int com_cd PARAMS((char *)); int com_quit PARAMS((char *)); /* A structure which contains information on the commands this program can understand. */ typedef struct { char *name; /* User printable name of the function. */ rl_icpfunc_t *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, (rl_icpfunc_t *)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) char *s; { char *r; r = xmalloc (strlen (s) + 1); strcpy (r, s); return (r); } int 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 PARAMS((const char *, int)); char **fileman_completion PARAMS((const char *, int, int)); /* 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. */ void 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 = 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) const 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 = rl_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) const 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. */ int com_list (arg) char *arg; { if (!arg) arg = ""; sprintf (syscom, "ls -FClg %s", arg); return (system (syscom)); } int com_view (arg) char *arg; { if (!valid_argument ("view", arg)) return 1; #if defined (__MSDOS__) /* more.com doesn't grok slashes in pathnames */ sprintf (syscom, "less %s", arg); #else sprintf (syscom, "more %s", arg); #endif return (system (syscom)); } int com_rename (arg) char *arg; { too_dangerous ("rename"); return (1); } int 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); } int 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. */ int 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. */ int com_cd (arg) char *arg; { if (chdir (arg) == -1) { perror (arg); return 1; } com_pwd (""); return (0); } /* Print out the current working directory. */ int com_pwd (ignore) char *ignore; { char dir[1024], *s; s = getcwd (dir, sizeof(dir) - 1); 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. */ int com_quit (arg) char *arg; { done = 1; return (0); } /* Function which tells you that you can't do this. */ void 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); } readline-8.0/examples/histexamp.c000664 000436 000000 00000005565 13300557625 017227 0ustar00chetwheel000000 000000 /* histexamp.c - history library example program. */ /* Copyright (C) 1987-2009 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Readline is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Readline. If not, see . */ #include #ifdef READLINE_LIBRARY # include "history.h" #else # include #endif #include #include #include int main (argc, argv) int argc; char **argv; { char line[1024], *t; int len, done; line[0] = 0; done = 0; using_history (); while (!done) { printf ("history$ "); fflush (stdout); t = fgets (line, sizeof (line) - 1, stdin); if (t && *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; using_history (); result = history_expand (line, &expansion); if (result) fprintf (stderr, "%s\n", expansion); if (result < 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; time_t tt; char timestr[128]; the_list = history_list (); if (the_list) for (i = 0; the_list[i]; i++) { tt = history_get_time (the_list[i]); if (tt) strftime (timestr, sizeof (timestr), "%a %R", localtime(&tt)); else strcpy (timestr, "??"); printf ("%d: %s: %s\n", i + history_base, timestr, the_list[i]->line); } } else if (strncmp (line, "delete", 6) == 0) { int which; if ((sscanf (line + 6, "%d", &which)) == 1) { HIST_ENTRY *entry = remove_history (which); if (!entry) fprintf (stderr, "No such entry %d\n", which); else { free (entry->line); free (entry); } } else { fprintf (stderr, "non-numeric arg given to `delete'\n"); } } } } readline-8.0/examples/rlfe/config.h.in000644 000436 000000 00000022232 11567744015 020024 0ustar00chetwheel000000 000000 /* Copyright 2004 Per Bothner * Based on config.h from screen-4.0.2. * Copyright (c) 1993-2000 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) * Copyright (c) 1987 Oliver Laumann * * This program is free software; you can redistribute 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 (see the file COPYING); if not, write to the * Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * **************************************************************** * $Id: config.h.in,v 1.12 1994/05/31 12:31:36 mlschroe Exp $ FAU */ /********************************************************************** * * User Configuration Section */ /* * define PTYMODE if you do not like the default of 0622, which allows * public write to your pty. * define PTYGROUP to some numerical group-id if you do not want the * tty to be in "your" group. * Note, screen is unable to change mode or group of the pty if it * is not installed with sufficient privilege. (e.g. set-uid-root) * define PTYROFS if the /dev/pty devices are mounted on a read-only * filesystem so screen should not even attempt to set mode or group * even if running as root (e.g. on TiVo). */ #undef PTYMODE #undef PTYGROUP #undef PTYROFS /* * If screen is NOT installed set-uid root, screen can provide tty * security by exclusively locking the ptys. While this keeps other * users from opening your ptys, it also keeps your own subprocesses * from being able to open /dev/tty. Define LOCKPTY to add this * exclusive locking. */ #undef LOCKPTY /********************************************************************** * * End of User Configuration Section * * Rest of this file is modified by 'configure' * Change at your own risk! * */ /* * Some defines to identify special unix variants */ #ifndef SVR4 #undef SVR4 #endif #ifndef _POSIX_SOURCE #undef _POSIX_SOURCE #endif /* * Define POSIX if your system supports IEEE Std 1003.1-1988 (POSIX). */ #undef POSIX /* * Define TERMIO if you have struct termio instead of struct sgttyb. * This is usually the case for SVID systems, where BSD uses sgttyb. * POSIX systems should define this anyway, even though they use * struct termios. */ #undef TERMIO /* * Define CYTERMIO if you have cyrillic termio modes. */ #undef CYTERMIO /* * Define TERMINFO if your machine emulates the termcap routines * with the terminfo database. * Thus the .screenrc file is parsed for * the command 'terminfo' and not 'termcap'. */ #undef TERMINFO /* * If your library does not define ospeed, define this. */ #undef NEED_OSPEED /* * Define SYSV if your machine is SYSV complient (Sys V, HPUX, A/UX) */ #ifndef SYSV #undef SYSV #endif /* * Define SIGVOID if your signal handlers return void. On older * systems, signal returns int, but on newer ones, it returns void. */ #undef SIGVOID /* * Define USESIGSET if you have sigset for BSD 4.1 reliable signals. */ #undef USESIGSET /* * Define SYSVSIGS if signal handlers must be reinstalled after * they have been called. */ #undef SYSVSIGS /* * Define BSDWAIT if your system defines a 'union wait' in * * Only allow BSDWAIT i.e. wait3 on nonposix systems, since * posix implies wait(3) and waitpid(3). vdlinden@fwi.uva.nl * */ #ifndef POSIX #undef BSDWAIT #endif /* * On RISCOS we prefer wait2() over wait3(). rouilj@sni-usa.com */ #ifdef BSDWAIT #undef USE_WAIT2 #endif /* * Define if you have the utempter utmp helper program */ #undef HAVE_UTEMPTER /* * If ttyslot() breaks getlogin() by returning indexes to utmp entries * of type DEAD_PROCESS, then our getlogin() replacement should be * selected by defining BUGGYGETLOGIN. */ #undef BUGGYGETLOGIN /* * If your system has the calls setreuid() and setregid(), * define HAVE_SETREUID. Otherwise screen will use a forked process to * safely create output files without retaining any special privileges. */ #undef HAVE_SETREUID /* * If your system supports BSD4.4's seteuid() and setegid(), define * HAVE_SETEUID. */ #undef HAVE_SETEUID /* * If you want the "time" command to display the current load average * define LOADAV. Maybe you must install screen with the needed * privileges to read /dev/kmem. * Note that NLIST_ stuff is only checked, when getloadavg() is not available. */ #undef LOADAV #undef LOADAV_NUM #undef LOADAV_TYPE #undef LOADAV_SCALE #undef LOADAV_GETLOADAVG #undef LOADAV_UNIX #undef LOADAV_AVENRUN #undef LOADAV_USE_NLIST64 #undef NLIST_DECLARED #undef NLIST_STRUCT #undef NLIST_NAME_UNION /* * If your system has the new format /etc/ttys (like 4.3 BSD) and the * getttyent(3) library functions, define GETTTYENT. */ #undef GETTTYENT /* * Define USEBCOPY if the bcopy/memcpy from your system's C library * supports the overlapping of source and destination blocks. When * undefined, screen uses its own (probably slower) version of bcopy(). * * SYSV machines may have a working memcpy() -- Oh, this is * quite unlikely. Tell me if you see one. * "But then, memmove() should work, if at all available" he thought... * Boing, never say "works everywhere" unless you checked SCO UNIX. * Their memove fails the test in the configure script. Sigh. (Juergen) */ #undef USEBCOPY #undef USEMEMCPY #undef USEMEMMOVE /* * If your system has vsprintf() and requires the use of the macros in * "varargs.h" to use functions with variable arguments, * define USEVARARGS. */ #undef USEVARARGS /* * If your system has strerror() define this. */ #undef HAVE_STRERROR /* * If the select return value doesn't treat a descriptor that is * usable for reading and writing as two hits, define SELECT_BROKEN. */ #undef SELECT_BROKEN /* * Define this if your system supports named pipes. */ #undef NAMEDPIPE /* * Define this if your system exits select() immediatly if a pipe is * opened read-only and no writer has opened it. */ #undef BROKEN_PIPE /* * Define this if the unix-domain socket implementation doesn't * create a socket in the filesystem. */ #undef SOCK_NOT_IN_FS /* * If your system has setenv() and unsetenv() define USESETENV */ #undef USESETENV /* * If your system does not come with a setenv()/putenv()/getenv() * functions, you may bring in our own code by defining NEEDPUTENV. */ #undef NEEDPUTENV /* * If the passwords are stored in a shadow file and you want the * builtin lock to work properly, define SHADOWPW. */ #undef SHADOWPW /* * If you are on a SYS V machine that restricts filename length to 14 * characters, you may need to enforce that by setting NAME_MAX to 14 */ #undef NAME_MAX /* KEEP_UNDEF_HERE override system value */ #undef NAME_MAX /* * define HAVE_RENAME if your system has a rename() function */ #undef HAVE_RENAME /* * define HAVE__EXIT if your system has the _exit() call. */ #undef HAVE__EXIT /* * define HAVE_LSTAT if your system has symlinks and the lstat() call. */ #undef HAVE_LSTAT /* * define HAVE_UTIMES if your system has the utimes() call. */ #undef HAVE_UTIMES /* * define HAVE_FCHOWN if your system has the fchown() call. */ #undef HAVE_FCHOWN /* * define HAVE_FCHMOD if your system has the fchmod() call. */ #undef HAVE_FCHMOD /* * define HAVE_VSNPRINTF if your system has vsnprintf() (GNU lib). */ #undef HAVE_VSNPRINTF /* * define HAVE_GETCWD if your system has the getcwd() call. */ #undef HAVE_GETCWD /* * define HAVE_SETLOCALE if your system has the setlocale() call. */ #undef HAVE_SETLOCALE /* * define HAVE_STRFTIME if your system has the strftime() call. */ #undef HAVE_STRFTIME /* * define HAVE_NL_LANGINFO if your system has the nl_langinfo() call * and defines CODESET. */ #undef HAVE_NL_LANGINFO /* * Newer versions of Solaris include fdwalk, which can greatly improve * the startup time of screen; otherwise screen spends a lot of time * closing file descriptors. */ #undef HAVE_FDWALK /* * define HAVE_DEV_PTC if you have a /dev/ptc character special * device. */ #undef HAVE_DEV_PTC /* * define HAVE_SVR4_PTYS if you have a /dev/ptmx character special * device and support the ptsname(), grantpt(), unlockpt() functions. */ #undef HAVE_SVR4_PTYS /* * define HAVE_GETPT if you have the getpt() function. */ #undef HAVE_GETPT /* * define HAVE_OPENPTY if your system has the openpty() call. */ #undef HAVE_OPENPTY /* * define PTYRANGE0 and or PTYRANGE1 if you want to adapt screen * to unusual environments. E.g. For SunOs the defaults are "qpr" and * "0123456789abcdef". For SunOs 4.1.2 * #define PTYRANGE0 "pqrstuvwxyzPQRST" * is recommended by Dan Jacobson. */ #undef PTYRANGE0 #undef PTYRANGE1 #define USEVARARGS #undef HAVE_SYS_STROPTS_H #undef HAVE_SYS_WAIT_H #undef HAVE_SGTTY_H #undef HAVE_SYS_SELECT_H readline-8.0/examples/rlfe/configure000775 000436 000000 00000463430 11641651551 017716 0ustar00chetwheel000000 000000 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software # Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= PACKAGE_URL= ac_unique_file="rlfe.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS XTERMPATH WRITEPATH AWK EGREP GREP CPP OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC VERSION target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_pty_mode with_pty_group ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pty-mode=mode default mode for ptys --with-pty-group=group default group for ptys Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" VERSION=0.4 old_CFLAGS="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" if test $ac_cv_c_compiler_gnu = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 $as_echo_n "checking whether $CC needs -traditional... " >&6; } if ${ac_cv_prog_gcc_traditional+:} false; then : $as_echo_n "(cached) " >&6 else ac_pattern="Autoconf.*'x'" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes else ac_cv_prog_gcc_traditional=no fi rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 $as_echo "$ac_cv_prog_gcc_traditional" >&6; } if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 $as_echo_n "checking for library containing strerror... " >&6; } if ${ac_cv_search_strerror+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strerror (); int main () { return strerror (); ; return 0; } _ACEOF for ac_lib in '' cposix; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_strerror=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_strerror+:} false; then : break fi done if ${ac_cv_search_strerror+:} false; then : else ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 $as_echo "$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ main(){exit(0);} _ACEOF if ac_fn_c_try_run "$LINENO"; then : else if test $CC != cc ; then echo "Your $CC failed - restarting with CC=cc" 1>&6 echo "" 1>&6 CC=cc export CC exec $0 $configure_args fi fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ main(){exit(0);} _ACEOF if ac_fn_c_try_run "$LINENO"; then : else exec 5>&2 eval $ac_link echo "CC=$CC; CFLAGS=$CFLAGS; LIBS=$LIBS;" 1>&6 echo "$ac_compile" 1>&6 as_fn_error $? "Can't run the compiler - sorry" "$LINENO" 5 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ main() { int __something_strange_(); __something_strange_(0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : as_fn_error $? "Your compiler does not set the exit status - sorry" "$LINENO" 5 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done if test -f etc/toolcheck; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for buggy tools..." >&5 $as_echo "$as_me: checking for buggy tools..." >&6;} sh etc/toolcheck 1>&6 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for System V..." >&5 $as_echo "$as_me: checking for System V..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { int x = SIGCHLD | FNDELAY; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else $as_echo "#define SYSV 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris 2.x..." >&5 $as_echo "$as_me: checking for Solaris 2.x..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined(SVR4) && defined(sun) yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : LIBS="$LIBS -lsocket -lnsl -lkstat" fi rm -f conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: checking select..." >&5 $as_echo "$as_me: checking select..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { select(0, 0, 0, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else LIBS="$LIBS -lnet -lnsl" { $as_echo "$as_me:${as_lineno-$LINENO}: checking select with $LIBS..." >&5 $as_echo "$as_me: checking select with $LIBS..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { select(0, 0, 0, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else as_fn_error $? "!!! no select - no screen" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking select return value..." >&5 $as_echo "$as_me: checking select return value..." >&6;} if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include char *nam = "/tmp/conftest$$"; #ifdef NAMEDPIPE #ifndef O_NONBLOCK #define O_NONBLOCK O_NDELAY #endif #ifndef S_IFIFO #define S_IFIFO 0010000 #endif main() { #ifdef FD_SET fd_set f; #else int f; #endif #ifdef __FreeBSD__ /* From Andrew A. Chernov (ache@astral.msk.su): * opening RDWR fifo fails in BSD 4.4, but select return values are * right. */ exit(0); #endif (void)alarm(5); #ifdef POSIX if (mkfifo(nam, 0777)) #else if (mknod(nam, S_IFIFO|0777, 0)) #endif exit(1); close(0); if (open(nam, O_RDWR | O_NONBLOCK)) exit(1); if (write(0, "TEST", 4) == -1) exit(1); #else #include #include #include main() { int s1, s2, l; struct sockaddr_un a; #ifdef FD_SET fd_set f; #else int f; #endif (void)alarm(5); if ((s1 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) exit(1); a.sun_family = AF_UNIX; strcpy(a.sun_path, nam); (void) unlink(nam); if (bind(s1, (struct sockaddr *) &a, strlen(nam)+2) == -1) exit(1); if (listen(s1, 2)) exit(1); if (fork() == 0) { if ((s2 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) kill(getppid(), 3); (void)connect(s2, (struct sockaddr *)&a, strlen(nam) + 2); if (write(s2, "HELLO", 5) == -1) kill(getppid(), 3); exit(0); } l = sizeof(a); close(0); if (accept(s1, (struct sockaddr *)&a, &l)) exit(1); #endif #ifdef FD_SET FD_SET(0, &f); #else f = 1; #endif if (select(1, &f, 0, 0, 0) == -1) exit(1); if (select(1, &f, &f, 0, 0) != 2) exit(1); exit(0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo "- select is ok" 1>&6 else echo "- select can't count" 1>&6 $as_echo "#define SELECT_BROKEN 1" >>confdefs.h fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent..." >&5 $as_echo "$as_me: checking for tgetent..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { tgetent((char *)0, (char *)0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else olibs="$LIBS" LIBS="-lcurses $olibs" { $as_echo "$as_me:${as_lineno-$LINENO}: checking libcurses..." >&5 $as_echo "$as_me: checking libcurses..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifdef __hpux __sorry_hpux_libcurses_is_totally_broken_in_10_10(); #else tgetent((char *)0, (char *)0); #endif ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else LIBS="-ltermcap $olibs" { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtermcap..." >&5 $as_echo "$as_me: checking libtermcap..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { tgetent((char *)0, (char *)0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else LIBS="-ltermlib $olibs" { $as_echo "$as_me:${as_lineno-$LINENO}: checking libtermlib..." >&5 $as_echo "$as_me: checking libtermlib..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { tgetent((char *)0, (char *)0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else LIBS="-lncurses $olibs" { $as_echo "$as_me:${as_lineno-$LINENO}: checking libncurses..." >&5 $as_echo "$as_me: checking libncurses..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { tgetent((char *)0, (char *)0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else as_fn_error $? "!!! no tgetent - no screen" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern char *tgoto(); main() { exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo "- you use the termcap database" 1>&6 else echo "- you use the terminfo database" 1>&6 $as_echo "#define TERMINFO 1" >>confdefs.h fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking ospeed..." >&5 $as_echo "$as_me: checking ospeed..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern short ospeed; int main () { ospeed=5; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else $as_echo "#define NEED_OSPEED 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc..." >&5 $as_echo "$as_me: checking for /dev/ptc..." >&6;} if test -r /dev/ptc; then $as_echo "#define HAVE_DEV_PTC 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SVR4 ptys..." >&5 $as_echo "$as_me: checking for SVR4 ptys..." >&6;} sysvr4ptys= if test -c /dev/ptmx ; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ptsname(0);grantpt(0);unlockpt(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : $as_echo "#define HAVE_SVR4_PTYS 1" >>confdefs.h sysvr4ptys=1 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi for ac_func in getpt do : ac_fn_c_check_func "$LINENO" "getpt" "ac_cv_func_getpt" if test "x$ac_cv_func_getpt" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETPT 1 _ACEOF fi done if test -z "$sysvr4ptys"; then for ac_func in openpty do : ac_fn_c_check_func "$LINENO" "openpty" "ac_cv_func_openpty" if test "x$ac_cv_func_openpty" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_OPENPTY 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5 $as_echo_n "checking for openpty in -lutil... " >&6; } if ${ac_cv_lib_util_openpty+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lutil $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char openpty (); int main () { return openpty (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_util_openpty=yes else ac_cv_lib_util_openpty=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_openpty" >&5 $as_echo "$ac_cv_lib_util_openpty" >&6; } if test "x$ac_cv_lib_util_openpty" = xyes; then : $as_echo "#define HAVE_OPENPTY 1" >>confdefs.h LIBS="$LIBS -lutil" fi fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ptyranges..." >&5 $as_echo "$as_me: checking for ptyranges..." >&6;} if test -d /dev/ptym ; then pdir='/dev/ptym' else pdir='/dev' fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef M_UNIX yes; #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : ptys=`echo /dev/ptyp??` else ptys=`echo $pdir/pty??` fi rm -f conftest* if test "$ptys" != "$pdir/pty??" ; then p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'` p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'` cat >>confdefs.h <<_ACEOF #define PTYRANGE0 "$p0" _ACEOF cat >>confdefs.h <<_ACEOF #define PTYRANGE1 "$p1" _ACEOF fi # Check whether --with-pty-mode was given. if test "${with_pty_mode+set}" = set; then : withval=$with_pty_mode; ptymode="${withval}" fi # Check whether --with-pty-group was given. if test "${with_pty_group+set}" = set; then : withval=$with_pty_group; ptygrp="${withval}" fi test -n "$ptymode" || ptymode=0620 if test -n "$ptygrp" ; then cat >>confdefs.h <<_ACEOF #define PTYMODE $ptymode _ACEOF cat >>confdefs.h <<_ACEOF #define PTYGROUP $ptygrp _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: checking default tty permissions/group..." >&5 $as_echo "$as_me: checking default tty permissions/group..." >&6;} rm -f conftest_grp if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include main() { struct stat sb; char *x,*ttyname(); int om, m; FILE *fp; if (!(x = ttyname(0))) exit(1); if (stat(x, &sb)) exit(1); om = sb.st_mode; if (om & 002) exit(0); m = system("mesg y"); if (m == -1 || m == 127) exit(1); if (stat(x, &sb)) exit(1); m = sb.st_mode; if (chmod(x, om)) exit(1); if (m & 002) exit(0); if (sb.st_gid == getgid()) exit(1); if (!(fp=fopen("conftest_grp", "w"))) exit(1); fprintf(fp, "%d\n", sb.st_gid); fclose(fp); exit(0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : if test -f conftest_grp; then ptygrp=`cat conftest_grp` echo "- pty mode: $ptymode, group: $ptygrp" 1>&6 cat >>confdefs.h <<_ACEOF #define PTYMODE $ptymode _ACEOF cat >>confdefs.h <<_ACEOF #define PTYGROUP $ptygrp _ACEOF else echo "- ptys are world accessable" 1>&6 fi else WRITEPATH='' XTERMPATH='' # Extract the first word of "write", so it can be a program name with args. set dummy write; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_WRITEPATH+:} false; then : $as_echo_n "(cached) " >&6 else case $WRITEPATH in [\\/]* | ?:[\\/]*) ac_cv_path_WRITEPATH="$WRITEPATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_WRITEPATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi WRITEPATH=$ac_cv_path_WRITEPATH if test -n "$WRITEPATH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WRITEPATH" >&5 $as_echo "$WRITEPATH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xterm", so it can be a program name with args. set dummy xterm; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XTERMPATH+:} false; then : $as_echo_n "(cached) " >&6 else case $XTERMPATH in [\\/]* | ?:[\\/]*) ac_cv_path_XTERMPATH="$XTERMPATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_XTERMPATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XTERMPATH=$ac_cv_path_XTERMPATH if test -n "$XTERMPATH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XTERMPATH" >&5 $as_echo "$XTERMPATH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi found= if test -n "$WRITEPATH$XTERMPATH"; then findfollow= lsfollow= found=`find $WRITEPATH $XTERMPATH -follow -print 2>/dev/null` if test -n "$found"; then findfollow=-follow lsfollow=L fi if test -n "$XTERMPATH"; then ptygrpn=`ls -l$lsfollow $XTERMPATH | sed -n -e 1p | $AWK '{print $4}'` if test tty != "$ptygrpn"; then XTERMPATH= fi fi fi if test -n "$WRITEPATH$XTERMPATH"; then found=`find $WRITEPATH $XTERMPATH $findfollow -perm -2000 -print` if test -n "$found"; then ptygrp=`ls -ln$lsfollow $found | sed -n -e 1p | $AWK '{print $4}'` echo "- pty mode: $ptymode, group: $ptygrp" 1>&6 cat >>confdefs.h <<_ACEOF #define PTYMODE $ptymode _ACEOF cat >>confdefs.h <<_ACEOF #define PTYGROUP $ptygrp _ACEOF else echo "- ptys are world accessable" 1>&6 fi else echo "- can't determine - assume ptys are world accessable" 1>&6 fi fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest_grp fi if test -n "$posix" ; then echo "assuming posix signal definition" 1>&6 $as_echo "#define SIGVOID 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers..." >&5 $as_echo "$as_me: checking return type of signal handlers..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifdef signal #undef signal #endif extern void (*signal ()) (); int main () { int i; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define SIGVOID 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking sigset..." >&5 $as_echo "$as_me: checking sigset..." >&6;} cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #ifdef SIGVOID sigset(0, (void (*)())0); #else sigset(0, (int (*)())0); #endif ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : $as_echo "#define USESIGSET 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking signal implementation..." >&5 $as_echo "$as_me: checking signal implementation..." >&6;} if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef SIGCLD #define SIGCLD SIGCHLD #endif #ifdef USESIGSET #define signal sigset #endif int got; #ifdef SIGVOID void #endif hand() { got++; } main() { /* on hpux we use sigvec to get bsd signals */ #ifdef __hpux (void)signal(SIGCLD, hand); kill(getpid(), SIGCLD); kill(getpid(), SIGCLD); if (got < 2) exit(1); #endif exit(0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else $as_echo "#define SYSVSIGS 1" >>confdefs.h fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/stropts.h sys/wait.h sgtty.h sys/select.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in term.h do : ac_fn_c_check_header_mongrel "$LINENO" "term.h" "ac_cv_header_term_h" "$ac_includes_default" if test "x$ac_cv_header_term_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_TERM_H 1 _ACEOF fi done ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi readline-8.0/examples/rlfe/pty.c000644 000436 000000 00000020155 10524647536 016765 0ustar00chetwheel000000 000000 /* Copyright (c) 1993-2002 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) * Copyright (c) 1987 Oliver Laumann * * This program is free software; you can redistribute 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 (see the file COPYING); if not, write to the * Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * **************************************************************** */ #include "config.h" #include #include #include #include #include #include "screen.h" #ifndef sun # include #endif /* for solaris 2.1, Unixware (SVR4.2) and possibly others */ #if defined (HAVE_SVR4_PTYS) && defined (HAVE_SYS_STROPTS_H) # include #endif #if defined(sun) && defined(LOCKPTY) && !defined(TIOCEXCL) # include #endif #ifdef ISC # include # include # include #endif #ifdef sgi # include #endif /* sgi */ #include "extern.h" /* * if no PTYRANGE[01] is in the config file, we pick a default */ #ifndef PTYRANGE0 # define PTYRANGE0 "qpr" #endif #ifndef PTYRANGE1 # define PTYRANGE1 "0123456789abcdef" #endif /* SVR4 pseudo ttys don't seem to work with SCO-5 */ #ifdef M_UNIX # undef HAVE_SVR4_PTYS #endif extern int eff_uid; /* used for opening a new pty-pair: */ static char PtyName[32], TtyName[32]; #if !(defined(sequent) || defined(_SEQUENT_) || defined(HAVE_SVR4_PTYS)) # ifdef hpux static char PtyProto[] = "/dev/ptym/ptyXY"; static char TtyProto[] = "/dev/pty/ttyXY"; # else # ifdef M_UNIX static char PtyProto[] = "/dev/ptypXY"; static char TtyProto[] = "/dev/ttypXY"; # else static char PtyProto[] = "/dev/ptyXY"; static char TtyProto[] = "/dev/ttyXY"; # endif # endif /* hpux */ #endif static void initmaster __P((int)); #if defined(sun) /* sun's utmp_update program opens the salve side, thus corrupting */ int pty_preopen = 1; #else int pty_preopen = 0; #endif /* * Open all ptys with O_NOCTTY, just to be on the safe side * (RISCos mips breaks otherwise) */ #ifndef O_NOCTTY # define O_NOCTTY 0 #endif /***************************************************************/ static void initmaster(f) int f; { #ifdef POSIX tcflush(f, TCIOFLUSH); #else # ifdef TIOCFLUSH (void) ioctl(f, TIOCFLUSH, (char *) 0); # endif #endif #ifdef LOCKPTY (void) ioctl(f, TIOCEXCL, (char *) 0); #endif } void InitPTY(f) int f; { if (f < 0) return; #if defined(I_PUSH) && defined(HAVE_SVR4_PTYS) && !defined(sgi) && !defined(linux) && !defined(__osf__) && !defined(M_UNIX) if (ioctl(f, I_PUSH, "ptem")) Panic(errno, "InitPTY: cannot I_PUSH ptem"); if (ioctl(f, I_PUSH, "ldterm")) Panic(errno, "InitPTY: cannot I_PUSH ldterm"); # ifdef sun if (ioctl(f, I_PUSH, "ttcompat")) Panic(errno, "InitPTY: cannot I_PUSH ttcompat"); # endif #endif } /***************************************************************/ #if defined(OSX) && !defined(PTY_DONE) #define PTY_DONE int OpenPTY(ttyn) char **ttyn; { register int f; if ((f = open_controlling_pty(TtyName)) < 0) return -1; initmaster(f); *ttyn = TtyName; return f; } #endif /***************************************************************/ #if (defined(sequent) || defined(_SEQUENT_)) && !defined(PTY_DONE) #define PTY_DONE int OpenPTY(ttyn) char **ttyn; { char *m, *s; register int f; if ((f = getpseudotty(&s, &m)) < 0) return -1; #ifdef _SEQUENT_ fvhangup(s); #endif strncpy(PtyName, m, sizeof(PtyName)); strncpy(TtyName, s, sizeof(TtyName)); initmaster(f); *ttyn = TtyName; return f; } #endif /***************************************************************/ #if defined(__sgi) && !defined(PTY_DONE) #define PTY_DONE int OpenPTY(ttyn) char **ttyn; { int f; char *name, *_getpty(); sigret_t (*sigcld)__P(SIGPROTOARG); /* * SIGCHLD set to SIG_DFL for _getpty() because it may fork() and * exec() /usr/adm/mkpts */ sigcld = signal(SIGCHLD, SIG_DFL); name = _getpty(&f, O_RDWR | O_NONBLOCK, 0600, 0); signal(SIGCHLD, sigcld); if (name == 0) return -1; initmaster(f); *ttyn = name; return f; } #endif /***************************************************************/ #if defined(MIPS) && defined(HAVE_DEV_PTC) && !defined(PTY_DONE) #define PTY_DONE int OpenPTY(ttyn) char **ttyn; { register int f; struct stat buf; strcpy(PtyName, "/dev/ptc"); if ((f = open(PtyName, O_RDWR | O_NOCTTY | O_NONBLOCK)) < 0) return -1; if (fstat(f, &buf) < 0) { close(f); return -1; } sprintf(TtyName, "/dev/ttyq%d", minor(buf.st_rdev)); initmaster(f); *ttyn = TtyName; return f; } #endif /***************************************************************/ #if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) #define PTY_DONE int OpenPTY(ttyn) char **ttyn; { register int f; char *m, *ptsname(); int unlockpt __P((int)), grantpt __P((int)); #if defined(HAVE_GETPT) && defined(linux) int getpt __P((void)); #endif sigret_t (*sigcld)__P(SIGPROTOARG); strcpy(PtyName, "/dev/ptmx"); #if defined(HAVE_GETPT) && defined(linux) if ((f = getpt()) == -1) #else if ((f = open(PtyName, O_RDWR | O_NOCTTY)) == -1) #endif return -1; /* * SIGCHLD set to SIG_DFL for grantpt() because it fork()s and * exec()s pt_chmod */ sigcld = signal(SIGCHLD, SIG_DFL); if ((m = ptsname(f)) == NULL || grantpt(f) || unlockpt(f)) { signal(SIGCHLD, sigcld); close(f); return -1; } signal(SIGCHLD, sigcld); strncpy(TtyName, m, sizeof(TtyName)); initmaster(f); *ttyn = TtyName; return f; } #endif /***************************************************************/ #if defined(_AIX) && defined(HAVE_DEV_PTC) && !defined(PTY_DONE) #define PTY_DONE int OpenPTY(ttyn) char **ttyn; { register int f; /* a dumb looking loop replaced by mycrofts code: */ strcpy (PtyName, "/dev/ptc"); if ((f = open (PtyName, O_RDWR | O_NOCTTY)) < 0) return -1; strncpy(TtyName, ttyname(f), sizeof(TtyName)); if (eff_uid && access(TtyName, R_OK | W_OK)) { close(f); return -1; } initmaster(f); # ifdef _IBMR2 pty_preopen = 1; # endif *ttyn = TtyName; return f; } #endif /***************************************************************/ #if defined(HAVE_OPENPTY) && !defined(PTY_DONE) #define PTY_DONE int OpenPTY(ttyn) char **ttyn; { int f, s; if (openpty(&f, &s, TtyName, NULL, NULL) != 0) return -1; close(s); initmaster(f); pty_preopen = 1; *ttyn = TtyName; return f; } #endif /***************************************************************/ #ifndef PTY_DONE int OpenPTY(ttyn) char **ttyn; { register char *p, *q, *l, *d; register int f; debug("OpenPTY: Using BSD style ptys.\n"); strcpy(PtyName, PtyProto); strcpy(TtyName, TtyProto); for (p = PtyName; *p != 'X'; p++) ; for (q = TtyName; *q != 'X'; q++) ; for (l = PTYRANGE0; (*p = *l) != '\0'; l++) { for (d = PTYRANGE1; (p[1] = *d) != '\0'; d++) { debug1("OpenPTY tries '%s'\n", PtyName); if ((f = open(PtyName, O_RDWR | O_NOCTTY)) == -1) continue; q[0] = *l; q[1] = *d; if (eff_uid && access(TtyName, R_OK | W_OK)) { close(f); continue; } #if defined(sun) && defined(TIOCGPGRP) && !defined(SUNOS3) /* Hack to ensure that the slave side of the pty is * unused. May not work in anything other than SunOS4.1 */ { int pgrp; /* tcgetpgrp does not work (uses TIOCGETPGRP)! */ if (ioctl(f, TIOCGPGRP, (char *)&pgrp) != -1 || errno != EIO) { close(f); continue; } } #endif initmaster(f); *ttyn = TtyName; return f; } } return -1; } #endif readline-8.0/examples/rlfe/rlfe.c000644 000436 000000 00000047077 11567744433 017117 0ustar00chetwheel000000 000000 /* A front-end using readline to "cook" input lines. * * Copyright (C) 2004, 1999 Per Bothner * * This front-end program is free software; you can redistribute 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. * * Some code from Johnson & Troan: "Linux Application Development" * (Addison-Wesley, 1998) was used directly or for inspiration. * * 2003-11-07 Wolfgang Taeuber * Specify a history file and the size of the history file with command * line options; use EDITOR/VISUAL to set vi/emacs preference. */ /* PROBLEMS/TODO: * * Only tested under GNU/Linux and Mac OS 10.x; needs to be ported. * * Switching between line-editing-mode vs raw-char-mode depending on * what tcgetattr returns is inherently not robust, plus it doesn't * work when ssh/telnetting in. A better solution is possible if the * tty system can send in-line escape sequences indicating the current * mode, echo'd input, etc. That would also allow a user preference * to set different colors for prompt, input, stdout, and stderr. * * When running mc -c under the Linux console, mc does not recognize * mouse clicks, which mc does when not running under rlfe. * * Pasting selected text containing tabs is like hitting the tab character, * which invokes readline completion. We don't want this. I don't know * if this is fixable without integrating rlfe into a terminal emulator. * * Echo suppression is a kludge, but can only be avoided with better kernel * support: We need a tty mode to disable "real" echoing, while still * letting the inferior think its tty driver to doing echoing. * Stevens's book claims SCR$ and BSD4.3+ have TIOCREMOTE. * * The latest readline may have some hooks we can use to avoid having * to back up the prompt. (See HAVE_ALREADY_PROMPTED.) * * Desirable readline feature: When in cooked no-echo mode (e.g. password), * echo characters are they are types with '*', but remove them when done. * * Asynchronous output while we're editing an input line should be * inserted in the output view *before* the input line, so that the * lines being edited (with the prompt) float at the end of the input. * * A "page mode" option to emulate more/less behavior: At each page of * output, pause for a user command. This required parsing the output * to keep track of line lengths. It also requires remembering the * output, if we want an option to scroll back, which suggests that * this should be integrated with a terminal emulator like xterm. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" #include "extern.h" #if defined (HAVE_SYS_WAIT_H) # include #endif #ifdef READLINE_LIBRARY # include "readline.h" # include "history.h" #else # include # include #endif #ifndef COMMAND #define COMMAND "/bin/bash" #endif #ifndef COMMAND_ARGS #define COMMAND_ARGS COMMAND #endif #ifndef ALT_COMMAND #define ALT_COMMAND "/bin/sh" #endif #ifndef ALT_COMMAND_ARGS #define ALT_COMMAND_ARGS ALT_COMMAND #endif #ifndef HAVE_MEMMOVE # if __GNUC__ > 1 # define memmove(d, s, n) __builtin_memcpy(d, s, n) # else # define memmove(d, s, n) memcpy(d, s, n) # endif #else # define memmove(d, s, n) memcpy(d, s, n) #endif #define APPLICATION_NAME "rlfe" static int in_from_inferior_fd; static int out_to_inferior_fd; static void set_edit_mode (); static void usage_exit (); static char *hist_file = 0; static int hist_size = 0; /* Unfortunately, we cannot safely display echo from the inferior process. The reason is that the echo bit in the pty is "owned" by the inferior, and if we try to turn it off, we could confuse the inferior. Thus, when echoing, we get echo twice: First readline echoes while we're actually editing. Then we send the line to the inferior, and the terminal driver send back an extra echo. The work-around is to remember the input lines, and when we see that line come back, we supress the output. A better solution (supposedly available on SVR4) would be a smarter terminal driver, with more flags ... */ #define ECHO_SUPPRESS_MAX 1024 char echo_suppress_buffer[ECHO_SUPPRESS_MAX]; int echo_suppress_start = 0; int echo_suppress_limit = 0; /*#define DEBUG*/ #ifdef DEBUG FILE *logfile = NULL; #define DPRINT0(FMT) (fprintf(logfile, FMT), fflush(logfile)) #define DPRINT1(FMT, V1) (fprintf(logfile, FMT, V1), fflush(logfile)) #define DPRINT2(FMT, V1, V2) (fprintf(logfile, FMT, V1, V2), fflush(logfile)) #else #define DPRINT0(FMT) ((void) 0) /* Do nothing */ #define DPRINT1(FMT, V1) ((void) 0) /* Do nothing */ #define DPRINT2(FMT, V1, V2) ((void) 0) /* Do nothing */ #endif struct termios orig_term; /* Pid of child process. */ static pid_t child = -1; static void sig_child (int signo) { int status; wait (&status); if (hist_file != 0) { write_history (hist_file); if (hist_size) history_truncate_file (hist_file, hist_size); } DPRINT0 ("(Child process died.)\n"); tcsetattr(STDIN_FILENO, TCSANOW, &orig_term); exit (0); } volatile int propagate_sigwinch = 0; /* sigwinch_handler * propagate window size changes from input file descriptor to * master side of pty. */ void sigwinch_handler(int signal) { propagate_sigwinch = 1; } /* get_slave_pty() returns an integer file descriptor. * If it returns < 0, an error has occurred. * Otherwise, it has returned the slave file descriptor. */ int get_slave_pty(char *name) { struct group *gptr; gid_t gid; int slave = -1; /* chown/chmod the corresponding pty, if possible. * This will only work if the process has root permissions. * Alternatively, write and exec a small setuid program that * does just this. */ if ((gptr = getgrnam("tty")) != 0) { gid = gptr->gr_gid; } else { /* if the tty group does not exist, don't change the * group on the slave pty, only the owner */ gid = -1; } /* Note that we do not check for errors here. If this is code * where these actions are critical, check for errors! */ chown(name, getuid(), gid); /* This code only makes the slave read/writeable for the user. * If this is for an interactive shell that will want to * receive "write" and "wall" messages, OR S_IWGRP into the * second argument below. */ chmod(name, S_IRUSR|S_IWUSR); /* open the corresponding slave pty */ slave = open(name, O_RDWR); return (slave); } /* Certain special characters, such as ctrl/C, we want to pass directly to the inferior, rather than letting readline handle them. */ static char special_chars[20]; static int special_chars_count; static void add_special_char(int ch) { if (ch != 0) special_chars[special_chars_count++] = ch; } static int eof_char; static int is_special_char(int ch) { int i; #if 0 if (ch == eof_char && rl_point == rl_end) return 1; #endif for (i = special_chars_count; --i >= 0; ) if (special_chars[i] == ch) return 1; return 0; } static char buf[1024]; /* buf[0 .. buf_count-1] is the what has been emitted on the current line. It is used as the readline prompt. */ static int buf_count = 0; int do_emphasize_input = 1; int current_emphasize_input; char *start_input_mode = "\033[1m"; char *end_input_mode = "\033[0m"; int num_keys = 0; static void maybe_emphasize_input (int on) { if (on == current_emphasize_input || (on && ! do_emphasize_input)) return; fprintf (rl_outstream, on ? start_input_mode : end_input_mode); fflush (rl_outstream); current_emphasize_input = on; } static void null_prep_terminal (int meta) { } static void null_deprep_terminal () { maybe_emphasize_input (0); } static int pre_input_change_mode (void) { return 0; } char pending_special_char; static void line_handler (char *line) { if (line == NULL) { char buf[1]; DPRINT0("saw eof!\n"); buf[0] = '\004'; /* ctrl/d */ write (out_to_inferior_fd, buf, 1); } else { static char enter[] = "\r"; /* Send line to inferior: */ int length = strlen (line); if (length > ECHO_SUPPRESS_MAX-2) { echo_suppress_start = 0; echo_suppress_limit = 0; } else { if (echo_suppress_limit + length > ECHO_SUPPRESS_MAX - 2) { if (echo_suppress_limit - echo_suppress_start + length <= ECHO_SUPPRESS_MAX - 2) { memmove (echo_suppress_buffer, echo_suppress_buffer + echo_suppress_start, echo_suppress_limit - echo_suppress_start); echo_suppress_limit -= echo_suppress_start; echo_suppress_start = 0; } else { echo_suppress_limit = 0; } echo_suppress_start = 0; } memcpy (echo_suppress_buffer + echo_suppress_limit, line, length); echo_suppress_limit += length; echo_suppress_buffer[echo_suppress_limit++] = '\r'; echo_suppress_buffer[echo_suppress_limit++] = '\n'; } write (out_to_inferior_fd, line, length); if (pending_special_char == 0) { write (out_to_inferior_fd, enter, sizeof(enter)-1); if (*line) add_history (line); } free (line); } rl_callback_handler_remove (); buf_count = 0; num_keys = 0; if (pending_special_char != 0) { write (out_to_inferior_fd, &pending_special_char, 1); pending_special_char = 0; } } /* Value of rl_getc_function. Use this because readline should read from stdin, not rl_instream, points to the pty (so readline has monitor its terminal modes). */ int my_rl_getc (FILE *dummy) { int ch = rl_getc (stdin); if (is_special_char (ch)) { pending_special_char = ch; return '\r'; } return ch; } int main(int argc, char** argv) { char *path; int i; int master; char *name; int in_from_tty_fd; struct sigaction act; struct winsize ws; struct termios t; int maxfd; fd_set in_set; static char empty_string[1] = ""; char *prompt = empty_string; int ioctl_err = 0; int arg_base = 1; #ifdef DEBUG logfile = fopen("/tmp/rlfe.log", "w"); #endif while (arg_base= argc ) usage_exit(); switch(argv[arg_base][1]) { case 'h': arg_base++; hist_file = argv[arg_base]; break; case 's': arg_base++; hist_size = atoi(argv[arg_base]); if (hist_size<0) usage_exit(); break; default: usage_exit(); } arg_base++; } if (hist_file) read_history (hist_file); set_edit_mode (); rl_readline_name = APPLICATION_NAME; if ((master = OpenPTY (&name)) < 0) { perror("ptypair: could not open master pty"); exit(1); } DPRINT1("pty name: '%s'\n", name); /* set up SIGWINCH handler */ act.sa_handler = sigwinch_handler; sigemptyset(&(act.sa_mask)); act.sa_flags = 0; if (sigaction(SIGWINCH, &act, NULL) < 0) { perror("ptypair: could not handle SIGWINCH "); exit(1); } if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) < 0) { perror("ptypair: could not get window size"); exit(1); } if ((child = fork()) < 0) { perror("cannot fork"); exit(1); } if (child == 0) { int slave; /* file descriptor for slave pty */ /* We are in the child process */ close(master); #ifdef TIOCSCTTY if ((slave = get_slave_pty(name)) < 0) { perror("ptypair: could not open slave pty"); exit(1); } #endif /* We need to make this process a session group leader, because * it is on a new PTY, and things like job control simply will * not work correctly unless there is a session group leader * and process group leader (which a session group leader * automatically is). This also disassociates us from our old * controlling tty. */ if (setsid() < 0) { perror("could not set session leader"); } /* Tie us to our new controlling tty. */ #ifdef TIOCSCTTY if (ioctl(slave, TIOCSCTTY, NULL)) { perror("could not set new controlling tty"); } #else if ((slave = get_slave_pty(name)) < 0) { perror("ptypair: could not open slave pty"); exit(1); } #endif /* make slave pty be standard in, out, and error */ dup2(slave, STDIN_FILENO); dup2(slave, STDOUT_FILENO); dup2(slave, STDERR_FILENO); /* at this point the slave pty should be standard input */ if (slave > 2) { close(slave); } /* Try to restore window size; failure isn't critical */ if (ioctl(STDOUT_FILENO, TIOCSWINSZ, &ws) < 0) { perror("could not restore window size"); } /* now start the shell */ { static char* command_args[] = { COMMAND_ARGS, NULL }; static char* alt_command_args[] = { ALT_COMMAND_ARGS, NULL }; if (argc <= 1) { execvp (COMMAND, command_args); execvp (ALT_COMMAND, alt_command_args); } else execvp (argv[arg_base], &argv[arg_base]); } /* should never be reached */ exit(1); } /* parent */ signal (SIGCHLD, sig_child); /* Note that we only set termios settings for standard input; * the master side of a pty is NOT a tty. */ tcgetattr(STDIN_FILENO, &orig_term); t = orig_term; eof_char = t.c_cc[VEOF]; /* add_special_char(t.c_cc[VEOF]);*/ add_special_char(t.c_cc[VINTR]); add_special_char(t.c_cc[VQUIT]); add_special_char(t.c_cc[VSUSP]); #if defined (VDISCARD) add_special_char(t.c_cc[VDISCARD]); #endif t.c_lflag &= ~(ICANON | ISIG | ECHO | ECHOCTL | ECHOE | \ ECHOK | ECHONL #if defined (ECHOKE) | ECHOKE #endif #if defined (ECHOPRT) | ECHOPRT #endif ); t.c_iflag &= ~ICRNL; t.c_iflag |= IGNBRK; t.c_cc[VMIN] = 1; t.c_cc[VTIME] = 0; tcsetattr(STDIN_FILENO, TCSANOW, &t); in_from_inferior_fd = master; out_to_inferior_fd = master; rl_instream = fdopen (master, "r"); rl_getc_function = my_rl_getc; rl_prep_term_function = null_prep_terminal; rl_deprep_term_function = null_deprep_terminal; rl_pre_input_hook = pre_input_change_mode; rl_callback_handler_install (prompt, line_handler); in_from_tty_fd = STDIN_FILENO; FD_ZERO (&in_set); maxfd = in_from_inferior_fd > in_from_tty_fd ? in_from_inferior_fd : in_from_tty_fd; for (;;) { int num; FD_SET (in_from_inferior_fd, &in_set); FD_SET (in_from_tty_fd, &in_set); num = select(maxfd+1, &in_set, NULL, NULL, NULL); if (propagate_sigwinch) { struct winsize ws; if (ioctl (STDIN_FILENO, TIOCGWINSZ, &ws) >= 0) { ioctl (master, TIOCSWINSZ, &ws); } propagate_sigwinch = 0; continue; } if (num <= 0) { perror ("select"); exit (-1); } if (FD_ISSET (in_from_tty_fd, &in_set)) { extern int _rl_echoing_p; struct termios term_master; int do_canon = 1; int do_icrnl = 1; int ioctl_ret; DPRINT1("[tty avail num_keys:%d]\n", num_keys); /* If we can't get tty modes for the master side of the pty, we can't handle non-canonical-mode programs. Always assume the master is in canonical echo mode if we can't tell. */ ioctl_ret = tcgetattr(master, &term_master); if (ioctl_ret >= 0) { do_canon = (term_master.c_lflag & ICANON) != 0; do_icrnl = (term_master.c_lflag & ICRNL) != 0; _rl_echoing_p = (term_master.c_lflag & ECHO) != 0; DPRINT1 ("echo,canon,crnl:%03d\n", 100 * _rl_echoing_p + 10 * do_canon + 1 * do_icrnl); } else { if (ioctl_err == 0) DPRINT1("tcgetattr on master fd failed: errno = %d\n", errno); ioctl_err = 1; } if (do_canon == 0 && num_keys == 0) { char ch[10]; int count = read (STDIN_FILENO, ch, sizeof(ch)); DPRINT1("[read %d chars from stdin: ", count); DPRINT2(" \"%.*s\"]\n", count, ch); if (do_icrnl) { int i = count; while (--i >= 0) { if (ch[i] == '\r') ch[i] = '\n'; } } maybe_emphasize_input (1); write (out_to_inferior_fd, ch, count); } else { if (num_keys == 0) { int i; /* Re-install callback handler for new prompt. */ if (prompt != empty_string) free (prompt); if (prompt == NULL) { DPRINT0("New empty prompt\n"); prompt = empty_string; } else { if (do_emphasize_input && buf_count > 0) { prompt = malloc (buf_count + strlen (end_input_mode) + strlen (start_input_mode) + 5); sprintf (prompt, "\001%s\002%.*s\001%s\002", end_input_mode, buf_count, buf, start_input_mode); } else { prompt = malloc (buf_count + 1); memcpy (prompt, buf, buf_count); prompt[buf_count] = '\0'; } DPRINT1("New prompt '%s'\n", prompt); #if 0 /* ifdef HAVE_RL_ALREADY_PROMPTED */ /* Doesn't quite work when do_emphasize_input is 1. */ rl_already_prompted = buf_count > 0; #else if (buf_count > 0) write (1, "\r", 1); #endif } rl_callback_handler_install (prompt, line_handler); } num_keys++; maybe_emphasize_input (1); rl_callback_read_char (); } } else /* output from inferior. */ { int i; int count; int old_count; if (buf_count > (sizeof(buf) >> 2)) buf_count = 0; count = read (in_from_inferior_fd, buf+buf_count, sizeof(buf) - buf_count); DPRINT2("read %d from inferior, buf_count=%d", count, buf_count); DPRINT2(": \"%.*s\"", count, buf+buf_count); maybe_emphasize_input (0); if (count <= 0) { DPRINT0 ("(Connection closed by foreign host.)\n"); tcsetattr(STDIN_FILENO, TCSANOW, &orig_term); exit (0); } old_count = buf_count; /* Look for any pending echo that we need to suppress. */ while (echo_suppress_start < echo_suppress_limit && count > 0 && buf[buf_count] == echo_suppress_buffer[echo_suppress_start]) { count--; buf_count++; echo_suppress_start++; } DPRINT1("suppressed %d characters of echo.\n", buf_count-old_count); /* Write to the terminal anything that was not suppressed. */ if (count > 0) write (1, buf + buf_count, count); /* Finally, look for a prompt candidate. * When we get around to going input (from the keyboard), * we will consider the prompt to be anything since the last * line terminator. So we need to save that text in the * initial part of buf. However, anything before the * most recent end-of-line is not interesting. */ buf_count += count; #if 1 for (i = buf_count; --i >= old_count; ) #else for (i = buf_count - 1; i-- >= buf_count - count; ) #endif { if (buf[i] == '\n' || buf[i] == '\r') { i++; memmove (buf, buf+i, buf_count - i); buf_count -= i; break; } } DPRINT2("-> i: %d, buf_count: %d\n", i, buf_count); } } } static void set_edit_mode () { int vi = 0; char *shellopts; shellopts = getenv ("SHELLOPTS"); while (shellopts != 0) { if (strncmp ("vi", shellopts, 2) == 0) { vi = 1; break; } shellopts = strchr (shellopts + 1, ':'); } if (!vi) { if (getenv ("EDITOR") != 0) vi |= strcmp (getenv ("EDITOR"), "vi") == 0; } if (vi) rl_variable_bind ("editing-mode", "vi"); else rl_variable_bind ("editing-mode", "emacs"); } static void usage_exit () { fprintf (stderr, "Usage: rlfe [-h histfile] [-s size] cmd [arg1] [arg2] ...\n\n"); exit (1); } readline-8.0/examples/rlfe/ChangeLog000660 000436 000000 00000002473 10142531027 017537 0ustar00chetwheel000000 000000 2004-11-04 Per Bothner * pty.c: Import from screen-4.0.2. * configure.in, Makefile.in, config.h.in: Set up autoconf handling, copying a bunk of stuff over from screen. * rlfe.c: Use OpenPTY from pty.c instead of get_master_pty. 2004-11-03 Per Bothner * rlfe.c: Get input emphasis (boldening) more robust. * rlfe.c: Various cleanups on comments and names. 2003-11-07 Wolfgang Taeuber * Specify a history file and the size of the history file with command * line options; use EDITOR/VISUAL to set vi/emacs preference. 1999-09-03 Chet Ramey * fep.c: Memmove is not universally available. This patch assumes that an autoconf test has been performed, and that memcpy is available without checking. * fep.c: VDISCARD is not universally available, even when termios is. * fep.c: If a system doesn't have TIOCSCTTY, the first `open' performed after setsid allocates a controlling terminal. The original code would leave the child process running on the slave pty without a controlling tty if TIOCSCTTY was not available. * fep.c: Most versions of SVR4, including solaris, don't allow terminal ioctl calls on the master side of the pty. 1999-08-28 Per Bothner * fep.c: Initial release. readline-8.0/examples/rlfe/README000664 000436 000000 00000005514 10142553403 016652 0ustar00chetwheel000000 000000 rlfe (ReadLine Front-End) is a "universal wrapper" around readline. You specify an interactive program to run (typically a shell), and readline is used to edit input lines. There are other such front-ends; what distinguishes this one is that it monitors the state of the inferior pty, and if the inferior program switches its terminal to raw mode, then rlfe passes your characters through directly. This basically means you can run your entire session (including bash and terminal-mode emacs) under rlfe. FEATURES * Can use all readline commands (and history) in commands that read input lines in "canonical mode" - even 'cat'! * Automatically switches between "readline-editing mode" and "raw mode" depending on the terminal mode. If the inferior program invokes readline itself, it will do its own line editing. (The inferior readline will not know about rlfe, and it will have its own history.) You can even run programs like 'emavs -nw' and 'vi' under rlfe. The goal is you could leave rlfe always on without even knowing about it. (We're not quite there, but it works tolerably well.) * The input line (after any prompt) is changed to bold-face. INSTALL The usual: ./configure && make && make install Note so far rlfe has only been tested on GNU Linux (Fedora Core 2) and Mac OS X (10.3). This assumes readline header files and libraries are in the default places. If not, you can create a link named readline pointing to the readline sources. To link with libreadline.a and libhistory.a you can copy or link them, or add LDFLAGS='-/path/to/readline' to the make command-line. USAGE Just run it. That by default runs bash. You can run some other command by giving it as command-line arguments. There are a few tweaks: -h allows you to name the history file, and -s allows you to specify its size. It default to "emacs" mode, but if the the environment variable EDITOR is set to "vi" that mode is chosen. ISSUES * The mode switching depends on the terminal mode set by the inferior program. Thus ssh/telnet/screen-type programs will typically be in raw mode, so rlfe won't be much use, even if remote programs run in canonical mode. The work-around is to run rlfe on the remote end. * Echo supression and prompt recognition are somewhat fragile. (A protocol so that the o/s tty code can reliably communicate its state to rlfe could solve this problem, and the previous one.) * See the intro to rlfe.c for more notes. * Assumes a VT100-compatible terminal, though that could be generalized if anybody cares. * Requires ncurses. * It would be useful to integrate rlfe's logic in a terminal emulator. That would make it easier to reposition the edit position with a mouse, integrate cut-and-paste with the system clipboard, and more robustly handle escape sequence and multi-byte characters more robustly. AUTHOR Per Bothner LICENSE GPL. readline-8.0/examples/rlfe/Makefile.in000664 000436 000000 00000012221 11150350506 020027 0ustar00chetwheel000000 000000 # # Makefile template for rlfe # # See machine dependant config.h for more configuration options. # srcdir = @srcdir@ VPATH = @srcdir@ DESTDIR = # Where to install screen. prefix = @prefix@ exec_prefix = @exec_prefix@ # don't forget to change mandir and infodir in doc/Makefile. bindir = $(exec_prefix)/bin VERSION = @VERSION@ SCREEN = screen-$(VERSION) CC = @CC@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ #LDFLAGS = -L$(READLINE_DIR) LDFLAGS = @LDFLAGS@ LIBS = -lreadline -lhistory @LIBS@ CPP=@CPP@ CPP_DEPEND=$(CC) -MM INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ AWK = @AWK@ OPTIONS= #OPTIONS= -DDEBUG SHELL=/bin/sh CFILES= rlfe.c pty.c HFILES= extern.h os.h screen.h EXTRA_DIST=configure.in configure Makefile.in config.h.in ChangeLog README OFILES= rlfe.o pty.o all: rlfe rlfe: $(OFILES) $(CC) $(LDFLAGS) -o $@ $(OFILES) $(LIBS) rlfe-$(VERSION).tar.gz: tar czf $@ $(CFILES) $(HFILES) $(EXTRA_DIST) .c.o: $(CC) -c -I. -I$(srcdir) $(CPPFLAGS) $(M_CFLAGS) $(DEFS) $(OPTIONS) $(CFLAGS) $< install_bin: .version screen -if [ -f $(DESTDIR)$(bindir)/$(SCREEN) ] && [ ! -f $(DESTDIR)$(bindir)/$(SCREEN).old ]; \ then mv $(DESTDIR)$(bindir)/$(SCREEN) $(DESTDIR)$(bindir)/$(SCREEN).old; fi $(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN) -chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN) # This doesn't work if $(bindir)/screen is a symlink -if [ -f $(DESTDIR)$(bindir)/screen ] && [ ! -f $(DESTDIR)$(bindir)/screen.old ]; then mv $(DESTDIR)$(bindir)/screen $(DESTDIR)$(bindir)/screen.old; fi rm -f $(DESTDIR)$(bindir)/screen (cd $(DESTDIR)$(bindir) && ln -sf $(SCREEN) screen) cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS) uninstall: .version rm -f $(DESTDIR)$(bindir)/$(SCREEN) rm -f $(DESTDIR)$(bindir)/screen -mv $(DESTDIR)$(bindir)/screen.old $(DESTDIR)$(bindir)/screen rm -f $(DESTDIR)$(ETCSCREENRC) cd doc; $(MAKE) uninstall shadow: mkdir shadow; cd shadow; ln -s ../*.[ch] ../*.in ../*.sh ../configure ../doc ../terminfo ../etc . rm -f shadow/term.h shadow/tty.c shadow/comm.h shadow/osdef.h echo "install all Makefiles and config:" > shadow/Makefile echo " rm -f config.cache" >> shadow/Makefile echo " sh ./configure" >> shadow/Makefile term.h: term.c term.sh AWK=$(AWK) srcdir=$(srcdir) sh $(srcdir)/term.sh kmapdef.c: term.h tty.c: tty.sh sh $(srcdir)/tty.sh tty.c mostlyclean: rm -f $(OFILES) rlfe *.o clean celan: mostlyclean rm -f tty.c term.h comm.h osdef.h kmapdef.c core # Delete all files from the current directory that are created by # configuring or building the program. # building of term.h/comm.h requires awk. Keep it in the distribution # we keep config.h, as this file knows where 'make dist' finds the ETCSCREENRC. #distclean: mostlyclean # rm -f $(SCREEN).tar $(SCREEN).tar.gz # rm -f config.status Makefile # rm -f osdef.h doc/Makefile maintainer-clean: @echo "This command is not even intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." # Delete everything from the current directory that can be # reconstructed with this Makefile. realclean: .version mostlyclean rm -f $(SCREEN).tar $(SCREEN).tar.gz rm -f config.status Makefile doc/Makefile rm -f tty.c term.h comm.h osdef.h kmapdef.c rm -f config.h echo "install all Makefiles and config:" > Makefile echo " sh ./configure" >> Makefile tags TAGS: $(CFILES) -ctags *.sh $(CFILES) *.h -ctags -e *.sh $(CFILES) *.h dist: .version $(SCREEN).tar.gz # Perform self-tests (if any). check: config: rm -f config.cache sh ./configure ############################################################################### .version: @rev=`sed < $(srcdir)/patchlevel.h -n -e '/#define REV/s/#define REV *//p'`; \ vers=`sed < $(srcdir)/patchlevel.h -n -e '/#define VERS/s/#define VERS *//p'`; \ pat=`sed < $(srcdir)/patchlevel.h -n -e '/#define PATCHLEVEL/s/#define PATCHLEVEL *//p'`; \ if [ "$${rev}.$${vers}.$${pat}" != "$(VERSION)" ]; then \ echo "This distribution is screen-$${rev}.$${vers}.$${pat}, but"; \ echo "the Makefile is from $(VERSION). Please update!"; exit 1; fi ############################################################################### mdepend: $(CFILES) term.h @rm -f DEPEND ; \ for i in ${CFILES} ; do \ echo "$$i" ; \ echo `echo "$$i" | sed -e 's/.c$$/.o/'`": $$i" `\ cc -E $$i |\ grep '^# .*"\./.*\.h"' |\ (sort -t'"' -u -k 2,2 2>/dev/null || sort -t'"' -u +1 -2) |\ sed -e 's/.*"\.\/\(.*\)".*/\1/'\ ` >> DEPEND ; \ done depend: depend.in ./config.status || ./configure depend.in: $(CFILES) term.h cp Makefile.in Makefile.in~ sed -e '/\#\#\# Dependencies/q' < Makefile.in > tmp_make for i in $(CFILES); do echo $$i; $(CPP_DEPEND) $$i >> tmp_make; done mv tmp_make Makefile.in Makefile makefile: config.status $(srcdir)/Makefile.in CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck $(srcdir)/configure: $(srcdir)/configure.in cd $(srcdir) && autoconf ############################################################################### ### Dependencies: pty.o: pty.c config.h readline-8.0/examples/rlfe/os.h000644 000436 000000 00000030112 11567744242 016571 0ustar00chetwheel000000 000000 /* Copyright (c) 1993-2002 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) * Copyright (c) 1987 Oliver Laumann * * This program is free software; you can redistribute 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 (see the file COPYING); if not, write to the * Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * **************************************************************** * $Id: os.h,v 1.10 1994/05/31 12:32:22 mlschroe Exp $ FAU */ #include #include #include /* In strict ANSI mode, HP-UX machines define __hpux but not hpux */ #if defined(__hpux) && !defined(hpux) # define hpux #endif #if defined(__bsdi__) || defined(__386BSD__) || defined(_CX_UX) || defined(hpux) || defined(_IBMR2) || defined(linux) # include #endif /* __bsdi__ || __386BSD__ || _CX_UX || hpux || _IBMR2 || linux */ #ifdef ISC # ifdef ENAMETOOLONG # undef ENAMETOOLONG # endif # ifdef ENOTEMPTY # undef ENOTEMPTY # endif # include # include #endif #ifdef sun # define getpgrp __getpgrp # define exit __exit #endif #ifdef POSIX # include # if defined(__STDC__) # include # endif /* __STDC__ */ #endif /* POSIX */ #ifdef sun # undef getpgrp # undef exit #endif /* sun */ #ifndef linux /* all done in */ extern int errno; #endif /* linux */ #ifndef HAVE_STRERROR /* No macros, please */ #undef strerror #endif #if !defined(SYSV) && !defined(linux) # ifdef NEWSOS # define strlen ___strlen___ # include # undef strlen # else /* NEWSOS */ # include # endif /* NEWSOS */ #else /* SYSV */ # if defined(SVR4) || defined(NEWSOS) # define strlen ___strlen___ # include # undef strlen # if !defined(NEWSOS) && !defined(__hpux) extern size_t strlen(const char *); # endif # else /* SVR4 */ # include # endif /* SVR4 */ #endif /* SYSV */ #ifdef USEVARARGS # if defined(__STDC__) # include # define VA_LIST(var) va_list var; # define VA_DOTS ... # define VA_DECL # define VA_START(ap, fmt) va_start(ap, fmt) # define VA_ARGS(ap) ap # define VA_END(ap) va_end(ap) # else # include # define VA_LIST(var) va_list var; # define VA_DOTS va_alist # define VA_DECL va_dcl # define VA_START(ap, fmt) va_start(ap) # define VA_ARGS(ap) ap # define VA_END(ap) va_end(ap) # endif #else # define VA_LIST(var) # define VA_DOTS p1, p2, p3, p4, p5, p6 # define VA_DECL unsigned long VA_DOTS; # define VA_START(ap, fmt) # define VA_ARGS(ap) VA_DOTS # define VA_END(ap) # undef vsnprintf # define vsnprintf xsnprintf #endif #if !defined(sun) && !defined(B43) && !defined(ISC) && !defined(pyr) && !defined(_CX_UX) # include #endif #include #ifdef M_UNIX /* SCO */ # include # include # define ftruncate(fd, s) chsize(fd, s) #endif #ifdef SYSV # define index strchr # define rindex strrchr # define bzero(poi,len) memset(poi,0,len) # define bcmp memcmp # define killpg(pgrp,sig) kill( -(pgrp), sig) #endif #ifndef HAVE_GETCWD # define getcwd(b,l) getwd(b) #endif #ifndef USEBCOPY # ifdef USEMEMMOVE # define bcopy(s,d,len) memmove(d,s,len) # else # ifdef USEMEMCPY # define bcopy(s,d,len) memcpy(d,s,len) # else # define NEED_OWN_BCOPY # define bcopy xbcopy # endif # endif #endif #ifdef hpux # define setreuid(ruid, euid) setresuid(ruid, euid, -1) # define setregid(rgid, egid) setresgid(rgid, egid, -1) #endif #if defined(HAVE_SETEUID) || defined(HAVE_SETREUID) # define USE_SETEUID #endif #if !defined(HAVE__EXIT) && !defined(_exit) #define _exit(x) exit(x) #endif #ifndef HAVE_UTIMES # define utimes utime #endif #ifdef BUILTIN_TELNET # include # include #endif #if defined(USE_LOCALE) && (!defined(HAVE_SETLOCALE) || !defined(HAVE_STRFTIME)) # undef USE_LOCALE #endif /***************************************************************** * terminal handling */ #if defined (POSIX) || defined (__FreeBSD__) # include # ifdef hpux # include # endif /* hpux */ # ifdef NCCS # define MAXCC NCCS # else # define MAXCC 256 # endif #else /* POSIX */ # ifdef TERMIO # include # ifdef NCC # define MAXCC NCC # else # define MAXCC 256 # endif # ifdef CYTERMIO # include # endif # else /* TERMIO */ # if defined (HAVE_SGTTY_H) # include # endif # endif /* TERMIO */ #endif /* POSIX */ #ifndef VDISABLE # ifdef _POSIX_VDISABLE # define VDISABLE _POSIX_VDISABLE # else # define VDISABLE 0377 # endif /* _POSIX_VDISABLE */ #endif /* !VDISABLE */ /* on sgi, regardless of the stream head's read mode (RNORM/RMSGN/RMSGD) * TIOCPKT mode causes data loss if our buffer is too small (IOSIZE) * to hold the whole packet at first read(). * (Marc Boucher) * * matthew green: * TIOCPKT is broken on dgux 5.4.1 generic AViiON mc88100 * * Joe Traister: On AIX4, programs like irc won't work if screen * uses TIOCPKT (select fails to return on pty read). */ #if defined(sgi) || defined(DGUX) || defined(_IBMR2) # undef TIOCPKT #endif /* linux ncurses is broken, we have to use our own tputs */ #if defined(linux) && defined(TERMINFO) # define tputs xtputs #endif /* Alexandre Oliva: SVR4 style ptys don't work with osf */ #ifdef __osf__ # undef HAVE_SVR4_PTYS #endif /***************************************************************** * utmp handling */ #ifdef GETUTENT typedef char *slot_t; #else typedef int slot_t; #endif #if defined(UTMPOK) || defined(BUGGYGETLOGIN) # if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux) # include # define UTMPFILE UTMPX_FILE # define utmp utmpx # define getutent getutxent # define getutid getutxid # define getutline getutxline # define pututline pututxline # define setutent setutxent # define endutent endutxent # define ut_time ut_xtime # else /* SVR4 */ # include # endif /* SVR4 */ # ifdef apollo /* * We don't have GETUTENT, so we dig into utmp ourselves. * But we save the permanent filedescriptor and * open utmp just when we need to. * This code supports an unsorted utmp. jw. */ # define UTNOKEEP # endif /* apollo */ # ifndef UTMPFILE # ifdef UTMP_FILE # define UTMPFILE UTMP_FILE # else # ifdef _PATH_UTMP # define UTMPFILE _PATH_UTMP # else # define UTMPFILE "/etc/utmp" # endif /* _PATH_UTMP */ # endif # endif #endif /* UTMPOK || BUGGYGETLOGIN */ #if !defined(UTMPOK) && defined(USRLIMIT) # undef USRLIMIT #endif #ifdef LOGOUTOK # ifndef LOGINDEFAULT # define LOGINDEFAULT 0 # endif #else # ifdef LOGINDEFAULT # undef LOGINDEFAULT # endif # define LOGINDEFAULT 1 #endif /***************************************************************** * file stuff */ #ifndef F_OK #define F_OK 0 #endif #ifndef X_OK #define X_OK 1 #endif #ifndef W_OK #define W_OK 2 #endif #ifndef R_OK #define R_OK 4 #endif #ifndef S_IFIFO #define S_IFIFO 0010000 #endif #ifndef S_IREAD #define S_IREAD 0000400 #endif #ifndef S_IWRITE #define S_IWRITE 0000200 #endif #ifndef S_IEXEC #define S_IEXEC 0000100 #endif #if defined(S_IFIFO) && defined(S_IFMT) && !defined(S_ISFIFO) #define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO) #endif #if defined(S_IFSOCK) && defined(S_IFMT) && !defined(S_ISSOCK) #define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) #endif #if defined(S_IFCHR) && defined(S_IFMT) && !defined(S_ISCHR) #define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) #endif #if defined(S_IFDIR) && defined(S_IFMT) && !defined(S_ISDIR) #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) #endif #if defined(S_IFLNK) && defined(S_IFMT) && !defined(S_ISLNK) #define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) #endif /* * SunOS 4.1.3: `man 2V open' has only one line that mentions O_NOBLOCK: * * O_NONBLOCK Same as O_NDELAY above. * * on the very same SunOS 4.1.3, I traced the open system call and found * that an open("/dev/ttyy08", O_RDWR|O_NONBLOCK|O_NOCTTY) was blocked, * whereas open("/dev/ttyy08", O_RDWR|O_NDELAY |O_NOCTTY) went through. * * For this simple reason I now favour O_NDELAY. jw. 4.5.95 */ #if defined(sun) && !defined(SVR4) # undef O_NONBLOCK #endif #if !defined(O_NONBLOCK) && defined(O_NDELAY) # define O_NONBLOCK O_NDELAY #endif #if !defined(FNBLOCK) && defined(FNONBLOCK) # define FNBLOCK FNONBLOCK #endif #if !defined(FNBLOCK) && defined(FNDELAY) # define FNBLOCK FNDELAY #endif #if !defined(FNBLOCK) && defined(O_NONBLOCK) # define FNBLOCK O_NONBLOCK #endif #ifndef POSIX #undef mkfifo #define mkfifo(n,m) mknod(n,S_IFIFO|(m),0) #endif #if !defined(HAVE_LSTAT) && !defined(lstat) # define lstat stat #endif /***************************************************************** * signal handling */ #ifdef SIGVOID # define SIGRETURN # define sigret_t void #else # define SIGRETURN return 0; # define sigret_t int #endif /* Geeeee, reverse it? */ #if defined(SVR4) || (defined(SYSV) && defined(ISC)) || defined(_AIX) || defined(linux) || defined(ultrix) || defined(__386BSD__) || defined(__bsdi__) || defined(POSIX) || defined(NeXT) # define SIGHASARG #endif #ifdef SIGHASARG # define SIGPROTOARG (int) # define SIGDEFARG (sigsig) int sigsig; # define SIGARG 0 #else # define SIGPROTOARG (void) # define SIGDEFARG () # define SIGARG #endif #ifndef SIGCHLD #define SIGCHLD SIGCLD #endif #if defined(POSIX) || defined(hpux) # define signal xsignal #else # ifdef USESIGSET # define signal sigset # endif /* USESIGSET */ #endif /* used in screen.c and attacher.c */ #ifndef NSIG /* kbeal needs these w/o SYSV */ # define NSIG 32 #endif /* !NSIG */ /***************************************************************** * Wait stuff */ #if (!defined(sysV68) && !defined(M_XENIX)) || defined(NeXT) || defined(M_UNIX) # include #endif #ifndef WTERMSIG # ifndef BSDWAIT /* if wait is NOT a union: */ # define WTERMSIG(status) (status & 0177) # else # define WTERMSIG(status) status.w_T.w_Termsig # endif #endif #ifndef WSTOPSIG # ifndef BSDWAIT /* if wait is NOT a union: */ # define WSTOPSIG(status) ((status >> 8) & 0377) # else # define WSTOPSIG(status) status.w_S.w_Stopsig # endif #endif /* NET-2 uses WCOREDUMP */ #if defined(WCOREDUMP) && !defined(WIFCORESIG) # define WIFCORESIG(status) WCOREDUMP(status) #endif #ifndef WIFCORESIG # ifndef BSDWAIT /* if wait is NOT a union: */ # define WIFCORESIG(status) (status & 0200) # else # define WIFCORESIG(status) status.w_T.w_Coredump # endif #endif #ifndef WEXITSTATUS # ifndef BSDWAIT /* if wait is NOT a union: */ # define WEXITSTATUS(status) ((status >> 8) & 0377) # else # define WEXITSTATUS(status) status.w_T.w_Retcode # endif #endif /***************************************************************** * select stuff */ #if defined(M_XENIX) || defined(M_UNIX) || defined(_SEQUENT_) || defined (__INTERIX) #include /* for timeval + FD... */ #endif /* * SunOS 3.5 - Tom Schmidt - Micron Semiconductor, Inc - 27-Jul-93 * tschmidt@vax.micron.com */ #ifndef FD_SET # ifndef SUNOS3 typedef struct fd_set { int fds_bits[1]; } fd_set; # endif # define FD_ZERO(fd) ((fd)->fds_bits[0] = 0) # define FD_SET(b, fd) ((fd)->fds_bits[0] |= 1 << (b)) # define FD_ISSET(b, fd) ((fd)->fds_bits[0] & 1 << (b)) # define FD_SETSIZE 32 #endif /***************************************************************** * user defineable stuff */ #ifndef TERMCAP_BUFSIZE # define TERMCAP_BUFSIZE 2048 #endif #ifndef MAXPATHLEN # define MAXPATHLEN 1024 #endif /* * you may try to vary this value. Use low values if your (VMS) system * tends to choke when pasting. Use high values if you want to test * how many characters your pty's can buffer. */ #define IOSIZE 4096 readline-8.0/examples/rlfe/extern.h000644 000436 000000 00000002610 10530140726 017441 0ustar00chetwheel000000 000000 /* Copyright (c) 1993-2002 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) * Copyright (c) 1987 Oliver Laumann * * This program is free software; you can redistribute 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 (see the file COPYING); if not, write to the * Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * **************************************************************** * $Id: extern.h,v 1.18 1994/05/31 12:31:57 mlschroe Exp $ FAU */ #if !defined(__GNUC__) || __GNUC__ < 2 #undef __attribute__ #define __attribute__(x) #endif #if !defined (__P) # if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) # define __P(protos) protos # else # define __P(protos) () # endif #endif /* pty.c */ extern int OpenPTY __P((char **)); extern void InitPTY __P((int)); readline-8.0/examples/rlfe/screen.h000664 000436 000000 00000000074 10142522024 017411 0ustar00chetwheel000000 000000 /* Dummy header to avoid modifying pty.c */ #include "os.h" readline-8.0/examples/rlfe/configure.in000644 000436 000000 00000021571 11641651544 020314 0ustar00chetwheel000000 000000 dnl Process this file with autoconf to produce a configure script. AC_INIT(rlfe.c) AC_CONFIG_HEADER(config.h) VERSION=0.4 AC_SUBST(VERSION) dnl dnl Define some useful macros dnl AC_DEFUN([AC_PROGRAM_SOURCE], [AC_REQUIRE([AC_PROG_CPP])AC_PROVIDE([$0])cat > conftest.c <&5 | sed -e '1,/_CUT_HERE_/d' -e 's/ //g' > conftest.out" . ./conftest.out rm -f conftest* ])dnl dnl define(AC_NOTE, [echo "$1" 1>&AC_FD_MSG ])dnl old_CFLAGS="$CFLAGS" AC_PROG_CC AC_PROG_CPP AC_PROG_GCC_TRADITIONAL AC_ISC_POSIX AC_TRY_RUN(main(){exit(0);},,[ if test $CC != cc ; then AC_NOTE(Your $CC failed - restarting with CC=cc) AC_NOTE() CC=cc export CC exec $0 $configure_args fi ]) AC_TRY_RUN(main(){exit(0);},, exec 5>&2 eval $ac_link AC_NOTE(CC=$CC; CFLAGS=$CFLAGS; LIBS=$LIBS;) AC_NOTE($ac_compile) AC_MSG_ERROR(Can't run the compiler - sorry)) AC_TRY_RUN([ main() { int __something_strange_(); __something_strange_(0); } ],AC_MSG_ERROR(Your compiler does not set the exit status - sorry)) AC_PROG_AWK if test -f etc/toolcheck; then AC_CHECKING(for buggy tools) sh etc/toolcheck 1>&AC_FD_MSG fi dnl dnl **** special unix variants **** dnl AC_CHECKING(for System V) AC_TRY_COMPILE( [#include #include #include ], [int x = SIGCHLD | FNDELAY;], , AC_DEFINE(SYSV)) AC_CHECKING(for Solaris 2.x) AC_EGREP_CPP(yes, [#if defined(SVR4) && defined(sun) yes #endif ], LIBS="$LIBS -lsocket -lnsl -lkstat") dnl dnl **** select() **** dnl AC_CHECKING(select) AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],, LIBS="$LIBS -lnet -lnsl" AC_CHECKING(select with $LIBS) AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],, AC_MSG_ERROR(!!! no select - no screen)) ) dnl dnl **** check the select implementation **** dnl AC_CHECKING(select return value) AC_TRY_RUN([ #include #include #include char *nam = "/tmp/conftest$$"; #ifdef NAMEDPIPE #ifndef O_NONBLOCK #define O_NONBLOCK O_NDELAY #endif #ifndef S_IFIFO #define S_IFIFO 0010000 #endif main() { #ifdef FD_SET fd_set f; #else int f; #endif #ifdef __FreeBSD__ /* From Andrew A. Chernov (ache@astral.msk.su): * opening RDWR fifo fails in BSD 4.4, but select return values are * right. */ exit(0); #endif (void)alarm(5); #ifdef POSIX if (mkfifo(nam, 0777)) #else if (mknod(nam, S_IFIFO|0777, 0)) #endif exit(1); close(0); if (open(nam, O_RDWR | O_NONBLOCK)) exit(1); if (write(0, "TEST", 4) == -1) exit(1); #else #include #include #include main() { int s1, s2, l; struct sockaddr_un a; #ifdef FD_SET fd_set f; #else int f; #endif (void)alarm(5); if ((s1 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) exit(1); a.sun_family = AF_UNIX; strcpy(a.sun_path, nam); (void) unlink(nam); if (bind(s1, (struct sockaddr *) &a, strlen(nam)+2) == -1) exit(1); if (listen(s1, 2)) exit(1); if (fork() == 0) { if ((s2 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) kill(getppid(), 3); (void)connect(s2, (struct sockaddr *)&a, strlen(nam) + 2); if (write(s2, "HELLO", 5) == -1) kill(getppid(), 3); exit(0); } l = sizeof(a); close(0); if (accept(s1, (struct sockaddr *)&a, &l)) exit(1); #endif #ifdef FD_SET FD_SET(0, &f); #else f = 1; #endif if (select(1, &f, 0, 0, 0) == -1) exit(1); if (select(1, &f, &f, 0, 0) != 2) exit(1); exit(0); } ],AC_NOTE(- select is ok), AC_NOTE(- select can't count) AC_DEFINE(SELECT_BROKEN)) dnl dnl **** termcap or terminfo **** dnl AC_CHECKING(for tgetent) AC_TRY_LINK(,tgetent((char *)0, (char *)0);,, olibs="$LIBS" LIBS="-lcurses $olibs" AC_CHECKING(libcurses) AC_TRY_LINK(,[ #ifdef __hpux __sorry_hpux_libcurses_is_totally_broken_in_10_10(); #else tgetent((char *)0, (char *)0); #endif ],, LIBS="-ltermcap $olibs" AC_CHECKING(libtermcap) AC_TRY_LINK(,tgetent((char *)0, (char *)0);,, LIBS="-ltermlib $olibs" AC_CHECKING(libtermlib) AC_TRY_LINK(,tgetent((char *)0, (char *)0);,, LIBS="-lncurses $olibs" AC_CHECKING(libncurses) AC_TRY_LINK(,tgetent((char *)0, (char *)0);,, AC_MSG_ERROR(!!! no tgetent - no screen)))))) AC_TRY_RUN([ extern char *tgoto(); main() { exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1); }], AC_NOTE(- you use the termcap database), AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO)) AC_CHECKING(ospeed) AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED)) dnl dnl **** PTY specific things **** dnl AC_CHECKING(for /dev/ptc) if test -r /dev/ptc; then AC_DEFINE(HAVE_DEV_PTC) fi AC_CHECKING(for SVR4 ptys) sysvr4ptys= if test -c /dev/ptmx ; then AC_TRY_LINK([],[ptsname(0);grantpt(0);unlockpt(0);],[AC_DEFINE(HAVE_SVR4_PTYS) sysvr4ptys=1]) fi AC_CHECK_FUNCS(getpt) dnl check for openpty() if test -z "$sysvr4ptys"; then AC_CHECK_FUNCS(openpty,, [AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY)] [LIBS="$LIBS -lutil"])]) fi AC_CHECKING(for ptyranges) if test -d /dev/ptym ; then pdir='/dev/ptym' else pdir='/dev' fi dnl SCO uses ptyp%d AC_EGREP_CPP(yes, [#ifdef M_UNIX yes; #endif ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`) dnl if test -c /dev/ptyp19; then dnl ptys=`echo /dev/ptyp??` dnl else dnl ptys=`echo $pdir/pty??` dnl fi if test "$ptys" != "$pdir/pty??" ; then p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'` p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'` AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0") AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1") fi dnl **** pty mode/group handling **** dnl dnl support provided by Luke Mewburn , 931222 AC_ARG_WITH(pty-mode, [ --with-pty-mode=mode default mode for ptys], [ ptymode="${withval}" ]) AC_ARG_WITH(pty-group, [ --with-pty-group=group default group for ptys], [ ptygrp="${withval}" ]) test -n "$ptymode" || ptymode=0620 if test -n "$ptygrp" ; then AC_DEFINE_UNQUOTED(PTYMODE, $ptymode) AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp) else AC_CHECKING(default tty permissions/group) rm -f conftest_grp AC_TRY_RUN([ #include #include #include main() { struct stat sb; char *x,*ttyname(); int om, m; FILE *fp; if (!(x = ttyname(0))) exit(1); if (stat(x, &sb)) exit(1); om = sb.st_mode; if (om & 002) exit(0); m = system("mesg y"); if (m == -1 || m == 127) exit(1); if (stat(x, &sb)) exit(1); m = sb.st_mode; if (chmod(x, om)) exit(1); if (m & 002) exit(0); if (sb.st_gid == getgid()) exit(1); if (!(fp=fopen("conftest_grp", "w"))) exit(1); fprintf(fp, "%d\n", sb.st_gid); fclose(fp); exit(0); } ],[ if test -f conftest_grp; then ptygrp=`cat conftest_grp` AC_NOTE([- pty mode: $ptymode, group: $ptygrp]) AC_DEFINE_UNQUOTED(PTYMODE, $ptymode) AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp) else AC_NOTE(- ptys are world accessable) fi ],[ WRITEPATH='' XTERMPATH='' AC_PATH_PROG(WRITEPATH, write) AC_PATH_PROG(XTERMPATH, xterm) found= if test -n "$WRITEPATH$XTERMPATH"; then findfollow= lsfollow= found=`find $WRITEPATH $XTERMPATH -follow -print 2>/dev/null` if test -n "$found"; then findfollow=-follow lsfollow=L fi if test -n "$XTERMPATH"; then ptygrpn=`ls -l$lsfollow $XTERMPATH | sed -n -e 1p | $AWK '{print $4}'` if test tty != "$ptygrpn"; then XTERMPATH= fi fi fi if test -n "$WRITEPATH$XTERMPATH"; then found=`find $WRITEPATH $XTERMPATH $findfollow -perm -2000 -print` if test -n "$found"; then ptygrp=`ls -ln$lsfollow $found | sed -n -e 1p | $AWK '{print $4}'` AC_NOTE([- pty mode: $ptymode, group: $ptygrp]) AC_DEFINE_UNQUOTED(PTYMODE, $ptymode) AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp) else AC_NOTE(- ptys are world accessable) fi else AC_NOTE(- can't determine - assume ptys are world accessable) fi ] ) rm -f conftest_grp fi dnl dnl **** signal handling **** dnl if test -n "$posix" ; then dnl POSIX has reliable signals with void return type. AC_NOTE(assuming posix signal definition) AC_DEFINE(SIGVOID) else AC_CHECKING(return type of signal handlers) AC_TRY_COMPILE( [#include #include #ifdef signal #undef signal #endif extern void (*signal ()) ();], [int i;], AC_DEFINE(SIGVOID)) AC_CHECKING(sigset) AC_TRY_LINK([ #include #include ],[ #ifdef SIGVOID sigset(0, (void (*)())0); #else sigset(0, (int (*)())0); #endif ], AC_DEFINE(USESIGSET)) AC_CHECKING(signal implementation) AC_TRY_RUN([ #include #include #ifndef SIGCLD #define SIGCLD SIGCHLD #endif #ifdef USESIGSET #define signal sigset #endif int got; #ifdef SIGVOID void #endif hand() { got++; } main() { /* on hpux we use sigvec to get bsd signals */ #ifdef __hpux (void)signal(SIGCLD, hand); kill(getpid(), SIGCLD); kill(getpid(), SIGCLD); if (got < 2) exit(1); #endif exit(0); } ],,AC_DEFINE(SYSVSIGS)) fi AC_CHECK_HEADERS(sys/stropts.h sys/wait.h sgtty.h sys/select.h) AC_CHECK_HEADERS(term.h) AC_OUTPUT(Makefile) readline-8.0/examples/autoconf/wi_LIB_READLINE000644 000436 000000 00000004326 10557745030 021162 0ustar00chetwheel000000 000000 dnl Borut Razem dnl dnl This macro checks for the presence of the readline library. dnl It works also in cross-compilation environment. dnl dnl To get it into the aclocal.m4 dnl file, do this: dnl aclocal -I . --verbose dnl dnl The --verbose will show all of the files that are searched dnl for .m4 macros. AC_DEFUN([wi_LIB_READLINE], [ dnl check for the readline.h header file AC_CHECK_HEADER(readline/readline.h) if test "$ac_cv_header_readline_readline_h" = yes; then dnl check the readline version cat > conftest.$ac_ext < #include wi_LIB_READLINE_VERSION RL_VERSION_MAJOR RL_VERSION_MINOR EOF wi_READLINE_VERSION=$($CPP $CPPFLAGS conftest.$ac_ext | sed -n -e "s/^wi_LIB_READLINE_VERSION *\([[0-9\]][[0-9\]]*\) *\([[0-9\]][[0-9\]]*\)$/\1.\2/p") rm -rf conftest* if test -n "$wi_READLINE_VERSION"; then wi_MAJOR=$(expr $wi_READLINE_VERSION : '\([[0-9]][[0-9]]*\)\.') wi_MINOR=$(expr $wi_READLINE_VERSION : '[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*$\)') if test $wi_MINOR -lt 10; then wi_MINOR=$(expr $wi_MINOR \* 10) fi wi_READLINE_VERSION=$(expr $wi_MAJOR \* 100 + $wi_MINOR) else wi_READLINE_VERSION=-1 fi dnl check for the readline library ac_save_LIBS="$LIBS" # Note: $LIBCURSES is permitted to be empty. for LIBREADLINE in "-lreadline.dll" "-lreadline" "-lreadline $LIBCURSES" "-lreadline -ltermcap" "-lreadline -lncurses" "-lreadline -lcurses" do AC_MSG_CHECKING([for GNU Readline library $LIBREADLINE]) LIBS="$ac_save_LIBS $LIBREADLINE" AC_TRY_LINK([ /* includes */ #include #include ],[ /* function-body */ int dummy = rl_completion_append_character; /* rl_completion_append_character appeared in version 2.1 */ readline(NULL); ],[ wi_cv_lib_readline=yes AC_MSG_RESULT(yes) ],[ wi_cv_lib_readline=no AC_MSG_RESULT(no) ]) if test "$wi_cv_lib_readline" = yes; then AC_SUBST(LIBREADLINE) AC_DEFINE_UNQUOTED(HAVE_LIBREADLINE, $wi_READLINE_VERSION, [Readline]) break fi done LIBS="$ac_save_LIBS" fi ]) readline-8.0/examples/autoconf/RL_LIB_READLINE_VERSION000664 000436 000000 00000005567 10614432033 022265 0ustar00chetwheel000000 000000 dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB dnl require: dnl AC_PROG_CC dnl BASH_CHECK_LIB_TERMCAP AC_DEFUN([RL_LIB_READLINE_VERSION], [ AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) AC_MSG_CHECKING([version of installed readline library]) # What a pain in the ass this is. # save cpp and ld options _save_CFLAGS="$CFLAGS" _save_LDFLAGS="$LDFLAGS" _save_LIBS="$LIBS" # Don't set ac_cv_rl_prefix if the caller has already assigned a value. This # allows the caller to do something like $_rl_prefix=$withval if the user # specifies --with-installed-readline=PREFIX as an argument to configure if test -z "$ac_cv_rl_prefix"; then test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} fi eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib LIBS="$LIBS -lreadline ${TERMCAP_LIB}" CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" AC_CACHE_VAL(ac_cv_rl_version, [AC_TRY_RUN([ #include #include extern int rl_gnu_readline_p; main() { FILE *fp; fp = fopen("conftest.rlv", "w"); if (fp == 0) exit(1); if (rl_gnu_readline_p != 1) fprintf(fp, "0.0\n"); else fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); fclose(fp); exit(0); } ], ac_cv_rl_version=`cat conftest.rlv`, ac_cv_rl_version='0.0', ac_cv_rl_version='4.2')]) CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" LIBS="$_save_LIBS" RL_MAJOR=0 RL_MINOR=0 # ( case "$ac_cv_rl_version" in 2*|3*|4*|5*|6*|7*|8*|9*) RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'` ;; esac # ((( case $RL_MAJOR in [[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; [[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; *) _RL_MAJOR=00 ;; esac # ((( case $RL_MINOR in [[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; [[0-9]]) _RL_MINOR=0$RL_MINOR ;; *) _RL_MINOR=00 ;; esac RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" # Readline versions greater than 4.2 have these defines in readline.h if test $ac_cv_rl_version = '0.0' ; then AC_MSG_WARN([Could not test version of installed readline library.]) elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then # set these for use by the caller RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir AC_MSG_RESULT($ac_cv_rl_version) else AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) AC_SUBST(RL_VERSION) AC_SUBST(RL_MAJOR) AC_SUBST(RL_MINOR) # set these for use by the caller RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir AC_MSG_RESULT($ac_cv_rl_version) fi ]) readline-8.0/examples/autoconf/BASH_CHECK_LIB_TERMCAP000664 000436 000000 00000002441 10614432310 022047 0ustar00chetwheel000000 000000 AC_DEFUN([BASH_CHECK_LIB_TERMCAP], [ if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else AC_MSG_CHECKING(which library has the termcap functions) _bash_needmsg= fi AC_CACHE_VAL(bash_cv_termcap_lib, [AC_CHECK_FUNC(tgetent, bash_cv_termcap_lib=libc, [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)])])])])]) if test "X$_bash_needmsg" = "Xyes"; then AC_MSG_CHECKING(which library has the termcap functions) fi AC_MSG_RESULT(using $bash_cv_termcap_lib) if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" TERMCAP_DEP="./lib/termcap/libtermcap.a" elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then TERMCAP_LIB=-ltermcap TERMCAP_DEP= elif test $bash_cv_termcap_lib = libtinfo; then TERMCAP_LIB=-ltinfo TERMCAP_DEP= elif test $bash_cv_termcap_lib = libncurses; then TERMCAP_LIB=-lncurses TERMCAP_DEP= elif test $bash_cv_termcap_lib = libc; then TERMCAP_LIB= TERMCAP_DEP= else TERMCAP_LIB=-lcurses TERMCAP_DEP= fi ]) readline-8.0/doc/rluserman.pdf000664 000436 000024 00000701305 13406221751 016506 0ustar00chetstaff000000 000000 %PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 419 /Filter /FlateDecode >> stream xÚRKkÜ0¾ûWè(ÁZÑh¬×5! )%ÐÔ›JNVn Y›j·ióï;²¼Á…RŠAš‘ç{ŒFÀ}À‚bQ†Æ³ç}¥æÓô••à¥®AMû?Kê\SÃÕ¤Z;=ó·ÕÙ•³L+i7¬í³'cA:ïY»c_øõíVÔè ¿‹ÝîecÉ>O©Ko%Ùb*ÑÍ(ø1¦¾{Žâ±ýP]¶Õ÷wíLÞéœ> stream xÚ}TKoÔ0¾ï¯ˆ89R“Ú±ó'ZhUT!Ô.\(‡Ôñ6›¤r²”žÛMKA9ÌxòÍû!"Ÿˆj•R¦µª"ݯ¸—º»ˆ˜«ó•8%3 ÿ…$y–EÉÂÚÉzu|–ç‘àiÍk­7èNÔ<•U­ÛèvŠ™IÖ7CœUl×léÝšI;{'YÉLÀÌ!Æ -1»É8â¬WŸÛ4: Æ Òì vþé 1W¦i·vâK vë·§÷ ÏùO´fÜdÇ„UÊË™äñ÷õGH92¹ L>¨Aj} A‡Ð!<%J–qQ]6”,XCÒ-$(yÆ÷C‡¡hTïP@ÛNÄA‚žúlÑã0Ùi6ƒÞ“óE E‰0û¤·,Œ7ªÝ8³­…:›Ù<ˉRºwãkz,¾”Ûc`ø„Ÿ>aÛ4HDÕC+[’…ËíIŸœ©Päìt¼GÄÞÙ»ÎC=&WiVÊ&&« §Q~|V¨åX%2å&p»á"'èó *ÍUÎ=JÔUõzSP”gq%™3!æëq3c(˜vãÌ3™a8ŽHx1hJ*‘E 6)5bùLÃÔÛ‰æ)ËùG ÐþlZÌ#Q ‚îÀK¦rìÕ ;±ƒnyÔùxtÄ÷¨Vd³vºG-ýÒ»ÞPH )÷ˆ5¯Í4´ »Ÿ••Ÿ­¬,iúPàw ¨‡¢šáëýK_¾JôïÒj3L“©jöõhPCUÀ¼HeðçˆÒUØÓßm3› _îç+‘ßïn·vê°¦ªæ°‹dDÕ"ìÍFñ¢Ù5¥>¹§f¿“¼¨Ùƒ;21Œ»hùóTaƒmè)¡®Fí Ï¥Wú{×(˜‘j–œ.Ž Þ78 k˜_óä¯g´cðc@zÒhÄÿ8(—A¹8(§x~jöŽTžFÌ¿ü¹¡ÅÒ_'ß/zø;tÐÛ] …}¥êx¢pȃ‰2'i;oM87B*ºÉ€=̾þ5G¨æè߸ՇõêˆÐ¿› endstream endobj 41 0 obj << /Length 1628 /Filter /FlateDecode >> stream xÚíšËrÛ6†÷~ .©…PâJ¢;ÇÓK’E¬,:.‰¶9•HEeì·/âBÊ ŒIœq{¼ -Ÿ_:ÿ'àL2ñž%9Æ€“"YïN2õjw• 7Þœ@·ËQä«ÕÉ/ç”&0<ã0Y]&€ç6Ýj“ü“Ö‹Wž¼^Ù<¡HAyO1g Ì‚”HEñžXAÄdP[-8IËOÛj±Ä9MÛËázÖ6 Ó¾.{ùž†T`ÂL%>A #hÈK‘ü×Ý®l6Cž·u£3¿ÞÔ}Ý\ ‰`†Æ™ G €DdT™~™X>\Øä·¯|ñQ“ÉË‘SDÔƒˆ"1YŽpËD/GáÖ1Wœã¤ºØÇÒ4”ÐXi}OzŠ'̈@‰$ QÀ¨&ét–eéÍißµ‹¥¸në¾Ø,1ÆißWí?&SÿžÈ0 _hÿ£›úD ÷X"ƒ¡ºö±D´¡.ÜcèqÒY–beEä’–!ˆÍ°ai†>Tåf«!Á†(ñL»L˵¼ëkq+Èò¡ƒ@ˆ=stmøÒth«b‘sá!ä&þ{‘‹“UÈ%!ä (Š„r0E9;pM¡{UvfŒÚï«ÀºÜî½¼Q 2š?WÞf€1…ŽffꞘHY LXÒS0€²0þQê]+ù¼@yZí40Ã_tïãGG$3í#ö8OˆÓº€± ¸ðcW„8YBP҂˯9t `/ÕÛ­ìi¬÷r¶*1[Í À @‹ü»eàÛº®±|¸ðc³ü|ÄÉ*>‚’–Êwt/§ÝÕÁ ~ÄJ Š•ÚKó=¾¨ºÇÒc‚Cì8#±—œAÅM@ÌRCȩÆjl.ª²[KL®í`rÙvCKbgõrm–W׺cù½Þ÷mwç£ ‰¶œ~w­Êœ±CibµÑ!kGÕö{¥©Ì é™ßfÑf{ņ̃îçÎë­˜'*ï¸ î1yÓÄÓmÔhF´g±Ü¹ðxcˆ—¼8Y…^PÒŽ,(Äl öfV:cú|[=ˆ\Ü “Tyë_òˆ¾•=¿%ö2ºÔ±È¸ð2cÿüÈÄÉ*d‚’™,ˆ1k³¶‘[umSn§ÔÈ·Ù÷Ýa=Óΰ@ŽæaëØÌü𦖘££—£pGIƒü}mœ®‚"¨i  œˆŽ4wP˜Yì¢ÜÝlgGï&¡ìgYî~ûd3dC"É…Èšºìí"u%YaMÓ‘B¼Æ™!ˬ˜^ÕÍF?}dg+ÞLÉ!ÈŸÓ#ƒ9>tYcùpá!>&^1/qºŠ ¦yÄäQLJí`¦  óEÓamd÷áæž*‘\Ì­èe«v Œ®s,0.<ÌÄbÁ´“MöSu°DÜü-/›ÿæ±lf?Áÿ+G]øX‚\xˆ ‰›ÜKPœ®"(¨i ‚ ‚AvõFP©Öõå%éýaWuõ:v«¾¹³âG_ÛÎ! +‹€ !0¶e^âtAM‹@6>#%`·Uï&ýé2c%]¿Óˆx&5Ò´‡9* BôQfŽŠ,ê(™¥" %;N:Pá}¬©«¨j*pQˆ5舊ÜL-ÕÝ'å{[vÓ"®»Ö?ˆlˆó—/Äɸ‰Ó(<€ÓÄZ?N‘º§°¦Å)§ çÐáT˜y¦Ý™"õ~]m·eSµ‡}ÄnFÁûŽ7˾Òx]¯Xã]xÈø± È»;©«Œjš=,Ì`¶C¥ÞG,ŸëÁîwòPlžnfðAôòÜÿÛmsh«b‘³Ñ!âFî#ï¦iœ¨âm*8=ðÍE&Œ¥ºw:½Í †iÕlêÛá0ý©b¦oÞ/ (:NÒ®’¢,ýMž¾FéZõ´â¦/õÉlù¶^W;òžÃÇ„èY5Ý{&fBí»|èQؽ…{¹O“u¾ÿ,ŒQ€YXúÛ(-> endstream endobj 155 0 obj << /Length 3170 /Filter /FlateDecode >> stream xÚ­ÛnÜÆõÝ_¡·P€–å 9}²¹Hë …­¢(’¦w¹-.¹ ¹Qô÷=·^–kÙh¡‡Ïœûm¤®"øSWyteã8Ì“ìj{xÑnwÅ‹{¥n€› ä›»WygÌ•ŠÂ<ÊÕÕÝþʨ44‰ñøîvW¿êú÷»¿¿º½óˆŒÖßx"BžiÓ+eC­L‚GQi–„*NÜi“êàm{¸Þ¨àP\« Ù]obk‚÷USòêvW Us„-Yµ “H3º»‡ª‡oâ8Ø^k<Ç¡ìxcWöÛ®ú|½ÑYP ÐðPòâsÑW[\&Á¾,†Sç ÚýIǧjz¼ÖY˜ÙÈ ãï›Ó‘: #¥ж= bðÖÌ$œ[ “´]5×@&о/¶eÈ8QI'©Fœmt˜~à'L•q†"ПšëXC×>ìNÛ¡j–æÐ~Ÿ|U*;ùŠÀöm]·Hãê­BµÝ3Ç¢+î»âøÐ¯È}!ö¦ ! ¾<õ¥H…H„ß®<‚&Êu9ðÖ#Z>÷À/{Š&O 6 £HM©ÍáÛòÏAÔ§§Ü%hÿ^{o7«ÚS¡QÖ‘}Ê®,Ø< Ùùô¶e­um½ùÇò’ oÏÌÉbú24Ö Œµ+¶l®ðƒ]P])(žʆá½5štJiœÄ¡NcGê*7›D§¡¶1H*ÙˆPY ΃Pô^#OU-†êµ7á×ëÆ šØ£Ù•‚è%=™è²ž ¨À±õó5Á2ÏfjŒ¢¦$g5ÁΧŸË¡`ýÀë£~,š© zþlp´-u[KÁ–èhú!žG¬o2&F‹äÕRôiü™¨Úóú_´'|Ðp.Šökñ!Øi› Ã·éDÖ7èØŽ»=O‹j:ÆN¦6Æú¶ÅÕÆ&ãI)/ ª[w’+êÛõñ1ArÔ ãfË¿ÐT[A;<ƒ¼s]4g®NãšGY¥¬cÜÀÊx:ŒLÑÒàPõ½°Q×<æQÊíL0 pôùç®èžùá¾Ó šˆÇ°Œt÷HÈž7d@ÞóÓ¾]ï6‹¦:žêBfæ~d² Ó^Zñd€Žµ|,Âqðð>¯\D®šž!nº-اŠÕ¢€ÿrêå$”ïŸ3ÈΟæm uØ)“jËÝ&B“[‰fžQæs<7’ùG”AÝËhÁ˜F>"7\‰¨Å¿¾´]5¸@ïIÂQæàrR5µ+ið¯žyå×½Œ·QîsÃ}ÞŒ´C+õã91ÛSׯ+‘¯"œê`q¬yE{ÀY5<4eIöËmÛuœ|©r°"Mk ×å _s9íËnXœ"bÅä¬_رÄ5–†™ÍÍñ\âh;>öÖz°Ížf!;~ÃCD\qÿmùú‡zr3GÒW‡#ú;®i¶ºZΙ8ŒTþ-E£šö¦: þƒÉÔF³Ëìó^€q:…œ nJ.;ñJ. sn’tê$ú(“¦l©¹Ìhyà;‹ã¿¢m¨ñ4¹CªºÅéãàJGZM]y¹¨æv=5+äKCïî¯ÎaÒ©áo0ã'y6óm4ˆª™Ý‰%@¦ª '™4 ŒºÏ8Lýj¨Ýßy|CÆHW|=^£aF¬Šº¿” 툗I£1Mðu‡ÜÊÁ–È’·õ¼eîT’¥| ™Å›;eM±pBì#²äIÇ0r· FÏÓéŽáÎnetP%&]¿PÁmI(ÆãEkš«ãRåî‡ì¤×i¾òñ4 ö’Ëþ˜–Q»£Ÿ¢ñãaÊ®1—Þó”I‰I8˜åj{¢fÒ¹aûñÅn€‹“ÀN²lCµã^,%í¯iˆ (ª~ÛQƼ|ÍŒ¡yzû Ìœ©tyÐå1îG(!‡êÀõÙ”­lZg—dsg󺤔;Êe , .·b—?cœ¦t<£Î‚Uvdê’|LÍÜé³:D§gt¢ÄùàFY™ÀÓrî{”Ésv]e]Q¨ÀDI‹ŠÛ§hB¢à®«T&%ÅʰJ'"´{«Ïú–t¼ã"+ƒ‚r÷ßHƒs!%µ•JÇ—xQ$„>Á¤Y¨M~vÓ"Ö,Y|Í¢Ñè n:¨E3Ák¨û;*‰±ûk‹±bœz‰gÁžý+ƒgoÈÛÅËÉÕ¾§B`EºqCofFéî_Nt2 Œ¡­Kóxî"ÿ~(×Úœ úöBÚ’fìhq¨v»zÑc›r³¼£†}i¢F<ôÊG±kPÎÓÅØÒøãY`ØA»Å¤žPî¿”™ØPÂ5n~:žú¾ˆH‚v¼Ñé~¯[†;ãµFÈ ÿ' _îZ–޶ØÇÌÔ©’å4v¸¥Þ)ç_ñO•óÌ‹&o=r|pÁ×LI"W0€ мz– ŽãólMí⋉½â#Êz#¯IÖ¸Y×2sÀ¹ÕëR¶Ï endstream endobj 163 0 obj << /Length 2143 /Filter /FlateDecode >> stream xÚ­YmÛ¸þž_áo+k(Roí§»MÒ^ïR‡-Š¢)Ú¢×êÊ’¡—Kößw†3”,YÎúzÁ+jD‡óú -Vü‰U¬)ýL¥«ÝñM`©ÍÓŠ¿üéày˜¸9›ùÃã›ïÞGÑJ~dbõ¸?gõ˜¯þå=ô©3Íz#¥ôÄÖ¥"ï¡>u•ñç¢24z—]Q=­7¡ŒSá…ë?þåÍ»Çaû( o”g¾.hœ*_HE‚nõn¦Þól¯2¯«éù1ª,i\Tüí`h°-uõLÃö¤wLÝ5Fw&ç)Èôe¶®1Çé¿®£ØÓ̽ÞÏfuæKçƒÂDì}O”²h»+“·ºá‘i[S!÷®Ðe‹:l„ôED'Ý×lãô/–“”ÊnK$ÜŸº¢/EuêùS9m_—¥=ÌçÖÇ;{‡çzƽ3_EûÃfK³¦Öˆ?†©vÊÖ üc‘œmX¬ŠÉ–xÐÞ‡-n¾±|Q98äfÿÛ•}ÆWÝä7ÈÅ×d`%¼}÷ó’ aà§"uR€•¸e¬Üœôî™9«Ù<¹4û‰Sœ}ÚõM[¿®þÁþùkê¿UȾÊMSA¬X¢µð†é£PKNð·¦àqîü“?E /Cí ZöcÕš¦{]2f~¡Ä!ht÷;•øŸÛýgÊmê?›/´ÿæ¿Ñ…þ^åx®8aáaPjLK8¢Œvx¢÷%zÈb¤ý®SðŸž?Ù¬ƒ~`™PxåŒ9ÅZç…[˜¤­¹žyª]{Ž¡9ž:šžûØ„hƒ¹[ ÉécoÍ ò(D~•“s„ ¢ž/(KÝ7ô¶«+¬O}£»¢®î‘[Á—â6}™Ý¸Q䃟mz¡-·$½´¦£U ¼õµK‡ˆ¥ò•”x\„‘›tœèXx`Ô0ÎØ—Ò14m>A÷˜СŠr¦P¥ŠÅ`Îo"”¬œda‘F³ƒê¤÷cGdtã³YeM ¬uÈ2NýPN›ˆ±"ÐÆílaHšº#žE¾$ÂbÙǽ²Ö2Laf-òlÒ¢M§ÖÉͬ ¨Ó‹Ê) .á—¼¿~*Ê’<üqe_A\nÝ‚áe  ]ð„™€ãë —…tß$­-Í^.q\±oêãì#JŽ1Þ¶çiŽ[k7çcH):Z®)´¨·£2 Úbi™j‹…qØ·Ž}ßöº,©­Ûð™&Fà˶] å'rÀêêùŠº°b{ÂÆl Ûú˳A°ˆŸÝNYêÐûã7ÖRäà¡’¡åøé¡ïîè‹Íê8øt‚>ÚÜÑBºÎ*Á$5f7ä8üò_Ý<¡Ÿã·=uû|c_ÄÉT-ŸžÁ5î&5DzŸ,0%Ü ­j)S¨SèUc¾ò°…(téS0X?q¼ÊÐ]' *P¥—–¬Û:&”É bEkïˆØÙ<ôòNw?ìÊ»Œx·ÐLåž÷ê3ßÇ-#åŽw–ˆˆ“ôžÌüJf¼ÝŽ× t¹3ÖB µøc ¤•¼¡–[xç•­]_T6}4äHH>•öîØÖ-í®—Œñ«Ž0ŠFuà D 4=P§4b[ÜSf&g2Ç3Œlî†g«ÇžÝ1¢V‰˜.ÄS¨"?2 n¸i®%€í<ÐJ¤Þ÷ßèàNvÜQîbú`o¹í1 úv}W€\W2¨yéÌÕ­;*U0‰0 P4ªEJº=GÙ¸Œ WæìŽŸkðŠƒ­¾RA2«Ý*ò® ^E´Ñ=Ý‹ýeß žì¼ˆ¹MV°÷e4™DEMÅÒ6Ò—wødb ºi¨V°-ñYÕÈ$R¡y¹ŠíÐYÕîtaFÇüÁŽèlç&Ù£¬~"¾ #gÃÇ©1¿ußÚþ9Ø€çýr¢‚8õøóGQÚ›€å¦”âo¸õ‚—¶ÖŽ¿ Pþ}@Q ¼Ö¹¢¸kÈ$iQ*ì¾Ç®[ª±•Àß¡þ"kÛK endstream endobj 166 0 obj << /Length 2896 /Filter /FlateDecode >> stream xÚ]oÜ6ò=¿bß"•*R”úÖË¥×ö(×ÊìÒ^¡»Òž¤Mêßù¢Diå³á‡%‡CÎp¾9²Ú¥ð§vuº3Y–ÔyµÛŸß¤íw<øø7Jðb@Œ̿ݿùö‡¢Ø©4©ÓZíî£î»ÿDïŽö2ºþ.β,RßÝÅy^DïºóÙ¶þÒ´ŽGïÍØ´w±ÎÊJEÙÝï~óþ~"_hýJ>óFUšÃj¾+«VL>VUR‹¨â?sÉha’nE(ÿ„³™ŠðÅ„ƒ¾;¯÷×¾¿SÌTÔÞé*T€žß È»Šºdßµ²¿[]Þyeù»biÝö‰oº^ª˜ûñáuÔU-·ÁÑxä+àØ3NðίË"q‰äRWÕ¼‚rp^øŠã®?|ÓG2hdçgŠ pMä`;­Ð v´Ã,¸€ËÁEb•%ªàû[»Õâ,Sœ}=6£{ÃÅî!DÅE]F÷ÇF0üï¡ù-U™ ¬„Nµí¦“äEbÊ|v’gŒ:öˆ¡4Å´öö:¸U˜ö&à”rèòÙÄ'‰œL'e± ¯œ¼ò¢¤Ëáï±c;¦ ˆŒY­CVM•¨²ð7zB|Ûnæ!]%Y9©M¥8†£ÏvÛÿX `ytÎq¥tôo´t FÉ×ÎζÃÄ,ýî» ëò”s7Œ1KBi•äF-½¯w{Qèé)Æ„ì/fKÎÜu¯´·œ$HÚO/5Ü3#¡.©á˜ZÈí̉Ù#Y±g{2U)-Æ(EÁÑž}žÙq•zØ‘^Ÿµ_¼áÇn´Èffjï‘)Þ\ð#÷X„€š1tÖ*âÒp's£ ¼À­û*gutÜJ³ »+ƒ÷¶åA×’À`ï¡óÔɱaD=äç<ô Û,½ëQ8`C0eš”¥ñ~Fë:M*Uy$&µ>Èfayzuž5%nN‡ ȲNÊlÅrRVcªD'9H¬ÔÑGŠøöpâòÚäÑ÷^׳T„d¥a‹”(Ø×Å“øsP‰?×ut±ÃÀ#²^8µoöŒc{$ÂÖ90ˆ\p?NLÑaȈˆ_Ò&Â,>ug76g'$$×GS¸Æ%»çK¬s0åÂ<,ÿôŽK]‡€=ÄX:ì2/!Íž—H¬Z¨¬®]M24í¦‰ä $¢ÉDæ3™ÕååhÉ®À£1ä¨0 ¬Ì£Ÿä°'ªP¯µÖIæš;ë-ƒ[ü©ÀáíØ|AªŽ!K>•‚ ®ðtv€Aº¥¨täµ¶ëÏöD®‰P;oÚUx1Qâ³”ø~h â+ã„)ùêziW&ú*%bÑ©˜Öò2bEsCzTAâ¸kAŽej¢ÈØ{>ÃýiÏ—“C I•”Æg IB ȼc¨„ã Bv[·Z<©¾áM’Â&Œæñ8•²Î)1ŠI3ÆïbqåÂ0!AQéC3ò3ÏÍlÂ|+µ†Êó¤2XÌ”IªÅ†î‰[¨W]ëz{â ‹íï‰$†Ô‡ -BBS–»,ÿÌú†I³Â‰Ú…êdaéL¡o”݇摊AܧR©¨Ÿóד‡ø­.*OŸfeJ†PY®#ôžÓxýN”Þ J¨csO]~Μ½¯¥ˆA£ßÒ"ÝT¥†Ÿ›)yÄ›y91zŠBoá(…¶Ä1¦]°?“¬åå,…\"‰)® -ö¾\Õ¾¼åIPè]£¢µ{Yôñ‰&G‹H>ô d-9„u­,žI­8bµòŽŽ}NBnèðý·•«’€j UÞØ—2"$XëÝÙ6í -eXˆªœ×‰Gz0êTª^nWfʘ,Í!«èã­åœR#Ó<ÿÝvû%öhÛ16WÈ:þªq¦œÀàW¥(Ñ,#âC‚=É«h… mׂš£•âh•rÐ{æ¹¢jj^¼^‚´„ô¼­BµèNntÌ£ØJ* âÕµÉg«ØÀGÚÒë¥!35Î| oÚËu¼é-+¸Tj7=×n×nŸ¨<³X°îï2¹Ÿh é2š©…:ðŒ2žñüØ c×?½¢´›Ë1¸)<£h‡&ÿ¥9`¤ñ½0ÑBbÁsÙ³@¤q‹2è»+d*BæÜ|C­Èy9 j¢È‘¼ Ïݪí¤ï%µ§‚È?™¸-$i«AÂò]3iŸI åÇ·lttC• ½ÑèxÄw[g­ëÄ“ƒ5í"‚ø¤Ä­è\'ÅôÚFyl – ¦‡vÛµñ+6eRÖfñbØ%èD›L2wÉk?­ƒ jqÐ#© Ò>ž?6Ô÷T~Ny“¤¹ª±½Ø3ÎÑÊfTFÛ Gw\ö~¶Úë[ºz!sÙc ÷Á}Z%UªWß&écl´¼à³éͯ‘¡‚Bt¼|äÆF¡_v#%>ci‰á½Å=± ‹6< ä‰qͤ>¢l•a(LS{¹¼ÿônÓ˜t’¦õM:[š% åi`î?¿|ÒÚ„ð T½qV+UR/ü/ÔDY°&JÐÜ®Ýû®Eä0ð!j¨‚­fIgÆŸa\SÞ•y.>}šx*Ä:èú'̼Eåx Þ3RÞEDÿÁ)V5Ó^ØT×Û£¥÷8ؤtÛñQñëúÕaVqÒpD/NúLæ¿3áJ"M†iJ5[5Õl›¤Œ'%ùk#?øÏ$ÝÙ _³]ø{*­wSE¶(|J€‡Þ”a`,m>r’E®¨TDà¤ùö‚·vzA3¡{IÀÿ7€^Ùúåè™1_!üc'¹Î^ì$ƒb_Ž÷ÁAVnd/—¾»@XÉ<Ê‚¿Œ±{Ñ¿Ml¾óuµ4œß&W„ò7úrÙãÓÒ›Ã_©ƒ¬‹Ð¿O–TT8 Ì §«ú(ܳfq66üo’¿pñ" endstream endobj 170 0 obj << /Length 2638 /Filter /FlateDecode >> stream xÚÙŽÛÈñÝ_1@„F4Ù}³vâ Øöl‚`³@8RK"–"’š#ùöÔÕ-RC{ =°º»ºººîj¥7 üÒ›2¹ÉµŽKSÜlŽoší÷7 |þã›TðÖ€¸ž`¾¿óö£µ7i—I™ÞÜ捻î·7?Gw‡ê4º~µÖZG髵16ºëŽÇªÝòä_êÖ1ôa[u»_­•Ί42«_îÿüæÃ}8Þ*õ|"æo3š&NµaFÇ•*¢—^DX3©‰†Ž¿»ªWë¬È¢w-¡ñt7ðfþŠÓNæ÷Ÿ³k7ŽG@2ºs+DG!Zñ糫¶ ‰G/<ÕM#{\¬Ûj¬ñ°J#‡âë®S§–/1¸ªß +<´Œˆ”*’È=»Í·ãìx¨F†ä8¸œQYôqUè¨ëy©n‡±‚KܰL€[8 d˜Me¨ ÀYLÐéŸ?Ü ÖLÒ*‰• H|)bãr)æJ€aµ†Û-]ÍÆFºúZeiœ–™H ="­T„B½Eååz÷ šÓ*%qà)g#›î[ƒw×wÇ«õC=Œ]/´ M½ã™c·?’IY̸@˜$1Õ¡¿ÁE.è|ª6åÞòʱb³ãeÁÓQS #O55ܯ•õ›à„¤Ž6羿0H;Xh°ô}b_·+-p?ÑÙ±—eŸ‡7YN>2€ý&îQè q&J «¸ïˆ¸•WLïŒù*ÿ‚G.X:`ÌâÙ3V×ó'Á:êvŒ†^ëqÓ±°Eæ‡ܳ(rš„³åÚ€6àràD@^§±M%­¦±‰g*úÌQ݆ÜDŸÚ‰å6úX7nÉ!‘Õ2N•XÕ»½m¢…”Æ`’AaÔÔ}Eª‚Ä[´3ÑUªø38Ô$ ˜øp¬6ú©}PÅ9Éëu»= )JMCZ‚¡hi!’oÝ®:7#¦ÐÂDŒ)ï*t)ø¦«»†ú¡q<…‹_p0*Þ²­!hw ׸Fw@ï€XWüRb×TµähHB¸ghá3˜÷±þ¯c"§8íö}uó•¦È™G¦*ÈP t§óÈÞˆh’þa>Á/pÁº/gUFÓ²ôѸn¸Ö‚•@bM¨/0h6˜Ã¬²Þº‘!Uºt÷",`~dðP [°©/òh¦ø{nÁzoýZL¼ÇÌÎS¨Ú rùÿÞÆß° ÌÕ…y(Óô„QÏ%*˜ö,n;Ã3Õv‚æžëAÀ®ç5ð¡°ì0Q ·r."Lv·We\·>†jo"ý5è<Ö™ñ—zëÆÍÛoˆ +â\eWúKK(M6¯Ûþq@KÔà7×ͧž¢Ï=êP†Á|`HÊb;­û”¹b\¢¬,øç•åÙecÍ™ òN§´ [¼Ü`“”Ï6ä³Åú1”ð¹¹pœàšNcY0~½Œý„nYö Þ®EåÏ½Ö ÆŠR]*Ìg>á+¥¦Ic•ï m×»5^CDi}yB!Ä1;xÕ³ SÝF­M‡A\òK_I_· ¹Rw¶{7ˆ,¡g†})àãm^¿;³õþZ d.¡Ö÷'[ßÃt¼¥'5ƒÿpžW6Îlj†8ŪAOMêuÅ@З—v…¾\=­‚ÈãÌ7ù÷ØB° Û]KÙÀraŸUØì-áŒ]z7€7<ÀX‰8, ˜˜Ù…ÂBÅYQÌÅ!Š—Ó,íi1NºY4•wŒ¸‡>DþØ:zŽ×:< ^’§X*=1©åè¾A6!"_‚˜7a#•ßì¡q×ùÊ:ÄŠYêŠ}íòý³hÒ endstream endobj 10 0 obj << /Type /ObjStm /N 100 /First 822 /Length 1801 /Filter /FlateDecode >> stream xÚµYMÛ8½ûWð¸{¡Ébñ ÈÇöìb’`Î›Íæ ØšŽ0n)°Ýƒô¿ßW¢¸Û’ít»)ªø^ñ±X"i¯Œb•²NÙà•%E>*6Ê¡Eù•*<%•ðÞf•É)BãxBVYË^‰9y”r!(be9FÀ)ëSR—³"à%k% šŒóÊEè0qxE>ƒP~À„)ǀʬ`JÑå@‘à™EˆK€€ß S ?šl6“ C‰Y(8áð> +›¨ú1c„e¶*¢¿—Âãe*ƒvàÏ“¼²JÀ‹lU^„1trâ†êÚå@3ð2x³¸$ÏÀË9)HÁÆ»‰5ðÙä^MÅ–!›aT’´`&H5 †bŽÉ h`­GúXL³E/L³‹)bo2æÈޓžYÌHf1 0]ºs¡…ðÅ (Í1KÈIŒ¡)§dÑ9a–œÅ?Îâ3¤ôF|†»ÞˆÏÞ*/#°žQñ°ñ¤ÂU‘¼8¯|"Íç$ª‚‘Ø R i"Qy‹ „(Hx&¨Ÿ$&0"‹ˆ.J-œe!À4ˆæ a‚XA[ˆ Ï.ÎNž=›Lßß~­Õô÷ꪞL_víºn×+°œÞM¦ïêUw³œÕ+¬­¾áM=oªÝ7õÑ !`òb¦Ot_¢¦¬7ûå—ùhêÙ35½@ìEyƒ*¼HÛ*‚©¯Â~úû²›]Ökõ¾¼ºPÓ÷õ·µú´…tÒò}/áÏcÜÜñ Z" áÛûιü3ÎMŸ·mœ’¼Ä[´ÅC[”#S [ *…+—¢ ƒ *(TP\AqÅWP\AqÅWP\A¹'DïødzyóyÝ?¿nÚ?'ÓÝr^/˘Í'Ñe=™I3¢#¸¬ä o´gY7¤÷°{ÞOÍ¥šþÚ½ïÔô•ú›ý»ÌÉ#(¹PÓÞõ”²~4¹'e³¤½Ù°‘Ñ&槤óz"›ôt&èLéIéRÐd ÏNÇ8LGg¢‹F碥OFŠOÊæ#” ]ˆ¯ƒtîLt(‘× gíÈ?)Bßç [mã0Ÿ‰Î&Œ(:JÚ? ò‰Á‡Î›¨ ß÷žÎ²Nqd•Óyø8#oQ(|Æê8–UÜ™øþ9>NIûHÃ|áL|ÁcL\ø¢×LöiùððqÃHSá‹gâCÉTR sÖvDÎt&:BÞŒ%o²ó:‡‘¯B>ŸuÒ†H';ÌGæ<|8 h9+ô|&ëF¾ öL|ø¥2<—ƒÆñçié°b.ÃsÉiFøÎ”]V@(‹'JMvøCDþ4dMØR:Ê:â !‹?‡½š£¼“¯_£l)§ÿùð_9•GlTÛ›ÅâÓÁM÷Î1ÁÊnÂm7ãðOÚŒßõêew}]µóÿá8ñÖRþcÞ¬›öª÷öÐû=¬µëe7¿™­›®ÃM¿·Ýº’¦xßhÝ„ý®®æ‹ êe5û9öò Ê œ%zÊÕ gЦZ¬öÁlb¾éþª¯a)õr¨ƒVqk¨^†2:ˆú|yu#~ `ýxµ‡pYWËÙ—ïòýQºýÑ-wé¥Þ”YþÒÃþ³Y­»åí±émzi.šE=4¿;oOÆ‘òò¶]Wß#îØ ,•V¢³k«Ån74¯ÖKôj»bŽ™íKZ]]ŒŒ}äÝÆ‹¦WŸ‹åîèîÆËQ«±ÑÏåE™^Äïýü0ðú¤m<ŒBUmóõfQ­7ñõþH @HêÅù¥j¯¶Øbx âfÐE÷¼¤»UûçàøßbE-›ÙÀÊ»üZÏš?n78ƒv§8†&„Ê´øº^o…ÛkùÚíôúÐÝì£ÿVß~îªå¼LÂlÙm<hßëû¦YÍêÅ¢jëîfµ‚—ÝuÉ‚£fWõ_M‰±ù@nØy·‡ñëÛ÷ƒ^Ö½é«nÖ+[m¿C¯›YÝ®6 §¸xó~ïæÍ»ÞnùrÝ$W¨½L Y»”±õc9ã|Ir5­ƒÞuÌËö"Ë^ÐâLYœ>±sqY.âƒÀ~Jîœn¨h°©ËŽŽÚ95¶»Gí§ŠâÏmö‚\ˆ‡íá!Þ¿"FU.Þ¿_g<<îò8¸½ö×Ç"B ãÂß³é/DL8jGä4>AÐ1áv/ßÏ [Ø—*›?A¶»6,Î$|ÔŽpt!ý´l?º+Üà{ìÿÑìk˜NÓ0îÿ;›7‰X³ümˆ\éåÿ¸˜´±H[6Œ^ðœ¶_ÜŸ|Â\ßµ‘ëÈHé¨ ¬åŸÈïvÿÚ¡Ä endstream endobj 175 0 obj << /Length 2077 /Filter /FlateDecode >> stream xÚ­YYãÆ~ß_!8K!Í>xåÍY8A‚ ¬øÁÙËC!©ÙŸª®jŠÔP;šÄл««ªúêè–Ø…ð»,Ü%J™NwEû.´ÔáqGO'˜ÏFÁù×ûïÿE;Y˜‰Ýá¸\êPî~õ>Tùi2ÃÞWJyâ/{_ëÈûзmÞ•DüXw†Z?–õTw{_ª8^´ÿ×áŸï~<ÌÛGRÞyNä|yÐxyP¡“ ÞÅ©„ÒtÖÓ4þ8=7w¾–,B~_¨@D,ZßíeêMCߌ W*½/U>aKx õ äH=ÓÍc¦£±O&/+´¥ã9­Ä¬SOŒƒU†¥TÌ ªlk‚Òa¦Ë` Sïömš`ïÇqæýãHtX\xf¢ŽÝ¾ÿfIWªÉT bXŸÖí»MuH ÍÔq½ÿ3¬'“¥l°zgžP.ƒ;DB™F>CeÞvb”Ú"dœ®…ßC¡î€OõX?lV‡A˜-Qp†‹ *–Þy4#µrú¸å #.ç§±úHßÞÍ®ç¹Àö´b/¯›¦ƒ¼‘ ­¼8>¢¬Øp²jQŠè^—4?—÷I zÂû-ŒB²tJsÌÏÍ4…³- ãù4™ödq = "1ãT„Þ¼Å)@òý¸! maö ™|ö·4È2–ý¡îJšžýñdŠ:oü¢Ê‡ñ_åͬŽSÍ:N#{x$l*TGA–Ì?ߨCˆ@å¢M\mÖ&vJ üãôvQªÊ–^‚'¹('¹s¡°L©˜±¸Ò*ˆ©å• ²€^òl€k œaòÉ”Ô90¡›g¢=à$nÓvÐø¼‡6Cç·‚4ï¡eWÌfûg¹G<?¯ÒÏ«ÕÃ*^Ñ1*€Èoþs†éè¢1 _EÌ €U>ûm>ÀÐ?åƒéÞ °A"ã3aq ²ìHèULj)*l²°6lå¶|jó[(¢gbj{ <íÙ¬U€³8c?,gÛôáðFj¥çÞ¥!òÑ(ñHCÒ.9bhÒQê²´râ*š~ä)éöú&^ÝftA0KÁà‡Êl¥'Ž,dnÕ ß‹Â Ž“YÑÇ㦦“@¤rÖô6X„Œ­³u)ú¦Lé}{jÌT÷̱þúÐH«%%k%Õ Ð@¢Ò·‚FIÍÁ šz¤ªw¹œzdƺ€¹¬ÇScóÌóÈç³À¡©>Ã$(˵\-Η Øz@ ê¯Ôëôµ«`ÃÊ-“lA|%^?r>Ä¡Å!‰çLPÂfNŸ²†M”q°"¢5M°,6­(àÀ8„\Ô-íQ»š·B ¡òÏÖ}:¢‡¾å·œ3wQ üN•Ù2¥Œ£@^âýÇŸÿðÓÇŸ>ý¼eRß1¯TL²>ÕCßµ³ÜèT 5—ZkVy‘eÃ}n@N¤bY |ËÄ+þ©ëxëügœòi¼«NF—‘™`èdT7ÈLÞp¨+¥z³Ë„ËR7Y{R(^ ¤5RàjXC”\G*I®2.jd¤rÉ–D2ƒ XÖä\¦Ú$h›ØÆ‘íéÈÐ𠚡Ҫ´Ø ˜‡æáæA—@/“Ðùo¸=vÉ‹Ã[ aDk|ô Í!yì—\À‘éàçPN…> 2â JßF¾þ#’FšIúó-1ùæ±îî¼)Æzs¢ê8æÒ¿”1©ówr°Q7OD+­˜æØ¢<á7º‚íí³D[²¤ œ~ÎYÅòªîò¶ùjŠ3¥|¬*¥\©èjÞe|³˜ãU¶âk˜*œ¡öÝŸ¾{=nm[PÅ1t^šÐ¥{Š Ïþ—ºœªû­©AˆKÜ3×bƒMån·0ns|Çb0TPÅèÈç¶ãb .’%‘m¤€ï"Nq}æ*®[Ã^6Zá¹¶º7ã–·sÉ RŽtf8öX¥?ñ¢€áÁú‹˜€Ýšo õc‡‘ž;GþNk¦ÆŒî’Qå›A(ÄÀ@}«0À½˜U‡t;[†ó%{V§8Ù¬ùŠ?i4™rñäÐMhx©";lÔK[äÚâ ËWUê,-æ^7ØAzw¡q ºk@O_ì+jÑ—X$x_Ü{ ZÀ›ÌæùhîNϘ>©¢ )=#áVE+ÿ—ô¼ºôÂâKˆŽD¢ÔØå­¡sÌÖ ¢0\ˆ;§åø:-×)1'S¢>|Œ~݉t¾ZÃ1+öŠ·hSERà &Lþˆ L (ÕÓôú3ÛºÍO÷zqw‘Zq!¦ ÞHض´T¿é ,-caÍDÌÙJ/Y ´X$–;+`©æ]P÷xh@ DÆ’÷üDQ3×€(¾{ð ”È@éF*ªÀ*ûJ« øÇ÷›mmd¶æ3ø› yyÅçZ“Ó'\ƒºÒ c²Úݲۻe)”]3‚~¿µ[²µ¯ÍO*ñåI…èœ%ÔË,ÁUW$™¾ªp7}G§ÙÊg±O>›°Ï"ÅJUþɄଚf«²oW•ƒþ¶ÛÁÅaQÝý_ï ˆXߌ°ô^0× ÿã[ àå9ÐÖ¨€öâåNSå‡c“›ˆõXßÑà媎#Ž5§A|6Xè«›úF¦^݆”„eÿdLԱʗќþN%‘¿ÔSÕŸ™·íí^ö ¥áä«ô~áwȽ Äü‚áÕýßó_L§Ïz endstream endobj 179 0 obj << /Length 2520 /Filter /FlateDecode >> stream xÚÛnë¸ñý|…ßV"­HêÚ¾´{pZ´(P`›¢»ÊØ´MD¯$çlúõ›.väO "‡ÃápîC«M jSƛܘ¨LŠÍ¶þ´;lxðãŸ?)Á 1\`þðôéû?¥éFÅQ—jó´_’zÚm~ >íipÝChŒ ÔïÂ$IƒÏm]ÛfÇÀ¿ùÆñèËξ9<„Úd… ²‡?ýõÓ—§éøTë;ùDÌÕqéMV$‘2 óúúf­ÎÀކó³Ä:N†£mxô_×µ0,U°…{´>uîçX%¿>¨ö« GpTmsxOc8zY‡3ÓéÌ8°Ã[Ã-Be"•2c;UvëD`_ýpÄQ 9„¸ªò§IÒúÑ5¼¾ó=l|ÐEðFrÅÕ´}ïŸ+‘;\ãT¹Á·Máé ªl)ª0Í£ *¢¼È™£yKøËÙuo¡\ÝËæ 9Ë^¼Œâ½OGºl4ÈÙ¹ÆÿÏÄ *Ú=# ¯ùÌ+‚¼2.uà¥mÕ`M²ÂrÀ•ÕsG¼—/INëÀö/È ¦@vv¼ÂçW_Uì*(ZÄ¢ €.4ÉÁ­›v`ã–ï¤Z€ -_½û:‘­ ¥A‹Ä|¯jX{ƒYN®ƒä *—d€*B]höJW‡U¾zç-›#@jTÝùÜØbà¤kœônàcˆg<·á¹'%ŽÃæð³"É9åzT ŒZ¸_ζ’E<'7ALì'ÁܸƒüëƒpQ‘b°¥v–¬"_h•fbÉk–è˜d'©! NØË1ºìÜÞž«×+_ûá¾_‹5*)¢Ìäp ‘Wq¼TT©BHëAKk%ª”¸•q«yuÝÖn°÷E+ôDhÑc"ò…ïÖNMTdÔÄ=ä†5æU”Dp¾Ã\’ÅKqqÇhc"eáa‹³£íìl¢·`Z BÅùÃ7 Ï~˜/ƒÊ„Då¹¾¼1^Ф1*qŸ©‹¼YDE22oû­Š:ðkÕ(x3ârh}cÚ=¬k¶ŽgÏ”¢`œ”A?tþtât•J¸@8ߥ »Ð²#bsÇcƽ|9P¦6î?ÞéÚè¢ÄL—úòÏ«·‰£¸,G¤ ¸ïxe›ÌÚ¾kk6—a4&I#ìA­ív¿Y—ý¦µ©¬Œ´2ß”n™[AZ»Œ„ŽÛþ°nwîþr…¼Ö‘Ö ‘Í5Þ”L8WŽ¥½Qé”0¼·UÏÀ¯G/ê¦)É[¸çlò0 Ö¾/Ro+*oTeK³ ÙÆÊ$2Ået~©þN¹+ƒ/tI;)ä2:ŸBÅ#·µËb= Êvøý$äþ~©í¶g47½¶¼fÛÝ]õLc I¥û‚Á ŠÁŸu-_²g¸1ë–údAƒ…¬{êu©ŽÙÐa’¦÷é(}1"\+¤„„Þ¬17`¿s‰9Ò¶´ð·Œ;/—5…#ù¬×²™É–¥l¥ëY% íGœMñ÷ÕÿßN£°6£Šoé4È(Ùvˆ3—¼wU&ÇgÀ/—ø&Ž’rÎeÇû5œŒ2”«ÕW“›ŠAFqzãàTR-|]ƒ°FÓ¼”—„ËEB“•.”Iâ.Ê”T€_(|ÞŸmt ™³®Á¶!RRSŸNåè¾¥Ž?$Tm7‰û¤üª³@2ÐWøÚvBK®Ocz`Z±H'Nf v2¬"<ŸD‰Óœ½¾°5‡BWPZÞÈL~ñ>8mº¿âË´>tiT~ 5Ds+°9òÄ×1ç‘ßPzz9ÇD’fg±¾£uÀE̵/<¤& ÒaéÀ€©½é—˜@åÙRí÷ÒƒŽ«bì·ö4?¥è©êyêåk¹éB9ùÊ>c”!1jü³—­|¥ìF™  Jç÷³2‰ºÃ]åxºÐ-ÒºŒLª–”õ%\@®Êý£ ׃—ÊZCS˜çWM!1†Æäx`–D8êÁM‹n-5y ®^VæØÐÛ²g¸àà;’†x‚9kíé:èä—ï–;†Yþð®­x6eàVs7Œ³¹ ­G/\ŒöPPÁŽ$×cápmi+…÷ žÆQ6·©X ºQ®óB:œ^–ÉUH§°>ƒÄ_ÔyáÉâcä=q‹nN 6•òFÑm¨ÿýƾPï‚@\:µŒt…n~8w²$‡:ÅäUÔT4üVsY’•üRr?)]ˆØ± O¢4ËÖ^—R":Ía\a(iÏŽÖ‹3–¯ ¶„$¤ÈQs„“ç3ÜÐP1¡µ—ˆkyÚZµj\SVK . áûηL†5°ƒ­ésÀwßiÿ‚¦rÑZˆ¸‚¯—íüHVPËûÞ#Å©aËêkx$ýD–ˆ(²tµŸH!­ðë8¢R0À„|~c÷ [È_5ý+B›áqúýÊ Qù­¢Ã<عñÑžP¬43³öøG.D©I@ä’3]í†>ºÔ‘™«¤ûžª¢ñ·ÌÿG:Œü endstream endobj 184 0 obj << /Length 2322 /Filter /FlateDecode >> stream xÚ­YÛŽã6}Ÿ¯ðÛÊ@¤ˆ¢¨Ë>f0Yl°À™ö! °›nÑÅ+ÉÓãùú­›dIQOwƒšTñVd:U¤Õ.†?µ+ã]®uT¦ÅîP¿‹IÚ=î¸òë?Þ)éBÇpÖó§‡w?þlÌNÅQ—j÷pšOõpÜý¼?ÛËàº}¨µÔß÷aššà}[×¶9²ð_¾q\ûpôƒo÷a¢³Bùþ‡_Þ}x˜–7IòJ=±ç_ÍæŠª4²]V¤‘Ò)ëêû©ráŸîv±G\|½9ƒCB¥#exÄήuMônàÊÐbi‚ÿÊ‹E³$Êòt¤Ñm³µˆRQj¦>û¦ËUð«³ÇŠN yòU%Ëu7^×ÍdÒx–н\ª½ üaªÀê­(þç>)‚iÇpjp I!»T¬Äo³L?H 3ô\=تrÇ,«Uð±­‹û[?¸Zú4α¦@%/2RÊIa”‘ÂÐÍv]‹Š=±œ•Dåo¼° "R7^*úp(ÝÉ^«?ÒWDá¦Iram4Éé´i“¨•)‚þz¹ÐRm7p CÛ¼H¼Œ™pZ$qðoéTãFòà¶& -ÐÀV=œ•.EC]à~˵iøA0+Lpíì(A5±ì]#çÏ8f?¡~(:à÷Ùvö ö _'ä •f°Öët1˜¿‰ižAµ*£ÕQRfoåIƒ‘H%Z”ì=.DÇbŒëNmW“¡@ƨÁ^w‡@¹‚b}zF±I£Ü,Pü´'üÙ‡¶¾Tn€U‘Óô9Jb{Ö|*‹¿-%:ÑRÆ}…‡¶»…—Îõ®ûìÂKë›áU1-I¾GÔ•Ñ·-YDºx33£ªüqf¡¶œìS£.pžC¿ÔçRÙƒÌ1M&lቾDÿßcâo¡)£B›%v×®sã]ä(èÛŽÝWfì=Ú¦R,¶Òu"ÞÖŽEïá`Æ&4r ,k™ X:íœF!(7(¡sCçÝg"¢#Õ“Λ¡NEyYŽ ¦ÿìÛkŽËl˜¦4QYL#ÚnªißAظ/÷f„P•'“g#Û¥‰øh>ú™"3åŠG¾ËUú=¦¡Ó‚ðFéý×WÞGrdÄ^RB¬ùâk´ÓµfA#ðÿ“iOÜáŒ9[?Wv Áì= z‹‚ 8…o¸IV¿»ÑB¬i-`É ±t KCÚI, ‚¯®k‘a‹øúQNìøÅIÙ@û‘ÇÞá‹ç:c«í·ð%A¥(AÚ´[`o$„:-VÓ€§ƒÊtàM”•o+Ê m Gqñy9ru•)*×ˬÃÙ6\ÀH’в-ûm(ÖÔÚÌÎ>–—²i®PÂNä†ÇËqè¸ÇÄX+~ºqø—AÝ´dü(¦´f-lXkóW<,UË‚’EV •¯ý@§k9Ý m'%’òe˜…j),g)({Éٛʹ7%5òlræbŒžXj`ä@ügõÒhð ¹ Åz®Ã[‘β; ð,s-g Ç¥á£ás:ÜœzÒáfsSgkSg’foE ÅÇXƒÑyÀÄñ6_1÷,تíü×¶lö‡®­ª°n_›¨=ÐM—ÏÀ_y¾ž¡ä@&.Óq×üÁšB3i ñ‡N¤|ާ³2ÊTñ¦üާ£¨[>“4%i¤óä5!@ÍB@˜%ÙšŸp¿ÚÏö½¶P¾m K8ìFÎ=®v¨¢ñ1_ÀÌ!3ª@HåÂkÑ„I œLÂ|AÏ(˜Q=‘+ÖåÕjŒ ® X£pEÚ¼ µÍŒ/a8U5òí¡sNš%q†š$Ô)éz[QtÕ6„bؽ0GZÜ™õɇ3WÉ¥xž-Íxy|$)C›~€ü÷eä°ÀÛ:{¹Œq)ád+á€Ý, )²à÷¸¬ã~"Ž£H·(ºÓ-.H¯Z1•L®3{ƒ·p=—þ&‚ËÈwy”À‹Da–üà›Ëu 7‰7\Þ O“ø)—7(·Sþ42EñæËÜ•f—/˜œáеñ‰ˆê«4ˆh;\Å\~ßÇsà‚Ê¡rVž#LÅi²pCΕ08kœù›V eUÚÜ{./ïÒI:w°›oôÖÃ÷£íŽœ\`;eyP>‘ËÓ~ã!“u\Œ–Bz æ"øÔȦä;MPìÈäN)MÔsŸm^…‹ƒIË·Á6mÐÒuÌæ1­Öj¹³Ù«&dÂO” \ñR’·fÏè§b¸¦dêM·L™þ$ÓŸE…énV‰à02£'†É €Ôiõ„CVp ©ZÞ§Ç€oƒ[Ï6pÒjÒ’^ O•}ÜtS3?ï‘_,³JkXñ[ÍòS+oðü‹}æ$õy¤QRæË§߃Ρ òœþUï´w“Aô€TÃÖѰ<`.5ó#”q(¤çöZE*ËÊd|,}¼]»1Œm† Ô[®×IžÐ5¹EâÀþú©wÿ»ÊÕ¥î‹;\å7‰||ž†ÊB]Ù^Jé!?qlèÕ;·þu#IÀAòœÐlâô…_8ÆÞá¬ûÆÏ1ëIåjzà§|gQQ®þöq:!Øò?pz±ŽÛõZe]@”½Rcéü‚«)ÇS@f¥RüøD¯CÌXå*KEÉÙJÆüVèGi”.)é6%*ÐûÑóZ>-óKA—hX1ÿ3YnœMðÃÇ÷[~’/%“Ç d~ü9KV 5ðûð——g’è‡gu÷ÚX#„¬!ÕùêyeåFL&,¢ÿ-0%@ endstream endobj 188 0 obj << /Length 2561 /Filter /FlateDecode >> stream xÚ­YK“ä¶ ¾ï¯˜ÛjR+F)’JN±ËI%•“Ý·8kZìieõh‹ÒîŽ}‚zõªg{\©>ˆ)€š?$ðãyò …`¹4Çæ]â©ýó ~üÛ;öŰ1^íüîðîͲž°<ÉùÃá´fu(þ}..ƒíc!DÄÿôK™EßwMS´%ÿYµ–F?”ÕPµÏq*”á‘yü÷áï~8ÌÇgiz§œ¸ókAÕZP.5SÊHÆ…$Y?Ú—¦¸à©×Ze¸7¡]?ÙÁ=Æ:1Ѷ(kþ½Ÿë¨*mA+݉(ÃÙá8ö½mS ´òǰÈ#¦§º~^Ô‘}¡ÉSÕ–h Dˆ¹`<#IŽdFÇ`£ÖÑwcUqÕ¶Ú&‚eÂL:ÜÖTä,Mòi_[4ÖáɨèíãL²$mc›âèöئ†)1oû°ÇÉ0n6|b7€vE_î14 lç¯2ŒØJë`2¾æÜØ¡¸qÏ©N_åÊ3ÆµØ zê/ÿvŸª=6œ3™É7±‰›î“Ýã%¶\ï}¬‚›Ý£`Ì9Ѳy{)[’¥Û ªÖÙ~ØåÏY&³‰?ÛWOõ *f¸žöTèÑyÙ_Çê‘GŸ³,*ê9:qièv=”³47÷YF¥àðóýœdÉGÉRy×­eàéµEí:ñÈ;3Xg,{­A½´Wí¥)øŸo±äò›A,k¶‘‚KoƯlô}jôҿ7Îé”ÑÑ_.—º:CÕµ.h.ËøU¬7…×’‹•˜od‚ƒ ß,jš{ŒÆR©è€xÄÒžŠ±h´ÃZåöKÁ:ÉZw"¡?7‹˜ÎàŒ–„…HÚ)ÎÔ|¯A;Ì1˜51ÇìÈ#ÀYùì2–R+8X¹ë`:eB-žèï«â©ö©YWÃ㊟.ìs .ø ‡ôÅb0¡ì†9f7fc q ;5'%g‡ª±Ý8ÜLÃ#ü©:V –Ä\•jCB¥:ʱ÷^Bä)_ÓìsU×´ë3J[TÑ}FrAó#®ž‹¾8ú:Æ¿p¶e,ãMj‚ù:F ß6<äóT=Ýèˆ4§yœ€ê£m–f]&ùhtœ¸Mà‹kKm;sFûïÔ «c”ŒFGr‚ ÒE­j/ã@CÔŽFþöaשèå…N#´®H0Š©¦ÁS”Oû@1Þ±Õà™óµŠ{ÅTÕ]ûìëG Mjùɤ ¢„Q¶üû‰–ÚŽÞUá­ðÙÛ£¸B>%Q>WÃ™Š¦¯äB“HÐ5¸$hž% Ü£,Ã#ò&ÜBÞ„£ÑMoM¯»s×{ßÁÉJ„ƒE[œÍªùl¼su¤."¨ºòe“D#ÈâP*Š€ÎF…qi^8E[ûÈ€“ûff âö4é³íܼ9oUXÒÓIU=¡Faàár µ-ƒ‘0Ý ]7öǰïV¾ä¹d*›qª¯ÿµÃnÚìæ`Å”šÓÚÓ” €+rbÅu9ŽèaZœqˆ>ÂG4½G ‚p•acKϼ£röØAµþmšûˆÂ¥€2 â{*‚;’y’$…-ÚÞŠaÇ?V.=V€7-ð&ñN‡Ƅy2Û$GœûûA—ã™.¤ß‚Ñ6OøýnÏMœÅ;†Ðñ‘ž(ÛðX'V˜ÖÖ¹°ïìQFfà ÁîqdÅä7ÛwFœÏ»®øCå{oÛWG$êÅÒöD]Œ(RŒèG³q6’Wa±€Hñу“ªØç¥Ý<âÀÄK ÏÒV9t®(ÑÌL¦öpß 3ŠcÐQ.ž…QÇFÅ Ð7©yåh¸v£˜I4Ãa,IvËj µYúju®Î™vb“離ÿ—`ñÐõ•u÷åzô?Ésò& Þøüe·´á–r¬ko6VsAûþÚ-A3¢á/ˆïþ †UTãy ùDA^ˆ:õÊ0<<¤;DJD¯ w”K(]ÚÒ–„2Ã2¬¯1èªÀ’xžêZ¬/ï.Õo”i2e\ªËƒ:²:U¶Œ1VƒÇ ‘‹÷„hôÄ„’  ,rInßБ É Ü¡¤ÜÜ/~‹) E;:cO,+w© Œã"A¶ÂQbËdP‘›«z@Æ}Äò(ñlWp¡¡šƒæ»¦c:[¤÷˜¤ˆ§¯á9LŒ¡wêÙ7ð3“Wâ”›|ÕW@y@í‘F‘¯êÙWñ•'Jjþ>`ÚtÞOKª°'W•‚I“oòO¸_±½_¢¼î¯93r ÕÓé&ØÌNýžØ=Mw´ÄÇ O†WM(¤WŽì^0ÑGðäß…G*KÉa¡*ñ_nôØZª·ú«K¡XÒ)gð UÒÀüDG½P³á/®«1óáz žººYZ“P%¥›{\"ÖPÙoá )=œi%¶pF«n!Àþ ‰ŠFòÏàÄ8^ÕÈ«;í0¹nî¿Cr¾îµC£p;5¾ê¤&[÷Ó÷9é”b¨4¿vÆáxŽÏUYÚ6>UõÛ@5•rSŒa©Ò©O…Eï£8ðõ¿¼ª©b‰~kÎÄ“&LÅ#Öu¨J¯`ðUœ"˜ÔÓŸÏ Ÿ:8àc–n?aM™ÕÈàÒö ki2ß¼ÑJA}½ÅÄ‚0ìÛ KÌЃéJè´ 4!2n ã(x¹ï©é}Üâåx ö½ºÁÞPtƒsšDR“…;“Wð¹¯ðä™y›cb&4"t¨pT WFRg·k !ÕÛ,¼èÑEÂíÑÄøÁ‚–|wF½Xb˜äéN3.t†ý5VÚZúî )óÒÊÞ~ƒÏç@ŸÏE¢oÖÐæS^0©Å™2SÓ× Rh冃¥F1½B‡{"gm¥wnWz Ưeµk±íO #¦:æ%†îãT}¹?« eBú:£oTÙ[>`ߛԄV(¨w â½Ä9``¤ ÏSÆÿéEÛ4vUxå_h¥;-[©œV̹1'tá¾yHýn|RàvÎUþª‘´H㈀8°*›4[ÆÉâ×0±Íeðk&–uÀ†é„—c}ýŸÞìç}7>Ÿ—o»>OùÔí¦f„Ñߨ‡Ýo¯Uø2»Ô­‰º-Òo¥1‘0aÌÖÿºq¸ŒÃkÿ¯©Í}xo3&|¼hâ=ÎÜêëôuæÍ}]’®k}`Z{³q6ZÚ|ñuÓv4ü™&t-ðª­à¦RüŸ—æOÕ\²˜¯7¯¿‚È$ Ví{‹<ê úv€+á»P G”‚¦ !U¡<ÁVøÜôeêLq›uÇâ2;#¼>}(À?N (4ðOõÿ°7 endstream endobj 192 0 obj << /Length 2309 /Filter /FlateDecode >> stream xÚ­YIã6¾÷¯ð­e ¤EjË1A2È`æÔ-`X]&Z‹!ÉUÝóëç-¤·\UΔŸ(.oùÞb±‹áOìÊx—K•ªØšO1qûç¿ýý“póB˜.fþøøéo¿¤éNÄQ—b÷x\.õXí~~:éóhú}(¥ ÄûP©4ø©kÝVÌü§m S?Wv´íó>LdVˆ ÜÿûñŸ~~œ¶O“äƒçÄ™ï4‰Ó(Ùe…Š„T|ÖÊõ¥aØÝüüž>Ζ«2J {ÑwÝñè&­vy$ŠÄOúüë•"xº¸ ~3ºªéî8zµuÍÔ`ü ÜsìÞ8‰i”‹l:J»y)àø“¸ånù“;BûäÁA׎q€Õ€1jÛîá\¸ò.L„ŒŠ<Û…ð)¯hìóiŸÁ>á¡¥TÁÇ'Ýëhˆ¶Ž¦yë$q”e/tÖÏ&>ô€ÑLƒWÕŽ•lˆ.¾¸Óù†à &b‚ RÞ³ÔÒ³äÛžU™ıÄ;Ž•Ä"J³r §î•ÜÊCÝ<ÙçKwùX†àT¬1Aº`xAæ|Á„U°uÒÌ_l×ódŠ”ðzúh<áxi0H|ÒùrI¾¼[äFñ­¤­^ÞíÙ1@'#àìÀ«¿ž,;0Od«/x3ÃJBˆbFªkëLö;g±XßÇò —väàäW!™¶[Ådàýñ9{ ÐÔÉQ€¶Mc*«GCÁ-¼Ôî-ªŸ­Ÿ DhM¿›[´®×!ã­ˆÁ™K}1K3¿¼¬3Éå_Aàà»›†~i›®²G˱øƒ–®„½¥#í³pe5ô3 ²td³h-uŽãÉÒyH –HÈ 7Ìü¨‡}˜äà ¶±µîqÛx­r… *Êg«AP>0{=ßð| e¡VHæ@ùX^úÊ*æ| ›ÚMã(IÒ»ó±2^:î2;ûPU­å3y$gø²ð) ï‘@±GÊü;„w+„1ætÝeäùšJ’o7?>ë>Üp‘ÑRÊ®tiáq³aÀË«ñýªjÀ9U×~™ tÓô´zþ¶›so0j~…ý5qHCäxâìi–œEJWüÁ‹ Xpà'Øs€¸Óƒ Î&¬‡'‚K¸u:N[&F#]Ô@Ä¡ÇÈH™ô;‘·b€Œd©þ Id‰üªÐ!l1¡mÃszï©n2_Ýd®ºÉn$©I$buW…÷Àî£1M«péí…¶{î-våöNáÚiRw¼šä.J´m+¨M¨ãäËì ¬Ô–j|k  7J*óÔ2q˜F†®Ê_,Î!G ;Ó”Ú¹—”LÀoõ¡D~*Ã4‡Ä OÙ,nƦ/«èã˜l*¿ˆ0pÞE™¼j" h¦\²•Ô‚Zi…`MY-÷:ñá ¬B&ãà×ñóÀÌ®%(Æu!¹˜"ŒÝÙ€â.•é¡°l¶Â âúÔïð] '€œÎDO> ÀLc«ŠÎL~„~øxŽ>Y¸Œf™=Š|ºs]EŸT ®`¼òÓ¶9:@´I2ÍÑË7J™w”bŠc­ÊÖ˜^h·ÀBèëmC©!¯â)‚;E1ò¹Øç@x1ðÈY'Ýñ”!> stream xÚí]oã¸ñ}…q/++U©¯}¸‡Ûî×Þ¡À!}ê(cÓ±°2åJò&Aÿ|狲”(½èÅ¢’Ãáp¾g(«M jS§›Rë¤6Õfwz“´¿Ûðä—?¼Q‚b<ÃüáæÍï>åùF¥IÖjss˜“ºÙoþ}8Úóèúm¬µŽÔûmlL}èN'ë÷ ü©ñŽg÷ÍØø»mœiU©H¥Û¿ÝüñÍÇ›éþ<Ë^É(b>ç´˜sªL™›¢2‰Ò†™ýÒÄ»Ó>>u{c¼OEÌñ\¬t¢r>öãø/Óh<:Á¯çø:MLm€/BŽÝ6«¢{¸­"¸ªññ¹ïNçqí6•VI‘æáø—m^D¶oìmëøÖfàÑy„íßáª^\‰uQO¸ûfˆñ2£NÒºy_rn-òøˆÿ˜)ËuÔœNnßØÑµÈ¢[bߺÞ1ŧIk‡‘µd[„u‡’ŽÎ}s²½Ðñi~tžxK—L}i€w8è‚—àbR"/I¾ÜDv76_ˆ{†³³!‚g„Ýäs"É6ÎSÝå(;l{Ù*&dä`â!^ð(z’¤¯:Ñ? ¸²<0è‘·ÀŒSø;´Yª£¡ã ÖL†Ú±àFž:a<¹ÑÆr…¤]çñš±ïÚ5=ž{÷kªÌƒCQ*#º©ttkwÛ¬Œ>`¿#ƒÜ°³g¶3#îçwá,©ð,d×lZtCÔ$°ò—AΑH8ù»øx±Œ,Ñjòñ_! Õj,¨ÄäÚ[ö` •åRFÖE¡×¯ËtbJ3¿-{ÍmDp¦‘!cÇ#ÆC¹;t1\O<¸0™)—dC}‡ñß°Ñ8ÿt‡Ë£ííN"U›¤Îê…¿AbÐw4ä“cÃ'pYF;ë.\1ô‚æ gÂ2Ž£;áA gÙ³‚âúSãm+DgŽE€ _%tkNÇö×Ë€Õ†’¸·¿K¸2ܼ½;ØK;ò‚ÜL¿à<*/’\“9Ó<…$ê eMõ„ü6Y£g&KÊ*ˆª“2+¦âÐøá?(ê[«ÿëÅÒ˵8Tùäk’¾Ò„œÇõ¡ iMr áú€ˆ~pýØtžÁ‹ Q—â¦€Ç o/Oè?-ê+ÖÀ±ý£>ü¿<|3åA}õt‚ü|•þ5jÄЀ{C}°ãðú·Cžräâ„´nêu9ŒI*£g…_¾“Ž˜©_݆eÚ;߬`*fÖ½„-Êù×`7R.ÿ,`Nns!¤æÁ{¬H²úIaä ¼=‰9)·“ Ûf,`&Þ ¤YA÷~n¦çá>ñR˜W`À¬š”y8¬j³Là-ºô…MlTž¨´^ÿO˜¸ñºY›`¥! ^M¡¢á‘#Â>à: ZòÆ,ZÒ§Ú€¨·á Úœ‚Ð1Pn|32ˆ•,PATh®ÊŠèSÓ‚ûˆiº»¬ïȲ)§3‘®0R><œ°^Ù†¬ãÌa3 ={wÔŽ<£fn&*÷¸°¬å¥T€ŽÖß!óF‡—ì@SÜ9I_ö4Á nGþèµ™l©Þ×pV%Ù$¦ëÀt=,ýbʤu@˜;`‹ÄB„ ¹ïÀ›,ÖãŠâ»56§¯"Vúãc×Á³‡]ßœ¥)Ñ¢\ŠR£6×,º›`ÙwR’éÆ"1Z>Ðü™ó3ðv5JáY¼šT!Ñ*ÆRKhw¾WôC~öÈ»Ð5†{ˆÿšSRm¤ ÄYãŸÜFn¼¢¥àÔØ´22L„5è_‰µùÖ:¸{vîêe¹ãí6?'®Ú$<ê¡+bÖ»®í|õúÜsBR]‰¦1|_–s±eè€ wÒ ~Þ‡ ªÜ¹žUn¤Ôñ8œYͲRlFœ:99]rÕË‚ã¥mLÅ"ã´ŒþÉŽdœÝ7m˳‰?\Híw=´—#æÚdzíG&‡j`zrîšô`‚BÊ pÔ­(9lñ¬;¼Ü_”D°W¨D—ðºêî˜ÊxeÅ^ à}n§ÁSf*I±Ø aLS§U§á¹¡¨p•X¹” ò|<Å[VSʥŔSa~ê†U׿€21r½Î?zO»Ç—P'+rnjý);‡l–“Þq£Ò¨wv‚5’PÆK ¼^@^t&~E²<\ÍÏ­cŸtqüþrûeg\W›™ëÎNAõ½£žqg±×³kï,Í¡'œ¥“ÝõÝj7X'E9ëU²F-Î4´U¾l „KòÎÒÐBªlj4߯Ñ-“ª¬Æá⩊Å/,3ð„©£éׂÞu¡ŸI½°JT]-Õo± ,¦ŠŒ Š)÷á\r Ì(Á)ö•σômKFHwù>ú;h TöëèÓžŠØ,!Š{°ØÎ¼_íÒ!4Ê¢’©å'‰Îcg_ÞCrÍòèâ›/ðP²mlû»ËÉùq%gÿŒé_.·À™ƒ÷ðç{xyÇŸ!åÅ÷]¿š4Ãeœúî{Îù2~·¦VÐER=j•jIŒ0+ƒØ·œí)bùÃ÷;&]dËßÄ—Þ?yšÍíJwÌÛ™é&®$çá"8éº=Ê4ÉLµÔѺžêÒI:…ºx<}¦Xý9þýÇŸVý”pýfFòçKÁù@òÑ$ȇ‹/_¡“Œ^…3ùÖ=å·ä‹«² ¥ø© ,”gW3®'. O5Ba!%®QHû‹ºNf¹Ae’¥z³2 ÞBµ-OG@ßÜ¥RâòH51†f/(˜›9÷ãªÁB”n÷ @E€çBè»­+‚çoZNùíûðˆ¡ ³p®iNÈ‘föi‡ŠLø|±lµ±bNU¬üð¨|„ endstream endobj 201 0 obj << /Length 1841 /Filter /FlateDecode >> stream xÚ•YKsÛ6¾çWh| 5S¢ø˜[ã8}¥i'q¦‡¤3HHbC‘*IÅNýíÝ@Š”`ÓMX,v?`¿]ÂtÀ]¤Á‚‡!I#±ÈvÏÝÛl¦ñîÇgÔÊù è$_Þ>ûþu/h@Ò ¥‹ÛõXÕm¾øè]oå¾SÍÒÃУ/–~ÅÞu½ÛÉ*7oŠJ™ÖM^tEµYú,¤‚z”.ÿºýåÙÍí°~ÌØ EÉKY¶HDDhcXú O½jÉ„wØáß#<´êµy¶ßFƒuYd¦;ÃέldÖõ3*¹S­iÊF™F£²zSÿªÜ¼ßm‹R¡«`ºOCBcc;©õ™j[ Kr¯Û-¶„÷WSßL÷ª¨r+#À<íA'ï_ Zp<;N¹€v «ée^ݼ±RSx‰yÒ }çR$H ‰›÷×N5”„It‘šþ¸qiŠ"¦hzóúÕ~1>ªÆa8·›AäÛ›?ßüüÖiY b‚=ª2!IÂ{‰w7·NËBQp‘šïÞ:¡â„3~&<.^þþÁiW$.sïýKB,Îk'^aLxÌ/QøðÑá¥9iÅ¡q"xÚËÞj_>pÎHÄñºq’E8ŽßÌ€”ª| ¥Ó9ópºíIÃAU^| h¨`³0 ¼uSïœ ÅÑ „9ÅD„¢––ŸqÎW=Ñ,UTø¤@¥²3=m×yZKrUÕ& ᛬ÌSU¾ñ›†)lT2u¼+ÜCY_ˆƒª2;”i]IÚ'+³7oâ©Ï1Çܸ÷ÍÈïK™ƒ@¾ÛάÀÃót’ׇU‰,ôþ9Ôj fc꽯{4:ÙúRÀp"7ÕáÒJ:°7Ö,ÑvÚƒ~Å£µð¢ÚLZ·­´ÁGlàåÐ%ÊGH;s8Ùèä§Ÿœ×ðùuddóéÀ µè¡Ž¨¾©æ~,#ÚXëiÄqÄ"ŽóFˆã«¾w¦éQï>Cr(¶v9Ž˜Úì!ÈᣃÍyà÷R@Ðr[gêT}Á£À›±' ãÿþÄé endstream endobj 205 0 obj << /Length 2922 /Filter /FlateDecode >> stream xÚ­ZYÜÆ~ׯØÄ4 ûâ¡X~°`òdl‡(€¹$g‡‡ñÐîþûÔÑÍcÔ£Ý °»º§ºX]õÕÁ7ü7Yt“(f:½)N¯"¢ö÷7<øý×WÂîÛÃÆýjçO·¯þú‹17" ³(7·‡5«ÛòæßÁûc~«~·WJâín¯µ Þw§SÞ–LüGÝV<ú¹¬Çº½ßí¥©„Üýçöï¯~¾Ï7R¾PPÜùŒ¤B'a|§:J³°ÿ:V-H(¢ž2 @p’)ã±ÂâãȤîÀÏœ§¼è»70VQ0ÔíN÷ýM×󖲛¦n¬ûSƇ©-/ÏÚüTÑ 2ø­ÝH*XTÒ TzO[¶8I‚òi—ª(^6ßå*çãÐäÑIÕPäg–g`J ¤¾¶2–LËïˆk‡¿þ¼ƒ‘e˜÷vP=žÁ«Òªå§ÍAùê¦ÁÛMùêp˜9ÊOº.ýˆÖŽ3bwÌû¼©n™ N»½XD‡Ë@ Šá6Ú¢™J6?Xù%Ž×&,³,ÔF $àwvÏÆÌM˜ÈÔíxÍÌÈ÷P/Wð©å'W˜&óP`GÁ/»T£¥£êöJƒ_ ±±Õê1?› o8Sö†Sº¦¡[z`çÒš5O”Õ;’OùǵB [ác¹ñê, Ól–íýþÑ«¸(LŬ•/QŠP·CÕ,@Î$ðurt{š$¡‡ReÖ.ðHÐ>ðÿwÃF¦y%ÀK…0#^ijàˆ÷È|D–? x[¦ä`ñp;*1àõõÈ#XÆ~*ÆÁ÷¢èV½t¯ò²¡ #Ôh!' ¿Ór~ò¢nàëoh½§>ÕMÞ3ü ¶çºGapŒÚÃ5ö9 ³ì#œÎÀƒ¡ ·ª|œúÊ0ÿ%î7ùIpî«3ZÕ0t=¯>ë±çÈÓÜYúÀ¿bs~âɨ’íÞ®Ú|ݾÎ)x e¨ÆqÙˆ¯ˆÔ¤qb²?t=¡9qx ¥÷ ¼òÔŒŒ1¸)@IˆQ〩up ØV14.;>t“ ðç¼\°/뾂ðÀÐ;0 ƒYè3\° €ù¾>x]#¶õ[~…/<[†FÍnt…¸6\áŒu‡ µ½"˜ßQ$w·R¶æÐEA'§¼´£»œ¶Ò ÂÖþâh×*—ààꉭ¥DùùÜ`†@ÆÍ›çß9׃ë!ܺßpN€#²‚5;4‡7>ÛÉœæI½ÄDœ sé‚É[I ºqæ™]<ªpÃãȆ%ÒûÀ\HéÒ©ù†´vº^iȪ¿á, ¦¶wä•öôõPyü¹ÅŒè [iÛ±]o¸µàÜ9@ïÄü4á=»˜•6ÖC×P^F“ñ+V¯¤Í•O]Y}»Ù«Ì¸MÈè“’¡Ô³å#2 |Â:{äl𒻉ÃL¨ç*Içp¹x¿$Aù%>9£¥ã:¦ QñèáXGFˆÌsÏ>!@rñlcr6j$œºÒ³õ‰¯S(æø[AúéK÷¤"sÛ8‘¹d%4hÂmù\ûØ@äš½|,ÁÇÐdŽ;aEÆ\Ý´d•eãÄfþüZô¨úÓåܬGE鯒êñˆÙ‹x Õ?®h%]. ›êÇêéÙµÏ MeÙ&•”èÞXÊ!ú˜-ŠÉ&y[T–N1Èt Jt7:Þm_'‚‚-Ó_– ¾›€KUéæR÷xf™÷¥OúXdzahõ¹¤8ñÖRöÅØ<úÆ"ŒÌ,€ä : Pw´Íê?—D‡¨ƒ}çÔ\¼3¼Ho#†âidlñ›w"×v{ݼÁ÷é±K_)b y¤°ø”,AèÛñ)³í #?>‰0]tÊø$3CN’ “àd)E3ç$2³•jæ '»ìâæ~°ñ¦¨±.xõ#å&Ž-˜¤EH_€ Zë.o]è:òeÛ³ñ‰Häu „ÙñbpèÄ\¨ú@µY‡4œq²G/ƒ”Šøš„ÉÂ(N_¦(™-ˆ[vG/h¬oá ˜úÞv,€D h}ñ"‹Ì8+™/Q“’•5 ‚ÞÐLΠ*V’m)“ØRÆbš BïðÃ&d$*6ÿ3l~ˆLdÞ0ER¿gHS/ŒÔì ' j3»ûk8G Ûs§’PF³øy ˯²“ŸÍéÉ×Ù™o`÷ãÿEº£~xþ®,3Ž1&ºr)znþø"¤×Yl u#ÖÖËÇ´ˆ }N°°ÐóÂ0a€ /CU8'ŸŠ6“xúô*Që¼@%Úæ¸@Q1Qn§ž]Ý cô^ÁîJ=`'oýÜÆö ¤?ÝæíëÀ>rf|ĵ[zó ¤ Âõ™B7Ð0¡¼:¹‰ ï5) ûìFGÁÉ®²O• 72ê,%¬Âûð§«ð¼+&¡ðšf²©µÐñî!rý†*Œ\¿#RN6r¯Í黩?¸ãÇ‘.©„!š¨ˆjÚÎ{õòùGÙæ)>—Î"ìðÃÔC2™]$zÑg|¡[×÷’) ŠÛ›Ýô‰8»™+fœ,‚Ád¨ ®å”LâôÐã{¯Ò/Ø1Ò=ï'lýMàk!Iäšu¾â9ß lœlÞhk@ÒXŸ… ÙØ9®Ågî'× çÝ®HÀññ†œàœØ]HdÄÀ€+ßTd¿¾x¬ënqvôygâu¿Yq «œÕaU̪KÃSjÛ¡´_×cNIÙêÖö‹Ûê¹¼õGË0Ý~ÕÀ6}ÆpWE@zz"{PPLÇõáØ=ì±O¶¯Ûý®îl:ï·Ëï«¶ä¶—û.²Î×=Öká†Ý’e™°‹e=Ê#ãëbKÍÝ%|ÚòXs:H+sy “Õ\!'ë 6€¾lMœÄa§‘‹bJ›tðspŽÔw÷}~â¹m:ã‹I¬1˜5ˆNw}Þ?ñœÒýÀ§¬üpih\h œÏ®oº¼X¡ùJ³N,ðe±gKˆOOT>OüaºÀ TÎÆ‘DUr^9có¦˜è«’ùóM3¹Ž1}pvõñ즦äáÒÜ0ssÃh÷íoÝÜ‚m:ÄѪѓu£!¶½VxºŽ%ÃP:Û%FXúƒâp™ò#ñÌײ·¬¾ùâjüɯ endstream endobj 208 0 obj << /Length 1450 /Filter /FlateDecode >> stream xÚWYÛ6~ß_á¦*+F<$J)ò’ é¾4Ý·¦@i‰kÕáHònößw†Cɲ£&‹Väp8œã›Ã|“ÀßÉFKÉ •oÊæ&ñÔ~¿¡Å‡Ÿoxà‹1^p¾½»yõ>M7¯•.(PÓ ¡àê5g¬às¡kÖ‹`1çh÷1¡¦¼’9Ï'¶ë|¸êh‡ýl¨þá¹£îs]°\¨KW@qtÁØ‹8vá;ï‹4αõO 5]eßØÆ”Ãšò.gåÑõ$ju‰ ÐÃàB°|sU‘¡Ä¥¢ŽJÙÕsðq¢B›…¢vÙg-Í;1ªG(ct2éz ŒÁ†&;ºG1vm í¥9NÝ·ýV£äêªOž¿Þ%4æÁç–Üdu°¶]ŽSfÃârN ±¿ LØyZ3Ú Æ´ëíD±4™ÛÉËuuEÂòDŸ{°W“­FFæ7׎¨‡oN ax–¶bbº@Ùõ0B"0aX»Ÿ8VÊÓœÁñ3,;'Xåz[ŽTŒ<"û0«JL.[ž¨—£†óûgŽ3È難u ™1Š+¹¶¬O•}Z”Ö×Ê* ÞÐt8 QÈ_€…FA¾SÛD–x|qÅ}¿?5X|» “ŠŽz˜“‚àr ÕJF¿PÑÎúÁ5í~ Bh¼B…!W^òÇú¦y½ßæ4Š+!éÀ{âºÅß:Y¨Ø(¶Ã#,„z*„pï욀40©²›+[^Ù±|åÚãiìËÕ —/'­õR% VÏU¥ Áö•åËW4ˆ€1 óEÐ.¤o+^g’IìÎ"ú3|©Óè×Ö´zïÖ§i4Ð$%ÉùÅâ°)Š{…ÿ"ð;7Ü`ª…õ¦8†7'7|Å_2gsBqh–I@µ×£®¡‘÷T·0ÿÞÃÇT»¿Å]q5z‡ÁíÛ À-t`°Iƒ¢Ws^‹í¢kMM™;<Ñmó™M¿“ÿ` ³ endstream endobj 211 0 obj << /Length 749 /Filter /FlateDecode >> stream xÚ½T]oÚ0}çWDí¤‚T§1I TÚÐuZ»­Í&¶“8Ä*±™í”òï—ÄN€hؤ©=Ÿ{Ï=¾÷BÃÊþ 1°Œ¾m›Ç3‚¤e§|f(ðxÛ‚úÈ.‚›#¿uq㺴Ì5€†m†òCcÒÇh!1ïÛ¶Ûð²ÇmY’ ªÃÏ„b…®C" u@׆lC§óËÿÔºö«ün·ÛPh~ó­ÒÞ¦R=Ó3zýìÄs”ØÓNFtÛ~L„B™c…F%gs}.c}<Å1z!,åê+‹ÔÿyQSŽ]¤RA\–WDf<¯.S  mBn)Xp6ã(©²!"¸&àöá»…ë´s2刯Ì€–kµ¯_‰(r7MIh0OCìÆÿz®Ð‰XÃâý W#s+nv®,Õ®"ªÇ€gÔŠ+ÌãAý-–DÆ Ák ¸y aÞc¢|±¡´z‡u¬³Ó3]¯ÞãU5ÜÕÉ¢œ¹Âá¦m~òÚÎ=øru’/ô®µa`#~3®8YKì¦Ôʱà8_¶d Z2¾:˜hTÑhöŠ)û[û ǧ»=îÁöi“&îm3xWËqœw%«uÿØz^¹#dƒV<ôLZrþ9Ö i÷únó†ÔÌqÅ|ÏÚqXéNMUäÿeô±=»Köä¯mžì·9ß ³´ endstream endobj 215 0 obj << /Length 955 /Filter /FlateDecode >> stream xÚV]oÛ6}ϯ0Ô³R-+qôÁ1² à ¬…ßÚ=ÐÒUÄE&’²c ûï£ÄKª¬,мä=çððRxéž=D³û8VëYz¸‰Ú^ñ<3Ï¿Ý`‡t êD>în~þ5If8 ¢<ÛåÝ¥vÙìË|[JX 8Žçø—Z­’ù–„e¦óOÊÀ´ž2ª({^ eŒ×xŽ“Åß»?nžv>²\þ Ð&ò[¤w]¤¯Ãõìn½ q¼2`ß_uû#jþ·èË&Ðxã»ûd^ 8R^KTP©¸87Àt"„ã'£sý\oj8oyÆÑÒ*„^uh²Læ¯5W!Ê$Õ Å&ôXFó±‘wf… 3O^fHªs æuOõ<ö.Ž’h¾ÓhÌ€Þœ ˜}QÜFÛYª° rR—*ì±¶‰w›G‹>凪ð>’Tp—­ Ê´ˆ·;£Àì@Î…iÈÊÒ4)Ón"©¢œÁ¹Õò´qDc h« XVD#û˜ }«Ë3øk³ûýÃí¿Íã¿fL„}¶+7/y0A›ªòÜøê\ÙÒ5…iŸ¸°-„&¶2NÐûk×cvnZrév–×{g’6‘sö`þ ÿ©¥Û˼=ì=a/ÚcÀÈÍ#ðB·oþo‹öÁ’¶ÒíIú"ËÆíëWí}ÍД˜‘q)©¦ –†„×X r(LkocKªK³í˜`÷©U®¯kZ áÏŠ;*®Ru 3åµö^lcà ¸.Æ&Ëúb›Ó7†€\€Ó×/uÅo4µÃ®&ÕlÏk6 [8Ø2ANÈ*š…'D|ò‡þH%ÞùœÚ¬^«®Ì{úÙÿE/·æyîÆB/äüat»¿[ákÙ/G*©'²¿”ÉÜQƒ¾ºäHhÙRÉ.A]ê^ .Ëu\g?ÙÉR ZYE Òkƒ+æÞyF9£®F ­¦àQVÕ @¿×‘‘²ä''G%ÑOÃs7 ©)®ú }AèâvÝ_úJc›ì2Ó­«gNß:À/•dŠ®]­K8ŸòHFeU’ó8ÇUÃóô¹p{wD|öŒ HUyž n•ˆ@lÆ62Ô Pßž0Ÿ™×jrŸ—ýêœ{ZîRõ·ëû{ÖÃÃIdw…ËβŸ1úûB^¾B®S'—BûÞÑ~è«Ï¬èct#'ÂÔÀ{ÀûÖm¶_ï0%×9Ò®gDä…¬ý˜þ‡Û"4 endstream endobj 219 0 obj << /Length 1560 /Filter /FlateDecode >> stream xÚ­XMoÜ6½ûW,Ü´@ĈÔw.EcÄE‹(‚zhz %î®`­´•¸vòï;Ã!µ’VIì&ðaÉ!9||ófH™¯øã«iÖ«jk‡õq2Ìiüú#8¼ñ?í®ßÒ¼ëÒÔ‘;ÿçë¯-ÓòãékËF«î|æ}–̓_Ë^û²Û-móJ5%FÞܦ@HÄÂ(Hˆ/_ä,ˆ-!œEà6Þ»ª)å}JceMaK‡höäs*Ü÷$ÚJ;K復ÖA®aõgêXWãN{BÁ‰,ðtKö‡µH=õ™Œ½ú÷¤šBá=™Â˜“é%ë< NíS¥÷-* #ÄfŒ²´Gè!$#i´b缡YÐ)òp2kÆqøÞž Û¥ÚÊS­™áË£°%L¸”ûͰš7†€ÌÛam]·¸ý% éGŒBÿÚÆ.Ÿ$H˜³4ÎàèÆí‘0U ^ 6èÒÎNïÔVu½EÒ‹(õŠS×)ëÈzÌ:œ…¥^ÛWí5tòÔ³a¸€˜G,ăì¾,Lù ÒçGAêäÓA¸‘Hµî´ïîY .£–@¨^¾d#fá ¬F#©NØ2a`xÅF‘÷×:‹°ÛÓ¨½V9WjÕÌi­´67‹Y0»ž-½eµ«tÿâ€ÎûÿMòq@“ŒÈ+Q—ëÐ4'M®G1… Žz¬ÚSO=„Ì¡Dúq ¡£3É,èpBça.eGäFÞðD¤ï ¸{fUçù”þbÐêpÄ+*ât/ÃïÁ¼d×hq0áJäx]|ÐèáÝfWìÍÝW…¬í˜AKí¢­OÛn›™“!—ï©WWó*ÒÈ–A¸mc÷ãSU×ÔjZMkör¬%´è½}CÞm•¹xq TpÂSš†ðíô΂ÆäÒ@Ãðr_ÐÅIä¹W¶ÃS<  ìZ>8ƒùt$ë¡í¬^ã ÙÚÆš¦Œ å¼Q5X lèÏŸ%h«æv’ôAé6\8ÊùæQÍÈ[¾–Ž]k´eÚõiôv¡Û؆μòñ»åUêýsó‹ÞÍ‘’¤EÌr-ìf[A¸ÀÖ\ªÁHªç@{kmƒûQƽOÚn=öu™ƒã8r€ç.âØå S˜¡1ËØ¾^±qNèŒzFIã¹Ó 0œ?]‚p–ü‚œ{Ó0ãÓ0¢žò –iˆ<€`ã+[3i>8=¾Ôã—»9 Ιd’‚¾]£¡Ö`ûœ>á<}¢Åô OÒ§zAÞµ’?^NÏ«úùisƒ.áhgæôl0 ÐQ'ÍwñlöŒdaˆ|m+˜2KéSú›«ì–z6W·Ç…\¹`™`3÷¯°ÿšU Ÿ endstream endobj 223 0 obj << /Length 1462 /Filter /FlateDecode >> stream xÚåXÝoÛ6Ï_á·H@¥‰eIÃ0` Ú}`ÙCæ·uX‰¶…Ú’AIqóßïŽGJ²ì$nÚ=¤C‘š¼#÷ñ»ã‰lÀ?6Ë‚YE~ÆÓY¾½4U­f4¸ùù‚™u,ôF+ß..¾{Ç3øY±Ùb9µ(f9Wk±k¥r½(Šö½ëq;Wõv+ª‚ˆ¿—•¤Ñ»¢lËjåzaÄRæ°Äý{ñÛÅ»E~†g*Š+5O4§Üg'M•,”Ø{y§”¬ZoÓ«õ!ˆøc¨ÍÔÜ8ñç3E>‹IÊ\*Ù¬ig»Ö"¸CBÝ0uZâ tŸœñöH…\ŠnÓ¾±[ˆFôËNï¿ï¤NÝU…Oú$`Tä êã‘Baèó8$˜ÏýÐõâyhýŽ“Øyïf‘S+š\‹ªÜuAˆî,\9Ú˜üR6m­Œ ü`™Ÿf'ò\î¦îûCî-Ó‘À¸‘m§ª3<ËHòOZ2ìMçÆ³00ba¤äJ¨b#›†æõ’~÷k©ädÄ£ÑjÀ¸l ó r~]ÚUe3n)U]yr Z@Ü”;.NÙ¢ Ú#·‚ÖyQ˜È¡<ž9¢(dAô¶6¿kÃ[_kê&4ZºŒ\‡ã\'i¬d.6Úº/Ûõ©…óÐO!‰QQücNy Ü q» áš/iuÁ'h3Ä2ñÃytCø-|M·µvCQ~—¦ ›ÔxC{LþœXp(2ØVšv(rÛÆ®\••عiE+ýS^2ÉÃàÿ„ÌØ)y_Ö]ã(€>»òvç#÷ºFÜ»&þ ÒíÈqúñÒ¦»ª»Õ´lLÌnlqXÊv'À¯«‰³¬Ò4Ë!ç1“.-δ»’ŸÚS6Wg×Á&/kµÇ9déX¢ÕS“QßÁ\Qkç`T Ï«—Çö^{?|IŒ-{-òJ§3pG(®q”—çì˜gtº¬ŠGLøñ«š éÖæT]Çœ²ÚuÆ´5 Íš9&z¥/ýiZ>]›Z…õ2AE˜3†¹Y5ýÜ C:HÕH¯‘BåëS°VçûèO¢Qˆ7tl[djŒj{­ Ð5œÙ"N:à_àZíc A­ÜåÜv»K+ÉæX†Ðñn"Òz0X˜šXÉnJaQ¦;‘ÅQÏ!*Ü\É­Ñ·/¤:6BvTÎŒÖðÔñh^ždΨÈÁ„bE3Œþ¶ˆQIcŠÄÑÌÔ„B/¯Œ”-¥F/ç¶Ð„}uiå™hŒ„‡áÀÔ¯ í„óC€mŒ•R¼çRäúsn»W"YLÉ(0ˆp Ž&u Ý=¸Š~ÆžbŒfì˜÷íÛ°·iU/®év;MÔ] îlëcÔýD{Ù5RiÀ@³ncu·£úërhG±¦‡0hÔÚ?Øf¹¿–úÆí¨{!ÔžËþk¯úÖ³?ÌB ²0‹FÙ¯É`ÈD9 0ä# —ˆ®ÑFy=t´p…r^3´Ì> %ƒ¬|´À(Ž'0Šù(À1e£¦öz›=–mÀŽcì˜p$”È¡‰iˆg¾ õg¥>YB°ûÃNÄGãšj’îÄL‘ЄD#ÁÔÍŒ›º9^¼£÷„’°…_ÂðK!?*bü bm‘Þ5æŒqÌñ öÉÊeì5Í7~Pšïõ8Ñ ˆ“ñWpbŸKbÆíÕDûk6œ®ÄÀŒÐ"Ì‹ 0 ÓµÙ¾½Ì£áÓö0óñ«Õc¯2 éeè…[òãgÃ÷Ô›ž¼qÓpt¦ö–êàg .éQ$Øq°I ¦ô¨XŸJ {‹0@lû†@ü*1Ìþ[wwäÖÿs1f̾4²ù¤‰eý›"Œ( ãÅG8æQfp ÜãÜâÆÃý«'Œõ9£û×¼¨ÿ )gW… endstream endobj 226 0 obj << /Length 2320 /Filter /FlateDecode >> stream xÚåYYܸ~÷¯èˆ°Q¤D*oöd7Ø ‹Þò° š=-ŒZëðxþ}ê uæÈs`ØÍ£T,V}uÑâÃqÈブ2Ê•9”—1­vw|ùËáèB ”Ÿo>üñç4=ˆ8Êã\nNKV7ÇÃïÁõ¹xlwJ)ñ§«P©4¸n/—¢9òâߪÆòè§c5TÍÝU˜HaD ÌÕ¿nþúá§›éü4IÞ)(R¾!©P:Ê™Q‘Š…­$ÕAÁ?ç+TýU(‚Fm÷ÄË5]…©Hƒ›3îã¢ÿ¥O³ i›°jÊÎ^ls•è`(jÞèmÑ•¸r&*øì¸í©ëá#Ì2 Žq” +¡h@†#jn ‰Ô ݳöF:è´§ƒvlŽÒÂ¥³å¥Ã/Š<Ò¹æïá¤îöãm?t ÿd<‡·EyÿXtÎLÿŒÓþ Çu¥JÇt–é7¾¥†Ò$°ÂÙý#þË,au8wíxG$ â³åU'¯žÚÎÓºm”40Ái{â_>­èŠÐÖ»SIv@½ÐÉÖ6óaKM »Šn ‘1_øåsaPŽ]‡¶4£¨·0b(/‰àd´Óƒ¥•Ì,n·_jç¤v_ Üxò“±âÏ¡½Ç³ívÅÿ¿„ïSÑ܇Íp‹înFê¯áuøôn¸þÒô ¯bÍ6Tql„êz· ÌÇËd~¢k™ÌÑëࡳߪvìy¹ô!·P¢±‹º~Ú|ÔÛ²õTѶ;î™¶%ÓÆa0xuNâš•.L³bðd¤ÏŠ­ˆ@Ìeðj8;2Çvu=ÖX¾ÔX¢’Hæ¤"iš=­fQœy„Aª¬W/ùç4‹”LÞÍØ >éŠf§®½ÖÀMà»t­;:äÂB1¦$d3SˆyDesGHneä‚–|äš 9wþ›GV5Žö¬ËR\Ûh¥ƒO+TÐØ»b¨¾QÐâ• ¥×.âM¦¨ìjXa:|KÅb©cä?ëg¤c1xa`ѱٯIŒ™+‚IQdaò(5rm§=Œ&2þÞ”¨ãÌÇ{¼Mà%ù«·ƒaOी“‘ýÆÁ)dåëáNµæ€ü!,~(ͽãWÜ53Èìa‚ÓöÂZ""#&`’,YùI¤“×ý)´§øŸ6çR4×÷ŠÂ”*Š(HR¸K9‹S$L{Îa¶¬0ÚâqGFK‘³ED®‹~؆äˆåh]5økøïwDh±ÑÒ¨yã(Ý8îaX¦_vÖtå¬jé¬jéôéÄt‰{œq‘z†P¯yVwf‹›Nh~ ]⊡&ÛÞš¯9}¿EÜàZì†G5Û4,ü iùwûæ€kíü0äâõSã{`Z^¿¬å(† cRã3Õ:0R‘"}‹5–;×¾À­êéÍh;(c†ž‰«÷Š~ÃÅú7:Ï¿j dvļ§@k˜5z‡i±ª9@DeRo/ÛžvÝÛ@1 V¥Æ³:SBï«Më´5d‹°Ìeæ+Ð^Uþ™8`ñä <¬ÌÊKÔNÃï³v:•Œ?™)ÿèd§±ñÙ f~•­ØbŽ$Ýá™íæì¾¸ìJñÜäÏŒ5 ïZÛAÒRó†À·T>yàêø|BÑï®L-úsÐþ.ïxÙà`Þ6>VU½cß[‡ÑÂijUïb ê;‡©›²†$dX*>ö‘“i)×ÈñO›á.„¾Œ·í8¼ûõh‘ôÙ[Á’¯ã+öœ%ñØõm‡á /^[wRl{X¹XHzŽUË¿÷U]ÏÌw’ý³wR~Hl±quÒ g.jé¹t‚Cß|˜s ëTñëºþß}U%®vÂÁF͸Äþåg3%éø#êêÔ¦†t—Ë*Ÿ†Ž?ÁÆêÍ6èÍ#‰_R·Ã©àg$ì ÎÕôøKe;VÆÒ—õ8Øda©ô;+b'5ò¢H£´ Œø¨¢L|F‘ŸüÎôL› ¶jÕ¿ò*Û´`~˜u€h¯ò÷®œ~ßÃí×±ÃépŠß_×Ï×á·w»â§#ЧýK< ,·h´õH¤¢ˆé @ÿeË•ÛÄÁåNq,ên¡º`ì‡NòuëÚ‘Æÿž)z=.yfó{(Œ½ÆöþÂ~mSZçž5²¿GLØÝø›G©Hçüu7ÇêH˜dù< šuñTù*-òÿßö_ò@¢ endstream endobj 229 0 obj << /Length 1986 /Filter /FlateDecode >> stream xÚÍXKܸ¾ûWôæ¤,­(ê¹9ÙŽ³ðÆÉÁ˜ â=p$v·0j±£ÇŒ'¿>õ õè¼=L“ÅR±_U‘»þÄ®w™”Aç»òü&$jwÜñàËÏo„åóÑ_p¾xó㟓d'  ±{8,E=T»yNê2ènïK)=ñÓÞãÄû`ÎgÕVLü\·šG«z¨Ûãޤȅ'Šý¯¿¼ùø0íŸDÑŠ"筦镦iBƬé ýºíu7°6_Ã$ü«ÿðî= jrmj’éÎ2 Kø´øZáOŒBy^î£Ü;©N•àÀŠ[éã[yEå’öº9Üè¤Þ²èÇ·L{g…¥ÿ`çAÜ¡¹¸Uýuež»½ðú½/Öí¬úÝž|8Õ°u”EÞalË¡6-Ϙ*= ît[éŠWÿànXÑˉÛ+¦á¤· Š„Â"‘ØT5È¢Ìq ¹¨ÈþC³Y;²}kƒLiš}W~¤ÅÄ¡ûR]–õúߣnK¾ó£¢Dž­#Ùkö dš@ÀøÇLsÖLžëV5.€˜X†¥$®÷#Õ¿SüóX·e'r` h­ïëc«+Ë2íy•>¨±‚½Ÿf¹÷i°üMc^/=™®uÿ¢UÕp9H2Š–LRoJ¤ì"ù¸b†A³Ëª·¿¼Ðƒ¾ý`lkËôR'°ÜŒNf§×œiålÇ™K[K]Êe°+Jicü­öí;OªbB„Cpˆ[Ú…CgÎ<"ÛpÀpzµèU]NÌ" YaVÅÄî¬:»Èîß,5¶ #o³–ð;ÛŠ3ƒŽÇÁ ¯Ë!ðÁH˜ p‹8 d&v—µkçiDÙtàØ#¨‡Óî›.GLœCEm8¯<ÑÛ tâŽÁé ’ MÖ!*¹Óô÷°¡Sm1½öKðo?—®þp5ýS§M¡Ã«X‡Œ×l©:˜N¯˜C¯»Þtü!,ƒ™/h; × {&”X®ùÓÛ}ÔpÍCâßnäÌ’9òÂ~R,4"hÄ!u€@YLDÕMƒ9àÓa)Œ*æÈ~¡”0µ«WHúB"‡«o5€Ã,¤nä$–(gQBØ6bt,5Q|Ò½&¢u ®6PT,êDN7L¸N9üUañî{Ø<ÀB{ÓG(*#^TÝq<Ûâ¼YýNj+·òÖ0õ×PH]ÿ;Š_LWõËóÌpwv N<*—šÇcÃ@Lž9¬wç°&1Uk'kCP쩃…ëü= À€ççS~‰O”{³W2íu꤆-G/¶¦Æ¿ ôÆ2cô —50X¢¦7[#‹¥†«o½‚!³Z±x•"±(¥Õk”ºO¶ÏæB€j¬dœ=£ÉØ“ï †ë}/¥²xZÂi¼N¿Ø“L‡‚®«ãØuz¢ éÆÖ¯ƒq‡p¶ðŽ´%q91dEêý;-(þiWIHµÐ%¡ÃUâag›tÛìóVáÙu¼N?×fì׎v's9𸲱hÒ™L™³|!´œÏÜ”P÷Ʀ2/íftšû[Ögc+^ν÷/q@¶GÒfn$Óu°à‚…c¬ƒe#…äe¤ 5p¤Pªâõu¤²,—TÐSÏ«f¹Òm›ð½ R¼’„ Ù€p„âu„Öux’ÈmðÞ¸Àá½TSÿç62åý‘ù0IAÇHy¹ˆƒÜŽƒ´-­«]t"w¡ 9‡"óìF7¡ Ó¶æÿ&æYw/] 7ѳ©ô﹈îá°iŽ|‹H£ÕÉ‹3ùl¨~TÜÉ·IT¸‚ ªå_ýíÒÔ%ÝDÒ©‡ôõ¢Hy<ÞÕ¥ýz™^·>“èÍÃ]ue¾¥0’Iá .i„9¡ #M‘cÖgXxMëo(Ì« …‘pƒ˜l­01ñ5âZñù¹#]k™DöY@BÙ( àl¿Ç{q+{JêyjÚæuóžR¤AœÅÓû¬Ê~ 2 ¢"wl.Âú[27N#Çû\oɃۉé<¶§â©vºßDo8YÈdЪ&«]!“°è®8ö>ÎWYì.p÷¶ gûþ†×'9]É:{ÿ^º¤8œ\ÔªlGäWŸØ[>^M&lk’Í€¤™{ˆ‚ÔÉboÑ%n‘<ÉT¥hÔž.ÙÓ±y–¯>8ß67 ‹ œÍý­ëjDi<ûæÒ¨ÒªD¥)Éû ${ì„xå Åà×Ç"Õ)Òáû,¦ R/c¢£.“¹¸Ð˜vBLs^ÕVR}<Ñé0 d–áìää\zÇJØðÎUR>ªòéî{~¥=ðåxã"D.nü´>æ\]Q±¬®ÂØ8®Oר>¸šºÇUéõîÀdwf0¥¼ÿûWÛ`ø-ê­ë%5³H™åStm‰#mËO6è)Ûn2p‘ B0vÑn¢8HR›Œ"ˆƒ %û/uÓð5ñŽ6€Á?÷>d<Ù7‹ ¯G0³Òž@„ßL¯ãü ñtÿÁU¸r½})Ãó=;m»ZòÓÛ²íjç"ºÀ,W¦K>Ôÿ@f? endstream endobj 232 0 obj << /Length 1653 /Filter /FlateDecode >> stream xÚÝXKoã6¾çWø(+ŠÔ«·Ýì¶@»éak (ÚY¶…È’!Éõº¿~g8¤B)Jm»—"‡£ápæ›'ÍWüñU¬!X&ÓU~¼ 4µÝ¯hññûnø|`ôη››o¾‹¢Xd|µÙ¹¢6ÛÕoÞÝAú¢]ûB»ö¥Œ¼»æxTõ–ˆʺ ÕûmÙ—õ~퇂§Ü ƒõ›nÞo†û£0|¥¢Èù\Óx¢iœJÆ…$MTþxQíÖ,«Ê¯­~¢àÎÿ„é}>6‰Wì˺Ö@áÇfGß “@ mQãm=}[Ö܃¯ÜcFí¾Ñ;eiÌIñs]~ÒøÛ²Ë} ‹óÿØ~Ò[‡ÀåÐTÅ$^a9wM—÷-/GÛªU9dDG´¦&&­=.FÚ#¸…%O¼º!ÒQõ:§p}9­9zÒè4`-üëI~Ù±µËÄ{{%¦m±S窿E+ WF:÷‡²#[é¿„8@MöÔkÎãv„9÷þv)~" mÀêDz”ƒs¦cÿk÷ÃBûYkŠ{.Ã8>€pÁ5hz‹ÛÈÓÑäÒ$당4k§íÁÂeުȕ ÖÍÀM‘ë„w]|ê‰dUbT0Y§Ò°ܱUmY©¶˜äA§Ž†¤º9Ÿ…K­É®iuéÓþšqOœ²$L,÷|ˆ$f˜Ü ×Ôi4¼{ÿaq<@<~‚_¥n,À7IL~_Š ÁöXbJŠ &O ˜î]Ú¿(ì^4‹YÆc Ó`üK¨&’ÉHþ=ª2LY6U×f”é·º¹¥ù²Pi„…¨´Èèt:z„«L]\!…0æ#î;*È(åPöF`wRyA§TG$5\•Ú«Ò‘®ètU{«ÆO1N"S²†”±%«S(úO¨["a‘uMPqjAãEýpWVE 1ð ÷¥ý0ËŒ*Yêbž¥“ ¾qÉÓ} À†ïl8kÁª²ÇÍ5™×Uª;ߨ I;ǰÏ*ÇYC2Æ”¨‹maòÜzGz¶±ü·Þ!õ¶EUô…hÚò¯¦îUå[(wíwZ”©¨4»HÖ–Y;¶öêÁœj ¢ŽÝ¥¡‘ºõ"#µ^H%4ºTû­ÐýÖ­IKšm s‘ÅòKf•Q+ròª~>¡ ­é³vÌÝ?k3,ƒó§'€YïL¯µ>oNWc½¯:Ýk¾…»æ„×£â‰57b8 ÷SkÇJ|bÆ‘'žÐ3Úéæf.б€×5FjOŸseÄu7WTIÕCÂàµåþ`q‡­…ÁsÅYÍ¥1ùDŒ|¢ƒæí[÷eö|L»eÜÿ•W¤©¤3³áŽÛ² cŒù<‘ ]3’A®Ñçk xP-›Þ>¨ì•ÓÚIêÛ!L¼03ÈÀ¬ _;×x²$åãf¨;—wB'Ù$·H0 8Œ¥–ËÃúbæ‹àù+h:í\A&í`åøVÆÃHŒ†`f¦"(´˜oËü»tÎþêî@<¹i{Åj㌔××çê¯8º LJ~Þƒ¯©Óïf:½iæ=/=ã×fÂjÝhzn?ßo_U˜ÐBÿDJÙ·È+?6½Ò3Bbç«TÇÄHåc7hõ´¼GGeÜL À;”r}À4ˆ }#«9Ç£4$›3‘M_È`Nª®tvÛØÛµ»a¥ßª®>'lÑ%Q £cŒÍÉ{å½ïÿ³^/¥ƒÏù@D£bþf Áf‘ È0“›!6öcA ¦)ßšRµ…Ú^é¨Êóó‹ó¹RýS*Bÿ2ƒì]¯ÚÞ0E'ÑTö,“\xcÙÄbjÁÐ÷Ù€ý©f¯ú’Þ1ö˜ÉÍøËõgìlê endstream endobj 235 0 obj << /Length 2387 /Filter /FlateDecode >> stream xÚY[Ûº~ϯØG¹ˆTQ¢níC±›žS¤MZ g‹¢èéƒ,Ñ6»²dè²ÿûÎ…”(¯’nŠ 9¼Ìp.ß ¹â.„â®ï²8 ™ßUçw!Qûã7¾üé0ó|˜è;3ßýöç$¹aP„…¸{<¸[=Öwÿò>œÊ˨úDZ'~·ó¥L¼Ýù\¶5?éVqë§Zº=îü(¹ð"±û÷ãŸßýô8óO¢è‚âÌ×’¦7’¦¹ D,YÒ©ÕϪÊÆ/ûãtVíÈRý&!ü'anO›dAzç‹8 oòxÒÈŸ‡žý–m7žPQVx/»(óÊ]”{W;þœà©J®vù²0¸f @}0ëãwgf•U¨ËùÐ5M‡ë^ðG™Ñ½Ã½Íé@e|Á‡èÐ\Qâ»^q«ÖG=ﱓyÝeÔ]»^Ù4WÑã‰[%UÖdJÚG“øÓÀ]øOÃúckvOݰâdÚê×PÈÖŒ€ ‹Þß’z­&’šbQØ…Ž–ª&¾ÖŽîÑPWn;‡<õUUy)»ÃÊ¥¢L1úà·jÃ…|³Èõ¢òX‚ÊüXžjkTææ@bežU¯+&¸.‚b&±·ŸFÓf59á‹ÌúØ‚qkÔT!¼ûÁlÄsÉ@³C– Vå Þo)^£žÓиcœ GÑ)»#}ÏgUërTä4é¬ùÌÑ|ºø'îS2©BÒ©ìËŠ‘„x•#ϱ۷Jsœa§ä±œ ·%u‹^.AUŽwÊ$òMn)ó˜5ŽSʽtŒŠa=ó䪛Z<éìžfeR}™4ë;Ú0;ãâ©1.VfØèÀ•š…>tS6KŠM™'+ë3…¥š»¤!übÌš° Ä?úK&¸7uÁ¤°Æ¬?LmE‘o† ŒÑ~ØÔñ¨Qe±Þ¹|"#ÜåÅ"¾†\á¡‹'FEFFÊ ªŽƒ8þŸ $1€#œÑrŸØ1݆àƒþ:*EðÀ¤*ÉZB×ÄHïáʵ:”`F3ßBÌvÆqÈLØ#ðzÀÚ$¿ÑìXòç %R×].½€Á"€‰ƒЂÀ‚N”2+XTÈ —H#ïr4æË¤÷…%œ¿n8Ëf‰÷¸‹…w½ œyŠçý¼+bF}ÿç® á¾–"àfÌ\úÒ¨Q-yòñþá ©Ò(ùž¬1ªó”!Âuü½’TátfŠáD·}þflfZJq†-Ö°:PîZvëô’DÊу£€)"î\ù„g˜m¸†+œª]3ƒ/ÄU‰KýÁL¬4HpåÃQ SǬ×ãÌFµ%9u,c[æ°ÞiaLré†Aïå/K‡Å<Ÿý?¼Ý<Ÿô@ÚP­*™“Ö|°¦ÀlÕÛ¼ˆMSéá˜ÆÙo1Mxò“jy¸ÖÃ¥ájÉ ñó7€ÑÊðžÿ ”Æã“ƒ*ŠÄ‚LÅ_#UÏ$~‚ÚLg:§, dBx$9²1"Ùeñ¼ƒŸ²™Ô¼ñvD¹:_´é3ƒ«ÿ¢k¨­6,&â,€da« ÌYÂD„ C—=vñ\ø5ã Ÿußµ / {]¢7DEäQjù~øÛ§¿þë/[Ê0ÀÖ, š Êl£àŒMÚ$ ­zE^DR€AVªŠbiÓ?Bq_«þ­Ñ¡ÛAõã·bã7o´.N° æÆ+ø ÝKÅÖ3°Á­uDav6åB©›ššNäÏ”÷xž‹6V]êU«z¨¸ê- [ŠŒWN`Vdí¶ )[þ(dHi—mÛDäY7fÿ›ü×ÉäíæøEŸuSâ bqƒ³,‚8)¬p3³-¯M‚\äNXE©žÆÝ{QYa™A¼(@ƒ-Ó׳ô5æåŽåiæð•)âb `\cæžË‘‹^Ž™ ’eëJ°Go“¸6lÌnì"15|Gõ<Ø“g8¶ØM‹ Ó$,òZnŠAL¶ØÝF°¨(à’=ÃÁÚ–›÷³`]pê‚5±Œà<}‡%Ûñdû(³ö|@¢óIq›pÈ9"bš› §‚Ti4K½EÑ´!â ñœzN¹·As?%‚H©¸­¨²cƒ³ö#FjgèFÄHØÉ¶™y'5üÍÉ*0Ъ#Ô–3ÞåöíËE.l:ÀNd‹˜Ü"ä­k¯•ƒn¹çPyZN £ã“‚3²å4ð`Ç,L̘t\°c‰&·AÄ(»cÇß.—ߔ̤ïÔOæõíþaÓ ²@䑃èt£¨%lñÍ×ÎÛ Úü±ÔìÛ™-“AL8±å`èƒ:Ÿ^Ø~8Ã}¬•ázј ø¦B’òkòf4©e"]Õ™Q ÜAÏô<ó<_¬äøDf½Z.>ÁÅ ëÚ‰qmyØ”ÛÄ[&‹•×I7+s‘Ö›ð•§ÌàÐ9Ô¥vö©¬Ý«ù\v1Ð2ÏvÍý&cyó>»åQAúNÖ®Q+ò‰êTö~×ûFU?úÜüGÚeàga‹©Çè1¿—! ü™›î´©:CÄ7<üâ¾U`»o ¦·œN±¸0 8"áÀ\µ2|+KdBm4¿Ú|£b[Ê G][ŠI£ ( 7'‰0Ëé¹áaðK‡2•FJw¸Aßã#Û|7t ígk7 ñ=¶è¶‹^A”Ýf‹ÿ·¬¦‡§Ç“}ZªÜ¿¥X"ÖOôºÅÀ™üœÝ<4‰ œؾzkÊø­é/êŠti^Ç@uòç²ê»á oGÃXÂMìi_ûg\²øþÿ+‹úcù€nÉ» ”ŸùÉ`¹UÆëwd£©‘bJßz¾eF¹yš[Ê> stream xÚ•XKoä6 ¾ï¯˜Ûz€µkùힺl‹- Ø¤§î¢Õx47{*Û›äÒß^R¤üŠÓN#S”üñ#ERþÄ&÷7izy”mŠÓßHõqCƒÏ?½¬ç‚¢;Ñüpûæ»ãx#|/÷s±¹=L·ºÝo~w®îä¹Szë†aèˆï·nÅÎUs:ÉzOÂ_ÊZÑèã¾ìÊú¸uƒPd ‚í×ÛŸß|¼ÞÁ…@Qó9Òd4É"O„!UõÞ½ßíÝ“,tC€¾ø±å>âC„ÿÔÒê8õ’+BOÄ´ÙMלÁŽ ÎºÔÑ}½7DIMâ…‘Ý‹C·4>qaäEaf9m I¶V-Ÿms„Q.æL€^Õ`ð?˜z­y)€åÑ´æz¾¡ïÜÚ7pŒßqWe ¼ÀÀ†iÀ;)5 (k σþ%‚E4§+V…Éú‰  µ‚)‡y²B8ëaž@&…=M” [¤Õ¡|t‘ 1¶?Þ\]Üi^ÃÊŠD@~ˆtšê±#ÑŒLÖšu@p’!Áh"®¥ß€Š.ž5 ¬ðPšN´éùU’~È”ÉÂm˾ò–€ ùæÏÕtã{‰ŸX?3ܬ‘À¡Œb«û–› ®êト ’€ÕØÏDÔVÍ¢YK""‘Ù½¯ÝU"õàæb•Öƒ ˆ3/YTÛY{üA³m78è//?ŸêB+[eE[âŸqêlÕYb ®žhÔ?¡þŽ ulÑØ)IEOÜÝ.­¤ZA‡~t¸îQEgó±”à1¬h0¦Ôú¨L€´+÷Šf;Vïî(?XÀR"Žx–¼°*ïù2„Rºmp ›¶ž3CCzÂdˆ ãÈõÈÌÒ!0lî55 €¤0ŸjU7ý‘9îÊ“jç¡zTÜ’ì¤!àž5›E‡ÎÉòXÖ5Øq©£º²Úãeë<\ÑÉSÿ¼âÊ@9¢æd¨ö Êl<Örû;€ž5G8clsù½z¸ìèûéúárì7†Ü„ÛµšWÞ,¡æ %\ð|‡K_0²‚˜”¤\£‹z{ÃQ?¬¡ýi4$‹>\€ ˜ Iº«&é£ ª9ÝZŽcÂ^,Ït=n_uWÅ1÷Üà¥"ãÅÃ]åñò¯$Ƶ…W/ÌI%™)6s5ŒG©àödóà!Akr׸/YN"à ü¶Šõ _Ó·àW’ ¿’¤xE_ax¶+·Žrr×àT^±dã% Iµ^;ù2Ð.¾ ~±=€Û*©‹»©ç¾¾âJƒÁ.» aT·4ÔtM™¸Xx°käjÚZÞð«ñÒST©±b¬z*³žšt/pn¡œõKyö«ó¿î áJ endstream endobj 242 0 obj << /Length 2551 /Filter /FlateDecode >> stream xÚíZKoÜȾûWÉÁ@ì°d“9FP1°ìÁ^`)¥áz†œðaYÿ>U]Õ|Œ8–¼A.A`lûQ]õõWU=–ü“Ytaµ™I/ŠÃ»ÈIÛÇ jÜüíä~!t g=ÿr÷îOã ‰,ÊäÅÝÃ|ª»íŧàj—û²Ý„Zë@þyWÍá×[þ³ªKj]o«¾ª7¡Ò2•Ò›_îþñîún\?VêŠbÏ—š&'š&©RÒ´ûRâ«Â®ü×PÖ+õ9Š#ø“¨Ëéfc+’‹Pj!cšã¦ÌqWQ”u3<î`+Y•»¼Í °DGßû†¿5u7Jæô8`ÿaßWál•Ï$žôÂÝ@ÓòH?ín#ƒ^dÀý¶åçHšºÜâÀ8¤®$}ðŒ‰²€‚FFÁ¾‚Y@dqüü÷æÀ-ç6l\×[± «‚ÛQ”{-yª{Цy¬jzªz˜{G/9 ¹jjœ o›= nýNWTþPo«"ïIqåÜsuû=t‰ Ýï÷Ïôùúö*ü„zÆQðádý®ê¨ëdQ”“T9•Ó h§ ]E¾_ÀGeVÄI ê9µþð€´†)… w+?­ÍeEj§™V‘&¬{àFåÂg å±mBg¯P+%•-€¹ w²4ØÁ!Ç:äÄÑÜ_:–àŸýž>ìrœÿ+£%uC}Qº,z’õ¾ìxtùí¸¯ŠªGóã·¹)ñ½çrzmá¸ìñø¯ø¹ Ž¸Äž&¨ê®§³Ãp¤6 ˶ŸöÕ·Ne^ûÅ©YE@kX›]I•žxœÎƒÛ^ ¨1™ îZÜrÝšžƒ›r±Q`{¯ˆ6pò@¿ï/Ip?ôÔk„* YNá´„Þ×0”P¼‚œ)(Q–‘Bd•íWÖýDbÃ?¾ÇxW?Wý®qjfä-x¸WµUÁòö^ɤîðÅlRøöuÇA¾øÕ¹,#“¯&• ›fà¬{xïxcEa› +Çók% L•ßïy9ç2|ÖþLD©ˆ#»8h¦ml÷ôdHXö®_2@F¸›u*†¶åý“ÁŒ¸IÇ6nfz,‡ò™ñHB8Ká|—ªô¯ nâ¯ÂÇQ|œ³8÷OzôÍã㾄ЧpXˆ¢äiL'Åí}?î49eÍÃI§s‡yë°œƒ8@ÆÁ!ïÇðr²(4È•x…VÐ"•RþZ P°ž±ç÷–t^ 镎€4øÞL-4ž°QÒ‡ZÂà¾U$ElÕm§td Âsm{‰Q”¾}w™P‰ôÝ󶤹·å¾tð6& Úæ@br•Yñ§ašhêÄx¶ ๦½I“ÀzÙÒ¿%Ð…Oòм+™èØÆšpáZd^h-Ê#?æ,EtºwzÔåÓ4rçèé“4w¾¨™+ÝéÌnßÊ”Ûáp †ºè+ÈÂ~(Ýã}ÿÔVþ+`·c'6Ð*ÍÈ(˜­â:â¡åUK²1××û Òœú‘»S²È~Áa7>pÒjCX‚e~«™ÓñKNFJ#¢Ñ1¥LLÖ±J5Ñ _ê›bf gœù5E¤ócîá¹1…äP+?{‚ú™ï€#[ïV/@/‡|ËH9æ-÷tŒhó''[òH"°ùÀ »h‹5Ïë24ã;bB½w¶›Yz )=Ø÷ë UËÅI¼‚Û¯ðþcÜ¢ynÙ^Ê\teßSXEñ<Ðv<Ô! #yìŒÊ}|ç³Îà ⾸Þÿ$|åÿñû¿‡¼h›îwÔØ3ìjËœ‹ g+ë³zhܸQCúøcåIJØc^ûØ“jÅrµÏQUË̽X KLÓOYÂójS±ŒRzª@§ò4CL©BÅ/s$g>Ì‚|DrÊ)0Œ™#9•„dÏ®œ +Êz\“§UF¸v­ŠŸ„dhpºL/Œdh1’¡å¼£²sH¶P%O ý+HVÉ ’µG2ª5"Ye®jîÝ[JÛ`eÌIêú=x¿Ì)JKrAšíìé*,ߌòŸw%ç6ëI¢1"6£¾V«W1è5Ï#ÇÓ}hœ¶S¢¶‘cjVäCçÃJN¢î©šåëúÌ•ˆÌ”ÈìxÕ–Xu¡ÊŽéøT{ÏõZ7·6J›9‹K¿ó3Æþ^…¿ý—Ìýý­©ïoí’M¸;koMUÅÛlé¢íá»·0¹Ú$Š u¹4@ß Ž]¢i¨m€ÀܸPëC¹¶ù]YäÚ± ŠµÈšVùQ¥Þ•+߯͠Á‰q* öÕ}›·Ïô²%åíŒ/.Mìn®,Þ\¥~XN,@y 5Ö+LgÂD¯[UMT4™fÓýK¾:bÍN4.øâ3¯¸¸RPª&ZŸW|•¬-_ Y—±58ô‰Ä]u8îÙ“"–«}´2ÁhM`J0(©ÏÍì6î…Al*f.çìO—”#²hrã¥"·Òñ¸|+*du¯¬?Ž`™L UñÉM+ õï\‘TØtTäØtÕ·ÕÃ*ÁÖ£ÿºØ1o©xäÇÂàj 4ö7ÏfíÖÕº2#w€hÁÒå‹€@(ô¡Ú¯h·îšOúTöä=l–õ92M£7QŽœn á×Ü'Ed²WÜgD¦ìK8ƒÎ£/žÞ±—lèâà ¹C-“@‹T›á:z^Ýô±r ðq´¸—±3º‘É‹P;â ?>9BÇVuƼF¤qö*¢³lÐ8m~ªÎ"ͺÆç4ŽÑƼêàÐDZèä$-—À7¦ò\JLõÕ,AóúU] r› oËØêYHŸ’“CÃò¯ç+!è…ÓZº3¢¾@êuŽÎ™ ª É׃yIC—4ñóÆa‰—m9OÍ÷øSÄ3IÝåk^¸àæsHÞïü“CS¿§¾~zÏ©¼JÎ9'ÝgM«’ÀØ2;!yºÝR ¯²,]eY^^”e«à×ÕëBH¦Ô¤zõ×£÷‚îö~jË®Ã#¾2glD”Ž?Z]ß^­Íª"1ÒÅD€ŽÖAçÉÐJÏwÁm0Y¼§k6TO0¹g1—ò5‡vÅ6ó¯2ŽÀ¤ËŸ¾úò[OÅÙI…8/ AýÝÉGV˜$"¶¯³‡Éæ@#ßÉ…øÇÖgǯi´èÌ…eCOg[~­š+NH#ûÆeD¼!.TÝŽÈ(©‘µK¼­BI‹hÌË¿¼$NYý¥@7ÜâXWûíñý/g¸li迪‚Ô`Y3Bï·sZŒÈ{yªFC(|ûðÿ…àßÜD\. endstream endobj 246 0 obj << /Length 2819 /Filter /FlateDecode >> stream xÚYY“Û¸~÷¯Pù%TÕˆ&xˆäæi¼>jRÞ‰k­$µçCBbŠTrÇóïÓHJ¢“­©Fh4úø£Vü©U¬Ò(òó8[•§WQ»ÃŠ¿~|¥„oŒ›çÛÝ«7’d¥?rµÚíW‰R>6×®ZýÓ ãõ¿vyõ~7®”„áÜ9oöL·+•ú¡JbܤÚf±¯¢˜·»?Ÿ×›Hyº©Ìwh¥‰w¿Þ$ÛÈûøø7îXç±×iͽw-ñ—ÃI7khôEoÚ†Ç>™R7Vã®ÏªâÄ¢Õ&Œý¤¤½ÿ¾Î"Ow–çG‘§üèŽ[~bï±]‡™÷;þèþ>­7Øî˜+ ‚ 7[m”Úú!,¯?ßæ¼üÏí§¼tæpÄFO¬Iì‡i¸ ü(¾’åÝÆsy7‰;cû¨dùd~'p|}AÜÒ©;>4ÉšÞÍħñëÌ©z_Ú}?ãOÑiæþ€Új‡¦"…ËMé_Û‹R™Ÿ­¶Qà'yø,†y73f¶ÓíÅ /¤cûþüÓ›7{»÷ÛîðæZ„0ˆý4ø£B8î[1’1€9DŠñžM£{ÁOÛˆþŒeåœÅXN¦ïuÅ´¾åo‰Æ‘z/Ü+®Œí;ó4ô¢ôß‘IwO óÓ8ÑhK¦®"_%"L»—-Ž,@ìÕâ¼tKâ°ã 9ÊÂfÌ]"õX4ÓxÈôò•õšVE]·£…èÊg'C?Ëq '¿Þl·÷ù×÷÷¿¼ýôž8a;2ŠyïŽ gdÞyX+¯cݵVˆx¶8HålHq¾NdGDíbÿT|#Åq¯àÁSAçŠN‡[¯×ß{vhTMêµßd íd×þ¨;^c?4%Ú}QóÞØÂ V¤Xá©SxÊþF•Ï*S~¢2ç½{ôÁ+TŽË4¼A¤« <ënY‰(Z©jO?´±³ºÀ+@OʳC'5Û/;Ðú Š)f¸å!6Cè‰4ßqÏ6ð`¸ÊE,%í'léY:ôØÒcŒ6¶C†,2N½gÓ™„_¢ÀáÈT¡b[®Ìþ…”é  ákãÍO'Ý• ö…ÙÜ’MÛl–nðbD<°ß>_tÙBèë Sq«\9W˂ɱsî´ÕkKÆ÷´oš‹VR ý‘ˆØnàt•Lžjcù8ÄÓžñj Vä‚Ô¤ì|ë4j(«CýöLä½sôm:¦‘ç¶Y¼ ½ç£©53±“‹ä:V0ôAÖTº£PŒpÈ3û ПÜtÙl;ÝXO\RÒ¸ [,ù©¨$@=Í"yžõGþ‹@:“xÒ9v±àÏ7ƒ††-ôü~Ìá¢n­÷ýk8z¸Íñè%ÌvÒE#KõǢ県?ÙzÅäH§[-ÚË­èŽiÞuÌ]º;ƒE­§!Î=Y]OÆ4¹ îì1<’ËAq8à™Ü°ÅI†00'Zq’{² ù¹ÖN({5_—ò>êFwñúí²\:€Üƒä“™>§Ü‘c’‘h€7À³$…жæÐ¸dɶ„ Á&‘GÇiQ=nâ Ê¥¥Hîùá;˜F×É¥Ž2Û*Œ'‡hU°xIZc±€—Tbð¨È/C ©@˜'æd:¡0å{5"Ç–½‚Z¨Ã]-‹ÑìµÆyP²½ÁjHm 6[nN¬7ùˆ|2DÐõ̹Cˆaí¡+N²Ë±êŠÛ`;² Çid¦£¦|Ôqa-Ò¾©8˜¨­4ÄX¡%Å:t¾H%3V:k:Ç¥@•ciˆ›8ʽ·”$h#kMÁ:ŽÈqÖ¯ 4²œÔ.Ä(»ˆ!À¡Lwüg¤¦‚™ Z 7&ç…ÜgÅ-±í­¬ð„$y\t£qåNŠ®ªµµ<Ì©Ô2<¡w{ÿ†-’8eyØfáFžzJ’F²*i¾.U’²…\Èhg8l¸ñ BÁï7¼ÈW£ïC§)©6Â/÷'³{‘uKsv™:! -‰.ZLú|lÂ=sØ8>¦¨1”R)F‚` Ó{HhM)dsL%Œ(°÷Ÿ?zøùþíç‡Ýo<ýþñ¯÷îý‡‡Ç‡ÝÃ_¿ü„K05šcWèçsˆžŒ—,Q`g $Ü'xMð4Ê/Òù6¦xuµL™­2ˆ­Én…‘½ Y!»Ó­¦)‹%íƒ×€ðÀÉð\%Aœ ÈF‰ø66Ê› ˜xmMaY,cŠ Ø7ÂCÑ}:AÆŠG¡å•’iW0ýÓÒ B9І-¹¼ß4ó¾ \ñXÁÀh~-^£œ€~ã‡á+K}î¹Í02A$¤š=eîŒE×&a&ø;¥‰yPSø×]ÛŒæ²p—¦¹€qœ ÇÄ…ô?ƒéäå ö¸0À§kÇ +8>\Fz° %Ÿqÿ=°\Gþ2/-( ¥¾æÅòš÷š)t½[WráÝ„€Ðð·ó6w°¹&ãÛæ3ÂÞ,HòQSW&ÃàWˆ‹YL‹䫎3S,6‰#TÎbqå,éñ§â¶<=ÑÓ±†œÐ˜ÓbF#Pˆ¿qü=6[‹çãÞ,ÿ*É:Ý‹æ0ý£û 36xW<¿0鋦Lü{Œ:Zð§6MÿO–g¯ÜPîÕL¼„•Hù$?åãtP²èð XàSLpïؾ@ASâÄO’ýò{ W1'ó!s§2+{¼ìáè‰C—ÿ€z{. ÎÏ8…Ò¶;Rãr)ᣜ‚-= ‘ãhÁthOB1ŠØ?Ȱˆ¢._6ã{A&¤È£†SÚ;É <0÷$à‡. ÛcÉJÖNs%í!9HÕß­a#ÜÕ^¾ÜœÊ½®{¤}k]WÖç\/·a ˆ A0á6.˜6Ö%g0Ö·))ŸÎ׌Πãò¸@ «‚'Øw.˜].½·°•â ìvQ–s²È¯v°äÀïÄA4{ÂùhêÖ¶ð)GÔSr\L•ð^ÄÇ\‰b¤Ér©ìÐã>->oì8œ) ± Û:¨¥èLáK¸µ¯¹[Ãv9°žƒÙ§`=ÍæžT[ØìM_këÖ"?ª æÑns…¸çÇÈœ?ÌÑeyYh²](ïÜ‹Ýæ'Ò_5 žËû6fgb!³¤Ò°×ôqÚЙV¥ Ëf…ÿoú/6ÊÆ endstream endobj 249 0 obj << /Length 3157 /Filter /FlateDecode >> stream xÚksÜ6î{~…Ç_NžÉ*z?ú-‰ó꤭§ñ]Ó»ÜZâîr²+mE©Žï×^äj×rÓñÌŠA_Dð_ÔÑE™¦aUÍþYDÐasÁ_ß=‹oˆ«æ«Ûg/ÞæùE…uTÇ·ë9©Ûöâ?ÁËÃáj•TîZóíj•¦iðòþ¾ûùŸØÈ‚·WU Zsﺇ eÐL{Ý]AcT£é;žòÑ4º³€—ERI~õßÛŸ½¹õæIò7·‚˜ßÙKÇaqQTY§ogêZ=/QŒ[s–;ÂXxµÊÒ<ø°Fh(´º‘-@§íY–Qº~dø—(ÎF†[Í0uG¸ýüü‰?o5bwÆQMƒ~Í#ŸtÓw­ZŒ,c,Š D°ŠÓ0ÎyWÌDVj·ëQæ÷´XËÀ8Nó(¸£sÑÜiµ5›NIY†è˜Ù¼Ô`Ÿ Š¥N‚Û­L¾fÈW¬¾WØy`Ø )ÓñèÿàÔ=ôÜóëän$3ßZÌ{ûÄ·ÈC’ÒÑ$eÄ2NÊ8¸†C[¶ªáÉm…"(À‚ÈW§SüY÷ÞdQÇÁý¶·šÁV®ÄÆ oÜý#¨4<ß;Q³sL%ì‰ñ»ÀFwzP;iˆÙB{NÓNf<’Ö–60è?5Ýl%ë@£=w’ⳫÀŽƒ2›-A€æ=j’÷À÷fÜr‹¸5Ð&­Â–nÍÜð]šUdüøýåÑÚuÌž½¶›~¿Z°9–j϶YD¤IóMï,P‹¹ïÙ AtËÆûe˜vúÍ ö–ÇÉÁ×3ƒ(í@t‚šÑµý^sëÞ´·í…£DðŒÄÒ9°Là,Ó$aƒMãÊ*¸Y:TøÎz,-î“`’ÎÄ^ÞŒZ9êAh¸I~¶šÆ0褚àÎi)’ê—XVì]Üu§Gç¨HGQç²´eà‘wb°ðŽMäǘw„y§P+&/ G‡€X{ô:Jîh¦»\÷{¼dï äc5Zð:xµ¥¡¡^kî:ãÆ¶76÷jø:Ð Ó„D‹@u~£ ºTãdŽ™[º8*Ž£š9+Ti\–üHæGnU $(^9·ÓÛôÓÆÃp;+LÇ« pölÚí‰;Â;4‹n£{$•Iħ Gl,ÍÐ"^âÞ;ɲdµ†/¤Ð˜Ó= ¹dš¿Y=¶X‹¡áC1ìà¶G‰ 9LÄØ÷ÓœX/ÄPÝ€ûî÷— ™Ý78¾ñûT4 gúwŒÒ^!ßi è&æeÆ/çsyz9¦LúÍ7µ?ìÐæ+R^Í ¡ÞƤÃ8t‘Ïø w‡°5ãš®ÙM­æ‡úE`âÅÛ"ž§Ei–„Q]ol÷¶1pÄ Œ|šC¥q›t¸xôÇé À4ÌÒÑM"N]ìaº5]{¥÷ju)›|ÎVñQÝŸŒÃ<ª/VI)‚HŒFŠ0‚=ÌÀŸÏ(ž¢ÛCÖbâ*ÈK¿…Oï~ú¸¸Ñ4Œ<_®gtâ,Œr/¶ÏËd’2Œ=Î$W1pªøƒ×]ó»"¬›Ÿ;bŸuÈó˜—,ëa.¯ñÃ0kkûÁ.É>®a‘ªþ®gÉÃ8­þÚµÀmò=×R‡IîE.7°½5œqcþ5ÉÁƒæßó`Þ™7=ï I2ð® ‹,9ë\Bä< ¬~0¬ßYîS•¡(%Ô@ˆä¹²2Œ6!‡)«:†k«< V¸ÜW™‘²šHàñ.y”²rÌtªyðÆc``>Ý&€+ˆÒïW™5º…F·Ì$—J1Úhõn-¨‡ÝdÁNNë±·î]åóEë—í\î êòÕýÉÏ’¸dî=°ë Ðô¹ÁVLTJUµ«ƒJb1çGÒ”˜„Ìé S'±EsMB¬£&-ìÓU{ÒB¤ N‚¡Õ±¸Žƒ9gT<ÃX„4>TFÐLÒŠ²9œNIÃ| 'µ¸Å‘ßçÜ> Ì”ƒ:™óX×äºÚ˜®L©ï§îi씋ñbûs¤Ì!¥’È,älš ”êFâK†ù2Yt<(ì¸>XªT\Á fÌèkr‘Ë‘ è8˜»iÔBÔeØ&–«Ø•î¢ùëÏ,×[(°ög¡]€ö5¬ÍOT“bö“ä´ÿ7|ÆpL.Ãlyðóïÿ¾ä9N$ÐT<Ö©=Ù<œî¦ŽÞWNJœ:@c© àû-Z „y¦s^0¨ Ö' Œdü¨Ž×ÆXª5¡ÅÃ<ÜËÕìE& J&^(ù`t«Ù»G¹s‡RŸbo¦¹š9Á¤2¤ˆ/Uˆ:ª»à§ÁNu› l—ªá9Õ×ÞËÃGÊ„¨ZI†e Wˆ¨¸VF• ît‰ÁNø0Ä¥{Ê>éav+,±oÙw£Î¼äw‰Ž'Cþ¾Ñn :ÓKòüœÐ_ƒÅsj`œ‰Úµpë§¹1>»ŠpÞƒíôÃÃeÈUÆ |ú#'7X“Ä».=D NU@nÕ¹‚9Àfw`Á5qzû€Î=? Âè¹µ‰Á>íÁw/È2Ë¥wœ TÔN}hä;è½((q± ú#OR$ñ6+9¶Ù4u6‹M¡Ž÷ ì0üÝ ù+êÓk¨ÎK›Šfo1¢òâ|ÐP²‚àß𸨈Ç®mvÊì¹KqÄ·ñôj÷Áî) Û³——Gg’û,¹°–Ìâ ‹á>Û±'.åm¿[ö,Ø~´o¬Šå5 Æ{. óÄ‘ÀÉKy4ÄðLÖ´`ð­_þÉ›ËAÜ2Ü…»ØôHúJ«‘"*íÉXîz7I Z@:Ê:z5´Òie3\舓@;ܾA”?,»=Ça$•gnb™Ä¸rkFÇÍo«9ûbnþ†U°¹pK&5S ?Zž±W3¤­:¾¼2ĹŒÞ´Üãd\ˆ&[|˜›IÁÙ˜œIúˆíü,h™›œÿ7 Jâ<,ªüÔæP±¢ˆ‚½ùõÕKÔ«Û?ñÜ׿Üüþ«øÿ>`Ä endstream endobj 253 0 obj << /Length 2915 /Filter /FlateDecode >> stream xÚYK“Û¸¾ûWÌ-œ*k—Dro¶7v&µko’qª\Ù0$$1K‘Z>üø÷鯻AB#Î:¥F£ô»[ÑMH¿è¦o²$¹+Òü¦<½Úndðw/"ÅÛâÆÃ|ýðâÏo·Û›(¼+Â"ºyØû¤ª›¯ÎçÛMœ¶­ê¯·›$I‚W?È÷Ýû¤ÁÛÛ< zkeöcG² œN¶½¥ÁhƺkeËOuiÛ£lï‚xwûŸ‡¿½øËÃ|ÃmÿŸOæwÞEÑÝîf—§wQ’Ês>ÝæIÐM·›4Ê‚“Áý¾É¤ìÎÞÌ´yPÕÃØ×Óhea2´ì„ù}×(:ˇVzk*²‡¾Ÿzာg³*ìä½4D:kù†üÞ]Aïý R±2ÃYø.– ÅIðW¶‰/Œª¬ AÄO©©ÝcbÊÒžG“­9ß7¨¸Ö¯ýZbãÑ´½ÉÞ]EÞq·ö{¼y›,WH¶)]ÝÉwìi¤î+F°Ó¬ mÛMd§ ’…»»0Kžøà8Î<ݥܣÆÂßa¶Ø8-‚©­Ø~bõC@ÌIGzÇ[Øá ‹}l¥Ô…Gž.ú T;kÑ ú^Üì ÷ýH.ÜîŠTI÷ÎÃÄÀ¥1ÿ£@8±‰¶w»|{ÉâÒfGfðæÃ/Ÿîß¿÷ï……ÿøêýÃýÃ'Þ¾¶ g;ïî49Ot×ᨓ¾£eFÀiÆ¿†ÛÕö œµœ¾]F†êñtêZÄ*ÌŽfáè³'rx#èÌHध«ÞJG‚¹J%^BãEïsÖ{§B{NG„4Ç}[Ea¨;YÔé+qüOƒ`4sx¢ÉÑhGoŸê~ÝO½ñ ±ÃéÈð•Tb4HrOç€ÇO³ÌÈšÛ²áà0÷u0Û4a°Õ]ñWÖD\¼júÞe 8²l¬é!=, GhÐØCýØøxˆš+ähq'D!ÿµ½€ä¥_Ç’Ä]’!7L‚^£Ææg|ØØðÙ×°¤Ø»ÍÃòŽE,‡£äü„^p¿]å_n>ëYí‹ÃàQ)Ñ,*˜Å39D˜4 ^Sü_Yd¿'LÂPKð…ý±æUXwìg(åqòèzÿM–ç<„ié rU¨½Û~íA DƒD™²9@m¶Y<8ÍòX-HÒUýtaƒÍœú;fÝOœpáÐzlôÐ/5s :'«‚3rÝj¸ÜÔ£#»¯u,Prå„2iÊûNu»\$É•« 2â¸ÊÁ6_"–N‹¿Î%³Ã@3:Aɯp–„…V¾r·$¿¶¹$×(Èä8XÞ­û?*fÆÐÈeä$ì.7õ©%©Í45v\*.%NG³ ØF”ˆº€JçNt"ñMF,ËÞÑðÈç,¢¨3–‘.¯š8×XnÅ™drž‚hζxc™Á°Y2<\§tÈü¬õ·Ð±Ú+,”Jˆ¸M>‹·0Ýk­š­&8Ëñ”÷šq”d”3ŠóÓârßbE¼yî@`6û»ÛH‰Ôhª<ìHùÚg?4Ó_޶„‹Ó´š?Ôí3Õ¦¸V¾”ò?f}Jãpv@€×ŠGi“:ÓQlA¢GšJ? (TóL½’Ð&bT¸&bT<#eN)‡d”OЇÙAŸŒdItäQ˜*3ö¥®Åç6:L¸zã§FH I_×\n§„[º+2¥'æ9%㊽mÿ伯H<‰‰èÉþ¡r…ée³8LIaÒE,a곉0W+Ê"Ê‘;¿´¯†ïxì¥Ñ4=E—(rÉ;‡Ë-½MÝÌ66²b05³šXmêpH”`™º×'ê2Öƒ$§ü¤Yƒ|‘ Yä ì·©xšû‘ù’"¸ò´ð+àB¢=þ4(uUkJ—ØG»^O”bÁCXëX€ëÚ¨Qv/=ƒ,TÒYd_É¢téæcâšq4\ زÀ—‹Ò¥{•D¹ð—òñCýY½PÈ 4МdÙèV ¤—méP;ùzí~8^ë§ÇD”ÒÎì\*gHé\ÃÌŠÀ·O\÷ÏûO·œÿÈP.¯u¶ôß–T;[?øñþíý›Wp÷ÞÿóÙnÖÒÌüÎlVxá3iÙåáe Fs#ë?ë_5ÒR«¸ÿâò_ß çe¹&¥ñ• q†°k;ΨyøÝ†(ÓNB×E¤& P®OƒDÀKkÒÕhMn£'ì`‡váh´ä§ ÚïprÖáèàš ³!YØ@÷¼ç9e,ëÁ®7;õRèå¥$Žœªq´Ðz1RIdÞ¼(a±iÔÞ\‘Mƒ¾k”ŽX”·´–6à^T!,éâðwi’¥®–Rºíqn1™Zvæœ$ ®x àå35Ý ™¡ðÃ.¥ ­ŠIvà Eÿ ý=iÿg~ÌЬôßGîI¥Á½š¹kA¼S^œlrÑý§YÕÍÖ>XjîA 2uÍý90\¿™€ž^ýÀ7¤Ûåù¥}¿RðqÐÚ—Ioó¥¬~І ÁÍÁºÚ—JPÏV»1~5~Ùá’*­ÙÕ}k5JÛî^΂*P=4Êú^2y>ÀhÁ-ÿ©äsååwi§ûÁÔÈ©Uäg‘ûßCQ)Ÿý\KÍO3UAœ à€TRJHÊ|=¥Þ;Ò¶WÒ_„!<‹ç0ÆYŸþóþ?p^ˆ4 endstream endobj 257 0 obj << /Length 2528 /Filter /FlateDecode >> stream xÚYYsÜ6~÷¯Pùe9Uš ï#oN$;ÎÆÙÔZ›T*ÞŠ5Xó˜Ùú÷ÛHpDURó@Ü@7º¿þ\ùð ® ÿ*‹¢CçWU÷ʧÖñአÿ~÷*q{¸wF~w÷ê›·Irø‡Â/‚«»Æ]ꮾúÃ{s:íöaÖ_wû(м7ßò÷ÝÏÿÁBì½Ýå±7*ŵ›&d^uîT¿ƒÂTNzèyÊOºR½A–†©f»ÿÞýøêön>a†Sù²Ð^¥y|¢˜Å¹gaà4qäµÚLªÆrìéžÛ¦£â† sŸ¸Õ¨J„€ž¡¹JçVâÜ›>ùIpØíã,ñ~ßå‘7œyFWb÷Ï:u±Ž);)Mzjw'µÒ š@ì}‚„%)Y£§Q=êálX÷¸¾ͬpÝð—÷€èt_¶2û|J8ª‘«Ã<ºœ^XðAs“l(Æ1vÚà˜n÷P$9|ÓC|Þï@!iêƒ Z;ñxÉvQ¡|‚Kñܧ|P×\-|ÏÓq͵]CF#»aT룙¡7ë1rKzÒJzFeNdµ0VßÛ40å™Åq´Ï§8jÚ%%Íá—ôŒ…Žm¢ÖŸü ®È ÷ ¥­†~p‡¢=bã¯èSè(ÞÚ1XÀ;<<,`öð &º8ýEƒ©„‡ßV•FЏì#z¢Z™QÀ’ÐÉÓPŽ“¢Eé¾Ò'4lI¹ïbpøÜôy8€_¶²O[œ 7leY,¶jYêXʬF}Ù±ï¢N6$«#‰a0zâ5Ûùo•1³;Ê­åM-ð^ v—§Ó8€ýñ…@Ãú dÀØÌárC¸1 ©m{8mRÿ¯¬f <äk¡~ ßpI!l­´½u¨ÈÊ, %áZî·"÷û¾jÏ5AgÀÑuªF‘[4z@¢™ÈhüDNm[{B³ì)+•ÜØÚ0¾ŒàÕ :èþÛç•O`§h>••—íZ×:Š ¿ç¤3üRœ¤â¹]cï¯hm¤¢y}Mðèα;ÃmŒJ¹86–„œ åÃ4N9Êö`Ýì˜ã€úúÒó%éþÂÔÁ<;® iyÎâMP–ÕU¾Ûô¦0ñùdðå(¥ù>°b`!.¼æLhLc á0I Z ®þ¸K º‚kÌ@]™ø^¥ìkn ”Ú÷ϧ;´Â9zº£ ú:™5‘xImÏœýB9ã›cQc\xÄkàYeoC˜fÙ‚UPT©×Øt‰B6ˆð¦ñ!ŒÃ5Óy¿ƒ‰„M,,|*·–Ž´„ÑÐò øªðÏ×èyI¶±…S,P¡a)ß6–µzާÔÑÛºbs€g+rc²³çD(ð+„‹âÙ¹CS‰—DAˆ D£© ÷A›—9O0Ò2· ’“úùŠƒúÅÜMžG1íí>Y »F†¨Û_À°¾P´te!îžzï›yø(£´±ñA(»›\\$´¸éæñFò°ßÄ?*­€h5*Ž\PL}óй.håu¡u²VQ§!ÉÊ‘)$.æ0éÂÞLtï·id½£ìûœòm$'¨&`©¤ÿŒõÕA¾lºÅÂ~ Í¡ûàĸ]ÏcØ’‹”-—f«Ž»jeªQß³ð… 9Å¥ÆÆU„ Í&ž#[(ÐýqÓ-L 9ÃUý‚AÉ!Ò5ýø ØC¡W®D w?sc+šæšï ™qc}a ¤’×ÜÎ4V»l°ulf‚…‡i^½ª˜.ã#…•Íõ4´âÁ=öƲ7§rt˜Oè‚iJêl­4ÞÈ®g¾Æx cZý™¤ú¢Ì’éÁ†Ú q¥6Ã3V@¢f6Z6ÛÔSœ["˜¹V5'G6<°6–s•2ì¾4 pÔR³»£2²'¾ d¬§Ì}¦€ÝZ`“5—>®¾v»5܄ẽî:o8bÞ+CGi”Jü$¬àÜQ06¶òÂ#;ØDª™çÅ8!³bËTl;etP±HSoB8ê°ç¸ņ¹w  •£a캧ó¨†sÿÂH±™Ÿâ Õ65ÀOY”üÊ켕k\,Ä”eôÆñ/Nb¶ J5Ú4tà¾Õ£JôÒ£ pª Y#Ë?YÞÒÛõg\ Ê °rËp% [ÐbÞT8þsÏ”ºæä–ã×<Ô.Sn Ÿÿz}ÍpÁSSK>¡À(oyal<@‚ X#ÓC‡åœÐ|ZoPEߘɕ©I{9â|øÞWRŸ(šb‰ãK¸$Õ×=Û¾W ¬2ˆGçi5œŸ½¨Z¦¢õ7<:†p6ku“#ƒ®ª¡ì<·ùq±&¡?mÇœ<—d<· ïÉ,€ÿ§+þ] ÿÇsgæ|Ç~ÄšYuÍõxž¥™€œ§¯mbÈR8¶A‹xžXðÓ(æÀûÎüq¦_ÐC'€<+Ì, 0>ÈÃ_aÃ80}ay[½@Ì+„qá‹`-¢@â›ô0Ä/˜ÃB ÑÏåÌt[¡£õe}˺Q­²/E³cÅY-»¤™Ð‚.yÛ×@æóz`ÝdzµaZõÙz©×‘¥;»±ðг„¡CeP|YVˆEà‹.Þz}ŠÝ×§­¤Môñ³ÕÇÀÏ| óÎI#>FÌ‚Šú q‰`àVeaò" 4^(Z6•È]d?ÎJ` T¢«IXz‹n,Ê¢{\P ¿ÑÒsXïä—/$ߨ%Ö½…ÿ¢¨½üäæîñ†‡ríêKÏ6U[ê®Äšç!Ïq—â…©$´hé©å‘é½N“ z¦Ö` ×8„B3 Rî»râw(h5 Ф’á[:ÿ>Uv%ùwJžËV7O/% ~‚*úºåáË3è”4aìÆªÈˆý„Ó;øÂ \J;?‘i%SäeØ}A³|¡;žÉ¯Z †²<.Óâö"|z·ß`΋#ØÇp² ¦>ú¡çdªfè„ã2˜ag5ü„kâèE ‰ü³_½e‰`` X<ñûw¨A¶ÁfÚþ;A)ˆoßlù{ïÿ@“{ endstream endobj 261 0 obj << /Length 2581 /Filter /FlateDecode >> stream xÚYIs㺾ϯPÍ%T•¥âžœfñLœÛU½÷*•É! 1E*\Æv*?>½\Dû¥t Ð^?@ÞÂ…Ÿ·HÝEìûë4H»Ó;—¨õaÁ¿}}çɼL\ f~ܾûã—0\xî:uSo±ÝYmóÅ?œçórµIUæúy¹ò}ßùð'þ~½ûóe™N­÷>W° vvÝI•Kh´Y««’—|Ó;U60Ñ‹£Mäl’å?·}w½µ†›Íÿyœù;gñ„‡u;ßóØíšñçœ5 ºsvPL màÛyÅ>ôQ—èOäuÞ»Føs÷ P‹÷­>±¢)ˆ0fÉEž[4²þP^Š%"yC‘f4…nÒØÙ„ü†ÝÌ|ùó1Û¡½L‰ÃdrËX c\pp>½Á^Òå„É4^zø ®0õmç¾,а)X»TÜèU—ŠÓÀ÷m{À„-V& ? ÄC®†é/ýÅý…‡oxø·Kû„;c?ðHÊîÆ¶¸¡K Úí±®ºÃ‘;Y]gåa”€zÊr”Ôõ… ,÷d~9àÊç†2–ApÐhqu³7{ÊÌÏl©Ò U5d[Ô*Ë_æNŤèrª<ñ†<:ö!Iœzp§¾Øì cMvRL-D×YÏ5¤$*C?5´ •’À:£Íx M KÒæ³™ÍÊñ…VgœO4œD=ã$6e<2CKRµQ-ÑúýŠgPò°!‘Ò1'O9fÅ^öXæ\wÌ£÷.è@Q†”Ýp‹’ öŸa¥‡.á9ó¥n öØØh¬Vç"Û‰5¬Yª"—FIõ ‚†ÑñÏQtË=)FõI7Rc‹-† ÏX¦¸b¯{€Tr´‚åêñ #ð[–Ì'Éfk–òLœJýÁøj8JˆH¹ V„ÉJl±à6lÌÄ’óŠ¿dl/ãźá–Å·Ø9˜BÈLT7ì*>jGpЧ°Ñ‚ÎJðCÁ|U0LgÚõ9«dá ÙSÕíxLya’ÅF|6à\Sž‡¨qŠŽfl9Êé8¾òÂu”„cã…˜ï#×ùtûñæîæî+óÿ|ÿé—Ûë»íwZ9·° P-¬ƒcg‡'i4¦E$’u@X3ÖEò“nÜ@ŒÍ|zi˜Y­ •1ZΙҕ¹YÄ®€-q…«9í˜^jDs!mÖ§†i‚’öBK*~G 2N.ƒ„ÊÉpÂizA¢¤^´Pƒ©(ð¦ˆÛ3È™™”ré¶RPYRþcSþcPµµ…0š78üìô˜.\ñèÂ%!.\È׬|€Ñì*ÃùÔòÍ+–™(‹P“'‰J¾ÁD”£NÜb°Ñð×^Ãñ)`hp ÁøíoÀ)½Î”ì*èï‘{Œ±àÛ6F(N;3â+啉âœÓ*ÛI}©ð)mCš`%+ðh’‘9Îoª¨²ò¹Lb€«¿nvE¦OàV¯'kL+ã"¥?!öJeèUirÔàÖg†ˆ›'1¶‚˜´åI8"ņ#õD‡ÄèŠVÃÍŒ)àü¢và;—îþŠm}ðØÁ“@ ên ®æÐ‘"œs“˜GBè¡©;<r•C² =r0„™Jf1ô“ãÀм¸3Ž2tÌ@„7gC!$•Ò èªM$ ê}=°ë#N@í£©‹i`øË{ÓLX(†åG õäea6ˆõ¿;A"C¸ƒ¶Û d¡káÈ=t+°T νœ_fµ JÁ¶¾åÐã+›Š”R1#sWþ/mbÑFl‚[öU;Z†Kº»<•Wèk¿] Hº,ÆU¶é<=#=P¹Sõšë×mo¥ØX ·¦kõÉpÌÿÕ5í,¼Þc#óNÅÌÀÊÅö= gQfΖtI‡ï+Or8yà—¼§¼¬)WFƒ%œÇ;Ø£,5s6“³fsÝ éPœ“Jˆ57¡ü3’ } _<ñxp° ,­4<4yZ >­ý´WÕ/§IV@µ¬fÜñ{8rßp3[Ia A¼qâø Í¦ß0ÕŸˆ w?òÙVTˆž4áá©BüBflÓ«ÇÒéžAB{~àG“’PÏ Ư(-WŠ  à qO.¸§Äý³Ê¡„д÷S©ka댼½é±æ€1Ûi l S&›úþìcêúýëè;²èûÛ·ëOÛ›û»ïÌèþ‹”ó×qx8}‘ƒC÷—Wê˜ôá‡üþÄ]U&ô¹_6ôL}à>%ÎÀ¼¢³·1¶…èÙ¼_éŒ[2}×ßÀâ‘ïѼÓK4m‡d{{æÙÒÐe®3w ü<}ÖJá‰fY›¥^&¯aìͽŸÎ2€4&˜(âw÷Øblï,4ž@z˜ªe±øÜôxTDŠFu„®{ñ0?äiÒÙŒì{àцÔ±Qw”ÿ±Iê¢1-”oø4HÚHÛããPÍmyî÷ˆµ jâ¿ÜÈòUüNzS­$³êuE'._6fòdÿ' àg¹çïÚßùëÄ7Wì¨ç¶Îèÿš ä€ {(ãù\,„æõ'[|d9cëa²’Ø è¢Z‚S¼@ CrgL¿y·š}¦)‘'öÞ‹Mp? ;¬ÆwÁñÁ“À—R^&(øé–^¢öhMø›õ¤ŒÊÈ!dÑæìƒó…&¯¸è°jF]+l Çk¸Óï²gt§$ ã Ð9¯µœ*»GCûúÀ>Œ«dJ<ýwÈà+{“»8ÕÚü¹ú?½‹þª endstream endobj 267 0 obj << /Length 2774 /Filter /FlateDecode >> stream xÚYIs¹¾ûW°æ2Í*Ké}ÉM‰5¶<%3åJer€Ø ‰r³›š¦õïó6ô"µÝ³ˆ_î6X‘»ûw·¿Ý®£¾÷¦}ÁiŸþù_EÙu^f+Ðæ:¬210† ~w-ƒL7·@XÝŽÇûƒfÂÄ\8¡Å zæé,³˜Þ1¡ÖÖ|[gy ~CÛj¸˜þ s`a™æôIYÕkPm-«µµ>ÑžàSqi±%×Q±"uGŽ?‚P¸Wž±Tð½ ±³_Ý[è ¬;'s•»ßˆ½!5ixÇ_v}gÕ^Ï—¨ë­y<‹ù€rÔµ9ýŽ"ÑV5®—tPwað;ø_í÷VïÁ?1ÍìøËž€Æ¶;¡ŒOÖìÞ @¶Ú›Þ´{îî,zöÙÄãit2.íøÛv²ÆÙéZ&uümÌÑôã:SÙYôdmÀU°@yûhº¸Ša"D—æöD†Ÿ… 6µŽG9‡ŸÈ8~9¨Þ/¤™±a¾™úìw¾à¶ècîJ)° :¤Q ²9@p,žVLãøµðN㈬„,¦Ý6ç Ä=U-÷·ÓÓ4…•y^4d“hÕ²&Yž–9š'¦¡é‘4ÈÆ¹² ýÚœôFª—8<eâñËÁlqÆAF­°‰ûQf}tº¡ ”…AÉåLr¹ dÒÄ䨥4÷^(¯×ƒX…rÖàC$­Ä³Yü½Ã=x#ˤ >ý½gN«ÿw6Vûdg–N–qzËÑÄ„iè종ÍV=6Z¶ì˜ÞCpP[ŽQ3ÚÍW|¡×Û…¤è1Ü`^FÙ§¹Ì»Y¹*HäsÌ×hç˜ÒTË´®•¹ÕÈr,Væ—Í1‡±Â: Ç8OFÆwÏËåϲóÜò Ñæý IvTT…¸#‰+éר­–ä%gÀwëW‡rne…^¦[E‘ù•vïý°¬·d2Lz8LLûŒw¦wUQ‰ö :é"Æv-$ÆU胋£½ éÞe6ªQ²H£]¦úeúÒÄÂçx˜Ò÷ší»Î¡\eU|ÂŒ¿§yÄÐÌý2ØŽ¸ÇÙI«“šÊ2Ácš“5, —ø„t)¦ºPúªž[ì’btÉ,»/‡®a™hOotÎñ«ÞL/Ðlnî?ÁÌ |’O¢ÍªÖù+MJ.ÅðÝv­3P™¨'ÎHþjÚš[è/üÙµù=ŒÒ-­„õòŽ9ø¬9 »B•Ÿ¸3œêšûý([Š%ڳȄ…8@òàŒ}ÆÚÃaå¸ÉËäW$©gHHÁ‚U˜Œzä¿k9$nY£¦;}æé²0¯¥3pª×UZ 5VzNŽÓ­Áã)ap¾:Çâ‘¶@+c¹9Ç*”ºi'P×€ ‘e)dÿ¹gîÑÐñõåeÀËAŒ…í™W€Rqm„×µP,Sqã®åÐf3›¡á{³Æâ%KR™ÁêÚȃ[w<ÊÅ'Ç£ØìMK È>³~/ ×pJt ¯È…\Þ—hŠ2ø7¦š § a‹Á:8K1­Ÿ&Òǽ©*‹ „¬i)(Èd2‘rI‰f7¡è:î@Ê´aãE:`&–1ï… ¬ïw¾àeMYë y‰ë·m”9r¥%8–˲atF›bÖ©—a¤®Õh2ì°¼I5ñ&önÛ}cÜ;þ“ÂTI½©<êƒÖˆú°>µõŸ¬ç†ájG¡R¤£­“"wµmƒGINåF¶ŠgŠï¢†) Ê÷Q!Ó#§8Ù`¦Ö²ŸÅó ÂÛúUŒ@uÆž“po€T£jÇ9‡Ã…œ¸¹Ph åµø«˜›­1mA]U^BÍX–bšª<÷b î_†ÌÉjNNÓ¼ g“ˆM ŸY G‚‘/K-CäC•£ ‚ŽQ]ßС #xC¼a¬ÔÒù}¡ýà<÷ê•Ä÷.¡|æ d²,óÁ¸«Euöé'‚Or@Ååì.a“0 é•$ð°ˆ)P#nR„É¿ÁY¢­w8Rè©Y6¨Ûdµ©Å«‘OhvOuâdðBýă"ß’>|çQí^îÆ£¶=Ý!‰ˆ’üÀTÀÜ>üzwÿÇf¬Ðq>©ÐÐáû^"ätDNtP<,»)Õ›±>ÇâGX¡Æw›¦ ‰•‹á’õ÷­>I[9–ˆ|ø}•”oB®yZ ÿY“ËÄÉpá^ÏÀ^„ÚÍPÕaHõ½>žzît#Ê¥:þ’UÐXpÐe:g«S« ¬"7”øxe—*Â7pzYz.šš Ün7žŽM~2õ[¹'SqEÐKH¤sß!³$)|µÊ/ûD×ã³åÞðT#0[ÌÆwnãfŽ‹…åþ2”L)X(añ .-~J Fm5W|ºÌ4Üøfº¡`g|‹D²È­KÆLòPn´8I6±ò! ñæÁ¢}ˆÇýÑœÈ$À–„ä Ôo¼à-¶òâ±ÅO†\ðÄ䱘<š‘@‘a<‘¡ü`„>ÇÔ@@4>ª#…ñNœœÉ¡/îÐ4vSybN_½XQ.Ä&Q5FÃH™GRüóq*x›¸&Úa‡v¦÷’hú쨢Ò#ª¨š"ª0¤[ÆdÞâ%‰êo6 ‘(/¶ôNOŒÞT5÷)ãRÀ*R–뎌•‹n ’‰'™GÏ1|S‹Ë±:Íå­¦äÿÔHûòÔ]¾Z+œ: ä¢?2UïØÁƒò?ùÛeòGì'ÿi¤“„#Øç³Fž8þ{,Åÿ®<Œ¼öÿÿšFì endstream endobj 271 0 obj << /Length 2236 /Filter /FlateDecode >> stream xÚXÝoã8Ÿ¿"è˹@“Zþö¾u{¹¶]`Ò¹Ááæ[i„qìœ?šéþõGŠ”­$^Ì¢@-QE‘?~(báßXäþ" ÃUe‹bÿÁ7ÔöuAƒÏŸ>æ[ãÒáüõåÃíÇ8^•û¹X¼l]Q/åâ?ÞÝáp½ 2OÕ¥þq½ Ãлû…¾Ÿž¿à ò>^g‘×*E³¿7°!õŠa¯êkô²×MM[~Ó…ª;`i$^è_ÿ÷åŸ^F ã ø‹WAΟÞe%‹$‹V"Œè:°z½LßûøååËçÒêóÿ׿?¯é¿$òË?׬öãýÃóú•]b%¢ÅR$ 4'¡/;¸Q'hˆ Å©·¾^³íÑÇk0¡l]¶f¨K¶ ÒöYÞiçaØTºÛÑJ­Ž70ÊRü¦;UÏò«¶ 16[Zé­:ÆA'zá"\‰XòÆ]™uW6¹+&w…±ð¶m³'r¯÷ŠGÍDÃFyî­‡Åìh”§Á©ºH9êª"ÉB‘;½×•liE³"ÝA·º?QŸ´7 ¤|gZÕñEˆð†ö§ƒÁŒ!˜q3ðÚŒ3·ñHí©Û'¤ÞI0á¨qJªf êßXºñQAãZl==× VÈ!E¡½„z}FŸóÆ)4 i<˜¦2’¬¹íÅH~§E9ô»¦ÕC?9M¾â%ÃñjÀvvb©±µ<¯1(ý4ZYdÁ¦=mVŸÝ÷(qÃý/±‰b |?›­Eô“i„~Þ({ÓFü°ŽbÓFàœZB ¬MµÅÑøËNœ$1»í¬¬ãš®i©·jt£hBîŒ léÄ› ®¿ÂÖ_1æÅ`l =§Ž@Ø_OÃñwOÈþL¸^‡Ž÷ 4a~C$§•,ÏNçêomF÷)ë8/‡ÈM9+û›ßÿçÅZL endstream endobj 275 0 obj << /Length 1335 /Filter /FlateDecode >> stream xÚWëoÛ6ÿž¿ÂØ—Ê@¬Š"­G÷)Mš¬ÅV›»/ë€*s•Eƒ¢’ø¿ßzø‘-ñÈ»ãïž<³Yl–G³”ó0Ù¬Ü^Dn×<ÌhñûÝó| `\L8߯.ÞÞ.—3…y”³Ùj=UµªfW»Ý|gl*õ<_p΃«wô½ûü"¸g"0Ru£A Ên+›9,la•nHäWUʦF–&qp6ÿ{õéâÃj@¸ŒãWš‚œ'¶¤ÉŒ‰‹$ö¶$™Þ–››Ÿo¾þ†øÓeð‹žs<a5};Dç66ª¥ž³ÀŸ¬~  "Ø£Ý:ªP ó¶Ã¶hà±!,Yì]¼šg> stream xÚíYÁnÜ6½ë+xL/9ä ÉÂ4HQ ‚ØÚ>¸ÎÆ ìë5’ü}ßP›X^:Ø]fc÷Ѓ$Šç½ŽHÊI2Ö¸Œ³O1.ãŠÞ'<“ñ6—¬ 21š Ÿ¼a¯Og$0žl¢ÄÎ%2Éz¼G“²>³É)á –  c«5Úªj\†r#Céà9çU0£C Ø‘… »hÈÂ&q¸etP£V±3A­ 2ÂH°ƒÔŽLZ(a±5„1!Â(p€^A£Ci'è&µC6hphZã ÌQeP+cC j0<>£ðwNERÐÞ蘓Ôa£;ÑâÁ Z A l¼v`o¼WÚâ$˜ó>¥6ÏèĨ`åIûˆWýP'ÅmèщѢ&€S",ƒÃ@«¼ VXL€ ƒ`3þU§“Ö|Zƒ σۮjÉ£w!Fk8™ &8DDˆ6w„P 1(“¨Ië`PÈ*›ÁÔº E :´ÚNZ€¿Ø+¤SƒrËŠ¯«ir/*Ê@7¥©”O©Ïë{Q?m›x—i_»¨²bÔ¢š>ÞÇšÈýgX¢($Y@V`1a©U伸ÞžàPœ¬Û×u¥ïZ»&–5åký*‡ËYú2<ëTTÕ7@7K вµ7&å‰ÿJí-¯Ò޵+ø¶ô(á‘#îEßèIë`,÷2òY÷/Ðc endstream endobj 290 0 obj << /Length1 2154 /Length2 15603 /Length3 0 /Length 16892 /Filter /FlateDecode >> stream xÚŒ÷Pœ[Ó CÜ0¸»»»»Ë Ü]‚[pîÜÝ‚…!¸»ëåœWrÞïÿ«î-ª`V÷jY{w?Ï@A¢¬Æ bfo’´·sf`adæˆ)ˆj³°˜™Ù™™Yá)(ÔÁÎ6 ÿØá)4AŽN`{;Þ0ÄA@ç7›8Ðù¨`ou±°°X8yY¸x™™¬ÌÌ<ÿ!Ú;òÄ®`3€#@ÖÞäO!fïàá¶°t~«óŸjS ýßá[#ØhP:[‚lß*šmjö¦`³Çÿ¤ æ·tvvàebrsscÚ:1Ú;ZÒÐÜÀΖUÈÑdøK2@h ú·4Fx €º%Øé_5{sg7 #ðf°›‚ìœÞB\ìÌ@Ž€·ê5y€’Èî_dùèÿ> #ËÓý;ú¯D`»¿ƒ¦¦ö¶@;°Àl(IÊ3:»;Ó€vf6Nöoñ@W ØhòFø»u @RD|Søo}N¦Ž`g'F'°Í_™þJóvÌvfbö¶¶ ;g'ø¿ú;‚LßÎ݃éß—kmgïfçõd¶33ÿK†™‹“†ø“ HFüßœ7ü›ÈÀÁÌÌÌÅÉ}€ÜM-™þ* îáúÛÉò—ùMƒ—ƒ½ÀüMÈlzûïåtœ]@>^ÿtü/‚ga˜M& °üŸìofù¿ðÛý;‚ÝzÌoãÇ`þë翟 Þ&ÌÌÞÎÆãýï+fR•ÒVQ§û·äÿ:EEíÝ^ lV €‹ƒàó¿y”à÷Áü'VÆÎÜÀó¯vßÎé?-»þ{¨ÿ½ 4€ÿÍ¥hÿ6¹ õŸA×gæ`6}ûÅòÿyÜÿùÿ7åeùôÿÛ‘¤‹Íß~êþü@[°Ç¿o“ëâü¶ öo»`÷©Z ­®¨½ÙÿõÉ8ßvAÄÎÂæ¿Çv’»ƒÌ”ÁΦ–ÿ—Ù5þZ4°HÙÞ ü×£ÀÀÂÌü|oÛejýöøpz›É¿] ·åùß’v¦öfm+'èèô€g~%V€ËÛ:šÜÿžb£½ó[àMœÀÜÞþ¯åä0‰üeúâ0‰þA\&±?ˆÀ$þñ˜$þ‹¸˜L’ €Iêb0IÿAl&™?è­ºÜôV]þz«®ð½UWü/â~Ë©ú½åTûƒØLêÐ[?è-§Öô¦A翈çÍüƒÞê™üAoLÓÿ"Ž7Ÿ©½ÍÛ•ýÇÂÎþ—ÅÖöOü_wÉdöøv& ?Þ”þkŒþÞ$™ÿ!¼I2»þ#â/·½‹ã?Þ(ÿ€o-Xþ¾éÿ¾‰³þ|S`óø&ÏödykÝîð­uû?R߸oo´¸ß:søã~Sæð¶ÖöÿÐÎòÖÚ?gykÍé°¿Èô§ ÇÝéíé÷'à-矓z{†09[:‚þq6oý:»Ùÿ#àM­Ë?à›Z×À7n ë[ô?б¾¥÷øþÏž™º8:¾½mþ~¾-áð߯6Èd ÿcÁÞ”/ت6¸ý®F„Àa{Rà;ŶV* ƒ×Ç—dØ$šêÌÀ_Ž7"I#½¨+›Ô×ÂËÄÏ^‡-õ°a­‰*mÞOFñª3ÛmðKÓØƒS‡"uDÔ…w¼Ÿ?ykXCµ@vÉRä|ráFVÎøsë—r¯(û9º°­²SÍ)‡ðT6Ë­¥PÈ`êQªå—óoAHOL…¦Z)Aâ©CÏx%ÜA£ªƒÔú(%Á­“yïûÌv¥?‘;œa$’L“­\òÔE©¸t/|J3Wâ è=A!¸š°zi£ðal:imv¯³a’ÿø¢)®ËPÜS•6§µ,—ìÐPx’×ܘë«îr[x¶ tXÇ‚_Ar@è Ì äb/Ú…ŽÚ_™í€¥h¥+Ó”Ä1Ýa`«Ãâ¶@°<2‚>†±iÃÚ±ƒ‹ûLßnlºQìBšëâ=Ë-ÖK#ŸÈ6ã›b-¤Y=‹=*°ns8VÉÇ^òæãnÕ ?¬WvNø®¿˜æ /*(YÇ 1ç1T>¨ö“,(½©„^ÚIÅHjL…݆cOl'âö½Ó€£“Å=†¾Ç³FÃC䤗ö­2,†Ô¬öEC_ó¥yσ“,•Í€iL75“Âz×g›Þ¹ŸÌbpü–Tzt5 ¨[~2¾&43Á½¡¬ i»Cf W¾šI/ùÌÙJÿåž§ÈUÀR¢ÛH›zÐ#.Tñ.–š¿xÇŒc?oM›½ ºƒ$ö Q[,¦Fâ£ìMLygªþÒœv.&nkòÇúªŒ§6´Ísã¼:„ ‚„#\7IÍò­õCKº_‡Ä|ë†l®ï¯+"ÐÛÌÒX &x™$ô˜Cð+>ѹÈ*“tg°âwŸè~#ÍÊÖ'ù‰BÃ|Øq½µbrœž_Î Ò%RF¥a¯1_ SrÐ6úìì àHÖ‹UÕ%ç·Ì[sKí >dWÁøâfiÒå'}Ï–ð lÐC)´=ò¼MRź#'úþ¥'‘Ãî…Òïà©Ê¤u¿Ìð¡- h$½Óhk™X2¿ joößÕû”ÑT ǘµ ÆìB¨‘wKtÔAY¶ý“^dæƒ){ùZ¡àlKAªYHXŽVë]»Dxµó{£ÙŽ/C&D“ùaù—ºf±g¥–aÉqµ‘±ý‚îŠÇ¥yk›±NPEY-Ròþ?” -/³¿ÛG_}?Ì)ÉÂï†X–å;“¥Ó·…Ÿ$&”Å{äÄíµÆÃˆY° à!…QD‹Ïöèuœö,9ݼDPLùÖª\}2ÆQ”!Ä ÁÍÒFx;‰,¦™Ë Ò]U²TF'ªÙÝ lú’Eû¡Ñ†}mП‘`ÝËN€3G?¥ÚÊäêæ9Ÿ=hÕî!‘}nÂÁRšœnÀ&Hœßä¶µ¡®ü¨žº*†òó»ÌŠªŸÒoH~Òr¸È+µO ˜øMøž<­Ê~x ”âç8/„FPGôt*®?öq‘7NVXò/ë$åú*×ùêäv·íb+t•ÛC éuqWàãjLó±—Q<”-÷ÇN’yfþÞ‡´v=›_mzòìªS_–8NÛúwÕ×ðÄÂ^u¤FÿqÓo°å¬GñAOâú õhj<ÒKg*ÑíóYŽæWRņOúaId›?\±ôBt¦êi°v±å¶Ô ë}íZÒ*ðµé¹)ó¹€Hƒfä/)«I†ÎLZèKS]~]ý¸Åp—ìÍ*r^4?& B´ÄÛÍÛìñA˺?’ðÁÁ aåùW“XïŠ2hRÎ.¹hdybeí±_ž&ÈEÙº¡¦³·>¯Ç48òKræJ¬(«UëjŹz¸j†zÐk‡£_vÔ… ¢jy‹G”ºµ ¶`+Õz­ôñwÄ5ž™@†/4÷].ßà»]è0mêÍ®·Øö›=KMå±ïÔeaôx¡+\'ñŸBv¢„´Âï"°h[‘j¡Á§'òæ—æ’sLÅBùã_ìQ'Ç€$9+H¢Îמú8Ðk_T™ÒÙ ÷±J’±ç!2%Ýü†OAT1~õºÝʆ!c‹«…†•ã€Á#(“ò‰T PðS¦Xhe‘+·lR>…êx»Té˹±vÝdÆ‚ïbgs¨r2šßû¯ù¯HÞuº)(©ÇU‹;ɦީ´Ö?ôyÁ~x èP_ëlºb­ÒÄ‹¯Rtú5óxâ×I!´luñ“œp‘þ÷¥`öNþ¥ý¾\Ê2©tÖT5òJ ¹œuRµDc‚‹JöuãiÑPÆÌE¥)‹²ÌjÜï[F›•9H«I «ìåzx–“6OÖ‘ªoZþk t¶rMÁ-ƒCæô¤+Ll¾ùýÕ|7É\yL\=•cö »ªþ;ëvÉ„²¢„Âv;¯œ"Ìû½–ݘª’<5Ùê ˆ^qÔy”©gä¿BâüxÇ®,»ðo_¯c^­ºwaK²—Ž(â$ßáh¿.–Úvm „2Vã]?ä•9¨Ž7Ž Üùmðd”CD匭òëÜêÙ §4V^ ­½‹9„Ãü¾Þù{!ˆû€ü¡‹Œ7-€>oM„@tn¾fœ›•=†P…^X¨ìF ÑÀS|=E®Ø¼ÌŸ÷\òú™ÔJºMÛ êYÁé@¢ºþ(k^þ‰täˆÖ—.ƒRC$<~jô"½z÷¦;Wò9'A×+ä2Bàó&Ù0Æã3ÂHÒˆK!N¤I^3Sâ/©®º2€´ò­~©¾±ÉïÍyòGNš ¡8¦"ü[žþ { Q ÔƒÃ\UŒ9¥›¸¢›ª2€´ºB )®& Æ&%‘;‹ÅNñaŧTë$äУ(€.K{htuûª´ÞiUú–$ªUÍUx6¼ßè¶;ëAöl–þú®wì4•Âiô—o†>è>üî»uÌé2<ïöµµ@hceÅ+$g{S*{á+œp-ï`®MÅÀp‡{ïG§Të¬f„yÛ•,Z{îJçaḠ$¿qËI ƒÐɵÃå!6Œ”ùG 7âío{ÄÅFkªS· ÔçêɃÔà5‡¾zÖ˜-‰ý>2´kõ8¢bS‚BéJF#Ðíì)èO¼IßL$vs4 ‚Yg5ÏîMèƒHÃäì%™ÍLâ€ø­Gx¯ãÙkæìR†ãÖ Ô^»}¼+ðpi /k Ù¦%ü¤1Ó€y!¬oÙOã–#·Ntè“y~ƒF N_Õjq²öˆèÎ%`Èoç3ãŽ/-õ’lxO¨…Ù…k‘”y >K?K†Ù²Å­‡-£õ³]ÌóÝ‚[DŒ:O±àí%fÒL­¯3æ"ïˆíŒó\±æiXÓ“~¦%l‘“#qÞÏx½œÂ=•ïnT5êKº^ki!tùÛœÀS¸CëYÔÏ¡‡Xqú¢‹!Ìa­&$ZÛˆÕžz ´®P¾ÓLSØ5jÍKf*1A`* ¦yTú`Îíú^ê~ê8.]&Ëä…e‹©gк• <–í&Ó\ƒ³!!Ùu3’5!æ l·Ã4¿CÄ/+=&øW]·ÓX@€_Zà/(ÞÉj æè™×¨ksÍ11⇘†aGÀi¼ÿLkÉuÊ­Ç>u@øÁs‡ws¼î·Õ‹­£ëu†òU ’`Bœ‰¿ûEÛ¦Ñm[ј|_s6‚GyhYbPÍÕÊŒª0“—ù¡ŠØ¹O¹Ùh7ÜðâïÒ¦cÝ>I5{ÛsöLÜu[”¹r¾}Ó±—Âw:C*úTäN#¦ŸZ^–K#§#Lá3éãV»uj>³/Dzaž3N¡ó[¿¬p>”¬ÕùzfÈ{}чPµ$§‰äõTT“•_õ ´2üÚÿe(¨2nð#ͬú´ï´œ.”Öƒ23tl Œ¬2¶/µ /Ïe_áškφá+)\t'MG˜6Ç.€%”âl Pu©¶”"šzcÁ†eÅÂUhן³Ž+@ú&ûäå²Añê¹Ç*oC‰¨¤óG§ÉêëvAK4¤s®ä…ÇÅNÝöõ9å©×¥›Šn„lBÞ§fxº–ß§›¶vô¿¬ì$ÌemJT¥ˆª5ÞWÖë Ws÷¦ß)†à”ä¿fÉ¡Fðôˆ’” à( ùËbEœîR-Š0ÞXw{ñ+÷¦m“3™ämR˜ªÖ„þ¶k'yO´y‘žËƒ‰ÉA¼¢ˆâb¤žuÎÒˆHLyB *P4¤,v‘ñ¾¾¦{]`.m EàE€Œ3ÃQƒ=«,ïå¬Òp»V"•X|ô#š>»8Œíã$ÎA™Ñ# qgÆ„@Û|FH»Öõò Œî»Z#f ÆE<æ¢jÔýPß3a¤°0Còmó‹3ÙܓӚ+?ÔÈñ ½€¼É‹UÌ Í»¡—LƒNÀvßÙ6>íVþ6ÝÌ톦c²Í™ñÅ„ò ¹eØÉAèT„ÎÔÂÂÐ2msŒÆØ ljòëÕ¤7ó‡Ô'ç+ªp&TWí¦ÀTàî?òkž–ÏvÒñ ¯'cG¸ ÷–ê[ñ5‘Û¢šfSMLÈI &S9$n#¿¼Y1CÃdY0CF~}JH ¯°“vñëŒTø@sùsQ,µ¦íú[3±Ê4Z‡SU»A™ð‹&¡ßxñélÄ#TuÙtKz-•ÑcÝdîòÀcPÑ Ùæë~ú$\cŒŽ‹)YsB̉·ì}¡·W«Ç:Têu×<¾½ãueTGñ6Ü6YízÝÔש+›!q™”õr$ŒÌÎû4…q¨æg×ós—\I0163vé nÛÚü™Þ#H]w¹Ígkn¸¬dm£¼ÞcÓíœk¹‹ìÒ÷5…sÖŽç¾2Á1…¶Wsç鮕áÕ&ô½zéîe¿‡QuB„›R× åqšº©ˆÙÆx E¸Äb}µéŒvR;Uɤ¶D4û "Ä×Ì:ëI>,0ûoиü‚þéye²…S˜ZCpXî¨3s\T«Q“ÝHq9ƒgq1Œ¯¡Mi9ñ™3nI©s÷òa}Nk’õ›á2î]$²§Tõñ¬˜3;YþüìaÞa¤öJúCð‘ÑÂø_”SjþyøP4éãÓ°™öI\æuL‹¶„Ä·Ìãz›Ñ^¶J)ç3 ؾ$8 A’¿.Ÿm.íIêeuC‘{MÆÐmw5(²Ï+ƒR¢2Š7ÏZ€¾OpžN(Zò­IÆ»0 >Ûw~9£Ú\®lí^ˆ=ñì±mh |g{øQçk{l ¯šÏPè×´éØ&ýíÐ)y9|ùI·x»¢Œñ½ÁKN?I#–%Í8 Ï;Ã\O«Ìf%”ígÀ¨Þ¯0ÏAä&LñiÎsq[2ýžÙL˜þe§}têqõÜR÷^ ¾D/7„Ô¼ê,²y}±‡°?—¶^"j$$쾺g›¬HÉ£Ôµ,Ó)¹¯Q Iý†OÒ¦ÿ{¹:‘&]Þ›¼Î¤øx{Ìñ*I•Ü5ÞHµ(ìÄ&eK5XìÉe×–çt|p$w9îòi=§áí—3™ñ¾öŠÄ ”ÚtUþž_¤§¼ŒP‡¾“iwp”•¡?Ô?|'Pä©“ò Nvs™CÛ¨ëá_á» F¿¿:ò”Y6O ïmäÛuÌR Èùò¯Œ¹§n¸xÉÎULq¸§íîÉ“õŒŠ{+[_ÜBÃ5ôzÌvU:Ó^ÖÌëÃa§ÜxWWÉÆ) öZù2h›8㯟6 zg=¥ÌZ®å ‹9Ij)>Ê­9¬ÇÓ§oÚ9ô`”÷Õ§óv5Ӓ⬪õ`5)Ç„Õf‡–“*¬%ë?ášÙe›gpÄFEg'µCšI–½üN“ô›‹Ñ2V\nrlÅ>P·hš/ßÍÄý²ý;ˆä)¸W‹É6©w´k Eb½ÅùS ÇÕž-RaþŒÎóviêÖòë@'I½šŸÌº¼zsNà«G ƒ%lÙ\5cÝûÏ&U®Ž|¿9¯¾m´zÆÆ´î+me6´Ø¢¶O²e¢¦S"bE(¹Š N[¼¢9Ì0À| wBJŽäH}‰B#ob®`¨gƒÕì?‘ÒÜÂî|O “ßïôóSvÄíÞf“‰T4¼ÊúK£š«óNÒÅ€¡¦ˆmÙp›¢êÔ º…Á@1dsá´1I‹ÇÁ¢ÏÀV>‡ò¹¢þ¢pÆÿÀ8ß0›Kƒ*K,Ü!L*À÷öÞÒå`ì÷÷3JUodR(¾ž×ïâóbâþO˜Á°º•ä"ŠųžxŽâXq‡W?^u5߬Dæ“kçP$+Dš‡ê3¥ã&TÒÖ©Æø…º˜·`ËàZFøëŸÆú¨%)`i¤‘[TfDTÀ´=œIutߎ{¾ñíö¾'Ø‹âìÈÅ/Õ¡vþ½*|C;G¾¯1Û!‹ Ã¯càa¥Õ£™½úäÐAå’Ázœ¬ÞðKͪޞ¿ðP%™$7xóƒ!OF#bd°Û ,ˆ.—¡Ø¦©C4×,3ÃãTpK´6ŽÕá÷G=RìK\«Eà`ujíòÈÉ:è…£R(åªÒxqÑþk>úL¼¼á<(< -A)hú°zÈb÷ì&¬Ê¥Œ“žÍÕõg™ÀÏÄžOSkîý?”+”t±7%tp\î-0aDž`¢ÖS çw‘Þ麞ž‘ ´TÁ¶ógÊ‹øÝWã2Ÿ›uÀš®¶àšÛÕ&!Ü¡2á‰PhΞäè,ÈÏ-6zvŽ(# ˜¬t¤z|Þ·:¶ðI ·îB‚Šº)‡Ék¶Œ¡Ò¨ÖÓ~±ŸŠZfŽflÿæIeœß6—y5Ý<îÄÁJw“´ÄÐjd¹í@v.$¶ó Z}'âÜiegë9;~¨sÂ&pVðrY—q”Ió\Jú-ü,)ÇE%’wõrÌZsDM~‡6ÆÏ-XÍÜßý ´™7mûIj¶ª37˜ÿR²ì¤îßÜjÔr]ÄÃ+,”gŒ…F²*Â?ðÙ&Ù[…›d“ÊmQ÷ ÚòI-9)j•a?È>×]M˽ö›«Ë2jŹ0ßTMsÑ6g¾&=5çÁ;+ž£tA½ÛÙ“íÐRKÁ¥{ª•7…ÑjyyŽ´|¥BSòiïq÷Ç@$–Ò |¸LL=ÃvÝsVÙZ/)³Ão´*’bÃI±õ!®!9r7ÙÑ›x=Ã]?eµ»$Û q•µÓ°ÇáÈqÎÚØ3½rwöÊZFÐA³öidüuAòi7„Îã3ù%C¼Êì#XwsΣCÝé»å–4“wXß×üÉ{P'Ev÷êù“Zrµkpp|í2J›A/ŸœÓ^ c[¿Þ #?Ä«ÕÙºö£Ü eÓ›PTÓ±[<ÒL™)!NÓ-Þ ™þüã‚N1=† Äh\’}<“$lÕtP¦Àlo½ym©ý:dtJ­ués1CX3€¸èV9óQ“¹Uô¦±Ñf²¹t¦} n¥FÈ6Š2ƒ\p;õì£H›Rˉ4iãŒðö§Kÿt+ѯ·e↹÷Ø>l·€÷Ëî/Ý.`#kfÔ-œd“0~qÛ)+û=Í—Hù#(ÆR»¨ÑCGUeHåÌý”˜ìŸ?ü5^¨žqK*n•\ÛùÓšª\ùë¤Ê‡=A6ëœRÊݦïÀ9ÉH Ùå;=ÒÒÎ…ÙìEOÚØ™¥£‘›Ã|D+¡NËÉ@T®TÍ>­þ=Qÿ‘–' ·‹+~Ú”á;nYDRÊKØy<Û­8h‘°‚š.]ŒÉg´lá'YäøŒ’¢n0ñ6ŠI¸Ðìeþ§žp©¼”¾VïŸÚ§K‚ fÛÁ#9öœX¬š’÷3˜cvÌ;ð h­ *ÓIY|õïÎÍ€Nñó\à—azÚG̴̣€ å/b‹nXð ]…5쳆jÚvÔô²ÀœHòë²Õ…>iÅP|wãd®ÌM*3^­g¦…ìjk$}€ÁîúÝÓÛ× Ï•æó}—œøBâ_òªHe(ÎÚ’lä©ï£(b‘ /ÇlVýõ0-JpÑD¾—õTvWL»|“5mN»´ãÍÕ¬ÖˆîbswŒ±¥“hi»ÅE)}ç±ÂŒ]«Ý]X)é°=ÌÌ Ã:nÍNM±Î·Tºy4ÍK9Žì (à{4Àª\ø ãA¬‹‚…Œ'˜ÚÏ1¢ã_I W]±L-¥·è¾YCSø=ŠO¤V Ším#¹eUH²k`O“[Õ‚³6˜ö¯ÔPÂ{8TN{W³½B-ñ\ü²èA°å‡>ðôˈ²cì ðÅ™(_Ïð—îbŒÅX‘ÑÁݶƒx„[Ét½Ê6 À¤¨k«]“pŸ¼œÁÁf¶² S2ƒ~h”šD/æ šœ|°t­$g¬ž¨ÀžD;ó<[Q¹Ù‰8 Pi)˜•)‡¶ÿ …S%ØÓ`‰±œævëb±le8bþüŽJÎÀ¿íê)ö¦Ýé,ö“6!»êqº³6ó’‹»µ¢ç¡RDÎ1⥜f¿xliðýÙWÿžeB޹EøïÞðÙ^¹8STJÍ*Qg:(D8ö‘÷8ü*Š_!ØV®ž¢=0â?avžœàŒí‡1íÆ_^£Jc‚°qÆÇ½F+ÒÛÈb¶WVx5æÉ¸p—‘“Ø¿/ü0rw®ažu'š³j*×—ÊŽÛr–Wϵ,ÄFÒÏœ͘ N&£ •%X®Ï~º„ ï–ÖövàTc…—3›°˜'úxyx „¿‡÷ÔÝ2 k͘½»®•¹Ü’-ò‰‡¯M%j—–8Ú¯z­ã#²–t¦§þtG¯/²þܘ¶x%"Cä°·›ßVŒHüÕçó fÅðƈ®yDÌ;ØWÿŘ6.ºhåD—†5Q†$8ÈåÁ&AMÔYEÂzdt·Šª CUÅR”/«—:mè6ûmŒ¿ *Y ß0M.¼#¯¦W2kF3àp(!íG£D·¹$× Tß6¬ïµ^ßZ2€i1Œv£Rp(<Ïq¸ÍÓÕ¡úØÆŽ`ú\j?¾Êùú´ËšÎMŽÁ­ù‹ªFyjˆ0ÿú¦_º#w© ûRôNv‰H{‘£ñéœÑÇ006œ\Ö謴€êÌ…v.âÉÚGåqH»„~¸wF>µ-%UhÆAòÛ†Q`ïð©'^¹sƒ5¶PV£´Êa¢OÝèËÅ«Œìê¬Bmö`R¸“ûwBlü§â©|¬ÙÜš‡Äãï}c˜’DJB.ؘ‘v5Tc3›ï/7[vv`Ñ›`Z•_÷ÂñŠ.£‹%…‰:Ü?ûΞº5sáëáqá?o¨Q᮵×`þÔ¢ÐqkªÈkò ˜àm,/ÝèÄO©R4( Q`ú ÃægT`éqzçÉf,ñŸì¤â/òU`.¬?Ñ`"©$6¤Ì=± ;y¡DD1+‹K»íÿ–ÇN¨Ð‰™±‘²VC² ¦ÕËF5§î¡ĉ¶ ú*kGïÉ]„+ôƒâWùÞl>rIRñõéËM9¨Ç`™ùhÞizq°šÃýˆ(~ËŸ¾€++%§B¶>«ÿŒ†±y¬ ËM+Þ÷.úp —µût/vïò²’æ7ýì~MÅ%ZY íu¸Õ¡À‡âB©Ôg–þ¢ùdçjUî!Rñ-ìmqövÐÊætîu¡~"O5í¯ŒÇñÌ+ß)¸ý Ò¹ÊJ}ïqcú––\zÖ_Âe˜tÃ\ŒÃr»›3 M–ªaý¶±‘ïÀûB".ò…”$ÞyRòþÊò¨äòl`1m¡ow}!ÀZJu ðŒ„A®|Ècu”¬"‚Ê3V$²Jo“Ûúˆ… Äôάjâ㌶ÀWâ:Ê#™°æÖ Ý×TÙÌø ]¯šÜŸÍZýÅyOw|ž×m%«ÄÅŸñÉŸL¿ØB5`Xè¢ù—ú¼|àYÒ8Ù·_-³ªêò+=0°KáQÔla¾r§ø&a€EO/ÿÀþž6ÅChD™¾Ο8ª“ r¿£Ã!–£¨FÎHì¯Æöª\­z¾;!®•пžØK†mvó%çÁ€MtCQ:ÚOlÞ•uð´ÇRÐY¥_<úKx®=M D2Ú ØÓ¤œßúfÊD3P6¸_=Vš$‹Á½ç6¥z Oè1ªÒWUþP¸"©˜1Ã7kÙ­1Û\ÓöªÉ§¢kô7K\]ëÁ‘•o7p1Úu‹°õ ~²[\CÇg3çÙI§½Q8ÖM ÂFêsâbÞšM'A”’ùpzdÞTìÚ (BƒÃªµd €~øH•#Y9ž½<–rFÏ1~H‚)<¨ßzêNV§u¥=.™2Ä…S¯p7ªä:÷ÐŽ°ÜÚÀˆË3 L·r`¾û UÏô¾ÍåN«È<'LWÉ%ñ"˳ƅ?Ciº”4œ*e2—:&ÚÁt°å„º¸Õ©‚Šdäs‚£P+캬³÷s‚šÔg$~)Øgør¢9šôªVuó^Æ+ˆ¡4¨$•Ð"òÊTqË›“§Euçk.ÄÞiŠ£-¦€ïé© 6åGþó rhc£Õài¦¨–Üã¡L$w>²é gåÓšvìa;Ë`¤‡5z«‘-O؃@r‹Wáø^ ¯ì`ÉÑ©P2Õ‡¾Kæ;Hò´ó@÷³v«†ÓoeË–ô«^¹,u;8S6«fn؆Ш :¿ÏKî¨gŽäGÙÉNVž!_w<sôñ6±Ý'·6¾˜~êP†€m½~J!U ~¾È)ßNÕxvñëè~9–4ž¶®îš/1u·ÞKòuœ,u€Æ0•ó‘‹Îr@U{9aSÂÊସ&ÌÀ`)ëŸ)_ÄÙpŸ [ÐçÏ£;t°ËìK‘ǹ‚"̽i6!Š(™´®ŒŠƒ`CjÐãê’*Öʵ-øÒ¡&Õ˜»ç4XjEPO#ãõŽÒ¬4¡¢„íU8¬ë£Ïã±úï·?ÌDÍ9ÝöΗÌÂÈ]‘9 º5aGß]-,KÝËç.´yŸ PŽ  ,è£ãáÎä⒎јBEû<è÷#(>€µ¦öÎ¼Ž£%J¥6¸è$Tl÷ÊmÅö`Ú³|ðWÌr~I¼æsˆ› ‹ŸN¨;=tóp8ñÓÏFuj25Âî:‚«P鿤‘ÏÛžm D|Ì-Я9‘“q6“\7°¤¶ ¨òàLª¤ºˆÄË]!ôék&×ñ` ÷y î,cS }ÉÊ­ÚNûµôNÏ»9Ëp6k8?ÎssÙ|øø…TîN#ÞMN'Pìçc U8ñŠ2ÝV\]’Ó™Vä——2#‘pO|ÓÅ…Ó}&L¥>Û&(»0û(¡´ûÙÊÍd„•vá;ÏaÇLF„áuèÖßb^)ˆ»Ñ“_Hõ5wÕ£y•µ¿šãZ%~I{íM$o8 ÷ÚW¢¾²Ì` e›':1˜Ç'4”ßna^gà,#b„û’|¼]_ ü–!ùÃÒ›)~¦zèš•¯·GÏpØ.ÃxHy[E²G<º„·ð=æüaJqY?~Šq/[”|ð¦ÛÜ?  Ȱ¬ í mnætNОöÃît}çgM¾ßJ rÒï]¥ÝÅÖàô¥Ë”dìåå^ŽU}ª lªû_™ Ö€ÂìJZZ§rêÑG!-pšÐõæ™Ô!as xS]ÜÃkçÊÊëw’Ay»Ø0üfø\ºš‹Øš~AɆb£È÷RD@´¯&Ε‹öñÎûßj±Ö#¤·:¹ ÷§(¬ímëÌ«$/ÁzÂÄìg>ô/³”pü÷Ç_kT¾‡uÜ;ƒ89ˆÅ}ñ:1™ý'\ɦ˔íå]Æ•ÒÙ/[«® ±—"†`/Ÿ’—5—AmÑ3ÅtqÝæô£óQ¯tãºÕ6뮆”Ã7öýDs ŽB³IP¼g’Å¿V9§w‚0Sª¢ï¼Þù@f!üûÒì;ʧ0 RbgnRçÁ|d[oøÜü% “þ†½Èª ×eÿÀÜ-/_Îq°_Ü%ÈsXÔjœÝ*èúT†újUè9¤¶\›>•T•Æ}zwE#ä=ßX’AŒC7ÎϼMh¼Ã–°V…¾Ê'l‹4}äå³¶‚†jÄSûr(Ê#wªø½÷ðãÍA¨_E°ŒR)2q¿s]l3òÆtó„H¼ÿ©©áûBWIÄÝ%Jqn(iBhÆ¿­¶ÓN2 TÑXÑl¸•š*´O¿ž.—N?›H¸*X@˜ö$õËD/—±WÁ©––IÀ?ÿ'ÅL—-írîLÀ1͸L©ûܦŽÇFØHß4Ô³;¼ûN«³ ¨šÀ8žJƒýòR ­ Ê]߃»Ó¨X@"×NÀQn€œÎ;Äg¢v¶ÓÁã•»›°RȺõj mHÐD”dÛ¡LöÜgÓDÁmŸ´£D%+~QKÄj¤8åÑô)LýûìL]3êï]wªìlþH XÜs¼Ù4Ô']´œ}¨g.1NŒxõ =@4Ì… P¨)ÏábUñ|0í¸AtæÉA–¨UÝíÚÎã{m“¥k‹¾>7(bi›»H8jÞ,Ï©»ìC¤®ÕÓXSZ,Q¸…q ²d›nà¨j²O×ôËG!Wuet"^EôœÏ³FMã:Z"ng»\êK?û¦ 1²•SÎqµp£Ïí^ÒF°¶ävÖÍE8vûF•Ž™˜«´9¶pZy¥— îaÛ~\Š{ËI~Ý€8—¸/òŽú©¦L|mmvÌÈC\¹Íé:{è¶,cŠyãAzX‰yô ”«"Ï3ý¬Ã'«q¾I£’—'¡ÏxÍù6͉¥TE,Y”ͶŽhªBUxä=TÍ “¼}{­ˆ]vðIA¡ãG¼!Ëyö·ÿ¦±«¤‡Å„v¿aDÑù¿¥Óܼ¦Z«^SYG¯ÒX¥Ÿ.¦¥]\`Cóä™ü"¤ÞNôä­úÝl§4ˆÙ…üyæx^ÛZðq»&LÍæ•Ú1É(<ŽáŽ­ÁW¤¥oò拉»r×o^¼˜Yî“„«²«¶ä2ToÀWü(ÅÀú%˜v¬äÃá4”°ˆ‚o_OÎvHG©F,ð+0©sÁ ÜzýøuùJ'=´^¨¨»HN¨Éö mXvC3óTGä?@Ômfe»±pM#^êHaë•xRvÙ§ßî—Ô›|›÷–Q!öàYÂ|Þ†/?; herÈ„LÆ_-NJé&6æuC€õñuGÆÕ7 %‚—Ÿ›d¯kç1§ÞqÍNÞh·tÒ@Ÿ—Ïá,wW ìበ^ Êå riÊ™CÐèÍ¡ƒl¾õ¡%–WÊWg+¸¹guE,†¬Žå˜¢ÁØ{øÊ - Û‰î|º·lg©X(Û~8ä˜96äky[èæß|r!Ï[î[ç¸ùÝ¥^9‚=ö4ÌÞU±KkHnÈÿ¨²RÞY‡®ì÷t&adlCmø>Ëš¤áq y#),È`uÉqUÛé)'…ÙòuÒ7RmÆ÷ÀPï;^áÍ$ëïÁ^[ïïd‡8}­Î¼B$ËùôÁ1¸¥ãº¸ÑU5.á#}æïuŽS\>ç5Ⱦ–[2ãGÍD¼BŸÖTäë‘ ËÒr#‘]R”‡’Ÿ{q…Xà·•êŽpo6æ³y w\oÛéG(‘)¶'Ï?"" [†V{z´Mù›d´¦$ôvA7›ú-tž£\¥,ÄM°ý’VgÃãÓû…%‹£¥Ufñ©îéã‚; ¶~ O¢ :‡Ä.㲄ú›üùPˆÄ»ÊR­>¯\eÆö$á„À™vhm'C¥(À¹”äE)!µ'}OR ñ¸¦‰Ê^Í ”%êV{*(ÓRüòÁÏõ·É‹HäbçÉäã(™0¼éxM2f²÷z¯¨q§ LuWÑð×f×rí]Úï~µ&È%¤qס.Ú×ÖñÓêÌ °Ç®·Ñ0±ˆ6 (‡ë9«³ÒjÇÇSÒä^ïºÁ ƒÞ¯Ô¦Hx[߬)(ö³9DRŽí',€ëdÂpM‘h—N>‡°‡UX&[¨ä¡CbR©6f0e $ï¥/šdÍ1Pªö_²µð=ž[%œjæZ¡¼aßW„*z!äîl VUÉ[GÈ'µüÆýó¼m‰²c{ª,Ñ– ³Võ3:e'Šf*dk NE¢9fÆ»òËéL?™6š1؇ŽQ¢LU?þýúˆóŒíZc2¤âp[Þw½7¬ùÕ¹K¸Ûõ¨ÏRWoGÀ-ÌIb±±ÂGóCf¼Äð<û›«dÅ_ÏK8Æuè+&*Cô2ê„WÍbÝ’òv–ÀÍP74ƒÁO]ÅUAWï5†ÄÞƱ)u3¼pÓ•ƒÙAÀì’(—ñ¿[Îàa–@©ðÿèq=ñn¹³%å.ô¦¨UËQæç±"R‰ÑþP£2¢Ë{ANú(ì u‡u¦YÏøÉ Bˆ kª|°ès¶¨RH’ŒÃ‰Ô6âjî÷P]´¤6«Ëá[ÉÛyï_ݤd”H¹WÊ (-œÛ‰»ü§\>4Ó§# bî ¦„Œk›bh´X »Êö΂G¢«•´°†&|BIÔkÄ­®zAjÉ€M§ÆØüßš£%šçÛã:Q[‘h …j"ý‚Ù´nuŬ R1% ƒ: Z>ËÇL¦KD‡‚µ’'×íOG ",n?¶~Žó(µàE‹4ÿ¾ÑÓᣮaF¦êšÍª€(½•Ûú¡ÈÙì/ Ó@}@îJ »¼ „Ö!²4*Ä—ÉbÐ0dF%Šûð•î£[”‡Áú{£'ÛÏ7Cæˆõâuül°¥ëô}i¼¤ 9òÂ>p{/Öå:r@Ú—b­Hr›­¯[´ ¥¯rjÆ{0¤t%»?-ø²ž—sz AûTIaä¡ÁnØÆàâXók, S¹rbCš·…JàNZ(ˆãYvû‘•>ú`gbF7ób‘bô±¦Vµ=ypˆi×_tº¢¾wsµr ù†Õܰ]ª¡VÏÏt°šÜñTÜVJ´EŸ 2Á"l²»ßÓÇ|”ؑ§ýȯ`‰Pl³®„„m¦¹èê”Þ7 ¿}E¹HÚaД¬ A¹Ò½bq—ÏlMMάÁ{ÎîŽ"*ò¹C^)XwWê&Ç©žÄ؃õ‹©sT»Xt܇Ÿ¡³T³Æ?0+hx9G3œÉkýiž‡J­eàp”Ë‚³8é­8‚dW»_v8Ùâ´|µxo¥ƒs„ùí2Äxˆaø–è’èΩ«^Çà0KHïÂèÔ §*èv‚Ä?8‰ä æevÒ¶D}Â7ò¤dc͓ȡ®\à¡/“o/àõ&o¦òŽÃyýZlnC-k£<ñrÈË ¼ÖÙ¹ œ6çûš¸³Q….ÇFB3¨gþ©³®ƒ¥Ûææ÷¯x*XX± õ“³†æ©Ñ/–xC:@¹¢EzZ×ï=¨~3”íŸWÚ·’f4¦5–l3ØÕvå¹”q‹î”ð‰•M[Œ#˜/±@èð /‰óÎ+®Æôñ;´Ä !ëîZZÛÑ oOR ˆ³%Ó=Uó ïÞ÷ôömº4öòÿl²Xš Bã—6®¦lØãZ*FŸfw‚ÍSjÌwÏLt£<)óB×`ÉŽ&‡[¡ÁøX¤Ñø½º0uø°”Ù‰ÐWéàT–šL-)¼ IÎŒ ªÐz·rÞrÝ^RÏñð½ö€äá÷׸T7"UVV—¸¨ ¸yO7æµ×o¢WéSŽ`¥cûþ"„ÓMT^¼«ò zûÃN“ûj_Ìäé¤AÖªYœ­NC„y…ê’`ׯ¢:²¦€ÜTÓÁõ^ì6Ë;=æàtó{Ë^ÌTXn©ùë¶‹.•¸:ë8ãn[¤'€šUÇkMszÃÕèØ­Hôë7 ¿RyÚO\ÄŒMeï?¡É‚Q v©‘rÓé¿-T”DíÞá˜2÷:žI«®Q)L$¿+ÃwAõ„ ʦ2ùœrZžNBÞ·C(ˆÈ÷‰ °AîEà¾<Ý¢BpÆ`¥?¨<ËÇNfmͧǜœûí¤M;Ô5mÑb‚`¦NÑÉ· _}Á£8XBRØš$ «Ï6¥ÚÈüÒ•w™è´•D€ØX;qµN­C ¤`¦Â¬¼s4\)áÞ#/¨¨äef?‹p)ŸÅ›}§š'A±]pèÃùÅÇ3ß¿]µ1¥¥›nªÜÜPZ†KLú@^V6ŒoÛ©œäZ×*2§¢K¶}™Xu¦Qv›Šð…Kéöæ’.e®ÁmÇJ¸6K‰±!Ñj¥–µÒ—1gÈ?+ÔÇIÙ:ÐsØ,:ýÍ”ùV -^5ÈxÂA˜²º5PvÕ¹ø›µË¬M÷W¿ãBàG&¶îÓ¶½nï1nS¶vÈ’{–öÓ~ËôÝUÁzyWwÂÍ“!o5’s? Žx“çaá”þžùê—ãÑ•ö_.®¿S0x`r‚mµ&Ñf¯̲’µÒ~˜ ˜Tö”pAo¯Ïùh(_Zœ îwaw6Ä.¤´ ,Ðcorûò;üð-´Ò"Ù B…}Q@Ÿä è\cÒ3„ ýÅ÷Üä¸M5Žï–×¥?h)ú™ôàI>T™ž¡.*ajÝíΰÅk›÷¡ˆulv=0Ç'Ê~Eæ]QmàM´§Š8ᾤ«k|AàœZ‘À;\¹g¤ˆ®úþ‚‡‚B@©h@üµ’›–¾¾œDHæ£ô>1CMãAYïýA"eL6›/ ”Jú¹)÷%ߵ㊻î õ]:®ˆFc†oWÍiÜ­’bÕݽj.ÿÉYdž‰šÐ85ÕcÙ—|STèjÿ“B™K}4©¡XÚ$xt-WØ6™à¼=1”7ˆk®x(Ò í϶(¡T@Xh‘Ú€ËsXÖÏ KfìzK ߉ìÕ„zuÑBnHu}ÈÜž‰ñNº¸Òb˜|¤ÿ.9¼.ºÏGˆŒð^ÝÜE@&\Þ s´ÝŠÂ2Æcî¬êDP™àçXÊw×`m|xðø·Žf‚ž–NøGçÇ'ÔÂyHXíAj¨ B{ímä Oÿð7eânãK³•—±×„ÎÅŒ‚g±^sµUæò—–ʑ҇ç„ÙXŠcGÉÀv•¦Tl‰4¢ïµÆ 49ñ’°5!““ôÈË{?–Õ'¬„a—ÙU=8e'î”×—:Ïá kÂé]Na–˜û¬M­d¤ÖkG+…{]» «4N¡ª6ˆpP![E^ ÝÖqšÜ-U7"M ¥¨ßY ù«V£^ÍegÍî¡bň­Ð$i²ÍÑú§£¼¥\¡‘nº©Ó ;Ç9ÐÅÖSž k³Õ½Ÿ. P"¾Žü$Á ~ŸNV*Ô6üŵ×îiï‘ôlB1íj¼})pؘÅà4ú2€.Îâ.y¦*“¤ŸŽ©ãM˜¢¤~P&ùÈ£6áùã]",>ܲҘh•Ÿ ÓÕ>uÑ.Éa‹}‡Ê =ÊZyHÅvúKÅ™#ýµž ñ\?ºŽÏ)pŠ \€t CFZ笎‹è‚uØì;`ŸÇ9#18P¼#óʽ+îžøQíáŒ|$dûžPôL½ÚÆÌVØM/êŒüÙ—å cß‚&$Ñp 6% XÃDع4)@L I6'àƒ1§?¸!Hâ#êR³Rz¾%·ÂRö^YGß üÿ{„ÿ¡‡³rå¾~› mtvUÚîŽþ°åËí¯ŒbУíŸj$^\ %n‡Íï²€+Z•Ì8´‹ 6öšqÅî+R_5¼\cšZӨ䣽©ð X[+mç[xÙq´Æÿ­ÔÁÿ«*‰:?.*öé¿ÍˆÕÏ0@ æùóÍr endstream endobj 292 0 obj << /Length1 1559 /Length2 8326 /Length3 0 /Length 9349 /Filter /FlateDecode >> stream xÚ´T”}6N7Ò R ÒÒÒ!ËîKì",ÒH‰H*%ÝÝÝÒÝ]RÒå‡O½Ïûþÿç|ßÙs™kæ73¿kn&ú—:œ2`¸DCpòrñˆäÔåtäxy<<ü\<<|8LLºP„ä“>ÄÑ ‡‰þ‹"ç"lò@ÄS¨:Ûxù¼B¢¼Â¢<<>‘¿‰pGQ€<Ð ¨sTá0ˆ“ÜÁÝjex8èïW ˆÀ+""ÌñG8@Æâau Âbÿp"hЃ „û¥`·F D¹¹]]]¹€öN\pG+IV€+a І8A] `Àï¦@{Èß½qá0t­¡Nztà–W #ð`°ƒ‚ 0§‡gâx8 £¢Ðt€Àþ$«ýIàü5/ï?éþŠþ û#Áí€0w(Ì ` µƒ4Õ¸nþMÚ9Áâ.@¨ÐâðGí@€¢ŒøÐâ_ :¡'.'¨Ýï&¹§y˜³ ,··‡ÀN8¿ë“‡:B@ƒwçþû~mapW˜ç?Ð [þnììÀ­ƒ¾q†¨ÈÿEz0áüÇfAyž ðð o75÷ï#tÝ 8y›ºðöt€;,xC-!8žN@áè ñöü·ã¿// !+( ç?ÙÌË?ñƒ¡n€W< äðüþýófú 20fçþú·Ì­¬­­«ô’ýïžÿñÊÊÂÝž¼N>A/°0@øáÅû¿ó¼Bÿªã_¡*0K8àw®ßõ> êïš]þ’Ë_K øïdðõB,ÿ» èáÁûÿ,ù?Bþÿ”þ;Ëÿ]ìÿ[’¢³Ý–¿ÿÐjçþåA¾Îˆ‡UP‡?,ì©?X†:Ûÿ¯W|X ˜•Ý?³„:)BÝ à—PÈúOÍüi×û½ovPä%Ü úûàäåáùßÃ’l>#NÂüÓtzØ8Ä·øCvê¿KP€ààßËÇ'(::Ýqnþ >áaKÁ·?¤ àæ‚Á!€‡v½–pGœß·," àþ6ý‰DÜ ïƒ ¹!ÿ‚|nËA~·Õ¿  €úø %nØ¿àC*ø¿àC*‡Á‡X§Á‡¢œÿùR¹ýÿ«u³£ãÃlþìÃ\þÆ|„ 7gn ´©lº,“¡råÜG?L¼4äãÎz…èV7[û¨“’<ÿ¢@q®‹WñµM«†ì›ËÔ噟žß*éªÜÎ9éw¬è,>Lÿ:GžŒñ¼ f˜&¨CJ7ˆ—¥ÍuìFzIN؆-¶êÖa"ðzVÑ9ãÊLš§(¬Ô¤ÑÒV–—¬FN-¢¿¿®¨·èÕÝ<}ü,mÝ>*`#Â$4Aã3à ñ–+œ®¥„«=ý½‹D]4íá~ª.þ›GŒÁ"±^jyÌRýÅŒG·i¹.{Ÿ‰=-”H¤÷ÀÝ$›^›þŠ~ï¨I—k§ƒ¬SÈJbZ4pœ )؃¬ÍB«îã2S<±ªêQÿ¶u¢±ïö¶ûgŽ:’³´¹¢p°ëó¼MWQ%•U¼tŠ@QCä~òÚ9´pXÌa¥ª˜2µLÜo7ãQ ” HÅzÑùü»:°—fe[€ºKš3{%ççÏ]Övr, Ë]ìheVÞ“Å–µZE×srSÑ_j f„±}[b=é[CùªS@â,diú‹‚MRýןÄ=utÁ‡C—Og"XE£ù¶ç©km„· ÒÒ}ã’CÕ¢Iñ§ðª¾ÎŸ'â Æà@OÍ)îóãÌ0{—p±\°Lb¢5‘‚YÔ=±_T‘R)3“eæç€'‘\òŽ(¤¶„»vveUQÈ¢1½HІX/‡Ôç Zw™x?«z¡·÷ø0D³æ70‹Ð+cqŒí|ùd˜ò¤oT1Ñ£B«Pá­Tö¦þq:Ç ™T¿çe­x¿õ½ ùÑ'®Siö?•j"õÌ×»ô«++Ë'ʉC„q®¡ÇÐÛζ–f$x#—ºÀÂÆprëü(þÅUßÍR¶û*üÉKÒ‹çŸS=(ÜÕc÷RbOËâ= ‚­£ŒLz¿Yú\Å=Þ08ÛÔ²ÒaP²Q:üZÈr´HxôÃKÓÚáNÍJhд´—¸–F “çÃØÊ‡ÔAdBŸ EŸÚlVÒ<¿: Wz~ìsŸ¤t\×ØÑ i³Å[_S,°®Ã 2BD$-ò¦%ƒ3.,8x°mÎÚr'çãÆ¶fƒ—åÜû8C˜f 3 4*ø0]µ´ïÝå4-Ô]ÌÂA¯ÀŸÜŇxOƒ±Ä’[I›°ƒ ŸôJ„g%Îô* î6‡C<t«L†fì›¶ß^|ô‹NhÝaÏ uJ[ø¸dÐ?²¤Rª~üÌÀ°^»~'·)•MLôGÏšØ50°X½þ¶òxìÖì~²•ôeã%2·yu¯×þÉ)íE‰KÂ-Ò/:,ˆ€µ>-­uúsíg^Ó]«F…'Ä­¾¬ó$½ø øDMéï'EœîàªN9#RµP:õî»?4XaD¶'ÁY€€”žNt{+ ½+.qéG Y‚ öµ^KðžÆÅÒu Õ¼—%¸œ|ÇVùÛ”KNsþ[·c>;¼ËðQ(ŒvQx>öòë¶®šn®ªr‰;µò«ªÖu›! µ° ?Ç쀩ºxB=¦nJ¦Ìóèp± Å.€}ÊÝÇ«¥ÏüsýÑùøáJ¦çùfŽ‘5f´ª^¹àãF=;ûU<u_Ç×ó¢¼—¥—>%–…RD sxášÄŸÄÈüzù{&mˆ½—ï¢vrtHõQÈwB͆>l 8ýb´;¸11ÓðG.fÝ%ÀO ‹*fƒ¾îŽ|¨üDÙs”åRLJ}ùI¦çãY>«â±À¤_j0p]8ãcèyqK}ï÷òþ#%!Go ýá:æk½õŒnGÓ’éHbô,õ¹þsó*³Î8q,”ñlõƒáO´mÚ…­Þܪ£é+!½êñŠ —U™µâgsRäôÔ¾NåÆFnO+l—p'‰¬h2nRœd!ß´?¼Ÿÿ(ddwlVΜ÷ÑÒö€`Ó6ȼ$´4(ésåÐÈh_£”¹×DÌ$·ŸèjÜú¾h#± &ç†êc)îRµ‰|µ1“®*Çé5³×1‚8 Uuiõ‹‰ØRž#ï6­ŽÐŸgÅð§ùO Ì›šàr`íôÕ^~ž!ÑÖ (ô=vØÉgrYà1œ;vrAœè0n„¹Ð§)e‡Ddãܾ)Ðd/6Ï¢á¹í=$Æ%€Ö²Øh£±qŒœESHÐU!#¤Ÿ ¥b26•<Êr¢µÎƒºàN1&ȼÅxiÔpw¡¹tcyÿj¤ [÷ûbÙ¾!kJ¦§Ä aÒ±¶RÌxQãLQ»NM3”ƈS¥ÓLe9&YB¼ϊAÇ„¯Ì7zz­aºã 4Ýð³¬ÖÞ›öðiÇÅè×ÓYÏwˆtÆh¼êG¿½Bõ:]kG¦Î’nsʯ'óÏáë{Ü,7mPïÌ¿ QÀ"žmö¡]¾|»•Å’¤önŠE4Ë–A™âe¦k ‹!e%½ÊŒÐ¡ŠBWî“q;r+ ð{r žè£4³òs¹ý_mÑbú½z²®À 6²SñÓà¯Z%,ñ³²Ÿ9ç.Œs˜ ©aâe¾}VPfƒ†¬ÞFbzW*eEâ±:a—›6Þx•úP‰:ájZç·†VÏ:+˜R’Ö ¡§3ª8»#¾zi¡ùÕ®DÞH™Ñ+3Ûj; Ú°HkLjX!ø}Ó^‰ÕߺH©VÀ'*H$+ËÆ"™úWuïî÷NIèûÂ-w(Ão+óùÞ¼r¾éuýÚuYÚDSéŒNÕ®†É6±!ú dNvƆwõ®G#Ð K¶¢Ðݲ؅ë§3û9†›Lr/€—áCºÝ³ïT©S>¦ß(¹ý&/ƒSLM¹°ñÍG«nˆÍTÙ¼Ïâ.ªÙ¦¨ir·”ß 0áÞàé[¬­¦2.¹^5Åç`ŽNhSLáœÉUÕÄ;RèYꉟ>^ëxEQMíÙVá‘^&übÆö¼( uÀÌò–û8’_ts ‡N­¤$”ØÕ\â ›ª`Ô¡‰óPˆÖ;:1ˆg6' fßx¼ŽÖc6…†DŒ†ô‹–~4*iÔPæ #ÔS|–œ²êG.ò†îù¿mp á©Âùu„ì0Ç#Õ^zÑ’^`A¨ÁI.»°X¡ ]…*£Œ{¬ÙâÊh–F-ÇùXéÓäj2Ù›ô ì>7Ãk”ÞºñJÉ/\É:Úgþ"œwÖ†Ãïæ…g†S³Öb߆š¥ñH<“>†¼Þ^†Í€S—_¼ ÛÿY®®‘(¾sOÅeÒúRªÓÕ:¥ÎVôµ^&²b<ÏË'§ÉN)Ö¼½ÝV½+3?k÷ÉLšÜ"Ð[·×‹túYîÝÈmˆFˆä>‡ÖéNÙŽ«YÿØ`¿ÝZ¾«)©äI:mAaµTã¸-wÿÎ;1¢°¹*çØW“xÜ™çŠá…Ùȳ†ªi½ËŽì·ç(¶ØžýGÈLËxÅfßåîÞÎÒ»Â.f Þ3¼¾g.·§vSâÓ‚Ç,áˆÒ‡•êXž©Z–¹4ùo|ʲ¼cÊ27é8¬ ®TáãœÑ™ý9£•ÕÑ饻9ŒÕú6£ßvG§ÝhÏÆÂ$ UI©µøºË`‚‚âj·oà¹Þ=,˜Â*´•¹Î¸P>pù=ª×ʇ:¤Iו§„¹Œ·J¤üf‘Ø%Žw5ó½ï æ[Óάc§‰¡÷¤VÑ»õê¨Y éÃwðÍ鵎oÏWd MåËï¿ñY ¾-œÈ¿Þ½’iÚ¸el*R{Õþ✻ôåK){-Qâ˜+Î[”©‘‰™Èn”\TúArÚI’‚|ôY(ݵi*á0 ÒëˆszÖ¹ÄG³eE|Å N𘥪²!Ç«ô¡IF3Ô¡*¾‡ÑJ“e›–ä¬Ib°¶ãýì¬Þ¡ñLXÀuî:´&ו+$”•U†x ¹¡ô£óæDÁ-f/i’Õx÷Ã>žjJFBÙY;»Íš Ò®äïoXT½«\”úz÷.Wo Ãp¶×Å#ݧ›º¡þQÛµ9žˆú‘S zÄz¦®¬ÎV²Aå*iAù×§Œôµo¯U.ٔ˭tF°ü§¼»,Íöº?2Š ß@C'c/Þ{å¢Ðå>:<'ÏÊd׌Gºñ-:‹.최ÊûVÒ¯ºcp3·çxËò²~¨©Að¯ÖÈËd¹/Û—ÄÈ ˜ÛZƒ‚y°îŸ]3Ucjöeæ™ÌÀ­Ù쾤“íÜͤ;ï¬Ûšª”mè[€Ó5r½†˜…nqE8žÆåV´à\|TÈ){¾gŒ¤º’/æOГ3Åãã|vÙb¯íö”D4:5LoçÁt?¯ám»¸‚ûtl Óf\ê‹ì4 ‚Ôopìá–GRl\â«"¯ü—1xat©`Ðà~Aý¿½*L\ḣ҅²ZÓ©­û1jWÿ@!*JŒéBêM8ÕÙÄ&Î.:8v³jmUê´]ûí éû-Y_»8$¹ñx!dX-Œ§ï:˜¨WW5Ѝ½»+O‘ÃÛ·hSWæÍh×ÜÀÌÉzér¥Ö7ÁP%!©,ÉìŇO9²5©"et‚ÇqŽÕ&é’Ü7 jC/o’°*®dï˜jÆu ‡ôî­S¼>ì¾f_«fp‹¢.ÐH_A‡®4&_ )q‹µñ¡nÌLñ è+ ìY͆-:$Yœç´!iÄ1!ßD?·øÞœóÐ|ð«yââM’|ÃÎ}îàß4bK2–åXvÚL$þ¥+h°w‹ÁV­¨ÓipýÕuÍ­J&iÍ‚tp©;d/ô¶*Kìc}q·ì#Ùñ€«b¢ýq—_ùIœ`j'¡Ê£StÙíûMS.µ‚\àANá€`þvùÛ¡D¹„ïÑǯ³S@ö.ÇSOgŒlf’W3§ù­⸧þB¯æ¦ž ŠÂÕ Ðƒ0cÏù$LŽ× ‡È,–|…Mö–÷ýOJ÷\Ÿët#d´Íð³~æóái½ñ¿Î­T-©ž)®zŽ,˘d^.ãÕ+®mόʟ×:{<Îа®øî„ ©®—t¦¶àÕ½îb¤Ž Î6«;¥å:xõ—hódŠíçð6¶fkf‚ÿ¶aÙž§ÕKz|Î]¤l×aa&½ÙÜ„#F[Q‚²µ½ŽKaýàÙòödêÂíTèŠG·½uL"ÚÛ,Eº!ΚŽ×£$ª;`ªã¤xYŽ3í†QNû]H:7Øý;ê×ô'`Ïêü†½Ú"¶[ýF`ÆgûESágÝ.fZ£ZÞ.=í´à«;òïÏt A~Ƥ.ÉØÛ€EqƒN”Üî_•@’Ðê»k]DÏŸ?× «_iŽéHl’çžTZXu7ÍZuF†¶îtÞIÅö#k}(Åá}–sú1cN“œ"+Mu¶À¨$AÒ-ãSÇ3 ø4‘l\–ヲÚågI!a½¨v¾§bb&¡ß%Ö룱FQª ê¸-r|›˜ÄI½ }QpO¸–ˆžÉÇk‘¿æq¹x½ÙrÀÊC4S¡B¶b·>_μÖ‘&˰NÚà¶3ÕJLUjÑ÷ÄXk¸idÉè½°IýͧÇýÅAŠ7é…­Ÿã_öîy:‡´5zZE¸â¥põ‘Â̓-¯’|7%QÜbæR02âmÎ'ôéêµL%tûÃíA”æËU oÆ2ïR({{Ä[Y¯¾òÒH^PÙ­|I5‰ kÞ³0T™??5´ÆGݾ¶sñ–[«ð,ŠnºÄoN} ¼1Þ +`õ‰oçîT¹/ó}r “0i»go3>2#§¥-Jot„‘à/ñºç ©6k[ÝÊ¿0oŸðÝ¿™Âýéf~À<1 ‹þy)‘ù‡šîIà…½ó ‘Gp1;°Ñ—ÔmòîÚùçÕµ_ì=žê» H€4æÜ¯žúFïër+[Ǧª¿¥éfôÞSÖòr·öqrŒœ Ùb¥.ØÈî;sªsœ?üYOû¡•• tè•Ëtþý²˜Øõ ¯]‡“ø…g¾å÷»÷| Ñ3‘½™Õ(†Ið¨ûã+$C©6x[qp“ZïÆOÉŒAŸÁ‹b˜+Ö‹É7y/ 1BÛ5k Õvìİ%P‚`‰®*ãà„sÿ䛼õ¢Ì%,éÎØŽ×‹cZç•6YJ_úLb½¬ÈMrMŸžÔj}µ¢ŠQ5­A?5Ý<~®”r,”S­¹qÍ%‘v¶½Î4Vr¸2þYhHp&YÅ¡gvûŒQ”h™Ëž.¯½££y"tÿ{H¾+Á¨®(MNüך™ðÓŸ>v¨o¡âÝä«Ý“‰ÞÝc®®õfÅÐ86ëÀ˯± Öã|¶žöOJŸîoyŽ¥ÍPè¢Æ|L>TvðŽˆÙòL‹Y²€Ù¾Äa'9¦¹,5ÀdAñ?Áø:|9UÙ°ÖØ–:ÎÏyQQLŒYEø8ð맺@×,d–&Œ¢Ì^=FX7Xƒð6ŠR#™÷'\ýJH2"e¶ì“F¤ÙŠIpÉÚ†M,Ó,;Îdêœ ܬ)³õç´[ •r~·H¤XͧãÂù= /6õä{s/©ö'3"å]J„Ð ôqj :°«;\RÏHÜ'®‚D®‰¨}"ÎfëµaÁ2ã’¿Ü^Gm Á·7Nº`MDaù0uèR?ÛÇ[ÆjåSûô¶°­õ5“k³MŽÈY›£üØþºVò3©œéNùg³rÛÇ›€Õ£3<–_?E4ÈODìhû¥Ñ“ÇËÆŒ˜FYÂ$u‚Ó ‚ Ùìµzãf ËÓò•åÙ_^Ö2¼è›fÀ£hMIVš¡ùèó8éó­2Ý™ü#0ÂÊë”vÞ³²•u_‡†1’–×ýcILI™‰Ð EJÆú ÷Ùþ­h‹£Á*mÃùŒáZ9Ù·Ö ² ?œÁ¹*½×ÍÉÑÖ]ÉäB¹gÑ݃öÁÜ`8,Ö×éËV³¶/r÷> m~"vÀæ&›ï8¶›QÁW~¢¯ Òô¶ÐÕéY=nO!3^Q!òÃã°Í!©Åœ®x×;”£ùŒ¶½Ù Ö~èRØšOp"~ÓuBºW+„ö™íï8—…bI«U¬ƒîë~´lx ;®8X‚»F‚:‡R1³Øy³úf ¤Ü wéç׆\¢Aâ$‰ÂŒì÷+-F¾gýþ=ŸÌ̼áý•¼Ü¿eZçðº^1x£‘j¶œ¹ Š$(§S—”ÈU¯W_/ù®:AK¡›‘œP¿ævz+%€}$žŠ@¶ýþ›i °CBuœ\Yk8ÂâÀ}Ñ`ù®õe§{¿"ä7¯Àø¤®æ~õkOô R‡Þ–Ï­k::{Ôw!øùˆüu[›µë2yëe\v$Un!#>vƒE#û«†/¥Ë#?ntäðÖHO>Sg×y“ýбs\o»xBPKdˆ# ]Ö.ŸØ~Gwz”œýKDFyS¤™=!¯\ƒŸ=íÛemSf㜹Õ6öí#RçXQù’àPK–&j­yŽ$f8måÊÈA¿Ä²€¦ ð ©‘‚ø‹©‘ô’‰\åÀ‡“Š´]Émd}¿IëPG:·¢G±^ NÃï.¤r.ßN);R‚4…å¯9Ÿöª¯zs@’2Í›UÒ„ 'q—x|4xUæ6þ7ºLæ8§Ñ[?<¿ʾ3ôunÑ„2š]DÎCЂoAg¡Jqà´JÛþï§%ãóAâŠÞjgÈ[\êu#zª«Ò% å†<ÑrlºMmXL¯Îܵ'Yÿ˜8©OÕ¡ Hf $°Èò|£eE7㺦­U`4ñ,û­–‰,"ñQÿŠ3oŽ’å±TùÞÁV0–Û§>§ª™-å7‚gøI@Ñ<Ú¾9 «¯g’¿ªy¿È°¦gµY‰ßˆx¼u:úÁŽ7Ð4>hùcõ[Ç &¬æÞåoZÚ{)+Bâî¿ÏÔŒÝUË 9ÝßÐI¿ÃS>¶x™×ÓØÃàB¼+7È»¾4¹„weoÆsd§b_ñw*†(f–ÄöKDkžëÆ·yŽŠ£‡,•lx,0š`6À×Q‰‡l¢&XuY†¹šÿ´û®…l&œ† ¼¸FuJ‚TÉä€Òäí¤‘‰Ó! ¯GŠM0L‡kM¢àŠ¥Õ&Ó„Ͻïd_c‘Gú:¦MfuãüìsÕ›6oÑG 1Ä24ϳÉm‡Qÿ vpÆ–ÎoD¾‹Oç•2˜¥[»&xÚïÍf‹4˜qñãÞ4ݵr;µÖxX¶ó¦áÓÅ´-c/oQ ù ËþÄŽ›_Q‚¼Ïó¬ íOÍ×´¯7ØÊùâ¤|sévÝc"+ˆCäbÛΟ>‘*ÿâkïä8®Ë§‘Ô›0¹%™œ¯C›Ÿ^žáw×€¿aX=[lfaI~÷Ë Î'ÍöyºGr9³ Kqù$W*ì¬ü™ZðЊVIC ¾ÆQ‰úU¨±ñäù›õ—Qä,eS+È7þì&Ë3›"ØÒÅŠæD;„1¥`Qâ°6šâXÏfˆKèÓ—.lѬ¶§Œ)ÑÓÜ¢ÚWë¨GÕT5ƒG³oRŽ'¯¹Kc]GÔÊHn¯ƒÉ¦`Ó“1Jq#)Jª‰_ ÚùZ[ÃèùŸ+‚zU8ÂV£­$ºÈ\š£õ÷¬‰è´?}_¯Ü+“ Öॣ:ãºx–a$ÙøÝö¯E¢»Áѵ´}Ì5%I 1:Y²ð}„koFŸU›Pч‘½:]Dç(3a>75‹âMÐiiCÐþA„HPy¹‹L¥'8àú…d?¹UÜZ×Ìv¡à fó®½õ©»K†ÁϼÛ{fàÝ©˜§ì>EW“û|ÔI-ô€[‘G¯¤vš•øÄ×Pû¥†jœ®È—óaË''þEUQO K‰øMbh#›õïp˜¿Ê^>%rpµ–±ÄzìaÄ«ZÍZ{´7Y!LAqëý†„¹hX®’¡xA8ˆ¹ª]ÌüÄá1ºG\«œ¼£äùx)ÒBÌ\Áºd–3¾ÌÈ>Ÿ-2XÀâDmÐS¿˜QƯ´­“pf.2œÖ ¤Gß\©WBfš®͵‹/è£Åv *̧$­‹Žû?¬W@Ž endstream endobj 294 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„Š ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ÃÐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmŠÀ¹ÀÿÖ¸Íá,…”þ„ Átª¨‡BµÝ]€`1 XR|KŠ‚@·ÿ¢0Ò@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aõ 8G¸+!#â4AApœ÷?BðÊ:âphiOOOaˆ+V…qçz"pŽ@c8Žñ€Ã€ç-õ!®ð?­ ¸¦Žìoƒ Êç ÁÀ…  Gb .îH$dšhé Ðpäo°îo€ ðÏåÁÂà…ûã}üå BQ®hÒtÚ#\à@u]aœNAÂÎ,Šàñ€ \ vÀ¯Ò!@u%# „ÐáŸþ°P à c.ç=Šœ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ÃuF¢<‘>Kö$Ìþ¼ ˜;ZÄ ‰ps‡k©þÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØÃ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0tþù×ÉšÀ0 éâýoø¯‹¨˜ikê« üiù_Fee”ÐGHL($*‚AâRÀ[„ƒß?ãBêø_-¤= xì¼^ÂEý]³ÇðþÙ>à?ƒé£Ô…yÿÍt+JøÿŸùþËåÿGóó(ÿ+Óÿ»"uw—_vÞ߀ÿÇqE¸xÿA¨ëŽ#¬а Èÿ†ZÀﮆpwýo«BX%¤ÒB`qaøo=«Žð‚à 8¨ãoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.à KõÏ:ÔPì|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) š0ì\øGl¨;CHþ‹„ÄË¿Ö÷‚Cã(¨L°SupËA¥«§Ðò ,éfêÁQ¡Á‚û¸.µa›…x“¬ÌIgê`õûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8ìbÇÏö.Œ&øì³qŽÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓøþUÝñ1Á“‡¡Dý–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(ŽNM¦—MUœ¼Â|:ïòÏœbtz;+а®çs|ÉÕú[ŽK[Ö7xÛo9Ú&ÚGƒ¿àÙéÐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶ì»³vXˆŽ÷ähÇÐüOw-ËwÝÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µÜì²HÝçò»{>xñÓ¼íÖVežI·Š(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­ÛãŠ*ô+÷¸J|ÿ@÷(% äÈ~ºÞÃ$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù NêеxÒg†WėÛ${òº¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Zò›—èoÓ-„ Ü—ßé%.(Ò8ú ]™â}DýÁ¨7h-þqt‹ÒüNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»ÌaÙjÃqfw†²¹ú]™Í¼`î¨ûa?yý–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîwŠ©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Ððºýø} äxÜÐÅê"Ž7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|zÒ2”CMÍaÅÞ=~ìœ+x?Ú.>ý;¾¿‰BÕ"n£L¶¸~…”~ú¸{ð¼)04I7ræ‹E]µh•©zœù<‚¤ÕK¾ÏþƒfÍ‘%‡µ©ÚÞ+§tãÞHcª¥%Æu`z*팋ÔþÎt<ºz''#Kó†ùþt ¬þF}€ Lécgúr Åž,ôÓ×Ü2ŸÝá žðöv@߬ۋ}EóGûßêæä¯L.Õšæ~ìE}3öLY„]Ï€7mD¶(#šWÙÙ^11zm¼ìœ†[™¼“ÔÌy+`Ë 8ƒšk1W’HòÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ý-&í…‡÷T…ã}þWš:U¾V;ïFx^©cÑÛÈä¯ëŒôð~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Ð7óJÆÁÑäS"Å’íþý -gåøðîS—oòžñ³wÖe?iÞ©ì¾èåAÿòŠ_À’ºWg†à Þ:¼³ª‘±N¦¦çòšSAcg–3Õ’>óžxÙ™øaÚÎ\Íô™“†­Ãp˜Ñ³ªjJÞ¢Ï2ý•FÔfÁ*h»Õ·Š2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätÃö³ï‰KrJÜA3ûq1Î"ñå<»—Þ —Ö}¤ ¬šÓ½k~ï™Ýñ;Ù– ÷'FyµQçê€êwºÚuc[ëžôÄ™¥Tîe,õÂ\ŽL5Ùz‘çÞp³îØ¥‹Ó™‘¨1ŽA_k`…uÚÒ +¾)pF¿œ'‰%QcÌ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹ì”Þ€jO¿ª‡šš"5üÜGSvIÎ ?ïVy£¼Þ×;•Kñʯ6y™Jbå]LJ¼¦Ðœm¾úP»žùú!™G/«3$$×’?=`ŸZ@ŸòÁ^‹ÆÒžYŽXžQl„»åÇÓrÚ·gåõ¼¤mVB÷nD3_ÏÞÐîhò±aŒöbëØ$öò˜2Ùéú‰ÈJ8ÓaÚ—3òÌ38½Å(ñ3ü&«tÒÁ<3F]C…¸ºž¾kú*å+&z{cˆÍ1êIù¤ËtÝïö×/-ÿãÿàtÓ¢#Ku]j5ŠkkÄw+ûFƒzä\ß@dã)ËÚ¤n‚ŒÍÌ(Y[‹«¾9¹ãn/ïG&FWc·Õ+ûùÚ–Lñþöã´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Çš2ÜŽRk".´0pšLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwð„žÜ¹²¡•ŸÑ=šzóÒjªþõÃ7gŸŽá([ø…f ìZáË»ÑòŠLû1•Á«dUOÇ›,H÷С£ÛÎdyAƒ½J¹´¼ÖzKÌèh(iö¦cï– $U¹Ì¼{ï-ǶSr/¡ÈŒç:}Øý: êw6‰D?~©ôرƒ¥ ynKªý6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+E݈iе1Žê ¾­â/þWûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•þEÇËM¬£pþ ®˜½,c-ö½ïÅîpPþ€ÜŠZœbEs¢ð¦èýyLM¡t/»¦|)|uÒp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨ÞLc¯öúyŠË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×Žîn.n«r>?óh‹jÜu:¥#ŠQHÍ9šîWbiX‘.ÁJ·Z÷°ÊhŠ–‡¼¬Vpi«­†2Ð/îïÜ€SäO­ áÀ>аˆôÄÙɆ&%LŸ8‹,ûÌ‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Øòf£»Aï‡ôHÒòä5Ô$`ƒUâÆ³øìfPRä§IÅÉõþKª”#7¥d.=x²U{¶½Èžs½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸðO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄÐìޢ䀗ʬö_¶è.ùïkœ‚ÔR)‰ fÁKõ…1^ˆÊHógn—â+ž'–ÑŽ£?;è_ðô¶ž·ÊœÆŠº¹~;UÈþX¨S´'ã³»kÚ$þ6´=çõãbý¼ÍQÚy²VçùNؼ×+-G5¹ž âðBëxk Ð4¾Ýºù›ÖÃ㯢3Ìå7© Ã.¦®wYRV¦Æâ¡î'ÞMfÆÎó$±„7’º¾ÖçoÛBƒ}[îŽæš¿ìâ]ÃÏ­»úx¼|Ô¡ãÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûÆ¾Š›wú=¨:¥É)ÊCš*„ޤÒÙô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SãTÙÙ×p47¡µ|(Še`Ï«Ÿ;VªuÕHx«oÒ íýÙüC/:³xkLåÑ}åÜ…¨ÕJ¹LìmòC¦‹[¯¨õL[š>œ5Kg5TÃþE¡x NÞÿAu?&uë2ÃU:[C“39™3µÃÖŒ žíˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJÝ‚Hëø‰ms1À§ûJTe fRÝ=]¨X~4öÛ!µZáž‹s±"ÒH`{@Æ8.™!êý.´‚1x¢Þïú‹Uµ:æ¦A7ŸK±,Dg'¡Õ¤[=û²²‡Õ ôT 9¥rZ»kÅÚ=¶ßß$Þá3öÚœ_‹%éô¢”žt,¹IѬªÉ¼ž3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸþ¾[Ïæ(Gé®ì˜Š`ÚNŠ8*6•:íÖ[zòk—\J¹]ð; tˆ?ös‚ª¡Š¾¸ŽUýÌÖŠ‚ÚÍÆÈáý$Îõç›39;ñŠ&¹G¾ÚT|g;šVYÉü‡=ÌTeùú“7­ 2N ¾%½ø_úivMã}Ý«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,ݤĤq8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézÕ%œn˜ÔP(¥/Ü÷ÝÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.Ò¨IêE6+]rg ´')÷—C•ü˜žXQ-xß§”ó²‰~õÜŒôÅãö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köõä£Ó²§)ë@@ ¾nìK!aí,S4§X¯’"ÏŠ·â˯ŒŸFŠ‘…·'£Döã†X¨¼¨’¶wùoÕoj¾³90’Ýa{` š‚L/ÔL9I¤Àî`’5UÁœ-з–ݼ‡e{®/xQÉíez„_ü©ñŽÁ¯ònÓ7<4mt§â‚ø‡«ùøo©nzò¢…CÔÓ §˜A9‘*š6°º©Ÿšõ±'sÅ&ÜlxE•ê+T Õ¥½¼Skz‘.çÞ¿—ŽŽ8óŒU÷ˆ%ôÖha™†À½öþå誹ȶu¹F ~ž@Ó[Ï¥ü„ÅÞLžïnsIz-Åqµž£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"TÒ1UsH÷’ê-œ~^+%¡U{pÜÇÓÁðð#YwqÁÁÝ&aPíŒÐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+Þë3ÝGw™sKû¤t4l¾jnŽ£vðEAßúÒ=d-[StjZÚ~Ž›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èð¬ N&F¬CžA­x,6fõÍD_ZêI>ã_׊æ(Ìfù–Fí¸‡Ž'QÑ ©«ò‘’Ô‹=þ|©”ñ€çO{îxJ¼áì_ðuN+á…3s‰0Íj?oÕ jœO¸Þ³û*› ¤·‹ºéˆ2]ãîÜZ¾ dœË+_È?xD9\ò¥WT"ܱeu³ÙWKXÂý•­‘aþþøC>ÛOSŒŒzê×x’ï‹'H0%ÕÜ/š ~È 7W g§Ðà·Uxk¬®WB=ßp:6à°øhÝn?9GŒ$9%j•èÓÀJ šâ¾êtnÐ[ê¼Ý(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Õ´)y x¬eúŠ+,ætÐ;c"ì[ÂÍd4¢iåÌê˜mÍäÂ35÷D½cFºé5­AÁ×ÍÞHŠªÒ%DQtD!Ü|Ää ¦Å =¯„“ÞNÝ”#¶×0zþ#é°qЦ¨õ-/Þ/ÍâhªrC©~6á‹ìÙØ~;ÙÝG5ÖºF¡ Mþƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ýì²òg6¸ÊåÑJV-L›t£8õ<\Ï]…p„_ú¬ªÄ¬òoì•ãsË‚&,yŠºxÂÚÏVFº —Gõ°·Í¼/ »Ö9X¸Ñã’hî%¶kšõìÒ·®ž…ÌÎ?R+‹’Ž3y‰ô¾†ðô5Ö;ŽºªÂ)Ëày‹¨û0\æA®ïã³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚þŠãSÊIÞ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åšŸ\£û8ÒŠ¢AöÁ+}÷h³¤Å®ôPnÕ¹ç[²|2}u^c(hÅà>¡Hý\ÄI-u¯fïf[`¸9–Ç£x«úãUCαwÅ6z5tz0#KÞÅiÖ²¹–Ñ÷x̯õ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 296 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J ººº €°h \Ž›èŠÄ!€0, ノ Ô;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj àÜp|@0 ú¶Ç¢ññ`0Òlƒüj TUÔ‚ñþ™ Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:; £NÎ0uå?¼ ð ÃÅ„$%D$Å0' Ì ‚üYÀÈÝöË úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷ ¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü" ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã© rýÃt !1!þ ôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬ Gë_í + €Æ¦êmý1ð–Çg‹êjà 0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒýd¶³ ·®UyôãŸ6÷·÷Fš¯O–l 2:T µ-_ò£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q© Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š 7 4U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘ ‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâ JŽ,j‹ Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð øÞgëa‚•ýI¹´òÖ ÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô ‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ² ┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±w õf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ $ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9 ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔ ñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶ 8>öòSö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê 9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvè ÕMNŸ êa€úèá¿À ny@‘ŠçÂêØ ±í>—=³{¸ð†râžÃ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšê ñ–&Õ°.šÃÌB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9 ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏ ì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9 l핯ô¿ÞH&n&Hó }ó âMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}" Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJ AȸJ(ì/BOrg h ³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊ ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7  ªÙ “xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc* Ÿ&|T²-Hyt(uý³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì +˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â ¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛÝ#È\®W› Á”Ï{îôb™ê¸ ‡‡.Ž4+ &±›ï6wójóë> stream xÚŒ¶P]‰¶-Š×à¶qwwwww6îîî`Á‚»Cp'¸…àî.AÁííœî{Ò}ÿ¯z¯¨‚5¦ŽikAA¢¬Æ bîh ”ttpc`adæˆ)¨²0˜™Ù™™Yá)(Ô­Ý쀋á)4.®Ö޼ÿ0sš¸dâ&n ;G€¬»€… ÀÂÉËÂÅËÌ `efæùCG^€¸‰‡µ9@ ëèt…§stòv±¶´r¥ùŸGµ €…‡‡‹þ?î{ ‹µ™‰@ÁÄÍ hÊhfbPs4³ºyÿ+5¿•››/“§§'£‰½+££‹¥ =ÀÓÚÍ   tºxÍ¿ (šØÿªŒž neíú—\ÍÑÂÍÓÄ ì¬Í€® ws  ” &#Pr:üe,ÿ—=àïÞXYþîoï߬þãlbfæhïdâàmí` °°¶”$åݼÜè&æ¿ Mì\Aþ&&Öv&¦ ƒÿ07HЍL@þ]ž«™‹µ“›+£«µÝï™~‡uYÂÁ\ÌÑÞèàæ ÿ›Ÿ¸µ Ð Ôvo¦¿&këàèéàû7°°v0·ø]„¹»“†ƒµ³;PFüoþÌèà`ffæâa@/3+¦ßáÕ½€ÿQ²üƒ*ð÷urtX€Šú[[Aà}]M<€7w ¿ï?ÿFð,,sk37€)ÐÒÚþOthñ ßÅÚ  Ç Ú=óïŸÿ>€ÖËÜÑÁÎûùæË$/"­¢$N÷WÅÿÕ‰Š:z|Ø™ ¬Ì–ßKÆzðÿweë¿iüÃWÆÁÂÀó[P›þ‡±Çß @ý÷qÐþKÑ´µ@õŸ%×gæ`6ýbù^õÿ¸üÿmøï(ÿ·%ÿß„$Ýíìþ£¦þþÿ£6±·¶óþÛ´´în PpÃÿ6Õþu´ @skwûÿ­•q3‚ˆƒ¥ÝÛhí*ií4W¶v3³úk[þ’kü¾2;k ²£«õï× €4šÿ¥–™-èÕá ZÉÿ¨€ ËùwJ 3Góß'ÆÊÁ 0qq1ñ† „8¾, [4zýg‰LŒŽn ¨<€…£ üï‰rr˜D~‹þBœ&Ñ?ˆ À$öq˜Äÿ “Ä3€Iòb0IýA¬&é?ˆ À$ó±˜dÿ ¹?ÄEþqQøƒ@\ÿ ¥ÿ"nå?ÄEåqQýƒ@\Ôþ õ?ÄEãqÑüƒ@\´þ í?ÄE翈ÄE÷ù™üA ?Ó?ÄÓÔÅÄÌú Y¸ý‘³ýWþ×%ýWJdö_Ä fæhÚ¢ÿ‘°³ÿ–ØÛÿIø{½˜ÌÿA)"€Jþ+ +(ÐÞÜÄÕê2ÐþKÆ êªÅ kñø[iý' Ûoèñ'/ËoÝýosGw—DXþ‚HýÉÍ“•·“Ðá ™õ? ¨0›@ÐlÿA³ûuÕþ¥€:ö'2ÈÕt•ÿЃjuüCäìø/5¨§?jP0'ÐÇÖá_fgù[úïñ²ƒX;^ŽÿØïV9ÿYPpgwG7 ¹©Ý¿"²±ÿQü¯áü[óo{ž¿¥ÿ6faÅùÇX@muýÓ “+ÐÞúßKÇñÛèñip€‚¸‚¾dÿ­ ÔCW»­ ˆÕŸ´ O“›• ð› ê››§ã?@1ÜÿA#ôø1óüÇú¼½þAá½ÿAMôùCÉèòWª½fÍÜ]@#rûχ´þÿƒÿóo è4ƒ_^p4ã ³©ë¼ÿ"‚ïɰ?!0K±¯•NÃà»ìÒåþˆü.…¦6+dÓåV$e´umW‚úFx…øÅ÷¤­ñ]d{²JǓ߳Q¢êô~üÒÖÐdщHà !ƒºðß‹³Ÿf°-døWYŠÌû¬W©³ºöà’ãêâBÞ OSúŠ¥Êb/ú–¯ -yµñç"ѧ­1 2±fÖZ«Æ:´ô×yŒ/w³ìå¥Â¨ð‡0ö’ëÊ[Þ¹*aÖvÅb¸Õ±Ù º-D×;o5{-lÒVxfÞsH:V'A­½¾OÎë£cC wií÷£-c»½þZ¥BƒB–ž,´Vz1k«¼™„iÐnß!z´€2ïQéWâ±ì13ërC÷ƒœsäùýüè_Ýt©Ø½5‡¶hç‰núÊ©øfú5íò²׊MÂ8+‚:?S¢7:#žJ…¯Ø4ZÁt¹UÅ(^îM,Ÿ´Ã±ôs˜¼˜]Fª±f4F?ÄÛæ§ñ\³Z£#£P…dï4–áûQSðˆhhøÏ­ùÑÎme¥¨!æ±£æÃeµg”èèÇmu®°üènÕ ÜW¥ )‘Xˆ’»Ýù~8S²3uQû–x-uÇÝï=%Ïžô2âTÅË ƒrÇü‘~ËKâÅý¸_‚„±¢oZ‚Xë»”î©Á³P×?Rd¬B’u¶hþ|ÅÅWS¿/ óÙë_œù¾Kòmz—Ü×®Z¿”} ÀÇ—i—HI²¸ôùzS€:.æÕ"¦uCÃS¤q… .sn¸y:2%Jö®‹ù½àÄ©4 ¨œ*kC¾˜îýÛBrŽÍŽO¶ð#q|«@«~ýÆûþðJýpòMq¡(pSÏœ)¹3^Rù*ÕøŸcp÷¬k)>å,NÃ˳‚a×éå|Fûµ[HCg®kv„ ¶Ë?Oõ~¤>>õ§*†2›D>IoÚÖ딲,J-#ôò@½˜ì˜¬[e¿/LgägSwÃAÕ_§G1=·7¶Y +ú75F/B2VßPÜòEíÏ%a°y›Xa—RÍaËG¼9ïBzV6„’Hea8òjWž”å '³_js¤|îËx~àŒP%íQ¿tÊ<[)>6.øî)¡ÓY å=Ìæí1¡­›Jz(GHNØ·hÍGTãUÛ¯™R0/§CÓ>>y7Ÿ¼™ÌdqÓŸm×E¡,ÁšÏK¤)B£&*ÏtÀ_uÎQ!–#R¸y—mÇWãû­š¬}IÚA&‰6,,ŒÛWuÉ1 ­w@›zÏHëÂTä5PÎÏQÁca6M mó• ± É{Oáè3¨2¯Î°ëÎÄ-‡VX‰å$Ÿ)Lò'ñ§f6o"²Œ]3…Å)©AÝ—u=Hûª·vŸÉ8É@8t»Š‡JÒ>YÁ Ô’¦h¼–(ÿ¡&MÔšÚȪ5.}þEðFé…*:V+VqW‡ä‡aÈŠ.ålÆ£.y¨é ¯{¨#½ mÍ(4ìáë_*yµHêÊo7¡yðÀ1ú$§×¼P—@«äÇÖdw¬Ÿ aqÆtv¾x°w@•»…#a lN6<éMei\ï˜F_r¿¿Ò­d!¢­Øþ€^¯@7lêÁç»^1\­Â†u¤©É·”ßù=j ½F‰Q)gËš¾“›»r(ô´?"Ü2W@_`K˜TrëQNò^=ßô)=±[3ø£µeMoöŠéLõ‡u’Ö£ŠùÔùoúÛ/&ì*,Ø_Æ•<;Κŭ¥ãÅ€$WCÛ³Wó™È>‰½°ïª ‹xäs|p >¢]V¸ ÄT„z(ŠwÇ*HqñËÈ[¿R&‹,Yâo;ØqzƒGÊÂÅK*5]ñËÁíŸ(/Rú("‚3摸1cW@yØt¯³¿ØHµ<¦µ2µJÙSÀ,xÅÅüÌd g½<ãgšƒ×'Ï=<à#"]<ŸËïÍx¥—çÕ¶³îÆ"â^]‘è$2ɨÇ^¨¶Äjêù‰Î àV^t®Äñ"¯_G$Í ! Ø«ä£ãrÒ/òôÂE×Ù‘‚7\ç¨ù¾v”Œ‰Nk´Ö–*Õt·}yDM$‚hׂ1}Îb¼ÆíÎxíNw¾»Lúx-ÈwIè3Ú8MïØQ»™ç9œî‚¶0‚‹®Å"é5y>w”¶ °|µOüÐä¥é}Ó´‚6Mj@怓VêäqÕ‹”M‘˜q»4XÆè"ÊMŽéЪ#V-Æò8àVa.LvWÆ 6e«9+÷ –:U¾þ0ïÛÔgøê&EB_9ɦÍÕKCÛLÓ>‡XgÆòµ…°«&Eùàmƒ¾ÏQè;ò›kíìÉ¿XÒÉ1\ìEÞÎ]SÞ÷ ]_9ènBÒft”ß¹Þ\:f¾7öMô^@€%#ŽõÅ6ƒeÔ Ôm>½ :`Æv@Ø2u ·tUN7'g˜Ö¿­˜Ë¤”çwú …ÞŠb‡è×ÙÈ}ôÈ8:ÚLg11ìã]æJ¼mT/êS3™ñ‹UÈc®âÇuçÍbd¿6¸I! 7î|‘=|êj$Ž¥ç2É;xØ{®}I8ao5ƒ€Ÿá¹ÕvŽ¢ ÇUÉpÄ©Ù$ÌG-1’ŸB×7ÏË%6Mô¢B,؃¤Ãó0ý~¼Óznä[•"ZxªƒAÊ&ú‹cùúùà~[ZŸt¶Ræž%u"ãÌŒCñž§ÂI•K¶CôåºÉ• ò<¦Ù’úW¹¦ =²› ^Í÷÷d)×ÁÖ`^bUrÎ÷”QöÞ54ÖM¸1£Ç6}·Ze±òª¢†„ª¢&v_O¼Œòu²yë9Jk¡6ÎWß_Ä¼ÃøØQÒ„XöÄdS¾5¸œOâ¿aüéüDœR‹ h¤boAE»Fz³ôeÜM¦¨º.pdžqY‡à§ð’f¥K*ªÑ¯S‡µà>X¤n¥ç]7Ehy$‡ÔØ4!h£ ,C£ðUË÷IM9XCñ|Œ‰¾L•ɉFn\rš{׈k[á?Ù}UqJŒÀ«,œ¥é‰hÎ~h*¾búÀ÷N — Ѱí†wÏ J¶ÎFøÇ{¯Ê†P jf©1¾‰vÌUgˆåßlÕ©Ú.sPùrøœñ–ö܃ÝìäÅX’µßñÒàœgŠƒ…öb§|XÄÔèz •Yúˆ€£j¬ßØ*eSVÆÂRì¨Î6‘õGUö™ì9ä¸Àµ^€1~4ý«K&1Ò©Õ[ºm³µìî4ü¿öÿ*ƒy¯˜&ù–ª“rúìd\vNg¿l6WŽâȬX¢¶õ”è)S@ty\Æ?H †å@v=ÛŽf…<®§!oU¡Ã° æòêmÂPPÖ‘*ŸŸâ#âú@`U>­†.Ì”´¾9MŸ•(ˆÝÚ2*.mY€ºëŠé‚âµ– ÀØ'¸2µP[›?i›V³b7ÀG™ZKƸòùË0ÆbzOÒ'Ó¸e¸E¨`WÆ LXMš2•ÿ º3é èáÆœ-B ¿«YWÁ6xmR-BâíݹËûs–î}ŽI¡×%tjˆé¤ÂëBô6“…?ÛfjæÉ·’á]R©òT´êC* ×éwsÄÚZ/þÏ·M-­:M ‚æ)l¾“Hw_Ä*I¿ÁŽ~ÿHlôÐËwY?q˜¸#Ûê‘\l°FO¾ü®e•JÌJ(˜#ƒ?L ç…°ãìÛ—ÞŸÂÉÕ8ÙpŸMªƒÞgˆšÅDÛ9j7*P_Åø€µ”’­/N9èøÚ¬³ùÙAxÖ·SÉØå½nÕ‘ì7>çßÌ*÷ú~*€‘¨M¿˜p292D^²:Q²…4În9ÏÜuºD¬æv÷^#w¹J]¿Nq‡·ð7sî§ãèõ yY7˜Ï~Ä¿ï9EÖ ¯ïvË£9°æ•¾ÊëV X¥®1*Jjv¿:OÁ` V¹m 0HñFmÿð Í Ï”ÖÕ§ˆ×8óXê#BšòÙ5ÄÙú&úÁ›"HQ}§µ™M§FûdK¨Óþ½lÒ=Ã,[Ø¡õðZB°Ådè‹m«*ãIæÍ‹Uа=#:ÕwµÝ>ñŽñe;ïgb®d¬D›±†êAûã&ÃæZ)w#©Ìw÷MË,%O(nLqs¯[Æw.á·Ø£ëXª¢ŒžÄý`è,*,y¬È ËÁ „/Œ— gÚ¤änù8*aŠ<‡O: öd\œ/DÊØ,DB6uЬݫ‚úÖ÷ú¯º¦/NgÐu\P Åonyã?¬˜½S-†\$‹¸¡!ž0T$п§Ùi7©(m·Ú™äÑ›+uƒU;Äá‘K CP—+7Ñ&ßó´MnV ÕÛðŠÅw-ô†’¡N}ë´Aå/­é1kò÷³"ê!OôßÁИìKðìÐù@×õR¥Ë;qq80Y4˜ÅòõªÉ.p؃? nì~/ çUuJŒ¹°uÔøyÈp…ÿœ)Ç{úÉØä2½d)F¯v"Õx¦{\"§°Ï¯úÔ„1ßçÀúJÞ$ ÝßfìËá¨ðSa̾ÿ` ÊÁ…V3ô»Œ}‡H×é̴ȾȵvBºå>×±)c豂­‡ÜgÄN òÓ”#…OrÆ‚ãÆ2Š>ãÔ‚óõ¯£®Bíß:† õŸ£i“0^TƶËM-ÂéV;»7ÂrIá>,—jÀuúL_[þ°ün²÷1Á½Q2o:ƒ¿CûÑ{½µ¢j â‘¶bÄòö]H›Õ /½Lúó÷‚Ìūφ½SÎò@Çú¬t³ëĻ⤤).ÁSš¡¢ë i‡„ˆö²j.Òc_ñU~&V·…Áá_®û%AO¶<2Ú¿’, ˳¦!wÞ&_žè0–K´%NKSQGl“ôLõ“ÒÊ®ªq!÷¬èÕÂA_ج"RÎ,‹É"ÒUD}më€E_A¸IUÌß'çô¨WÃS×A‹&[Å©‘O{cŸ(=?Ê›¤º=½ë”Ä6×”’_ §;ÄrŬ’z-Ú2dj-wn쇽·ŠD©zxÐ%ªò /wFd»¢ÎÌ=RX´¡áײ2ÞSèŒ|[,} ØniŠËÎû¥µ·k£øO—Š¹ÄŒ`©ˆŒ!Xà¼@¤&}Rö烎!í”»%›HTÏkA–¼{Ô?Ä{¹3œK†$ăDàË€ëñû¡ ×A’vŸã|S|™J§ÊVa1åó"kýHÌvM¬6Î[acŠv¶JÑê&›øŽIp,_éí<‹ÐEs#¸×ËàKL§ ÍÎEno“A]ö$‡c7ªÞaþ”$*½"e†uyŒ~¢J¯Ì•ôÜ÷_SÄ=Bê¼gÂK’؇ŠoïÔ´{×™ëø«h:¬¶´`‚»Ø-Ú$Å[¬âW—Ô!h Õ §ˆÂ<ý_è¢t[%0§ÄÀÕÞ!è |P…6ùôÍÝ^²uÎèÃ7/¹½¾êlsÇcKezõ~…ÔÈñ‹¥ÒNjŽ “FÑX@å”AÐ'Î;\»|æÕ4z‚œ/á¡•aöÇšmÒ'õ]„½`ÓXñú9ê¾'™e9¾\~£¼Y6F#‘Åò¬QœõèISsi‰ó ÓyŽwË܆¬¸­v 3Êêó0BqV§«#C›p¼¤Wü.iµŸÊT$ÄAÅã>@÷ÊÇÕ/<Ä¿p@~¾Q #¦˜7È¢bÞ¾³´O„í"~áR u@7qA¯Á¼e)ùY6K­‹¨šà Ëìt'èùÅæ›[· ËôP¦È¡Ëk fMÏtÍ+G½±8ÜUcødŠæFBB|ús¦JX£ÞÚ¿F¯6/TÈʪÝ-ÅVÜ™bÇš¨OÄ}hoø‡ŠÒþ…¬Ë#õãÎõ=CÓr­AX˜UêzZr@œ'LÕý fL\òn¸á{E—ê~ŸbþâJl—4>s1|c¦¨`x8§þ7»+”ñ—˜,9v<ÚïÁr ¸‹ëZÅjûʱßkD*¤¨B°Ö±¦fÆ%.X—¦¤•¹z±k‰Îtö´Fê%GÑ% >ˆFïä’£ƒüd¥àWi;Ø 8€´2Ü&Ú=?ýX8L¶2ìk^âä9FfýhýƒØ–Ç%ù»†¯ƒÏ7N5ƒke£Ý3¬àè&u@§Šº“J±¢ª^iÌ’cÑ‹–g£ùÐv5ž0ÉábÚ‘ˆ!^ ö¡BÍšX …ÛÚøBxô]«V/’^+F>éÑvBZ”Ìt–ž8@êA‚ïcÑH”bÚŒd'fϯ=sÇû«Añ%op±i6‡}øñ =úqd+=,1J$¸æÁ\0ë\¿××kàq£Ûfh4;C,YMÔ6QmÔNÅ‚è£ó,ÙŽä`±#ÂÔ8ri›‹‚Ëó¦ùñé[”Ù•~˜TüXõ]a›Ö"c;•8en­¯„0"Ãq-éºMéÁˆ\\Žö¦È`8{·²ÔùòÍÁ_úé&òد„·I7õSšcw‰¼ÁÞˆÆÌ»å1yGß«ü$íš&ÿDÆ¥{Æ¢’&XÞuô*ż#9„s»PŠ}[l¢s–Þ¨ä0Š /Õ²¸£H‡óˆ¤ë[ÑÊÀš6:±x° ´5qGÞµ¶G£!f‚áÈ­ß„_ ` ¶KS=äpøߺŹwà¼Oµm–º°¢§ «C‚8‚ô èëæ»PŒH–$Ö—Çioõ9ʈÎ?PÑSô…ÿžÅ¶¾ƒ¯\†ÿÓÒ––ùÅaëÐ[mŠ¡c3iÑ‚PÉÆÏO©%tckR“øÛodÌŽß9À-d’<"ªIqѶü"ñG-’X’c²¦Î”#Ì´— ¦Ô›CÃú»`¢–”%p=(á¢\ýMçÄæ¾ÙËã • p»:rLµ—ÒÖ'£¿ÌŠr1±¼cÇí¸/øâé‡Ñ–ÕL™¦ûg o+í·y¡²1¬O³à*æT3ºä¹‰ØÜk›>¾=`à°òQzæQ'1&9¸вÜÂ_ Öøð‘ö“¨ùXs`;åÓtúlO ç½É -¦BT(·Ö"Zêù{]Ò£¿‚ME)ä†ÝŠRQkÇÓø©¨ÊûîÒêÛÅq, .@.CÎ@|ñ“Š˜Å!ri(nMÆqeý9Ä®¾#.û…¹“HR3 «|–ÍÎ0×hÏhÉ~Žbfw|¦LÉbÝÄH¬¦( …X”Ý_üÊæÄ|;7qPJwï)v¨=Ë©˜ôˆÐý¦› 1ìðëLÖ¼‡`OÚ æþÄ\ŸY²$åñ=ÞîÖë‡Ø5üÊ×ñ^~T E>ÔN)àÏMKq¦JéË Ó{ÍW%45 â]ü;dF”M¶ömÂ[Ì^¨ˆ­´š Ê­7:.ý( Yû^G䣩‚´Ã9©ÑÔÉ)Ë3Á™–O°=¤vŽ”bè7wbª6_±}g¼ô}}–$žlï´·&¼ÌDÃýuócfOÙĈ:`^>‡›ógaß±çY$µC¤™8:ÊFGu6æ˜"Êc6Ò8—Ú-¦í:Є[Vg-gÞt@šNIÒÞó—9ûÃÝ^n8Ó-.ù>…Z ‰½®×tÀTlô6v36RâèS6]’Ž:~üKLnT­¸M â³~FïÚ•ªÉö”—9Cµ×âOžÓ0#ãà&T>¶"=îï6¤|$Ù^³m\GÐÑ”ãðhŒÐÀéí$°OyÊ)¨y« ¦Ã,$ç6´£i9šþ®i6KÀ¤ùªän*~tQÆg­EÓmœwrž‘CÊaýIûFÈ54:5ÅXµºÄR­V"¯¿œýà¾Îߢ%i7f§ ‘ïÍ„µ WåëƒJ¤4ºørFåy‘,þÞs&æðÃÓ® S@2Ú|¶éβÞÖeIu”ÌCÜC)ä[aæëOw¢a!£ wú_*ô —†#þF]&$vªË,aÒÜçŸá¶Ê·YÃÕ&'¿vHƒq½ƒbƒE7;œlBº8p&ªrµµ8éQõcå¿Ej6L˜¼)h̲BÖ [..À0S<4oˆ¥4DGl0IÂU¤B_ÝdÍî Ÿ«ì0±Ë»¬â>¦Qˆ,8]¤æÏêªNô¿ÑxµŽèð? ëLäÁøûH{ìŸk³5$ù}¨Sï¦_õ¦ÀÏ掠b<1Ã=«&¨ÜÌuD€¯¬gšru"–¯ºö‰ 97×—ÚMøæYÜ Q¤z%å­ ·x†Iø•SåÄ}‡Ò«_w–œµÒPx‘3u“3É"Jöf)¹÷7¦6ÄD±sÜfΊX» ²‡Œ5|0ZäEùïâØLJ4¨ÜÒ-ûÄN ÏÆqMUþÉ™ O‰6ê+%IEÑxy%àã\Y¿câ¼@gïVïÞ~ídº=ë|™ò$„½y×±¿¯VM_+mÂöÞm[^Úå”§µN"}-ào»37Ll X©–¾¶6jCi?—~Ë›!£#îÚ}ƒY¤ãiYùk¢¿šÃ¾T¦üF ’~†3‹ƒ;Ý¥A|xGŠŠ ªÖðUwµ½JdºêUÎb¹6að%´U…äî|µöNÒËEUW°œ-dE69¬RIƒ”ÉsÑ{…éà9Ú£N \, Áµ0ñÖ[Œ%Ÿ‹•ÿ8>£Æ‚)v>Bå8¸m q†*@1XaP°©‰†âdÝt9<™Ó.©¶×«m2=¥6¨l“¯›—ÐDX–,ˆT¬/_S²>G{/*™"²JÝã]ŸPØ‹û7Î+þ§é9ÏB—ç7Ïø¤ÔôNœƒ5œ,ù\pñ—¤ý{ºýªè[2ÌñT^r#(xW¹=/û3"kÈôƯü˺4êéí% d°·mÏáºZïR”{r2ŸgH¯Qüˆ—;@mýþC{ïiS)Éú\BÂð^>ÏLcü§€ƒ ýJ0ˆ&«Nœ%6™4ÎÁÓí¦æÝ•îð’ö/ª£_{9Ë$–"¨ôé/üD6´©„Ú7¡S2 ñÒ½Ù2ÃdZ^™¦ùŠæ)»Ä DUË¡EútwÝqç–g©AÔ#!„<É—†& o ŽÁ¯,#˜T €t¡—Ò¬M„÷g¨Ù£Á UMåp/EEvÞGùGü ûæÄÄ㣣nèë0öÄ­Ü_ÑÀË£éTö\Ëgu³Ÿ ‚èöoèʆ–k¶¾O˜ˆ-<²Eég¦¡ÏËÁÌÂð€kâèÈ8Ùf)Àî–h¡‚Í[8ÙOÉM÷1e’z»Iœ gVKì&Þ+ŸiýèÞ‘@9‚ñ¥Fš@üXHî Ãá hc'Á°®¿Õ_p!zƒ"¹à£°\hu¨?îd΂R¥ï‘ØB;'Úõ¾Y¼M@&Jó„ôØnp:üW¤[úUŽÉ¼;®.¬}!¶â“±äV„è¼ÀF/¯Ø¬ITÓ¹Ë*Z5AÅ{¿-§Ð£mLÎ%wu=)Cµ:<“te™™LŽ»ðþj‹ £½ª’¢ddäÃüÀcù±!ú5Ø:Y…r÷“ío6«¦$¥_#7µ“w .ÍÆ1F..b}ô|ñi<ºC¶|ÞJ T:îrPßð&ž¹B›¶›©[6è"n ›­Ì:ý8;=#F,|Ñׄ]øJ\ h¤êg1¤áÏ å|Ü&ªc¹g<žÌˆ«'çÅÇU¦¡ ßE«¥Ú—lôí %¼›Ó Ï‹«rSoOØNj+ ¼Þ (ÉŠæøXĦ•ù< Þ93´G¸Û!(oš²Ó?¹ßÒI G­Ý4Š9±”ˆ(DÊUqD†§T—ΠQÜ¥-Þ‹þú ·i¡I}£ÂfíSVùŠß×ñ!G=e¸ÈªžC€çdNdû;gñë¤Å¤öÅgŒu+¤ÛlÆnìwypd«˜ ±Ûš qÔ1ti}I¾^¶ÅO,67 ¢äJwîåÀAÑLôŒšÔ€nõ¤Ê쪡‹¶"ѿē‰Ñá‚éaT ö?fóÜ¥ƒ)-nÈ?2Èð¡ò@üðeIBâû‚©äFÙ@`¦à©fhCzèŒb„Ú}õÎâËL)Bþ6.Iè‰öð2ãTˆ2Œ1[?".¿ €Ýº˜¢¸J™/±?\ÿIq}„Ê(œ™· ¢VyÒ)¥Év¡;ì8ýgÃ]E!Cð™ƒß»ë€y4<6Äoà—ïCÙ¤°Ú|FŒ[½þ¸gYt‘+‘z ®)j:½Ê0Ìd t–4’Ž:Çõñ³1T[Üfë§ú6£NyqBü¼ŽkðÑ’ÓŽngÄs ¯Ë²3Ý[¥=MÚ/§œÕHRwéÆÕ;mL…—ò€©Ò¼¬‡ó  YÛ='–d‚%ÅÊ“/„ÆsúØ$®à™6¢ÍGü¥Ódÿ…ùX:žÌNëm‚¶‡áUù<+>:c ß'ÏóKð‘Ï™9U]<+½}á‹úMØ<æfÌþzN©aÀ;x/Œ³¸jc‰K‘–o²2„¹ iKôˆ‡v‹L¼ý/¢"å .0®^~ŸËàÏ7Ä©‰q‘”ã6 K!¿»–`ÎŽ[5ê|‘Ušøº&¹Éñ²Ei$ÔòQñÊj&{•jS@D ìf½Ï6ùÍDœÑ iÈP¥8L¶‘¾F\û3ŽÖòØ×2¸ë;WFÜ÷A¬ùí1º½KWGÚŸ,G­*Çûî#aH(fãâd¯â"ÃÏ$뙀/+÷?šhŠx{±r¥¼ˆ™øQç/¼ ~¦"[¹uèŸöþ ü jþ(?5® ‚‘È<"©e±½õÍÊ܆]1L˜KF/*`©¢Œ,”ò,õ#uŠf>6¯0F»Å÷(m|¸ú KÇ'Ùko?©Õ<ô·Ììø <‚ÇŠõl3ßÔ#„Rúh†l\ôC{ÿ ¨  ŸNS{‹¼r?¢¤Žµ´QçycN¿2sò£ oz3à‡™2x‘¼}h£aíõ—5›ÑõT~ö†"~ ÂÛÉ‚„4ço7ü$¯qÏ‚Ò>x­«›VC;át¨*óåÅŽñ£HØ \ó˜k™ì=œģƗÒo÷è§Ø_ÊIõ„ϯÓ^%cÒÞ®#ϰü‘CfÃC÷pf‘Gòðr"#ª&%pgÝŒY?GwÈ ÉÓa¾Þ΄=Ý¿ï&¼Ë»kÁæ¶‚® ÃñؽEîº#™D6ö6à패n/Îiº(ŒàÇøúI‘kÞ&ºYÓ~Êà’yšùªÉUqÕQ’/Ò¨gJ+ªqÎ ¯žMÂ2õª2s{¨Bí-ÚÃ_5L-Uc§ 6¾ÂK%Ú~ˆTþYÁ& ã4ÈuÏtž]P¯(îP©{¨=a÷ †æÕâ›ØW²§¼zÃ<¢høP›¯ìûÞ’…Z§ô+‡^¯]zû7w†J¨ËýºÝªR”{³³©Œ¼‡I±ØPë¶±¥rEyk:øŒ½Ö›ÞÀpGq”º,¿kÎI¬žæ@þüN­o¦ZLÀø¾;mJ#¼ú”×™š|Nùðææc<'lÊÛVÛ``ÿ׈™ ñáø²|'$fWÑ”Øl|Êç™]北‘V'müOš"MŒ ƒEIªK¥’ù-z¸a÷ÏT-Fï2\Ì{,yˆÐyt¯ˆœMEðŒip„7rk¸#f¨T¼ÍäôI¾q#=wz× â[…w?ý‹Uy%cC)Ų™ž©ßM³ªšл¬ šx6Ü,ÀzökçmŸÿØ›,Ï߆ñ) ïM\Š6ˆ—¿Äµ¬ Š„›ä¬Ì‚,IƒÏ»g·7NBMä—ÚΧzšªkä®Òò®¹å.äü™|›cx™áe¿ÍRd oü•öV2 •%׋Hkh§¹êãh“Ï]í-Ak _/óG~=±ok5[´n»hÃúa¨Ú¢©ÇûÈíþw~?Eü¿‡ÈŽ+“£¯FP]u™¨U}MËÚ{%ÝŒ$syF¨±ùµ)nÉÓm7ºË)Ê®’Ë¿U{ÂÝám1v®—è’×z¡}Nºö}qzm3>¹ŸZ©«ã-úm¹NWĶÙvŸ~.k³â”;¥'!‰‘øV—v­bþ â Âhþ|MwmŠEœ‘?:Ïò©°³Zxé)Õ‰×|IlÚ”Ò3/ò¡Ûø<™Ö{cX§9|pÙÇ9† >mã“O«NŒø'A²cZ5H…JÏh®¿œIm 4|aøai~ª¬e¥ÿlÆ› å*&ip«˜°‘ôå³ÓwyÑn鈋vôm9ðisÂÓMÅ૪9 iWsyXÍ*,Ë0í &”·hxéPÍSÆh;‡=ƶ3 û¸•àCê+Wð×®5iØÀßPTi6*8Q·û%ÖŠÕ¼-­N)ºxP:0âÁ¯~s»Ieýp»Ø÷ö’—g2®ŽeþËFð‹Ýé{$„u÷jBçà®b«¡Â’-‰'wÿ3 $)=êã÷2aIùjǼãr8¹óÓmïjÑÌkGä›;HžLÞ>$úc3%ê.¯–M†rèrÇ yþÐEB¿ñv㿵ޟL¢ºe­]¸ªÚ Êå7–¯âPøYOB÷CÚ˜¾·Vot ;éò…².0]ºÜr´JЮFØÀf}t[#PöN(¶V¬û¡Æë]ò¾´ønP¹–N“R@ŠS1}÷{«kÝÿÝæK%I*£W4¤‚|ÀV†ˆ”ikæ} ¶KÏÞI¾â`.-Oj7#73¹”[FÓÁ[0îa³#8l.¦±~Õ´°`”ÁÔž{cÊfPKnÞöM”èk4ãy®ócn™{¬Ö9œ\\==í‘^[ßm.÷p’€:¿Í·Ä)ß]«ô4ÎÌÑ·äÁ¶"œ]Ø’¶ßxdUÇ«j#=`Þò‡ÅR ÙÀÍaË*ɱKì©€rUýç7`{› 1.ÕOø§®„¼Æª»áI37ÃÍu®óOâ%_ØFäK/í4÷;Hk­fJ¶‡IŽ×Ìv9ÀùÏ Ë¯:ØsËLÔ`Ë’ÊíeLÕˆ¦U!v¾-1Ï“•9H$qq­‚%ÏZÛJKö³ ñf,6¶Jgd@HÚ³¾o‰'…/žCc‹­5Ævî”bÃɃlŒ÷©gžíF@Ḗ_ïîœ}y!6+uÚ⽦fÏ'šÐdND‡®5€B´Ÿ¾lßîöv“Ñ8ìJ?Þ<þ²i”7jÏÉëš°o¨7Íèå^ãCæF[‘iZþV çúÞñMÎ×ünäµhåòÓAF*ô~}-I޳hôqÿt­1‡žd‡Ã1Ô4âsT‹g©KÄ;‚œ2q5“fA×g=ÎÔ Ì šuB…çË‘ÔL®«eçÓ©EŠ„Ô:¢fúø÷vçP\¤Äó¼éê ýÉ×÷I·?¹ ?¡hK—°„ïè&±À}®µpŸwg©V禞®³böÝó•2ä‰xðfÄ.ó3ð×c÷´/Œ=•˜.ëIdþ…Ÿ¡Õ¶%ãÓ5Èè> òÞhgõ¼¾ÙPé0k=†úÌ)¼:æ8\|†‚|Hq2ŽL»l Gxž>@µ[lf7+# 7v± ‹Z©“Lh©Žý°@8s|¦ßÀ Ú9xÝ•]ñvæô ƒW¬Ã½€ì.´-}zD«Õ¤œ}ÿÚwûê!‰Jx¸èü08{sðëîûæ£l|BÛG]ñLvÙ``Æv[²‰SÊ–oGŠXù‹ŠiÇÄ`å` ä)—uûQXÓã–@ò! ÃGMzÅr‚\ †>ãËPÔ°”Úç="ŽH'W¼*.h=]óí)ω®ó7Ù;ÜËï-9Ÿµß¹v‘+ñ#—º@ cÝ^ùìsM YyÝêT©×Ìâ¾Åךѹ±ãŽõ8T0©r í}±ÂP´“\+4åH=ˆ†îwúT¾,2Êk–pŠ-{d"EÍkM"|Ï`·Q™©Øõ¥d¬³U.ô©9Â!W姯©-åˆÊh‰Óa+˜ÆWxËv±…p¼9kÂ/ÚPÅ—™WÐñQWU£ÍÓª={ÑxÛ‰öä–!³Š'³­âÁkU_˜™ÀÉE­*\MI S©ê$_>’õõÏ!6_ÄÎ$ʤoŽIË…Ä\m(úFmSè”P>ù,ÁtæÚê¢÷sày½÷þò©Xƒ\GK—–‡¡èŽ­˜ñC·éÙô‡*©bê3§‘Le¯Í~¸c§N}y,Æ]om9·&몔ïGèwŒé˜ê¾¦M>D¤q•‡…zbº;i}R:l¦[°bïúÁ‡–‡À~ë·Å´r«d’½ŸrNþð¼ýó´\•»ØzhúT­ëL€…Y¤rNëëº+ÇŠ›”↢¾N9†üÚ.ý”±›êXeŠc¡éæÃÉ;8ôj·DÉBék°)Í _7©«ªXÜЂ ¸ojá¯ýâ.~³éR\ç}áeª•ïÔ%HbÞó)Ø¢-“·»é;6I@û ›¹F¥ÿåA¥ç¥ ­½^ÙŒà¥}b{·ªšLp̔ǚ¸Sxª Ë­8lé…±{¯AˆÔŸX—ýáâŽÀ%”ôRŸÔb؛ܯH8™ =IºrÝ•V÷o¹¨ÒÅŠž Ψ.H™0´´u]¦@:ERl#!Bã¶È$ø-ê@äDÅl9½-Ü ™$p¢®âŸh›÷ K³‚çPcˆÞàÏ®k-IMk_Žcµ‘ª2Ê9pÊÔµú¼Ã¹NÃðà ®Û‡ˆí À¹0Œ„nwÜ %•œpúC[h#‡¥+>nÜnlÁJK¸¼ûºÅ‰Ig 0Q ÿʨhIMoù,…©1i^^‰×í-¯ŽO¡Nƒ§ññ,äÌ=ªÅŽúg™)~¶î q>RÇý–KfkäÈœÚ.?V)eO5 ÷”é[UÑÞqÇŠ£‚úÎq¬J°lç‡ûAâ…Èø­•Hȼ$˜Õcù4D47Tÿ•{méVø1œùçÒ¡€ÝôÏ Ý¥yñHÌBZ¼œÊLÉ÷$^%)™];bÝPÚ–K÷>˜Õ|uYwŒ&"˽_ÈŠØê{Ý®=y>HÁLVòîÏ\L…½ŒÙó•-gÆ\xÓ—mYOH 艨¹·,6η`ÁZ¯xB¹å|`°Î¸˜ ²ïßÙ•%ÔD½ÛÉF¢[Š'†¬ Ù™À *ScðÊl•çgðìRÓõ.UúŽ…|”˾fBxž[ë‰úuïñä´A3‚ ™ªÁðtGä×;yr¨¨ƒOÊK¬s _ºñŠ•.ŒÄÀUUuú:O5¯äÕÞ0À%¶egÉ »_Úš6øÍaBë}ð3= ·ûO|ŠoÖ=Ÿ¿Á™\*Ç›@s€_0žûqç'¾È•:爼÷¯= ˜êatx@À+´>l¨Vôûe¾RµÚTüÝ©h¢av}´Ãœ2ô‘#1ípeöÓ9t¬ çiÐÛͳ–3øcaqzؼ˜_‘DºTX}£òÛÃU§×P×’Óåƺ¦«—Ðæõ®o^=æ®eä¢`iº—o!]éMœ“ãŨ]©HØq:^o»ãKìDH|ëAn¨d²¡i ²e ÿ9å^Ï»;íüo¤ûM³KÍ'ÕÈØAs*«<§ëC:H§Ñ¸—<:bE×ÐHu-Z[즸Ö$0Å%ê-ë7û³²`ø‡[$A¬ã‡ž˜p¡óæ-[¬eÉu8[6ÐºŽ r£m‰ \wú ¯‘‹n¼Ñ±@‹ä6_…0fžÊ•¼êöÏ´ìÛØœ"Ìë¡Q5@õDÿ42ûùl +JTÃëâE6;J,é5Ëøw9ZþQg ûNÞeõJ[B…¾•HO{D)ÛpöDK‹\K²}޶îü,Q2çîGìæý×8kŽÀPŒaërâüC¥ô7[ÙhâxL=ƒV…vX°ç=ÆUd©1í%ݺjÉ•.)Oq›®€iô‡“=çä†Û([®ÚY@ù˜$;&p¦òs½h5iä)c_,N‰êøÀ™àhùCîÓIxÀ„F¥³=v»®ì–ÜËcÇæ@×Ò»… 0ôL[ÆèüZ¹¯h±EœhãlÌ×Ï¥WYÄJ®T•>—wo6¸ÖI0QÚ¢…gûˆ=0üDß¶oÉz'ÂÖ)+zÌôWà?³c »à—rAcªB‰˜C#6Ó ³z§½u4PM£jÀ˜ ¨æ ìó^eûŒ¦åúX‘L'*|»ËÍ·¿£R¡ÖÀZ“M‰ª/a€HRìd‚vì'­¶Ï0Ç}›ù$Ía^ËÑaNi*QŸeVØšú=x®‡Ýâæˆdë-BûÛü.dþƒŠÙJT"Bî©âÐÆéâ>4 ÆWªúʤîèÈŸªœGTd¶'Asùò%èKŒMr§d=•àöv „r»Äë4\­þÇÙÄo†r0‹´õ‚ºʸºÉœ¯Ôuñc,çêIP»!ÍÔNÍ_¿Æ!Ý‘ëv'L-U}ïÕ†oÛLã™/#n´äCÔ°èÒ«Hxåð?Vˆ‰žøþ­„“Q½³R‹˜óTáóšO–³6ö²¸#QèÅЮ|‚]©úЯ½·ÁðLÆly÷BÓˆ5ó½â-…ßÈÀíÎJÊ„Có4ñ.Ía…)k¥¤‘ÞÆåC±àqâõ'ïÒ«XqM¯[[Z™Rº#€%u‰äú6§6Éû9ÿÈÔnsSŸKm¡©6r™{k™Iã |`°åW‹ ‘ûÒ•è_:ØÉ‹Ëó!cYþ_½`†—QâÈâLIMð Ç»Û]̆ýúiªÛ·Rç)ÅíÎ{œ×­Z˜=²Fžµ1vmŽ]¼ž¬›4ŒŒ?uÎúíÄÍ+-)w¬…æK{s—úÕNpR™8èË€dHsä|6p.{µ6/Ï0ºl(!5ÅÈði•ÄGx‹®ŽÔ8Ö]Î%é 8u…§ i6±ï)òM÷R}V¹³cË^öú³fÈ}ÏgÏ­áÍIéï¥d›3¿ÔÞ°]sÜMrµ ‰R#ì—ËÍŠßBü´‘ xµØ¥– _Ôë,àRãIªKýÚÚ‚|ŸRj*å÷!¡º!½uTT&ÆÃ¤VG¶âˆ:>*&DíÿS¬âÛìÕ¥†EVoˆ.åÇVcÌeæ šÜò1Ͱlè¬ÇX},Hª‰*Wÿnxë€_½2Uø<7›ÒvQÜë3kbÍP¹òŸõ/§¦D‰ßÌÙ½ì;ƒKv=57\>³Ø}÷ûvèYð;Suñ`H9¶Aï/²ê¹ªÒRì]3cÏÌV%"è ðåÅÑ‘5SóUP!vŠ8BsÖT=|V§‡ëò#-ÿ¾³«… *¶à>+ÒLÐUÀC/jî¶»L×M+„lxóô¤mì4—ÒØKöFH`ôèÞ|Më».öŸ%²]W×CÝ5ÂdÄ3ÐæMGš_LÍ@áѸp>~÷LX_à@å¤?vðu•zLääÖ’²¨ç j@ uÑújc[¾e¡í_û–ÙQæ 5tí–¥À¾2 )Y€bP¢ƒ³Ü; ¢™¦FD{¨éÃHÝ’•óßáAÁF¬ÚAóÞG(:º¥³¿Í.ˆÔµI4ŽK÷“ÆVyL–"£‹}v+ˆ‡32‡P)¼ÙÄ; Å z%šó/éÆÎ'aöcïß4ؼAòí£ÚÙûïœëKȲê»ïÜaÊæOUåÅœ;ó"ýÐ8œjgiªB¨xWœŽ˜wªLöY3.ÅI\ j9~ï¼É/©~Áà×fI•·¹û‚:}Òý°U)e pRÇìÛ>#HMøwæjö‘.©:yu`¿šq­ƒéd¥ëèÉž>Š#`VÌÁüÄ\¨.!&±ë…´³qš4mG¶ÿù»r?EhÆÏ`<°p£d]{5Írô˵PJø541ÂÃÖ4¥LwĆ[² Áeí!:¡Ýx*Ú‚@įy… KBG¨=ÚQ0H!Ùâ¹AWøø·ã ¬ˆi­3t0£òˆ´ûXðÏk|x-·-“‚;‹&*™5*Í#ª–Üÿlúû‹V;'ýÉ÷—.8ïQôÚ;‘ÈŽU'cÏ.òÏ”iÇEõeù¸‚±´žˆ ®¥ÊR¶@ø§œ”%òª!§„ŒÔ•Ê‚&¹»xjid®(çµþ~+Ž3ZE¿L†P2/>%EˆÔŒ§ÖŠÎC?ëŸ\÷ÁÑúe ”‹4’5VFÞV|wå±Lu3Øe³O¿4V _¹õrz¢Q5ÃÁuΕæ85ð!È÷¦m[GäY)p`SŸ¶¾û4#ÄÜÈ¡I@üýD o)çVT«òì$?9ó”EŽámlC¥$¨¶£²¯fH –¼(UÝÓupžÛõÃÎñ@X±·œç/9³x ŒŠ—ÚvÄÞ5Ô2ø¢? ø-ó„­ó‘ @é×` Sy¨¤‹\a¨ËÚ³ø nÍùâ0‚öU¸jo äÍ<¼1‚$Ô\È8¾¸ håñÕqgµ5€}ʤ¨ñɽ TlÞ­ñ.Ô×âîE±캖v;®{HyÏïÑ­Vî³ðÑ-µÕôä’ý#àG(ÁªÞÀúårÏ唞p:æÈn(²µ˜l‰#±³·³ã"ßI)<øEú‰VÛŽ; Æ×SÔ—Jo`DVÕ¢B[Rm Yž)”) %¾ðáb[âã¼—S–V »†”ÿaSÈfÊwHÅ{ª¼2‹är¥ˆæ] ~ß@¨Ž³ÿ»³œ²E£E—æ”$&~fÌPçì· ³mU-Œ““bׇ]TÏ=/*y&ô#þI_Ι‹gÐó ÄeÄÔæ° øO¾Ú `*&/”™rŒë%‡/¶Ð×+I6ðo u翚F">XKñùï8À­çÉNéE=–j% U_ò v|¡ŽªÃi„}µ æ‡C`bòÛ¶ø² ­$é`cRàSÿ|.ÿhDü¸U‹rëö†÷Eî|d3ÄwW®ã 7ÁÛ Ü: )6µí•ÕÔS214ZÛÈ:Û]Ɇx3#”nã::ë×üS\F÷w´3³ D‚ÛÝ|9Ùˆ¬`¤_“ö:ìÞµž-éÌ-1ËôÑäE̼p%þe•¦16Ôežoÿxl×/éps¨`1§›*޾鲴8_¡©…4¯~Yea¸ª f²õŠsÓ,ni¸wŽ=O*Ê=k ºâ¤]?½¦Sž„hMgª =Ç^06õu@ÕOPK…À3R㟸âí± Oߘ8úa¾cý°tàÃä•\q¶6B’g¡#OdÃè㟠%®é ¹ÁŽ1æúòÄìKä¹SA猶õÉXõ’Òb®œ¤¿Ë³ J!¯%£ÐstßÂS¹0âÁs­ZJMŒí©TEò2£[˜°'J:Äå¾xI,ÒE»ˆÁÙLÂ÷[I1Ú+äÆ,o3é}4ʺ`çÖŽ}Ü;¢y/€ËïæVßYòt½£> ªÛ!}Ÿ‰UašC¢~îÃVþéúÕ?>"Âü×s“Q4Ørfï\G–çKÜV:O=~h^¡5ªsRpZç.žÄȾh°…Öñ=Pà<8þHLOëtt+vΗ$FðÍ©€:]/îÔ=:U¡÷R ^8w˜7+¨ßŽ•ù+3þ<'±ùßž¾L$œmeV7*ûÅÉ:9·c·×1p †Ì|ê=Û-ÛÁW@®ÞœNtÓïqê Ÿ'ÔD æõð"^+óÔ­’:F5CŤ,2hÝçx3q"ûX8#&/ÁmGá¡¿˜íÞÀpF8­nÜ£,ÞªV¹{nPZ Ð6£d3û<»·wîÈà”œå$=´Jý¯¶#ùüª;P {!ùY„æesodqÉ%»[ÝlþHì"Íup­ hin…BàáÌŒYÒr¢[@æÌ— ì#ÛdXfC„Ö‰*$†Ý †Yî-ìÁ‰ÈÐb£aݱ¨s-Þ6ÜÀôaìhœ›Ú{‚òùi§·Çiâ·ÔkÊ7Ì^š y5xTÝFºO—RaUö•&5¹šwù>™¾ ¦!bKòãróÞF–ÔÀ(øAèüÙÿ }jq…Ž+9å2››còΈÀÑynr dØÒl 05óÔ ybO⓼ ß{0ŠTÈêÂh ‡ŠÐ¤½ÔrïOÌuÞÂÊf"² k‰:ĨphÞUQÊœ #o¶ë«œ¦ÒAžVQK©ºE&Ž>] o[! ÓLù¹So€ÝãNÙ®ïÀÖC,\¤AWfp¨ù¢Ý{Ë7rh›ßÕú.sœ‡t‚¬o#=íAU·yýšbQ€½Z[;®a5,$žAÕÔÏeŒ! Ç÷sœhè,2­õPßò™wm×–.ïëÌ2Ós²ú9'È¡”j‹öîÞß •é\"W´vjïw‘¹Y ¯?z+GÁ •ÿÿÃàM.l´Ï” ç¹ vZÏóò_Àó@ÌMà±³+ý7àf/Ï'Š×§tœoç$]yÕsóWá¹C0»Û«–S–,[o)fö>-Pý Ï¢}µ€ˆ|\سŦ~¦¬¼ñ®ËIq͉© ŸÂ±N›˜¹Z!ñ[uÚò«#ì‘–UÎðàzûÚÞ*L€´õÌçW±Ñ“ ‘¬ÎÛëd¡DÛvKY€$à=ìbáO¨ÊnÙlÄWqëšdU&ލhÓ­?jΉâ @iI¿•2ksÜÞDmr$¾q ]´M/ÔÕd5’â’bȵÿ7Dr!l^Ož×IÕ^¼º •Í‹8õÅAõIä­–ƒ¤¬„ ñ0=O÷`ÅǬíœZ<¡%ÝÆ»DÍÞVoýÖOoßAiò5«S_ÄÒj‘Ï“åN™ns¢¸±Hœ¦aPé!ƒûÕHTß²­¬o GÈR ìj-#Íð`}¤A]ý§VG93yv,µC&o"2­žÖ/ÒͳñQ¸Æ¦Óù®½þ[Ö°ûhÝ|G{ %6ø: úk©/™É*‡m»­ÿx‹I¹É¨×Nl}¯eõ I°ÉIt÷(±47~–À’,xsq»… N ] ¶f¤W«5 è7:T­ÓaMˆ˜ƒ¿½Já™í@2¢Fr¨Q÷ vŸP³0Ÿ9 H‘¾wÉÛþâ?Iÿì?íyvi}0^QºÉCh "4Vܳ®OR4åNÖ€÷|$¡"fùr5”bÙZ)NêÎn˜ñÊœ ”KRÕ·> |ROÀsŠF~¶AòŽÎ‰×,q߸°—¶GµÁ—·z2…”NøÊŠFb Qh>WA´r`@¤Äz¬­¤ §òtV‘=èânHè¯ÂÜ‹óŽ&YÒ)±“H¹)·T°W´zl[{!3jTn~KaÂZÜxI&Ú¬Œm*–?å Š4o¼‹VpˆsÄ"Àý4î³ñüjŸG}(./‡ÑÊ™;MÆrg)°X|ØèÁ3yúê*qÛOÐH$£çê¥ã½–¢HõîÞäk X€'ÝkIBP0µã‹öåFt™G¡ƒžl l¿wÓ‚.») ±só¤¬ÛÂ^rÐÓ3taÞ ¢Y]bª›ùmX¬r6¡0ź XîÉ€ 'Ž E¨ìqëá7>²¨ü׋5#Þ¥Æmç Äöj‹X„Tȱ‹ÎÑÓ¥ÀAN™ö!–lSx‹#àÆšÄàOØ4Å]ÎAyYQ\óÛ0`~yùìXÿUX•o“XšüíûJ©J g»N37 ¹ Ó•b ØuÄ¥fÀ.{ƒŽæ å|l`ö½ß£Ùt¹P5dŽ—Ä@/Uº™ ‰jÕÝ£„¹Õ/†ºû#š6¸Z«ÖQi*康Þýd±Š¿®]ra7ºoUµB ç͸ÂÄ×rõ _¸uôe2+b®-”°‰űP<–Юի=måõäoëZü—Û™®sY˜t†½|ß³ûæ+¶L-àIWø šfëVWõq2¥ŽiªÔ3×Ïϰ¶™ÚuªÌ'fêq²–ag4¤ ‚{0®2¤9oõ˜¥¥ƒsÆùúRz ß,ôýüšf¡ÐPªd¢^íoéi÷¢”}ÄMæÂ‘.À!¢–|q^ÓáQV!vןîî†g›+aP¶ÑÉý*çÀKkvÈÛ¬Ñf¸ÎYçúªÇ5&‰äŒaªÊW‘ԙǦ‡§0ÆLevOâæíØÈ]æòÒÕñ­N_ôŠä+žSÇ3ò°çñµ²ê ->væÂ ÷‡¿Û¾©µË’ÎE¾R‚WÊqö„‘% Ž®s×à*>ÙFÈ9S†¤¼8FNÑQò±N±k‘Ïò[~¤ª DÈ;eŒXË2=4`|ÏnLüÊ^ŸÛÀõÓw¹PL¶¸S¸;Þ›C>ÁbçÿÐY"…õÆ Wâ¥O]M©§i†?î~|‡Ã#Lsâ9Ç.ªq>»‰g”ŒMh‚rµ§×®—i]Z«†ÕmOEŸM9¯%†ùšÙìö.6j)<ÖyVCd| ¢x à¤Õ›NuÅí2_Q&fö¦¬¸ ³}¢ÙÜø¸ÿ³Ò¹‘ºá2²Ç©íˆ 6›§M§'ÈL?w¦ÔJ•VNŸ…Ǫ3úîçp˜y¼ïÓÜ@Äf«4ãÀ g"ʇÙÀ¬À;< ‹ðQÞ%k:*;îÀ+&OgŸdAÐÖ|µq‘ö¡39ûŒ¢BTLûyô˜a¦høzLôX^hÀ(_]#°Úæž°Ú¨çéýÊÂun•ÁžüEвÆpÍæ!ËA@øÄÊȰÎÁ‚2uމŏ¾x¢6¶öøåŸõ²-7°%óŠ€&. bi¤æ²×MØó_WȬΜ´à(W±µñ£iÄïÏy„ :öÒ—±VyîÓø<ãÌcýù«Á?¶ëþŽÁ¯b!#Ì”‰Ð®ãQ}¯¿ÔÞÞ¶Ð=á O:Y0)ÄÎŒ¶nò! E¶!ìò# ÿ´}rŒ¶T‹,}ñËuL;áWÙqÑq #nuTh塚‹¹\²M´3ÐR|ÜšFØz2Ž„æðec÷ë>-ïwï‘[±Î_‘A6Š¢Yz×kj}Ïøö8ñBW›k Ðt>îhð—E" J»wC š¿)Iבˤdé¼%ÊÒ—¹óH~­qG8<%‘N;„iÛÁKŒ=Ô¦ãŸg¢OJE‡Ph™³ï)`Ö_k'AʪN,k{Ъ¾D•f.^™!D×V‘E$°•›.W0—ôÆÊ­CS‹´išC‹¼êƒí± ªYr7¾,"»ø Ç:þŒàGJØõF:Fý$ô— rar\ñÉü¹VZÓØ ~0u yhгÅ'ld‹Ç4­ëdeè”^m®ÁNðf2©©‚’Û$_r—eþ ekçÛ ]5÷gÓV´!ØÙ€=yja+Ž•]f­S·}Ð~/Ðt;¦<ÎǸÜ:m:iæÈÒ ÈköÞz;èðKÞ0ö¸Á¦Eâ i?u0õÿR>£Û˜0¿§¥‚æ¨ ö.KºÀ=ŽI÷ÇÄ·¶‘*:hKÑ¡yÎM$÷ó 3Â_p0Tzn.rÑP4®!ÜGH¢uv)Í ™AlÄáݶØVz-'ýHR'B6l…œ š•AÁ÷O®«lÀm’"+nX=³!EÃMçöhy.*Gúp©ŽòöôQó$@¼“'Ÿbºmñ4ù8€×ƒ7ªöâ„“Ç<* e¡íUËÀÈ¡q¡¨7@Šº2x‚kÀÓ1h™Ü>ÏaØÄ Ës8v¤šÉ«¶€{pÚð„`å×3ab¹~?lï%D¿ƒÇªÊVŸaÈcƒÖJ³ð£¤¶ BЕÑËRNþGOy@ÄéRJÃßЭï†&³~»ïؽ èŸ"Fµº¥,ñ‚‰UZG¼lfœw°Õñ§û= ÔOVòx”¦Ýǯ¹txá:@]·¯ýlÁ~©¥pæ\0qêø„‚Oõ0<ökk+Nx¹‰±J ÌáÃJ5«µKÝNïÄ8)ÁZêl©Þî#ÙðIÈmÍ˜Š„BÚ!c.ٱ˂1>;êå,aÂ-ÍDÔçÒc«Îɉv²hV°àÎÖÂ4þôœ:«>hÈîPxWáŸÕ.˜¨£-ð(còƒÓQ/®9‰-k·è¯•/Á„¦£|Ò˜U_æ±Ý™¨Þé×LnOÔþ¦CèdqâŒ#O[[˜iˆ8}˜k±À£CBSw_Õ²bß%Ùo7X°ÌqÛ4¹©LD•Ñ´1\Ìö@í§"rô%šv\ªwWé©aÌQm·Ã¬òÞóŒÑNªè%;æÂ ‘tñc¶7;³~Z½$í|m6‡²8KIPíÇÃÌ ‡g¥Q¯±OI\,T G\±vUÖzôÀu³ýŸSªæp4× ï¥Î™:®!”iãs‡(Ú–30éûvÆýw˜‘V§÷ùˆ¯yµ'&¤‡jö=UÊúÕ_OæfB~ ömŒnÞ¥¿ìs 3ƒH×PVÆA0³´ Q¦ßorÁߨ‚BdzIõçÓ·m©•¡pÊŽOöûO—’?ÂÁCçü0~¢eȹOÕîcY§i\"¡»?m´þx9ñ¡ÿ£èWÆÐÔÈC0ùÝñj‘šuØ©OÊÒi¿´ëÌÑôκ· endstream endobj 300 0 obj << /Length1 2019 /Length2 15925 /Length3 0 /Length 17146 /Filter /FlateDecode >> stream xÚŒöPdÛ²†‹âî. Ð4î®7îîV¸»»»»Kãîîîî4и»Ó\ÖÞûìµÎy/âÞ¨j~™9Fþ9Gæ(ȈåiŒl €¢6ÖŽ´Œt \!iE)F3™’™£%ðìpd*@{3k®DÙõ?mÂúŽŸÒ6Ö 'K#3€‘‹‘‹ÀÄÀÀù?6ö\a}g3#€4@ÂÆèG&dcëfofbêø™ç†”FNNvš-XíÍ õ­Òúަ@«ÏŒ†ú–EC3 £ÛÿÚ‚‚ÇÔÑÑ–‹žÞÅÅ…NßÊÎÆÞ„’àbæh P:íF€¿JÈè[ÿS@ÉÔÌáßEcG}{ àÓ`if´vø\âdm´|f(ŠKdmÖÿ–úw à?/ÀHÇøßíþ³ú¯Ì¬ÿµXßÐÐÆÊVßÚÍÌÚ`lf ÈŠJÑ9º:Òô­þ Ô·t°ù\¯ï¬of©oðð/éúQy€þg…ÿ©ÏÁÐÞÌÖÑÎÁÌò¯éÿÚæó5‹X ÙXY­àþÒ'lf4ü|ïnôÿ9\ kkÿ!c3k#ã¿Ê0r²¥W¶6³sŠ ÿ'æÓ÷·Íè`e```çäí@WCSú¿(¹ÙÿådüËüYƒ—‡­-Àø³  —™1ðó ÎÃAßp´wzyüÓñ¿ Ž‘`dfè0š˜YÃý½û§hüoþ<{3W€&Ãgû1þúü÷Iû³ÃŒl¬-Ýþÿ×Ó I‰ÈÊJRÿ§äÿ:m\´lLZ&V##3€ýóÁëï#§oöÿX+nmlàü·ÜÏ÷ô?’ÿÓÿJÀÿÞKÆæ³sŠ¿]‹•Áðóãÿçvÿ×’ÿ]þ×.ÿ¯þ‰:YZþËOñï€ÿ¿¾•™¥Û">;×Éñs ¤m>gÁúÿ†ªÿ=ºÒ@#3'«ÿëwÔÿœk“ÏŽ¦å¤caû·ÙÌAÔÌh$gæhhúï¦ù·]ù¯q³4³ÊÙ8˜ýuÁhþïsÆ ->/‡ÏÎü— ø9Bÿ;­ˆµ¡Ñ_³ÆÄÊз·×wƒû<êObx0~¥Ðõ_½  §³¶qü\ø,Ñ `lc÷×¹²±èþ2ý›Øô‚ûgkýMzΈ@/ò_bgЋþMLz±¿‰@/þ7}æ“ü›>óIýMŸdþ¦Ï ²ÿ%ŽÏ rÓg…¿é3ƒâßÄ Wú›>ó)ÿMŸ©þ—8?IÿoúÌnð7}f7ü/ýu2ôFÿ@F=ðø)Çøoütÿ>å™ü?õ™þY>õ™ºÙš~Þ¶G|ÚÌþŸ2-þŸ:-ÿŸB­þ‘ûSè?¶úK‹Í?ðS¨í?ðS™Ý?ðS™ý?ðS†Ã?ðó¬ÿŸªœþŸªœÿŸª\þF¦OU®ÿÀOUnÿÀOUîÿÂÿÕÚ†NööŸ×ü¿® Ï¾ÿþ×o è 4„[]²1ä4¯ ìxªÀw¡ÝŸbbAº ¿ƒQÝÁu>”÷ây¾e.ˆXèY8ˆxÞF;e*ùh¶PÃb°Ðùå™Á…µÚÐilð›Æs÷åÔAʉé@²»[CÙÚÈë²EaÄ厞›Æîz1óøÏ·–ªÇJÓKhò¦3:°©¨hf°ÀNÌÎ*ÁZù….ñ¯7üSç ¢ÇÏiƒãL¬»Cke4 f;iø''ˆ¶’w™'|©G}lx’z3€y²½>œ×X ÿ»Ž@? ‡ Åï¤ÜYâ{37b7Yj (³1!ÏR4(ð œä:ÖKíj²’=Ì{ÒƒqÒ—˜Ãb,­V z‹0²Êêm‘ü›\æÇ¡·ŽÚÍàžÌ£ð—mß±5”ªÉUý›æÖ+䦿¦¤+KÌRÂé—èñÀƒŠW2Õy*GKµN[­‡mb«ܵ_9®tµ >z-ÃdQa|Íšð ÓŠeš’‚Q™Á¾FŠÝSŠ÷ŽÛ+i—‡Ýšêµ»h嘠gµJÚˆ HB]ц¼Ûýu›gí—lì,é‡Ìê jÚ@ó·×Í>úOJ~U©µ¸\Ô¼ûpšM\£ž.6(Ç‹ߪ,˜œòŒ÷û2ód˺8¤¥ØÃÓäpüÚ,™O#äË |XøçÚlYýØm‹Œü¸X-,æ²½|¸xÞíæ.ñ(ʼnǟbÊÀù+-êÒÓQà†ów ¶‚‰›³;ßøÀ6îi^~EbëÈÿðRºçÛ¯?"†>b]ÛXßB8T’¸attÎð¨<¤‚¾ýNÅ5ï¾y^ùAønTïQí6ˆ5/ù¦eÿ=#ó »êz‡¼Ãó<©©¹IÙGSM–ŸA?Ÿrý®`zrØU*Р3r½HŒv‰ ‰½8«:R3Ðë/µHŽ9„Ýiˆf‚¼úØækÛÄç|)q¡ 0“‘pŒ…¶þè@ƒ’èÂÛóËÞWø°òÆÉrÅpçoþÐYM×MX;è(•À‹‘Á Ý ãezcÑÁéTwc3È–‘â‡S Õa{WÌåÈõ‹ÂŠQŠ(Ÿ âs°„U-£M8‰å¸Í@¹tÀ Xþ>Œ9 ¢ã"ón>äÐL¯)Ô ±øÿ ·Wd] .dïj\_5 a,üóg ż ÙØóåXh%1GXjã÷‘M´y83ê4ûE¥¬£Å¤á4Ѭ 9ðÂÓÐÑõ ë¦lmáø…¨^}y±ãŽÝ „-Ö?"$'¡iD}ÍÝ¿"XŠ€k?CÔWImzÅC.ÂÒâàs ÊÀ»eY¿çÀoPÍ-÷OoùsÓq©nûKft=ÿ©4L»Ìà.…/›Ý¼Æmfc?Ü]˜Û ôT]°Z 8{B·lðBîÜý0ˆ´QRÄ ¦Á¿5¿"\‘0½u]ò¸Êž‘ÏØÜšã“î*IƒÉƒ¶_<ïU”ZÒüÑ\êÏ(šÇ«—a¨ óÓF¦=yÑ;ê~dž±+´êWOÆ52‰NZJÚÝhþËJì{¦š>Ö³›àùsë6x-CþýRa¸MCLŸ¾4É%/õÑÂqlnWÑɯLàýÜUV:P[.º¿K¶ 2C7÷`Òÿ'¿yŒùúKñŠÑêÞé8Z€ìU¢3Ž$D+ÍàˆÄŤWm7'µÁ®È½} \ãì é<-c$E‡"kF®Î•X°;™H’:ùalÔyAwJPÐþe¾ýÚ° ½÷­ÀŽGÁà¯Z‚ƒ.Y‹ØÓHU±2þÃÇœgaWtÒy¸MÉSB»¡£^už-¡Ñu‚½Qã·k=äONüV2/ùAT6I—ú¸”WýHaÜWØWø+é‘®6P—Жm©JõK`G •M¾è*+4b <ÝÖÛˆéò˜t××ïVŒÑêÑzD·”lX}«ÖºÏsÓ*]ï´ä³>u îœ3,鯳Z¯³¸ÌêùçåðÄ3ˆ༪H6°ö¸án[ëT±:$ϦØ|Wß®À5Î7fõ渒ö/X\V3M¯«hõ2—ig/ÜUÏu«4µ1ä,Æg›7x>À½k±ÀÊ£ˆôk…Í§Š¢üÂ]*ðHøÛhm.‘Ö* jÉ Ÿ—/\„\cÕ®hæ¯=x –ËfçŒÂD=¶_2»äÆý+¨ JQËOeÀùÀ©âÕ|ÀÕKw"#îsß@ų¦½±þe:â‹vvîœ¦È ÐnšHF¡t´Tð ò¤ðA¿V‰?oQáÚñœ eìqÖÈ]þ¢ÓxоFÿ&ÄlA1;8¡EÄ€kE6ÔÀ‘Ô@pБl¼·´ûŠ – Š¿ÂÓ&Û`;«…¸˜fð»øùØa™òÏzF2#4·'œø•¥Ò0’p¬U_ì†vâ¤Ç p9®uT(³|fáÐUd†%Lûþet*)FXq„gƒë)ÑʼÍfÕdë/ŠA\ Zd•dŽ·TG¦äürKÖ>U݃\_áêâÏgœ}ú9xmD<þv~¥/QÁ®(»b~»Kɶ{¨SÖ‡®r+W;v’Þ_>«ÍŠ ß„<Ú,*ÑN#Zž(ïëù£€‘2ýœÄd)¸´£›€¼¤oÛ5/7:ÉXõÏöIª…ÖQ„Áê-eðNnƒï7ûúœ2Zª˜öf , 0åxtVͦåÏ-:ÐŒ”3ƒÂ&âHð Ú‰'G€ú)ŠØ¦ÃZŽô"ËþåöÜ$µŠ¯<þ¶ŽIE»bôbNî¯ôµž©¥ëtÃæ¦Ë>ù¦½A( #àLv0Êr«JÆñ3E[ ¿'gbÁì¯ÔP²-8ûd Ä±Z—4î¡°õ0§áÜFÕ>nk¬ú•ÞÙÖtwKÊ×§‘N„êUÓùÅV²Ö/¤ÎµÝìCÂXçgÙg²lÔæu+ÄËÂ¥cïÉ“O×Þu³;_¢Õ‡|ö åòÖ?‰¾Õvtdߨ”ôl\̧35l{Êõ[ߢ†572ÙlÏ©Y8™òöxº^òFŒù…êwûw0üÊtLS“ú°Œ8¾³‘¯»ç§>ß|þ翎ý6¥c\¼ÀU=w^tœÞc÷Ë`Ìð-·©x#› ¿ Û­L÷?8Hå­^nÕgÌù¶pÛ ··›c@Žë;°/z[Ž×åö8¾|Ü5\¾ã0رD(Õu/„Ù)¾l™íõ¦–š%D·ø!óìZ¿”è´«3Ü€4¹ŠJ ã]QZ˜8˜×Âe!M’˜¼2ý9M‰'Žº¾á¤a§‘Ã+Ø·Ô‹•Yýr•¯±/﹬­Ut§™»dïÿøðÀ#@åÉýI’h‘ZpÍgg×Ú×s,×b43`Ä`PKÿe‹%ñ~ëQ©ËÊ€ûââð{¬ŠÚzSÐD+:)g37k˜õçLñÎP‘Wûh› ³ñÙÔ ¬Ò d`'bäqWòÞ¸b‹Ì[7’é<›>O–;Ž«X÷÷ü3hceQÿ4S"y¬¸E´ÂDÙJÛir¿¾ÕõøWeðÃN~¬¨ÙÁœX≰/½ È&ø12`ÓÂéŠx«ËZUj“ÌJe—ÚšöhsæÐ[üÁ[ÎÃ6|CÌsM}‘Ä@­¸ýËßÞ¤†ø˜ ©™ÏjÔ´Že¦Æ]è·Ô_â}ÕpéaKIó¶Lß<‹‹cRðèêr7@ŽãŽ<,ÕÍ«€°£uôBœ~6ÜåÀã)&§;,}UIk ežq£Údâm2·Z/zq¦h컣AbAÛËñJ± u ÷ÓÄp’^Âïë܇̄l«N©|ºF ñ'¬òIÕžž« 8qNM‡þLñ7é‹¥ú>jk~P4¾½7ÿÞC[ɘ¤Zœg3³R'S9ûqBó͉..²*B¬TóÈUþ >×Í,y ò4¢6°mö) wCÚ#â>òî+Û‚’z‡ey -!Éb™¼ó“XfsÅøG+TèT¤‹6?d= +ÌUéªFEäJ*þX˜A õŽd”q¯6”k6¦õ›Pû€*™Ì—žAJŦ8îšÒp/À‰Ütÿr¸´* 6î×åWÞÉŠÒ—Ó*Ô+££"Ê»ªJJ"‰Kî‡JÈ&C£øpŸ0ÖOËwºí_Țœt½Â+ë$ºò¶'#±; 4îØ‘9 ›½KF{á ˜šDøAÔÆêØ/da;Ûf¤¤!ª›©ì•EÏ6n°.ëÏ?üÓ2k:…4®3íñÃëŒÚíŒNVß µºÛõr¦ wÙZgf½ yE>Tö‘ím çã4õ|ï¿Ô¯€«±:ê^NY'×¢‚`sºC,¯Û*‹µìÛ3nçákç^hÜ´rkÿJìØ÷Œ±Ldž"¦£¹Ÿ¾5[0¶uS“EK 7b"¬{¿ÐI‰ÕoɆ˜5dWý1Hc¡¿N‰¹ÓsSpýVsÍ€£I!Ç.ûíÝH`Í4úœÛÿ]µ*¦h5ÆÜ ÎŽÈBpĘÉe®Õ±)ð-60!>üýÊ<ûdrœ›×G{ö¿Ê_\ým2“Q!׳7›ø´¬U Ð(0Kêâ6óEûf ¢@Šª!ö÷ù¹8)ö1ïÜ]äïMTõ*°]òøÅHQ@Z–JhÍúg|çbÙ{?ì‡ýé2ãÌXj1‹§æu\£8ôÎtJ–¥¤Ï8µÆ,w>d™%m˜ÍW²ÕGÊ]"³¿MmtŠ}9&›Å–kàGõzç¶›»ôÕ²æo„éñþÌ;kV¤,qÐÐw”@•”,W ­¤j5Ê9£xS*šu«ž1[ ¢,Ì]mjW3ívšgŠD’¨¢&m¾B«»*¦<oqâªUZ‡¾!J´©ÚIœô¾‰ŽÃ„EÉhÏ"mFqE¨^}SªBzêy/67Ç­Dþ%‹?Æ—rÃZsϧñU·‚ž6ØfhK`ðš@È®jvM "Š´ŽÄhõ†cB¹TƒÐsúÃïËK- ª%Çw¾Œ¼F‹Ç9ÝŽÂVŽí º˜ˆy Yíì¸J¡iìuìôÞ]Ä‹Ç=•Bnr´¬±°R._h"P7vNVO&P5qø_Pó9«Ý¡´ÛCOa±Î“ì°î.|ÊÔîM’çA„ìÀFĬG]»hÇúÎå|3‚Ëv§ŸËÅúçú'6x VóJϪQ{–ÈÇ' "ŽyFÉÏd0*^# hÑØvôlM&²ÞjeGðè5÷“s<ÚľCsO&¤r¼|ó_˜1ßGPIãbŒ»…ªF¤“âx;_×d VíÉÆ¶•®ßÿœÞ!—°‡0 OèCkÌ_ÃÙ­Êfò(}ãÈ®ÄÔd÷ä®:]­›¤OU7AW÷Ök'Ç>°E=¡Þ—3¼kEGìÐHP7%°ă|¸¹* SZq²fâB¸öiªv¥Ë‹<ÆÆÖŒgpÐNHš)ÉnÞûdpwØ‹bë;” >R¯‚kDšÒl{Ü> gôXÈØjMWU™ ˆmw |²w³jã'³ .1$Ö©ô¶f±×’Ñdg÷•kWTT´Ý÷Ó˜ã®pdo­Ò*õ0Üo¹ºq”nՃà Lruö¬˜ÙùÛ†c&Ÿ÷݈QQãó—-o ~‚dC¢Ø;HãQà!W½vaÅL±_lïβG¨¡êÝ*~á6rÐrtå e_“Çþq‰r¦+H¤=›“IJËÖŽ‰Ú£`ºOº:;å@Ú@~ô`ž!ÂjpÊ䛥=æ ñ†ã”?•¼µ?8`•yM‹\RcÖú2):ù«jî°x_eA¡•X»¤àŠ›xF`á§Uá_y¦âÓÀYŽOQ×—û¯Njsÿ'Ó ×Kv§Pニr/:ÞS³cv3"?®á¬µEkwXæ$”œîÐiý|B«É‚âh‘„áËÅ8ÖX‰´D ÇÜȪ…Yâ«óÞëoWS×<™!ŒhÛ<¸ßúõ²QgÂÔ`rúuj¶&!Ý¿r…¾;¤`îî§•C‡S›YÃj³Cç[áƒÚê Æ†½ ׉ –Ÿ·¡+ˆunjOÅ@ŸõŠ;ß(ÅC¯—|uˆxœ?¸‡7á$¼ ˜dör¨÷CòøNs+à üØ/î˜õ,TPõY¶ºe@UùZ€´ÙfAµkRìg‹1Þ}D–õ1! ¢§° ܳ_BüùŠJÓ‹¶å4zÖìD†b¿5e:<ʾVŠ“’Îu$lõ“¬*QXeÑCòµ>­è¶‡uULwðFx~b\¹„“ÃhÄlÍB@„LfnŒ4ÖW]©##^]FU¹‹¸U4èžë7[îo˜¨ŒÇ ·áŽÝZùvÏ0šÏÙ6çïô0˜õº¿V•,3ÿvÔ~|­èÊ\r0»¡ôVr´§î>¤õ§4÷eÝ%E½Ë+JK«ùÓ ¯Ûí.ëæL:/4IS4 wIÄN—»èø&(¥MC’»Ór¼ÏýC4¼ü:hKŒ­ËÈdÒ^7Ø9Ó1ˆm1 F›s # Ûà\›Iô.Ϊïç2dƒ'Ô=ª6ÉéÂú­¸N1T^¶+¯¢‹åÃJä–'ìG±tð¸Æ%A*è5A˜Ùv`+žØÞ,)“ÇÓýDI9|Sì–ÕXSõŠ÷÷´“´¹Ùv’6X6ÔŠð [C¥ÊTv™1´díõ9à‚‘™ç]~½›l¯Q¬CÖß’ãÛ@h–L¸ÖW¬–&Öop³‚¡ êÏš´1og¢±j);3rÑ9°ùzí*\ÛþÃÉ­¶0²¹˜ßëfÚˆãÿT¢P‹>å3c>dèxfØÒ ó—Êjºf–²dÛÐdkæ¾ã˜ù;2)ïwŒìeàCàÒØùqî¤F¾‚ý„€rPJ²p—,teÅž3´Û§%8Õcìr›kBe«H=©“¦Ì¶f–õx/‚_^j±•‹QP.Æ­èaêÀôðx,0Öï (£mÚŒ`#5> œñ­M=XMßúZMâ˘ÙŒ¥jwv=tüò¨Çñ54£ÑÜkÿëÊ\:×öò[A-ÿ¥y‰–J¸8Òåö„êqvÿ,©íˆÓÌðyœ@¾¿ iCQh‰¶©È_yH”#0Ñ{rFR‚’ÈÔ¯¼~Ë—!?¯ßœIÉâKr^?´»'ßÓ5£ÄÉ.ÅßÚZZ Q´=ÇðM—¡ #°°&×ãÈÓ”a6 wœ>…[ Ô²c8<&aÂé!.ŒÒãâ7)MÅM°·( „dbIÐù¤¤îD±ô£~3Ú»b 9+,ñNf¢Ë– x»5¸áŸ°;GøUYl±oáÇRÝ™:Þè¿Ì;Û0šìéEˆ:êBi;"§5HŸì03èyÖ’•æÞÞŠÉå¬ .=KÂÄî‰i¾’,î%¤pX8@lÄ•j}a›}™LÒÕ“Ml³iÀYzü û\ÒS¯þn±+Ö\’•džæÀøìx•²£8ŸTÂkœšzèÜãRSöQ÷Žé£:3µÕôÌ–$¦ F‰w¶ƒ>y}Ø Ët¨çÎZ~q¼#y%T>¥a…½îIíY)¥Ãx‘Öiù”¹ ©úòMŠ¢.8IýL ó’P{wKÿeËÄii "ò¥×t;yÛ8°=ÙC GQW´Â»¢‘7xú]×Iâ-3wIT“àXê²êÍ °ú%¼Zw újjÅžèIÌÃÑ@8t"É,µ©o¦ø0áž0©*–®A÷+è€öF ßÒd¼þÆÏ^Ïõ&žPë”u d Ìdëè²6ôÓ–rûZcÌJÐÞ±A®1Ò6øÈèÀ“õT±û}méM™ûž_˜x/âÖ+ª–„~·®ïj‚ùÏr#duà™F.ä•îF+J£Lªòž°œ•\=xš#ƒú ËóÌ: åÕ¦\ªHÛ~?ÇùÁbKz.ß¹&%‹Æ¹°BIÁÛÏɼ6òû@¨Y(ÚDä™k|{P] GsõN€N޼‹s‹Â]×.Ñy¤*þcg÷‡,ÔªoÆýkc{IT~fÔw@GÓ‰ÿ Ï|„fðá Ü‚7Õdwõ‰“_•¸3íQ:Ç %‘ŠxY0¾â…õ•D¥óë÷$T +Þ ƒ '#ž‡"K„ÛуŒÀŸ.óŸ^¿«"y F.ìý+»‘T ðÒR½O´íïØ¿£²Ú'ßc™ K«Šci¤€ë°™¦[:½àmÝ€ÜVgp†¯fU‰;ÏÚÛb†Š¨f8Ñ¢³øBŠA¥¸fŠ8'¤OÒ˜bÈCô¥dh‚7Èã›ð9Ò6+ºv0Å!pÞõí%<D!î~|)N¤üⱌß8ö*èD³Åe4àÔó”Î:Ä Mcm/É öî½Õ±ÚÍEáü= 3Ÿ‚ï¿ ‘Oq†ïöžª?5ðJav]0LE ‘è©U¾Ø23sØ4Ì\' zÑ'ÿžO™ÄêÛ¶„ÅfÞψöª’yçj‰>¿´!…¿zÅÖ ˜ðN¼<­z½áLîý)g¹¬ˆÁƒŠ^sõô ¦iKk»’eŽdâ§/¥è@½iE},œÏ_÷ÏI½ ËNÈ{‰Ä2b%m5#CA;:îh{JKî+ ï‘ÅŸq@ql7Ý*#¹œã×j°»oÁTÎë4$·9*½´ªqã}ÁFÇ5`)ãˆ)åõyn¡V7wjK¼ÌÒ®4‚ûcH¤ùRL%™¤ñ*Jn1uݼ-Z´‚x3­Üî!7c–‘ÎÅmy°¬u­šr"­¼@£ÍýÛnž+™™j@n’zs ±UÄNœkžs`‹Ýëñ°ÁWzϵ·„û Öâhõz«AkÒwž“NÇî²*A;Eäñc¡‰Ô‡V84ûĺŚɂcæ=Ù7hÈ5"Þk Âhôl¬BÎZ8 /7¿T—¬7Màø[OxŽj“7ªãX îŸ9:å×SBUíGZ\°\Ós B¤3öt:·©¶4Á’ ½ÿf¼‰ºç“¢ŸÖ\ª¡$Òè‹ÿãk%P +ÜÅTÌÂ’å!锎 ÌšÇqƒE)U¬ 3NFõV¶-ÏI­ôð÷á“Ò‘ä}XêŸÌ˜‹=œ·h–V¨áÞÞAh:ô*f‘xóÅ¿dÐt†þ¹–Ïꎌ6æTÝnâñ l%2kpŽ òñ÷7I±W »8rþ>ðîJanõPï…î³ÓàŸïe¤q¢Òòt~¿zÇ¢‹ƒÈv&ÙLò Šˆ[.ª9^»2zZ]·$a5[ÙPÃâ¾15ñK;-iìq[¤–‹agA ¹ ¸*j]°jªÈݲԇº³*k“jøê „|áÜnºÒÞ4|Ù€×o,±Æ~í¿a½+±N%:\g¼ë.5Ôïß2°Œ[Cz$QF²s›Gê¯`N³¨½3GSEš®Eƒl&LøÕœ£›oá'—¥—ºÓ=½h˜á5$Õ Ü€éPs¹5›=1ì¾iÙ]1M™!Þc>"c ¦ÈëyK޵E›­•Þé=–)îQåÁ¯Áf|½ºÌݧì­ÔQówùwN°sFå}ÔÍ;̃NrkÃàÀyDÊ™ü[˜eKAP6ÐLfâÜE¯ëä÷×½{N0%ײF»±sŒeøÇ½–:ãïÄO÷:Ã#·Ó•м…L¬74W;¸Ñ"ì¡Àî[XîW8€¾)€Æ"Ô*SQ Žœ’´ç(í'ü¯«ÃŒÚͨ³˜÷Zwl~±ƒ5íï‹£Ñó£Í̺¤So=?—@…&x•µ3g—£FriMbl´:Ȫ/3]JQÊ»ˆÓlˆèKÂ`cFïðkžufÒLë; ÕÙil±¿¼*˜/À•]QAÁ8ûhB#¿ÊÖ´*¢Ó>䫦“ $uânŠQ½b§@Zka’«OþÌB–ël Þé¤D6? šLµK÷1 Œ³ñ¾“°0RQÊJóÖÞ4a륷4–Ug)iKä)¼Ì4Õ."É‹¥ÔðϧûH{t#VT3€º=÷Äy'—rl'²Øš‹n-_Ÿ%ÑÙnË?À$†²ÙpÞs¨vh© ‚è±ÍýÖ\Œæ£b•»¨ÿil'ØŸ@Äœä$UZ“Ž• ?ÉÏ1õ´Ž¨ʾŒ^üçÞï]­•DH®\ .Í\ƒr'Œ`hÝõËJ&lmø¨†$ÃÈxò]ôÖõÙŠìq˜f¦;÷7F_;G6¹ÉF u\Ø×#s*KášMžƒ„®’9¿•y8!²ªœÆÏVaÎeòðeì)M%Ó­9C5Ä[è+ÁäÓ¾zŠïÌ•I}¾wíTTíl&É-ÃÅè•_kRñDyƒûmÝÌx£Iê»dÑ{PìN×Dï¾XŒØtâý™X¾à¯Êh&ƒZšX³®"œü’¨òÛ—mlÀ_üÝ×j"LÓ×Ó54mˬ+ «3âÏ®áȧ¾ÆÇÊ™“èÁyŽé …0Ä‹“½òQú|Ïg#Cð7™vÎ[ÔòI©\F€áC¿dvb¼tYª†Ç’”Z‡ÏÂŒ­§R\!1d¶T$ ÐDW È÷ÛÄãÉii9±ŒÖ~ "£|›båFü¨A:†M22Z UìAÏ §˜¸~èçjýž!çj.ùZðoªšm™£Ê@¾Î„`ã>³KsDõæ<Ž+*bȬÛ×w\ô#®–.loça’(ù渇Jý¤$‚š| á øí ÝPO*üèÄdñy;±ô,ê™4›S˜9ö̓^¾ãœ(±—Ù'NºH¬,ϯӅ»Nš%I1à×øg/Œ’ Ñi1.`’ᤩ~É’„ÅÞ´ÚÓ¼ŒQ—ßHór-§š…+H‡4ÜœÙsÆÅM<ºWÊH­•¶æ“5¬iómÖI݇§‡SÚðoDUqÓE™#öQ²‹³µ~»âx ‹ò/T§‹¾>fb ÂàñúaÆaDÛÆÚTGöb4²^š‚Xc-s:й±ê²R­·TTαÞo•ØÖ¿ñCœyÐ1ýS²iUn £|HôÒr=»ñg4MC»,Ìù$¨qßpî2Ÿ5x·&‹aI«æ§¦ ¤B&.øáõVPlßý@QŽAhp œµ[ WªzcWÕíðYó6Ó™)•ž‡‚¸~Æ–÷zÖŽÒ‘÷ôít½%V‰£Ü*Z¥ŠXgboèÛ•Ó ›’°TÎa—Ÿ™¿~ ?'¤4‚²ºMú=Ix̬V߀ƈH- .Av”np÷26G3\¢ ‹{ša¤»4G‹[+²pj%•K'<#ºXKJq;]ã„àvû£åu[õÛY”»ø9ÖW.<3@YùE8#·j 2?E×u-B|;â55Ÿ.–ÀàÌ’§ç)Ò£…âO0žUÄðƒŒ=†iY ΓlX ßqs•¡ì‹Ùáé,5}vˆÂÀ¼, f aÙÌÜÒòJ~BžØof:¸‘uÚÒÅ„¯G}ðĺH„ÔÀm™µõÕ4ŠUäHÜjäÈ|Ü8¿mM‚‡i}kDú ÎH8tßH)fwJFøÈÆ$.ǡ͟Ë_Xs]ênbzzªtbÔëK<õ·„tŽËÉÅùøXÍ.ªÙ_<' ¬ãzŽë(|úÂŽïÚ•W‚rØটPÞßõhnXç~{KR#ê9»1™YUv| 9®¡þÒ7¸TY¯Tƒ“áíÈ’R9`²Ï»íxå¹úŒëõç[p¶sba{ÁX>•†‚]^J÷|BâUÝ}<âMv;˜“²s”ɪÆâÍÅÏÈÍdùE8ÞwÂ6¦’÷>´çÖ@»am6“ÃçP–™ëÙŠ†HÕaÍØrY¦á—Xå\Š®j#„w. :o‡$.Guˆ;ñ&=Š~Hñq†KÒ‹t2uàëü”¸sð ­a1%ß®'ÿlúÎ@7¼lŠ•¨$ÐLnŽ f—àB/£Š%Úï|µ`èÚèpF^!£-™h «ÍØaø¤–ÆëÚ’Q—E¾ æÚv# ®deÌмíÜ@¿}xà«<çûS),V j|ç!eîèÓäéð•䩼Q\ <CZ­~ûWº·Y"J M›sTê¯Úªm$±Ñ9'·­öñ†æµhA™¬)r¸Qieù©`a =— ¬¦hí.ˆ-Ï(Àïž&¾v ¥7Ž4ÊdEÈN«jéþÆ:uq-3Ýa)6è£n»†týsÄÑJn1ÉšëÃX‘¥’‡f?¯\UDV²R×臭2Ü7›Xr‰˜‰@óé@ßñx·ˆ?zUhÈ+­Ëñ‰¤jų?ìD¼^ƒ(­œ/¡%Çì¾ê[–Œ O¥õÁÑ0ÓÒ ŠÄnIß» uéÎÞX3›„MtT¹" °ËW_0pᮃÆë•üŠ9ÅÒWgbÙ—}­Hà4N"íýˆh§ É'?ít`L§s‰OÔoYHÁùtk£O—Ͽ޺¨’LBW”@x—£Kú<ÚÈ'7ÎÃÚÄý’dhÊ,ˆJ¨ ®FZô@®pLyœ¦ê<Ç¥#XÞž±ðŠÕöšvÈñ%ÈëÆbmï7õVâks³¯@À>h›Ù#lK%ùèåÓ| =§{²Ã—ü5Å\ ¶ìŸWƒ)ªœ°žhTÊÀúI)"bå~,j곘˜%ª+œÀYa¼n**ÛììB£*hŸßº€:êCÄ|_»×¯É¸@Åu¥ÈÐÃ#×+=ü‘ŒömÆHÅTãÉ9V ð½dL,Ò­œ 绩拵±#ÞsçvìoyÓI‡"6ÍZ+H)¦~*m¬sÛÈl×2Ú¼1Ö‡G#Q™gXè®ÓØ‚\aÍÁ)àü¿@2._Yí2•áº6îÁŒm3Dªn7{*ÙoÏÍ*Xœ‘øtúK`¶ÑfͦÛßt©7±d§~ 1L:£lu³Æ4=qœ‡0Årœ#hÍɳZCõ²A…qJ4Tƒ¼åh,SŽbÄsäƒÐXL–æw¹QÅHŒ ¯UÕ,”Ñ‹GáœOà7Ïz¤ö˜ç€4eÖîd!â´«Ón¦MèÇZ3í6•8*«“ ×QbÙ5¥Y§úÈ®šû±íin•Ì—^VJã%ßáӻ܇7°Ü¦ŸU¶‚àa ç ³­d?v~ "dxÞCSACØÅ×Áú¸ R]÷µ f¡T ®ÐÛÓÚy‡!<&Й jŸ§ÆWGV´¿=_ìÑõÕüˆs¹Þ²Âù§×a¾®°XfG¥,gL±àŦ¯Ý{¡p¶–![z)]­ù=­×öJž‘Â8ˆ`íÙÕì sú´ fÏW'—"ï+9Þoè/›vüìdºÉ.Wš^Ô¢¤AyœÈx­þ¼ûx-ßq<×gºðŒŸ†§*õD¤¦ U`Äc¾[ÍZŸne¤íÄýÌ¢%I.g¯a Ù}ㆦÊ5€á¨5, >Ä—’‡GLBd†îãGß jŠÿÓ#-û=>÷[jlJÀ±r-ty}\ F‚þ‡èñ›&iÏä;zË»L·M gGòætN„ØÝl¾/u²Löꋨ5dúÞÄñÆÛŒ¦žÇ×nY£Þü•1ŘˆYwnÚ2«Íú ¡„,UñÇ„O±è»å_ºM×TxçC Â÷Úlï3¥úF:¿ÕR’ÛC‰XÐàÆÕJ‚,$‚>~æàbžwÙdâ-†Drˆ2»Ô‰C,êàIr3Íâ(ý_¿ÌIKuuÑÓ‰s(7ÀøÉÀì<äS½W çZS%¬ÕûZ}i"Ó}ö…Ά™È~¨’ßÇ›N•N+´Ø/-•œëµØH£@Dy§–ÁË@Nj§’ëŒ"õõRôÝ»ôDž?¯ž8»áè’å^v¡lFg/Âe(„½o \µðPkú±hÍÆð¾(äöµßQ+OZ(Lò“íâ¢ëÃ(øz¼][à-ÛFÛ·D„S»‹”sKµI¦ª{­òÿdFÓ\¨+€¦!­É|íêüi¨ªÕla:7ï¶«„š!÷ýkìЉþ{í|[¾¬Õ‹.gó-T©q!’…R‚j>a=s ¡1”ãC«ÜöF·ìOàµà;mφgo¯Ã\„q¿I¼Ó÷Ý"ÊÀ¡m„Z„Ÿa«Y§xßk‚wá Îã^ÊXþ)¤Ê¹‹+Ea“0,Á»êpQ©UPìhߢ!^cÒ#!m¬|Q˜Xv3âeø¨l û¢CýH2kä˜_eFºïÛôV‰b>šæÉžÙ‹[‘Ù%”¡…ë×%¹ç&à{×|z}%G~±sê$Bjk­Ço¿µtz,mgð7ƒ8‹6g†ÄÞvãþˆaا÷Gµ^à~El¢œÄs©Œµ]¤Éñqº‚AŽþBeR9þÍœ¾v:nŽI„ºRm¹¦#o÷&:k~_|¬öTLØg‹bêdîrãK¸÷ £¡¡Lm@M†Åx¯¦y3y»ãÈÍ_Lr?"A\¡'×7qxûꓨ‰a ú ¸;0Üó¹"vØâ £]@±TŒï(c£ 7–ZÕ6¤¨KY09•¦9"bè–í4Ô¡ÎÉ?ͼ•º5X" îYÿ¼Æß’%æÄQðR#ÌvÑeéþ2øÕª Ãõ¦±Û˜vO'46©¢²‰±”$õxhñ“}:ñµ¹Ús2ô^£P¢sgO¥'Ï òãþá_ÑŠ©MÁ¦+ý—;V“g57ñaóî«j!á8“O8%}Ûôv Jã13dýû$ø”Çê*ƒW‘@8VbòãUîæ¡.UÌ2JKµ1½©`ˆX w=‹…š[ú ˆ ¬±Ôô9:í9„ gŽh¾OtJÕî+Ù§%’çnñýÖ;¢¼wÌN£à¼‡¾®.|vÚæ‡áCެlp 3}Gnßjéw¥â G[¹üì*UÐßß (X…B¢G‹ ¨J:uŸxsì‘wn>' lUn`æçqW/z3úÚú‘㱉2û¤ÕãöŠu³«#dJ߸ðzÌ€)\´‹nOZÆ`í¡}ðvô| Ž fªGD&W~|$š’¦YcØ087«gʼnú §xÉ5Z(J…-_+ƒ«Ýhb·ä½ýâ»íü д[cþ}`Šqû¦*ÈÊÌÄ­°Z.ä^½:"®aðQS9¨y!Ö 5co ` ±(*)¨ÔþZÁP¿v±!zÙ›ÄDüŠÛß±PÐÆx…¦®_¸.$ZWÀ†£Ûïs@Ò‘66Zç` ‰5¹ÿp¡ oO4Þox¢Yï"¡$‚1†Øöbz)­D§ óµjª lOù‰É½×sŒ$£a ˆ7þš0÷ oHcØþ.m䜵Åág…0#’¦=hTÎ òÀa1,*·ÍÕÂõü0­b¼AQt¦Õ܃TQ«˜jCàkÒTá*ñâ í˸‡Uu†ÇÝ)/TRŒ·9a]æ—¯ÕG®åš±ëµ|PJaþ€Þ‚úËæáàˆ`*¼ÌóïS4h#”¸~&Ÿ¶ßoœlîJmðjý¹Ôôm_Ÿ¨l­Š¡/4]9ªÅ=•iÌfï{J{ LµYŠnSœqÃa “ÁW!WÞ¬oïӿ܀_ZÒøÙk¥ë<½ß$j}qŒÒƒ!¿ì×€-ïÏ”Póø‡_ƾ|A,ð¹°Kmž2ML¦ ݙ˞pŠŸx¬d¢B„Óuµ¯l=pÞ „v“–ŽÌÝšé Ñ{!¨`­Þ´`><¯;ûuÖyƃû{«FI5 ‚RÁ• 3éT­Éeë#K¦W[„ÒUfö¨ã„2”·ù.êÎy¦5÷&*`“øéhëHö®éKŽ0* ¢0Ü?‹:’¹dÖ•QIÿ½‚u}+ŒÔ›]êž–:»‘;í¢Ùæz8âþ”Ù¥ÂÚ‰½ÂR•n\UÑڛ𤘣í‹uM‘‹˜úÑè]o¶ŠfÔµýLJi(í°ÍíÌù&‚§›,C¹zQÀažØ¬UL=é¢Y~³—-\jD­Ø6:ÏaüƒýA×f÷óå‚`žDgd‹¦âYgB ®:gG’Â'p’ÂÇñžQ ÁÓ•µÇãÉyÞ?…ZÕ—sÙEæYýÓР²uf$$Ü%cjµ¦´Þ"±”(©.¿w’îb\^'c1ñ ù);דC#­áã4æ õþ9-©$ÉžŽ™T¤O™r´Ñ·ð Ó;' ðs†…ýãccÓNеqANÿ†ÿÛf5“sý^J—y-)u5g÷(F ®¥þ•I|.ŠfUýh’ßÔ.ܼĘhÊ \/gíÑaªãn;#?86),®¿þ9(s—É«ÍÑfHÒ2# ‰=$2$ìë…xT/= Þöd4#/DÖ(§ÅÖÖðŸ@3iÜÝp9 Áj^þ!,îîs)‰»žœˆĶëåBfüÓŽCÌ÷dâC¹"3ÿ»% «bO²fg …ô`•+:ŽÃ¶;žQí¼â «ð•)aSµ:åõv•¸V6©—f±ÖÒä³ Vyð6=ú`ösèß)éZz m«bØ #æJÙ’*›ýˆµF Z¸A¸ŠVÓ¬vrBö,´ÃgR˜Oµ7‘kŽ6võ¿ R£·õ2üSaÊ8x÷!"­éÎcÏhÿÔMÿ9 œÛ9D+Uñ´Oûðu“1öæ«¡ÁT‡æ¸ÇNÌË™ŒV†bj´“¢Ö ç+tX"‡ 5QmÄM äޕଊê9îÚ¼éÖ·üQÿy±˜T©>( ÿ¡‰Î˜*<ëÇ$ù“%…¶HãßÜ“ ‘€äl{Õ™±ødŒø±Ç{7©¶3¸‰ÚÜã `ž¨ÓÇF›óÚ–»ªª†ß›ÞT q´H5n[S:lÌ,•“´6M߸äWÃÀ§6àN2XãCî¸Ù¢ª?ðóëhR2iC‰/}Øz^‡n×Fæ4LT§$/ŒZ¼Œ÷¼´é–€‚D¼DÔ ÆQÚC4=Ž>³A–ôK^&Ï­3x;Ät4"Nƒ0‘À{©^o®ŒÜÁN& w}ct£HLôÌíDDŸ”Œ•©î½¶Û}z×”²D.æÀªÎèΡÊ)2=JsØû+ç´Éª=4½6?á+fô«–>“¿àÕˆ.®Ã)>_°c‰R iÆ ˆr9Ôü¯Ù-Üæ'¬ž a_Ö’‘‹á©cRÌ!h¼<'ù üв"ž!Ôoãзjìç“^ûMa–îËæ¬²pLP™[Aà—ØyÛþ[{µX–Èé·ñÐZKöDGF+,œÚOät×o >JŒS„oyOÛÁ“8¢î_eëN £æ‡”Ö‹WkæUisˆéãóò‹ÿ”ØQ%aª‚|ûCŠ‚±ásÈ¡G2ÜtíLlÓ²s?ŽLrþûDs¬m‡ e\¸ì’žzM¸¸$Ü~ÛÉ3ál{ŠMY™I‚R? ­üÐ<4a £dÿGDŽkÈþeŽRUeêklž,²#†qe˜qü\¼.µ;0chºÜ¨}Œ–n%¡fÖ ±N“|}›ù…Q/U t¸Aƒ¾ÿXPlw«Ë´[•8™– ^é<ŠqYLi-Q¥Ž­ƒjWÁÙvzð­1ñ{@õÙÝE\¤‹€Ã´Kú¾«’[ÞX G¯;©@'#ñ`ò‘ÙË SÛ¼“¬è+!Œ †EN¥mô“$ÝîÀ/l€žÿÅ„YÌûä?#&¥}˜1&ãäÙ—| Täá 9-qxo¦›Úaí,½š±¸L.À´ս±0žóþt 1dòÓ)s´Ó9<)ÈÍК—¬hq¼Ù %¤OñÒ ì½˜1K~dm³Iš¥!§ü„Ñl¹ ö+7®s?.%+p.±Ÿ¨„ãG€e` cêc¼T. F©Z¨t\Léw“͸Û=[Mi°½3 °p:üš‰¾äv´°!ÈQΑ³Fõ¦•É@¿^z YÉÌÊ b¸Cäþ¯IDÄ_¶½1,ï(¶˜xv¾ëꊎ]4•‹{Jƒ>”í¥‰þPIP°qò;Ûèa×}Øå}¥û)v†UÂ[VÛ¢ƒîÙë.À–޼}kÁ@ÁÎ.ŠÖÚáZ‹’%„'¶TéÿͺyQ೩«úeÝ#g‰HšÞõ€òrRà5û /šú÷ò41(}Y¹NŸôUn€ ¤žÙ1ì"ö}ëûj×PAóÒoÊ„ Ȩˆõu«wÃi¹ÃÙö²ÇGîa„”Œ_¦)pÑÛUHõ×. ‘ÑFü"ýó×r3¼òâ„ 4…Î&ñ×üµÔ¢åÚóò‚¶ÌF’?8,;olžÕ©»¦æƒ1#O×yÕ “ñ0¼Þ|‘kŽôAÕ>ük¹W©Ž^À-‘‡ç®¨²Í³üÏH0 ‡T^Í;Gßg9¿GüÄÕ²‚6iǬµü•#­@ }®ýê¨Íˆz*‹ec6&Ú¶€í{â2yèb³ˆ¹xi Õ#(k5NÊëXŽ¿£æÜ®ØãIÉõ×”:8Ír¡d4ú_Fz~_6ÞP"E9ŒkÛ÷ó1³+§¥tŒ×§s¾¡*ºõö§§& nÈpÖvjQèY?M±.Á§šZ»‹Yr<é]Èë•aÓt ç5wÄÉi¸üˆ§«lõ8Hº»(ž)Ù xÓº¨I®É¸K”|9Z0Ç]ÿ¢t¾Cïi†¯G9jJ&…ÔuRÿÇó°­Îû-™ªd@öxtd÷‚t£FùKž7JÕ¢ìfkëog'JÁúNHÝØÚÓy½Yö¨úƒèq•âŸßgÉD¿TpI±A¼ßq¶v{R;¿û.0 #ø>Ñ÷Ž×g„>Yg•øÎ0ñ¢Æ¤?k ˆ÷NiÇŽ&”òÉ"¯Z.âãP+ŸÜ¬[¤tHñ‹AwNª_É»±c©Xw¼B3Ìúm¾šáÞ`õÇránŒf"p6”¢Ôîëá ÆKƒ¥àsÜúÛH.j"ùGï4¬X¸¼ªyx² 7L9ˆs$¯|Õãmƒ™›Þ~|”ZºcáMýÍé¯C,â6•ùÓ°{úá†\·°ÅéÒܼw> stream xÚvuXÔk×.-- t Ý1t7Hww 0ÔÐ Ò ’ÒÒ „Hƒtww‡„Ô™½÷ûm}¿sþ8×\3÷Z÷ªçw¯‡ …ª‹¸%Ä$qtc²² $•455ìvvNVvvTM°›=è·•Fäâ †8 üÁ‘t™¹AmRfnPªÄ ïnr€<@^vv;;ÿÿ!.)3°%@‰ q¹¢ÒHBœ¼]ÀÖ6nÐJÿó@oÁòóó2ÿw¹€-ÌJfn6 hE 3{€Ä róþ¯ôB6nnNllžžž¬f®¬kf€'ØÍ r¹x€, P6sý;+* @ÓìúKbåæiæ@ ö` £+4ÈÝÑä€ÖhÈ)Tœ@Žÿÿ!0þs< +ðßtÿ‰þ+Øñï`3 ˆƒ“™£7ØÑ`¶TdYݼܘfŽ–Íì]!Ðx33°½™9”ðwófq5€tÆÿLèjávrseuÛÿ5%Û_i -íh) qp9º¹¢þÕŸØd=yo¶±#ÄÓÑ÷7¶;ZZý5Š¥»›–#ØÙ$'õÔ„úÛf rp³³³óA,Èò²°aû«ˆ¦·èo'ð/3t_'ˆÀ : Èl‚~¡úºšy€n.î ß?ÿP@€%ØÂ `²;¢þÎ5ƒ¬þÁP¸€½ìPì}þýeÕ™%ÄÑÞû7ýïͦ!¡¤©¨ÃôïÐÿº%$ ^_v ''€È àáçøÿw"U3ðù#TÎÑ àÿ§_èAýOÏÿýö„ðß¹”!Pƒô¿õnÈÎÍnýüÿVýß!ÿ/±ÿ•åÿCïÿ»'w{û¿ôÿCù¿f`{ïÿp vwƒ®ƒºŽÿ›ªúg‹•@–`w‡ÿí•s3ƒ®…¸£5TÚ,ü¬\<ÿ˜Á®2`/¥*ØÍÂæo™ücÖúkíìÁŽ Uˆ+ø¯«Àdgÿ_>è®YØA¯W¨:ÿv «ôßU¥- –í7ÀÌÅÅÌ•**nn€/ºœ– ¯¿õ `cu„¸ACÐ ýVÔ¿-/€Mò/Ó?ˆÀ&õñؤÿE¼6Ù߈ À&ÿñØ#hN¥?™ýFÐ æ¿4§¹™…«½™«Í¿Ö¿ÎÍò°þ€Ð «? '€Íúmìw*.n(òv²^j¿PøíÝöm×îí×þ=‡ßºold†î8äwm(ú¿à7´Sç!'ÔíìªíoQýfApùB»uýB»ý“ íÖý÷qB¹_ç®—? C‡ðøB+{þ†Ð‚ÍëÂû÷ÐPË?Sý—ò,Ü]\ ·ñß—T–ÿƒÿ¾úA /êü ÄBðmí»ÖÛÏâÄž,Û#œ]´§°>ó:@ZFÓ€¯Øbæõ~“n>ZÀ¢{ÂÃHÿ¬³b§Ê;¬nTiÈ”Xªës4^ÿ–Ìc”Ó(X¼’ðé+µp–¸ÑØì.áTÙ¯óIyPe&.x/¢a£Kxx|ŠÞ3) ëß¢ß ó\&þƒÞ»A¤ Í"µ•ItçnÁr‘ŽÖbÎàµ!‘åòcä>–nH*ŸéÈ(».qéû4öulÚ¼§óê!+ž]âñ"l¡L5üiî(^2f+⋉WÞš~Ÿ+¼ S{ëÉÛBX )èH#üê·±ø±:11TP‰Æº#=‡HC1<¯_]IÈK’z¢YèL”Iz':ŽÍš‹ªr¯jÎãœnîÈåÖ.LJxúóG¢n E½Vq¨ëkj_CÔ¾ÊTż«’3:€À²ø¦õ“ÍhrªŸ•†@ƒÕrÊÞµO‘úc{{:&ûÓ)/YùCÄÏ¢0œí5ëWîœÜ§­”Ö\DN‚IZIÄ.]×µ—o·S«Š}á¹ PªšŽ`ØÞô|Ð×§Óü¥f$©Ä™ã‹”™Zˆ ’‘ÉëÎM(sB¦ÿ‚‰d×,NDÆ ÄŠitÛY§®g¼üñê²¶®^“=ö?3ãq(9±¼ª™Ói pêB2œ+.3’Õ~ràáµÚ»‹ñkØ""HSpëù®Ýº:Qö ŸøNŽ´`À±Ä°ÞÕVmT½²ÚË÷lØq—{–rÀ—q{1Öžúð&óªâj-Fhâi"ÚœVmûi•}ÉT·2¼±Å«frÔ¢Z’ÞÂá/;.ôßcò[¼Qê\Qç"½¸R¾Å‘ѷ;­´],èöò?­ÞöÖ¯TYúšVìE˜–IÍ’¿ÀÅ€<4®wsÈê#ÎH4ý.îmBï¯9 ݽø;Um­¸QV2Mƒo;§e±krªyç«ôù±ªÖä¢ %Ë6ò2\GµõÚÎþ臩j?±³”%š2fï½ÈÆÉžî¶}¸oø•$òœqD„Ö†‡|$S×™Œ®¹¸³¼ø 莫¿—¯\¿½G¨awE¿ü~âgïÔN‘Dà­¼˜Йîƒý¡ÍC óiÈÂV†œ‘m¨ön) YæÁÀ ˜Î0hÏÙ¸1ˆCc^ô8l"•Rs Ié!¦†ó3ݻߤèzé#Ý ;ÄT`çÅ9mà ul5oÉ ÙmÏ«”lø¹ešû0­X–‰š1VÁqádŸ|X˳óäÄäŒÇkÛM¾–¸5qÕ¼iãp%o}ØQ|’|YÁŸ|pÈÅz\\y²gQ ÞIÍ?þI=Ñ#*qYº­Ó¹_'(¤ïS~S+¦Í$é`€Ù»ó°­I(aƒÈÝ\ž“8G ‘¡cšZ˜ Ý®W÷WU :\‚+˜Od¿ˆ2#‡wp÷Y«|`*çõŠ/"ðúCÉP;λ‰yƒûNƒ©ÙIçž‚ªŽ•%#é' &ï~ÀÀ|O¯a÷¹:-wH‰ï4×< j°Ö6À5)Ý‹õ̸“m'ß—VÊäi¾Ì¦©?î•°ßaMíœfjâjG¦}uöÜæñ…ãÛ´jÉ"•ùЃŽÙÙŒJDóè~†â€2¾¿‘tªßûƒ‚~Ó¥Z4U‡Œ9fÓÆŽLv&±ò$[hp?›Œš=ôRÓÕyx=ªßqbT3¿Fä3ÑÂjÚr«a1ýàî(NvQë=î´æÕ)ÇMÉRdn´àÝ)¼ÏXàd´d7§¿€í£¤bnèðŠ Ó4¢&dI‘ÝÍL²Ecj™z¢:Ã&<½Šåü‰ó§8M=‘Ñ·=7«ÎPßtÂW§OëD9¿Ö-ÒîNC~¤«Ê#P¨Њ¼è´* Ñ{Ÿ´@Pc”ó®«ÑþES eR¸ÿd…¡Ä³ø]_,SG¾­QK¯‹ ?fx²7G _ðdD¼JwµÐ¾q±6øésS˜‚ùÉEíYqÑV'|ñ_eÉNw|PǼC;bˆ= cÉú‰êðÖ!äËÖ&S’¬ ×py|_-³Íñ—´Þs´±‰¡3yyAGJ‹Ìû«eâ„­Q®lùo(0\J·ÊUÓÌKÕ9~ f•w6g1¡p‘gÏçFM/`ÃØloÊU_2åoüš˜SÓµPrCKÍM´&æàåäEÕáL„ûÈn½=¸[|„q{i9),mRž&Áù~r„'H¿ÀãB¬góažéRil»4§ç šT#¡Î­«ù,+÷Êòà¯z“û< Z,«ð7cíl)MúØÊŒù*Gòöš¯~ #~{zaDËd1ðd~]ìFÚ…†Þ]bª°Â” P†'sp´D’»Åo$¦#dmžÎ€ÀÓ°Z6þ>óƒv'‘I¶7¬ ™ç}¬ï ŸÏîr"HÍ#1”ÍÒ–+a0$öŒÈ¦ŸãnÀÕ í S,U§¥æùOÉöI}-—% O>$Š~ýa“ù`‰¿[Ûê’öI¬«¬%Š"ºS.½“ž'wˆÅ¼¯Ù ãŽe+ïùg EçXôkK*<–Êk÷uþú;„±`óäþeé´gŸÛm¬8aO²èøErÞûŽ5¤Aš©ïó0-µ+.t*'Oxjämf¤OÊ£™÷û{¾k“_ˆ?¾˜` ÁÉW3—f–CG` ãôsÊdæÚÕ¬øV74ÀuøL<3ﻬEú³ÊEá;@«ß&÷C€×còð1ö©H²æ,‘·â{ õ´ ÌŒ1o‚à`Ï8ÞÕhœ–4âtBÅ/>õèƒèOn‰‹n&i^mrÛhïù’û‹Ñ4ð/C<Óx[Ý·jDCƒrhå6—¶äVs|h&™-ÎP÷³àù’žddܸc#\á¢Ð ™¹ˆ†àá2 /½Ì`I÷-pƒ›Ý#O6ùë»à3ŒÓxl|¹}É™MÁÐ[#CPÁÜS§qÇE²¢Í­®nb¶ïÐÖýa~q¥BÆ‘áãmëçs”/Õ†Âú½­hîXh?9û Ãu²µ¦ôÞ;"iRe+0bû‘4Ÿ;­ŒuߊÛàëæš’‹@Y¢Šñ»¿Ö«¨mk`EôšK±÷ ðlFÏ™^  ÃÞ<Û!ŠF½å©[˜K–íÞ]Ò žü@I³Cž¢zþ¾‚øãð£þlÈœ˜O¾=¦e{‹ÕP^êy)G¿vÛšÿ‰Š÷\¬†À[—m‹ÒµbQÙçË×á,¯¦ˆ#â`9ïql7SÍôl·ó ¦d9ÚîA2sV3U)l‘X–ÃokÖ™¯;­Ã88%ƒ8{%{¾µ|Äñ'×^”þzÓ¸¼ˆ8$Š£|u9Ç^¾lÊOº¤m‚|¹u/ŒîU7½æåÌXm+Ÿæ‰Ò;i„ÝNâä‘ v·…‘•'‘¬Ùã¢tqð,7¯¼Qœ9‡Ó³¸‹a½*g1ä°\?ŸÜ(öü¸ÆÀ…Šäž¸Âò@h nòÔÈ‹ë5“}Y»kð%ñò>{„œžY {ë%8É’´ªǪsh˜ßzö”C}ô/bAé11(¤ù”ƒ?Uoÿ4"Yº'ú±@åQ9t p”û¦Ý](Kj˜9ç=ŒëPýÌ8Ci”{Ø©Í&Èú"BÌmæÃ¨ UÇG-‚LÈû¦žÐå¹®.×ÊyZeW:ÁÑ›Gåµk{ÒÑÚü ¯¡óÙÔH’‹$‹~G6ßæy2±Ò5œ‡B쭃襸½{ZÙjR9YMC¬‹3½’Z;Lÿ>`K8[aÃmb%œ‘E.NY¯5)Í¡"Ða›jÙ䢯«å¹š‘€dz6ä#‹ÔÜøê¤Ê›ÂiZTs#Ç8–üÍuñB]¦bnúëÙQMz1û„µ;O¼)wy0ýMœmÇ¡ãläQ™uø8ª[n‚ïÆºT\¹³Ç(H»Ü,h¢ïßõ4¨ׄFåÍí£Zû}6L©óž)ö¨Z^gx¡¾Š ^8¤òe¾ ×@è àŸŸCFDªÈÚñô•Ämš'iö~Ùf8Ÿ1ù8Üáé¢Î› ù³uÂræõÔ,•E¸;é+üÏæ‘hó¶ÈnïICÙIgV¢ƒ>¹ Ó>;âs>l0Wµ´s7+·äÊ#LÌQ4—&¯9~Ÿ8“Þž¹…Åݯo;$–¡IÅŸ7§$¯,¹&!/!WËšµ](ëM¾[½sÀ쫇pæÊ„†= f“ã]>ׯÿt¬|&¾ç¢T\å/‡c¨H¯ø¾¿°ç! ø¼iãLé6–åè+:WZM¨‹Þ”38Ã5 áC@ý„Jþ‘’E:™ÉV‚B»ì‡Ø7ÒÞý‘ÐA=ÿÁºÄ >3³`ާÈËì­†˜š}óe+%%òùÇ1ouÀºÃíâ©Î¶oŠ¡µ'oyZ·Ïöèˆ\L͈1ãh+×<êL¿öÊNäK-{Í’žSñ<ÙÚíÏû>+=|ÙÀ”ȸT²pÅʧ.CŠx^w³SÝÇk·¸qW>ˆìñFlÐT*ûðWÊÈÙŽw’bàè-„*NÈë$±íøÜhý²Úõ-=[%¨™$¾gëä…o‚A:ÚZ¾zÜôêÒÐË+?´Í´Ë6¶ˆ+7ÌÐK1¼¬¦›5eëÓñNrô…Ï(g/ÖöE+F‡k :i$ž¨pν·d¢LòÝ9}º…žn2ç^ãëÂy%h UaiÄv^köŽ’ &Âk{¢•ÇU#Qpêv&é²µwF~ØY¨ ç÷å“ÉñÿÕ³¿ÌKƒ æ6ˆôè ÚP4uÖú‘ }»,QÛÎ"ñ†F§hÌîyxº £ðvkß$ý‘Ç'Eþ¤jäCТ¢, V4ðsæ¦ïgg£Ö7èÁÁ&Lq¬ëÃe¨/.¬ ^ss£ ö‰û ~Cyx)2½Œq©±…Ê— wÊÄY§–Ä5Lhm^ã _®1sÎ,ŽêÚ;öKý¾Tò¦báb ^ùnQjG ßL«ïFf‰Dy¡êÁéÀ§ê}ư֯S£“ÈþæêÖ˜Œ®Cï÷ c‚Ôqî°­[!è±Ú‘Ãv ž`‰º¸õ ›–{ Ï‘õ÷wc:rja²à' Ó2Zwÿʯ†O!r=&Þ Ì™ïÓ†‚*–QlÀºd0Œ1ý32¦ÈŸÎAbÂó•,#^ÄH.»9-H hL-”==su;|:1$L˜ð€‘¬W‡Èw%ì•Ñ+'+¹Q 4äÑëèßPe1kîu†x¨¤5;,É÷¾µÅ‡\òz°[}…¾æ&¿ø±ÑÙ’;}"sº4úˆÒ•Ác@<ñe‡—œq¢g‘·Ù1.©WvØ ãs5–‚!èváØ¡YÒ—Æ€­Ùϵë^Š _çU;³slÛ‹%ÕÉ𛜽kþp$øôX]7okHwGˆ¢`mÀ¨”R~Ö0B„lßû-’õ4ãå~Ö„s/^vÂÌú÷ã8¬Ê$*Á&ˆ×zµô¦TÙ› oß´>jé¡9E']­Ã¸eð­—ZÞ{`£…—LÒ3/hÕòΪWx¶ q¯"°I‹f¯éAò÷}>n`èÂèeMup d²}F—ª:®ê2M\3Kß½¿Jn] ¶œ®]™|~Õ³LèÝÄfqY¢¥Äˆ!f¨“_mO˜$l=i“È"~‘È’Ág”бxXëÚh#uùöŽûœÍÖ3fY±![J1ú¡ºg)Ckp¨¨H'@¡ÇÞ —±˜àû±ŒéNZî@1Ð üa.ÄâSäásÀvªº–$Æ=#s³LÄSïÂ’e¤~~tŸ«H¹½ûäÇ5ªvð²jŸW Xë…#“J¤}¼5Ýq˜%Ž!qÁš=Uö¼yÜ?@âK·^,Z¡·Vk9î× ÅÃQáÂr/«M¬ÇíàtNZÆM$)Rc=?Ý|˜oµ»¡Zòûëã±~…ßi(Iôð7d°j¯äác÷Ö­ ­û»Hió†s.dwÌn¯¬‘Jîíô§á­F¹qïâho6d²^'†íyáõÇL_©£”Z^à—ÎaKL=ñ‚ Ä÷pX€TïN»Î•ÑH‘®­ûw}q¸î«ë½Ìgû>S£ÑãJ¨­êÛX±Bbaêh¥–ÚWËõ¸œ¡ý~^þï/µàãrJN›Wr Ö7¿€6s·¢úâ#( ±Æ›ŠAØ%õL¬ðÜYsèâžlæºyNϞͷ=ã‹Û¾Ïƒé’§À™:6`R÷È'òÄꔟÆ‚×(þ‘È,|8!´š<´é&‰¶yÄm…ÛµÉǽÕCÞÅpá”OCŸG“÷CÚõ¦»Åàc†dáHôMê5–èŽà êuqPŒPN¿?¥ ø [£ :œ™.ý4sç¹Gí?:@5$“ž¾kHäWJì;B-´Ñ&DÌ^ÅfÿÖlLU&?q–“юݦÒ:‡Â4M5¼rÍÁccÝ|ÉõùXT"aZÆäãg>tdíá,L‹rxNêõÉú„œGÄËl®B¥/û|¦¸€7SVo ¹†.‡›c)¯jÕ¿{©´qÁÅÇ ¡“ìý¹"íß̦¾6íK§D¿Õƒ+ËÿÑXÀ, óú‘pÃ$*¨²¯Úí®v-y²!Ô\˜ô3òõ8~žê6Ñ—¨ü ”cñ˜¾¸ZNNÞ†¤_ߺý®kF›w§˜‰Å`Y56ù”Âõõ㵊öòöÃô>iÌõ»¯“z+îGp¤+ñj3¬Áògcº&XInÊŸPœ`T$z[J¤6”PƒAR´=+ʉ™t™è4†X~‹†½ßÓwñP–íJÚnâ6Fvb õ–TÎΩ*‚§øÙz'KV›!©ØóÍG½ÈuAÅŒ[¯¸¼Ž±’b´´8?ÚV»F»¸’LE¢øo5’›D-ýªIO^¶6½¤¢œ\S\Åþ’6Û·`ò#£hɤ_’½Å‰2QåÀEÀkoëšÃÒ<°­TÕ_ ^±öõ¸€ì´ìD¼èëTmX_u/ÕEI b¿pYçz•‚¾ØTwz$FÐw€nÊÊÇ ek lÅGŸH,¼z6|òeª^÷÷…''¨Šë”$â•á´ÇáOHP$ê ÞkÁ7I¯"Žˆ;´òñHß/d0d+c¸²Š©#:pÔÿØ(" ÇÈ=(æÌŽ}.ÛÞO¶p™¡éöwbÆzÉÛ‚œ=iDH_´ÏqnëTn2m­¬so/£—¼yf7åYq :Y y‹1XY’8ƒorFÁ|Ï+~)b {c%YË“Š4ÆÛUqD$†5#M¥q^Zã¹Q= ðz©kÅÜ-6Ãlì*‰ÅÊ]AH?ó¤Xyò‚çÂ$ÉÛ:Nᡵ)dK0«®`ëlkÑ2ù<»¸¿½òÖG'©·•9¢¼ÈßÓ蹑ôìËêâ³d'‘ù°Eü†'-3±Ýv“!°Ží·u‘Ô«¢ •ÚkÁår¹Rž\—òÏœíV– 6vi¼¨-_Š*»¹ñ:= ”,H¿’hî®·1–„%øž3sæünƒì5(ƒûáþó;²ø"ïZRõoé¼òÓ~ ô6\üÆð ZÇ{ÜëLžÛR^ÖFÙ$’ßÅÝ]^t{Ýå6{jTHѦíᡆyo¸†.,»õfï“T\,ŸQøQÐ+C‰Ê÷ÎS³…Î(¥»IEÅnUÉ·bðeæ õUߘ­Üð·‘ˆŠ¨'¥Y' s]“¦k"8ìÓ&Ú|î ³ñ¬qã†õK²Œu\„ŽŠÓÅúϤ#m“]" )§!,æjB×—ÇJÚüöåøc§©”ä»JŸDöâì‹„½ˆI¼_È-NS¡gš úùµÀöÖc1Œ¨TsÐ&"$p0fÃ9º_’'ijà"Gó¦Ìß*Øã›¶M $ëŠÎ5¡>çÍÁ׉”ÃÊ|]Á½ÒN;\=’Wøn:·œ5€%Ô ¯'‘z@"îGáÅÿÔÔ%^õÍæ9¿äÍŒº¶xC0·p{r6›Ð«µŽsóÅê WSèuÖ`çÏQ`çqÙª;ËIº×ÑW¬§âsV\ñI+7ŸLJŒQËŠkGøÔê[~eµ ܉òW¹ßWy¥Á¹ÿô¾ÃnZ quŠ@µ ÀÇû¢`8«mbý&^6Mk%=‘Æð;êGÜmT¦3‘†B®°î» ¼ƒ0ò”Þöª_Ü ÜGVîiocÙÝ™KÄÏ 2§J©}nÓ©&ŸÑ„<<;Þwô×R[÷n¹ÑätÅ´è¶¾"+AGrãÜØIŽúÄQ^öÜ&¥¬§‹©{Êó3À ¸'ÁóY&#ÜÚÞ“ %Ý2ZáföûöãË´v†q_Ó{—ãñ6 ˜pK]ñ-Ê3ç^7~Ë7£½)O¼‘B1ÁT ñ”³õ嬸+ćCOÀSpX6„®ÄÚ±›ÎŒ¶ÒÍÊt˜Ž4Êi_n‰ß^8ô°? ÿú¢ÿRa‘·×@þºÛx•i“ßc/ rL^;zW(Á<W*ÒÍ›»hßõž¢T‰ÁÚ€û½[‘ Þg÷ÖGüºþ:Jµ-|,Õ5ñòX•o›ðžDÁˆA¬¡¬•¤hƒ-*ºË ã~tºm˜[‹|`Ç”ÎD¤WZ…0eǪY38¤q” íºöŽKe«ˆ¼iN¶.”bLW'íg8îk™mÐ/¹€µïüòmìz `5LvÕ†ûN÷®`¶—«b“â·Wei¦Wî!¿n^2ɾB쫱îxñÕ~äzoZŽê»’!&ç^¸Õ3ä6UËÄgfòšy˜=@Á„S¦G×þªqˆˆÝ×k]©gd¹“q2¡L!áÛAd\BÆTçdNüGœËÒ; Ý½|qµOå¢WqEëÆªV ß Œ`jNZ‡Y-îgçe‘³åG=9¾¬ÌyàÇO2s±0FøïŸµÛóƒàŒžÌ »j2¬U¾¼åžû²”y_®4Ø%"øñ¨Õ?A<½VjM¡º±â›IxÈ’f<bóÓùEö½vTÛ«O…~/ ÜìdÄH/ÙgÕUïÙ$„¢/qƒæœÐd2ÌòßôÞ½§ÆAy»VsÕ,½Iž© ÷“}Ç£7ß&íú“EMÛ=ÇIßÜî*ììÎÁ®ð}E =OM {_ÌÎç¶øY¨ã•%™b\6)òø™‘ª¦¸ï@sœÁÇJуùÏFÉ:61HUêùüNgá©Ìêâ#ÆÓæ²ÇG²ãI5ÜÐë ôÁVj¬s¯’>„‚ÁTf’®àÐSl5F´ŸLASŸÇˆ»lYÊ}u^Q|ûEàqQ2«Ô£Ÿ~Nöç£àuž¢ë¾ìÁh˜†Œ³Yu¬šzçJÅ L3]OY¯£^™Us^rg7‚nxH«¯º‰5–Mî›­/"ÉÂôÙ~2Uó>/b 6Ðóð$!¾ÜE—JJš°ú²Y{ÁFZìûžJ#þúÊ´LGÞ]EåË/H‘‰zž{[´$I[˜¤•6 f>ËôF=Ié·Ñ åôt+ ¼ÛÔ'~«|;¨_Z/\׉ÖçEøI«د‹÷K ºcÔñ¨óÍvfòÍåGÞnåñ}HWû×O¯“R¦Áo¿b6ge`Ÿ‡6ÉÍVÃ*8¼Ç·‰ÍžÖSe”ǨjóY¼Š8™!ï å®ú‰Ç:Í'õR4ud/ÄJUÒ<ç ¯‘~eÍ ÷þ=䚇ÜIr”íÖþÒ¥ì&ÇÖ‡V´þá’Qx¡ll“ñóÈŒïZØÙ/ÕŠ,VBשwN1¯ ìdÙפØ-erµÚ3¢5&v©CzŠÖú?(&‘­&6ïõÄéÛ¬®ûÙ?´ØxÙò[c#tä励íŽv Îr;Oë%m2}[ÑQØþÈsjÙ¾Y+t|פñ5ò¹fRXv–Ý×ÜÌ‹C¶Î‡å‹ºæŠ×„4S8åáÝù4ÝÁÀ µÑ 4ï“T˜Uãy4ú:ÊÝÄ& •ãDÛ†ÖÙCê¥S¥ÍûÄsœíº›&ûE…[h R5šW‹#¶{G0ùWà¦Ç,ñ÷;~0ô½j;ïmi2$l8'ŒmȢ挩‘ÊLƒÉJÔ3± û'ɺÊvMijÀ¯ÔånM¼©Xšz­úÐ{"Ê“$^´áú߆K(Ç(áÜc¦,ì{T˜²çGg}͉.IRs°P¥á:Цg®Æ<õìîz#Üà9?žÖmÛgܾ..¢i»­û5á×w”¦¼ŸjÓqë.ß«VWëÒEâfº(—ظßqì¦f¸1铎½ö£XÌΞc¢¡R]O/ÙiS.hsV¿!Í{gä½ã*íÜ®a¡zB(Î"ÇKJQašLÑÝSñž×Œ^Ú–Gçjdu<Q¸nvL(óçGúµ‹höûZaºÄYšY’i9R¾®Cg°®«‚é~B‚½ êy¼U¶K=5…ÿà©åSý™Î{T íòòËþ€¢òÁDzP2–ac€»(€¦±6 ¾õÛ—+í·ó–·3Ÿ„ƒð„¤Ñ9k;˜¯Äw/Fç¶­¦€™Ÿf¹ä¯å¼2•#‡Ð¹Þ­,è…r„ædú¶18à§bs¢D#›z{›£Ë预r!—ÑŠ úJ…¤³¢‡TÒêát‡ÿrTyé‚?LÍxrkÍ\“Âì¡x.Ç7ýªVV2yÚ^¡Ö€‹sLÁϾ Ø2Á&諼ýà–çþ.û…tìl¶d~ÕÔ7 cÕm€¡Ì~‚·Ökõ:˜¡‚ÞBQ>À ~sÃM½£¨¹œhžÁmØp›ƒ'Ä“áå@ðÅ·æ‰Ç_@m/ê×Í=ˆ¹Û¶ŽgzxAK*×ÍUbo«7á`›ÇG9çFö3ù|Wßä\û×μßo±ìbU$Ÿ&"ÑGÉuÝppZ÷ô‰ß´U ¥­çïÜr2ÏlfJØÏ‡þty}é‰+ór+ÚÖò|é¦ì23ŒßψèË«XXyÍ\é÷(ƒÉç€Wœ ö…DÁ,!ÝÜ“Ž{z÷Fœ…Þåë9T÷cÞÑÚ÷y›ÑÇÌy–æ>2:£ÜsÒdhiôñ1žx ª½¾úÔãÎ4ÛL(õLÅa5ùå;ŒÉÊûiL0zÒ@¹‰gm·6ô¥Ø™—Ò K™JÓ1›xrû³Ú³ŽÞn5Ñ8ÌIV»kâ0É©:Wƒ̘"„|È6K°¦Öµüfv“$U˜xG°§ÿI$#`r¡Ë°«÷•@çÔ#æbbÄ(UÖ¼÷$¡í÷½Ð4>ØX$¦¦þHÞ×XÞ Iï˜!MAvÌ{~{¸öÅþåHäµ­¤•)ÅxîvÛ©óéDd<Þdd×´*æ©f´HS± ÍûªxFééÈg]iR’u²JoЃèc^ ÁK$1pÊCÈ›ŒÄA€¨¥÷­âaûè¨V»4Ÿe§µoÙ¨ãÄ/»˜róMfoÀtV~+”¨ß6²¾Eî«·ÏŽ¸¾-¦ÕÖO )vž&aaKÑ6°-¶ÀpBM¬ÙÌž.ô"íAÉÃÇÖ}ÉËzŠ450Êg¢¦ÇóâB¶pÉé8ëÈzñЏ\ç$¸t§oÑ¿QÔ¼UYÑôâkðŠ©ìpoÿT–â:¼)k.¨vld|¹Ãu;¸ì\)Áúùèkd_tìôÿX…LU endstream endobj 304 0 obj << /Length1 1387 /Length2 5972 /Length3 0 /Length 6922 /Filter /FlateDecode >> stream xÚxT”ÝÚ6Ò"’HçÒÒ-Ý Ã 3È Ò)Ò  4Ò­¤€´´‚tIH« ßèë{ÎyÏÿ¯õ}kÖšyö}_wí}]{f »¡‰2åÕ@!1B¢Â@Y€ªž‰•(Š b$\\¦p ú·„Ëꎆ£²ÿPu‡‚0X›ƒê¡€{€¨8@TRVTJˆ2Qî²5'ÐÜC!¡h.U”›;ÜÑ ƒ­ó÷#€Ì•‘‘üPv…ºÃÁ $@„q‚ºb+‚A€ ‡b|þ‘‚÷®ã&+"âåå% rE £Üø^pŒÀІº{B!€_#ôA®Ð?£ “pLàè¿&(Æ ä` 8ŠDcC<¨;[`¢­ 0pƒ"ÿëþüÙ€¨°è¿Òý‰þ•Žü ƒQ®n ¤é€ÁP€†®0Æ#!!¿€ …y‚àð»u@CÙÂNøg>4Øî†A £áˆ_3ŠüJƒÝfu$Dåê EbÐ$¿úSƒ»CÁØ}÷ùs¸.H”Òïï Ž„À~ñp1CÂz@µÕþ`°&’Û¡€PFRRB}€zƒD~0õqƒþvþ6cgðsC¹`Ø1 pûAâ‡yBwh€ß:þ¹"@à` ÀêG’ü;;Ö …ýµÆž¿;Ü` ÄÒOüõúד –aáóoøï#±P½gj¡-ðgä9UTPÞ?!1€Œ$ *** ’’ü3!þ§ÿˆÕFÂP™¿ÚÅîÓß-{þáïðþ™K…e.Àûo¢?JÁØ7Ñÿ3݇üÿXþ+ËÿJôÿîHÃøíçý ðÿøA®p„Ï–¹¬ ôPX- ÿjýKºzPÜÃõ¿½ÚV ÊHG,£…Dïïüe‡£5àÞPˆ!vú‹5ÙÍ~é GB Qhø¯þ—+2° öAc©ùÛÅjèŸuÕ‘`ä—ØÄ$$ ww ö¬±+ €Ÿ(V•¨÷o2D„‘( 6€1C¹“ü:XìM&†»ƒPð¯3Ãüò’ü£ØÃÝ+·ßTÀ–ÿ{ý[ÛP¨7L27Ë…9¿ k»¨VföZ&\ZîˆN°ê’ÀpÏ<ósÒ%ÊÔœx¨byysè©áliÄø´?3ÿþň÷ƒ7ÙÁ‹iZyõÞU•C¡ü¯Ço¡l“ã¨ÔÓèUªƒD#V {k|kžd‹éËp©.ñÍÊWèÍû2»W@Ñ%{3æ‰rnÇ.îc+vÎeÌ ÕÊ8jwëtSm³Ñ+ÜÇð¸s•¶XƯ>«Öqƒ?¾Íîë}*~T Ó]%ù2‚†‘Ö÷{îPR?#]bö½F4·ŠÄ™jijc¡k÷"ž½Ôâ÷É‚¾ÖÄ~qzG}ÕàÞ5xÔ¢$¦ås»XìÖ²L¿ŠÝlJŠv¬~Ê©ÂUÁ9L?¨GäuãÓ³k;~êM¢ŠKέtqçb‰…ŠÛnŒÝ¼°’™(*f“*îÿô\EÒÁæ6³˜¿¼›  aâ¢1ÔÆÓgw^öº-(|ú¼^ny+y²Õô¶m°+òŹÏJ7œ`Ùž¹Û³“ب-qöžÊœ_]S£3ƒê´ã‹ÏŸ 4ÎËÅ7líД»¯$3;Æo.N‘oJ5cª»‰“®ÝJ6\9h’’œÆe¿”µr¾BòÝ3ù&ùTé ࣅ±ÃkjFŸã)kVou}%°Mpp?#¶ÕÉë¸ïd_¬Ïss'Þ°›p¹¥b5|(5½˜§òÃ,ÐŽ¦äу<Ø“ïq§›'õy–ʵQ÷Ñ)«vÏß±¶ßï‹cI=ö¹»'uÓ[«þÛþ!à¦l?GX!¢¼!^¢Eõc]´™uH·í¤‰Ø½ë¬áä+©¨õ¹Üµ`7Û­zý·ïeUÔÔ<³á2â«/õ‚¸eüðI£ÌÕÈN¥©É@cõ!bÓHa'XÉBQgž¾`ךóqS Uí7M·Ã³n–4-5,"÷ú}Áçx…!Òß= Å?|±4|료ê¬Ù´»icñY-D¯™0ÊêÎRñqDUUüÔ»KCõCÝ+±U;±æ/›KQZ©~$¢ ÞŒ´;´è™8%ØÇYÇádV¬§xR»«¸œìÆ?&åI>à ¿`(ŠXÕ¤HVz¡Ÿ$a{(žmº^+ k‰0ùE†6ð…Õ‘U¥&7&¸Èï‡i’¾ø–dìûœæø¶í9fK¥æôáäîZ_FÆŠJêÐÎtÀ·×}s¹h1ê±ÏâJµ]åd¥’ ˜M:¹É$õ'”qãšNÔåy†½åJÓf€¤’Á†(õÇ‹ .¸ï3øÉ¥ˆâYϳ~>ÿÖ82»5ùÕb;ÃÙÈ»~|dC%H_kD7s‡…½IXY±åËd7]ï ‘ã.WìÏÕ.Ó·›päËÅo¥^zØâ˜D“(KeHªÈS-x"2LW‰_fÄ׌¶q„Ÿ—ÒØˆ øE÷ (åM¦ 94þÉñóž·¨%¼ÈcëIQ¯ǽ5‡—¤×·;#òòŒ•~3Žw©ÍŒ˜3T­ÛöÔßßäД -úL¶O”—kS/š¯Ìð:6EÀ³šw­Ù|êËRŒfIB*DÆlAë»èžg·'ÿ]“çìÎP„¥ ˆ·ófwjMÄ£¯È‡Ú†9ß ÝîûaþÍÑjרúîQ|]ªï¹5Ä0Ý7ùÖt¬Ü¿YAUûv™q¶Iy-¥ùM;ÑQ3¢u•ocìÑ+` 7Œæ¯{…–ÆÁŠ:p¼\æ#o²]h‰òI—ÄÃ9žŒu„pYgוw›+Â;©©£}7¥ûzý;  ?}L3Ÿw×›»öo<]f|XüÎQu1ñ8ñ`öuKæ5_‚ÖuÓ(ÕÅ@‘Ì£–ÄÞô‚b+ÿÞS™Ø>÷Ñ)íÇù(ç*³=3oçüá낄âÕÓ¯¾vkg!ÔtŒî㉟7 !Q'mGíëc$"B'áJø[†Æã±L Wò}Ù`)0ÍßÃ):ƒˆê且—¿‹qþX^@ÌŒú2”iV².ßzÝ¿ *µ0Úæò ›¼yïUó¬å ¦‚.qŒ¶°§ã¹0þäíè^ëäÛ/XCÕn«¿Irs«Òà//9­YL÷½ ŠÀ“‚ŸVisÈz¦'„„ñSÜ%ü¶q¬ý‰<—`%Š•›—Üþw—Fz_<=ï`gÚ«¦þ¹3W&&Ôp7ÿ‘ëgôÝ ³í`7v»Üb£¶ùÓ5ž"ý,ͺƒe‚trÜÞ’á×Î6uÔÈcqK…{ù¾Šsj{Aòúá×Úd¬Oü28Xñ*pÌIóo=îv)ñ¿@­Ä\à|Gk­v‘Å«y­4_ؼ"mgN Û…<óSO¢,ì~ì<ǸœA%ÌIg¾¼éÄ„É>óuátqá´¹³[E‡†5å«¢lUÅ·HS::þ.žsöÔí¨êY²ÑFF4¾Ãr ˆÛñµúãg,¦É;4Æ¥ñí~L)S%u"wiŒÞý,pÕ‰óãö•»;Õ™Kìz´j —z7J_·›ýü ?ýÕCË ÓkÈ#Ì]æ©X—#bÅR1WF¾Ü¡QØIsÕ^êòJÁ…ÏmÞÕ*{®y¿2fÊbö6#¶l 7zÉ»ù¶©R.P1åþø@}éÀ3>ïh ÃòÄè9ç7ÎWò´LŸBf²w Jâ`>Jñ2¦4ò)–).~½-–n¦ŒíÂ\9UÈóåt‚w·vÆjQZç«< *&ÊÎ(p8š“º§És¾¢ú ­Åÿ%ßál»[™T|5S¼Íß² ëoèéµÔ׆‘=ìóän¨ÊyYšoöøiƩم!G«ÎHD„@yÛ„UTŠFXΛzF ‡03gêÖÉ9ºɼ¡æµÒJˆEØWžîËÙOÑmn(kÉÖU>[¶ÒbuM®_iÕê÷kò í7¶µÏd$$yÆ©Qò>MKmîÈœIÑíˆÈgüi3­á"—†|kHWŸJ$áÙÜY¾¦Î¬¡Sí#ý:ë&|íA»¨ UâCSzßÅ ØõÍëw'ÓRb/ƒ¯ÙßÁ~+«‹Nßãi»ZþÈi`|"„h>ðAIÕŠ¾˜ ¬tŒò¸'%žH¹Swä¹¼Óy¨³`á—­7¹(®8ÿ¤TïÈæ«¬£-•ç­„pÊtË9‚0•[I×£‹-iâ… —µåóØM_D„o4¢é?ã™Ù¬U†&É[Æü¸q•$Q÷:&È=H£à#_Á¿ì Š×ñÈ–¬Óˬì^“ài¸è-J½<¾öàä|6o€E7w74ß0™[ ƒ¡À=óÐô•Óq¼3<þ„M®Ñƒc»VîÛ“Ô´.Ïö¡ÃËSÕGµŠ÷B[E’48$Í„« ›„¸'tŒ&ÀŒƒ“åãò»Á_ÐÛ‹{¡Þ¨{6Ë3eìï¼.% > <Î ÂìJP˜¯ •Ö TP6V¼|}É*Sk†ɬœ.íóÙ\ìI&2Í‹U•¸Ôtw\1#ì¡”xÇù4–Û¿:¾¾3†øQêGͲµYéܧ;dùU„zžëK¼Î ˜âÐÕ%Ù—Ñä—½,››^#Üw7à f™¢\É…cŸÇ½<¼nlÝÁ0–ŽÒ¿ë|{ƒøOÈfO›èKšYò×r·(Ãè性yeg¡ñ5Šgá«4÷3î°éD9Fâ—ön½è*ݤ QŠÍ6­HLñ€Î8¸útüít>¼]=òP‹ÈNŽ&8æºê‘–¾š.nÝt`òT ªw (’HEq#dN,› ÆŽ'×µ56e»0)³ „&f#à>rg1UWëÂOåR Á.ß\ JÛq‡,«xB_í³ÑgSÐuÝ5+~5£¿ ­‹‚8/ gÈÅ)#H3n33}IÇðX¦BèdÔ¥jõ׉3 ±Ò~½6G±®Í9"‘Œ7ú¾Pæ¶ÎÄÑB˜<[áFZ¥ý¸å…r£9ÙÎ`ÏPï1Ì‘ÒPDÝíq6¤Y9zÉ‘õÆ1Y%&'v¤wÎp?îDNÅÖ(Þ 4Yük'¿Ê ñÚPd+gã’vùÎÏ<;Bèû÷$·Ò9_/Ù‡ÉЉô®ëÕBƒrgßôìLT×_c£üì´†gSäpØyýj»u§ÜnGìîøÅpZŸ>åg KWYµõhvMã½ü¥J/¸ôµC·É0Eõ³ž„¡S˜šEVÇ»ôÌ5è?G\´×Å,d`i¥Ê±‹ž†qLdCùÏ–|粈¢nŽâº“ý„i’¼þkºIݧ<Ü8+jºZ¾Y”„” ÝÒäÛ\DZIp+¼GüOÐUhï½B­Ü»:T«k‘³Ã{NÅ7šïKŽÝ Çq\w2²¸OOŽ7rï&Ocõù |ÉÚ/ýõœZ¢L6šóÂ@bÉp-Ì«Ûn,Zî³(=6Äa»>þÕñá` L½WÎCþÇ <#œå¢‰Þ›RÚ ^¹nðõË®=õ q±[Rº_ÓR‰¶$ƒjšÎ•*žˆWuŽ+-Qù‡A“÷œ•FßÙÆUuO Ž›è½Ó½®ê(b ×hZÌ"à&{ͦž¬0áß gOÑKêùëâÖ|•©õxšÐæ ŠáùÔŒÉùÉR9a˜OÌ!ÆÓ{JÖb”HïqßÇŽö•)„#¹ì¹ƒÀ惛YD•÷'I¯£UIËWª”j:lDŒo"aY¼ŽJ^6°"óŒ¡.ëÀG»±¢_·Ùl)”Å=+®÷¯dyNT±4ˆ]ó$%ñý¶nÚ´øm8÷‘ÖáöYÖ5ë,_ŸÑ¤)N|¨hł˔ÄSˆ±òg{ÞÞp%¿y …Îè5…o‰U›>J½?›Í–¿ÿþK¡[K®ì—vx×GÅAªÁÎíßrH Tùþ •X’¿Ðî±¶ó§kwƒ#=ðœÇcПŽ]aAü;°î CwÛsÛ©Ê”›|SB~ñÍÕÓßÄ(Kºê(¼ßníߊ2ê%>ñRqK\i»2¹jÍÍâ˜)Cd9žùÊ5פkûL=PŸ!x3´íæ^â¢GÚ¨D¨Ôå~ýL<5Ñ=19ßèáb ÞãÛq3î¿Xœ{]ÆqS¬Þƒ$]š$q!Ð3W.¾ÄÃDL[Ó\|šþiÓ!ÊèÓÉaµ ‚:Ϲ÷ ÀÈäKäɈC¹´òˆK˜FÇ÷>m~LØæåê9½ú‘à*Ô\l‚J^EÃG+|Üoþé…ì“ÙœØx“€hÔÌÛdŠN#‹–g¡W§ã‰wø |¿·ƒ›ŽÁ)åVÜ—KfgGiâ?ïÈïJQ§XÝ̨;»x{¸#¨,Ô^ÒˆIÉV¼|“±LfB ×éóo¾2m©ŒË$ünP”7e›`úıåº`«p¼ö̽ìÈòQßÓ³Æë$¨¶˜“EÛeWÒµåI2ìó……f9Ý^`{ÎB…‘ *¯diàÎÅy[®œ£ÝmïBUsq‚ôñòÎbÜím“èìyR4)ô~AƒWí“ó#ýé… 5ãý¯ÛIóýDcîéMèF5õQÎÙ¤¸|Ùº‹dÜ¢H—³%žÚÕÞð×>ØiT`Í&Â;S-V<»RDÇINÆ~i¹¨Z70l¼Ú÷TÊQŠÇ™ ¢ ¦5Ï rS†)w¸{EžZ•[¾çÖú:žwÕ“Å£HÒuÑ9TY!¿>ÿ8÷ù"AMðæ;èURJ´qbå«ð¸„’`Ë~a±§[($t_Y¡á\x¨†ŒÎÓö > stream xÚtTÔ]÷.Ý)’¢ Hƒ ÝÝ]J 0À303tJ‡ €€HH·´ Ò-Ò)) %ÝýÇ7þßû~÷®uïšµ~söÞÏÞgïsžç°0jë=‘±[Aá0Ô>^Q€œ†¾ /€——Ÿ‡—DÀ¢E9Aþö°BH(&ú„FÝùäÁ¨; PusðñøžŠò ‰òò@¼¼"áQ€<ØjÐà¨Âa$‹ÜÅ µ³GÝíó÷ÀnÍàâþ# ã A@­Á0€eq¾ÛÑìЃ[C!(¯•`·G¡\D@°3’ް“äàx@Qö]‚p‡Ø~ Ð;Cþ‡€ oEþЃۢ<ÀàÎᵆÀw)n0p·;@OE åý VÿÀ øëp|<|ÿ[î¯ìß… °?’ÁÖÖpg0Ì ³ØB -Eu”'ІÙü‚ð»|°;궺üÑ: (£ßMø×|HkÔ…äAB~Ïü]æî˜`6rpgg …$øÝŸ<±¾;w/à_—ëƒ{À|þ¶l¡0Ûßcظ¹ `PW7ˆŠü_˜;Á|v@——W$ €¸ žÖöÀßè{¹@þòývßÍàçãwØÞñƒÚBîþ|`w…pƒøùü3ðo‹€`µF¬ vPÁªß¹!¶Úw÷€zžóÞÑÀûû÷¿+³;†ÙÀaN^ÿÿqÅ@C#cY®¿Fþß ¬,Üàó„_ð$È àã „î~ÿ®£ †þÕÇ?rU`¶p€ÈŸíÞÓß-»ÿÅö¿Âøw-Møs!öÿÝ”W×úîÃ÷ÿM÷?Rþo,ÿ]åÿIôÿîHÑÍÉé8ûŸ€ÿ#v†:yý…¸c®êNð;-ÀþjùSº¨›óGUPà;5ÈÀìîý„O€‡WàO?©õ„ØhCQÖö²æO¿Áo½9Aam8úû…¹Ëâåý¯ØÈ¬ï^ä5ÿAî4ôï}`Öp›ßb >€°ÁÝ]ßY‚¾;UÚ@<ÿ 3ȃ£îRw3úlá‚ßËm¡¿}š¼ü Ý?LAðÑ;zaÿ0@Ä?Ì;0òæSõ‡ù¯Ž­Ýˆ;ùþA­»qþ¶ÿx+ Oˆ5Áô$ÜZ,Ä¡*¤ñ¬BæÇ“ÕAq÷AԞъ­ûšNœøù!Nô”LëøÏèóÅ{[ ÂÛ:Gc*^Góß”hQªéšFl[«enßá{[Hu7ÐOµ––g–ü0;ªÝOº_<ޤÇ8¨¹]÷W'Ò6”ÄY?•~°ßÅe«ýÅC„1K#,ÌO„Ò$“ÖT&[)36ެŒ<ÜNx¨¸qžÒÕüÑ=SÌ]Jy°¹Iì¢v”¶)ùv½ý)šå0`Œe¥]æò5{ÐQcÈ v+d¿žÔc±t••á僕]»OÊ=‹˜]ɘr‹¯™öñeÞ{Z±ý0ãl‘/ü5¨ŸçÍ/ÈVÜ^R¢D!¡ˆOØ9…¯8ò+¤Šç=¹š¯zeïH¼¹>21},%»/•¢V[ïÐç߈5~_t0"Ê-Ûôp9@7-#×ᛓÅ|ÐªÒ ·±ƒT™…‘4jÿòÑÖã Ã\zß§C;ýJ"Ð,ÊäþK`#°þ˽xàZåmO‡ÍE&|’ï°»Ó¨/ÚB)¢s’ =2£Lä®ÎäÆÔ»HzRX@“m·Vî‡:hX’ö¡eM,6;N·ŒT!öÍF’@mÇ®ë—éûÂÍnCªÅ1"h¼¯*AoS“œÒ÷Œ’oCTöÛÆE–ø e¹Æ˜[s‡J—&úDT÷=m÷ß]ŠRÕk©*î¬v?f~S}­fbÞ¯ÒzIýŽá½á´NœÔÚü:í ¤”ÿi±[.zaß ¥ß½*7ÿœªF´>,ç$‰·¬vT>Ð(ĵ屺w0ö¥d™. XéÑQÝVѯ•YãLj 9îÍ\¼/N€URL5«9›×÷t2g·91ï‹u* ÐáÝ¿GËûŒypcÂØŽÓè%2fKëfV†oo|c F—ÇÓf2îÄðñÇÕHñ^Sî&lÑ_"Mkó·Œví©îñÞ/M/q@ ˆÆÒòðÚºœ-Y”Ž'“µøË„™MûQ,¼»–3áòV¹Âc]wög`DbqÀýã™…ihŸÑˆ<žÙT@ùwÛ £S~2q1³ Nøò¼Ñ=݉µœRz^Bé94E¯!‚d­í¢qeÁã”øV{Ä’pýžÏ;>G•_Q†eKúµcfì(Ãâᨠ0£Ä,Ãî°óE¨ï¤'_Üô2’e!6dÄ|_ÐM…juô»MŽ ~®­QE#ªÄ,ùÜ »y“ÄpŒau°Q”mH‚ñqDÏ?P븨ì#ñ:ëËë ûEc¤’ Sõ2Ëi\÷@2ÓˆýNƒøíÇXC!¡{eö3?HÁÕŠÊBa©Ë¡?²Kÿ¬«{ÍŸ=ë§aígÙ~—{ý"E©¨Üh?C˜MzV‹sOqcÚ½^^¦Y€B-´\2/¦×é:2GÀý‘|h&÷dòçw9hµOŸ ŠÆJé’!ƒêŽÑÐCñÉc¹Ͷ›»¾ºS•†U½\Øšêl»1”0#2 ¡öï\Yй˜=8gÂ\{xHÕR/æ0µ¬|Ãu6UOgŒ^+.àðŠç1§ÀÙ|;nn§éd(º¿¢L8wÁž{ÿ‚aÄ™çõy…Ü,u¯äè™ b…¼Õ$Ë»ÿÍ€<9ûå|±W|‘Tqùì²- )Bƒ*x$H«Fv6~åj—]`˜÷¶nËï{O§ölŸ Û®‚ýÜçÌËGô è0F—?hCËK'We¶ÜxÉ( ÐÅ1IR ^ÕŒŒÖSB¨Pžû8á‡èyþwÈVx6>ÚçKyÔÁåxEíaà`@²¨ß4Y“PcÚÌv»ÇxÚÉö çÉ…â ï Ã@(Ãw@¦ÓHZÝô(7Þ­6mÍ“Çl e‰ðžƒ{ÉsU½«?)¿á}å–¾BX9¬W7  4±Äe³ã¼ÿµxCÔ´"Èžô½É„Rcb½@¤rÑan¾^þhç]\¶§zË,a&L˜]ú^w­VáHû¨fßȾ¦mj ÉÛL‘ŒRe*«Å{¶zý§ú /“œB…‡ŸìÏ´®¦¼2Þ2~V—C÷PQ·µ·MG\0¹q÷–“I-£:H4\ÍMìÄ`ŠKkB#¼Ó¤@®Vµí •SùSÛôµR7Ƶ»äKÀ¾JáȳïÅ­HH¶lŒ8G¢O{gi ^EàߣË%"=äîc™¶ÑHïÚ¼šÅÀ¡ËòÕj^xÚ¡(3ø)n<ƒó.eêGW¼>'r ÄÈ$µºñ[ù>š–IèòS÷R^ØH2šÌÆn‰4hDèTá & 'lª—ÊÐñæÛ¹nd׿0(ËÏhYƒUöwƒæèUŽ]ÒeŽ (ì9ë‹ÜFØëäN,Hs+È  @“J¬«1(Ç|.{Cqæ" }»õ­©Z·k¬#ko©]óš1¯«Jv±Ò,PåÜöæQÿ“©3¡Ô]fdÇ/6 Xu¿ñ>oN‘Ñ0˰0þ)Uëiö(Z–òsf y±û"{Žåë§kö‘V}©8Úà”žûÄ`>u,žÚ~(8,ô»ò‡’›ÓÇr1O,í$è¨qËlç9ôª”Â.é!©*n ÷ƒáRŠìÇSÚ"Åq¯jH†•LAÌ“Y?»ïÕWZ»Îî7 'Ø‹n9<„â§É¯ZÓ‡ ;Òóœí8m—·“ú:ù’“ÇUKÎæÞ‰±¥°ƒ´ÍÄñ—`§c•ãgN¦rWS‹¢9‰K/ÓØ|ŸŒ!ƒ¼B)'Ñ!Ë}òo ä— ‘CUü3É$yùÙô‰g¼Ù‚‰0†ÏEî$_q2ÚˆqЯ\j¹@ýþ‹»C-ˆ^1U±úw#‹ª ›£^f<|çxËhlì—l¼kkh¦…›÷4šP¢ô¯^ص.tw¯+r9m"ÞðORUqÞG¡ŒÕ¸ébª3dbO’mõæuÉŽ  ¯bÅök;“¥wÚGBœVnZž°ùúéû¹¦n"¤…Wnq·‡g¹1ö—•p§~vŠœO·6¥Û¶! Asw*߽ΩÏäGæAjä*³Þõ…ï§WlÏ—ªkTh-lE)ŠP%VÐW«(P øqi­E­Å”Xráa sòøtoÔ·©íJu=MbÁvE‰ï‘ÝŒ¿ £C|{§Æí*q,4Ë&u0>QωÒe¦`§%ÌšÈ\µÄbÛˆK[P­™/Û#X2 ÓÈü>(èºÁÐpÞMúí¾iRø6Ui¶åun[ïPï+È:Y²ÎרÉt”ŒWVùÀ,@Ò[”WZ\nšì¡sïÏ)ï±(áÙF&˜XÜ#b ]BŸ|Í%¢0  ^ X“·I+-U¸Ã¥t8qŽevÇléÂ×# ŸÇ”_©AÏA5í3û U¡c‘OýÁñúkŒÙ82m®ª½Xå3+ܰÓ±9Y۴žk+Ý?(:T¨ŒÉÆ„† ü›>[´aëî²}±<À˜S(uSîÎVÞUﲹŞè7ÅÃ!ðÏ;ˆÃ€Ï–\ðgðv4%?~o採™¸èÊw úß5½oiR̾Ha›DØ1KÎ!pÉ‚d¶ÎdC½õêС›sÉ¡^ÇÁØZøÏ:3•¤Ò1GJÕ{vn×¾íã8i;—¿ ¯ÅÙ-v‘†q{´Ó LR пŠvyj¦~L§ÞV3ƒ_àÅbº¡<Øk¯¦)Bá]U5Ëýyëß~H6tÏ„Qœq+~‡z™Ù*[\›‹i’x)Äcç3q<š¸E}ÂÙå)ê ,jeJ…zDzf¼¡}è°Iä%w4O$gå=ÜLó¬®!E¬r9QˆÂ±-áMîJú­Ú–ßAÓÛU°ÈGïy£VdNß›!ù lÚJÆŽ(!°—}º[mîP¿1CïùrLÒJ*¨J¥4^+TNôý臖jáÞiîIõÍZ "y|L3R4¬Gø‘cý H*œF?k‡ûB'ßd _¥þr#¤ZVa[µ™ÑøÌ Ÿêk…–^·Ø¸¿«¢ˆõ—Çgù%ÖÖÉ´Ÿ'SšmÔ{r­x»“úZÈ£ß}·ïzöm¯J7ø¾jA@’s\©˜PñÕ4í²˜ÄIÅÚØ@Î6þ4{2…õG¶‚sò!Œ+†GWiùv@& RU‚ÖÓ•»J1zèK &–\‰[4(#–Äô|]sÉxN™ÛCDL¨1 sœ2.V~:ÕåGbu»ÌOÜœ ;Š@rp˜SÎa@OŠ’¾G§ñQêvM؇hº’ºËzè_Å}Zg°`©p¶uëbr ûªØZ…ødÙ)dE™ ?‡q§ú ›=*—Ëä¦n”@7ìeâÔ Ê{6^×Ó›l÷¦ü;§eÔÕìkÜô<í°(9B¹†ŒƒCõ ù²ö¹Ñ]:=½A48JË*¿Øô®¾púòè2ùe¤ë¸«•!ú¤U"%—_­m«H]pò®Ž¼Ä.Ç8µ€.oÕvŒGßŸŠ£PäI7íÀ²ýiÄd»«}WÍè:žï 5æ{ÒZÐÄ%ÝœÉ# xpî!Þ¡@#|b­‡à{“ä"B+w3°xÕo]ØÙñö1 ®rÛ¡X©è殜³r míG~ù†ÒìíÎ ·$Cì—Øãò>3•´/hÌGÐV2È%I”Ç6›­;g4å)åö¾Ob@6 #{Ë!µ‰4UCåÏî Ë<}óF홆ýƒ$g…S%ãŒñÌ“åL ±º·‡Ô@”k acU™érPrfºdÚm3MjÂm±Ç+3I_ËÛ+úwý½ŠÈ5¥ÓZù™ñtŸïáLªFq—WD÷©GàÖæt./›æ¢O~|¤tÐ$:¶´úáòð«Û!*xŸßèg«.5Ö¥äÑB&‰U¨-I¯)‡eÃG}[Jô®ù€“ìNX¸¡C‘¨`YÊÝ]‘ý˜BóÍ›é¯h±YÃ9Ö³Ú=Y ¿4 ÍX=à¨4()ót9»OäƒØ×¹¨žµà¬-cð eT¯UWi<šôqiþn‘ü¢þ*ð!3yšvÃãý F¾¥Å ÖØ7V« çw4Ûð`Í@ÖQþ- Ñ—‚šO3¼'š8b¹G‹EvqÖd‰ÐüŠ™áý—ꦫ¶â5¢ñ€ÃttùÊX‰am¼uUµå^RT5ò^VÆöòK‘æQ‰¯YAoãÜ¥Ý~­¥:϶|J¼¬ïR.ÿËûûá|µI±¹Ý-+¾aÁx‡¯wVdø*pÝ_.èP ‹ïón£°·?Ê“ß5Û%:ɦÞñ7R cq?ÞT±ÐYª.´|½KHë²öR%œ‰ÓtÏ ¦pÚ\á =êb†lxw¿KÄ9·‚’©¡H6%™Vÿêá;V·]jðŽ‰”OcÊi®&~â"?ß¾Êø™„%Ž=ˆiϧrÏÅÆØnxS@ñè‚B}ÿÛ…ÎIº¾Ò«®(é-ú…ëzôsq,õðêÄr¨¸·úþª7-鯬ÖÙ.ÉpþB 3j=VÒςƩ¥ß‹oºi¬8àÔÓ[¬Ì•-EDÏ ‰të\¿—¾‹6¶-÷äŸ'(q}ï²ÐhìÉCO 53 F8ñÊBEÜOòñó{ÝlC0"0þ j[X]åÛàúó×el¬˜+£$>À_†àÉ´_@OrØcÑæ-×iΛ‡6ј„£¬47iQÉ¢Zð1PÉÛÂñÕm‘!“›`¦†EVp*¿Ú¼žúó™G¯0;Å–“×É-D‰@<7¯5‚jh€¥ÑFa{WtŒË)zX*•*æ$‚ƒIÔ«/"¬ê•ŸIúÞ#è³Ý4°š©Ä2’´ì¬ššÉê3•{*ÅjÜ”˜åˆ„ù}~áúð%(ûBÇpÿ˜-ÔD$P›L§YH˜]ñ¾ º´?²›;–y>„ÕÑAUó›äÙHœ{ª '£\‹‹*ér©+ÊbSâ=Û?B²‹0Nt½&±½{ (Öóàgt´iØÒ –äu¢Ï$fõ^ õ{z²å’‚1™–O‡Ý/™:0‰c#4ø, †¦b1í$J7'Þ5y^Ëü(§ÅM!võ½*RJ™”ܧ4—ÐJ0?ßñ9ËÝP–œ„=¯‰k6ÀÿµeuD 7 %}°AéÖè´Š‹VØ¿ ú¼…øDþ ZýÁ+§!“ÍÆvl’ø NÁÏo6­'wM¹Lv")˜Þ41~ñÞtQl×ѤŠIoša*˜UêÙ+á¬c¼­2ipZvˆ6Ÿ•nOì¡g…ŽåÅu5<”éãU^J Ý_þ"tòœ=ÜSÈçýzþ}v»qú/éé² !~³$Úq&;Ï…‚ E­Œ[[ÇöíçãqD-òC/Ç?I±$K Vk'áZKC&uÄ×"j 82 œâoŠÆúÛÕT§Ïßäû© #²,CôÊàCADþÜdè)ïLà O’¹ù2|¦+ î‚ÞÀ¯•$dÙúÙ¼§èsý¶—×nórxüü©3{ö †;è`®©9*Ã#ÈSÆáÏùBød¨7¬ì;¶ÊÚ6fiúËœD¥!æÜ;…åñö´èþ\9W·‚§´©6Výw?)¬î)ÐÆ“d0u~\fHËlýJÕ#àÆQ¹ÈÙž9¯\– ] Õ¯’UWj™¶§ß!”œ~ტlf}ëÀÞò5{œcëk–êl¥ŒTä Ÿ5ŽÇ—­È52çB ŇÄzU[HÃq¯'"Ú2ª­+g×$è~J~õÔfÊß\JÁ¬à yäuøË`ðò—‡¶p’ìE·w¯Rí˜úºzfY4ŠLs&õ›µ‡£2Àûãò¤u×ý=ˆ³+ÚSW]ÿ¬Cêïæœ/C8¸¾ 0RÅàvÒ`56¾?èæ"¥Sñ¶¿"éÖZëxáŸöæN=ús‹: -Ôb¶ðÙsrnbK¾Šâ'ìº\7³¡ Dù /U?òfÒ^ É&1>—®ÔAŒL”ê+J«š^»æ‡ë¬h{!¹Eíc³Ê4%n¾Þà¶0îxýÀY½î •FZ¼e÷ø<}KV”m¸·¤áüÓ ü© ôÑq žâ³÷Þ4d½‡¢ê‹L$ÓIãÛÔO[ÐO9êeåšZ¸#›e¨ä7(ݒœ¤‘>¾Ìò„!Îé ºx«¬ˆpÔeú>V" i>>~åJv 7r§¦kÅ~·V˙։ôÎÖ,±öò¦7äpùeù•s­ ì›Ú.T$½ÃžžÌX‰µ_òøÈí¥QÉ&õ9Û·ùÈçÉKÍøç‚ÖÒ=Ý´\˜qìq¦å‡rnìøhíÕÕZ“%Z0…F,ôôL_Ô.Y]fÊe)N«a—~“ ûÔ°^¶ôYX0ÚdYÞ»‹výQÝÂc¾TÔQ<{‹ÏêǦÕÔ݈|‹<Ç_KïÙTïoFé|¸W÷Öƒ™/ÑÄqM·ãCc¬t·MyUô‰†cìÕ6ÛË¡»nYûÚ@mŒ/‰ö¡"Ik‰K»qÝwÉ2;šW§)¦œ¢õ¢4>Q‡h)š`ûÕ¬–dì8¬†ÐÌêf;e‹|mCüÑ ­R^öÉ9$†Ž8±ÁÉf Z¼\ÄzaÙeo•Vâ”;“…~<\×(—|•Ìbü‘‰“f³Q×?fEZ [ÁÐ \8ÿöè*¡XùÒ&í=L^0yãôuQp:¥ážÈò@¿#é§z¬¢e=ÉÙ¡ á$å³'JlÌÄ’ñas·«æ±YÂϾ¾b|*,PÃÏ$lˆ°Ñ*'ÿü¦çÙtzmKMóHÊgĨ}†Êw‚*ͳÜ¢ŠÄÙ)q;÷ÐÀŽä5URcìæYΑAóÒ—J§·? þ?Ï”ô"ºÞ«ì¬w±žï'ô7Á÷$²äm-ÚnZÏ/E´ÑðÉå¼ýlcTõhðß}㜽ÅM ¡hv–Ä> stream xÚŒ·Pœë-Š‚»Û@pwÜ-Xpww·à܃»{pîÜ‚»ÝÉÞûìäœ÷ªî-ª†Y­«ûëþþÈI”é…Œl €b6ÖŽôÌ L<Yf&+ 9¹Š™£%ð?r8ò@{3kž?,DìúŽ Ù}G¡¬5@ÊÉÀÌ `æàaæäab°01qÿÇÐÆžðAßÙÌ ˲±:À‘‹ØØºÙ›™˜:‚òüç+€ÊÀÌÍÍI÷—;@È hof¨o Õw4Z2ê[”m Í€Žnÿ‚ŠÏÔÑÑ–‡‘ÑÅÅ…AßÊÁÆÞ„Ÿšàbæh P:íF€_%äô­€ÿ”ÆGP15sø[¡lcìè¢o€–f†@k‹“µÐÊP–”ÈÛ­ÿ6–ùÛ€ðOsÌ Ìÿ†ûÇûW 3뿜õ m¬lõ­Ý̬MÆf–@€¼˜ ƒ£«#@ßÚè—¡¾¥ƒ È_ßYßÌRßdðu}€˜"@Tá?õ9Ú›Ù::08˜Yþª‘ñWP›E­Dl¬¬€ÖŽp¿ø}0³‚úîÆøÏáZXÛ¸X{ü›Yÿ*ÃÈÉ–QÕÚÌÎ (ùáî·Ìè`gbbâbeí@WCSÆ_ TÜl)™‰A5xyØÚØŒAe½ÌŒ púÎ@€£½ÐËãOÅ#8ff€‘™¡#Àhbf ÷;:H 4þƒÎßÞÌ Å?fÓ¯¿¿iƒ&ÌÈÆÚÒí·ù_GÌøASIIZŒöŸ’ÿU Û¸<èÙô,¬¬vVN7Àë¿£(è›ýÃâOIkc÷ßdA]úaç&€êŸõ üw,9ÐÜT¿Çü;“!èƒùÿyØÿrùÿ›ñ_Qþ¯cþ¿ŒÄœ,-ÿÒSýmðÿÑë[™Yºýcš['GÐÈÚ€6ÁúMÕ€/®,ÐÈÌÉêµ’Žú ]²6±ü·‘fbf®@#3GCÓ¿fão±ê¯=³4³*Ø8˜ýºYôÌLLÿ£-—¡èöpä_* hwþ;£¨µ¡Ñ¯%caçèÛÛë»Á1&‰…àÁ ÚF# ë_C `d°¶q¹@ÕyŒmìá~);€Qè—èoÄ`þ8Œ"¿hÂ~#n£è¿ˆ“ À(ö1Å#£ÄoÄ `”ü@Ù¥#Pv™ß”]ö7e—û@ÙåÿE\ ì ¿(»âoÊ®ô²+ÿFlF•ßÄEõ7eÐøqƒ¸èÿ‹˜Y@Dõ Í@çfiüWÎÆòK 3‹ß%Ñwü T‡Áoò0Ð7´p°Ôw0ý#>ˆ¦½¾!Ðhìø‡˜ýñßKõoæ¿Å@Çÿ²çfýWþ? Ú ÿEì F†6– ü·¶_+«?*M&£Ñ¿T¿‘¥¥¾ý ¿[šEFà%åø¥·smø¿Q@ü@“i©oõGPCŒGY›9ÿЃ$&¿c‚¬M~=o±ÿÝK6PÏLÝlMÖX€df@Wó? è¬-þ€ öüæÌêƒå¯}ü­5ó@/ãïT¬ LÖNV¿.L“?€žŒ6¿9‚B€ÞþPƒê²ý­…´=¦­ÿëtÙ˜ÿ‘þ÷Ù²Š± ˆÑá@M³û]Â/ätøëÎù—(Û/¡#ÐÈàâþGøß)˜™AÆ4œTäÿB@ç?úÍjèÿ 83ˆå»ÑÑÅæ5ÈÃé÷¸‚"þõVâ`hcÿg—@'ãü±uùcY@A]ÿ€ v¹ýAvÿÍÉhÿ7ƒÿº^ ìA-vüë º{ÿƒÿz¡]†p s6†¼æ5mwUBø.ô;cï§ÉwÔ’©é=ì¿9= Á|¡®L÷_³¿ú2ز¼%Ju-¸HüìqÔ\Ò¯Øúèù¤«4¹Ó ÷c«<ïH¨¶–€^Ep×óÙÎó£Ÿd3x‡y¶’B.úK¯¸km_ÉÒHðÜŽân%‡4üSÉ}¤jÄ'¿ÂòƒŒYRhGz·4hg®È3×7ÓhYã¯ÄR±´p^Ç‘¬ùšë,Q÷³î+e*,¸d¸š8„×h#“Âû‰RØóEkïç3™¨ÀÖFúˆ=‡;HNx´d$Ѱ™,í¸ÅGȼZkýÔ{`Ów”õlijlæqh]\ÄÄså› zuvB`oCíid£aäÜ<‡ØyaÈB\íruzæ™§“U{ô˜ÛN»îº*ë/ýé„“÷%=/µ“|0öºíl%w«ì§.j­AÜE1Õ%»óݶ“œÍd.éGw‚z7Ë„ñIv´FbsÃØMÌ2¤”0ºxά¼¹Áéjž»w‚RKF‚“­bÇࣲ!{·]º%9F¨ïLhkŽÞ7îó…AÍhf„èû45&©„É]c„I°k0.nñiÖôçíçå„ôŃcዎæk QdGJÂw³íÏÞÞ FlC'"ã˜ÚZ7†Êi•§“c ? ]TŠu ˜(¥H×jáSžVðoê|EŽ.Ë]²©5Bп ]õÎ;yDsºKó‡Ûë@eDMHõw?5ŠZ±Ó`ihõ;-³¼¤Ü­A ^÷^í±k=“ú×sæ ºÏc‘Ù‹ÃÄõ+Ö»‘:‡wý.уӲÓ4®VM³X»I#üÇˈ ö;èe1¶ÆL:=9K÷²2xµ+ÛM=Ç'î •„ V«¤g ­Ò-ot–)Ô–}±ÃW¾{5æž=[‰õâ­œ–fÔ%uà/Φ ²ÆˆI{Kbçs b©p -Ë>Ê+ …1ðF­ÄDH Ñš«WgòzÕÄÝebìš÷i¨_‹Î;•·}eÿÞj»#,ÙV°‘¦ Àz*Îæ´UüÉÆd.‘23Ëvæ¤uŒè¢ñ­'15s'ƒ¥MËqbjp(qñkD]º€éUJX“AúÆ Í!™/œQ¾^@!!(í3 ©öy1uT±§êäiñQ„16ô})ú‡ú<Ç;”£¤îÂì÷eié죗m>´ø y?Í9»ÈÌ_“°6ÑP©qÁ'C‡UÁ&ìBñT—'Īocš™EÇý§Wr's}±™q{¾Öˆé( $Òg|ɸè.°Ã „ÑI'yŒ€ a6q¹ÝcéÌac,ÈÎjbí,ÝüTÅ龤ï~8ÉLp@ý¹‘a=åìÒ/\ÔÕ_ƒ²e äö=TÌÐç½µy;Ëæ·Yè9CŒýf„ȧ»‘}V_ƒ,Iíô°.·¦ž¨‘mD㹜âåÃðøÃó‚Ç"c“còÛœG>³sby"*JâèÙša$—Òå]e`%ׇ×óáIüÍZ–ñ±Î]/¢[±r_áÙ"›éÈ–Øt¨€®¤ŸšYÐðG ¯”_bʃ‘Àå=&Å’?÷èo¤© ø=Þ󲯤ç)X Í Ðfœr_ú—fˆE‚£Çª£‚—¥à GWUµÕuX«}«¤”V"’/¥SÉþÌýîJèdƒVà»ðÙÞòwêCÁ¸žB*5Ê]:Ȱá>ñ\zû¸•œà/³Xf¾PÈÂtE{(>c¥¢¤iNç­ ëÅz§ü¨“:zD`uT_ʧ)¡­Rá¥)‘¥7§)ù³PÓE×äèxd÷=”YÅY”9>e­ ПÍê`©GRú.í_ûˆa1Ø™&÷¼¹ÕÀϺx´ô×/)rY«Pµ-Ô+/¿ÚL•宆ÞÖÅ2™2p!ÙLBisèõR™J+ÿÐ ià?È£fG¢ícÖŸãÒ¯÷ºŸW A¹Ó­·nªÝ ¢-Yj-ñh¹Ý‹úm4î"ê¶'[måfnË/Ù÷f~@YDdº†DõªTƒ¹y÷¦ôs¶jÇdYã±üÃ8r=Šc@*é>‘c³QiîÜW‰>ztçMѧ6W]v¢Ðèì…–§°Ô^º«ÌB£MKvJƒaƒ;ºD‰€||Õ>W߬œœõ­f¯øÅ;§Q¢ÆïÕs² íW]&3FŒ 06'Þ4½ßÑ6ZÚ‘‡:€¶wÃõpÌ?k¼l}¥ÁŽ©O=„ð&d·õ¨™õÃ^¸(žhéh`hE:S‹…T‹ÌÎY²àêO?„ÌcH>B]X°¿?ì§HÓÈ96#Zp¹ öÄ.ÂÉv© Wºo‰AU¯Fè‰lJÁÈ“t–¾¸÷ç|ïù*Ê@ÍõU(ÝQ6iÌæpá0ámE9¢o€;†Þ.‰ç‹O¹>MŨў*|  5ƒ£$©]ìüK( d¶ÝOß–jßJþ½@9Ì練}¬ýÄÑëœÈ½¾ÜòŽ Z¬ž‘gìöL—Ͷý?^pÁ¬}QK&°û Ó÷­-ÊcùD¯#~ÀÈ%ßs>Q\êÕ±1}_‚²]“,ðóXÊÙ±<®È¼õ¨è~M”‘Ð(ð¼·|œk•2¶«¨=·©ÉÑÑ6ö-†–YSTlòžD¬½Øø5_íªŠqÀMb< v Shý™#J£,__8¤:¸û7æ522ÌF¯G?5¾5fó³MN޽g²v¶j xU]-`¯Xf‡Îy,GÅIqߦ™gåâý¹a½hÝpÕ–òÐð(C|Geó*5¼Ñ#VxÀ»Ë!IèQÞV_ml´oƒõçÍXJà/_žö¿´HBÒ%¤eÄûÝlg <Ísy./‰g®®œ~âm‘@€³î߀6d ]«t%VƒÆÈf&àYÇÜ@mNÜAÁr|GÔ³Ž%@Þq}áùA3kWhôSg÷§Y{kÿ`9)âú×ðñ‹”çl±r‹²øÚ7íòæIßð*Öwië`Ô€x³Ų³“©Kî’/»ÖaJ¤Î5>ž§qÕw2w=C½“’aÆ@—­@'íK3(QìB"8mo66lœ˜Î²¯ûV ÏgbéyšË®Q)=þÞOyç\ûÈN04ÏW†}VÂaÝÿñz³ÿñb³%|Äâ#ÁŠÓ®É¶OÂsNøÜO/J6Ë/ ;‚÷•ºò’kÍœ¸iãŒ1:PînôFö£8®ˆÆø9ßFˆÐ8¥Ö&çÎïç§;oë”3Š·(³ððÝ=p› êó§ - Þz÷ûý€cÊ©îî¹+uÇß’œ.' DT h W*!›¦Ë'ò/:fÌÞË;Þô£M†æêªMùþ$ ë¢z›~Ì–ôc±—.}ݬ DCo­™øC[ƒ6ÒîJ66¦1û¿Ó}¹…oÕÍOuWdB08Iãk0~Öí–á5+§Œà1ŽG/ù\QƒzMÔÙfïTT]Ö°¹u?q³¡ëðÙ”H£ ±òj&êÏ6‹m‚¥’¢Ôº(:0›=Õ4©î'$d`wCÆ8ä{¾îÚ©…ëÇ^àV.—cgò8`“Ã8ÑÊò@%»ÌošsËI~z“ÜÏi:»‚Lÿ)>ì~[†È`³‹®ÒDÞš’ sði ¤¼‚Ot&˜’—ð%ˆ ²œ>äC‰{©¯Ù°Ü#(š.»á¼'Í3ðU™L$UÄOp±3OÃŒŸ5Ug¾­å¥¼.šxS§S`‡Ì7NuzéóÐÅ.Þ äBÑÑÓÇ'Ö…5J¢µ,U!õ 2ã¨Òu¶ÿ(¿„•ü<Æ:q/Ë¿Ä4`Í„1ŵ5§Jnò¤Z•EàÂDä'†¢_)Æ;[8/ Ii-ÿû¾Pºöé[¡äS%…b 3¾[5ðø¼Äõ#½PÇ1ùÐ8…þTË‘èšOL*ð£Dä‹;ÙrÙ5o˜’lq_O^dÎêÔëªWï?$èËAïðëû¡Ù·±ÍÇÏ âÞµ—$u%ì9W²cÔB¶¤³1{?+Ñ6¾W0ƒxu(]Rå"|I™°² ÷M]â-¯”9ìÕN—ð,WŽï®ªi¼»è€é(<»&¬+ÜÙ«êlíG.±ÜCº®Á¿OÙ Ü]*s a݇ížó~vu°‚û¾ÖP1AI†‚^„®öÂRÉQÑO õÍ*‡0ÆL›1É*hy9S/Ð¥uL`Îa¡šCòX+º;Ý2 ˜¯ÊŽ--rW Q.NRžWÚ1¢!Þ³”;Áþm€n>RŒáòÍI·¯‡€i ‡5_·Ãªç=$ãþšâùU­“ñÕf.Ü9¥$¬Tnë¦À ºyÉy 5ÜPÔQêt mfCŽÚ÷I ûÜÍÖb ‰‰î9+û7ž=œö5h—â÷ädhðœû>Ýe8ùTé±]ÊÇ—æ||»Ü´†5â>wÂ÷? vž80ñuŒ{Äz§Þ4ÝÀß±!e(™Ìí`¢d.çã1@[-§{nj†ÿëÊd&êµ±Bžp\£ ¡¦È`Z˜|桲Ÿ/ìSíï¬~4v‹ÿØ\g ôŽr`5ûØ—[z/ÎÏþogú±è»Òh°›$E*¢=˜šƒ…Â’×4ûj·a*píåc©ÄßÂãY'£qlc´Eçr›m±¯ ~x–»­!&¢t‘éFDß¡C«1'ýr¦æ\ë&;f`ìœÖœwO@A7,S€2ÙÐ&®åotÒ‹I_¬ÐéÚTG!‰†“šòz”möž y8){ßÇ_Ë JvøÀ?5©]—³'ié\á¦pµðd1­EéïˆÚâ>é²Í;i f˜ÏXy Ž ÌuŒæ‘‹4›¡Q&ÅféÐ|FIfO›æ˜ú²ËIH½fE.£6¢8ƒ¸%ÃO]^krãÛè<;Û@ÊÚÙöj EM{¦Ù„C®Â–ºñçá$¨¼6dzJK†D(!©§,€êÀ`mvÅèÅçÓ²üÜ.…úù9÷È:fE'Å¡e'K'IÖ£‡[4¾¯c’b„krExË‘oQíÝQ­šÃ,kœW7Šß®·ö¸œÐó¤÷iÔÀ£Xk§Åëää«]_(ù4“pÕAàáµ~Çûƒ¢ncvs¦QüǶ*yÐ%íÑ!—»”/4ùÄô ÖcÏÑtRê†Å­èÐhO•âr2r4Z~TÆ—äâøûRpùð]´ªÇ$Í ”¢I¼9Ô„ :C¥‘GoS˜æÒÚõÀo+”!컹Lް&y³íT&Ï*Óä¦?JúIa+û–ØëIœ¾”®°`„_}3?,+—ž*Se©fâ Œâuì¶*%€ÅŸËË0¨+iR6›ö…9óªPzÞ7t|;sæcþ€¢Àˆzð\IÒ–YŒïxŒ™Q„GùɾlsÏËV¯ûÀ2szf U]N9ç¼'’†¼Ú׿|^IÇÛä—‘(ÈߦœÀ ƒÞ2ûÞ¡uÃÞþö3üÑDÇ×å|êGAq.sÑ£As%Á½MT–í: ùØ„9`4œ™iœà ý®{âPZÑö#ì"¢³l1ôohwÁÄz¢Ùý˜t˜ª}¾šØ¦4 ¥¯nû̪Iº6Ùš(ËÒ!¶êKK;#£v:Q?ÐÌ?@W3¶”ªùB}d¤à ’… JBbÎŒ»*@%ÝRðþðtbB™ÌÅÞ»®Q˃ëΠ†©•sÚƒ¼Jv¼ïî^Œø€þYEÂU«0kØÅÕ‰*!v/(Oÿ¹Ä‘Äþ½Ä‘­8³¿_Xœk\ÑóFo×'1óƒ)gœ,¯²]x†lã#‚Þu%x“â$.JðÑ€£a‘}2¼‘ìSœöæ²Å^xW!«J‘§`º7^ª&–¨ðsR £ý˜§olHÌVBµL±å&~ŠÍ*ÌjeüÜ×ÈÝi\¢+"çëlü8Ø-͆‰Æ=Œi‘`‚Ž*˵šþ¢RÍþ§ÉÖRéìµ¶Óƒ×hvž8PœGŸ*+¶>+qn⊞zHS*gE¶r{HœVâpJ%Rõ½”õ™+3¾ØEšUÈDNï\ŠôÎÉjfûØ÷,öíõG±&{zz mŸKOx1HsÈ®#HÚŸ‰}{³)I°UCj² F<Ü­Â;èë‰zÖ(1°Ìœ¢ìÍè»h•øífl5Šfi›õÎ9YB“é»DûåY/§#Ûó;NÆH¾ÍÃó]t“® Mb>'ÑgJ×!¹R!#¥·Ïrxn6¨¿ó¡wÌB¡•+DÆ­eF6]þ4JãR—£¹Ä5mÌ IQ÷xÑ_íRRZ8ºnM4AKé΋qÊsýqXíÖŽƒ|ßÕþ6úªy;‚¸c~^‡àl¤}Zx£rþœšBxÂÂöaC½†ÖTâÅý2aD,€aéH!zˆõ[öŽ¨Ì¤Ë€äxêÇŒñœ£Ÿ!RZŒ=@gEQè-"‰¦ †L¨Q»W7¢Ñ ëš–E%ñŽOª8Þ^¼R÷/5—±%¸‡¯,>ÌiV;0DûßÍ >TÞ—ø8 §dÁsÝhŒzWøYÞKTeÎn …à Ñœôw»k×Z e `ЉÑo`rá_ˆ/¨ö}”¬OÛoSà4T<}¨™n¹L.~É©µf¤ œ’\Uoàölk›5pJO÷çQÑOoÌ Oò( p•-µÓµŽç'9»U=“³} |]6þ1ÜTeN%l‰Á5L˜P?«àæäª¥—°1µ(VjCaƒÛRi/… œ®²w’.œ¹Åý;Ìr‹ÅñwŸ}Œ?ºz³}˜“Da Ñ¢‚-#¬÷*ªH—£ê ÃËÉ1 rHªdõXº·. =ùrŽP6[šAK ~³%ÓÞŠ‡'Xƒš A^“oºÏú†}a7‚UÐmõ†E›Ø¨/µ.*–óÅ×3VEœkZk¨ ò«Ïy¤à±3µvzcþ˜ü¦4‚»ÑLî€ÅaÇñrB#ß$µ§M¯Õ·Û¤J%Ä;—}(ßUþÔH1ë5X¡hÁ®Òõj|U¼ã3š&'ˆke©åò…ªo˜Í)„V‘ñÆzÓÃ3Æs´>´g¬srI«NÍ5‹Œt°{rn_­;±ÞÜ_Ú3ÛJC´Íá-jôNT”Ÿî?ê±g(˜Àµ£|ní‚ ÑšýnYïØu]3¶þ9Ž‘íÍjìVå¹3KsG6d}|£=ÉŽb ]¤çA)à ‚%¢ßó[ço ÚÛ¯lçÏÏlÕûxÂyöÒ$Fáßt4Œ¼(ópâ¹G>G\…:Бú™ºëÕDÌ[0Ý”r<\%GíG¯=U 4òÀ=j4.uf¾·™³o¤ÆÖ{¹8ÙãÃ¼ÅÆ)¯7e>T_0ŽÍß‹[ Ì!⺂M’á§ÈÍ´÷Æòþ¬Ÿ‡™šÊ{Ⱥ°—\b]z-£_0-"ùtv.íįexQúu §7©{T¼3É+¼("é¥w#\ qÀìfÈY9­ß Eó³áÇ®s¹DG¼Âío\ŒpᢃtƒÎ•ÐóÒ~ |+r¤§nG/KÆ/àÔ›%´(AD.%”„sÝž‡ô,cÀ_õ5ïÇ(ÍÙäg‚µ(ÕÇlù’þb„^ÜEƒs-dùØí$%ñ½ Dä‰`ÕçVɟ⡊Îôm+e¢hÜ[⨊s6å+’ŸèìÈp4Q)ÛÃô{¨êuZ¼‹l:IlëasÜ’ÛËS¥åïâ‚$ü\ŠîÇm³ 3²}µpè¿€©ÖÙõ‡.t¹bò#¼8égí|‚Ý1„™¹G,Õˆ®[¼¨ØØIº»ˆDða¶y‰óñÓÿ^‘ ·Ä…iDR8c[ðªøÄ¸W½ÚF¿£ MÌ®šz/3±»Á‡Ò€ÿÍT‘ ÉU¥ãMk?£r½°Å[µM]‹u¡>i;ôzY“xßž“°Ý'y3 3j#FÆëÕ­åÁ—kWiU{ëBºÃYï-’ £0J®"l÷9xŸ£ñµñ­õ»$öv`¡}ÄÀÆ´\?M¦»ìÌ•91ÊõosGX5iÝKPîj*™¨mÝ›»ïœFá·v9á’{N»_x…Eü`¤ñ²{ÎÐnoÌ×%[ËÔÕ-ù_DU©÷ˆzà ¯\çKýà yü¬ÌÄu3Ъà ÚÃ’[Y~.îÕ¦Í7'ªÌyÀU¥ ='*¹/M ¡> z½keèšRœïžjO‚ú€žáÑó†ˆÖ>"›¥?¸³ç ˜k^‹íÉ5è‡Ëo)ˆ\dÏ#ûpF©òBG°ã÷ãÃÕ?(,Lù5qHPàâÍïN,2¾CëyÎ4R&¦kòz×2”û\©UŒ—w2^øá¶¢|ÿEgdÇQ­x‰„ôþî°¾9ÿ­»H \#Dqö»«§Ž Èef?j{Œˆ“¿öå ˆõçæCuŒP‰#ºí<Å 1ßë¥é,•!„àúçç€õÉ ?~>ν£˜îMDÙm×Ô2e¤{÷fý*oËÈi vNÓ)~ìs„byž&™O]홞¶ýcabÕAÖÍávå,y#øV§\¯ob£ŸóºoÏ¥ç!ØÙS´#‰ui¡/ÖR‰ÞÝÚ|˜2÷ÿ—-O]—tb(e­6…OQ½Ò¹uY2}ÚœçUS»´ kBØ—G]©Òþ~^l=4à¬r¸ÌAšï·7Á†Ù{Ó<ëµð$þØ(ô£bñ¹"ùJKº}XìàÅKfYÌ|âR«ƒ?ôGÙéE)å"GûÙY9A07Öœõ„=™%Ÿ˜‘*”Ù–Î<ê$m–¹×lÒBW»·ÙdÒ¨¼ÌÊt.¦{ŠÐhŒðåw7ŸLº+øÍàE$çà<ÖÃõÈ$aébŒZÓ£¡ÆÛW ±<ó÷úh0tm\¾i”wŸÍ’«‚k zß5ðìþ3þâÔU°¢UDÑ0¸’rCÉ<vR}ÐxÙ.;óQuðä8Yµ£»Ó¹c ž.èýc¯uã+Åmbds³ 5{Ýç‘“.ë›òoÁUgo}™)ÀÁ|~î|–é¾ûf£Û¡»€g21u7Õ_[llÞÅ&Žà¤>¦OTi¸u"³ìp´Ý餹Ûî%« Õà3ü†×ÞcÏ!4„$‡.}>„OµüýBIG¸ëíôŠ&v}ÛÉ5O8nÑàyÁÚ¸1~´m)hÞÜe›l%5É“ËåÏY·‰rR^Íñ³ÉˆGô3ßÞ“©æo®Bs--:MÂÃW¡és®.—£U£hxèJr!šÞ~/¢lýÒ*u•߯âõ!ߢR²:/§o*X½>œ-¯h^2‹ëZí¨@Ä”£„h8\®'ЉÒhãæ |K²›ˆ 4VFÀŒ–#ê{0ò­ž|-Ø ûkƒ|㪟IÏ÷ñîë›ûïʶ/Î3Þ7¢äN¯,$¿YÝ{­*—»“½²&¾ÐØ …ÀתÍP#»$Éa飨%§šHw笎_€AªhqЇgîݽ•‰„Muú‘Q!ñI‹²©*aªìÓþ1=‹mMÞÜÄ;Þãk/–+B%uÃ…T8¾ò¹àƒ–ŸSÍŠ½ÎÑÉ1sñŽîyv¨òuŠ?Åux‰Ï}G¾vz%!FjI×½Õ|-Q>«áj’5tõGØ—ôöF±Gµ_ß Òúø¼_ºOîUѾ%'÷>]RÄp%`üg¡’3iúÜØÃæI†±¬V­rœÆ¹†…:õ“ÔËÒª—§Ñ;“®Ìwãªqo &ÚüŽéΊ¡ÖÀ{ ¾ög˜b¸ 5è¡øòßŲÁ'KQJ¤›&5:¥ªÝüîŠ?`êXÞ±[ÃsŒ~܇iœ#Èʨ«½ºcK1Æ¥„㌱¥£ô·_E±´M9„DÚêt /,… EãEòÁ'6ùò-ÑØÍóÅô\åÝ€š¼¤€{¯+Ów… |®Jž ÓQo^1£ä:·õMyqÌš$ tjšÊ¨æþ |ÿIª+0y2î–¼ödZÓ¼ãîl;)h ¢®%˜É/‰¸£` áÒ#ä´Ê?t' XúW$Iö,$l&¼Fte©.-„gQbÛ„%b PêÙã­VÌÈ‘oúæf¤=š ³Þ…Kȼ{ÂMç_·ÂoàÇŸ^<ê߯€xÄÕyç²Ê€}g3ˆ†µjê’ö7gRm1Qk8Ör¾ï}ëJD•FÀd `Ã&Ë侕fî°Ê²{ÒW;ƒwä#ñ™²oºHw Ý!eáhp½!P*H€o¤ŸE´«éýq¶eþåó\‘4Ѿ´­8„3ÎÞ^õ©Ûça—Arĵ#m©äá¯:þ}œÄ?½\g²õmS¦×Fé§•°>¼i‚‚C™<Ö¬%È€˜PNÅ~dN.½4›!Ú­˜ú18%…‡2É+·€M§ó½òøƒ¥ExÔê°†E±±L <³ºö‘Ÿ: TWÕ`¨,tÂ{X_vE.!„FݸÀæZoùX/ZJ~Ñ$Û5ò±WË[‡îÊÈ/ø}Ðü¨áqÍ”Z&süÜZ¬;ô¢¤9í—¤µì]4§2~85ïW^ö6CxC"ÑŠćëPq$Ý¥J‰'·‡žy"Lè”zj Iö©¸qó'À‡ÒF‹ À?¯^?Fé#žÜÔŒLh¦ãàøk¿}G§Ydä}… ŽgëBª»Ù–8V“ñ“q³_Ec50ŸF„·$ƒ­7«Ôñ„EZáºxy¢~ƒvAÝï}n_î™8?¾i×K¨Ð·Ñ—&.šª*“ÂúZ=Ç{èëÇ»ÁlZ:ÿ;t'ªyñLÓ2‡ôœGjh¯N¸ïPµ×L-+eü©¦o•9è·œo “û6 –Ž¡ûÍM[U‡çÊ«Ke ŽWl3ÆWaVÅu'x0Ç»]uƒ´Hd<yGÄP IÅ»ƒ¥AT¶Ôè+TŒª•åÖÍÖ•tGÖñ ð™¬\Œˆóä…£9¦2îlj*ž<§ZrUÞ¼Ò®Hè¦b;oô“ÔMZ‡,|`&IÒù _Wé)êRhY’ÞO¾à¼›”“o¶A6ýYÉG£UÖön'ü¤š#½õcEè^Ùª¯ùþt$ëUö!—F\¼´y.ÉYf¢"²ã»ß¶À™Ï¨¦¤UKoó‡J>RoÃB“¼ øšýÌ.®ÏdÔ«×K`¢vÂ`E2ìXWÓ—O0âº*¸ÙÍ®a>ꯄb‡rf£•¿Óè‚›”ˆƒÙ¥4‹oW&x™òDN þ™ådØM:*´6JÈömEØ[ëL'7Èã¹íž›&]<ãâÜÇ ÿ‰ÛÏŠÎZ§0‹M‰hÙlR´7¦6#ýÓ¶ØÜµ=*))‰’Å^ê¡eA .b‚lß雕ázƒ|Ì?ñDªVoÕßœÙêÙd˼·væÙ÷ÈE\"/ýáf s,f¥ó3æÌ/lÌÇöŠ.«„IK‚yk~$XÚÇ•È n˰œŽ2ë¨PBWmGà„yªï›Ûn ‡ÐO/*8jÜYÓ.öŽIÆhœâr#1Ng¿:E%|lj™ó7 Ÿ¨÷…Y©M‡ ¥f{wžZš­øL’OB±3’ô EåYYmŒìR‹PˆüAqmàï#5. ¹Ý‘‡­(æÅ=ç9ÅSSŸLêT}ç™ì>[G÷aµÅ§d#!&ÚŸ´-jµÖrª> NQÁfQk$¿g(©?¯úØ­Ñ1ÎÒÏ >÷ºT¢‡™‰bdùÆK³Ã$„½b*›•e¦z—uŠ>¥*·œÓ(5qý7"áÒC‚9ò®ƒwApÁ±C¼1ËÇ‚Iê‘©©Ý5Œô oì@aìØƒà•›ã{Sj.tØ]H*¼#qŠÚ6î ­ÝJÞÀ}ÕeÐjA?¾ŒãéÃGE4ó)Ù ‡ë z¬š* žRdøÎnצí7·:ÈeO“¦.•gFW=ÅõšL\¦nŮɈ,ëuù¤Ñ ŒzAFØno  Rǫł;2Q%ðjÛ½3UNè¾pGÀ`ZíÇØí_Ù‡?4Gó2S5?×ÙvŽt Ín4ŒâòôžڰhGó#·«u Òíd³?¨ˆšOK¯ 9éô¢.”” &x2cÆÃŒ°H¼ÿÌx˜‡Èu Ù­`æbÜSÃÚL¨)Îk˜}œ‘«ÂM2$©àõP´3(^ùÁ"ë–ó|£·OA7 —· ®ñ&‡öû­‡³§HÑsÓîgî«S®ˆ§óö½¼íM4ÛnÅ–‚pf_=ÉÕnô³¹Ó<½î.¡WöŸâÈPU¼ôѧ+²T²ë~„–OÚôl¥¹Á Ü1þ±à_÷¯.È/¬E[™Œ®G.ÁÌ)Ç}¦H>’†²)‡R9S´L=ñÄZÑ3lßé‰IGähˆáðÓhd¦Tz'í{’íq#˜UÞ¥„ˆ¦›(™'ÎgN‹½­h›ß&‘‡&‹ìðî>ψ`¸¶¾Uú,縆} ø>:ô)Ø:ü³ZÁψ³»Á@Þ8¾8K³ðò‰Å®©Z ¨PÂ8úõõ¾¨ë3kJHfA~QX^Ûìe-Ehr\°»åÜ€4”6wJobqnÅ' f¾5ˆ‡“˜tdNWoéS1 µU$*Ê7¸ƒÍ:·0zv%ÖÀÀ¸ˆÃD Xð…üºJ%ÚÊòÏSJ]Kê•Ù}Ó†ÏQ“u’ÓÏß•gF!qÈKWü‘SøKsÞA L¾rtÂçÞ­Õåf·^zˆy½±D 3?%Ùz¾cÿÚó Sµ4M"›ž<ªê;B¹c2'dìÚ=¾n]ÀèUS¸8Ìþ•©Ê9³Y»¡|9Yé§J¼Üyƒš[ÞI3‰öÁðxëÅŸÀ’&˜óÍÒy zÄF„4á´¨>kÇ Ãvå¶žaœ¬Sãû—×ZÙ²¸’ìH¨…_¦M‚qI¥Mwº7èÓð´“èªiuC…®75¦¢/Í5òB1b®b>GÉ~7몿çÂI—¦ Zïç´gèҡز Hï’á¹6D ÏQíñãÈAvžI¼4„õÐ’j=`{q u \—[ÞA«Ùt ý ®`Iú´‹+â.-5±"P|›»²õ}>K ÞÎŽJ Õˆ"tÆhw: Ÿ“Ÿ:•’æ`£É6¤- û¥ GÎ]¢‘@¦2ŠHbÙò쎗ÛD—Ðæ‹âxÐØ˜©A^Âÿ=}e²é‚eAFK—r|åþÚ¤ÒAÆ0Ro v› Ád;±çx÷ñ¬BðÝ…gÞœÇâ+Ñ:ªÃòö=O}Û‹¾CÈE¹¢hMÓo¼¢>À®í~Ù”ËÊf›,©”ùÓ·ÞÛ°Î0fâ–3†6®}n”î¨ÉgžÕÀZIÃfNfÈôMåSÒ`ùËݱ‹«5^èÀ”¥Úø8LŸû·•øóEK±¤bÑÎÔŽñŠJÓÈŠGAS±}³2´$6G³¥¶/E+hæé.ÊT$ÐeE­¸Ô¢l±O·üÁóMÕNo)9â¬8¨z¢âŠ$¹®cm d˜¿,{س6.:GÛ JˆÚÊŠTÕÂrtÌû‘;£h×J¥ê’†dUæ ʰnÄÛ^ïT™¬R‹£L‘áÜÇ;-o¾Èòõ|ÚÎ} ·8ôúim¢‹á»aaB†Ö ³|%ƒÆ¸ú“§ÃîÃ’%? }¢´ÿ]±Ä÷w]/ ´ƒ”qÖFÄXéÊSÄBɸ'ßòäÐ-|#1mû2¹BáÔ4JJî n`R;hëE¯˜p•#PÜ>ó´á„¼“õšÂ*uJÀ¾|j€:]Œ…Ά¦°ÖÍKûŽî×ãªýœIàÑwÅ›ÂõfŒ©Éº )¬ÎüCüÕ'«k‘ÍŒa-Ý&7Œ #ré—þ¸Íªµx6÷›ÀÉcÊÌÌ‘w&=ˆÍ'"¢Ûc+Ü¥œß4j1yMÂOÕe©¾âF¯áöˆ†Ïm Û>WñÝRÌI²¢}“a×îD]IÏé…÷„ÒûpÍ LMZÒ›#¦ êË„"›1µ®³Zço,ÑE =í͈¦¢xypâƒ9ÅC§9 5àÎcðvîô,^×)D™øgMŠD!¹÷³ÑUæ’ö$­ üÆÈzÙúøC §ìní³nh<¼Êpãæ¥m—½9Ååi’תúPV1[¤ˆBí¶TV,¡t\Žp‘ùÝÊÏx•fo—Ä|;¬ðâÝy Köy’&ÈÞÅÝ›ßìçJL\5¦ÆÖÃ)w à`šß–[q¢í1Ëòt$ù~9JÓ·@Î’FÖ9>IƒV,*ÿ\Ñ;]Õï•kc)TP¬¸I\­±‹£ ^$æ¬P3wã×ô&ÆàÕ Ê[‹Õ‡IJűé›4¥ÕÞfaÞÐ=ÓÓ°à#—:7 ƒŠ4¦tç¥h,öž¸.¶¯§/XßP‰>œ†S¸™ÑaéL:~øZ; åN"ÍøœôÐç~5u%‘:JÆ:ëïü‰Š¯tÙ^¾YpŠn+§ÞPØÒsÆ?!dõv"äÀ¯ç?µæUx;ÀÀÞ{#¨GD=s4·œaJnóN/Ýû:!‹ÞÑ2ÍM4 7©¯ÇÎÊ' °íÛ¶CC0S;žGƒßíêÜûhC™Ö[äš*If¤°Û⢄µ¸Ì̳…²RS…H…_ˆwú”aŒ·Pe´íÎ5(Å•@©ÃÇQSDíˆTÏEóˆtDÅ&Ù¥Èìø¯ÝáåÎÊO^Xr¸“7àä´²C̺*1;Ü3DΦ—F2µVi %r‘~¨Ÿx 3±ÛàhP_b-é«{$¡¯tœV®¿_¨Ý™v"œ °£Qø­÷Ká—É'IѦ\C=t}Ç¡VGî­??áóLÆ]ÈÍ¢¤}굄aÂ"¶è•éGØËK”±ŠKaÙ¿E þÉþc³ÕÖUŸH^…O–ÎÄ|]*ò.A¯­ & 1îx}B;Ú9•ŽD8>½ðÞ\Žõ&qfúÀHÕ<ÆQ3èÝŒs'¹½"÷©m6$˜² !žúCZ×›ïÆâW“aŸr¥3äÇuŽšÈžF% G–#_ˆàÒ¸2NÝ-¥àf ­4.µ)¡bÛ¿|6,»üT© 2¹…^åï:Þ‰Eõ.©ôÍ&“®CE{ $DøÎ°ß–÷ð—¬c@àà‘Mê ^Ôö¥©L¼ÃKð.×åÞ:*@‘¤+ßò±¦¯•Í©ŠQ±\8ý1•¡BjÙk3S¡ Œò‡~èݰÉ]nÊâd'A.üpºÔï??5À"b…<×É¥ÛËì†j| ÅSóý¨aÁ¡Ÿ–ÿóÛmp\}€]yˆf®[Ÿ/rM½Ã-ܼrp8 Aðàp‡ç0û€gp³ºH‘¤Ù†Š áýòê"ÌaDpBTû-7ããr€®Iÿk«ór+²@VÞnXJ#oó§æIGô^øTïƒä¾»%NR÷jGÄãMTÚ…UÃ]'™¦‰”îiE虾JëpÈ—s»Œoä"$ ²q˜®nz}IZ*&œ\¾Ì8Üë$¥@µÁšk…ö6Wñžáz´¸Jò˜Qp–¶Ìã/ȈE4)îâ ³"uÉBÓCyÈßnÔvƒr'ŽÉÚά¡§k>vÞø¸RçÇp¾x¹)YIú¤÷?#0×͆ƒL¡;’.üR²Gý–”ÌùëŒ÷ׇ&?0]³†–²¬oêOlãóT0硌õVUúÓ¸^¶k’(9ìv+$ãÁ͉Lrmceü«-JÅ%~Çø#Úh—ä‹zê¨î/OTwL„©©‹8‚N`?ÂÜ`,ò qDÂÍ-ÚZ…ûMm•>"xD¥älná±T\<ŸIÀClœ^,†{kݯ¦!Óâ=ðèšm¯ûɲg$²ûé®{¸Ú&ß7cIfëˆjRD¨¨±›`Wb Â’ãX#²Z`}‚ùð9 ½^ñ‡&jf±Zå}‘-Ç‚“Ì…¥EÛÕO&qº„ˆðº“ ›³9"ñ)ƒb>ÈÔŸ€³…¬G|V)rÖ)ž£;Wg¢í ±|uÜôöî¾Ìùk û’<‘5Ï”óÑO Õ›7ð7uä02Q&¶²Ìf9QÞ6øÈβÌR—˜Ö· ²èi¡®?’ãv÷VÁzóðvz1(™°µæ{d’8löñ?8X}q~ŒN€l¶Â›üméþC¡½PÏî2ÒµÁŸÌ"ÁJý¶:G¸±7D£ð¾’M%'ãXgޱ¥j_šý¿@V1"WéÅbk¦«U\*W/Û4 )á<#~”n®KkiÖE9Vè±\¬ Xƪ8óFhÊ@g¼¯·0D»²M³«¡0öLST~/p„‚H?çn}QÖ®nÁ"~â0A ãé2yšdî«5þp‹7’`Ù¼BÓõ#ç<ÞhJ‡ÛÔvn‚œ$¹ÛŸÅLŒ›s6jìe¶@† o¥=î)Qp‰W@ûíŽB-½½Z¬Q™¯¡_›á ÑWIku¡Ø+®Q¸e õáf©n¯¥çLÉ™;SõÐg«)Ä–ÃÀ•<ñW |ë1ê Ñd„¡·sš(vjÒ2þU÷:ˆVƒ”g8yÊs¸Œ\˜æsn~‹âŒH¼eÕªéäã.Dz֒Aù;6|’øD:DiØw0%‰ª”%mQÚ‡Ÿõ-ÐTz˵·¿Zlî4F€“µÅñ/Ý^ž‹£ .®¥g½_±§×K†õýyásÉ3|¸utMùUë‡0Ýóá]먧ì÷ô7ÛÍj>.Á‹™\_ ÂWž—?àsmcÓN­ßC£’—µGË~oÝ|{¼°YN67%òîKÞ– çg¡*åy48#>ĽEV«üÿ'! Þò ÂÈéGox\ÉxV--yÙÛž’@­‰ŠxLÝÓã+Êûþå,4ˆÇ,8زI—Jö'3«ˆÜ±z¤wîø¨É)öÁh÷à>´ -±ï·ë´€î!þIe±9|,±Жƒ¦a”çÚJe’™—É)Ë¢êĺ ÜzNh2Àç\Ü-alê§áü*·%‘_PljÄfêëWÖø"(Â4¨– ¥½¶’ýOg˜gĨå“rƒ&ãl7ù©¦ah\2 í§}&ô@¹Éâ`¨ŽO­aJiÍ­Š‚4¥Üö}ôÞ1ÜhaðM#6%a)­oGX.9€šD¦¸¥KÜ¿®+ì û¢.u,\žÒ08BÃÇ,B[gNtÑÁ¾­¾ãaÖ#Æ”ã.CüÅ»Ö4ž<>/Xcuïc#%E]J§u†YûÊúZI…3x¬øñ¢ÖØÏp–ªø®—Z¯ÊÌ¢©žÿ*ºý‘´ qjþMÉհØ×Ò髼žB>cZŒƒ,˜‘õž€’l‹oâ6Nw·;… á vh©ë8¿¿‚!̶"Œ®w/o[ÓLÓ É?H¬¬à9¹IêB)ô1…Nî«ÃÚÏñN,©µê޼ã×v¬¿äE4•²µKé?Ä.ï0Ã6sãYÖö´l0£ªP4&ßðà[ª³o $X®FÅnŠÀ<®ðœ.B@Ù§š<“Ž%tÑSßáƒÔ¶ˆÖ©³v©ùI¤—a¿âu¸~Çú£¸ÙIÜ(oñmÌGÝ ÿ– %$.4ñ9k´e±2C7µ~#Ú0sZSK«ýsSù@ŸºÞÓ‹Ü S.LÇ&^ÝšµÄç¼¢iÛöeýÖV›Éf´Ë?a‡{?aœPI(w1{t2¯UÚJUÙ .Xk ý©ý·"+ÌîÏ ŽîÈþ|ÆÓ®ŒÈB“ˆ´¹¹@K€:MZ; ƒÄ  O÷¸]F4ÜO-=z¶6]œ¶,p8v~q-®~Y—ÿØP tX"˜ûµL.‰»B!u2ü ÷øwÙ^31 ÎbÎ4V§suöj߯¨z%ƒ¬É ¨øœrŒ² ÝâèäÁiØÝÕè‘,U(Hj´š>áÓÈ¥mªP ]4ƒè>Þ °û‹¿é€³GKYÃ:ŽÊŒô3Îé¾Z6fÆ„Ñ m×Ò­™Ÿê†qø.Hº½O JÔ’á<÷kÔÕ]mx«­á²„ë‚…`&oKŽ$«ÜmóVÁA-¼ˆ¤÷\JãΛ?7pïUüÿ—˜uv*UçÊ “ \ ŽY¨çÙò>Oa"-ü¾ øYJ†ÊÓëýH¨žø²eOÝA¼íéAæVÉW“EBVvµÐS0µ$+sö¶U1àœ µNz0¾ä¡F'·* Ä´¥yù˜‘÷š1‰ZwO90ü²@zÛÛÓ'´œýɽ9sD…\OR®eÿUüê÷v»ÙÕÖ9nÈù2ðw4m¾;·óAÔ=ŒÑt±Š§L%©éH•ÿ…õ—I}:5T ›$A•'ň˜Eñ?m$äp•—çõ Ô·F þ,á|O®•Escϸ8÷E;žÄ`k¿bÌ¢jøâH wᾌXÙ±¥}—ÃtÄ­SSl'QˆVCi”êHKØ©hqOʘÏ{©Ýð‹ºÏ~åáe®ç<µ3ºpp Ð2¿´ú?;UXÐP‘}8£Bû"?™–‘¼ÍŽOÈ|ÑI,0‘Y PÊ3ȼ>0p ´èÛ‰[Ì^Ö,Þô']ÑE«$ÐÏ ÍÆ®Ejωíןô€×¯>à]q7¼wKfÔ—©Wp0X¾žJ͘7a`¦­~"P¾|Áh…®ìê¼ç‰·EÓ ð‚¾C2—)+N[˜/lO‘;=Ü;³®vOü–›±ÖGrü0¢qqë£ã‘Ù «° ËC§|S4¥• 4“Ál.¦õè gƒÊGÑÝò8eU²M½Äk‹4 æK!Y§â¸P†Œ½ˆ3 žŠGhfÿçBÏÁå87Ç—áΔ¬V#bßZÒ˜k>šåRíÈ·c´.—š@gx¼ŸË‹–u'ݽoe+Uös›q4ÛÝñ™Nfµ–ºªûb‰PøE\±+8bá ñYÇ[7Ôr&ˆº}q?{·ñâȧeƒÂÆÿ´©_RzH–¤zãõHwœ~ •ëfü š €8N⯬×ÎA‰Ôþȹ5£dBPÎéúqó«bF¯Š°”´’ýe. !,DGh |š.ëQzD²ŠBî?µÍYøIó님“ÆA\q ä[ãŽÕ4²!Ò±œ Ã·\_7e( )h1OÂNñÑÂhcn(Š~“êãÒ£‡Ûl'‚'µÃû.èæñmxyªnQ>vÖþ±iî.ãî Š:†º&§ôíy> Œ° "xª›ƒ~´çÆ |ž‹¥}÷dI>'O BÀ¡«²‚^ÀœûAys‡¢ù*iÊÓcHLT{>]×á n…¯Ü¢†Ç!Àž×f1_É·[My‚Åg”/1¨±:h}Û!lÃÎ-JMeÐBŠðÍ5µ~v6L›eí<ævýöÕ %ž¶™jŸ+Ré*ƒžÝ)Èl 31ŒÕ#}GðÔm?AѺï–Õ›4Ô†)]Uä}J(AÌ•ŸÀŽ©ÈœÀ´dÈ¥_}5%”;|*”FLø¹°ô¨=í™­õøÐuj€…8ûܬ³?Uù×Bm|¤lŘXSüÚ*¾7KXæcîøÉo¹Û,¸B6T~™ëÔÙöµ¶ô×á ¡­£ÿy…ê É»–¬0{­•'Ñ™g?¶ab]jpƒï‘°~H Š>•5yw¢êÔüD'•ØUk ¤âÌJ©°_ƒ¢ðÝÛÕI\C1Œ6€€GQ'Œ;Ê%2Æ—(‡œek Î=ËÚ`¼éã— ìIøL®ÄÔí èk·!ÈÏÛt̤4 X«áó˜`sUÀ‘µdòâtärW6é€eòŽEÙb\¯VvC»÷ߟí¹t]<(Ó?¤%&4òÚkŸÈPv¤¬¤ÿ4HSAÕw)œj£Ã•;N|®½ž Ö}>(ë)®¼— N³2‰9Q¯rSþæ½Øcíñ†æ»MC%TÖ³Ÿ7l\°à,m=Ö®tæûÍ|‚$ܵÂ1#å™êÒÁ1¼{O)$"JÎN§ðïÞíKüQì }-×5‰ãj¡ÉÜ>™ã€Ò;™-uDׇƺi©E7ûšüsÆZ Ÿ ³1ÏPõöÃÇR Ím;ó¦ñ¤ªççø©ˆ©oN*/gãô :  3ôÏ0ÂÃü÷âÁ‰÷9 ƒ“O—™ТÇLKßä©ÔèKäGì·8Ÿo¹g¤_œ8…†»þ£²ðŸ:ê!Øæô OÝöq“‹£»NLŒÈ'|Ÿ–MYwÞÁñ8— B™d˧&¶g`ô`wRx nQ-;õÅ&N§Ä!ÒÝj€  8Ü~,ƒ}ùC™-§ŽWWD®cÝòJN¹?·Ùgcl[ÞÅ iö°¹ÑëY!-NÒ©5¾ŸûÂ;YJý°Ó?}6º×hüÇð÷’É¡µœüÕÞ5y~‰ÁÆ ÂÅ’¨c†ÎI­M¸ŠFoéî4®ì¥¤Á­¸¤C+Ö—ÜÀþ=¼ëñó½ôÛúݨ3e1òˆn•Ûž£é‚¤a"8GIrÚŸ<Äúöê2’ûŠ”àÝb&ñµ{\}íµ&’\¿ô=æiu #|À7 @÷@!5·[¹/ì¢ùÞ„ô„tÐ^?JœQ ™½Ø Tdè…×¥ë‡ã·Z')µæœ[K9iü`¼+õÁ±à¯$&3ãC㚎Y©I l}ý—#1– x¥,f[æ­ë|žK«·m`ùåªßÉRéÁmÔñ0ò­*Éüo¼šJèrXü…{©W¥YluçX:€~M<ÓºÕi|EѲ´°p}~ ]ÑAÞÄ_\•y8¯„Ù¯—=‘/wÃn•,iˆa`£Îw‰ïè*f¡‘Á°¦ö¾£ÍšxÁÇYšàäw)n7±ÿÊjbõÎT^…¨”»PY›¢w÷$œœïü7±ð¨ë'NÄÑè˜ UIåÙo(€Ï£Ž°£Å²Ï»4ûŽrˆèüá·Jj7{¦Û³hw¢·Pú‡4"-ÞÃxgFÕ{¬ØˆYˆŠb@qÖyšŒIi’@/Ô|%!ªNõi §A¸›Yz;©‹œ0Ë‚§ÒÜÑZXhXîÉ©d òH"’œá‚Çú ˆ¯FÓ´”ÐkêF0>ñ¥ZSƒ•\… §ì"_ÊYL×ô~éf‚A[3boÉÁ‡Rk^A“éo@xg!pÛÙt1ÒˆÌ endstream endobj 310 0 obj << /Length1 2104 /Length2 12531 /Length3 0 /Length 13797 /Filter /FlateDecode >> stream xÚ·T›ë.Œ»»wkñRÜÝ‚K°â®ÅŠ»»»oqw(PZ(Ž7[Îî>çÿ׺we­$ÏÈóÎÌ;3_BG­ªÁ&fáh’vt€°q±s $”45œœ<윜Ühttš`ˆèo16ÈÅìè ø/ •I!P;%G€¼›€‹ÀõZ‹O“ÀÍÉ)ðCGA€$ÐlPbÈ;:€\Ñè$¼\ÀVÖè1ÿù `4gp ð±þé³¹€Í% Äd=ÑhÐp4ƒ ^ÿEÁ(l 8 rpxxx°í]Ù]¬Þ0±<Àk€:Èäâ²ü‘0@hú+3v4:€¦5Øõ/¹†£%Äè@v`sƒ+ÔÃÍÁä€ÐS¨8þ2VüË€ðwm\ì\ÿÐýíýØáOg ¹¹£½ÐÁ ì`°Û*ÒŠìO+è`ñ‡!ÐÎÕêt‚í€fPƒ?#¤ÅÔ@h‚§çjîv‚¸²»‚íþH‘ãh•¥,$ííAW´?â“»€Ì¡e÷âøëfm=¼ÿ–` Ë?’°psâÐr;»ä$ÿ6ŠÐ~ˬ@À+NNN~.Èò4·æøƒ^ÓË ô§òO14_o'G'€%4 /Øý@óvºƒ7¯÷¿ÿи¸`sÀ dv@û̓,ÿÂÐËw{ 8¡½ÇàüãõÏ7#h{Y8:Øyý6ÿó~9Ä´•5”YþÊø¸¸£'À›í5€›‡ðŠ—ðZ€àûß$ª@ðßApþö”s°tü+´Hÿ‰×ýïëgü{4˜ÿÍ¥ìíY€ñw‹r¾â4‡¾qý?7úŸ.ÿýýËÿ­Åÿ7 i7;»?ÕŒêÿ?j =ØÎëoh˺A í¯ä‡ÿ5Õý5²J °›ýÿjå @èˆ9XÙýSF°«4Ød¡ †˜[ÿÙ‰µþ1;°HÕÑüÇN°qqrþ:Wæ¶Ð½á íÇ?U èØü÷‰RæŽÌ÷«× ‹ Ð ÚFܯ^¼¹ ƒhòü³ƒìލ š/ÀÒÑí }ý À!ö‡è/ôÚB¿€Câ7âpHþƒø8Ò¿€Cæ7âpÈýFPNÅßÊ¢ü⇲¨þFP?߈À¡ùAãÔú œÚÿ hœÀßz‚Ùo$à0ÿñB9¡+Éþ·õ5ç°ø„fúäpXþ B#´ú„ÒYÿ&‡†híåd ]–¿- 2ð¿ 4RÛAh¨vÿ‚ÐXíC.hdÿ¢‚® Ç߇Am¡O”©¡‘:ýVC} [ÝÁd ù-åú[ú×Lþ#†VÓ :‰Ž¿ë 9»9B@ÿåÏ#ð·ô¿ý¹¸ upù„&íú|urÙƒÍí§Ã ­„«ÐÕú_nÐ3“B7ÄÚôï¡>nÿ‚Ðê¹ÿ BÏñø ¹¡ðü„Òyý ÿk|ÌÝ\ å€ü¹ß ³õüç³ ò™£­,:š …Ø4„tÝÖ‰‘{°íMŠÌÑíé¤1±y¯¸t»Ýc!'3Õfmº\‹%ôã¬ïH1^½]¥zòþÖÞ„ÞñA­óÁçÑ$A}f¯myšèÓTÑ7±Æ! Ôlšo÷}žœ}´máÛa{äéòœÝø±T ðo=e<‡*ÖÆÃ÷Ôök_+ ?V̲½×Š1 ,§Ë7Ë^ ¡A‚°Q 0ãybÏ_]ÏáåNý¢’O`Aóýþž§Ø[‹;önáÝ—*Mn×^RZR} ø+¼ñzoñÃyâ%ï²’˜M‘¥N&v˜e‡¾‚3q ãkŽbjn6™%¿ó³¾F€ò-½]ð³Œ+ÜUÚW:ÇW­g<ÊmÓªõæ§Z¬Izßêƒ8 z®êGYTÄú,„ÛU³­œOŽƒ¨Á†9Ö›žEBâ,ͺíôë¹LþŽ éxhÕr?Ma‹KÄ~°á÷…:š fƒ*-²ÓV¾—¿uM…w¢X[Jê¹ëayÜ:˜—)eú3i˜í‹súf xYHi ਴š‚¥Ì“¤˜«MàeЮG‘-Ø«:µ ç¦n¯W‹_¦íóSc¦jørSK;‹ˆ*h†¯©fyù¥´…1ߤ+ e‘µÌ!ç¬ï]wŒ‘ .¦)²5‰ž £…QŸ™3#^H›±º@Áq‹õ,›ÓV²þ>¯HË£ —¶vB0»âÕ‰õ*«Š€µÇ‘fš!â ƒéDª(D¡^ö×ÜQ©yçÏŠ 3þ÷.´¦Ò½»(¥õÙ÷.×—']¡_nû>Š_]ÀïÉÒú¥ŠÌ'4LE·Ħ­ŒÜg ÷Pï§4ôÕ«õ6i0#˜(NzíêŽZ1wS¿’¶ ðºÀt—fïðì§×Y ž:˜5T0˜=úX}osY¼þ³aS3‹ÍÚ¦-m¡7Ep±áxÜÌ|h®À“üÎoÚŠÒ–Ó?øP?Åh²¬‰>†‡Ç*æ'Ïþ±‡=÷ Bo¬“xL–Üx"V¤ _œs•4ÖÖQP¤›ðc˜39)‘)æùiöj}°YóSž@ÜE~òïzõ‹ì\86 b®ï…Ú‹Ï;coL'Õ罨$ÔxQ¼:#b7†±ö0Z>Ó{“ºÅ©YI£M“»Û5¨æÿh+¯+ïëE ŠÈxÙy y¹uàF!Òß÷à: X¶®‚Õºœšú‡6f¼íÕæ]À(D6ñcÒðk†½ZÈxâ0n¨‚®GáÕé!Ÿ½ø¾í wÅe«3ìiv#Gv†NÃM{›ºdqœ™}zgé6îuÕ¶ñ ™„ÍDáÉzÕ/àJtPXÕ6WýȘú.9%Úòõ˧’P÷/ún]›0úû4ÚZR#¹÷Õ·Ol—°/`Þvú#íŽàˆZVÀ€Ý Kºú1ÎxO½jʯ’Bº]€× îo™½,§6‘ ¥Qƒæ^¾ŸÄ×lÆ6‰°Û?VIÑȬ"cë¢q"yª1–B?K–÷‘%ÞED¢šÓaÔ·-§¯yÕÊKˆ”¿C_·w‡ý>Ù7V¸°.lD¸‚dy‡n»°ù¤—[’‡†BaÝ«uS²9Î8ÊÈ9k£9¸:e#¯Z€÷Ú×ÖÇ_N„_éIÄ)Ð>:ÑøG¯¿\‘7?†A•ξ¦ÔËq|ï‹Ò#–V2‰ÿ0÷µyŒé[Ü“•Ôð-ž¹ºEªLÇÁÅ].«‰4Nf¡£¾Û®AÕ6Áõ¼š›9!­kmÊ‚ú÷å8Æ&ØÜ¿· gg\ËMùk”ck³¥±IDYk~ö”ÆBK~¡ýTT„?uxšÌ¯~ª”C¶„ÌÉͳŸ¸a÷¾Î¸Ð¶Fñ^°²]‘ŠqužFq`ãeHÔMކ‹ÍNòOô'oxAû_Þ¹°+›ÄŽªz_m²°ƒ"à8BBãW6åUÓ‰é/ŸdšU[¿¬ó(¥ž´Nâ–Â^UG$x™½*êÿ¼3]ì‰h½†> °hyg5Ìž>ÜÎѱÍ+MLµ›QUPT¼¶‰•$Æ÷@ˆ áÏH²tàÓßæÑKï©ExÛènßÜh†ÜžØšˤħˆ"Œª}Úª‹à¢˜›jœóIrn›§@È"y|Eõs¨[¶Ùõüý-¾‚ñÙ¡ÿðåFú8¹L(õ˜xz–“ñ|X|áÇ´Oê’y>/è྄Œ¤Š8‘œY`v‹|‰Bàùl#¹÷Ëýh8¥úb íÓ7à-’º¨Ã°dé¹y?j×T߯ÞEn´Ê(ùq*ˆ‘_»-þ˜ôº[c7ì`~¾µ¼¬¬_Áà0BYÇɇ’¤÷»³jy9'_‘ëP§üW³¦eò¸+é‘9©»ÙÎ@®ß½eÙt¸ê¯:‰A2­_£áç+ôW|úÙ¤h_——Þ+‹Bô{ô ‹Ü¯Aóëkc¢áC—µÿ<î€kÅV‚-Éå¦Î°­î:CÔóð9N°7ÕH¹m¼iÌË€Ícö‰±¾ˆ¼ ÌÆ[®…žŠê¾wÊÀé_ŸJÐ,·¿¦@Ú|àz¾ë70ú0Ÿïê&ÒÒJIÁ6~!÷äß«–¢v½GÝAç°®5ÂfŸFÁn·ªjÏeu)ÓKüreÿñ?‡và<Õ>h˪Ö`ÝON‰tñ*$¡4›ZÜȸþCögk‘ëã[RY¤iÌ‘ÞîDï…§µ8³QÚ` FËær…ÀG|á@Ã?G£Ý´±<_'!UY>4dt\íæ a˜nÝ®YZbÑ—à§/—ÖµŸ:Ы\à–›ÔÓñ¶ñu$N³¬°ÄU»êÆ@` B$©±¨ƒi7°—{÷[O§>ÏÔÉ(¸ˆ9ãb¤plVÃQÎ_w»tgÊ6¢?7—Ä0ÕƒcŽÞúû”)ôªÞáðŠqDàœÔ³é|ÌNÎ>ɘ=Å3NýB ¿+Ç&P¸8ô>OµÖŸ4 ò!QîLogÛ…ªKE©þՎ˯Jêp ø\«‰¯Óž¬¾!¬7kD'Ò²RÝ”­º”’4wsXFy¡°Ov´ô˜x[KîÝìzo|ñòêÍ´äH4¼ÓG¸ùVE~—Ï~GÆÏ´ Ù`@+9„óûÑ û_îBrOTHÞ±ñ¨?`Gí¯´êO¤¦&| ŸÝ±–|¾ñ©SÛ”‘2Dµ™ßÏïp·_{‹8æ½AtC˜¦å|jßìL…ÕpriO¢ q›—ÝeÅ6šfä…}”ç ÄãÈQ¬ÕyÆLÓ3·i(*ŠœFA¤@½ð5/å_…U”ð)«² ¦ëÒ«¤`I8oͼ É€íE6L³-` ¨Î^ÿãeõ}™ç#µž~mD§9þfü)ølÏ—µOµˆÚŸÙ¿ý¢õCš{doš/ìæ‚‚Ø€T¥µ°Ÿª^á¶R¯%?léûUŠF–Æ|Å«…;–7X±]0õmvدk÷´jô:~”3T—Ý™8Ñ! ÿ©{42´å ‘˜õ òÌ6¸»Á>ÇÅ¥ÚRg„Õ8dß_qG¿U L`†!ÆwŸñõŽÇ~k9ãœãÓUYmcU.i“ vä…_ÏÑ´Œå ±Ì÷Š„¼IA¬ÅÕÑÇ"%¯néòWÛv¥²e£,FÖ<£?©¿h:¿ÏUä bhð¡°gµîü!ÞLu—†Ä׆‡“ge|÷BIû±]òÑün˜0*„i“Ïj¹Ýš‹È…ŸÜ…Ï—”Uñ} ĆeÈl‹ÆÑÙ‘Uõª?ÍÌQª•uv‹«g½`ª.w¬:Ò>®8ÓxÞ J©QrŸ½ãŒP¤£Pq‡u°Jð®q¿²­"?Þõ[Žt3EŽìå»ÑY¡wÝºÐÆ¸LVãy¶’ÌùLE¯«wÎÖYÍÇ\I~ÎùÃóÓ¸Ô)D¢ÇCÈ HÃõjÐÈÀ²ÑŽuëPÿý~ѸœY¬Qü‚«Ç–æ{úÊòýñ¶'&ÉPÙjÒ0H£eüuA¦_ÿ«›¥Ñ,²åš¼¦©Ïˆ_ûú‘7m#v)B_¸°3µ$Û5]ç'{š4SŠF¨UëÌðp‡"g0Ú•í|äˆÚŸñ TY2c“N9˜1bOyQ£ž­*I˜$<_¿#ù ²%‰Ø–i$Ù_Ó¯ˆH%‚À±—>\ЋuÕ§pŠóùªº®ÈtqkD:ØJÍdTm›ÑáÁYµ¶³£µÒ„1ÍjY†\Þ~°Òö®ÿè±Ú¶Â}É”·ôoÛ{>.ÛØ®Éñe†ž˜ú¹‰üðM˜G^†éê-p䛳ßϦì`ÆßÎS¬e†^¬ï÷77Ñ"”ÕžM¼Œ!ï2´zÏŃñýìlfö´ÅOž~x§Õäϡ˅¡‘¿ë,ÒölMÏçvQ‰ s©]vˆ"f2ßÇ3¨ôx·ýÕ¯ß84²ÇÞ'C/üyøa~)Ùw–äìÖz£y z÷ž3d¤È|e¶î[\ò옖ËÇ×ÝL›ÞjâIUº/7$åxl‚ŸA‰Êð¹Zº¸,EßHaMÃh¢qT ¶`‚;vÅt;€d>à"„”$ Y‡j*ÛvV²Vô9Qôù÷&^<Ƹýˆæ·¾>D@1V7êã{"aøm!.÷Ä·ùÞ¸R³U•Ãcؘ}RßùXD±ÈM›çYøú5)æÓF"8 rý ¹ ¤A{1Q­r™¯˜4jpuW¨Ü•£š@ÁYB‡QÅgkzì½ú#M¸y!C?OònæíR9=R~¡ñ(8£inß­O½Ç«0¬‚ëz÷#6ÑîEE¸Y1‚Ó“Uö:Ÿ 9S7d»Î`K;rF9ÿãò³ßgã’𴃘yL 8wÓ¨ÊGwÓ™p{l´¡Ý<ë¶²§Ô7.Dõ=‚Á r.Ke‰ï[´æûË·t‘ØãW´Tý%¬šùJHÜQS*_µóA¹"É·Ÿ5àø¾º&›Ä…`y{fa&¯Ò~|©þÈ5^a—…î…9Ðbì£ö“_§8aÞCO:-ëÈ´Ž‚:U6z7ìc " ù‚Ùëû+Sî¶Ciê¥às²ÎÂ36 ›~Õ·MV‹ /Ëü2{÷ùL#ê³¹é*n cÓ2©QR”Žl^ÝÉ–ü_bUeÓ 7qK"ZÖì ÉsŠ×ó»­"÷ØöœöäÚ(8ó{¨)véèš*ÒÂ×KJ4ºcÁ;/®»ö$c-9Gí]D)s2L2âöídMwÄBÅ–píg3:HÑ׫?¤ÀÆœÚX:Œk-¯¥Ç Häd¶ !­1ëƒûÝ0çîkëK›«ªÎ/¤h•UMVBƒ,îÝëÛ®Ki°5sa$ Ï=>eÝX%³\>|x—©âts¿Z-ƒ¨ ‰uªßÓXô~}¢†,ì¾™ÍÃ’bÿ*üQ#œu×—Š¿Î„¿ÀÒœƒ>N7=„ g*„—UóŠ:\ÁQQ£3Uy2ñÚZÕzWòlµE=!„ícHM;™ÆùÑ~tÈA§(jàyÉÞB‘ÿUuE*ëèzH¥û”2ñ‹ø.€é82p?±ÿÕ"UÿËXR ä#:=»È~DÄ‚MAojôË„@óÒ}ÞÊ/ó¼gO|GEù¼n­ÐðÓ¬I5ZC 0¶L!ú%4̤D‡jô ®Hnv£óò­>8¯—àÀ´.R‹ÒºVV“7éÝG‡eMä*K˜?QT'ùÊ[OÞŠ¨Öo5¢[ ã–¡Í:HSAg_N¯8RDÃë¾Þ^Ü¿Rî0ЩÿùŠmoaüôaSïí­bT$·ÿ¸ûfGK rô¤2³ч1g°Ñ-Ê)‡±"ÓeTSE"¹½×&™ÈED¸Âq3~,fz­Ÿ7¸â=ë°*ÊÎÝ`AÆÚ¼Û9‰;íq IØl¹Iºfë’^­.Á‹*Bж#EWDõŠ„·ü´/-ªt`Rô…؇›CIÞ¾ 7ØGöj¡cw®;¹?†º³*²Ð¢“+zg2 |_æÁA3%äl©sN›jŒR³ÃI‹kåò£¨s‘ï~lÏþ8Q ¾ÖËaþ6Ç[°Ç‚&@쾕Ä}êÖHÕWùŒ™ÙÖsTè2ß6àõzØ,–çH0]Ǧ±.÷ŒbŒ•Q~â-ùE踶}mk5l‰’µçÍn®*ýÆiï\òýó «‡‚iãÅBâá'ÔÁ¢ùÄ1Ÿ“úÆï¶Ã{d=ß9ò'×;ÞËÌ'Á;OÉ3xT‰ŸBjºÉKRýs¬T¾˜ªÔçošÏ_¶À¨1ÌR`¾àH›À}h©iCIﲊoпætßOh½¤ÔQIõßUK0 àOõj ³U+ÌŒ}6 É {i§Æ—èíðó|Žâ\­À¿fÔDZ¨zñp®\æöö0¤³‚°.ŠŒsm¡!@Ýþ¬Œ9»æJPÔíÜS€Ç§n¢xQýeû -ÿ°¦ûeÌDŽŸd!»€^s!c‘ÒŠ›.˜Q©À—ß¶Bi5œÈQÉ5{‘ψìÎ bRè”û¯Sâ°V—Œ˜N¨I‹MULS0,:”¼F@V){’™Ý¡ýŠ"9‘xIe ÖyÀï*¬,ù:ÍJ°V9¹Ì7Ž?n¢Ûíƒo!eW¯M÷›ù3u~ Õ9Dà®wÕ­›ŽFu Ã - ‘_|—D¾?Fë*v¯Ò>£ˆ'ëÜA,}þˆÕQw™pYDz$V´6q45ÛÅ»¹5°úÁ!³¹Òh{`·õI½;½Iïù]g¿§l½€¶÷´ú Ä2ržšw£ÈÍŒ¯õ÷^ N6~ÈùÄ Äïœ [ÊІ§~MC6 v# M_Šœ$OvN6¥u†¹Žû8¦ö™#-äÄ«Tz¶Ðƒ:æ>fwæWa»øžÙ™²cÏpíôê£]êƒÛeaÓÇÅúZrZ¡wKÖö˜ƒLñ³KVòfÒçŠÀñ}É1»éº;fÖ2Mœ‹sÓ££ûS£ÚtOqËÅq’ÛZéô‚Ïù¸7*±ý*)c`kÚ>™9å¥i)Û÷ßH#®÷ï"ðIPyÅ„ÇÌI3‡ãÚ!å׃bzƒ ¼9V—e„d¦~fEø%ß’¨x–EéEjÁáIF—æ.÷áxÒ‡N)Øéeô³Oˆ³xÖ>iOÌ(–5ëõ…¢gg…—+¶\¬æg[ã÷Vã¡ÓÉòRý¨°„"áˆ_i•Þ½,[DŒA%ãYTœ³ªÒ“ ë|s!R™ð€¸Š|K?%M°–4²¤)±)c ¿X¤#ü©è a¤ ÔùQþ¶¥V¶âÐæÜò»€ÀƒêOz3 .ó+a<µF÷¾ O¥)LÂᚊ?_&1/þŠ6Â35ÿ7îÍÔ¶y)¢ËmH%$ñ+d¿¾sWcÂÑŠÊñ ßSø ¸vØ"m¬•`µ¢`„辕ízÖouFR”}ŽmÝÖ»]C Öñ!a•x|— ŠYu9áËäFÝ®´²òxÁ‹‰.Q'‡p½ÞÂÇaô ÁKù¡2ÝBÖ¹8†¼TãÍš]tœ–7¨`'%¾’}¢`ê'û9ú»xþ"`šcÙ ´¨ÂTÔÍçU²_D`ù+j½‚A•ô[:Ê'Q×»Ó…½?fµAFî`â=»2°,„ëkêÃ,k&Á瘪ËËLF× $KŽå—Mþ$p¬ÌŒe½fÉezý\™;R~2¾û˜Íßc”@š";˜Ïø¼#vùx}›‰lÍñl–Ù]s\¯úÔ»?|²a÷³ž¡üpT¾¤¢”fý «q"tÀ_U|-¼gèy7ÿUVȳ¢Ç¸SeÃÁDVuÁìʹ`à¼è}—ñ¦ÔŠ9 uÞ?ÈÛÐWTÖ³TÄw¸pô…e`œ•=fr®jòÚAÉkßëny9‰Ts;éžÏ-{†ïIÓ¹§þœlÅ·p~Ãú:N6˜ôZ‚Ę3£Úà•ªaº†å¦mBg„±x£š1Hž .S@Ù€µÕóAÍ“OúÉcŸ’@N'iÊöÅQ”XU—ð·•^*¬æ¢´¹ ŽL$ ! é¼$ÀyðN•íæ,)Q_]è ë|WÓµñ:–(b‹ƒ]µX 3ÜôÄ¢o0§]^Ilõ««÷^O#&úæš7$ãã¤Ïy›‡x¯.Y22´ØJòøØ ¹{ó<èm[›š¼•y%1ýK;mƒµ;z[¹ÐêãÎ[*A”ùð{%¹r|˜ÍÖžTŠ«Õw”køDD¹ 4kÒYð©µ]ï}íôñF¯¯ýýæ8)¼®§ WKÜÀ‚]œ„vð¥ÁÏ­n¹JõvfÒ±±ÖEašgÃW ï  õò œÆÃXç#rpvyc EÊAŒœ¦€¦È¯ ¬/}¬~5zQ˜öÚ–ÇïwM)Ê 4–•vG|ÆXôáú«œð{ hÚÏZíÖ¤…éŒ<îL¶wU1ÉÉڜيüßœ‚OeÎ$>°_F nÓû»Ü°N(Ô/× 7bGÕG'Û0ïD#¯úÖt_dqºdS‹ŠÒûi7à)Ë ¿*…Ñ[b#-Àá³SñKóA"jº 7-އ»åäœ+"UÇÿHÄgz©ì¦% ç­º™¦\ý0ú d& ú,X9ÙÜÓ-ºsxRFå…¥Èäº{bmÐ'„†9ÌຽÂ#wcÀµ)M|~Ø–ïQ0üi,5Á&´iäBEž«oL.)Ò 1¼4’'ÍWëž]ÌŒ„5Û6øºP¢5=§~Ù &°uÞ éU–ÉÒ‹¢9è¢6Ö7¯#¶N# ܼÍ@ÛG¾ðB@WïUŽËo/‡Ô?ƒXÊtºÍè^2Ÿ4›«Xñ…¦G÷y»öLqðȯwQ4¨LÅà©;¡ã_Lœx4õÜa?Ü׿@m” ¿Ú¯µ ”åÄh%C@ŒóNRq_«þ%ƒí4­™*o¢CÔKSIPP[ÍýT¡€Ír ¿ßê4r!zïì‡@¢:yþÀ n_¼ÇôO Ž µÿYh—Ûqçêl4÷k¤2H{‹MÙo;›|Ô¡Ë›½S«™†Ñt——n’þêûùÍ'“†ÉÆ! V÷åàÔXTteê·ÜÉÁ1½Œï¿Ê c­Cè!"íwóƒ"”Έ?Ç”Y gL4µèczŠZñ9†4[2²/mS.Îéî[t´¿J—@âY-¼Æü·UY[}¬*ª«—çÔ±!wÆä>Y¯¢ƒèªˆ£†Ä 5ÂåŽ÷ãú{K-p™>ÄmG*þBí D?vJTr_­êzÿ$¡Ñq÷Tô. ß°§æC}L÷üÇz÷¨#C– 6½ÏÒú':]ò›Hì zðthR„­ˆJ/¿õ Ù ûL äuÙÀ^ͧž²Zìã^Ìg§n𽬊ôþÉÞ‹Ž ÿ^çÕ4#lq&SH劼Á …¯‹ÿ©ù`þñ4bÍÐ )6ðø=ldÉcÎÔNõ%«K'ó±üSù·H{~†òWLO$Æ›Q®Y—…Zª!Eæ½§rRcëCË&o€—‹ÛAPå7__"ž{äš1"4Ä‹«æù™Ü¿ö ÝÌR| "¥ÎòÅùY1¦A¾–OavÈO.Ib6ؤÄõé±/Àb÷ðy"4€ÇD»3û8ßüx¼^¸^Ž8Ã=ôóg#c[!\ìwânç®je|fŒpÀîAgfmLçG Oy×¹vÓöµí6ØêÍqc5‰–™Y9JàþªÚt`öFxÀ="­ è¥âqå{/uÇ{']r¢ŸÏïÓ‘”™l5Hɤ£¨½ÕYüCeÒ&¿‰´¡0:ä€ Ö]n$4Xg<•>wÆõžÚ®~¢·¼xxªºb ÿ*¤¸^1ÌùÅž%N÷Ç5õ.‚n„9¬ÐÊ{Dú›J¬<œRìaì„P¹Ü"âÔ“ <îÅy³Æ±d*}p¨ÅÃ×Í Þ>‘¬¶¥Rä/²ÜÙu>–Ù#²)|c ÔÓ0“í’ kVþÕ+z«OW…KX{ǧŒ}œÊøòÓ§ÆaÙsïW+ Ëž ?ËáæûvGO£»o¶²x€Â`òæ¶ÂCoò[†8]“üÑnV÷b¡ U¼„"î¬ ‚ˆ‰Ì—یϡE‹}$2ع‹Óc†ÕTC3L“x 9?¸äËX&»_¶à˜ˆNÔ"•z/å„;'<^iMc¸Åíå®k¤nçm˜Ä#Îû}$¶ß ·|†5„CÛPØ_}ò‰a/‡_ìXG&f dm×Êæfߘ¤ŒçÄ$J³Gm¹sÝÇx,D=paUWÕÅÞo<á`XÓúÄ wÁÆýÀ^hBKþ®Ùúɾ©ºÇC¡ð(Ûe„Š_¯_âöL”rͳ*aÆIcNÐ&ûEª0*’(’Ž˜›p—úWzW›f«öæ {êòCÝü Ó eO'6ÎvòœO’Ûå'š© *Wò¥”ÛV{uºLÉÂq Vo;°S´É4û·j¼Ö04Ñ\RKåy˜¹‡°DƒÒæ¤os$ìøóIP/Ó= j§¿¥p}9G nKÖ){ÖðL®JÊá#¾°ÁsH3P 'm‘€9é´Yåf„!R|.E7êߤìŽy.­ƒ•Ü) ÅŹ§b0¦£1KõíœÍsßLÀÕ´³¯V·-ÈŠtHp¾BÜ«cÝÔÒ»µ©ÕuŸà|Ž­l6[¨”æÈ1Í~~u‡µ…¸äæŒËäGJËùBë“îäœ@dO ÈzJ2z,L:6n·ïÖ1VIÓ²òL¨½%âK·Ï¯¥<óï'Ù„÷UŠ Wò|ö^(‹ÿ“˜çéí®1ÂçÜÇC}Ùâ%)ò×ýpgÇ͸µ›yƒYÐ<ºãÀlF#íI€;ßT/öÓº-îècʯ”››†!@ì “B†±*Ûˆ¤ë‹$Y6¼¿ÑêŽfÑ*ÿ‡øzTΧsýÖæá¨Vó®fT„· 3ô SY u6»œqO™½/r¶0Y1»ÜÒ¾‹NpËóÊ?ÿj3y‹½3›§F?0·aG¦Cî¾²¦49쟲û3VH[Ä ;Dð .õÅNÅZ“½÷½3¾ù|Löÿ©Ôâ‘2,ïc¢iÜÑ•šo­{º£æ×xrv2£ð~íâC¸Úxœ&ÚêDóK —¥´6s½¯*x[ï\jº u a–ó“Jê¸ÌMKÄMîŠ}TXWÏÖz›Å§Á8A¡ƒµ‚´@ÛšÈN æ"z)n{a…:œE"{†¼±ö‘Ÿ×\?d¼§Œº.n8²‰=ר°ŽÃ=s÷i·­WôHq˜ZüYýhG4 Ï›“©?·wÑÄ[ßñÛÆ‡×€¬)ie½ª…Ñjua‹Ð&øA#€k£%h&ê¨B¥Eq¥þûí»XÓ7õ5\è`ïröŸ„h®„;œÊqƾøcdÂ{lÅ(×ó(Hÿ°ÀáÐðÆE•1^ \€mXÝüx§^ 0N®,â‡ÿØ™.Ø~.Ìã“Rh€$­[ÂѺj…SÐS?”¦äÊ{£ÎYüwžÄÐn_WÜÄãNUêµ¹¨2ÔØäNoõ ç"tË1~@jTK`ÒR¢½»Hѵ‚¾¼Îão·£åäk*—"ˆ}wûsF™ÿ‰”É V6 J¯´D^ÄÚ¦s0æã¥Þ‘~6B' ÆÆøˆóÌ,«ì[×âý£žáB5º~&2àsxTÍÒ™&QŸo>ÚJpXîÄ:à2é‘BhA(?~±<‹Ñ½Hi*Ášó~jõ+›ØYðgaåÖõ..¸``ö„7›Ad£]¯v…çYœŠpóË8½Ñp!êÓW( ƒ2®6Õï‡Æ8¡ÞÒ$/œ ¿Ö­7ò¬«Î)’v4 pGî2ëçâ£CÑ­dëÉuD/³Î¤~ñ™|Z—~RfÇ·%/¿xåÙOµd´õ6ä¡T<õüMm(¤öQ_ñ?ÕÖP½µô(Hñi¥¢pŒ )Ò·ëÇÇï 6½jBœs¡Üí\ãQ?ú¢Ý52v#b[ZÊÞtR8¾œ¹^Úic £»gJÎçû|Èn5;ñý\±ÏseƼʈŒŽvÄѦœäN°£6nž÷’ÌuÿØa‰¨4¶!…²óš›‚BCv"c7ÔLiÊØáfŠe'Ú–«Ðzÿ"”+½úŇuAMMú˜þÛ.Hh÷#!½cp>!:3 …˜qˆºß* .^ÝÏ“#ƒÜ ·‚m¿ÐpþÑÑ §‹óäLäEÑÑ­ÐñBX9Øé~%=§°MôNP‚lÜ( »Çßk‡îW•Î}™Ò¯#´ð±æº( ^RÇ^Žõ7Õ;¦ï*í'Ý•kë 7~š? CäÅŒ€>·|ùxò^žÂÒ3§™HMò>ü`Ž#l›ëa¥ì¢Ç/$6%¶$_•g˜ûJªÈ( ¬ÕóELWo~~vG”1½ a@ÏnPµ"M¼ÊŽ2‹“IæQ®™› ÍÄãDâ±*Ãh©½»›¯Ñ&àun¾ZÔdh¼Lî€Ý µ3¬¢@ áÞ-ÜxIe«ÔT,€*Ž'4àD™ìrÛÇ?S66©š·þ „Ø,¨ÌèF¨ ²¼”:…3dxG&«@™Ð×Þ‚»Ñj_sƒ3BÝ„[´£I¼!©ÎÀdþˆ'ã/´°b”þæ“R‚b”ù/ÑŬÒ=ØNo™œû,¿|t‚4‰ržwÅŒº¿Œv¤$/·åo~4m‹µÔûhóhjÌX0ª*¾z“v†ûcç‡ëâÕàÓ®ÖZÀ—ã•Äðdô,.%½\ûi£ ×&öÝÃüXUªãÍ›1^4•©=Æ;š &á) ð•‘¶i1‰ L{*Ò¸u»³aç3B†8k•Wt[àYNð|ïM»ùs‘G}ÎÏ!\ªdËû¯ÁÏ §‘Þ)¯½Ò-±êa{©Šþ¥¬Zý D95-G“Te^\‰qȈ÷uO^Ÿq=Z[t{9zÔåÓwÞè-ÆávcšÙ/ A&[ø¿¢ÁnoG c–úGUí[E›ÊF5óšúô¡ž']á­±OÕX™fÝ\ÚžˆÂt‡³ÿØêí (á›M‘¶„|ŠÊÆ,´âWQ6øÅ?ƒ/ÕÁ\Lo?Oi C‚QlEÍlEÒŽ.{¢óÛÁŠUÙ¸¸OïêÒ­çR8(Ä%k^§Qm ûУÈy„_ÕÑB$’£<„ÛŽœð ÖÌýòï8gÄ\_2Âçz EþZf«a2ÜÏzŒ»w& Ã/í¿Y ŽÀ}AuçTm_©ˆ49a—vex?ÎoÍN.+˜sdƒQ_ð™!ÝÁÉ6½L„;¬ÕÕoîwÿøÁxPöÁ©W~Ŷ ÷üzŠ´0Ç®úËâÍ‘ r°žõ†Z!ïÒ S°þC Å!‚OF±Âša5¡°ýn“¾ÂZyÃNr»xšp ^b¾§Ç‹ËCÅÁv\*<îO8C†<ŸgÊ/m fÔóËW}2Bp¥wi"Ð[­‹Û¨#›¯¨¿ -¾§{éKPźÍöE‚#›AâE½@Ë üÂÔ¼Z#_Ú¯õtè :|Y§@„VqÝ»0wÔPÙÈ»Á¿|4‘ƒË?“«ùuoËÚÈ?U­Nñ¥p~¼€›|ì³âµÂuÌ0¶ÔŸÁÊÁ$¼1B.1Xmn)L àX‘‡8´¸€w³hYÓ¶Ôò 뽟®íp÷˜Ê†îÔ#àÌU½3±P‰®Û¢‚.$!F¬ì…JÁŠsì£Óåzä‚Vþ×ØÝª'ç•’=Ì\vL„Ô0•ÏupéôXvÅ£'Äjùë´yéw'f¾¢’m€žR¶Þu˜ÅU'M_+y¦9pzXÅØž/râ¥ëˆQ>Ä0·´¶#ð…0Q ª†+š§¯e$¹‰½ôò.øÆdI§Ô¤i袗¹jÒ·!ýâ}í6¨±¸ˆ&ê— Îo&ú}-ï.ûü>â+çú¦ËGÌEåk ¯Õº JqÃ=!§õf8íÖh¤Ïü~yÇ™[²¯ðƒØÿ*#i@þŒ ¶ÜÈŠÇx‹p.a`A¿qZ&˜‰šQiT¦auÑ#wc䫌Cvj9äR³IW†ƒeǤ¶rp@©›“M©:¦ƒÍ\iý ­H¹p)i̯ǘÍÑÓ§X8¤)H_–Ãû·‡tÚrp?¦c/‡~Qâ–óß%*-Ò£ÄÝÉ;¦¸Æ3¶ÆŸ;3Ë•—¤—’Ï€o›„ÇÎÔ>¾È¿Š«‘w³eC’ˆ29éŸK`"’I:NmVè!Ð9­4]9¡zˆè±üÄ›º+'¦[½ibv? æžUö¾¡ùΗcIzŠ[@"Ôíd’v‹«äÔzlPKÐuu¬¬mñðq*tàðªÜœi- yƒ-éA“ c°Å­#ì绾¼ßŠK÷^ˆK&b°ìX4Ô÷!â¨ÊF: *âE5Þgqè-já¬rYõ¦±®&äýIy2H’Âi*‚˜$e߆„è I8iÿ²åºë$DJ²Ø¼ ÓÒ7ïÜB‹_Ãr­6êË+«†7^y3÷Þ`Ø‚ôüx7Z½‹kÜQ@8Fˆ·ÛVûEu©.‚od‰œó é0BJO ¾Ât aÔ‡RÇìQÇ«Z.X!ì;?UW­Ö×è¤-ݹ)¨Âž?i…CXbzˆ^(?d@ÿ¾5]cý]ìD KÏ9þ"§E(5¨È|¯Nkrt¶Ú/‹Åj‘­H\!¿}zÑÏOIý2eÓ@ëÂòò²ÚÂEÑQÛK7+89šhg9IU¥P¦íÝó´‡Mr‹‘û¦ÛôÏ…#î»ãªx7¬Ì ™’Š{¿:Ê¥™ÑÞñcQ"·• ”¿LÃO‚Zñ6-]&Š\qãSkse ÷2¾Ø§MEK™"S£#qŸ‚x•j39AZán݉¸,x±âÍ&®OrXg¼ih;Îs÷f3ÒOU±#ÃqúMá%`šëé.ã°yBxÝ$2Ϫ¸—¥ßFïRÚ`M¶üêý˜|ˆ^ðô‡±…xÌš®á±Î=*êéÂ(©­ˆ8n ‰?ÄàéG„ª£OS/;ƒ]Ùö¦±‹p7²oÖÚU`ÔzC–¸§¼åí|N³.Õ#¦éì€õ‘é¿zÈX0s6±âc™7T&y†ª¢ŠÃæ£ ŒŸgG—?RQ~ª©Hçu¼y»£ê;é`;,^,"#7­Ü…‹t’ÝÜgègF4ÚJ}õi³•š`÷ê÷ÉöØ¥fßtOõ0g-Qõ®íG63œsò»{-ÑÉK‚EÞY®/£SvO‹i¡·Þ×3@£ˆìÔÞ“O‚SÌä…2Ðź±Ý)FD”(®ÿã1 €¤àÀÎP…k‹¦]RÁ´¬aóò¥Ïô»æ6pÔÛé­\|eA*̧6J*¯û—ÁèïQB*¬gÙ¢Õ µ:!cV’OåJ:pÑï¶RÛ‘~T~:3;µ«j‰¢,väz )!Ÿ?¸xØ•UwºÓ©¸ç<ŸÙï¦*G×;Ç«1xâãéü¨’9Zpίùn|îä´NüU¸èžYÀáÿAÕë¥ endstream endobj 329 0 obj << /Producer (pdfTeX-1.40.19) /Creator (TeX) /CreationDate (D:20181218114424-05'00') /ModDate (D:20181218114424-05'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018/MacPorts 2018.47642_1) kpathsea version 6.3.0) >> endobj 281 0 obj << /Type /ObjStm /N 77 /First 682 /Length 3352 /Filter /FlateDecode >> stream xÚíZ[sÛ¶~ׯà£=glÜo3ÎØÎµqœÔv.mO‰±y*KI§I}wð*R±’Ìœ—>ˆ\‹½|»À’¸¥ M¸å‰fÞ"qRÃ[&Œ:PHX t•@ Â&LZ|üƒ^%õŒ;½Ðr*ŒAË™DŽ„K„"”%’‚.AE"…”@¨Dj3¨I¤5 —( âAF¢4·3“(‡z•{O`šæØE¢%²‰VÜÁ¸K´6“hËÀv•h§±Ã&†‚—.ø 'aйÄ(SA¯ÑÀÎÀkc€àœ&Æ"!`’CBƒ&ÊÐ7º>Zè1EË%Ÿ1pÍ¢oLШ°‰•T ™XEÁÌÊ€?ÐkµÌºfKÑ.`¶@?±Nʃ^GÁ1"2‚¥Ž9hÈÄqÅ`4qB3 ]à“Å!‡^$NA¿> èàÓŽÎ4ðø8 Ð Ðé˜#J¡_ †ÁÌk6È–Sa‘਄° ‹Q#€3´Y³™àh½€dcZZ ÀYs¹BoG 6 < “Ì¡n‘rfö$À!O”5‡ ;4Ç!æ>ôÙ…£Œ²É§ì’MÓD œÑ=Ôñ9,?D<ärp…cAƒb¨Í2Ôo´CîH{ýžGR{èâ3HìŽ …üµ´m–ÞçevžAW—'ô)ÀoCX}†e¦…^X/èƒØëù„õxpÄý€ÈZב䥆ùQw€MˆPÔ8ýÓ9”ÓíÅ‹š:¸vQéúz0f>nM+âÝôuç`oˆ\ˆPÌœ.^gMÄ|ö¼ƒ¯ÿýü ¢¬ Ä(‡¨kŽ‘V~(ñÑÒ÷ÇlÀ(IÏ£EX“!c|¶y:ö{ ÖaVéZiáiÒ`lö‡Ö¿1Ö°±ÑCþLe}z¨R¿\E>}°ðP€£”n| TZ)}Ba‹û­ÇÏÁ¶£¸­AÅò{žïæ'²5-ÕåÖï þéÅwÇ:æ6õáV©Òø 6­èRЦà–F/´¥˜Ëa¿¶w]àƒ:ïwµÖO ;¦ãxìós£t¨},å«'–õZ=|´ß*[G‡T/,F£Cw¢ç{{1å­Œ ÕçÂá6-B©éŒžmNć´C8z\ «Á÷=£Äð”¤+ºOl[é`Ü8‡z^ ³!¦Â‚†úª qDn‡ÁÁGY<ƒPŒ˜Q‡x¨ÒžÁ‚gÎei+œßVA \àp¢¥çCÅpÎâ‘ O '§Ëzht=‚¼¯úʃèßa†Êm"?öÖþû^‡ÏÐㄉ-o— í0ÂÔrù±€P ýóÝì§ŸfäòËm–GëUõ +çE~[­‹™oŸ¥70rþøíÙÑåNž¿e–éU™ÈÀq|¼þœüq Dr€§b8‚:Ìëw3rTγU7àäŸ2òa}W+rMrò'Y’²"k²^eä–ÜfE¾^‚”¤Ì>e+RæŸIEªë"ËHõךܑOä/ò™|Ù@<ÊÁ|îð¦w>ûùç{ûäüüòñKöäâ„ÑQdá–Àúó¾é Gº>°¢–N jxTÁº ¦ pä†[ðüŽ|î{ÇwñîäÕ/O΀wÏŸN8w÷£è´_I±-m‹¯ºbÚ÷HîâÑã—Gg—oƒG .eÑ#®GZíä‘ÞÅ£Ó£'¿¾ÀO…HÒÚ!ê¾Ç¡&µ›tgsaÿÒ,íä%ùµYà¯a‰¿…Eþ»_æï‹tþgV-³UM~O­ÿìf‘–×$[ùì¸!Ä=aÙn ×_n¯aéçäÍþ°Êa{h6‰´ÈV^«§‚θs|$ïÖU¶x¿ô u#ðøVÛ:Ã^s““Û]§\¢‘£{ù›üë~ØééÃ/žA\œNe€®)ãâ»RÚ5kô~)Pïì!øíÞvö…ß®>|èGªÝÇo!iÕ…«‹” ;mÖÇÏ/Oßx¤./§°â¸ZÞŒ ~ÖŠ±TØl âœOAµeµ˜žÀÁâפ~È–EÜËGs8¤ïÇaî!Pw«EV”óu‘µ˜  ®»Àöæä—Ë7O¶ß&Asà°Æcx~V-jmß¶gJ: ÛR^‘«"KAùæÒ[fejÈÝÍ{XeùÕêÞ•$+« ©«ÈfÙðÅ¢.¾DŒ-å‘żSµ8~öúìâ̧†›(13$‡¨ÚïÎ #¿š˜O}•xÙê³]õ'‹Ä=пG©îèÑ‹`µ½{_ù&v‚‡Çi™áÈæ½«ÿKŠ$ò¢¬—¯I§il0ÂÞä‹êºô?yÞËõ«X½È¶»=ו¡Abh3=ƒhÇ ñ Þ0†ö¨¡=ÊvìÁFcŽÜ]ûð60Ônî¯]í®}pr*wCå¸à:¡íöG„bpŽìÛƒ?Dn·‡·ö˜‘«›§µ¡EÉ*ÜäêáC‹Äî BC{6’•‰®=¢cŽÞ]ûð¸2Ô¾‘¬˜Ò­v¦;êé ¾»=ÃCÆÐžü=4x×ó¢3¨ls»²{s^¦WY Õl}‡µqí+!þÖí'?Ëeò‡O ½IZJ†·æñí¹Þ}‹|¦]a¢Ì`{ÂÂî oÞ¡Ô|›Ž° '<ܶà-ã;Èæ,ö3ùÍ:8 vÃ9"¾£Nû‹ïïÐ!¢½2Ê’Q‡Œ:TÔ­ô×tÈI:b¡ux›Ø6_µ[Èpcß®Æ&Ê.ê#2_ÜUË|…b}ª':Ú‡©îÿwá[A%o¦æpv†Ñ¸HŽð/+lÜŒ›íË"ûTËìO–¦,{“kü\68GÅÉ¢L{“kþ8[Ø‘ÙÂ5³…Þ:;v–}®ü_NFd©Vß*‹veÛÕâÉí6Y\÷dÉY¼…—Ë­²xOÖÚ¼E›oE›Ù®,®Gd±{¶{ÖÞaÏZìÙöa6C›µhS;€®ŸºSZ#Ãj‰ WË(¤mHh?$µŽà9ó•¶1 tz²ëE€ŽDÀ5pzTNœ:b„kðv|0Ó‡žv«Í xEój¼Ä@[Û鿉qÑ6@[¹ef7ñÝHÞÛrK§Å˜.âcÖ˜p£·ˆé¢oGÀ7 ø†Šñ3ÍH¦›H½%ÏuwO©s!DÍt³ÜõJÂêëÒ ôz|SVŽ ­´5¯%!¡T/¡j«ãÔã¶áwP(÷Ø~i²‡¤Š$݇ªib8­™8p¹H‹ý$(úò›¼ªEâл¡.&A«å(lèØÐ ˆEÚ]3Y E¤Ðr¨ eâІ243JçàŒŠŽq0NÕýÀ£¢]±‘™Ê 53Žl*BG À ±!cÃ`£ ®ðx^Ýãq4‡ÊßÓR÷F0à 7QŒÀÀ˜è a{0—ÕÝ`³Ñ:ƒ´ªB‘0´¡Ê"wŒ´Ãtˆ8ÎW‹ôý2û/•ôZQÒí2Ãoû@–“|Oò®&_öñžC¯ÀúmS6¼á}–/—ÞTÏÒcLÏן›¶ó–)Ji<^!ëUºÄѧ«¼ ^¯Êª¸›WÁÈûøì•Td½ëùÝ l)N°Î³U™ÁŒzQ>]UÅzb"GÄÿl&ð°Í÷¯ÊÛ@òYöåý:-<×ót^¬ÑŸxsØ{ž—ól¹LWÙú®dM¼Uì‹E>ÇÑ£âÊû‹Ã<:ØÍ¹Î¸U›Ãǰ_ú¤+K`ÊÓ%ð±ÉW‡¿§ÜOœ4æÒ´€ D¦8ñ}ñ¢ù”š1³ª¬Hç1l#îÇ(õq´l“²4CœúœfDç§<ð/|NEL/R\›H1º‘K÷ñuJÞpYZ̯}Ú ¹3Ø¡á&(ÂyÔÿÃ<¼u|›ø¶ñíFëØ}¶¨)^.E\æ"^Ä;­·iWxt…«QSG&>ÈJ|ä˲“´J—ë«Y¸B··ðúöÛ9dø`ˆúú„ü˜ yUfÍ]dÿ‡y¦F endstream endobj 330 0 obj << /Type /XRef /Index [0 331] /Size 331 /W [1 3 1] /Root 328 0 R /Info 329 0 R /ID [<55E0BE94EDAA18BA724DFDEFB1ACA198> <55E0BE94EDAA18BA724DFDEFB1ACA198>] /Length 801 /Filter /FlateDecode >> stream xÚ%ÔKPqÇñçyTo)]¨TDJ%·„\+Q)J%—..aɰ1à Ƃ3f˜1ƒq}¶V¦cƘ±Ã–-++†çû³ùÌóÿsþïû¿<ÇÌ쯛›[ò,KÎ%f©Cv˜û<;ôªr¨„Z·ÎeKøJ·ü{ʪæÀ\È…<ȇ  æAÃ|(R(ƒrX ¡*¡ Y sÜ ÿèíkx— Ðφá L‰,Á,Q°ÖÀzØ[¡ vÁ~»ö3óv*íAŒm£Z Ë`”ŒYÒzXcd[¨€‡§‡È6S­€&8LÖAÕ -0EÆ«¥¼nÚ Ód©VÁj˜!Û@ÅŠÒµp’¬j´±¢*2Ö› >Z2>M53Ç 2ýLç­¢‰L3ëÅYQ´’é‘Z4»kÉôVÚ°dídzÝNÐwiEݰ“l™–Ú:…ídÚÝÐKÖM¦mêƒ~²ÝdÚIÛÙ™¶xöÁØëVöDx,Ý!]³!8ãnuºaGa­9Õð8Ó«:æÖþBSÕ¹·µMîÖûZÃèÈÞØáuÊè™ S‚&‰\·#zPÐ8A§DÛ̬2º'h—(r;S¬Œ z&JÜ.œVVÊkpƒ6ˆr·«ãú€Ž º'*Ün|VÆÍŽj·[·4ÔÏ–¸Ý¹©!w<¸À±Ìíî{e\ê`Û£Áíþg-š{m´¸=îÒ÷¸9±Ú-ú4ä^E›Û˧r}b£Ûì+ uA¶¸½¹¦¡îA§Û‡M¯GêÌ{Ü>~ÕWtÜhô¹}iVÆ‘EöT¿_Ö“ŽvûU¯l?pú1êžù¿cpÆÝ‹ò”ä¹ZùLÀa÷ʳú”k\†˜t¯¿­lô's̽õ²ãÌ¢-žu£yæ|–å@æ@Ì…\Ès︮/ç»_ú­*u¿ÿSUû«U…UÍódÃUEž\<¥ªØ“çïTÍ÷äí ªO¾­RUê™ÍU•A4Âè„.P¿í„Øê·^èƒ~ØjºAØë™sž]ô•Göd´¾ endstream endobj startxref 229028 %%EOF readline-8.0/doc/texinfo.tex000664 000436 000024 00001303351 12631305505 016200 0ustar00chetstaff000000 000000 % texinfo.tex -- TeX macros to handle Texinfo files. % % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % \def\texinfoversion{2015-11-22.14} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, % 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 % 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 % published by the Free Software Foundation, either version 3 of the % License, or (at your option) any later version. % % This texinfo.tex file is distributed in the hope that it will be % useful, but WITHOUT ANY WARRANTY; without even the implied warranty % of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 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, see . % % As a special exception, when this file is read by TeX when processing % a Texinfo source document, you may use the result without % restriction. This Exception is an additional permission under section 7 % of the GNU General Public License, version 3 ("GPLv3"). % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: % http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or % http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or % http://www.gnu.org/software/texinfo/ (the Texinfo home page) % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % % Send bug reports to bug-texinfo@gnu.org. Please include including a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For a simple % manual foo.texi, however, you can get away with this: % tex foo.texi % texindex foo.?? % tex foo.texi % tex foo.texi % dvips foo.dvi -o # or whatever; this makes foo.ps. % The extra TeX runs get the cross-reference information correct. % Sometimes one run after texindex suffices, and sometimes you need more % than two; texi2dvi does it as many times as necessary. % % It is possible to adapt texinfo.tex for other languages, to some % extent. You can get the existing language-specific files from the % full Texinfo distribution. % % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. \message{Loading texinfo [version \texinfoversion]:} % 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]}% \catcode`+=\active \catcode`\_=\active} \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. % For @tex, we can use \tabalign. \let\+ = \relax % Save some plain tex macros whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c \let\ptexcomma=\, \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexfootnote=\footnote \let\ptexgtr=> \let\ptexhat=^ \let\ptexi=\i \let\ptexindent=\indent \let\ptexinsert=\insert \let\ptexlbrace=\{ \let\ptexless=< \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ \let\ptexraggedright=\raggedright \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexsp=\sp \let\ptexstar=\* \let\ptexsup=\sup \let\ptext=\t \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode % If this character appears in an error message or help string, it % starts a new line in the output. \newlinechar = `^^J % Use TeX 3.0's \inputlineno to get the line number, for better error % messages, but if we're using an old version of TeX, don't do anything. % \ifx\inputlineno\thisisundefined \let\linenumber = \empty % Pre-3.0. \else \def\linenumber{l.\the\inputlineno:\space} \fi % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi \ifx\putworderror\undefined \gdef\putworderror{error}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi \ifx\putwordof\undefined \gdef\putwordof{of}\fi \ifx\putwordon\undefined \gdef\putwordon{on}\fi \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi % \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi % \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi % Since the category of space is not known, we have to be careful. \chardef\spacecat = 10 \def\spaceisspace{\catcode`\ =\spacecat} % sometimes characters are active, so we need control sequences. \chardef\ampChar = `\& \chardef\colonChar = `\: \chardef\commaChar = `\, \chardef\dashChar = `\- \chardef\dotChar = `\. \chardef\exclamChar= `\! \chardef\hashChar = `\# \chardef\lquoteChar= `\` \chardef\questChar = `\? \chardef\rquoteChar= `\' \chardef\semiChar = `\; \chardef\slashChar = `\/ \chardef\underChar = `\_ % Ignore a token. % \def\gobble#1{} % The following is used inside several \edef's. \def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} % Hyphenation fixes. \hyphenation{ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script ap-pen-dix bit-map bit-maps data-base data-bases eshell fall-ing half-way long-est man-u-script man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces spell-ing spell-ings stand-alone strong-est time-stamp time-stamps which-ever white-space wide-spread wrap-around } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make % some effort to order the tracing commands to reduce output in the log % file; cf. trace.sty in LaTeX. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% \def\loggingall{% \tracingstats2 \tracingpages1 \tracinglostchars2 % 2 gives us more in etex \tracingparagraphs1 \tracingoutput1 \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen \ifx\eTeXversion\thisisundefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 \tracingnesting2 \tracingassigns1 \fi \tracingcommands3 % 3 gives us more in etex \errorcontextlines16 }% % @errormsg{MSG}. Do the index-like expansions on MSG, but if things % aren't perfect, it's not the end of the world, being an error message, % after all. % \def\errormsg{\begingroup \indexnofonts \doerrormsg} \def\doerrormsg#1{\errmessage{#1}} % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount \removelastskip\penalty-100\medskip\fi\fi} \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} % Output routine % % For a final copy, take out the rectangles % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % \def\finalout{\overfullrule=0pt } % Do @cropmarks to get crop marks. % \newif\ifcropmarks \let\cropmarks = \cropmarkstrue % % Dimensions to add cropmarks at corners. % Added by P. A. MacKay, 12 Nov. 1986 % \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines \newdimen\cornerlong \cornerlong=1pc \newdimen\cornerthick \cornerthick=.3pt \newdimen\topandbottommargin \topandbottommargin=.75in % Output a mark which sets \thischapter, \thissection and \thiscolor. % We dump everything together because we only have one kind of mark. % This works because we only use \botmark / \topmark, not \firstmark. % % A mark contains a subexpression of the \ifcase ... \fi construct. % \get*marks macros below extract the needed part using \ifcase. % % Another complication is to let the user choose whether \thischapter % (\thissection) refers to the chapter (section) in effect at the top % of a page, or that at the bottom of a page. The solution is % described on page 260 of The TeXbook. It involves outputting two % marks for the sectioning macros, one before the section break, and % one after. I won't pretend I can describe this better than DEK... % \def\domark{% \toks0=\expandafter{\lastchapterdefs}% \toks2=\expandafter{\lastsectiondefs}% \toks4=\expandafter{\prevchapterdefs}% \toks6=\expandafter{\prevsectiondefs}% \toks8=\expandafter{\lastcolordefs}% \mark{% \the\toks0 \the\toks2 % 0: top marks (\last...) \noexpand\or \the\toks4 \the\toks6 % 1: bottom marks (default, \prev...) \noexpand\else \the\toks8 % 2: color marks }% } % \gettopheadingmarks, \getbottomheadingmarks - extract needed part of mark. % % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., % @setcolor (or @url, or @link, etc.) between @contents and the very % first @chapter. \def\gettopheadingmarks{% \ifcase0\topmark\fi \ifx\thischapter\empty \ifcase0\firstmark\fi \fi } \def\getbottomheadingmarks{\ifcase1\botmark\fi} \def\getcolormarks{\ifcase2\topmark\fi} % Avoid "undefined control sequence" errors. \def\lastchapterdefs{} \def\lastsectiondefs{} \def\lastsection{} \def\prevchapterdefs{} \def\prevsectiondefs{} \def\lastcolordefs{} % Margin to add to right of even pages, to left of odd pages. \newdimen\bindingoffset \newdimen\normaloffset \newdimen\pagewidth \newdimen\pageheight % Main output routine. % \chardef\PAGE = 255 \output = {\onepageout{\pagecontents\PAGE}} \newbox\headlinebox \newbox\footlinebox % \onepageout takes a vbox as an argument. % \shipout a vbox for a single page, adding an optional header, footer, % cropmarks, and footnote. This also causes index entries for this page % to be written to the auxiliary files. % \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % % Common context changes for both heading and footing. % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars} % % Retrieve the information for the headings from the marks in the page, % and call Plain TeX's \makeheadline and \makefootline, which use the % values in \headline and \footline. % % This is used to check if we are on the first page of a chapter. \ifcase0\topmark\fi \ifx\thischapter\empty % See comment for \gettopheadingmarks \ifcase0\firstmark\fi \let\curchaptername\thischaptername \ifcase1\firstmark\fi \let\prevchaptername\thischaptername \else \let\curchaptername\thischaptername \ifcase1\topmark\fi \let\prevchaptername\thischaptername \fi % \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi % \ifx\curchaptername\prevchaptername \let\thischapterheading\thischapter \else % \thischapterheading is the same as \thischapter except it is blank % for the first page of a chapter. This is to prevent the chapter name % being shown twice. \def\thischapterheading{}% \fi % \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}% % {% % Set context for writing to auxiliary files like index files. % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % \indexdummies % don't expand commands in the output. \normalturnoffactive % \ in index entries must not stay \, e.g., if % the page break happens to be in the middle of an example. % We don't want .vr (or whatever) entries like this: % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; % it needs to be % {\code {{\backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi % \ifcropmarks \vbox to \outervsize\bgroup \hsize = \outerhsize \vskip-\topandbottommargin \vtop to0pt{% \line{\ewtop\hfil\ewtop}% \nointerlineskip \line{% \vbox{\moveleft\cornerthick\nstop}% \hfill \vbox{\moveright\cornerthick\nstop}% }% \vss}% \vskip\topandbottommargin \line\bgroup \hfil % center the page within the outer (page) hsize. \ifodd\pageno\hskip\bindingoffset\fi \vbox\bgroup \fi % \unvbox\headlinebox \pagebody{#1}% \ifdim\ht\footlinebox > 0pt % Only leave this space if the footline is nonempty. % (We lessened \vsize for it in \oddfootingyyy.) % The \baselineskip=24pt in plain's \makefootline has no effect. \vskip 24pt \unvbox\footlinebox \fi % \ifcropmarks \egroup % end of \vbox\bgroup \hfil\egroup % end of (centering) \line\bgroup \vskip\topandbottommargin plus1fill minus1fill \boxmaxdepth = \cornerthick \vbox to0pt{\vss \line{% \vbox{\moveleft\cornerthick\nsbot}% \hfill \vbox{\moveright\cornerthick\nsbot}% }% \nointerlineskip \line{\ewbot\hfil\ewbot}% }% \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox }% end of group with \indexdummies \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } \newinsert\margin \dimen\margin=\maxdimen % Main part of page, including any footnotes \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\relax \unvbox#1\relax \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } % Here are the rules for the cropmarks. Note that they are % offset so that the space between them is truly \outerhsize or \outervsize % (P. A. MacKay, 12 November, 1986) % \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} \def\nstop{\vbox {\hrule height\cornerthick depth\cornerlong width\cornerthick}} \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} % Argument parsing % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. % For example, \def\foo{\parsearg\fooxxx}. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% \def\argtorun{#2}% \begingroup \obeylines \spaceisspace #1% \parseargline\empty% Insert the \empty token, see \finishparsearg below. } {\obeylines % \gdef\parseargline#1^^M{% \endgroup % End of the group started in \parsearg. \argremovecomment #1\comment\ArgTerm% }% } % First remove any @comment, then any @c comment. Also remove a @texinfoc % comment (see \scanmacro for details). Pass the result on to \argcheckspaces. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} \def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm} \def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % % \argremovec might leave us with trailing space, e.g., % @end itemize @c foo % This space token undergoes the same procedure and is eventually removed % by \finishparsearg. % \def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} \def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% \def\temp{#3}% \ifx\temp\empty % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: \let\temp\finishparsearg \else \let\temp\argcheckspaces \fi % Put the space token in: \temp#1 #3\ArgTerm } % If a _delimited_ argument is enclosed in braces, they get stripped; so % to get _exactly_ the rest of the line, we had to prevent such situation. % We prepended an \empty token at the very beginning and we expand it now, % just before passing the control to \argtorun. % (Similarly, we have to think about #3 of \argcheckspacesY above: it is % either the null string, or it ends with \^^M---thus there is no danger % that a pair of braces would be stripped. % % But first, we have to remove the trailing space token. % \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} % \parseargdef - define a command taking an argument on the line % % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } \def\doparseargdef#1#2{% \def#2{\parsearg#1}% \def#1##1% } % Several utility definitions with active space: { \obeyspaces \gdef\obeyedspace{ } % Make each space character in the input produce a normal interword % space in the output. Don't allow a line break at this space, as this % is used only in environments like @example, where each line of input % should produce a line of output anyway. % \gdef\sepspaces{\obeyspaces\let =\tie} % If an index command is used in an @example environment, any spaces % therein should become regular spaces in the raw index file, not the % expansion of \tie (\leavevmode \penalty \@M \ ). \gdef\unsepspaces{\let =\space} } \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} % Define the framework for environments in texinfo.tex. It's used like this: % % \envdef\foo{...} % \def\Efoo{...} % % It's the responsibility of \envdef to insert \begingroup before the % actual body; @end closes the group after calling \Efoo. \envdef also % defines \thisenv, so the current environment is known; @end checks % whether the environment name matches. The \checkenv macro can also be % used to check whether the current environment is the one expected. % % Non-false conditionals (@iftex, @ifset) don't fit into this, so they % are not treated as environments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this % special case.) % At run-time, environments start with this: \def\startenvironment#1{\begingroup\def\thisenv{#1}} % initialize \let\thisenv\empty % ... but they get defined via ``\envdef\foo{...}'': \long\def\envdef#1#2{\def#1{\startenvironment#1#2}} \def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} % Check whether we're in the right environment: \def\checkenv#1{% \def\temp{#1}% \ifx\thisenv\temp \else \badenverr \fi } % Environment mismatch, #1 expected: \def\badenverr{% \errhelp = \EMsimple \errmessage{This command can appear only \inenvironment\temp, not \inenvironment\thisenv}% } \def\inenvironment#1{% \ifx#1\empty outside of any environment% \else in environment \expandafter\string#1% \fi } % @end foo executes the definition of \Efoo. % But first, it executes a specialized version of \checkenv % \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else % The general wording of \badenverr may not be ideal. \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup \fi } \newhelp\EMsimple{Press RETURN to continue.} % 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 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } % @* forces a line break. \def\*{\unskip\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} % @! is an end-of-sentence bang. \def\!{!\spacefactor=\endofsentencespacefactor\space} % @? is an end-of-sentence query. \def\?{?\spacefactor=\endofsentencespacefactor\space} % @frenchspacing on|off says whether to put extra space after punctuation. % \def\onword{on} \def\offword{off} % \parseargdef\frenchspacing{% \def\temp{#1}% \ifx\temp\onword \plainfrenchspacing \else\ifx\temp\offword \plainnonfrenchspacing \else \errhelp = \EMsimple \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% \fi\fi } % @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. \def\w#1{\leavevmode\hbox{#1}} % @group ... @end group forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % % Another complication is that the group might be very large. This can % cause the glue on the previous page to be unduly stretched, because it % does not have much material. In this case, it's better to add an % explicit \vfill so that the extra space is at the bottom. The % threshold for doing this is if the group is more than \vfilllimit % percent of a page (\vfilllimit can be changed inside of @tex). % \newbox\groupbox \def\vfilllimit{0.7} % \envdef\group{% \ifnum\catcode`\^^M=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi \startsavinginserts % \setbox\groupbox = \vtop\bgroup % 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 % manual), we don't worry about eating any user text. \comment } % % The \vtop produces a box with normal height and large depth; thus, TeX puts % \baselineskip glue before it, and (when the next line of text is done) % \lineskip glue after it. Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% % To get correct interline space between the last line of the group % and the first line afterwards, we have to propagate \prevdepth. \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. \addgroupbox \prevdepth = \dimen1 \checkinserts } \def\addgroupbox{ % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). \dimen2 = \pageheight \advance\dimen2 by -\pagetotal % if the group doesn't fit on the current page, and it's a big big % group, force a page break. \ifdim \dimen0 > \dimen2 \ifdim \pagetotal < \vfilllimit\pageheight \page \fi \fi \box\groupbox } % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as @example,^^J% where each line of input produces a line of output.} % @need space-in-mils % forces a page break if there is not space-in-mils remaining. \newdimen\mil \mil=0.001in \parseargdef\need{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % If the @need value is less than one line space, it's useless. \dimen0 = #1\mil \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 % % Do a \strut just to make the height of this box be normal, so the % normal leading is inserted relative to the preceding line. % And a page break here is fine. \vtop to #1\mil{\strut\vfil}% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big @group commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak \fi } % @br forces paragraph break (and is undocumented). \let\br = \par % @page forces the start of a new page. % \def\page{\par\vfill\supereject} % @exdent text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as @defun. \parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} % This defn is used inside nofill environments such as @example. \parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current % paragraph. For more general purposes, use the \margin insertion % class. WHICH is `l' or `r'. Not documented, written for gawk manual. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} % \def\doinmargin#1#2{\strut\vadjust{% \nobreak \kern-\strutdepth \vtop to \strutdepth{% \baselineskip=\strutdepth \vss % if you have multiple lines of stuff to put here, you'll need to % make the vbox yourself of the appropriate size. \ifx#1l% \llap{\ignorespaces #2\hskip\inmarginspacing}% \else \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% \fi \null }% }} \def\inleftmargin{\doinmargin l} \def\inrightmargin{\doinmargin r} % % @inmargin{TEXT [, RIGHT-TEXT]} % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts \def\righttext{#2}% \else \def\lefttext{#1}% have only one text \def\righttext{#1}% \fi % \ifodd\pageno \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin \else \def\temp{\inleftmargin\lefttext}% \fi \temp } % @| inserts a changebar to the left of the current line. It should % surround any changed text. This approach does *not* work if the % change spans more than two lines of output. To handle that, we would % have adopt a much more difficult approach (putting marks into the main % vertical list for the beginning and end of each change). This command % is not documented, not supported, and doesn't work. % \def\|{% % \vadjust can only be used in horizontal mode. \leavevmode % % Append this vertical mode material after the current line in the output. \vadjust{% % We want to insert a rule with the height and depth of the current % leading; that is exactly what \strutbox is supposed to record. \vskip-\baselineskip % % \vadjust-items are inserted at the left edge of the type. So % the \llap here moves out into the left-hand margin. \llap{% % % For a thicker or thinner bar, change the `1pt'. \vrule height\baselineskip width1pt % % This is the space between the bar and the text. \hskip 12pt }% }% } % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} \def\includezzz#1{% \pushthisfilestack \def\thisfile{#1}% {% \makevalueexpandable % we want to expand any @value in FILE. \turnoffactive % and allow special characters in the expansion \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @include of #1^^J}% \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes % definitions, etc. \expandafter }\temp \popthisfilestack } \def\filenamecatcodes{% \catcode`\\=\other \catcode`~=\other \catcode`^=\other \catcode`_=\other \catcode`|=\other \catcode`<=\other \catcode`>=\other \catcode`+=\other \catcode`-=\other \catcode`\`=\other \catcode`\'=\other } \def\pushthisfilestack{% \expandafter\pushthisfilestackX\popthisfilestack\StackTerm } \def\pushthisfilestackX{% \expandafter\pushthisfilestackY\thisfile\StackTerm } \def\pushthisfilestackY #1\StackTerm #2\StackTerm {% \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% } \def\popthisfilestack{\errthisfilestackempty} \def\errthisfilestackempty{\errmessage{Internal error: the stack of filenames is empty.}} % \def\thisfile{} % @center line % outputs that line, centered. % \parseargdef\center{% \ifhmode \let\centersub\centerH \else \let\centersub\centerV \fi \centersub{\hfil \ignorespaces#1\unskip \hfil}% \let\centersub\relax % don't let the definition persist, just in case } \def\centerH#1{{% \hfil\break \advance\hsize by -\leftskip \advance\hsize by -\rightskip \line{#1}% \break }} % \newcount\centerpenalty \def\centerV#1{% % The idea here is the same as in \startdefun, \cartouche, etc.: if % @center is the first thing after a section heading, we need to wipe % out the negative parskip inserted by \sectionheading, but still % prevent a page break here. \centerpenalty = \lastpenalty \ifnum\centerpenalty>10000 \vskip\parskip \fi \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi \line{\kern\leftskip #1\kern\rightskip}% } % @sp n outputs n lines of vertical space % \parseargdef\sp{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment % \def\comment{\begingroup \catcode`\^^M=\active% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other\commentxxx}% {\catcode`\^^M=\active% \gdef\commentxxx#1^^M{\endgroup% \futurelet\nexttoken\commentxxxx}% \gdef\commentxxxx{\ifx\nexttoken\aftermacro\expandafter\comment\fi}% } \def\c{\begingroup \catcode`\^^M=\active% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% \cxxx} {\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}} % See comment in \scanmacro about why the definitions of @c and @comment differ % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. % NCHARS can also be the word `asis' or `none'. % We cannot feasibly implement @paragraphindent asis, though. % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} % \parseargdef\paragraphindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \defaultparindent = 0pt \else \defaultparindent = #1em \fi \fi \parindent = \defaultparindent } % @exampleindent NCHARS % We'll use ems for NCHARS like @paragraphindent. % It seems @exampleindent asis isn't necessary, but % I preserve it to make it similar to @paragraphindent. \parseargdef\exampleindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \lispnarrowing = 0pt \else \lispnarrowing = #1em \fi \fi } % @firstparagraphindent WORD % If WORD is `none', then suppress indentation of the first paragraph % after a section heading. If WORD is `insert', then do indent at such % paragraphs. % % The paragraph indentation is suppressed or not by calling % \suppressfirstparagraphindent, which the sectioning commands do. % We switch the definition of this back and forth according to WORD. % By default, we suppress indentation. % \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} \def\insertword{insert} % \parseargdef\firstparagraphindent{% \def\temp{#1}% \ifx\temp\noneword \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent \else\ifx\temp\insertword \let\suppressfirstparagraphindent = \relax \else \errhelp = \EMsimple \errmessage{Unknown @firstparagraphindent option `\temp'}% \fi\fi } % Here is how we actually suppress indentation. Redefine \everypar to % \kern backwards by \parindent, and then reset itself to empty. % % We also make \indent itself not actually do anything until the next % paragraph. % \gdef\dosuppressfirstparagraphindent{% \gdef\indent {\restorefirstparagraphindent \indent}% \gdef\noindent{\restorefirstparagraphindent \noindent}% \global\everypar = {\kern -\parindent \restorefirstparagraphindent}% } % \gdef\restorefirstparagraphindent{% \global\let\indent = \ptexindent \global\let\noindent = \ptexnoindent \global\everypar = {}% } % @refill is a no-op. \let\refill=\relax % @setfilename INFO-FILENAME - ignored \let\setfilename=\comment % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} \message{pdf,} % adobe `portable' document format \newcount\tempnum \newcount\lnkcount \newtoks\filename \newcount\filenamelength \newcount\pgn \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newbox\boxA \newbox\boxB \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 % can be set). So we test for \relax and 0 as well as being undefined. \ifx\pdfoutput\thisisundefined \else \ifx\pdfoutput\relax \else \ifcase\pdfoutput \else \pdftrue \fi \fi \fi % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. % % See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and % related messages. The final outcome is that it is up to the TeX user % to double the backslashes and otherwise make the string valid, so % that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to % do this reliably, so we use it. % #1 is a control sequence in which to do the replacements, % which we \xdef. \def\txiescapepdf#1{% \ifx\pdfescapestring\thisisundefined % No primitive available; should we give a warning or log? % Many times it won't matter. \else % The expandable \pdfescapestring primitive escapes parentheses, % backslashes, and other special chars. \xdef#1{\pdfescapestring{#1}}% \fi } \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images with PDF output, and none of those formats could be found. (.eps cannot be supported due to the design of the PDF format; use regular TeX (DVI output) for that.)} \ifpdf % % Color manipulation macros using ideas from pdfcolor.tex, % except using rgb instead of cmyk; the latter is said to render as a % very dark gray on-screen and a very dark halftone in print, instead % of actual black. The dark red here is dark enough to print on paper as % nearly black, but still distinguishable for online viewing. We use % black by default, though. \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % % k sets the color for filling (usual text, etc.); % K sets the color for stroking (thin rules, e.g., normal _'s). \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. \def\setcolor#1{% \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% \domark \pdfsetcolor{#1}% } % \def\maincolor{\rgbBlack} \pdfsetcolor{\maincolor} \edef\thiscolor{\maincolor} \def\lastcolordefs{} % \def\makefootline{% \baselineskip24pt \line{\pdfsetcolor{\maincolor}\the\footline}% } % \def\makeheadline{% \vbox to 0pt{% \vskip-22.5pt \line{% \vbox to8.5pt{}% % Extract \thiscolor definition from the marks. \getcolormarks % Typeset the headline with \maincolor, then restore the color. \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% }% \vss }% \nointerlineskip } % % \pdfcatalog{/PageMode /UseOutlines} % % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). \def\dopdfimage#1#2#3{% \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % % pdftex (and the PDF format) support .pdf, .png, .jpg (among % others). Let's try in that order, PDF first since if % someone has a scalable image, presumably better to use that than a % bitmap. \let\pdfimgext=\empty \begingroup \openin 1 #1.pdf \ifeof 1 \openin 1 #1.PDF \ifeof 1 \openin 1 #1.png \ifeof 1 \openin 1 #1.jpg \ifeof 1 \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% \else \gdef\pdfimgext{JPG}% \fi \else \gdef\pdfimgext{jpeg}% \fi \else \gdef\pdfimgext{jpg}% \fi \else \gdef\pdfimgext{png}% \fi \else \gdef\pdfimgext{PDF}% \fi \else \gdef\pdfimgext{pdf}% \fi \closein 1 \endgroup % % without \immediate, ancient pdftex seg faults when the same image is % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) \ifnum\pdftexversion < 14 \immediate\pdfimage \else \immediate\pdfximage \fi \ifdim \wd0 >0pt width \pdfimagewidth \fi \ifdim \wd2 >0pt height \pdfimageheight \fi \ifnum\pdftexversion<13 #1.\pdfimgext \else {#1.\pdfimgext}% \fi \ifnum\pdftexversion < 14 \else \pdfrefximage \pdflastximage \fi} % \def\pdfmkdest#1{{% % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \indexnofonts \turnoffactive \makevalueexpandable \def\pdfdestname{#1}% \txiescapepdf\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% }} % % used to mark target names; must be expandable. \def\pdfmkpgn#1{#1} % % by default, use black for everything. \def\urlcolor{\rgbBlack} \def\linkcolor{\rgbBlack} \def\endlink{\setcolor{\maincolor}\pdfendlink} % % Adding outlines to PDF; macros for calculating structure of outlines % come from Petr Olsak \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} \def\advancenumber#1{\tempnum=\expnumber{#1}\relax \advance\tempnum by 1 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} % % #1 is the section text, which is what will be displayed in the % outline by the pdf viewer. #2 is the pdf expression for the number % of subentries (or empty, for subsubsections). #3 is the node text, % which might be empty if this toc entry had no corresponding node. % #4 is the page number % \def\dopdfoutline#1#2#3#4{% % Generate a link to the node text if that exists; else, use the % page number. We could generate a destination for the section % text in the case where a section has no node, but it doesn't % seem worth the trouble, since most documents are normally structured. \edef\pdfoutlinedest{#3}% \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}% \else \txiescapepdf\pdfoutlinedest \fi % % Also escape PDF chars in the display string. \edef\pdfoutlinetext{#1}% \txiescapepdf\pdfoutlinetext % \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% } % \def\pdfmakeoutlines{% \begingroup % Read toc silently, to get counts of subentries for \pdfoutline. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% \def\thissubsecnum{0}% }% \def\numsecentry##1##2##3##4{% \advancenumber{chap\thischapnum}% \def\thissecnum{##2}% \def\thissubsecnum{0}% }% \def\numsubsecentry##1##2##3##4{% \advancenumber{sec\thissecnum}% \def\thissubsecnum{##2}% }% \def\numsubsubsecentry##1##2##3##4{% \advancenumber{subsec\thissubsecnum}% }% \def\thischapnum{0}% \def\thissecnum{0}% \def\thissubsecnum{0}% % % use \def rather than \let here because we redefine \chapentry et % al. a second time, below. \def\appentry{\numchapentry}% \def\appsecentry{\numsecentry}% \def\appsubsecentry{\numsubsecentry}% \def\appsubsubsecentry{\numsubsubsecentry}% \def\unnchapentry{\numchapentry}% \def\unnsecentry{\numsecentry}% \def\unnsubsecentry{\numsubsecentry}% \def\unnsubsubsecentry{\numsubsubsecentry}% \readdatafile{toc}% % % Read toc second time, this time actually producing the outlines. % The `-' means take the \expnumber as the absolute number of % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. \def\numchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% \def\numsubsubsecentry##1##2##3##4{% count is always zero \dopdfoutline{##1}{}{##3}{##4}}% % % PDF outlines are displayed using system fonts, instead of % document fonts. Therefore we cannot use special characters, % since the encoding is unknown. For example, the eogonek from % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. % % TODO this right, we have to translate 8-bit characters to % their "best" equivalent, based on the @documentencoding. Too % much work for too little return. Just use the ASCII equivalents % we use for the index sort strings. % \indexnofonts \setupdatafile % We can have normal brace characters in the PDF outlines, unlike % Texinfo index files. So set that up. \def\{{\lbracecharliteral}% \def\}{\rbracecharliteral}% \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } {\catcode`[=1 \catcode`]=2 \catcode`{=\other \catcode`}=\other \gdef\lbracecharliteral[{]% \gdef\rbracecharliteral[}]% ] % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces \addtokens{\filename}{\PP}% \advance\filenamelength by 1 \fi \nextsp} \def\getfilename#1{% \filenamelength=0 % If we don't expand the argument now, \skipspaces will get % snagged on things like "@value{foo}". \edef\temp{#1}% \expandafter\skipspaces\temp|\relax } \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else \let \startlink \pdfstartlink \fi % make a live url in pdf output. \def\pdfurl#1{% \begingroup % it seems we really need yet another set of dummies; have not % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable % do we want to go so far as to use \indexnofonts instead of just % special-casing \var here? \def\var##1{##1}% % \leavevmode\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% \endgroup} \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS|\relax \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} \setcolor{\linkcolor}#1\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else % non-pdf mode \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax \let\setcolor = \gobble \let\pdfsetcolor = \gobble \let\pdfmakeoutlines = \relax \fi % \ifx\pdfoutput \message{fonts,} % Change the current font style to #1, remembering it in \curfontstyle. % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in % italics, not bold italics. % \def\setfontstyle#1{% \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. \csname ten#1\endcsname % change the current font } % Select #1 fonts with the current style. % \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} \def\rm{\fam=0 \setfontstyle{rm}} \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} \def\tt{\fam=\ttfam \setfontstyle{tt}} % Unfortunately, we have to override this for titles and the like, since % in those cases "rm" is bold. Sigh. \def\rmisbold{\rm\def\curfontstyle{bf}} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. \newfam\sffam \def\sf{\fam=\sffam \setfontstyle{sf}} \let\li = \sf % Sometimes we call it \li, not \sf. % We don't need math for this font style. \def\ttsl{\setfontstyle{ttsl}} % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. % \def\lineskipfactor{.08333} \def\strutheightpercent{.70833} \def\strutdepthpercent {.29167} % % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % \newdimen\textleading \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 \normallineskip = \lineskipfactor\normalbaselineskip \normalbaselines \setbox\strutbox =\hbox{% \vrule width0pt height\strutheightpercent\baselineskip depth \strutdepthpercent \baselineskip }% } % PDF CMaps. See also LaTeX's t1.cmap. % % do nothing with this by default. \expandafter\let\csname cmapOT1\endcsname\gobble \expandafter\let\csname cmapOT1IT\endcsname\gobble \expandafter\let\csname cmapOT1TT\endcsname\gobble % if we are producing pdf, and we have \pdffontattr, then define cmaps. % (\pdffontattr was introduced many years ago, but people still run % older pdftex's; it's easy to conditionalize, so we do.) \ifpdf \ifx\pdffontattr\thisisundefined \else \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1-0) %%Title: (TeX-OT1-0 TeX OT1 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1) /Supplement 0 >> def /CMapName /TeX-OT1-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 40 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1IT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1IT-0) %%Title: (TeX-OT1IT-0 TeX OT1IT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1IT) /Supplement 0 >> def /CMapName /TeX-OT1IT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <25> <26> <0025> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 42 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <23> <0023> <24> <00A3> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1IT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1TT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1TT-0) %%Title: (TeX-OT1TT-0 TeX OT1TT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1TT) /Supplement 0 >> def /CMapName /TeX-OT1TT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 5 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> endbfrange 32 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <2191> <0C> <2193> <0D> <0027> <0E> <00A1> <0F> <00BF> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <20> <2423> <27> <2019> <60> <2018> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1TT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% \fi\fi % Set the font macro #1 to the font named \fontprefix#2. % #3 is the font's design size, #4 is a scale factor, #5 is the CMap % encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). % Example: % #1 = \textrm % #2 = \rmshape % #3 = 10 % #4 = \mainmagstep % #5 = OT1 % \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% } % This is what gets called when #5 of \setfont is empty. \let\cmap\gobble % % (end of cmaps) % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. \ifx\fontprefix\thisisundefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} \def\rmbshape{bx} % where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} \def\ttbshape{tt} \def\ttslshape{sltt} \def\itshape{ti} \def\itbshape{bxti} \def\slshape{sl} \def\slbshape{bxsl} \def\sfshape{ss} \def\sfbshape{ss} \def\scshape{csc} \def\scbshape{csc} % Definitions for a main text size of 11pt. (The default in Texinfo.) % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \def\textnominalsize{11pt} \edef\mainmagstep{\magstephalf} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1095} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} \setfont\defsl\slshape{10}{\magstep1}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \let\tensl=\defsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter (and unnumbered) fonts (17.28pt). \def\chapnominalsize{17pt} \setfont\chaprm\rmbshape{12}{\magstep2}{OT1} \setfont\chapit\itbshape{10}{\magstep3}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep3}{OT1} \setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} \setfont\chapsf\sfbshape{17}{1000}{OT1} \let\chapbf=\chaprm \setfont\chapsc\scbshape{10}{\magstep3}{OT1} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 \def\chapecsize{1728} % Section fonts (14.4pt). \def\secnominalsize{14pt} \setfont\secrm\rmbshape{12}{\magstep1}{OT1} \setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1} \setfont\secit\itbshape{10}{\magstep2}{OT1IT} \setfont\secsl\slbshape{10}{\magstep2}{OT1} \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\secsf\sfbshape{12}{\magstep1}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep2}{OT1} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 \def\sececsize{1440} % Subsection fonts (13.15pt). \def\ssecnominalsize{13pt} \setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} \setfont\ssecit\itbshape{10}{1315}{OT1IT} \setfont\ssecsl\slbshape{10}{1315}{OT1} \setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} \setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1315}{OT1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled 1315 \def\ssececsize{1200} % Reduced fonts for @acro in text (10pt). \def\reducednominalsize{10pt} \setfont\reducedrm\rmshape{10}{1000}{OT1} \setfont\reducedtt\ttshape{10}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{1000}{OT1} \setfont\reducedit\itshape{10}{1000}{OT1IT} \setfont\reducedsl\slshape{10}{1000}{OT1} \setfont\reducedsf\sfshape{10}{1000}{OT1} \setfont\reducedsc\scshape{10}{1000}{OT1} \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} \font\reducedi=cmmi10 \font\reducedsy=cmsy10 \def\reducedecsize{1000} \textleading = 13.2pt % line spacing for 11pt CM \textfonts % reset the current fonts \rm } % end of 11pt text font size definitions, \definetextfontsizexi % Definitions to make the main text be 10pt Computer Modern, with % section, chapter, etc., sizes following suit. This is for the GNU % Press printing of the Emacs 22 manual. Maybe other manuals in the % future. Used with @smallbook, which sets the leading to 12pt. % \def\definetextfontsizex{% % Text fonts (10pt). \def\textnominalsize{10pt} \edef\mainmagstep{1000} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1000} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} \setfont\defsl\slshape{10}{\magstephalf}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tensl=\defsl \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter fonts (14.4pt). \def\chapnominalsize{14pt} \setfont\chaprm\rmbshape{12}{\magstep1}{OT1} \setfont\chapit\itbshape{10}{\magstep2}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep2}{OT1} \setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\chapsf\sfbshape{12}{\magstep1}{OT1} \let\chapbf\chaprm \setfont\chapsc\scbshape{10}{\magstep2}{OT1} \font\chapi=cmmi12 scaled \magstep1 \font\chapsy=cmsy10 scaled \magstep2 \def\chapecsize{1440} % Section fonts (12pt). \def\secnominalsize{12pt} \setfont\secrm\rmbshape{12}{1000}{OT1} \setfont\secit\itbshape{10}{\magstep1}{OT1IT} \setfont\secsl\slbshape{10}{\magstep1}{OT1} \setfont\sectt\ttbshape{12}{1000}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} \setfont\secsf\sfbshape{12}{1000}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep1}{OT1} \font\seci=cmmi12 \font\secsy=cmsy10 scaled \magstep1 \def\sececsize{1200} % Subsection fonts (10pt). \def\ssecnominalsize{10pt} \setfont\ssecrm\rmbshape{10}{1000}{OT1} \setfont\ssecit\itbshape{10}{1000}{OT1IT} \setfont\ssecsl\slbshape{10}{1000}{OT1} \setfont\ssectt\ttbshape{10}{1000}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} \setfont\ssecsf\sfbshape{10}{1000}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1000}{OT1} \font\sseci=cmmi10 \font\ssecsy=cmsy10 \def\ssececsize{1000} % Reduced fonts for @acro in text (9pt). \def\reducednominalsize{9pt} \setfont\reducedrm\rmshape{9}{1000}{OT1} \setfont\reducedtt\ttshape{9}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{900}{OT1} \setfont\reducedit\itshape{9}{1000}{OT1IT} \setfont\reducedsl\slshape{9}{1000}{OT1} \setfont\reducedsf\sfshape{9}{1000}{OT1} \setfont\reducedsc\scshape{10}{900}{OT1} \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} \font\reducedi=cmmi9 \font\reducedsy=cmsy9 \def\reducedecsize{0900} \divide\parskip by 2 % reduce space between paragraphs \textleading = 12pt % line spacing for 10pt CM \textfonts % reset the current fonts \rm } % end of 10pt text font size definitions, \definetextfontsizex % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % \def\xiword{11} \def\xword{10} \def\xwordpt{10pt} % \parseargdef\fonttextsize{% \def\textsizearg{#1}% %\wlog{doing @fonttextsize \textsizearg}% % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. % \begingroup \globaldefs=1 \ifx\textsizearg\xword \definetextfontsizex \else \ifx\textsizearg\xiword \definetextfontsizexi \else \errhelp=\EMsimple \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} \fi\fi \endgroup } % In order for the font changes to affect most math symbols and letters, % we have to define the \textfont of the standard families. We don't % bother to reset \scriptfont and \scriptscriptfont; awaiting user need. % \def\resetmathfonts{% \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf \textfont\ttfam=\tentt \textfont\sffam=\tensf } % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this because \STYLE needs to also set the % current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire % \tenSTYLE to set the current font. % % Each font-changing command also sets the names \lsize (one size lower) % and \lllsize (three sizes lower). These relative commands are used % in, e.g., the LaTeX logo and acronyms. % % This all needs generalizing, badly. % \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \def\curfontsize{text}% \def\lsize{reduced}\def\lllsize{smaller}% \resetmathfonts \setleading{\textleading}} \def\titlefonts{% \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy \let\tenttsl=\titlettsl \def\curfontsize{title}% \def\lsize{chap}\def\lllsize{subsec}% \resetmathfonts \setleading{27pt}} \def\titlefont#1{{\titlefonts\rmisbold #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl \def\curfontsize{chap}% \def\lsize{sec}\def\lllsize{text}% \resetmathfonts \setleading{19pt}} \def\secfonts{% \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl \def\curfontsize{sec}% \def\lsize{subsec}\def\lllsize{reduced}% \resetmathfonts \setleading{17pt}} \def\subsecfonts{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl \def\curfontsize{ssec}% \def\lsize{text}\def\lllsize{small}% \resetmathfonts \setleading{15pt}} \let\subsubsecfonts = \subsecfonts \def\reducedfonts{% \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy \let\tenttsl=\reducedttsl \def\curfontsize{reduced}% \def\lsize{small}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallfonts{% \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy \let\tenttsl=\smallttsl \def\curfontsize{small}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallerfonts{% \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy \let\tenttsl=\smallerttsl \def\curfontsize{smaller}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{9.5pt}} % Fonts for short table of contents. \setfont\shortcontrm\rmshape{12}{1000}{OT1} \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 \setfont\shortcontsl\slshape{12}{1000}{OT1} \setfont\shortconttt\ttshape{12}{1000}{OT1TT} % Define these just so they can be easily changed for other fonts. \def\angleleft{$\langle$} \def\angleright{$\rangle$} % Set the fonts to use with the @small... environments. \let\smallexamplefonts = \smallfonts % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample % can fit this many characters: % 8.5x11=86 smallbook=72 a4=90 a5=69 % If we use \scriptfonts (8pt), then we can fit this many characters: % 8.5x11=90+ smallbook=80 a4=90+ a5=77 % For me, subjectively, the few extra characters that fit aren't worth % the additional smallness of 8pt. So I'm making the default 9pt. % % By the way, for comparison, here's what fits with @example (10pt): % 8.5x11=71 smallbook=60 a4=75 a5=58 % --karl, 24jan03. % Set up the default fonts, so we can use them for creating boxes. % \definetextfontsizexi \message{markup,} % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have % this property, we can check that font parameter. % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } % Markup style infrastructure. \defmarkupstylesetup\INITMACRO will % define and register \INITMACRO to be called on markup style changes. % \INITMACRO can check \currentmarkupstyle for the innermost % style and the set of \ifmarkupSTYLE switches for all styles % currently in effect. \newif\ifmarkupvar \newif\ifmarkupsamp \newif\ifmarkupkey %\newif\ifmarkupfile % @file == @samp. %\newif\ifmarkupoption % @option == @samp. \newif\ifmarkupcode \newif\ifmarkupkbd %\newif\ifmarkupenv % @env == @code. %\newif\ifmarkupcommand % @command == @code. \newif\ifmarkuptex % @tex (and part of @math, for now). \newif\ifmarkupexample \newif\ifmarkupverb \newif\ifmarkupverbatim \let\currentmarkupstyle\empty \def\setupmarkupstyle#1{% \csname markup#1true\endcsname \def\currentmarkupstyle{#1}% \markupstylesetup } \let\markupstylesetup\empty \def\defmarkupstylesetup#1{% \expandafter\def\expandafter\markupstylesetup \expandafter{\markupstylesetup #1}% \def#1% } % Markup style setup for left and right quotes. \defmarkupstylesetup\markupsetuplq{% \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuplqdefault \else \temp \fi } \defmarkupstylesetup\markupsetuprq{% \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuprqdefault \else \temp \fi } { \catcode`\'=\active \catcode`\`=\active \gdef\markupsetuplqdefault{\let`\lq} \gdef\markupsetuprqdefault{\let'\rq} \gdef\markupsetcodequoteleft{\let`\codequoteleft} \gdef\markupsetcodequoteright{\let'\codequoteright} } \let\markupsetuplqcode \markupsetcodequoteleft \let\markupsetuprqcode \markupsetcodequoteright % \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright % \let\markupsetuplqkbd \markupsetcodequoteleft \let\markupsetuprqkbd \markupsetcodequoteright % \let\markupsetuplqsamp \markupsetcodequoteleft \let\markupsetuprqsamp \markupsetcodequoteright % \let\markupsetuplqverb \markupsetcodequoteleft \let\markupsetuprqverb \markupsetcodequoteright % \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it % works for pasting with more pdf viewers (at least evince), the % lilypond developers report. xpdf does work with the regular 0x27. % \def\codequoteright{% \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax '% \else \char'15 \fi \else \char'15 \fi } % % and a similar option for the left quote char vs. a grave accent. % Modern fonts display ASCII 0x60 as a grave accent, so some people like % the code environments to do likewise. % \def\codequoteleft{% \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax % [Knuth] pp. 380,381,391 % \relax disables Spanish ligatures ?` and !` of \tt font. \relax`% \else \char'22 \fi \else \char'22 \fi } % Commands to set the quote options. % \parseargdef\codequoteundirected{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequoteundirected\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequoteundirected\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% \fi\fi } % \parseargdef\codequotebacktick{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequotebacktick\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequotebacktick\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% \fi\fi } % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 % Font commands. % #1 is the font command (\sl or \it), #2 is the text to slant. % If we are in a monospaced environment, however, 1) always use \ttsl, % and 2) do not add an italic correction. \def\dosmartslant#1#2{% \ifusingtt {{\ttsl #2}\let\next=\relax}% {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% \next } \def\smartslanted{\dosmartslant\sl} \def\smartitalic{\dosmartslant\it} % Output an italic correction unless \next (presumed to be the following % character) is such as not to need one. \def\smartitaliccorrection{% \ifx\next,% \else\ifx\next-% \else\ifx\next.% \else\ifx\next\.% \else\ifx\next\comma% \else\ptexslash \fi\fi\fi\fi\fi \aftersmartic } % Unconditional use \ttsl, and no ic. @var is set to this for defuns. \def\ttslanted#1{{\ttsl #1}} % @cite is like \smartslanted except unconditionally use \sl. We never want % ttsl for book titles, do we? \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} \def\aftersmartic{} \def\var#1{% \let\saveaftersmartic = \aftersmartic \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% \smartslanted{#1}% } \let\i=\smartitalic \let\slanted=\smartslanted \let\dfn=\smartslanted \let\emph=\smartitalic % Explicit font changes: @r, @sc, undocumented @ii. \def\r#1{{\rm #1}} % roman font \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font % @b, explicit bold. Also @strong. \def\b#1{{\bf #1}} \let\strong=\b % @sansserif, explicit sans. \def\sansserif#1{{\sf #1}} % We can't just use \exhyphenpenalty, because that only has effect at % the end of a paragraph. Restore normal hyphenation at the end of the % group within which \nohyphenation is presumably called. % \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} \def\restorehyphenation{\hyphenchar\font = `- } % Set sfcode to normal for the chars that usually have another value. % Can't use plain's \frenchspacing because it uses the `\x notation, and % sometimes \x has an active definition that messes things up. % \catcode`@=11 \def\plainfrenchspacing{% \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m \def\endofsentencespacefactor{1000}% for @. and friends } \def\plainnonfrenchspacing{% \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 \def\endofsentencespacefactor{3000}% for @. and friends } \catcode`@=\other \def\endofsentencespacefactor{3000}% default % @t, explicit typewriter. \def\t#1{% {\tt \rawbackslash \plainfrenchspacing #1}% \null } % @samp. \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} % @indicateurl is \samp, that is, with quotes. \let\indicateurl=\samp % @code (and similar) prints in typewriter, but with spaces the same % size as normal in the surrounding text, without hyphenation, etc. % This is a subroutine for that. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % But `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % % Turn off hyphenation. \nohyphenation % \rawbackslash \plainfrenchspacing #1% }% \null % reset spacefactor to 1000 } % We *must* turn on hyphenation at `-' and `_' in @code. % (But see \codedashfinish below.) % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. % % Unfortunately, TeX uses one parameter (\hyphenchar) to control % both hyphenation at - and hyphenation within words. % We must therefore turn them both off (\tclose does that) % and arrange explicitly to hyphenate at a dash. -- rms. { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup \setupmarkupstyle{code}% % The following should really be moved into \setupmarkupstyle handlers. \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash \let_\codeunder \else \let-\normaldash \let_\realunder \fi % Given -foo (with a single dash), we do not want to allow a break % after the hyphen. \global\let\codedashprev=\codedash % \codex } % \gdef\codedash{\futurelet\next\codedashfinish} \gdef\codedashfinish{% \normaldash % always output the dash character itself. % % Now, output a discretionary to allow a line break, unless % (a) the next character is a -, or % (b) the preceding character is a -. % E.g., given --posix, we do not want to allow a break after either -. % Given --foo-bar, we do want to allow a break between the - and the b. \ifx\next\codedash \else \ifx\codedashprev\codedash \else \discretionary{}{}{}\fi \fi % we need the space after the = for the case when \next itself is a % space token; it would get swallowed otherwise. As in @code{- a}. \global\let\codedashprev= \next } } \def\normaldash{-} % \def\codex #1{\tclose{#1}\endgroup} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) % will therefore expand the active definition of _, which is us % (inside @code that is), therefore an endless loop. \ifusingtt{\ifmmode \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. \else\normalunderscore \fi \discretionary{}{}{}}% {\_}% } % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is bad. % @allowcodebreaks provides a document-level way to turn breaking at - % and _ on and off. % \newif\ifallowcodebreaks \allowcodebreakstrue \def\keywordtrue{true} \def\keywordfalse{false} \parseargdef\allowcodebreaks{% \def\txiarg{#1}% \ifx\txiarg\keywordtrue \allowcodebreakstrue \else\ifx\txiarg\keywordfalse \allowcodebreaksfalse \else \errhelp = \EMsimple \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% \fi\fi } % For @command, @env, @file, @option quotes seem unnecessary, % so use \code rather than \samp. \let\command=\code \let\env=\code \let\file=\code \let\option=\code % @uref (abbreviation for `urlref') aka @url takes an optional % (comma-separated) second argument specifying the text to display and % an optional third arg as text to display instead of (rather than in % addition to) the url itself. First (mandatory) arg is the url. % TeX-only option to allow changing PDF output to show only the second % arg (if given), and not the url (which is then just the link target). \newif\ifurefurlonlylink % The main macro is \urefbreak, which allows breaking at expected % places within the url. (There used to be another version, which % didn't support automatic breaking.) \def\urefbreak{\begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak % \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} \def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% look for second arg \ifdim\wd0 > 0pt \ifpdf \ifurefurlonlylink % PDF plus option to not display url, show just arg \unhbox0 \else % PDF, normally display both arg and url for consistency, % visibility, if the pdf is eventually used to print, etc. \unhbox0\ (\urefcode{#1})% \fi \else \unhbox0\ (\urefcode{#1})% DVI, always show arg and url \fi \else \urefcode{#1}% only url given, so show it \fi \fi \endlink \endgroup} % Allow line breaks around only a few characters (only). \def\urefcatcodes{% \catcode\ampChar=\active \catcode\dotChar=\active \catcode\hashChar=\active \catcode\questChar=\active \catcode\slashChar=\active } { \urefcatcodes % \global\def\urefcode{\begingroup \setupmarkupstyle{code}% \urefcatcodes \let&\urefcodeamp \let.\urefcodedot \let#\urefcodehash \let?\urefcodequest \let/\urefcodeslash \codex } % % By default, they are just regular characters. \global\def&{\normalamp} \global\def.{\normaldot} \global\def#{\normalhash} \global\def?{\normalquest} \global\def/{\normalslash} } % we put a little stretch before and after the breakable chars, to help % line breaking of long url's. The unequal skips make look better in % cmtt at least, especially for dots. \def\urefprestretchamount{.13em} \def\urefpoststretchamount{.1em} \def\urefprestretch{\urefprebreak \hskip0pt plus\urefprestretchamount\relax} \def\urefpoststretch{\urefpostbreak \hskip0pt plus\urefprestretchamount\relax} % \def\urefcodeamp{\urefprestretch \&\urefpoststretch} \def\urefcodedot{\urefprestretch .\urefpoststretch} \def\urefcodehash{\urefprestretch \#\urefpoststretch} \def\urefcodequest{\urefprestretch ?\urefpoststretch} \def\urefcodeslash{\futurelet\next\urefcodeslashfinish} { \catcode`\/=\active \global\def\urefcodeslashfinish{% \urefprestretch \slashChar % Allow line break only after the final / in a sequence of % slashes, to avoid line break between the slashes in http://. \ifx\next/\else \urefpoststretch \fi } } % One more complication: by default we'll break after the special % characters, but some people like to break before the special chars, so % allow that. Also allow no breaking at all, for manual control. % \parseargdef\urefbreakstyle{% \def\txiarg{#1}% \ifx\txiarg\wordnone \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordbefore \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordafter \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} \else \errhelp = \EMsimple \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% \fi\fi\fi } \def\wordafter{after} \def\wordbefore{before} \def\wordnone{none} \urefbreakstyle after % @url synonym for @uref, since that's how everyone uses it. % \let\url=\uref % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup} \else \let\email=\uref \fi % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). \parseargdef\kbdinputstyle{% \def\txiarg{#1}% \ifx\txiarg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% \else\ifx\txiarg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% \else\ifx\txiarg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% \fi\fi\fi } \def\worddistinct{distinct} \def\wordexample{example} \def\wordcode{code} % Default is `distinct'. \kbdinputstyle distinct % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. \def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} \def\xkey{\key} \def\kbdsub#1#2#3\par{% \def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi } % definition of @key that produces a lozenge. Doesn't adjust to text size. %\setfont\keyrm\rmshape{8}{1000}{OT1} %\font\keysy=cmsy9 %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% % \vbox{\hrule\kern-0.4pt % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% % \kern-0.4pt\hrule}% % \kern-.06em\raise0.4pt\hbox{\angleright}}}} % definition of @key with no lozenge. If the current font is already % monospace, don't change it; that way, we respect @kbdinputstyle. But % if it isn't monospace, then use \tt. % \def\key#1{{\setupmarkupstyle{key}% \nohyphenation \ifmonospace\else\tt\fi #1}\null} % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} % @clickstyle @arrow (by default) \parseargdef\clickstyle{\def\click{#1}} \def\click{\arrow} % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. % \def\acronym#1{\doacronym #1,,\finish} \def\doacronym#1,#2,#3\finish{% {\selectfonts\lsize #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @abbr for "Comput. J." and the like. % No font change, but don't do end-of-sentence spacing. % \def\abbr#1{\doabbr #1,,\finish} \def\doabbr#1,#2,#3\finish{% {\plainfrenchspacing #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @asis just yields its argument. Used with @table, for example. % \def\asis#1{#1} % @math outputs its argument in math mode. % % One complication: _ usually means subscripts, but it could also mean % an actual _ character, as in @math{@var{some_variable} + 1}. So make % _ active, and distinguish by seeing if the current family is \slfam, % which is what @var uses. { \catcode`\_ = \active \gdef\mathunderscore{% \catcode`\_=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% } } % Another complication: we want \\ (and @\) to output a math (or tt) \. % FYI, plain.tex uses \\ as a temporary control sequence (for no % particular reason), but this is not advertised and we don't care. % % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} % \def\math{% \tex \mathunderscore \let\\ = \mathbackslash \mathactive % make the texinfo accent commands work in math mode \let\"=\ddot \let\'=\acute \let\==\bar \let\^=\hat \let\`=\grave \let\u=\breve \let\v=\check \let\~=\tilde \let\dotaccent=\dot % have to provide another name for sup operator \let\mathopsup=\sup $\finishmath } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. % Some active characters (such as <) are spaced differently in math. % We have to reset their definitions in case the @math was an argument % to a command which sets the catcodes (such as @item or @section). % { \catcode`^ = \active \catcode`< = \active \catcode`> = \active \catcode`+ = \active \catcode`' = \active \gdef\mathactive{% \let^ = \ptexhat \let< = \ptexless \let> = \ptexgtr \let+ = \ptexplus \let' = \ptexquoteright } } % for @sub and @sup, if in math mode, just do a normal sub/superscript. % If in text, use math to place as sub/superscript, but switch % into text mode, with smaller fonts. This is a different font than the % one used for real math sub/superscripts (8pt vs. 7pt), but let's not % fix it (significant additions to font machinery) until someone notices. % \def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi} \def\finishsub#1{$\sb{\hbox{\selectfonts\lllsize #1}}$}% % \def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} \def\finishsup#1{$\ptexsp{\hbox{\selectfonts\lllsize #1}}$}% % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. % \def\outfmtnametex{tex} % \long\def\inlinefmt#1{\doinlinefmt #1,\finish} \long\def\doinlinefmt#1,#2,\finish{% \def\inlinefmtname{#1}% \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi } % % @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if % FMTNAME is tex, else ELSE-TEXT. \long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish} \long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{% \def\inlinefmtname{#1}% \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi } % % For raw, must switch into @tex before parsing the argument, to avoid % setting catcodes prematurely. Doing it this way means that, for % example, @inlineraw{html, foo{bar} gets a parse error instead of being % ignored. But this isn't important because if people want a literal % *right* brace they would have to use a command anyway, so they may as % well use a command to get a left brace too. We could re-use the % delimiter character idea from \verb, but it seems like overkill. % \long\def\inlineraw{\tex \doinlineraw} \long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} \def\doinlinerawtwo#1,#2,\finish{% \def\inlinerawname{#1}% \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi \endgroup % close group opened by \tex. } % @inlineifset{VAR, TEXT} expands TEXT if VAR is @set. % \long\def\inlineifset#1{\doinlineifset #1,\finish} \long\def\doinlineifset#1,#2,\finish{% \def\inlinevarname{#1}% \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \else\ignorespaces#2\fi } % @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set. % \long\def\inlineifclear#1{\doinlineifclear #1,\finish} \long\def\doinlineifclear#1,#2,\finish{% \def\inlinevarname{#1}% \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi } \message{glyphs,} % and logos. % @@ prints an @, as does @atchar{}. \def\@{\char64 } \let\atchar=\@ % @{ @} @lbracechar{} @rbracechar{} all generate brace characters. % Unless we're in typewriter, use \ecfont because the CM text fonts do % not have braces, and we don't want to switch into math. \def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} \def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} \let\{=\mylbrace \let\lbracechar=\{ \let\}=\myrbrace \let\rbracechar=\} \begingroup % Definitions to produce \{ and \} commands for indices, % and @{ and @} for the aux/toc files. \catcode`\{ = \other \catcode`\} = \other \catcode`\[ = 1 \catcode`\] = 2 \catcode`\! = 0 \catcode`\\ = \other !gdef!lbracecmd[\{]% !gdef!rbracecmd[\}]% !gdef!lbraceatcmd[@{]% !gdef!rbraceatcmd[@}]% !endgroup % @comma{} to avoid , parsing problems. \let\comma = , % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. \let\, = \ptexc \let\dotaccent = \ptexdot \def\ringaccent#1{{\accent23 #1}} \let\tieaccent = \ptext \let\ubaraccent = \ptexb \let\udotaccent = \d % Other special characters: @questiondown @exclamdown @ordf @ordm % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} \def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} \def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} % Dotless i and dotless j, used for accents. \def\imacro{i} \def\jmacro{j} \def\dotless#1{% \def\temp{#1}% \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi \else \errmessage{@dotless can be used only with i or j}% \fi\fi } % The \TeX{} logo, as in plain, but resetting the spacing so that a % period following counts as ending a sentence. (Idea found in latex.) % \edef\TeX{\TeX \spacefactor=1000 } % @LaTeX{} logo. Not quite the same results as the definition in % latex.ltx, since we use a different font for the raised A; it's most % convenient for us to use an explicitly smaller font, rather than using % the \scriptstyle font (since we don't reset \scriptstyle and % \scriptscriptstyle). % \def\LaTeX{% L\kern-.36em {\setbox0=\hbox{T}% \vbox to \ht0{\hbox{% \ifx\textnominalsize\xwordpt % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. % Revert to plain's \scriptsize, which is 7pt. \count255=\the\fam $\fam\count255 \scriptstyle A$% \else % For 11pt, we can use our lllsize. \selectfonts\lllsize A% \fi }% \vss }}% \kern-.15em \TeX } % Some math mode symbols. Define \ensuremath to switch into math mode % unless we are already there. Expansion tricks may not be needed here, % but safer, and can't hurt. \def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi} \def\ensuredmath#1{$\relax#1$} % \def\bullet{\ensuremath\ptexbullet} \def\geq{\ensuremath\ge} \def\leq{\ensuremath\le} \def\minus{\ensuremath-} % @dots{} outputs an ellipsis using the current font. % We do .5em per period so that it has the same spacing in the cm % typewriter fonts as three actual period characters; on the other hand, % in other typewriter fonts three periods are wider than 1.5em. So do % whichever is larger. % \def\dots{% \leavevmode \setbox0=\hbox{...}% get width of three periods \ifdim\wd0 > 1.5em \dimen0 = \wd0 \else \dimen0 = 1.5em \fi \hbox to \dimen0{% \hskip 0pt plus.25fil .\hskip 0pt plus1fil .\hskip 0pt plus1fil .\hskip 0pt plus.5fil }% } % @enddots{} is an end-of-sentence ellipsis. % \def\enddots{% \dots \spacefactor=\endofsentencespacefactor } % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. % % Since these characters are used in examples, they should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. % \def\point{$\star$} \def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} \def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} \def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} % The @error{} command. % Adapted from the TeXbook's \boxit. % \newbox\errorbox % {\tentt \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) \setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} % \setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. \advance\hsize by -2\dimen2 % Rules. \vbox{% \hrule height\dimen2 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. \kern3pt\vrule width\dimen2}% Space to right. \hrule height\dimen2} \hfil} % \def\error{\leavevmode\lower.7ex\copy\errorbox} % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % \def\pounds{{\it\$}} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik % Theiling, which support regular, slanted, bold and bold slanted (and % "outlined" (blackboard board, sort of) versions, which we don't need). % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. % % Although only regular is the truly official Euro symbol, we ignore % that. The Euro is designed to be slightly taller than the regular % font height. % % feymr - regular % feymo - slanted % feybr - bold % feybo - bold slanted % % There is no good (free) typewriter version, to my knowledge. % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. % Hmm. % % Also doesn't work in math. Do we need to do math with euro symbols? % Hope not. % % \def\euro{{\eurofont e}} \def\eurofont{% % We set the font at each command, rather than predefining it in % \textfonts and the other font-switching commands, so that % installations which never need the symbol don't have to have the % font installed. % % There is only one designed size (nominal 10pt), so we always scale % that to the current nominal size. % % By the way, simply using "at 1em" works for cmr10 and the like, but % does not work for cmbx10 and other extended/shrunken fonts. % \def\eurosize{\csname\curfontsize nominalsize\endcsname}% % \ifx\curfontstyle\bfstylename % bold: \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize \else % regular: \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize \fi \thiseurofont } % Glyphs from the EC fonts. We don't use \let for the aliases, because % sometimes we redefine the original macro, and the alias should reflect % the redefinition. % % Use LaTeX names for the Icelandic letters. \def\DH{{\ecfont \char"D0}} % Eth \def\dh{{\ecfont \char"F0}} % eth \def\TH{{\ecfont \char"DE}} % Thorn \def\th{{\ecfont \char"FE}} % thorn % \def\guillemetleft{{\ecfont \char"13}} \def\guillemotleft{\guillemetleft} \def\guillemetright{{\ecfont \char"14}} \def\guillemotright{\guillemetright} \def\guilsinglleft{{\ecfont \char"0E}} \def\guilsinglright{{\ecfont \char"0F}} \def\quotedblbase{{\ecfont \char"12}} \def\quotesinglbase{{\ecfont \char"0D}} % % This positioning is not perfect (see the ogonek LaTeX package), but % we have the precomposed glyphs for the most common cases. We put the % tests to use those glyphs in the single \ogonek macro so we have fewer % dummy definitions to worry about for index entries, etc. % % ogonek is also used with other letters in Lithuanian (IOU), but using % the precomposed glyphs for those is not so easy since they aren't in % the same EC font. \def\ogonek#1{{% \def\temp{#1}% \ifx\temp\macrocharA\Aogonek \else\ifx\temp\macrochara\aogonek \else\ifx\temp\macrocharE\Eogonek \else\ifx\temp\macrochare\eogonek \else \ecfont \setbox0=\hbox{#1}% \ifdim\ht0=1ex\accent"0C #1% \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% \fi \fi\fi\fi\fi }% } \def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} \def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % % Use the European Computer Modern fonts (cm-super in outline format) % for non-CM glyphs. That is ec* for regular text and tc* for the text % companion symbols (LaTeX TS1 encoding). Both are part of the ec % package and follow the same conventions. % \def\ecfont{\etcfont{e}} \def\tcfont{\etcfont{t}} % \def\etcfont#1{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so % hopefully nobody will notice/care. \edef\ecsize{\csname\curfontsize ecsize\endcsname}% \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% \ifmonospace % typewriter: \font\thisecfont = #1ctt\ecsize \space at \nominalsize \else \ifx\curfontstyle\bfstylename % bold: \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize \else % regular: \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize \fi \fi \thisecfont } % @registeredsymbol - R in a circle. The font for the R should really % be smaller yet, but lllsize is the best we can do for now. % Adapted from the plain.tex definition of \copyright. % \def\registeredsymbol{% $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% \hfil\crcr\Orb}}% }$% } % @textdegree - the normal degrees sign. % \def\textdegree{$^\circ$} % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. % \ifx\Orb\thisisundefined \def\Orb{\mathhexbox20D} \fi % Quotes. \chardef\quotedblleft="5C \chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' \message{page headings,} \newskip\titlepagetopglue \titlepagetopglue = 1.5in \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. \newif\ifseenauthor \newif\iffinishedtitlepage % Do an implicit @contents or @shortcontents after @end titlepage if the % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. % \newif\ifsetcontentsaftertitlepage \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue \parseargdef\shorttitlepage{% \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page} \envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \let\page = \oldpage \page \null }% } \def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \endgroup % % Need this before the \...aftertitlepage checks so that if they are % in effect the toc pages will come out with page numbers. \HEADINGSon % % If they want short, they certainly want long too. \ifsetshortcontentsaftertitlepage \shortcontents \contents \global\let\shortcontents = \relax \global\let\contents = \relax \fi % \ifsetcontentsaftertitlepage \contents \global\let\contents = \relax \global\let\shortcontents = \relax \fi } \def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue } % Settings used for typesetting titles: no hyphenation, no indentation, % don't worry much about spacing, ragged right. This should be used % inside a \vbox, and fonts need to be set appropriately first. Because % it is always used for titles, nothing else, we call \rmisbold. \par % should be specified before the end of the \vbox, since a vbox is a group. % \def\raggedtitlesettings{% \rmisbold \hyphenpenalty=10000 \parindent=0pt \tolerance=5000 \ptexraggedright } % Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \parseargdef\title{% \checkenv\titlepage \vbox{\titlefonts \raggedtitlesettings #1\par}% % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt } \parseargdef\subtitle{% \checkenv\titlepage {\subtitlefont \rightline{#1}}% } % @author should come last, but may come many times. % It can also be used inside @quotation. % \parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp \def\quotationauthor{#1}% printed in \Equotation. \else \checkenv\titlepage \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi {\secfonts\rmisbold \leftline{#1}}% \fi } % Set up page headings and footings. \let\thispage=\folio \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make \makeheadline and \makefootline in Plain TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. % For example, this is what @headings on does % @evenheading @thistitle|@thispage|@thischapter % @oddheading @thischapter|@thispage|@thistitle % @evenfooting @thisfile|| % @oddfooting ||@thisfile \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \def\evenfooting{\parsearg\evenfootingxxx} \def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} \def\evenfootingyyy #1\|#2\|#3\|#4\finish{% \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddfooting{\parsearg\oddfootingxxx} \def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} \def\oddfootingyyy #1\|#2\|#3\|#4\finish{% \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% % % Leave some space for the footline. Hopefully ok to assume % @evenfooting will not be used by itself. \global\advance\pageheight by -12pt \global\advance\vsize by -12pt } \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} % @evenheadingmarks top \thischapter <- chapter at the top of a page % @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page % % The same set of arguments for: % % @oddheadingmarks % @evenfootingmarks % @oddfootingmarks % @everyheadingmarks % @everyfootingmarks % These define \getoddheadingmarks, \getevenheadingmarks, % \getoddfootingmarks, and \getevenfootingmarks, each to one of % \gettopheadingmarks, \getbottomheadingmarks. % \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} \def\oddfootingmarks{\headingmarks{odd}{footing}} \def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} \headingmarks{odd}{heading}{#1} } \def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} \headingmarks{odd}{footing}{#1} } % #1 = even/odd, #2 = heading/footing, #3 = top/bottom. \def\headingmarks#1#2#3 {% \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname \global\expandafter\let\csname get#1#2marks\endcsname \temp } \everyheadingmarks bottom \everyfootingmarks bottom % @headings double turns headings on for double-sided printing. % @headings single turns headings on for single-sided printing. % @headings off turns them off. % @headings on same as @headings double, retained for compatibility. % @headings after turns on double-sided headings after this page. % @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. % By default, they are off at the start of a document, % and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} \def\headingsoff{% non-global headings elimination \evenheadline={\hfil}\evenfootline={\hfil}% \oddheadline={\hfil}\oddfootline={\hfil}% } \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting \HEADINGSoff % it's the default % When we turn headings on, set the page number to 1. % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapterheading\hfil\folio}} \global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter \def\HEADINGSdoublex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapterheading\hfil\folio}} \global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % This produces Day Month Year style of output. % Only define if not already defined, in case a txi-??.tex file has set % up a different format (e.g., txi-cs.tex does this). \ifx\today\thisisundefined \def\today{% \number\day\space \ifcase\month \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec \fi \space\number\year} \fi % @settitle line... specifies the title of the document, for headings. % It generates no output of its own. \def\thistitle{\putwordNoTitle} \def\settitle{\parsearg{\gdef\thistitle}} \message{tables,} % Tables -- @table, @ftable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in % default indentation of @itemize and @enumerate text \newdimen\itemindent \itemindent=.3in % margin between end of table item and start of table text. \newdimen\itemmargin \itemmargin=.1in % used internally for \itemindent minus \itemmargin \newdimen\itemmax % Note @table, @ftable, and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). \newif\ifitemxneedsnegativevskip \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} \def\itemzzz #1{\begingroup % \advance\hsize by -\rightskip \advance\hsize by -\tableindent \setbox0=\hbox{\itemindicate{#1}}% \itemindex{#1}% \nobreak % This prevents a break before @itemx. % % 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 % line. We do not start a paragraph here because then if the next % 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 % % 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\relax \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. \nobreak \vskip-\parskip % % Stop a page break at the \parskip glue coming up. However, if % what follows is an environment such as @example, there will be no % \parskip glue; then the negative vskip we just inserted would % cause the example and the item to crash together. So we use this % bizarre value of 10001 as a signal to \aboveenvbreak to insert % \parskip glue after all. Section titles are handled this way also. % \penalty 10001 \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. \noindent % Do this with kerns and \unhbox so that if there is a footnote in % the item text, it can migrate to the main vertical list and % eventually be printed. \nobreak\kern-\tableindent \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 \unhbox0 \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue \fi } \def\item{\errmessage{@item while not in a list environment}} \def\itemx{\errmessage{@itemx while not in a list environment}} % @table, @ftable, @vtable. \envdef\table{% \let\itemindex\gobble \tablecheck{table}% } \envdef\ftable{% \def\itemindex ##1{\doind {fn}{\code{##1}}}% \tablecheck{ftable}% } \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% \tablecheck{vtable}% } \def\tablecheck#1{% \ifnum \the\catcode`\^^M=\active \endgroup \errmessage{This command won't work in this context; perhaps the problem is that we are \inenvironment\thisenv}% \def\next{\doignore{#1}}% \else \let\next\tablex \fi \next } \def\tablex#1{% \def\itemindicate{#1}% \parsearg\tabley } \def\tabley#1{% {% \makevalueexpandable \edef\temp{\noexpand\tablez #1\space\space\space}% \expandafter }\temp \endtablez } \def\tablez #1 #2 #3 #4\endtablez{% \aboveenvbreak \ifnum 0#1>0 \advance \leftskip by #1\mil \fi \ifnum 0#2>0 \tableindent=#2\mil \fi \ifnum 0#3>0 \advance \rightskip by #3\mil \fi \itemmax=\tableindent \advance \itemmax by -\itemmargin \advance \leftskip by \tableindent \exdentamount=\tableindent \parindent = 0pt \parskip = \smallskipamount \ifdim \parskip=0pt \parskip=2pt \fi \let\item = \internalBitem \let\itemx = \internalBitemx } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable % This is the counter used by @enumerate, which is really @itemize \newcount \itemno \envdef\itemize{\parsearg\doitemize} \def\doitemize#1{% \aboveenvbreak \itemmax=\itemindent \advance\itemmax by -\itemmargin \advance\leftskip by \itemindent \exdentamount=\itemindent \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi % % Try typesetting the item mark so that if the document erroneously says % something like @itemize @samp (intending @table), there's an error % right away at the @itemize. It's not the best error message in the % world, but it's better than leaving it to the @item. This means if % the user wants an empty mark, they have to say @w{} not just @w. \def\itemcontents{#1}% \setbox0 = \hbox{\itemcontents}% % % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi % \let\item=\itemizeitem } % Definition of @item while inside @itemize and @enumerate. % \def\itemizeitem{% \advance\itemno by 1 % for enumerations {\let\par=\endgraf \smallbreak}% reasonable place to break {% % If the document has an @itemize directly after a section title, a % \nobreak will be last on the list, and \sectionheading will have % done a \vskip-\parskip. In that case, we don't want to zero % parskip, or the item text will crash with the heading. On the % other hand, when there is normal text preceding the item (as there % usually is), we do want to zero parskip, or there would be too much % space. In that case, we won't have a \nobreak before. At least % that's the theory. \ifnum\lastpenalty<10000 \parskip=0in \fi \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % \ifinner\else \vadjust{\penalty 1200}% not good to break after first line of item. \fi % We can be in inner vertical mode in a footnote, although an % @itemize looks awful there. }% \flushcr } % \splitoff TOKENS\endmark defines \first to be the first token in % TOKENS, and \rest to be the remainder. % \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% % Allow an optional argument of an uppercase letter, lowercase letter, % or number, to specify the first label in the enumerated list. No % argument is the same as `1'. % \envparseargdef\enumerate{\enumeratey #1 \endenumeratey} \def\enumeratey #1 #2\endenumeratey{% % If we were given no argument, pretend we were given `1'. \def\thearg{#1}% \ifx\thearg\empty \def\thearg{1}\fi % % Detect if the argument is a single token. If so, it might be a % letter. Otherwise, the only valid thing it can be is a number. % (We will always have one token, because of the test we just made. % This is a good thing, since \splitoff doesn't work given nothing at % all -- the first parameter is undelimited.) \expandafter\splitoff\thearg\endmark \ifx\rest\empty % Only one token in the argument. It could still be anything. % A ``lowercase letter'' is one whose \lccode is nonzero. % An ``uppercase letter'' is one whose \lccode is both nonzero, and % not equal to itself. % Otherwise, we assume it's a number. % % We need the \relax at the end of the \ifnum lines to stop TeX from % continuing to look for a . % \ifnum\lccode\expandafter`\thearg=0\relax \numericenumerate % a number (we hope) \else % It's a letter. \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax \lowercaseenumerate % lowercase letter \else \uppercaseenumerate % uppercase letter \fi \fi \else % Multiple tokens in the argument. We hope it's a number. \numericenumerate \fi } % An @enumerate whose labels are integers. The starting integer is % given in \thearg. % \def\numericenumerate{% \itemno = \thearg \startenumeration{\the\itemno}% } % The starting (lowercase) letter is in \thearg. \def\lowercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more lowercase letters in @enumerate; get a bigger alphabet}% \fi \char\lccode\itemno }% } % The starting (uppercase) letter is in \thearg. \def\uppercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more uppercase letters in @enumerate; get a bigger alphabet} \fi \char\uccode\itemno }% } % Call \doitemize, adding a period to the first argument and supplying the % common last two arguments. Also subtract one from the initial value in % \itemno, since @item increments \itemno. % \def\startenumeration#1{% \advance\itemno by -1 \doitemize{#1.}\flushcr } % @alphaenumerate and @capsenumerate are abbreviations for giving an arg % to @enumerate. % \def\alphaenumerate{\enumerate{a}} \def\capsenumerate{\enumerate{A}} \def\Ealphaenumerate{\Eenumerate} \def\Ecapsenumerate{\Eenumerate} % @multitable macros % Amy Hendrickson, 8/18/94, 3/6/96 % % @multitable ... @end multitable 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 @columnfractions .25 .3 .45 % @item ... % % Numbers following @columnfractions 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 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. % @end multitable % Default dimensions may be reset by user. % @multitableparskip is vertical space between paragraphs in table. % @multitableparindent is paragraph indent in table. % @multitablecolmargin is horizontal space to be left between columns. % @multitablelinespace is space to leave between table items, baseline % to baseline. % 0pt means it depends on current normal line spacing. % \newskip\multitableparskip \newskip\multitableparindent \newdimen\multitablecolspace \newskip\multitablelinespace \multitableparskip=0pt \multitableparindent=6pt \multitablecolspace=12pt \multitablelinespace=0pt % Macros used to set up halign preamble: % \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} \let\columnfractions\relax \def\xcolumnfractions{\columnfractions} \newif\ifsetpercent % #1 is the @columnfraction, usually a decimal number like .5, but might % be just 1. We just use it, whatever it is. % \def\pickupwholefraction#1 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% \setuptable } \newcount\colcount \def\setuptable#1{% \def\firstarg{#1}% \ifx\firstarg\xendsetuptable \let\go = \relax \else \ifx\firstarg\xcolumnfractions \global\setpercenttrue \else \ifsetpercent \let\go\pickupwholefraction \else \global\advance\colcount by 1 \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a % separator; typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi \fi \ifx\go\pickupwholefraction % Put the argument back for the \pickupwholefraction call, so % we'll always have a period there to be parsed. \def\go{\pickupwholefraction#1}% \else \let\go = \setuptable \fi% \fi \go } % multitable-only commands. % % @headitem starts a heading row, which we typeset in bold. Assignments % have to be global since we are inside the implicit group of an % alignment entry. \everycr below resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% \checkenv\multitable \crcr \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item }% % % default for tables with no headings. \let\headitemcrhook=\relax % % A \tab used to include \hskip1sp. But then the space in a template % line is not enough. That is bad. So let's go back to just `&' until % we again encounter the problem the 1sp was intended to solve. % --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% % @multitable ... @end multitable definitions: % \newtoks\everytab % insert after every tab. % \envdef\multitable{% \vskip\parskip \startsavinginserts % % @item within a multitable starts a normal row. % We use \def instead of \let so that if one of the multitable entries % contains an @itemize, we don't choke on the \item (seen as \crcr aka % \endtemplate) expanding \doitemize. \def\item{\crcr}% % \tolerance=9500 \hbadness=9500 \setmultitablespacing \parskip=\multitableparskip \parindent=\multitableparindent \overfullrule=0pt \global\colcount=0 % \everycr = {% \noalign{% \global\everytab={}% Reset from possible headitem. \global\colcount=0 % Reset the column counter. % % Check for saved footnotes, etc.: \checkinserts % % Perhaps a \nobreak, then reset: \headitemcrhook \global\let\headitemcrhook=\relax }% }% % \parsearg\domultitable } \def\domultitable#1{% % To parse everything between @multitable and @item: \setuptable#1 \endsetuptable % % 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 \multistrut \vtop{% % Use the current \colcount to find the correct column width: \hsize=\expandafter\csname col\the\colcount\endcsname % % In order to keep entries from bumping into each other % we will add a \leftskip of \multitablecolspace to all columns after % the first one. % % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % % If the 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. % % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 % The first column will be indented with the surrounding text. \advance\hsize by\leftskip \else \ifsetpercent \else % If user has not set preamble in terms of percent of \hsize % we will advance \hsize by \multitablecolspace. \advance\hsize by \multitablecolspace \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi % Ignoring space at the beginning and end avoids an occasional spurious % blank line, when TeX decides to break the line at the space before the % box from the multistrut, so the strut ends up on a line by itself. % For example: % @multitable @columnfractions .11 .89 % @item @code{#} % @tab Legal holiday which is valid in major parts of the whole country. % Is automatically provided with highlighting sequences respectively % marking characters. \noindent\ignorespaces##\unskip\multistrut }\cr } \def\Emultitable{% \crcr \egroup % end the \halign \global\setpercentfalse } \def\setmultitablespacing{% \def\multistrut{\strut}% just use the standard line spacing % % Compute \multitablelinespace (if not defined by user) for use in % \multitableparskip calculation. We used define \multistrut based on % this, but (ironically) that caused the spacing to be off. % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. \ifdim\multitablelinespace=0pt \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 \fi % Test to see if parskip is larger than space between lines of % table. If not, do nothing. % If so, set to same dimension as multitablelinespace. \ifdim\multitableparskip>\multitablelinespace \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi} \message{conditionals,} % @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't % attempt to close an environment group. % \def\makecond#1{% \expandafter\let\csname #1\endcsname = \relax \expandafter\let\csname iscond.#1\endcsname = 1 } \makecond{iftex} \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} \makecond{ifnotplaintext} \makecond{ifnotxml} % Ignore @ignore, @ifhtml, @ifinfo, and the like. % \def\direntry{\doignore{direntry}} \def\documentdescription{\doignore{documentdescription}} \def\docbook{\doignore{docbook}} \def\html{\doignore{html}} \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} % Ignore text until a line `@end #1', keeping track of nested conditionals. % % A count to remember the depth of nesting. \newcount\doignorecount \def\doignore#1{\begingroup % Scan in ``verbatim'' mode: \obeylines \catcode`\@ = \other \catcode`\{ = \other \catcode`\} = \other % % Make sure that spaces turn into tokens that match what \doignoretext wants. \spaceisspace % % Count number of #1's that we've seen. \doignorecount = 0 % % Swallow text until we reach the matching `@end #1'. \dodoignore{#1}% } { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. \obeylines % % \gdef\dodoignore#1{% % #1 contains the command name as a string, e.g., `ifinfo'. % % Define a command to find the next `@end #1'. \long\def\doignoretext##1^^M@end #1{% \doignoretextyyy##1^^M@#1\_STOP_}% % % And this command to find another #1 command, at the beginning of a % line. (Otherwise, we would consider a line `@c @ifset', for % example, to count as an @ifset for nesting.) \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% % % And now expand that command. \doignoretext ^^M% }% } \def\doignoreyyy#1{% \def\temp{#1}% \ifx\temp\empty % Nothing found. \let\next\doignoretextzzz \else % Found a nested condition, ... \advance\doignorecount by 1 \let\next\doignoretextyyy % ..., look for another. % If we're here, #1 ends with ^^M\ifinfo (for example). \fi \next #1% the token \_STOP_ is present just after this macro. } % We have to swallow the remaining "\_STOP_". % \def\doignoretextzzz#1{% \ifnum\doignorecount = 0 % We have just found the outermost @end. \let\next\enddoignore \else % Still inside a nested condition. \advance\doignorecount by -1 \let\next\doignoretext % Look for the next @end. \fi \next } % Finish off ignored text. { \obeylines% % Ignore anything after the last `@end #1'; this matters in verbatim % environments, where otherwise the newline after an ignored conditional % would result in a blank line in the output. \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% } % @set VAR sets the variable VAR to an empty value. % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we % didn't need it. % We rely on the fact that \parsearg sets \catcode`\ =10. % \parseargdef\set{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% {% \makevalueexpandable \def\temp{#2}% \edef\next{\gdef\makecsname{SET#1}}% \ifx\temp\empty \next{}% \else \setzzz#2\endsetzzz \fi }% } % Remove the trailing space \setxxx inserted. \def\setzzz#1 \endsetzzz{\next{#1}} % @clear VAR clears (i.e., unsets) the variable VAR. % \parseargdef\clear{% {% \makevalueexpandable \global\expandafter\let\csname SET#1\endcsname=\relax }% } % @value{foo} gets the text saved in variable foo. \def\value{\begingroup\makevalueexpandable\valuexxx} \def\valuexxx#1{\expandablevalue{#1}\endgroup} { \catcode`\-=\active \catcode`\_=\active % \gdef\makevalueexpandable{% \let\value = \expandablevalue % We don't want these characters active, ... \catcode`\-=\other \catcode`\_=\other % ..., but we might end up with active ones in the argument if % we're called from @code, as @code{@value{foo-bar_}}, though. % So \let them to their normal equivalents. \let-\normaldash \let_\normalunderscore } } % We have this subroutine so that we can handle at least some @value's % properly in indexes (we call \makevalueexpandable in \indexdummies). % The command has to be fully expandable (if the variable is set), since % the result winds up in the index file. This means that if the % variable's value contains other Texinfo commands, it's almost certain % it will fail (although perhaps we could fix that with sufficient work % to do a one-level expansion on the result, instead of complete). % % Unfortunately, this has the consequence that when _ is in the *value* % of an @set, it does not print properly in the roman fonts (get the cmr % dot accent at position 126 instead). No fix comes to mind, and it's % been this way since 2003 or earlier, so just ignore it. % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \message{Variable `#1', used in @value, is not set.}% \else \csname SET#1\endcsname \fi } % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. % % To get the special treatment we need for `@end ifset,' we call % \makecond and then redefine. % \makecond{ifset} \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} \def\doifset#1#2{% {% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname SET#2\endcsname\relax #1% If not set, redefine \next. \fi \expandafter }\next } \def\ifsetfail{\doignore{ifset}} % @ifclear VAR ... @end executes the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % % The `\else' inside the `\doifset' parameter is a trick to reuse the % above code: if the variable is not set, do nothing, if it is set, % then redefine \next to \ifclearfail. % \makecond{ifclear} \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} % @ifcommandisdefined CMD ... @end executes the `...' if CMD (written % without the @) is in fact defined. We can only feasibly check at the % TeX level, so something like `mathcode' is going to considered % defined even though it is not a Texinfo command. % \makecond{ifcommanddefined} \def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} % \def\doifcmddefined#1#2{{% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname #2\endcsname\relax #1% If not defined, \let\next as above. \fi \expandafter }\next } \def\ifcmddefinedfail{\doignore{ifcommanddefined}} % @ifcommandnotdefined CMD ... handled similar to @ifclear above. \makecond{ifcommandnotdefined} \def\ifcommandnotdefined{% \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} \def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} % Set the `txicommandconditionals' variable, so documents have a way to % test if the @ifcommand...defined conditionals are available. \set txicommandconditionals % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment % @defininfoenclose. \let\definfoenclose=\comment \message{indexing,} % Index generation facilities % Define \newwrite to be identical to plain tex's \newwrite % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} % \newindex {foo} defines an index named IX. % It automatically defines \IXindex such that % \IXindex ...rest of line... puts an entry in the index IX. % It also defines \IXindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is IX. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% \expandafter\chardef\csname#1indfile\endcsname=0 \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } % @defindex foo == \newindex{foo} % \def\defindex{\parsearg\newindex} % Define @defcodeindex, like @defindex except put all entries in @code. % \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% \expandafter\chardef\csname#1indfile\endcsname=0 \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } % The default indices: \newindex{cp}% concepts, \newcodeindex{fn}% functions, \newcodeindex{vr}% variables, \newcodeindex{tp}% types, \newcodeindex{ky}% keys \newcodeindex{pg}% and programs. % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), % #3 the target index (bar). \def\dosynindex#1#2#3{% % Only do \closeout if we haven't already done it, else we'll end up % closing the target index. \expandafter \ifx\csname donesynindex#2\endcsname \relax % The \closeout helps reduce unnecessary open files; the limit on the % Acorn RISC OS is a mere 16 files. \expandafter\closeout\csname#2indfile\endcsname \expandafter\let\csname donesynindex#2\endcsname = 1 \fi % redefine \fooindfile: \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname \expandafter\let\csname#2indfile\endcsname=\temp % redefine \fooindex: \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } % Define \doindex, the driver for all index macros. % Argument #1 is generated by the calling \fooindex macro, % and it the two-letter name of the index. \def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} \def\doindexxxx #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} \def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} % Used when writing an index entry out to an index file, to prevent % expansion of Texinfo commands that can appear in an index entry. % \def\indexdummies{% \escapechar = `\\ % use backslash in output files. \def\@{@}% change to @@ when we switch to @ as escape char in index files. \def\ {\realbackslash\space }% % % Need these unexpandable (because we define \tt as a dummy) % definitions when @{ or @} appear in index entry text. Also, more % complicated, when \tex is in effect and \{ is a \delimiter again. % We can't use \lbracecmd and \rbracecmd because texindex assumes % braces and backslashes are used only as delimiters. Perhaps we % should use @lbracechar and @rbracechar? \def\{{{\tt\char123}}% \def\}{{\tt\char125}}% % % Do the redefinitions. \commondummies } % For the aux and toc files, @ is the escape character. So we want to % redefine everything using @ as the escape character (instead of % \realbackslash, still used for index files). When everything uses @, % this will be simpler. % \def\atdummies{% \def\@{@@}% \def\ {@ }% \let\{ = \lbraceatcmd \let\} = \rbraceatcmd % % Do the redefinitions. \commondummies \otherbackslash } % Called from \indexdummies and \atdummies. % \def\commondummies{% % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for % control characters, but is needed to separate the control word % from whatever follows. % % For control letters, we have \definedummyletter, which omits the % space. % % These can be used both for control words that take an argument and % those that do not. If it is followed by {arg} in the input, then % that will dutifully get written to the index (or wherever). % \def\definedummyword ##1{\def##1{\string##1\space}}% \def\definedummyletter##1{\def##1{\string##1}}% \let\definedummyaccent\definedummyletter % \commondummiesnofonts % \definedummyletter\_% \definedummyletter\-% % % Non-English letters. \definedummyword\AA \definedummyword\AE \definedummyword\DH \definedummyword\L \definedummyword\O \definedummyword\OE \definedummyword\TH \definedummyword\aa \definedummyword\ae \definedummyword\dh \definedummyword\exclamdown \definedummyword\l \definedummyword\o \definedummyword\oe \definedummyword\ordf \definedummyword\ordm \definedummyword\questiondown \definedummyword\ss \definedummyword\th % % Although these internal commands shouldn't show up, sometimes they do. \definedummyword\bf \definedummyword\gtr \definedummyword\hat \definedummyword\less \definedummyword\sf \definedummyword\sl \definedummyword\tclose \definedummyword\tt % \definedummyword\LaTeX \definedummyword\TeX % % Assorted special characters. \definedummyword\arrow \definedummyword\bullet \definedummyword\comma \definedummyword\copyright \definedummyword\registeredsymbol \definedummyword\dots \definedummyword\enddots \definedummyword\entrybreak \definedummyword\equiv \definedummyword\error \definedummyword\euro \definedummyword\expansion \definedummyword\geq \definedummyword\guillemetleft \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright \definedummyword\lbracechar \definedummyword\leq \definedummyword\mathopsup \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds \definedummyword\point \definedummyword\print \definedummyword\quotedblbase \definedummyword\quotedblleft \definedummyword\quotedblright \definedummyword\quoteleft \definedummyword\quoteright \definedummyword\quotesinglbase \definedummyword\rbracechar \definedummyword\result \definedummyword\sub \definedummyword\sup \definedummyword\textdegree % % We want to disable all macros so that they are not expanded by \write. \macrolist % \normalturnoffactive % % Handle some cases of @value -- where it does not contain any % (non-fully-expandable) commands. \makevalueexpandable } % \commondummiesnofonts: common to \commondummies and \indexnofonts. % Define \definedumyletter, \definedummyaccent and \definedummyword before % using. % \def\commondummiesnofonts{% % Control letters and accents. \definedummyletter\!% \definedummyaccent\"% \definedummyaccent\'% \definedummyletter\*% \definedummyaccent\,% \definedummyletter\.% \definedummyletter\/% \definedummyletter\:% \definedummyaccent\=% \definedummyletter\?% \definedummyaccent\^% \definedummyaccent\`% \definedummyaccent\~% \definedummyword\u \definedummyword\v \definedummyword\H \definedummyword\dotaccent \definedummyword\ogonek \definedummyword\ringaccent \definedummyword\tieaccent \definedummyword\ubaraccent \definedummyword\udotaccent \definedummyword\dotless % % Texinfo font commands. \definedummyword\b \definedummyword\i \definedummyword\r \definedummyword\sansserif \definedummyword\sc \definedummyword\slanted \definedummyword\t % % Commands that take arguments. \definedummyword\abbr \definedummyword\acronym \definedummyword\anchor \definedummyword\cite \definedummyword\code \definedummyword\command \definedummyword\dfn \definedummyword\dmn \definedummyword\email \definedummyword\emph \definedummyword\env \definedummyword\file \definedummyword\image \definedummyword\indicateurl \definedummyword\inforef \definedummyword\kbd \definedummyword\key \definedummyword\math \definedummyword\option \definedummyword\pxref \definedummyword\ref \definedummyword\samp \definedummyword\strong \definedummyword\tie \definedummyword\U \definedummyword\uref \definedummyword\url \definedummyword\var \definedummyword\verb \definedummyword\w \definedummyword\xref } % For testing: output @{ and @} in index sort strings as \{ and \}. \newif\ifusebracesinindexes \let\indexlbrace\relax \let\indexrbrace\relax {\catcode`\@=0 \catcode`\\=13 @gdef@backslashdisappear{@def\{}} } { \catcode`\<=13 \catcode`\-=13 \catcode`\`=13 \gdef\indexnonalnumdisappear{% \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else % @set txiindexlquoteignore makes us ignore left quotes in the sort term. % (Introduced for FSFS 2nd ed.) \let`=\empty \fi % \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else \backslashdisappear \fi % \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else \def-{}% \fi \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else \def<{}% \fi \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else \def\@{}% \fi } \gdef\indexnonalnumreappear{% \useindexbackslash \let-\normaldash \let<\normalless \def\@{@}% } } % \indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string % would be for a given command (usually its argument). % \def\indexnofonts{% % Accent commands should become @asis. \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. \def\definedummyletter##1{\let##1\empty}% % All control words become @asis by default; overrides below. \let\definedummyword\definedummyaccent \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command % and is used in the definitions of the active chars like <, >, |, etc. % Likewise with the other plain tex font commands. %\let\tt=\asis % \def\ { }% \def\@{@}% \def\_{\normalunderscore}% \def\-{}% @- shouldn't affect sorting % \def\lbracechar{{\indexlbrace}}% \def\rbracechar{{\indexrbrace}}% \let\{=\lbracechar \let\}=\rbracechar % % % Non-English letters. \def\AA{AA}% \def\AE{AE}% \def\DH{DZZ}% \def\L{L}% \def\OE{OE}% \def\O{O}% \def\TH{TH}% \def\aa{aa}% \def\ae{ae}% \def\dh{dzz}% \def\exclamdown{!}% \def\l{l}% \def\oe{oe}% \def\ordf{a}% \def\ordm{o}% \def\o{o}% \def\questiondown{?}% \def\ss{ss}% \def\th{th}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% % % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) \def\arrow{->}% \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% \def\dots{...}% \def\enddots{...}% \def\equiv{==}% \def\error{error}% \def\euro{euro}% \def\expansion{==>}% \def\geq{>=}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% \def\leq{<=}% \def\minus{-}% \def\point{.}% \def\pounds{pounds}% \def\print{-|}% \def\quotedblbase{"}% \def\quotedblleft{"}% \def\quotedblright{"}% \def\quoteleft{`}% \def\quoteright{'}% \def\quotesinglbase{,}% \def\registeredsymbol{R}% \def\result{=>}% \def\textdegree{o}% % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up % writing an index entry, and texindex isn't prepared for an index sort entry % that starts with \. % % Since macro invocations are followed by braces, we can just redefine them % to take a single TeX argument. The case of a macro invocation that % goes to end-of-line is not handled. % \macrolist } \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % Most index entries go through here, but \dosubind is the general case. % #1 is the index name, #2 is the entry text. \def\doind#1#2{\dosubind{#1}{#2}{}} % There is also \dosubind {index}{topic}{subtopic} % which makes an entry in a two-level index such as the operation index. % TODO: Two-level index? Operation index? % Workhorse for all indexes. % #1 is name of index, #2 is stuff to put there, #3 is subentry -- % empty if called from \doind, as we usually are (the main exception % is with most defuns, which call us directly). % \def\dosubind#1#2#3{% \iflinks {% \requireopenindexfile{#1}% % Store the main index entry text (including the third arg). \toks0 = {#2}% % If third arg is present, precede it with a space. \def\thirdarg{#3}% \ifx\thirdarg\empty \else \toks0 = \expandafter{\the\toks0 \space #3}% \fi % \edef\writeto{\csname#1indfile\endcsname}% % \safewhatsit\dosubindwrite }% \fi } % Check if an index file has been opened, and if not, open it. \def\requireopenindexfile#1{% \ifnum\csname #1indfile\endcsname=0 \expandafter\newwrite \csname#1indfile\endcsname \edef\suffix{#1}% % A .fls suffix would conflict with the file extension for the output % of -recorder, so use .f1s instead. \ifx\suffix\indexisfl\def\suffix{f1}\fi % Open the file \immediate\openout\csname#1indfile\endcsname \jobname.\suffix % Using \immediate here prevents an object entering into the current box, % which could confound checks such as those in \safewhatsit for preceding % skips. \fi} \def\indexisfl{fl} % Output \ as {\indexbackslash}, because \ is an escape character in % the index files. \let\indexbackslash=\relax {\catcode`\@=0 \catcode`\\=\active @gdef@useindexbackslash{@def\{{@indexbackslash}}} } % Definition for writing index entry text. \def\sortas#1{\ignorespaces}% % Definition for writing index entry sort key. Should occur at the at % the beginning of the index entry, like % @cindex @sortas{september} \september % The \ignorespaces takes care of following space, but there's no way % to remove space before it. { \catcode`\-=13 \gdef\indexwritesortas{% \begingroup \indexnonalnumreappear \indexwritesortasxxx} \gdef\indexwritesortasxxx#1{% \xdef\indexsortkey{#1}\endgroup} } % Write the entry in \toks0 to the index file. % \def\dosubindwrite{% % Put the index entry in the margin if desired. \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% \fi % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage \useindexbackslash % \indexbackslash isn't defined now so it will be output % as is; and it will print as backslash. % Get the string to sort by, by processing the index entry with all % font commands turned off. {\indexnofonts \indexnonalnumdisappear \xdef\indexsortkey{}% \let\sortas=\indexwritesortas \edef\temp{\the\toks0}% \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas \ifx\indexsortkey\empty \xdef\indexsortkey{\temp}% \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi \fi }% % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write % three arguments to \entry to the .?? file (four in the % subentry case), texindex reduces to two when writing the .??s % sorted result. \edef\temp{% \write\writeto{% \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}% }% \temp } \newbox\dummybox % used above % Take care of unwanted page breaks/skips around a whatsit: % % If a skip is the last thing on the list now, preserve it % by backing up by \lastskip, doing the \write, then inserting % the skip again. Otherwise, the whatsit generated by the % \write or \pdfdest will make \lastskip zero. The result is that % sequences like this: % @end defun % @tindex whatever % @defun ... % will have extra space inserted, because the \medbreak in the % start of the @defun won't see the skip inserted by the @end of % the previous defun. % % But don't do any of this if we're not in vertical mode. We % don't want to do a \vskip and prematurely end a paragraph. % % Avoid page breaks due to these extra skips, too. % % But wait, there is a catch there: % We'll have to check whether \lastskip is zero skip. \ifdim is not % sufficient for this purpose, as it ignores stretch and shrink parts % of the skip. The only way seems to be to check the textual % representation of the skip. % % The following is almost like \def\zeroskipmacro{0.0pt} except that % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). % \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} % \newskip\whatsitskip \newcount\whatsitpenalty % % ..., ready, GO: % \def\safewhatsit#1{\ifhmode #1% \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip \edef\lastskipmacro{\the\lastskip}% \whatsitpenalty = \lastpenalty % % If \lastskip is nonzero, that means the last item was a % skip. And since a skip is discardable, that means this % -\whatsitskip glue we're inserting is preceded by a % non-discardable item, therefore it is not a potential % breakpoint, therefore no \nobreak needed. \ifx\lastskipmacro\zeroskipmacro \else \vskip-\whatsitskip \fi % #1% % \ifx\lastskipmacro\zeroskipmacro % If \lastskip was zero, perhaps the last item was a penalty, and % perhaps it was >=10000, e.g., a \nobreak. In that case, we want % to re-insert the same penalty (values >10000 are used for various % signals); since we just inserted a non-discardable item, any % following glue (such as a \parskip) would be a breakpoint. For example: % @deffn deffn-whatever % @vindex index-whatever % Description. % would allow a break between the index-whatever whatsit % and the "Description." paragraph. \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi \else % On the other hand, if we had a nonzero \lastskip, % this make-up glue would be preceded by a non-discardable item % (the whatsit from the \write), so we must insert a \nobreak. \nobreak\vskip\whatsitskip \fi \fi} % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or % \entry {sortstring}{page}{topic}{subtopic} % The texindex program reads in these files and writes files % containing these kinds of lines: % \initial {c} % before the first topic whose initial is c % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. \def\findex {\fnindex} \def\kindex {\kyindex} \def\cindex {\cpindex} \def\vindex {\vrindex} \def\tindex {\tpindex} \def\pindex {\pgindex} \def\cindexsub {\begingroup\obeylines\cindexsub} {\obeylines % \gdef\cindexsub "#1" #2^^M{\endgroup % \dosubind{cp}{#2}{#1}}} % Define the macros used in formatting output of the sorted index material. % @printindex causes a particular index (the ??s file) to get printed. % It does not print any chapter heading (usually an @unnumbered). % \parseargdef\printindex{\begingroup \dobreak \chapheadingskip{10000}% % \smallfonts \rm \tolerance = 9500 \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % % See if the index file exists and is nonempty. % Change catcode of @ here so that if the index file contains % \initial {@} % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 % See comment in \requireopenindexfile. \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi \openin 1 \jobname.\indexname s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent \else \catcode`\\ = 0 \escapechar = `\\ % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. \read 1 to \thisline \ifeof 1 \putwordIndexIsEmpty \else % Index files are almost Texinfo source, but we use \ as the escape % character. It would be better to use @, but that's too big a change % to make right now. \def\indexbackslash{\ttbackslash}% \let\indexlbrace\{ % Likewise, set these sequences for braces \let\indexrbrace\} % used in the sort key. \begindoublecolumns \let\entryorphanpenalty=\indexorphanpenalty % % Read input from the index file line by line. \loopdo \ifeof1 \let\firsttoken\relax \else \read 1 to \nextline \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}% \act \fi \thisline % \ifeof1\else \let\thisline\nextline \repeat %% \enddoublecolumns \fi \fi \closein 1 \endgroup} \def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken} \long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1} \def\loopdo#1\repeat{\def\body{#1}\loopdoxxx} \def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. {\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13 \catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 \catcode`\$=3 \gdef\initialglyphs{% % Some changes for non-alphabetic characters. Using the glyphs from the % math fonts looks more consistent than the typewriter font used elsewhere % for these characters. \def\indexbackslash{\math{\backslash}}% \let\\=\indexbackslash % % Can't get bold backslash so don't use bold forward slash \catcode`\/=13 \def/{{\secrmnotbold \normalslash}}% \def-{{\normaldash\normaldash}}% en dash `--' \def^{{\chapbf \normalcaret}}% \def~{{\chapbf \normaltilde}}% \def\_{% \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% \def|{$\vert$}% \def<{$\less$}% \def>{$\gtr$}% \def+{$\normalplus$}% }} \def\initial{% \bgroup \initialglyphs \initialx } \def\initialx#1{% % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. % The glue before the bonus allows a little bit of space at the % bottom of a column to reduce an increase in inter-line spacing. \nobreak \vskip 0pt plus 5\baselineskip \penalty -300 \vskip 0pt plus -5\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column % to column. It still won't often be perfect, because of the stretch % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus 1\baselineskip \leftline{\secfonts \kern-0.05em \secbf #1}% % \secfonts is inside the argument of \leftline so that the change of % \baselineskip will not affect any glue inserted before the vbox that % \leftline creates. % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip \egroup % \initialglyphs } \newdimen\entryrightmargin \entryrightmargin=0pt % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % \def\entry{% \begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par % % No extra space above this paragraph. \parskip = 0in % % When reading the text of entry, convert explicit line breaks % from @* into spaces. The user might give these in long section % titles, for instance. \def\*{\unskip\space\ignorespaces}% \def\entrybreak{\hfil\break}% An undocumented command % % A bit of stretch before each entry for the benefit of balancing % columns. \vskip 0pt plus0.5pt % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% % Save the text of the entry \global\setbox\boxA=\hbox\bgroup \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. % Not absorbing as a macro argument reduces the chance of problems % with catcodes occurring. } {\catcode`\@=11 \gdef\finishentry#1{% \egroup % end box A \dimen@ = \wd\boxA % Length of text of entry \global\setbox\boxA=\hbox\bgroup\unhbox\boxA % #1 is the page number. % % Get the width of the page numbers, and only use % leaders if they are present. \global\setbox\boxB = \hbox{#1}% \ifdim\wd\boxB = 0pt \null\nobreak\hfill\ % \else % \null\nobreak\indexdotfill % Have leaders before the page number. % \ifpdf \pdfgettoks#1.% \hskip\skip\thinshrinkable\the\toksA \else \hskip\skip\thinshrinkable #1% \fi \fi \egroup % end \boxA \ifdim\wd\boxB = 0pt \global\setbox\entryindexbox=\box\boxA \else \global\setbox\entryindexbox=\vbox\bgroup\noindent % We want the text of the entries to be aligned to the left, and the % page numbers to be aligned to the right. % \advance\leftskip by 0pt plus 1fil \advance\leftskip by 0pt plus -1fill \rightskip = 0pt plus -1fil \advance\rightskip by 0pt plus 1fill % Cause last line, which could consist of page numbers on their own % if the list of page numbers is long, to be aligned to the right. \parfillskip=0pt plus -1fill % \hangindent=1em % \advance\rightskip by \entryrightmargin % Determine how far we can stretch into the margin. % This allows, e.g., "Appendix H GNU Free Documentation License" to % fit on one line in @letterpaper format. \ifdim\entryrightmargin>2.1em \dimen@i=2.1em \else \dimen@i=0em \fi \advance \parfillskip by 0pt minus 1\dimen@i % \dimen@ii = \hsize \advance\dimen@ii by -1\leftskip \advance\dimen@ii by -1\entryrightmargin \advance\dimen@ii by 1\dimen@i \let\maybestrut=\relax \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line \let\maybestrut=\strut \ifdim\dimen@ > 0.8\dimen@ii % due to long index text \dimen@ = 0.7\dimen@ % Try to split the text roughly evenly \dimen@ii = \hsize \advance \dimen@ii by -1em \ifnum\dimen@>\dimen@ii % If the entry is too long, use the whole line \dimen@ = \dimen@ii \fi \advance\leftskip by 0pt plus 1fill % ragged right \advance \dimen@ by 1\rightskip \parshape = 2 0pt \dimen@ 1em \dimen@ii % Ideally we'd add a finite glue at the end of the first line only, but % TeX doesn't seem to provide a way to do such a thing. \fi\fi \maybestrut % Add a strut on the first and last lines \unhbox\boxA \maybestrut % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % % Word spacing - no stretch \spaceskip=\fontdimen2\font minus \fontdimen4\font % \linepenalty=1000 % Discourage line breaks. \hyphenpenalty=5000 % Discourage hyphenation. % \par % format the paragraph \egroup % The \vbox \fi \endgroup % delay text of entry until after penalty \bgroup\aftergroup\insertindexentrybox \entryorphanpenalty }} \newskip\thinshrinkable \skip\thinshrinkable=.15em minus .15em \newbox\entryindexbox \def\insertindexentrybox{% \lineskip=0pt % This comes into effect when the \vbox has a large % height due to the paragraph in it having several % lines. \box\entryindexbox} % Default is no penalty \let\entryorphanpenalty\egroup % Used from \printindex. \firsttoken should be the first token % after the \entry. If it's not another \entry, we are at the last % line of a group of index entries, so insert a penalty to discourage % orphaned index entries. \long\def\indexorphanpenalty{% \def\isentry{\entry}% \ifx\firsttoken\isentry \else \unskip\penalty 9000 % The \unskip here stops breaking before the glue. It relies on the % \vskip above being there, otherwise there is an error % "You can't use `\unskip' in vertical mode". There has to be glue % in the current vertical list that hasn't been added to the % "current page". See Chapter 24 of the TeXbook. This contradicts % Section 8.3.7 in "TeX by Topic," though. \fi \egroup % now comes the box added with \aftergroup } % Like plain.tex's \dotfill, except uses up at least 1 em. % The filll stretch here overpowers both the fil and fill stretch to push % the page number to the right. \def\indexdotfill{\cleaders \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1filll} \def\primary #1{\line{#1\hfil}} \newskip\secondaryindent \secondaryindent=0.5cm \def\secondary#1#2{{% \parfillskip=0in \parskip=0in \hangindent=1in \hangafter=1 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill \ifpdf \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. \else #2 \fi \par }} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. \catcode`\@=11 \newbox\partialpage \newdimen\doublecolumnhsize \newdimen\doublecolumntopgap \doublecolumntopgap = 0pt \newtoks\savedtopmark % Used in \begindoublecolumns \newtoks\savedfirstmark \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {% % % Here is a possibility not foreseen in manmac: if we accumulate a % whole lot of material, we might end up calling this \output % routine twice in a row (see the doublecol-lose test, which is % essentially a couple of indexes with @setchapternewpage off). In % that case we just ship out what is in \partialpage with the normal % output routine. Generally, \partialpage will be empty when this % runs and this will be a no-op. See the indexspread.tex test case. \ifvoid\partialpage \else \onepageout{\pagecontents\partialpage}% \fi % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE \kern-\topskip \kern\baselineskip }% % Save \topmark and \firstmark \global\savedtopmark=\expandafter{\topmark}% \global\savedfirstmark=\expandafter{\firstmark}% }% \eject % run that output routine to set \partialpage % % We recover the two marks that the last output routine saved in order % to propagate the information in marks added around a chapter heading, % which could be otherwise be lost by the time the final page is output. % \mark{\the\savedtopmark}% Only mark in page passed to following \output. \output = {% \setbox0=\box\PAGE % clear box 255 }abc\eject % \mark{\the\savedfirstmark}% % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant % below is chosen so that the gutter has the same value (well, +-<1pt) % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) % been clobbered. % \doublecolumnhsize = \hsize \advance\doublecolumnhsize by -.04154\hsize \divide\doublecolumnhsize by 2 \hsize = \doublecolumnhsize % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) \global\doublecolumntopgap = \topskip \global\advance\doublecolumntopgap by -1\baselineskip \global\advance\vsize by -1\doublecolumntopgap \vsize = 2\vsize \topskip=0pt } % The double-column output routine for all double-column pages except % the last, which is done by \balancecolumns. % \def\doublecolumnout{% \splittopskip=\topskip \splitmaxdepth=\maxdepth % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the % previous page. \dimen@ = \vsize \divide\dimen@ by 2 \advance\dimen@ by -\ht\partialpage % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty } % % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split, in box0 and box2. \def\pagesofar{% \unvbox\partialpage % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \vbox{% \vskip\doublecolumntopgap \hbox to\pagewidth{\box0\hfil\box2}}% } % Finished with with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the % following situation: % % The last section of the index consists only of a single entry. % Before this section, \pagetotal is less than \pagegoal, so no % break occurs before the last section starts. However, the last % section, consisting of \initial and the single \entry, does not % fit on the page and has to be broken off. Without the following % penalty the page builder will not be exercised until \eject % below, and by that time we'll already have changed the output % routine to the \balancecolumns version, so the next-to-last % double-column page will be processed with \balancecolumns, which % is wrong: The two columns will go to the main vertical list, with % the broken-off section in the recent contributions. As soon as % the output routine finishes, TeX starts reconsidering the page % break. The two columns and the broken-off section both fit on the % page, because the two columns now take up only half of the page % goal. When TeX sees \eject from below which follows the final % section, it invokes the new output routine that we've set after % \balancecolumns below; \onepageout will try to fit the two columns % and the final section into the vbox of \pageheight (see % \pagebody), causing an overfull box. % % Note that glue won't work here, because glue does not exercise the % page builder, unlike penalties (see The TeXbook, pp. 280-281). \penalty0 % \output = {% % Split the last of the double-column material. Leave it on the % current page, no automatic page break. \balancecolumns % % If we end up splitting too much material for the current page, % though, there will be another page break right after this \output % invocation ends. Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal % definition right away. (We hope \balancecolumns will never be % called on to balance too much material, but if it is, this makes % the output somewhat more palatable.) \global\output = {\onepageout{\pagecontents\PAGE}}% }% \eject \endgroup % started in \begindoublecolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column % typesetting, so reset \pagegoal to the normal \vsize (after the % \endgroup where \vsize got restored). \pagegoal = \vsize } % % Only called for the last of the double column material. \doublecolumnout % does the others. \def\balancecolumns{% \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \ifdim\dimen@<14\baselineskip % Don't split a short final column in two. \setbox2=\vbox{}% \else \divide\dimen@ by 2 % target to split to \dimen@ii = \dimen@ \splittopskip = \topskip % Loop until the second column is no higher than the first {% \vbadness = 10000 \loop \global\setbox3 = \copy0 \global\setbox1 = \vsplit3 to \dimen@ % Remove glue from bottom of first column to % make sure it is higher than the second. \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}% \ifdim\ht3>\ht1 \global\advance\dimen@ by 1pt \repeat }% \multiply\dimen@ii by 4 \divide\dimen@ii by 5 \ifdim\ht3<\dimen@ii % Column heights are too different, so don't make their bottoms % flush with each other. The glue at the end of the second column % allows a second column to stretch, reducing the difference in % height between the two. \setbox0=\vbox to\dimen@{\unvbox1\vfill}% \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}% \else \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% \fi \fi % \pagesofar } \catcode`\@ = \other \message{sectioning,} % Chapters, sections, etc. % Let's start with @part. \outer\parseargdef\part{\partzzz{#1}} \def\partzzz#1{% \chapoddpage \null \vskip.3\vsize % move it down on the page a bit \begingroup \noindent \titlefonts\rmisbold #1\par % the text \let\lastnode=\empty % no node to associate with \writetocentry{part}{#1}{}% but put it in the toc \headingsoff % no headline or footline on the part page % This outputs a mark at the end of the page that clears \thischapter % and \thissection, as is done in \startcontents. \let\pchapsepmacro\relax \chapmacro{}{Yomitfromtoc}{}% \chapoddpage \endgroup } % \unnumberedno is an oxymoron. But we count the unnumbered % sections so that we can refer to them unambiguously in the pdf % outlines by their "section number". We avoid collisions with chapter % numbers by starting them at 10000. (If a document ever has 10000 % chapters, we're in trouble anyway, I'm sure.) \newcount\unnumberedno \unnumberedno = 10000 \newcount\chapno \newcount\secno \secno=0 \newcount\subsecno \subsecno=0 \newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ % % \def\appendixletter{\char\the\appendixno} % We do the following ugly conditional instead of the above simple % construct for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. % \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% \else\ifnum\appendixno=`C C% \else\ifnum\appendixno=`D D% \else\ifnum\appendixno=`E E% \else\ifnum\appendixno=`F F% \else\ifnum\appendixno=`G G% \else\ifnum\appendixno=`H H% \else\ifnum\appendixno=`I I% \else\ifnum\appendixno=`J J% \else\ifnum\appendixno=`K K% \else\ifnum\appendixno=`L L% \else\ifnum\appendixno=`M M% \else\ifnum\appendixno=`N N% \else\ifnum\appendixno=`O O% \else\ifnum\appendixno=`P P% \else\ifnum\appendixno=`Q Q% \else\ifnum\appendixno=`R R% \else\ifnum\appendixno=`S S% \else\ifnum\appendixno=`T T% \else\ifnum\appendixno=`U U% \else\ifnum\appendixno=`V V% \else\ifnum\appendixno=`W W% \else\ifnum\appendixno=`X X% \else\ifnum\appendixno=`Y Y% \else\ifnum\appendixno=`Z Z% % The \the is necessary, despite appearances, because \appendixletter is % expanded while writing the .toc file. \char\appendixno is not % expandable, thus it is written literally, thus all appendixes come out % with the same letter (or @) in the toc without it. \else\char\the\appendixno \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} % Each @chapter defines these (using marks) as the number+name, number % and name of the chapter. Page headings and footings can use % these. @section does likewise. \def\thischapter{} \def\thischapternum{} \def\thischaptername{} \def\thissection{} \def\thissectionnum{} \def\thissectionname{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} \let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} \let\down=\lowersections % original BFox name % we only have subsub. \chardef\maxseclevel = 3 % % A numbered section within an unnumbered changes to unnumbered too. % To achieve this, remember the "biggest" unnum. sec. we are currently in: \chardef\unnlevel = \maxseclevel % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. \def\chapheadtype{N} % Choose a heading macro % #1 is heading type % #2 is heading level % #3 is text for heading \def\genhead#1#2#3{% % Compute the abs. sec. level: \absseclevel=#2 \advance\absseclevel by \secbase % Make sure \absseclevel doesn't fall outside the range: \ifnum \absseclevel < 0 \absseclevel = 0 \else \ifnum \absseclevel > 3 \absseclevel = 3 \fi \fi % The heading type: \def\headtype{#1}% \if \headtype U% \ifnum \absseclevel < \unnlevel \chardef\unnlevel = \absseclevel \fi \else % Check for appendix sections: \ifnum \absseclevel = 0 \edef\chapheadtype{\headtype}% \else \if \headtype A\if \chapheadtype N% \errmessage{@appendix... within a non-appendix chapter}% \fi\fi \fi % Check for numbered within unnumbered: \ifnum \absseclevel > \unnlevel \def\headtype{U}% \else \chardef\unnlevel = 3 \fi \fi % Now print the heading: \if \headtype U% \ifcase\absseclevel \unnumberedzzz{#3}% \or \unnumberedseczzz{#3}% \or \unnumberedsubseczzz{#3}% \or \unnumberedsubsubseczzz{#3}% \fi \else \if \headtype A% \ifcase\absseclevel \appendixzzz{#3}% \or \appendixsectionzzz{#3}% \or \appendixsubseczzz{#3}% \or \appendixsubsubseczzz{#3}% \fi \else \ifcase\absseclevel \chapterzzz{#3}% \or \seczzz{#3}% \or \numberedsubseczzz{#3}% \or \numberedsubsubseczzz{#3}% \fi \fi \fi \suppressfirstparagraphindent } % an interface: \def\numhead{\genhead N} \def\apphead{\genhead A} \def\unnmhead{\genhead U} % @chapter, @appendix, @unnumbered. Increment top-level counter, reset % all lower-level sectioning counters to zero. % % Also set \chaplevelprefix, which we prepend to @float sequence numbers % (e.g., figures), q.v. By default (before any chapter), that is empty. \let\chaplevelprefix = \empty % \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz#1{% % section resetting is \global in case the chapter is in a group, such % as an @include file. \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\chapno by 1 % % Used for \float. \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % % \putwordChapter can contain complex things in translations. \toks0=\expandafter{\putwordChapter}% \message{\the\toks0 \space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% % % So @section and the like are numbered underneath this chapter. \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec } \outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz % \def\appendixzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\appendixno by 1 \gdef\chaplevelprefix{\appendixletter.}% \resetallfloatnos % % \putwordAppendix can contain complex things in translations. \toks0=\expandafter{\putwordAppendix}% \message{\the\toks0 \space \appendixletter}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec } % normally unnmhead0 calls unnumberedzzz: \outer\parseargdef\unnumbered{\unnmhead0{#1}} \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 % % Since an unnumbered has no number, no prefix for figures. \global\let\chaplevelprefix = \empty \resetallfloatnos % % This used to be simply \message{#1}, but TeX fully expands the % argument to \message. Therefore, if #1 contained @-commands, TeX % expanded them. For example, in `@unnumbered The @cite{Book}', TeX % expanded @cite (which turns out to cause errors because \cite is meant % to be executed, not expanded). % % Anyway, we don't want the fully-expanded definition of @cite to appear % as a result of the \message, we just want `@cite' itself. We use % \the to achieve this: TeX expands \the only once, % simply yielding the contents of . (We also do this for % the toc entries.) \toks0 = {#1}% \message{(\the\toks0)}% % \chapmacro{#1}{Ynothing}{\the\unnumberedno}% % \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec } % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax } % @top is like @unnumbered. \let\top\unnumbered % Sections. % \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz \def\seczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% } % normally calls appendixsectionzzz: \outer\parseargdef\appendixsection{\apphead1{#1}} \def\appendixsectionzzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% } \let\appendixsec\appendixsection % normally calls unnumberedseczzz: \outer\parseargdef\unnumberedsec{\unnmhead1{#1}} \def\unnumberedseczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% } % Subsections. % % normally calls numberedsubseczzz: \outer\parseargdef\numberedsubsec{\numhead2{#1}} \def\numberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% } % normally calls appendixsubseczzz: \outer\parseargdef\appendixsubsec{\apphead2{#1}} \def\appendixsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno}% } % normally calls unnumberedsubseczzz: \outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno}% } % Subsubsections. % % normally numberedsubsubseczzz: \outer\parseargdef\numberedsubsubsec{\numhead3{#1}} \def\numberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynumbered}% {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally appendixsubsubseczzz: \outer\parseargdef\appendixsubsubsec{\apphead3{#1}} \def\appendixsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally unnumberedsubsubseczzz: \outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% } % These macros control what the section commands do, according % to what kind of chapter we are in (ordinary, appendix, or unnumbered). % Define them by default for a numbered chapter. \let\section = \numberedsec \let\subsection = \numberedsubsec \let\subsubsection = \numberedsubsubsec % Define @majorheading, @heading and @subheading \def\majorheading{% {\advance\chapheadingskip by 10pt \chapbreak }% \parsearg\chapheadingzzz } \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip \nobreak \suppressfirstparagraphindent } % @heading, @subheading, @subsubheading. \parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. % Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} % Parameter controlling skip before chapter headings (if needed) \newskip\chapheadingskip % Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} % Start a new page \def\chappager{\par\vfill\supereject} % \chapoddpage - start on an odd page for a new chapter % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. \def\chapoddpage{% \chappager \ifodd\pageno \else \begingroup \headingsoff \null \chappager \endgroup \fi } \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon % \chapmacro - Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. % Not used for @heading series. % % To test against our argument. \def\Ynothingkeyword{Ynothing} \def\Yappendixkeyword{Yappendix} \def\Yomitfromtockeyword{Yomitfromtoc} % \def\chapmacro#1#2#3{% \checkenv{}% chapters, etc., should not start inside an environment. % % Insert the first mark before the heading break (see notes for \domark). \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% \gdef\thissection{}}% % \def\temptype{#2}% \ifx\temptype\Ynothingkeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{\thischaptername}}% \else\ifx\temptype\Yomitfromtockeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{}}% \else\ifx\temptype\Yappendixkeyword \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% % \noexpand\putwordAppendix avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \else \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% % \noexpand\putwordChapter avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordChapter{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \fi\fi\fi % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert the chapter heading break. \pchapsepmacro % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \domark % {% \chapfonts \rmisbold \let\footnote=\errfootnoteheading % give better error message % % Have to define \lastsection before calling \donoderef, because the % xref code eventually uses it. On the other hand, it has to be called % after \pchapsepmacro, or the headline will change too soon. \gdef\lastsection{#1}% % % Only insert the separating space if we have a chapter/appendix % number, and don't print the unnumbered ``number''. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unnchap}% \else\ifx\temptype\Yomitfromtockeyword \setbox0 = \hbox{}% contents like unnumbered, but no toc entry \def\toctype{omit}% \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% \def\toctype{app}% \else \setbox0 = \hbox{#3\enspace}% \def\toctype{numchap}% \fi\fi\fi % % Write the toc entry for this chapter. Must come before the % \donoderef, because we include the current node name in the toc % entry, and \donoderef resets it to empty. \writetocentry{\toctype}{#1}{#3}% % % For pdftex, we have to write out the node definition (aka, make % the pdfdest) after any page break, but before the actual text has % been typeset. If the destination for the pdf outline is after the % text, then jumping from the outline may wind up with the text not % being visible, for instance under high magnification. \donoderef{#2}% % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title \nobreak } % @centerchap -- centered and unnumbered. \let\centerparametersmaybe = \relax \def\centerparameters{% \advance\rightskip by 3\rightskip \leftskip = \rightskip \parfillskip = 0pt } % I don't think this chapter style is supported any more, so I'm not % updating it with the new noderef stuff. We'll see. --karl, 11aug03. % \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} % \def\unnchfopen #1{% \chapoddpage \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% \par\penalty 5000 % } \def\centerchfopen #1{% \chapoddpage \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% \nobreak\bigskip \nobreak } \def\CHAPFopen{% \global\let\chapmacro=\chfopen \global\let\centerchapmacro=\centerchfopen} % Section titles. These macros combine the section number parts and % call the generic \sectionheading to do the printing. % \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip{-1000}} % Subsection titles. \newskip\subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} % Subsubsection titles. \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} % Print any size, any type, section title. % % #1 is the text of the title, % #2 is the section level (sec/subsec/subsubsec), % #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc), % #4 is the section number. % \def\seckeyword{sec} % \def\sectionheading#1#2#3#4{% {% \def\sectionlevel{#2}% \def\temptype{#3}% % % It is ok for the @heading series commands to appear inside an % environment (it's been historically allowed, though the logic is % dubious), but not the others. \ifx\temptype\Yomitfromtockeyword\else \checkenv{}% non-@*heading should not be in an environment. \fi \let\footnote=\errfootnoteheading % % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % % Insert first mark before the heading break (see notes for \domark). \let\prevsectiondefs=\lastsectiondefs \ifx\temptype\Ynothingkeyword \ifx\sectionlevel\seckeyword \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% \gdef\thissection{\thissectionname}}% \fi \else\ifx\temptype\Yomitfromtockeyword % Don't redefine \thissection. \else\ifx\temptype\Yappendixkeyword \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \else \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \fi\fi\fi % % Go into vertical mode. Usually we'll already be there, but we % don't want the following whatsit to end up in a preceding paragraph % if the document didn't happen to have a blank line. \par % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert space above the heading. \csname #2headingbreak\endcsname % % Now the second mark, after the heading break. No break points % between here and the heading. \global\let\prevsectiondefs=\lastsectiondefs \domark % % Only insert the space after the number if we have a section number. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unn}% \gdef\lastsection{#1}% \else\ifx\temptype\Yomitfromtockeyword % for @headings -- no section number, don't include in toc, % and don't redefine \lastsection. \setbox0 = \hbox{}% \def\toctype{omit}% \let\sectionlevel=\empty \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{#4\enspace}% \def\toctype{app}% \gdef\lastsection{#1}% \else \setbox0 = \hbox{#4\enspace}% \def\toctype{num}% \gdef\lastsection{#1}% \fi\fi\fi % % Write the toc entry (before \donoderef). See comments in \chapmacro. \writetocentry{\toctype\sectionlevel}{#1}{#4}% % % Write the node reference (= pdf destination for pdftex). % Again, see comments in \chapmacro. \donoderef{#3}% % % Interline glue will be inserted when the vbox is completed. % That glue will be a valid breakpoint for the page, since it'll be % preceded by a whatsit (usually from the \donoderef, or from the % \writetocentry if there was no node). We don't want to allow that % break, since then the whatsits could end up on page n while the % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. \nobreak % % Output the actual section heading. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% % Add extra space after the heading -- half of whatever came above it. % Don't allow stretch, though. \kern .5 \csname #2headingskip\endcsname % % Do not let the kern be a potential breakpoint, as it would be if it % was followed by glue. \nobreak % % We'll almost certainly start a paragraph next, so don't let that % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) However, when a paragraph is not started next % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out % or the negative glue will cause weirdly wrong output, typically % obscuring the section heading with something else. \vskip-\parskip % % This is so the last item on the main vertical list is a known % \penalty > 10000, so \startdefun, etc., can recognize the situation % and do the needful. \penalty 10001 } \message{toc,} % Table of contents. \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. % Called from @chapter, etc. % % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} % We append the current node name (if any) and page number as additional % arguments for the \{chap,sec,...}entry macros which will eventually % read this. The node name is used in the pdf outlines as the % destination to jump to. % % We open the .toc file for writing here instead of at @setfilename (or % any other fixed time) so that @contents can be anywhere in the document. % But if #1 is `omit', then we don't do anything. This is used for the % table of contents chapter openings themselves. % \newif\iftocfileopened \def\omitkeyword{omit}% % \def\writetocentry#1#2#3{% \edef\writetoctype{#1}% \ifx\writetoctype\omitkeyword \else \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi % \iflinks {\atdummies \edef\temp{% \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% \temp }% \fi \fi % % Tell \shipout to create a pdf destination on each page, if we're % writing pdf. These are used in the table of contents. We can't % just write one on every page because the title pages are numbered % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. \ifpdf \global\pdfmakepagedesttrue \fi } % These characters do not print properly in the Computer Modern roman % fonts, so we must take special care. This is more or less redundant % with the Texinfo input format setup at the end of this file. % \def\activecatcodes{% \catcode`\"=\active \catcode`\$=\active \catcode`\<=\active \catcode`\>=\active \catcode`\\=\active \catcode`\^=\active \catcode`\_=\active \catcode`\|=\active \catcode`\~=\active } % Read the toc file, which is essentially Texinfo input. \def\readtocfile{% \setupdatafile \activecatcodes \input \tocreadfilename } \newskip\contentsrightmargin \contentsrightmargin=1in \newcount\savepageno \newcount\lastnegativepageno \lastnegativepageno = -1 % Prepare to read what we've written to \tocfile. % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should % start on an odd page, unlike chapters. Thus, we maintain % \contentsalignmacro in parallel with \pagealignmacro. % From: Torbjorn Granlund \contentsalignmacro \immediate\closeout\tocfile % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \chapmacro{#1}{Yomitfromtoc}{}% % \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. \entryrightmargin=\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi } % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. % \def\tocreadfilename{\jobname.toc} % Normal (long) toc. % \def\contents{% \startcontents{\putwordTOC}% \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \ifeof 1 \else \pdfmakeoutlines \fi \closein 1 \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } % And just the chapters. \def\summarycontents{% \startcontents{\putwordShortTOC}% % \let\partentry = \shortpartentry \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry % We want a true roman here for the page numbers. \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \let\tt=\shortconttt \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\numsecentry##1##2##3##4{} \let\appsecentry = \numsecentry \let\unnsecentry = \numsecentry \let\numsubsecentry = \numsecentry \let\appsubsecentry = \numsecentry \let\unnsubsecentry = \numsecentry \let\numsubsubsecentry = \numsecentry \let\appsubsubsecentry = \numsecentry \let\unnsubsubsecentry = \numsecentry \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \closein 1 \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } \let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. % \def\shortchaplabel#1{% % This space should be enough, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % But use \hss just in case. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) % % We'd like to right-justify chapter numbers, but that looks strange % with appendix letters. And right-justifying numbers and % left-justifying letters looks strange when there is less than 10 % chapters. Have to read the whole toc once to know how many chapters % there are before deciding ... \hbox to 1em{#1\hss}% } % These macros generate individual entries in the table of contents. % The first argument is the chapter or section name. % The last argument is the page number. % The arguments in between are the chapter number, section number, ... % Parts, in the main contents. Replace the part number, which doesn't % exist, with an empty box. Let's hope all the numbers have the same width. % Also ignore the page number, which is conventionally not printed. \def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} \def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} % % Parts, in the short toc. \def\shortpartentry#1#2#3#4{% \penalty-300 \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip \shortchapentry{{\bf #1}}{\numeralbox}{}{}% } % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% } % Appendices, in the main contents. % Need the word Appendix, and a fixed-size box. % \def\appendixbox#1{% % We use M since it's probably the widest letter. \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % \def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} \def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} \let\appsecentry=\numsecentry \def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} % Subsections. \def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} \let\appsubsecentry=\numsubsecentry \def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} % And subsubsections. \def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} \let\appsubsubsecentry=\numsubsubsecentry \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} % This parameter controls the indentation of the various levels. % Same as \defaultparindent. \newdimen\tocindent \tocindent = 15pt % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % % If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup % Move the page numbers slightly to the right \advance\entryrightmargin by -0.05em \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % We use the same \entry macro as for the index entries. \let\tocentry = \entry % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} \def\dopageno#1{{\rm #1}} \def\doshortpageno#1{{\rm #1}} \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \def\subsecentryfonts{\textfonts} \def\subsubsecentryfonts{\textfonts} \message{environments,} % @foo ... @end foo. % @tex ... @end tex escapes into raw TeX temporarily. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain @ character. \envdef\tex{% \setupmarkupstyle{tex}% \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie \catcode `\%=14 \catcode `\+=\other \catcode `\"=\other \catcode `\|=\other \catcode `\<=\other \catcode `\>=\other \catcode `\`=\other \catcode `\'=\other \escapechar=`\\ % % ' is active in math mode (mathcode"8000). So reset it, and all our % other math active characters (just in case), to plain's definitions. \mathactive % % Inverse of the list at the beginning of the file. \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc \let\,=\ptexcomma \let\.=\ptexdot \let\dots=\ptexdots \let\equiv=\ptexequiv \let\!=\ptexexclam \let\i=\ptexi \let\indent=\ptexindent \let\noindent=\ptexnoindent \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace \let\/=\ptexslash \let\sp=\ptexsp \let\*=\ptexstar %\let\sup=\ptexsup % do not redefine, we want @sup to work in math mode \let\t=\ptext \expandafter \let\csname top\endcsname=\ptextop % we've made it outer \let\frenchspacing=\plainfrenchspacing % \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% \def\@{@}% } % There is no need to define \Etex. % Define @lisp ... @end lisp. % @lisp environment forms a group so it can rebind things, % including the definition of @end lisp (which normally is erroneous). % Amount to narrow the margins by for @lisp. \newskip\lispnarrowing \lispnarrowing=0.4in % This is the definition that ^^M gets inside @lisp, @example, and other % such environments. \null is better than a space, since it doesn't % have any width. \def\lisppar{\null\endgraf} % This space is always present above and below environments. \newskip\envskipamount \envskipamount = 0pt % Make spacing and below environment symmetrical. We use \parskip here % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip \ifnum\lastpenalty<10000 % Penalize breaking before the environment, because preceding text % often leads into it. \penalty100 \fi \vskip\envskipamount \fi \fi }} \def\afterenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi \vskip\envskipamount \fi \fi }} % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner \newskip\normbskip\newskip\normpskip\newskip\normlskip \circthick=\fontdimen8\circle % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip \ctl\leaders\hrule height\circthick\hfil\ctr \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip \cbl\leaders\hrule height\circthick\hfil\cbr \hskip\rskip}} % \newskip\lskip\newskip\rskip \envdef\cartouche{% \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize \advance\cartouter by 18.4pt % allow for 3pt kerns on either % side, and for 6pt waste from % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % % If this cartouche directly follows a sectioning command, we need the % \parskip glue (backspaced over by default) or the cartouche can % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % \setbox\groupbox=\vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup \hskip\lskip \vrule\kern3pt \vbox\bgroup \kern3pt \hsize=\cartinner \baselineskip=\normbskip \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip \comment % For explanation, see the end of def\group. } \def\Ecartouche{% \ifhmode\par\fi \kern3pt \egroup \kern3pt\vrule \hskip\rskip \egroup \cartbot \egroup \addgroupbox \checkinserts } % This macro is called at the beginning of all the @example variants, % inside a group. \newdimen\nonfillparindent \def\nonfillstart{% \aboveenvbreak \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt % Turn off paragraph indentation but redefine \indent to emulate % the normal \indent. \nonfillparindent=\parindent \parindent = 0pt \let\indent\nonfillindent % \emergencystretch = 0pt % don't try to avoid overfull boxes \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing \else \let\nonarrowing = \relax \fi \let\exdent=\nofillexdent } \begingroup \obeyspaces % We want to swallow spaces (but not other tokens) after the fake % @indent in our nonfill-environments, where spaces are normally % active and set to @tie, resulting in them not being ignored after % @indent. \gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% \gdef\nonfillindentcheck{% \ifx\temp % \expandafter\nonfillindentgobble% \else% \leavevmode\nonfillindentbox% \fi% }% \endgroup \def\nonfillindentgobble#1{\nonfillindent} \def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: % @example, @display, @format, @lisp % \def\smallword{small} \def\nosmallword{nosmall} \let\SETdispenvsize\relax \def\setnormaldispenv{% \ifx\SETdispenvsize\smallword % end paragraph for sake of leading, in case document has no blank % line. This is redundant with what happens in \aboveenvbreak, but % we need to do it before changing the fonts, and it's inconvenient % to change the fonts afterward. \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } \def\setsmalldispenv{% \ifx\SETdispenvsize\nosmallword \else \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } % We often define two environments, @foo and @smallfoo. % Let's do it in one command. #1 is the env name, #2 the definition. \def\makedispenvdef#1#2{% \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% \expandafter\let\csname E#1\endcsname \afterenvbreak \expandafter\let\csname Esmall#1\endcsname \afterenvbreak } % Define two environment synonyms (#1 and #2) for an environment. \def\maketwodispenvdef#1#2#3{% \makedispenvdef{#1}{#3}% \makedispenvdef{#2}{#3}% } % % @lisp: indented, narrowed, typewriter font; % @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % \maketwodispenvdef{lisp}{example}{% \nonfillstart \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \gobble % eat return } % @display/@smalldisplay: same as @lisp except keep current font. % \makedispenvdef{display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % \makedispenvdef{format}{% \let\nonarrowing = t% \nonfillstart \gobble } % @flushleft: same as @format, but doesn't obey \SETdispenvsize. \envdef\flushleft{% \let\nonarrowing = t% \nonfillstart \gobble } \let\Eflushleft = \afterenvbreak % @flushright. % \envdef\flushright{% \let\nonarrowing = t% \nonfillstart \advance\leftskip by 0pt plus 1fill\relax \gobble } \let\Eflushright = \afterenvbreak % @raggedright does more-or-less normal line breaking but no right % justification. From plain.tex. Don't stretch around special % characters in urls in this environment, since the stretch at the right % should be enough. \envdef\raggedright{% \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax \def\urefprestretchamount{0pt}% \def\urefpoststretchamount{0pt}% } \let\Eraggedright\par \envdef\raggedleft{% \parindent=0pt \leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedleft\par \envdef\raggedcenter{% \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedcenter\par % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % \makedispenvdef{quotation}{\quotationstart} % \def\quotationstart{% \indentedblockstart % same as \indentedblock, but increase right margin too. \ifx\nonarrowing\relax \advance\rightskip by \lispnarrowing \fi \parsearg\quotationlabel } % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par \ifx\quotationauthor\thisisundefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } \def\Esmallquotation{\Equotation} % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% \def\temp{#1}% \ifx\temp\empty \else {\bf #1: }% \fi } % @indentedblock is like @quotation, but indents only on the left and % has no optional argument. % \makedispenvdef{indentedblock}{\indentedblockstart} % \def\indentedblockstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt % % @cartouche defines \nonarrowing to inhibit narrowing at next level down. \ifx\nonarrowing\relax \advance\leftskip by \lispnarrowing \exdentamount = \lispnarrowing \else \let\nonarrowing = \relax \fi } % Keep a nonzero parskip for the environment, since we're doing normal filling. % \def\Eindentedblock{% \par {\parskip=0pt \afterenvbreak}% } \def\Esmallindentedblock{\Eindentedblock} % LaTeX-like @verbatim...@end verbatim and @verb{...} % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org % % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % % [Knuth] p.344; only we need to do the other characters Texinfo sets % active too. Otherwise, they get lost as the first character on a % verbatim line. \def\dospecials{% \do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% \do\<\do\>\do\|\do\@\do+\do\"% % Don't do the quotes -- if we do, @set txicodequoteundirected and % @set txicodequotebacktick will not have effect on @verb and % @verbatim, and ?` and !` ligatures won't get disabled. %\do\`\do\'% } % % [Knuth] p. 380 \def\uncatcodespecials{% \def\do##1{\catcode`##1=\other}\dospecials} % % Setup for the @verb command. % % Eight spaces for a tab \begingroup \catcode`\^^I=\active \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} \endgroup % \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% \setupmarkupstyle{verb}% \tabeightspaces % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces } % Setup for the @verbatim environment % % Real tab expansion. \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % % We typeset each line of the verbatim in an \hbox, so we can handle % tabs. The \global is in case the verbatim line starts with an accent, % or some other command that starts with a begin-group. Otherwise, the % entire \verbbox would disappear at the corresponding end-group, before % it is typeset. Meanwhile, we can't have nested verbatim commands % (can we?), so the \global won't be overwriting itself. \newbox\verbbox \def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active \gdef\tabexpand{% \catcode`\^^I=\active \def^^I{\leavevmode\egroup \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab \divide\dimen\verbbox by\tabw \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox }% } \endgroup % start the verbatim environment. \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart \tt % easiest (and conventionally used) font for verbatim % The \leavevmode here is for blank lines. Otherwise, we would % never \starttabox and the \egroup would end verbatim mode. \def\par{\leavevmode\egroup\box\verbbox\endgraf}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and % make each space count. % Must do in this order: \obeylines \uncatcodespecials \sepspaces \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % % \def\doverb'{'#1'}'{#1} % % [Knuth] p. 382; only eat outer {} \begingroup \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] \endgroup % \def\verb{\begingroup\setupverb\doverb} % % % Do the @verbatim magic: define the macro \doverbatim so that % the (first) argument ends when '@end verbatim' is reached, ie: % % \def\doverbatim#1@end verbatim{#1} % % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': % we need not redefine '\', '{' and '}'. % % Inspired by LaTeX's verbatim command set [latex.ltx] % \begingroup \catcode`\ =\active \obeylines % % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. \endgroup % \envdef\verbatim{% \setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak % @verbatiminclude FILE - insert text of file in verbatim environment. % \def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} % \def\doverbatiminclude#1{% {% \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \input #1 \afterenvbreak }% } % @copying ... @end copying. % Save the text away for @insertcopying later. % % We save the uninterpreted tokens, rather than creating a box. % Saving the text in a box would be much easier, but then all the % typesetting commands (@smallbook, font changes, etc.) have to be done % beforehand -- and a) we want @copying to be done first in the source % file; b) letting users define the frontmatter in as flexible order as % possible is desirable. % \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} % \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page \scanexp\copyingtext \endgroup } \message{defuns,} % @defun etc. \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\defunpenalty % Start the processing of @deffn: \def\startdefun{% \ifnum\lastpenalty<10000 \medbreak \defunpenalty=10003 % Will keep this @deffn together with the % following @def command, see below. \else % If there are two @def commands in a row, we'll have a \nobreak, % which is there to keep the function description together with its % header. But if there's nothing but headers, we need to allow a % break somewhere. Check specifically for penalty 10002, inserted % by \printdefunline, instead of 10000, since the sectioning % commands also insert a nobreak penalty, and we don't want to allow % a break between a section heading and a defun. % % As a further refinement, we avoid "club" headers by signalling % with penalty of 10003 after the very first @deffn in the % sequence (see above), and penalty of 10002 after any following % @def command. \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi % % Similarly, after a section heading, do not allow a break. % But do insert the glue. \medskip % preceded by discardable penalty, so not a breakpoint \fi % \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent } \def\dodefunx#1{% % First, check whether we are in the right environment: \checkenv#1% % % As above, allow line break if we have multiple x headers in a row. % It's not a great place, though. \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi % % And now, it's time to reuse the body of the original defun: \expandafter\gobbledefun#1% } \def\gobbledefun#1\startdefun{} % \printdefunline \deffnheader{text} % \def\printdefunline#1#2{% \begingroup % call \deffnheader: #1#2 \endheader % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip \penalty\defunpenalty % signal to \startdefun and \dodefunx % Some of the @defun-type tags do not enable magic parentheses, % rendering the following check redundant. But we don't optimize. \checkparencounts \endgroup } \def\Edefun{\endgraf\medbreak} % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; % the only thing remaining is to define \deffnheader. % \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } % \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) } % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. % \def\domakedefun#1#2#3{% \envdef#1{% \startdefun \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% \def#2{\dodefunx#1}% \def#3% } \newif\ifdoingtypefn % doing typed function? \newif\ifrettypeownline % typeset return type on its own line? % @deftypefnnewline on|off says whether the return type of typed functions % are printed on their own line. This affects @deftypefn, @deftypefun, % @deftypeop, and @deftypemethod. % \parseargdef\deftypefnnewline{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxideftypefnnl\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETtxideftypefnnl\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @txideftypefnnl value `\temp', must be on|off}% \fi\fi } % Untyped functions: % @deffn category name args \makedefun{deffn}{\deffngeneral{}} % @deffn category class name args \makedefun{defop}#1 {\defopon{#1\ \putwordon}} % \defopon {category on}class name args \def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deffngeneral {subind}category name args % \def\deffngeneral#1#2 #3 #4\endheader{% % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. \dosubind{fn}{\code{#3}}{#1}% \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} % \deftypeopon {category on}class type name args \def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deftypefngeneral {subind}category type name args % \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% \dosubind{fn}{\code{#4}}{#1}% \doingtypefntrue \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args \makedefun{deftypevr}{\deftypecvgeneral{}} % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} % \deftypecvof {category of}class type var args \def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } % \deftypecvgeneral {subind}category type var args % \def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% \dosubind{vr}{\code{#4}}{#1}% \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args \makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} % \defcvof {category of}class var args \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } % Types: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \doind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } % Remaining @defun-like shortcuts: \makedefun{defun}{\deffnheader{\putwordDeffunc} } \makedefun{defmac}{\deffnheader{\putwordDefmac} } \makedefun{defspec}{\deffnheader{\putwordDefspec} } \makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } \makedefun{defmethod}{\defopon\putwordMethodon} \makedefun{deftypemethod}{\deftypeopon\putwordMethodon} \makedefun{defivar}{\defcvof\putwordInstanceVariableof} \makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. % % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% \par % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent % % Determine if we are typesetting the return type of a typed function % on a line by itself. \rettypeownlinefalse \ifdoingtypefn % doing a typed function specifically? % then check user option for putting return type on its own line: \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else \rettypeownlinetrue \fi \fi % % How we'll format the category name. Putting it in brackets helps % distinguish it from the body text that may end up on the next line % just below it. \def\temp{#1}% \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} % % Figure out line sizes for the paragraph shape. We'll always have at % least two. \tempnum = 2 % % The first line needs space for \box0; but if \rightskip is nonzero, % we need only space for the part of \box0 which exceeds it: \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip % % If doing a return type on its own line, we'll have another line. \ifrettypeownline \advance\tempnum by 1 \def\maybeshapeline{0in \hsize}% \else \def\maybeshapeline{}% \fi % % The continuations: \dimen2=\hsize \advance\dimen2 by -\defargsindent % % The final paragraph shape: \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 % % Put the category name at the right margin. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize % \hsize has to be shortened this way: \kern\leftskip % Intentionally do not respect \rightskip, since we need the space. }% % % Allow all lines to be underfull without complaint: \tolerance=10000 \hbadness=10000 \exdentamount=\defbodyindent {% % defun fonts. We use typewriter by default (used to be bold) because: % . we're printing identifiers, they should be in tt in principle. % . in languages with many accents, such as Czech or French, it's % common to leave accents off identifiers. The result looks ok in % tt, but exceedingly strange in rm. % . we don't want -- and --- to be treated as ligatures. % . this still does not fix the ?` and !` ligatures, but so far no % one has made identifiers using them :). \df \tt \def\temp{#2}% text of the return type \ifx\temp\empty\else \tclose{\temp}% typeset the return type \ifrettypeownline % put return type on its own line; prohibit line break following: \hfil\vadjust{\nobreak}\break \else \space % type on same line, so just followed by a space \fi \fi % no return type #3% output function name }% {\rm\enskip}% hskip 0.5 em of \tenrm % \boldbrax % arguments will be output next, if any. } % Print arguments in slanted roman (not ttsl), inconsistently with using % tt for the name. This is because literal text is sometimes needed in % the argument list (groff manual), and ttsl and tt are not very % distinguishable. Prevent hyphenation at `-' chars. % \def\defunargs#1{% % use sl by default (not ttsl), % tt for the names. \df \sl \hyphenchar\font=0 % % On the other hand, if an argument has two dashes (for instance), we % want a way to get ttsl. We used to recommend @var for that, so % leave the code in, but it's strange for @var to lead to typewriter. % Nowadays we recommend @code, since the difference between a ttsl hyphen % and a tt hyphen is pretty tiny. @code also disables ?` !`. \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. % \def\activeparens{% \catcode`\(=\active \catcode`\)=\active \catcode`\[=\active \catcode`\]=\active \catcode`\&=\active } % Make control sequences which act like normal parenthesis chars. \let\lparen = ( \let\rparen = ) % Be sure that we always have a definition for `(', etc. For example, % if the fn name has parens in it, \boldbrax will not be in effect yet, % so TeX would otherwise complain about undefined control sequence. { \activeparens \global\let(=\lparen \global\let)=\rparen \global\let[=\lbrack \global\let]=\rbrack \global\let& = \& \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} } \newcount\parencount % If we encounter &foo, then turn on ()-hacking afterwards \newif\ifampseen \def\amprm#1 {\ampseentrue{\bf\ }} \def\parenfont{% \ifampseen % At the first level, print parens in roman, % otherwise use the default font. \ifnum \parencount=1 \rm \fi \else % The \sf parens (in \boldbrax) actually are a little bolder than % the contained text. This is especially needed for [ and ] . \sf \fi } \def\infirstlevel#1{% \ifampseen \ifnum\parencount=1 #1% \fi \fi } \def\bfafterword#1 {#1 \bf} \def\opnr{% \global\advance\parencount by 1 {\parenfont(}% \infirstlevel \bfafterword } \def\clnr{% {\parenfont)}% \infirstlevel \sl \global\advance\parencount by -1 } \newcount\brackcount \def\lbrb{% \global\advance\brackcount by 1 {\bf[}% } \def\rbrb{% {\bf]}% \global\advance\brackcount by -1 } \def\checkparencounts{% \ifnum\parencount=0 \else \badparencount \fi \ifnum\brackcount=0 \else \badbrackcount \fi } % these should not use \errmessage; the glibc manual, at least, actually % has such constructs (when documenting function pointers). \def\badparencount{% \message{Warning: unbalanced parentheses in @def...}% \global\parencount=0 } \def\badbrackcount{% \message{Warning: unbalanced square brackets in @def...}% \global\brackcount=0 } \message{macros,} % @macro. % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. \ifx\eTeXversion\thisisundefined \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble \input \jobname.tmp } \fi \let\aftermacroxxx\relax \def\aftermacro{\aftermacroxxx} % alias because \c means cedilla in @tex or @math \let\texinfoc=\c % Used at the time of macro expansion. % Argument is macro body with arguments substituted \def\scanmacro#1{% \newlinechar`\^^M \def\xprocessmacroarg{\eatspaces}% % % Process the macro body under the current catcode regime. \scantokens{#1\texinfoc}\aftermacro% % % The \c is to remove the \newlinechar added by \scantokens, and % can be noticed by \parsearg. % The \aftermacro allows a \comment at the end of the macro definition % to duplicate itself past the final \newlinechar added by \scantokens: % this is used in the definition of \group to comment out a newline. We % don't do the same for \c to support Texinfo files with macros that ended % with a @c, which should no longer be necessary. % We avoid surrounding the call to \scantokens with \bgroup and \egroup % to allow macros to open or close groups themselves. } \def\scanexp#1{% \bgroup % Undo catcode changes of \startcontents and \printindex % When called from @insertcopying or (short)caption, we need active % backslash to get it printed correctly. % FIXME: This may not be needed. %\catcode`\@=0 \catcode`\\=\active \escapechar=`\@ \edef\temp{\noexpand\scanmacro{#1}}% \temp \egroup } \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? % List of all defined macros in the form % \definedummyword\macro1\definedummyword\macro2... % Currently is also contains all @aliases; the list can be split % if there is a need. \def\macrolist{} % Add the macro to \macrolist \def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} \def\addtomacrolistxxx#1{% \toks0 = \expandafter{\macrolist\definedummyword#1}% \xdef\macrolist{\the\toks0}% } % Utility routines. % This does \let #1 = #2, with \csnames; that is, % \let \csname#1\endcsname = \csname#2\endcsname % (except of course we have to play expansion games). % \def\cslet#1#2{% \expandafter\let \csname#1\expandafter\endcsname \csname#2\endcsname } % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). {\catcode`\@=11 \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} \def\unbrace#1{#1} \unbrace{\gdef\trim@@@ #1 } #2@{#1} } % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% \gdef\eatcrb#1Q#2Q{#1}% } % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active % (as in normal texinfo). It is necessary to change the definition of \ % to recognize macro arguments; this is the job of \mbodybackslash. % % Non-ASCII encodings make 8-bit characters active, so un-activate % them to avoid their expansion. Must do this non-globally, to % confine the change to the current group. % % It's necessary to have hard CRs when the macro is executed. This is % done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. % \def\scanctxt{% used as subroutine \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi } \def\scanargctxt{% used for copying and captions, not macros. \scanctxt \catcode`\@=\other \catcode`\\=\other \catcode`\^^M=\other } \def\macrobodyctxt{% used for @macro definitions \scanctxt \catcode`\ =\other \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other \catcode`\^^M=\other \usembodybackslash } % Used when scanning braced macro arguments. Note, however, that catcode % changes here are ineffectual if the macro invocation was nested inside % an argument to another Texinfo command. \def\macroargctxt{% \scanctxt \catcode`\ =\active \catcode`\^^M=\other \catcode`\\=\active } \def\macrolineargctxt{% used for whole-line arguments without braces \scanctxt \catcode`\{=\other \catcode`\}=\other } % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. % {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} \def\margbackslash#1{\char`\#1 } \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments \paramno=0\relax \else \expandafter\parsemargdef \argl;% \if\paramno>256\relax \ifx\eTeXversion\thisisundefined \errhelp = \EMsimple \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} \fi \fi \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% \else \expandafter\ifx\csname \the\macname\endcsname \relax \else \errmessage{Macro name \the\macname\space already defined}\fi \global\cslet{macsave.\the\macname}{\the\macname}% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi \begingroup \macrobodyctxt \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} \parseargdef\unmacro{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax \let\definedummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else \errmessage{Macro #1 not defined}% \fi } % Called by \do from \dounmacro on each macro. The idea is to omit any % macro definitions that have been changed to \relax. % \def\unmacrodo#1{% \ifx #1\relax % remove this \else \noexpand\definedummyword \noexpand#1% \fi } % \getargs -- Parse the arguments to a @macro line. Set \macname to % the name of the macro, and \argl to the braced argument list. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} % This made use of the feature that if the last token of a % is #, then the preceding argument is delimited by % an opening brace, and that opening brace is not consumed. % Parse the optional {params} list to @macro or @rmacro. % Set \paramno to the number of arguments, % and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a % three-param macro.) Define \macarg.BLAH for each BLAH in the params % list to some hook where the argument is to be expanded. If there are % less than 10 arguments that hook is to be replaced by ##N where N % is the position in that list, that is to say the macro arguments are to be % defined `a la TeX in the macro body. % % That gets used by \mbodybackslash (above). % % If there are 10 or more arguments, a different technique is used: see % \parsemmanyargdef. % \def\parsemargdef#1;{% \paramno=0\def\paramlist{}% \let\hash\relax % \hash is redefined to `#' later to get it into definitions \let\processmacroarg\relax \parsemargdefxxx#1,;,% \ifnum\paramno<10\relax\else \paramno0\relax \parsemmanyargdef@@#1,;,% 10 or more arguments \fi } \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\processmacroarg{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} % \parsemacbody, \parsermacbody % % Read recursive and nonrecursive macro bodies. (They're different since % rec and nonrec macros end differently.) % % We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro % body to be transformed. % Set \macrobody to the body of the macro, and call \defmacro. % {\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% \xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% {\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% \xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% % Make @ a letter, so that we can make private-to-Texinfo macro names. \edef\texiatcatcode{\the\catcode`\@} \catcode `@=11\relax %%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% % If there are 10 or more arguments, a different technique is used, where the % hook remains in the body, and when macro is to be expanded the body is % processed again to replace the arguments. % % In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the % argument N value and then \edef the body (nothing else will expand because of % the catcode regime under which the body was input). % % If you compile with TeX (not eTeX), and you have macros with 10 or more % arguments, no macro can have more than 256 arguments (else error). % % In case that there are 10 or more arguments we parse again the arguments % list to set new definitions for the \macarg.BLAH macros corresponding to % each BLAH argument. It was anyhow needed to parse already once this list % in order to count the arguments, and as macros with at most 9 arguments % are by far more frequent than macro with 10 or more arguments, defining % twice the \macarg.BLAH macros does not cost too much processing power. \def\parsemmanyargdef@@#1,{% \if#1;\let\next=\relax \else \let\next=\parsemmanyargdef@@ \edef\tempb{\eatspaces{#1}}% \expandafter\def\expandafter\tempa \expandafter{\csname macarg.\tempb\endcsname}% % Note that we need some extra \noexpand\noexpand, this is because we % don't want \the to be expanded in the \parsermacbody as it uses an % \xdef . \expandafter\edef\tempa {\noexpand\noexpand\noexpand\the\toks\the\paramno}% \advance\paramno by 1\relax \fi\next} \let\endargs@\relax \let\nil@\relax \def\nilm@{\nil@}% \long\def\nillm@{\nil@}% % This macro is expanded during the Texinfo macro expansion, not during its % definition. It gets all the arguments' values and assigns them to macros % macarg.ARGNAME % % #1 is the macro name % #2 is the list of argument names % #3 is the list of argument values \def\getargvals@#1#2#3{% \def\macargdeflist@{}% \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. \def\paramlist{#2,\nil@}% \def\macroname{#1}% \begingroup \macroargctxt \def\argvaluelist{#3,\nil@}% \def\@tempa{#3}% \ifx\@tempa\empty \setemptyargvalues@ \else \getargvals@@ \fi } \def\getargvals@@{% \ifx\paramlist\nilm@ % Some sanity check needed here that \argvaluelist is also empty. \ifx\argvaluelist\nillm@ \else \errhelp = \EMsimple \errmessage{Too many arguments in macro `\macroname'!}% \fi \let\next\macargexpandinbody@ \else \ifx\argvaluelist\nillm@ % No more arguments values passed to macro. Set remaining named-arg % macros to empty. \let\next\setemptyargvalues@ \else % pop current arg name into \@tempb \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% \expandafter\@tempa\expandafter{\paramlist}% % pop current argument value into \@tempc \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% \expandafter\@tempa\expandafter{\argvaluelist}% % Here \@tempb is the current arg name and \@tempc is the current arg value. % First place the new argument macro definition into \@tempd \expandafter\macname\expandafter{\@tempc}% \expandafter\let\csname macarg.\@tempb\endcsname\relax \expandafter\def\expandafter\@tempe\expandafter{% \csname macarg.\@tempb\endcsname}% \edef\@tempd{\long\def\@tempe{\the\macname}}% \push@\@tempd\macargdeflist@ \let\next\getargvals@@ \fi \fi \next } \def\push@#1#2{% \expandafter\expandafter\expandafter\def \expandafter\expandafter\expandafter#2% \expandafter\expandafter\expandafter{% \expandafter#1#2}% } % Replace arguments by their values in the macro body, and place the result % in macro \@tempa. % \def\macvalstoargs@{% % To do this we use the property that token registers that are \the'ed % within an \edef expand only once. So we are going to place all argument % values into respective token registers. % % First we save the token context, and initialize argument numbering. \begingroup \paramno0\relax % Then, for each argument number #N, we place the corresponding argument % value into a new token list register \toks#N \expandafter\putargsintokens@\saveparamlist@,;,% % Then, we expand the body so that argument are replaced by their % values. The trick for values not to be expanded themselves is that they % are within tokens and that tokens expand only once in an \edef . \edef\@tempc{\csname mac.\macroname .body\endcsname}% % Now we restore the token stack pointer to free the token list registers % which we have used, but we make sure that expanded body is saved after % group. \expandafter \endgroup \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% } % Define the named-macro outside of this group and then close this group. % \def\macargexpandinbody@{% \expandafter \endgroup \macargdeflist@ % First the replace in body the macro arguments by their values, the result % is in \@tempa . \macvalstoargs@ % Then we point at the \norecurse or \gobble (for recursive) macro value % with \@tempb . \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname % Depending on whether it is recursive or not, we need some tailing % \egroup . \ifx\@tempb\gobble \let\@tempc\relax \else \let\@tempc\egroup \fi % And now we do the real job: \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% \@tempd } \def\putargsintokens@#1,{% \if#1;\let\next\relax \else \let\next\putargsintokens@ % First we allocate the new token list register, and give it a temporary % alias \@tempb . \toksdef\@tempb\the\paramno % Then we place the argument value into that token list register. \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname \expandafter\@tempb\expandafter{\@tempa}% \advance\paramno by 1\relax \fi \next } % Trailing missing arguments are set to empty. % \def\setemptyargvalues@{% \ifx\paramlist\nilm@ \let\next\macargexpandinbody@ \else \expandafter\setemptyargvaluesparser@\paramlist\endargs@ \let\next\setemptyargvalues@ \fi \next } \def\setemptyargvaluesparser@#1,#2\endargs@{% \expandafter\def\expandafter\@tempa\expandafter{% \expandafter\def\csname macarg.#1\endcsname{}}% \push@\@tempa\macargdeflist@ \def\paramlist{#2}% } % #1 is the element target macro % #2 is the list macro % #3,#4\endargs@ is the list value \def\pop@#1#2#3,#4\endargs@{% \def#1{#3}% \def#2{#4}% } \long\def\longpop@#1#2#3,#4\endargs@{% \long\def#1{#3}% \long\def#2{#4}% } %%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% % Remove following spaces at the expansion stage. % This works because spaces are discarded before each argument when TeX is % getting the arguments for a macro. % This must not be immediately followed by a }. \long\def\gobblespaces#1{#1} % This defines a Texinfo @macro or @rmacro, called by \parsemacbody. % \macrobody has the body of the macro in it, with placeholders for % its parameters, looking like "\processmacroarg{\hash 1}". % \paramno is the number of parameters % \paramlist is a TeX parameter text, e.g. "#1,#2,#3," % There are eight cases: recursive and nonrecursive macros of zero, one, % up to nine, and many arguments. % \xdef is used so that macro definitions will survive the file % they're defined in: @include reads the file inside a group. % \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifnum\paramno=1 \def\processmacroarg{\gobblespaces}% % This removes the pair of braces around the argument. We don't % use \eatspaces, because this can cause ends of lines to be lost % when the argument to \eatspaces is read, leading to line-based % commands like "@itemize" not being read correctly. \else \def\processmacroarg{\xprocessmacroarg}% \let\xprocessmacroarg\relax \fi \ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup \noexpand\braceorline \expandafter\noexpand\csname\the\macname @@@\endcsname}% \expandafter\xdef\csname\the\macname @@@\endcsname##1{% \expandafter\noexpand\csname\the\macname @@@@\endcsname{% \noexpand\gobblespaces##1\empty}% % The \empty is for \gobblespaces in case #1 is empty }% \expandafter\xdef\csname\the\macname @@@@\endcsname##1{% \egroup\noexpand\scanmacro{\macrobody}}% \else \ifnum\paramno<10\relax % at most 9 % See non-recursive section below for comments \expandafter\xdef\csname\the\macname\endcsname{% \bgroup \noexpand\expandafter \noexpand\macroargctxt \noexpand\expandafter \expandafter\noexpand\csname\the\macname @@\endcsname}% \expandafter\xdef\csname\the\macname @@\endcsname##1{% \noexpand\passargtomacro \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% \expandafter\xdef\csname\the\macname @@@\endcsname##1{% \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname @@@@\endcsname\paramlist{% \egroup\noexpand\scanmacro{\macrobody}}% \else % 10 or more \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi \else %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%% \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup \noexpand\braceorline \expandafter\noexpand\csname\the\macname @@@\endcsname}% \expandafter\xdef\csname\the\macname @@@\endcsname##1{% \expandafter\noexpand\csname\the\macname @@@@\endcsname{% \noexpand\gobblespaces##1\empty}% % The \empty is for \gobblespaces in case #1 is empty }% \expandafter\xdef\csname\the\macname @@@@\endcsname##1{% \egroup \noexpand\scanmacro{\macrobody}% }% \else % at most 9 \ifnum\paramno<10\relax % @MACNAME sets the context for reading the macro argument % @MACNAME@@ gets the argument, processes backslashes and appends a % comma. % @MACNAME@@@ removes braces surrounding the argument list. % @MACNAME@@@@ scans the macro body with arguments substituted. \expandafter\xdef\csname\the\macname\endcsname{% \bgroup \noexpand\expandafter % This \expandafter skip any spaces after the \noexpand\macroargctxt % macro before we change the catcode of space. \noexpand\expandafter \expandafter\noexpand\csname\the\macname @@\endcsname}% \expandafter\xdef\csname\the\macname @@\endcsname##1{% \noexpand\passargtomacro \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% \expandafter\xdef\csname\the\macname @@@\endcsname##1{% \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname @@@@\endcsname\paramlist{% \egroup\noexpand\scanmacro{\macrobody}}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse \fi \fi \fi} \catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % {\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape @catcode`@_=11 % private names @catcode`@!=11 % used as argument separator % \passargtomacro#1#2 - % Call #1 with a list of tokens #2, with any doubled backslashes in #2 % compressed to one. % % This implementation works by expansion, and not execution (so we cannot use % \def or similar). This reduces the risk of this failing in contexts where % complete expansion is done with no execution (for example, in writing out to % an auxiliary file for an index entry). % % State is kept in the input stream: the argument passed to % @look_ahead, @gobble_and_check_finish and @add_segment is % % THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input) % % where: % THE_MACRO - name of the macro we want to call % ARG_RESULT - argument list we build to pass to that macro % PENDING_BS - either a backslash or nothing % NEXT_TOKEN - used to look ahead in the input stream to see what's coming next @gdef@passargtomacro#1#2{% @add_segment #1!{}@relax#2\@_finish\% } @gdef@_finish{@_finishx} @global@let@_finishx@relax % #1 - THE_MACRO ARG_RESULT % #2 - PENDING_BS % #3 - NEXT_TOKEN % #4 used to look ahead % % If the next token is not a backslash, process the rest of the argument; % otherwise, remove the next token. @gdef@look_ahead#1!#2#3#4{% @ifx#4\% @expandafter@gobble_and_check_finish @else @expandafter@add_segment @fi#1!{#2}#4#4% } % #1 - THE_MACRO ARG_RESULT % #2 - PENDING_BS % #3 - NEXT_TOKEN % #4 should be a backslash, which is gobbled. % #5 looks ahead % % Double backslash found. Add a single backslash, and look ahead. @gdef@gobble_and_check_finish#1!#2#3#4#5{% @add_segment#1\!{}#5#5% } @gdef@is_fi{@fi} % #1 - THE_MACRO ARG_RESULT % #2 - PENDING_BS % #3 - NEXT_TOKEN % #4 is input stream until next backslash % % Input stream is either at the start of the argument, or just after a % backslash sequence, either a lone backslash, or a doubled backslash. % NEXT_TOKEN contains the first token in the input stream: if it is \finish, % finish; otherwise, append to ARG_RESULT the segment of the argument up until % the next backslash. PENDING_BACKSLASH contains a backslash to represent % a backslash just before the start of the input stream that has not been % added to ARG_RESULT. @gdef@add_segment#1!#2#3#4\{% @ifx#3@_finish @call_the_macro#1!% @else % append the pending backslash to the result, followed by the next segment @expandafter@is_fi@look_ahead#1#2#4!{\}@fi % this @fi is discarded by @look_ahead. % we can't get rid of it with \expandafter because we don't know how % long #4 is. } % #1 - THE_MACRO % #2 - ARG_RESULT % #3 discards the res of the conditional in @add_segment, and @is_fi ends the % conditional. @gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \braceorline MAC is used for a one-argument macro MAC. It checks % whether the next non-whitespace character is a {. It sets the context % for reading the argument (slightly different in the two cases). Then, % to read the argument, in the whole-line case, it then calls the regular % \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC. % \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup \macroargctxt \expandafter\passargtomacro \else \macrolineargctxt\expandafter\parsearg \fi \macnamexxx} % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Make them active and then expand them all to nothing. % \def\alias{\parseargusing\obeyspaces\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{% {% \expandafter\let\obeyedspace=\empty \addtomacrolist{#1}% \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% }% \next } \message{cross references,} \newwrite\auxfile \newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} \def\inforefzzz #1,#2,#3,#4**{% \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in % cross-references. The @node line might or might not have commas, and % might or might not have spaces before the first comma, like: % @node foo , bar , ... % We don't want such trailing spaces in the node name. % \parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} % % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the % type (Ynumbered, Yappendix, Ynothing). % \def\donoderef#1{% \ifx\lastnode\empty\else \setref{\lastnode}{#1}% \global\let\lastnode=\empty \fi } % @anchor{NAME} -- define xref target at arbitrary point. % \newcount\savesfregister % \def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} \def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} \def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an % anchor), which consists of three parts: % 1) NAME-title - the current sectioning name taken from \lastsection, % or the anchor name. % 2) NAME-snt - section number and type, passed as the SNT arg, or % empty for anchors. % 3) NAME-pg - the page number. % % This is called from \donoderef, \anchor, and \dofloat. In the case of % floats, there is an additional part, which is not written here: % 4) NAME-lof - the text as it should appear in a @listoffloats. % \def\setref#1#2{% \pdfmkdest{#1}% \iflinks {% \requireauxfile \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef ##1}{##2}}% these are parameters of \writexrdef }% \toks0 = \expandafter{\lastsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout }% \fi } % @xrefautosectiontitle on|off says whether @section(ing) names are used % automatically in xrefs, if the third arg is not explicitly specified. % This was provided as a "secret" @set xref-automatic-section-title % variable, now it's official. % \parseargdef\xrefautomaticsectiontitle{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', must be on|off}% \fi\fi } % % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed % manual. All but the node name can be omitted. % \def\pxref{\putwordsee{} \xrefXX} \def\xref{\putwordSee{} \xrefXX} \def\ref{\xrefXX} \def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX} \def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]} % \newbox\toprefbox \newbox\printedrefnamebox \newbox\infofilenamebox \newbox\printedmanualbox % \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces % % Get args without leading/trailing spaces. \def\printedrefname{\ignorespaces #3}% \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% % \def\infofilename{\ignorespaces #4}% \setbox\infofilenamebox = \hbox{\infofilename\unskip}% % \def\printedmanual{\ignorespaces #5}% \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% % % If the printed reference name (arg #3) was not explicitly given in % the @xref, figure out what we want to use. \ifdim \wd\printedrefnamebox = 0pt % No printed node name was explicitly given. \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax % Not auto section-title: use node name inside the square brackets. \def\printedrefname{\ignorespaces #1}% \else % Auto section-title: use chapter/section title inside % the square brackets if we have it. \ifdim \wd\printedmanualbox > 0pt % It is in another manual, so we don't have it; use node name. \def\printedrefname{\ignorespaces #1}% \else \ifhavexrefs % We (should) know the real title if we have the xref values. \def\printedrefname{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% \fi% \fi \fi \fi % % Make link in pdf output. \ifpdf {\indexnofonts \turnoffactive \makevalueexpandable % This expands tokens, so do it after making catcode changes, so _ % etc. don't get their TeX definitions. This ignores all spaces in % #4, including (wrongly) those in the middle of the filename. \getfilename{#4}% % % This (wrongly) does not take account of leading or trailing % spaces in #1, which should be ignored. \edef\pdfxrefdest{#1}% \ifx\pdfxrefdest\empty \def\pdfxrefdest{Top}% no empty targets \else \txiescapepdf\pdfxrefdest % escape PDF special chars \fi % \leavevmode \startlink attr{/Border [0 0 0]}% \ifnum\filenamelength>0 goto file{\the\filename.pdf} name{\pdfxrefdest}% \else goto name{\pdfmkpgn{\pdfxrefdest}}% \fi }% \setcolor{\linkcolor}% \fi % % Float references are printed completely differently: "Figure 1.2" % instead of "[somenode], p.3". We distinguish them by the % LABEL-title being set to a magic string. {% % Have to otherify everything special to allow the \csname to % include an _ in the xref name, etc. \indexnofonts \turnoffactive \expandafter\global\expandafter\let\expandafter\Xthisreftitle \csname XR#1-title\endcsname }% \iffloat\Xthisreftitle % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd\printedrefnamebox = 0pt \refx{#1-snt}{}% \else \printedrefname \fi % % If the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". \ifdim \wd\printedmanualbox > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. % % If we use \unhbox 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 \wd\printedmanualbox > 0pt % Cross-manual reference with a printed manual name. % \crossmanualxref{\cite{\printedmanual\unskip}}% % \else\ifdim \wd\infofilenamebox > 0pt % Cross-manual reference with only an info filename (arg 4), no % printed manual name (arg 5). This is essentially the same as % the case above; we output the filename, since we have nothing else. % \crossmanualxref{\code{\infofilename\unskip}}% % \else % Reference within this manual. % % _ (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 % Only output a following space if the -snt ref is nonempty; for % @unnumbered and @anchor, it won't be. \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % % But we always want a comma and a space: ,\space % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \ifx,\tokenafterxref \else\ifx.\tokenafterxref \else\ifx;\tokenafterxref \else\ifx)\tokenafterxref \else,% add a , if xref not followed by punctuation \fi\fi\fi\fi \fi\fi \fi \endlink \endgroup} % Output a cross-manual xref to #1. Used just above (twice). % % Only include the text "Section ``foo'' in" if the foo is neither % missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply % "see The Foo Manual", the idea being to refer to the whole manual. % % But, this being TeX, we can't easily compare our node name against the % string "Top" while ignoring the possible spaces before and after in % the input. By adding the arbitrary 7sp below, we make it much less % likely that a real node name would have the same width as "Top" (e.g., % in a monospaced font). Hopefully it will never happen in practice. % % For the same basic reason, we retypeset the "Top" at every % reference, since the current font is indeterminate. % \def\crossmanualxref#1{% \setbox\toprefbox = \hbox{Top\kern7sp}% \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% \ifdim \wd2 > 7sp % nonempty? \ifdim \wd2 = \wd\toprefbox \else % same as Top? \putwordSection{} ``\printedrefname'' \putwordin{}\space \fi \fi #1% } % This macro is called from \xrefX for the `[nodename]' part of xref % output. It's a separate macro only so it can be changed more easily, % since square brackets don't work well in some documents. Particularly % one that Bob is working on :). % \def\xrefprintnodename#1{[#1]} % Things referred to by \setref. % \def\Ynothing{} \def\Yomitfromtoc{} \def\Ynumbered{% \ifnum\secno=0 \putwordChapter@tie \the\chapno \else \ifnum\subsecno=0 \putwordSection@tie \the\chapno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie \the\chapno.\the\secno.\the\subsecno \else \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } \def\Yappendix{% \ifnum\secno=0 \putwordAppendix@tie @char\the\appendixno{}% \else \ifnum\subsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno \else \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% \requireauxfile {% \indexnofonts \otherbackslash \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname }% \ifx\thisrefX\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs {\toks0 = {#1}% avoid expansion of possibly-complex value \message{\linenumber Undefined cross reference `\the\toks0'.}}% \else \ifwarnedxrefs\else \global\warnedxrefstrue \message{Cross reference values unknown; you must run TeX again.}% \fi \fi \fi \else % It's defined, so just use it. \thisrefX \fi #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. Usually it's % just a \def (we prepend XR to the control sequence name to avoid % collisions). But if this is a float type, we have more work to do. % \def\xrdef#1#2{% {% The node name might contain 8-bit characters, which in our current % implementation are changed to commands like @'e. Don't let these % mess up the control sequence name. \indexnofonts \turnoffactive \xdef\safexrefname{#1}% }% % \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref % % Was that xref control sequence that we just defined for a float? \expandafter\iffloat\csname XR\safexrefname\endcsname % it was a float, and we have the (safe) float type in \iffloattype. \expandafter\let\expandafter\floatlist \csname floatlist\iffloattype\endcsname % % Is this the first time we've seen this float type? \expandafter\ifx\floatlist\relax \toks0 = {\do}% yes, so just \do \else % had it before, so preserve previous elements in list. \toks0 = \expandafter{\floatlist\do}% \fi % % Remember this xref in the control sequence \floatlistFLOATTYPE, % for later use in \listoffloats. \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 {\safexrefname}}% \fi } % If working on a large document in chapters, it is convenient to % be able to disable indexing, cross-referencing, and contents, for test runs. % This is done with @novalidate at the beginning of the file. % \newif\iflinks \linkstrue % by default we want the aux files. \let\novalidate = \linksfalse % Used when writing to the aux file, or when using data from it. \def\requireauxfile{% \iflinks \tryauxfile % Open the new aux file. TeX will close it automatically at exit. \immediate\openout\auxfile=\jobname.aux \fi \global\let\requireauxfile=\relax % Only do this once. } % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% \openin 1 \jobname.aux \ifeof 1 \else \readdatafile{aux}% \global\havexrefstrue \fi \closein 1 } \def\setupdatafile{% \catcode`\^^@=\other \catcode`\^^A=\other \catcode`\^^B=\other \catcode`\^^C=\other \catcode`\^^D=\other \catcode`\^^E=\other \catcode`\^^F=\other \catcode`\^^G=\other \catcode`\^^H=\other \catcode`\^^K=\other \catcode`\^^L=\other \catcode`\^^N=\other \catcode`\^^P=\other \catcode`\^^Q=\other \catcode`\^^R=\other \catcode`\^^S=\other \catcode`\^^T=\other \catcode`\^^U=\other \catcode`\^^V=\other \catcode`\^^W=\other \catcode`\^^X=\other \catcode`\^^Z=\other \catcode`\^^[=\other \catcode`\^^\=\other \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, % that is not enough: for node names that actually contain a ^ % character, we would end up writing a line like this: 'xrdef {'hat % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first % argument, and \hat is not an expandable control sequence. It could % all be worked out, but why? Either we support ^^ or we don't. % % The other change necessary for this was to define \auxhat: % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter % and then to call \auxhat in \setq. % \catcode`\^=\other % % Special characters. Should be turned off anyway, but... \catcode`\~=\other \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % % This is to support \ in node names and titles, since the \ % characters end up in a \csname. It's easier than % leaving it active and making its active definition an actual \ % character. What I don't understand is why it works in the *value* % of the xrdef. Seems like it should be a catcode12 \, and that % should not typeset properly. But it works, so I'm moving on for % now. --karl, 15jan04. \catcode`\\=\other % % Make the characters 128-255 be printing characters. {\setnonasciicharscatcodenonglobal\other}% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 \catcode`\}=2 \catcode`\@=0 } \def\readdatafile#1{% \begingroup \setupdatafile \input\jobname.#1 \endgroup} \message{insertions,} % including footnotes. \newcount \footnoteno % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is % removed. (Generally, numeric constants should always be followed by a % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for Info output only. \let\footnotestyle=\comment {\catcode `\@=11 % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % % In case the footnote comes at the end of a sentence, preserve the % extra spacing after we do the footnote number. \let\@sf\empty \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf \dofootnote }% % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % % Oh yes, they do; otherwise, @ifset (and anything else that uses % \parseargline) fails inside footnotes because the tokens are fixed when % the footnote is read. --karl, 16nov96. % \gdef\dofootnote{% \insert\footins\bgroup % % Nested footnotes are not supported in TeX, that would take a lot % more work. (\startsavinginserts does not suffice.) \let\footnote=\errfootnotenest % % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \hsize=\pagewidth \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \parindent\defaultparindent % \smallfonts \rm % % Because we use hanging indentation in footnotes, a @noindent appears % to exdent this text, so make it be a no-op. makeinfo does not use % hanging indentation so @noindent can still be needed within footnote % text after an @example or the like (not that this is good style). \let\noindent = \relax % % Hang the footnote text off the number. Use \everypar in case the % footnote extends for more than one paragraph. \everypar = {\hang}% \textindent{\thisfootno}% % % Don't crash into the line above the footnote text. Since this % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut % % Invoke rest of plain TeX footnote routine. \futurelet\next\fo@t } }%end \catcode `\@=11 \def\errfootnotenest{% \errhelp=\EMsimple \errmessage{Nested footnotes not supported in texinfo.tex, even though they work in makeinfo; sorry} } \def\errfootnoteheading{% \errhelp=\EMsimple \errmessage{Footnotes in chapters, sections, etc., are not supported} } % In case a @footnote appears in a vbox, save the footnote text and create % the real \insert just after the vbox finished. Otherwise, the insertion % would be lost. % Similarly, if a @footnote appears inside an alignment, save the footnote % text to a box and make the \insert when a row of the table is finished. % And the same can be done for other insert classes. --kasal, 16nov03. % % Replace the \insert primitive by a cheating macro. % Deeper inside, just make sure that the saved insertions are not spilled % out prematurely. % \def\startsavinginserts{% \ifx \insert\ptexinsert \let\insert\saveinsert \else \let\checkinserts\relax \fi } % This \insert replacement works for both \insert\footins{foo} and % \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. % \def\saveinsert#1{% \edef\next{\noexpand\savetobox \makeSAVEname#1}% \afterassignment\next % swallow the left brace \let\temp = } \def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} \def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} \def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} \def\placesaveins#1{% \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname {\box#1}% } % eat @SAVE -- beware, all of them have catcode \other: { \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) \gdef\gobblesave @SAVE{} } % initialization: \def\newsaveins #1{% \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% \next } \def\newsaveinsX #1{% \csname newbox\endcsname #1% \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts \checksaveins #1}% } % initialize: \let\checkinserts\empty \newsaveins\footins \newsaveins\margin % @image. We use the macros from epsf.tex to support this. % If epsf.tex is not installed and @image is used, we complain. % % Check for and read epsf.tex up front. If we read it only at @image % time, we might be inside a group, and then its definitions would get % undone and the next image would fail. \openin 1 = epsf.tex \ifeof 1 \else % Do not bother showing banner with epsf.tex v2.7k (available in % doc/epsf.tex and on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex \fi \closein 1 % % We will only complain once about lack of epsf.tex. \newif\ifwarnednoepsf \newhelp\noepsfhelp{epsf.tex must be installed for images to work. It is also included in the Texinfo distribution, or you can get it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% \ifx\epsfbox\thisisundefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% \global\warnednoepsftrue \fi \else \imagexxx #1,,,,,\finish \fi } % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. % #2 is (optional) width, #3 is (optional) height. % #4 is (ignored optional) html alt text. % #5 is (ignored optional) extension. % #6 is just the usual extra ignored arg for parsing stuff. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro % If the image is by itself, center it. \ifvmode \imagevmodetrue \else \ifx\centersub\centerV % for @center @image, we need a vbox so we can have our vertical space \imagevmodetrue \vbox\bgroup % vbox has better behavior than vtop herev \fi\fi % \ifimagevmode \nobreak\medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. \nobreak\vskip\parskip \nobreak \fi % % Leave vertical mode so that indentation from an enclosing % environment such as @quotation is respected. % However, if we're at the top level, we don't want the % normal paragraph indentation. % On the other hand, if we are in the case of @center @image, we don't % want to start a paragraph, which will create a hsize-width box and % eradicate the centering. \ifx\centersub\centerV\else \noindent \fi % % Output the image. \ifpdf \dopdfimage{#1}{#2}{#3}% \else % \epsfbox itself resets \epsf?size at each figure. \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \epsfbox{#1.eps}% \fi % \ifimagevmode \medskip % space after a standalone image \fi \ifx\centersub\centerV \egroup \fi \endgroup} % @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, % etc. We don't actually implement floating yet, we always include the % float "here". But it seemed the best name for the future. % \envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} % There may be a space before second and/or third parameter; delete it. \def\eatcommaspace#1, {#1,} % #1 is the optional FLOATTYPE, the text label for this float, typically % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, % this float will not be numbered and cannot be referred to. % % #2 is the optional xref label. Also must be present for the float to % be referable. % % #3 is the optional positioning argument; for now, it is ignored. It % will somehow specify the positions allowed to float to (here, top, bottom). % % We keep a separate counter for each FLOATTYPE, which we reset at each % chapter-level command. \let\resetallfloatnos=\empty % \def\dofloat#1,#2,#3,#4\finish{% \let\thiscaption=\empty \let\thisshortcaption=\empty % % don't lose footnotes inside @float. % % BEWARE: when the floats start float, we have to issue warning whenever an % insert appears inside a float which could possibly float. --kasal, 26may04 % \startsavinginserts % % We can't be used inside a paragraph. \par % \vtop\bgroup \def\floattype{#1}% \def\floatlabel{#2}% \def\floatloc{#3}% we do nothing with this yet. % \ifx\floattype\empty \let\safefloattype=\empty \else {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% \fi % % If label is given but no type, we handle that as the empty type. \ifx\floatlabel\empty \else % We want each FLOATTYPE to be numbered separately (Figure 1, % Table 1, Figure 2, ...). (And if no label, no number.) % \expandafter\getfloatno\csname\safefloattype floatno\endcsname \global\advance\floatno by 1 % {% % This magic value for \lastsection is output by \setref as the % XREFLABEL-title value. \xrefX uses it to distinguish float % labels (which have a completely different output format) from % node and anchor labels. And \xrdef uses it to construct the % lists of floats. % \edef\lastsection{\floatmagic=\safefloattype}% \setref{\floatlabel}{Yfloat}% }% \fi % % start with \parskip glue, I guess. \vskip\parskip % % Don't suppress indentation if a float happens to start a section. \restorefirstparagraphindent } % we have these possibilities: % @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap % @float Foo,lbl & no caption: Foo 1.1 % @float Foo & @caption{Cap}: Foo: Cap % @float Foo & no caption: Foo % @float ,lbl & Caption{Cap}: 1.1: Cap % @float ,lbl & no caption: 1.1 % @float & @caption{Cap}: Cap % @float & no caption: % \def\Efloat{% \let\floatident = \empty % % In all cases, if we have a float type, it comes first. \ifx\floattype\empty \else \def\floatident{\floattype}\fi % % If we have an xref label, the number comes next. \ifx\floatlabel\empty \else \ifx\floattype\empty \else % if also had float type, need tie first. \appendtomacro\floatident{\tie}% \fi % the number. \appendtomacro\floatident{\chaplevelprefix\the\floatno}% \fi % % Start the printed caption with what we've constructed in % \floatident, but keep it separate; we need \floatident again. \let\captionline = \floatident % \ifx\thiscaption\empty \else \ifx\floatident\empty \else \appendtomacro\captionline{: }% had ident, so need a colon between \fi % % caption text. \appendtomacro\captionline{\scanexp\thiscaption}% \fi % % If we have anything to print, print it, with space before. % Eventually this needs to become an \insert. \ifx\captionline\empty \else \vskip.5\parskip \captionline % % Space below caption. \vskip\parskip \fi % % If have an xref label, write the list of floats info. Do this % after the caption, to avoid chance of it being a breakpoint. \ifx\floatlabel\empty \else % Write the text that goes in the lof to the aux file as % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% \requireauxfile \atdummies % % since we read the caption text in the macro world, where ^^M % is turned into a normal character, we have to scan it back, so % we don't write the literal three characters "^^M" into the aux file. \scanexp{% \xdef\noexpand\gtemp{% \ifx\thisshortcaption\empty \thiscaption \else \thisshortcaption \fi }% }% \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident \ifx\gtemp\empty \else : \gtemp \fi}}% }% \fi \egroup % end of \vtop % % place the captured inserts % % BEWARE: when the floats start floating, we have to issue warning % whenever an insert appears inside a float which could possibly % float. --kasal, 26may04 % \checkinserts } % Append the tokens #2 to the definition of macro #1, not expanding either. % \def\appendtomacro#1#2{% \expandafter\def\expandafter#1\expandafter{#1#2}% } % @caption, @shortcaption % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} \def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. \def\getfloatno#1{% \ifx#1\relax % Haven't seen this figure type before. \csname newcount\endcsname #1% % % Remember to reset this floatno at the next chap. \expandafter\gdef\expandafter\resetallfloatnos \expandafter{\resetallfloatnos #1=0 }% \fi \let\floatno#1% } % \setref calls this to get the XREFLABEL-snt value. We want an @xref % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we % first read the @float command. % \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% % Magic string used for the XREFLABEL-title value, so \xrefX can % distinguish floats from other xref types. \def\floatmagic{!!float!!} % #1 is the control sequence we are passed; we expand into a conditional % which is true if #1 represents a float ref. That is, the magic % \lastsection value which we \setref above. % \def\iffloat#1{\expandafter\doiffloat#1==\finish} % % #1 is (maybe) the \floatmagic string. If so, #2 will be the % (safe) float type for this float. We set \iffloattype to #2. % \def\doiffloat#1=#2=#3\finish{% \def\temp{#1}% \def\iffloattype{#2}% \ifx\temp\floatmagic } % @listoffloats FLOATTYPE - print a list of floats like a table of contents. % \parseargdef\listoffloats{% \def\floattype{#1}% floattype {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% % % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax \ifhavexrefs % if the user said @listoffloats foo but never @float foo. \message{\linenumber No `\safefloattype' floats to list.}% \fi \else \begingroup \leftskip=\tocindent % indent these entries like a toc \let\do=\listoffloatsdo \csname floatlist\safefloattype\endcsname \endgroup \fi } % This is called on each entry in a list of floats. We're passed the % xref label, in the form LABEL-title, which is how we save it in the % aux file. We strip off the -title and look up \XRLABEL-lof, which % has the text we're supposed to typeset here. % % Figures without xref labels will not be included in the list (since % they won't appear in the aux file). % \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} \def\listoffloatsdoentry#1-title\finish{{% % Can't fully expand XR#1-lof because it can contain anything. Just % pass the control sequence. On the other hand, XR#1-pg is just the % page number, and we want to fully expand that so we can get a link % in pdf output. \toksA = \expandafter{\csname XR#1-lof\endcsname}% % % use the same \entry macro we use to generate the TOC and index. \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% \writeentry }} \message{localization,} % For single-language documents, @documentlanguage is usually given very % early, just after @documentencoding. Single argument is the language % (de) or locale (de_DE) abbreviation. % { \catcode`\_ = \active \globaldefs=1 \parseargdef\documentlanguage{% \tex % read txi-??.tex file in plain TeX. % Read the file by the name they passed if it exists. \let_ = \normalunderscore % normal _ character for filename test \openin 1 txi-#1.tex \ifeof 1 \documentlanguagetrywithoutunderscore #1_\finish \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 \endgroup % end raw TeX } % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. % \gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 } }% end of special _ catcode % \newhelp\nolanghelp{The given language definition file cannot be found or is empty. Maybe you need to install it? Putting it in the current directory should work if nowhere else does.} % This macro is called from txi-??.tex files; the first argument is the % \language name to set (without the "\lang@" prefix), the second and % third args are \{left,right}hyphenmin. % % The language names to pass are determined when the format is built. % See the etex.log file created at that time, e.g., % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. % % With TeX Live 2008, etex now includes hyphenation patterns for all % available languages. This means we can support hyphenation in % Texinfo, at least to some extent. (This still doesn't solve the % accented characters problem.) % \catcode`@=11 \def\txisetlanguage#1#2#3{% % do not set the language if the name is undefined in the current TeX. \expandafter\ifx\csname lang@#1\endcsname \relax \message{no patterns for #1}% \else \global\language = \csname lang@#1\endcsname \fi % but there is no harm in adjusting the hyphenmin values regardless. \global\lefthyphenmin = #2\relax \global\righthyphenmin = #3\relax } % Helpers for encodings. % Set the catcode of characters 128 through 255 to the specified number. % \def\setnonasciicharscatcode#1{% \count255=128 \loop\ifnum\count255<256 \global\catcode\count255=#1\relax \advance\count255 by 1 \repeat } \def\setnonasciicharscatcodenonglobal#1{% \count255=128 \loop\ifnum\count255<256 \catcode\count255=#1\relax \advance\count255 by 1 \repeat } % @documentencoding sets the definition of non-ASCII characters % according to the specified encoding. % \def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz} \def\documentencodingzzz#1{% % Encoding being declared for the document. \def\declaredencoding{\csname #1.enc\endcsname}% % % Supported encodings: names converted to tokens in order to be able % to compare them with \ifx. \def\ascii{\csname US-ASCII.enc\endcsname}% \def\latnine{\csname ISO-8859-15.enc\endcsname}% \def\latone{\csname ISO-8859-1.enc\endcsname}% \def\lattwo{\csname ISO-8859-2.enc\endcsname}% \def\utfeight{\csname UTF-8.enc\endcsname}% % \ifx \declaredencoding \ascii \asciichardefs % \else \ifx \declaredencoding \lattwo \setnonasciicharscatcode\active \lattwochardefs % \else \ifx \declaredencoding \latone \setnonasciicharscatcode\active \latonechardefs % \else \ifx \declaredencoding \latnine \setnonasciicharscatcode\active \latninechardefs % \else \ifx \declaredencoding \utfeight \setnonasciicharscatcode\active % since we already invoked \utfeightchardefs at the top level % (below), do not re-invoke it, then our check for duplicated % definitions triggers. Making non-ascii chars active is enough. % \else \message{Ignoring unknown document encoding: #1.}% % \fi % utfeight \fi % latnine \fi % latone \fi % lattwo \fi % ascii } % emacs-page % A message to be logged when using a character that isn't available % the default font encoding (OT1). % \def\missingcharmsg#1{\message{Character missing, sorry: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} % First, make active non-ASCII characters in order for them to be % correctly categorized when TeX reads the replacement text of % macros containing the character definitions. \setnonasciicharscatcode\active % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% \gdef^^a0{\tie} \gdef^^a1{\exclamdown} \gdef^^a2{{\tcfont \char162}} % cent \gdef^^a3{\pounds} \gdef^^a4{{\tcfont \char164}} % currency \gdef^^a5{{\tcfont \char165}} % yen \gdef^^a6{{\tcfont \char166}} % broken bar \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\copyright} \gdef^^aa{\ordf} \gdef^^ab{\guillemetleft} \gdef^^ac{\ensuremath\lnot} \gdef^^ad{\-} \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} % \gdef^^b0{\textdegree} \gdef^^b1{$\pm$} \gdef^^b2{$^2$} \gdef^^b3{$^3$} \gdef^^b4{\'{}} \gdef^^b5{$\mu$} \gdef^^b6{\P} \gdef^^b7{\ensuremath\cdot} \gdef^^b8{\cedilla\ } \gdef^^b9{$^1$} \gdef^^ba{\ordm} \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} \gdef^^be{$3\over4$} \gdef^^bf{\questiondown} % \gdef^^c0{\`A} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\~A} \gdef^^c4{\"A} \gdef^^c5{\ringaccent A} \gdef^^c6{\AE} \gdef^^c7{\cedilla C} \gdef^^c8{\`E} \gdef^^c9{\'E} \gdef^^ca{\^E} \gdef^^cb{\"E} \gdef^^cc{\`I} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\"I} % \gdef^^d0{\DH} \gdef^^d1{\~N} \gdef^^d2{\`O} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\~O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\O} \gdef^^d9{\`U} \gdef^^da{\'U} \gdef^^db{\^U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\TH} \gdef^^df{\ss} % \gdef^^e0{\`a} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\~a} \gdef^^e4{\"a} \gdef^^e5{\ringaccent a} \gdef^^e6{\ae} \gdef^^e7{\cedilla c} \gdef^^e8{\`e} \gdef^^e9{\'e} \gdef^^ea{\^e} \gdef^^eb{\"e} \gdef^^ec{\`{\dotless i}} \gdef^^ed{\'{\dotless i}} \gdef^^ee{\^{\dotless i}} \gdef^^ef{\"{\dotless i}} % \gdef^^f0{\dh} \gdef^^f1{\~n} \gdef^^f2{\`o} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\~o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\o} \gdef^^f9{\`u} \gdef^^fa{\'u} \gdef^^fb{\^u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\th} \gdef^^ff{\"y} } % Latin9 (ISO-8859-15) encoding character definitions. \def\latninechardefs{% % Encoding is almost identical to Latin1. \latonechardefs % \gdef^^a4{\euro} \gdef^^a6{\v S} \gdef^^a8{\v s} \gdef^^b4{\v Z} \gdef^^b8{\v z} \gdef^^bc{\OE} \gdef^^bd{\oe} \gdef^^be{\"Y} } % Latin2 (ISO-8859-2) character definitions. \def\lattwochardefs{% \gdef^^a0{\tie} \gdef^^a1{\ogonek{A}} \gdef^^a2{\u{}} \gdef^^a3{\L} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\v L} \gdef^^a6{\'S} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\v S} \gdef^^aa{\cedilla S} \gdef^^ab{\v T} \gdef^^ac{\'Z} \gdef^^ad{\-} \gdef^^ae{\v Z} \gdef^^af{\dotaccent Z} % \gdef^^b0{\textdegree} \gdef^^b1{\ogonek{a}} \gdef^^b2{\ogonek{ }} \gdef^^b3{\l} \gdef^^b4{\'{}} \gdef^^b5{\v l} \gdef^^b6{\'s} \gdef^^b7{\v{}} \gdef^^b8{\cedilla\ } \gdef^^b9{\v s} \gdef^^ba{\cedilla s} \gdef^^bb{\v t} \gdef^^bc{\'z} \gdef^^bd{\H{}} \gdef^^be{\v z} \gdef^^bf{\dotaccent z} % \gdef^^c0{\'R} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\u A} \gdef^^c4{\"A} \gdef^^c5{\'L} \gdef^^c6{\'C} \gdef^^c7{\cedilla C} \gdef^^c8{\v C} \gdef^^c9{\'E} \gdef^^ca{\ogonek{E}} \gdef^^cb{\"E} \gdef^^cc{\v E} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\v D} % \gdef^^d0{\DH} \gdef^^d1{\'N} \gdef^^d2{\v N} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\H O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\v R} \gdef^^d9{\ringaccent U} \gdef^^da{\'U} \gdef^^db{\H U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\cedilla T} \gdef^^df{\ss} % \gdef^^e0{\'r} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\u a} \gdef^^e4{\"a} \gdef^^e5{\'l} \gdef^^e6{\'c} \gdef^^e7{\cedilla c} \gdef^^e8{\v c} \gdef^^e9{\'e} \gdef^^ea{\ogonek{e}} \gdef^^eb{\"e} \gdef^^ec{\v e} \gdef^^ed{\'{\dotless{i}}} \gdef^^ee{\^{\dotless{i}}} \gdef^^ef{\v d} % \gdef^^f0{\dh} \gdef^^f1{\'n} \gdef^^f2{\v n} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\H o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\v r} \gdef^^f9{\ringaccent u} \gdef^^fa{\'u} \gdef^^fb{\H u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\cedilla t} \gdef^^ff{\dotaccent{}} } % UTF-8 character definitions. % % This code to support UTF-8 is based on LaTeX's utf8.def, with some % changes for Texinfo conventions. It is included here under the GPL by % permission from Frank Mittelbach and the LaTeX team. % \newcount\countUTFx \newcount\countUTFy \newcount\countUTFz \gdef\UTFviiiTwoOctets#1#2{\expandafter \UTFviiiDefined\csname u8:#1\string #2\endcsname} % \gdef\UTFviiiThreeOctets#1#2#3{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} % \gdef\UTFviiiFourOctets#1#2#3#4{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} \gdef\UTFviiiDefined#1{% \ifx #1\relax \message{\linenumber Unicode char \string #1 not defined for Texinfo}% \else \expandafter #1% \fi } \begingroup \catcode`\~13 \catcode`\"12 \def\UTFviiiLoop{% \global\catcode\countUTFx\active \uccode`\~\countUTFx \uppercase\expandafter{\UTFviiiTmp}% \advance\countUTFx by 1 \ifnum\countUTFx < \countUTFy \expandafter\UTFviiiLoop \fi} \countUTFx = "C2 \countUTFy = "E0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiTwoOctets\string~}} \UTFviiiLoop \countUTFx = "E0 \countUTFy = "F0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiThreeOctets\string~}} \UTFviiiLoop \countUTFx = "F0 \countUTFy = "F4 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiFourOctets\string~}} \UTFviiiLoop \endgroup \def\globallet{\global\let} % save some \expandafter's below % @U{xxxx} to produce U+xxxx, if we support it. \def\U#1{% \expandafter\ifx\csname uni:#1\endcsname \relax \errhelp = \EMsimple \errmessage{Unicode character U+#1 not supported, sorry}% \else \csname uni:#1\endcsname \fi } \begingroup \catcode`\"=12 \catcode`\<=12 \catcode`\.=12 \catcode`\,=12 \catcode`\;=12 \catcode`\!=12 \catcode`\~=13 \gdef\DeclareUnicodeCharacter#1#2{% \countUTFz = "#1\relax %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% \begingroup \parseXMLCharref \def\UTFviiiTwoOctets##1##2{% \csname u8:##1\string ##2\endcsname}% \def\UTFviiiThreeOctets##1##2##3{% \csname u8:##1\string ##2\string ##3\endcsname}% \def\UTFviiiFourOctets##1##2##3##4{% \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \gdef\UTFviiiTmp{#2}% % \expandafter\ifx\csname uni:#1\endcsname \relax \else \message{Internal error, already defined: #1}% \fi % % define an additional control sequence for this code point. \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp \endgroup} \gdef\parseXMLCharref{% \ifnum\countUTFz < "A0\relax \errhelp = \EMsimple \errmessage{Cannot define Unicode char value < 00A0}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctets.,% \else\ifnum\countUTFz < "10000\relax \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% \else \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiA!% \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% \fi\fi\fi } \gdef\parseUTFviiiA#1{% \countUTFx = \countUTFz \divide\countUTFz by 64 \countUTFy = \countUTFz \multiply\countUTFz by 64 \advance\countUTFx by -\countUTFz \advance\countUTFx by 128 \uccode `#1\countUTFx \countUTFz = \countUTFy} \gdef\parseUTFviiiB#1#2#3#4{% \advance\countUTFz by "#10\relax \uccode `#3\countUTFz \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup % https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M % U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) % U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) % U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A % U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B % % Many of our renditions are less than wonderful, and all the missing % characters are available somewhere. Loading the necessary fonts % awaits user request. We can't truly support Unicode without % reimplementing everything that's been done in LaTeX for many years, % plus probably using luatex or xetex, and who knows what else. % We won't be doing that here in this simple file. But we can try to at % least make most of the characters not bomb out. % \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent \DeclareUnicodeCharacter{00A3}{\pounds} \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar \DeclareUnicodeCharacter{00A7}{\S} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} \DeclareUnicodeCharacter{00AA}{\ordf} \DeclareUnicodeCharacter{00AB}{\guillemetleft} \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} \DeclareUnicodeCharacter{00B1}{\ensuremath\pm} \DeclareUnicodeCharacter{00B2}{$^2$} \DeclareUnicodeCharacter{00B3}{$^3$} \DeclareUnicodeCharacter{00B4}{\'{ }} \DeclareUnicodeCharacter{00B5}{$\mu$} \DeclareUnicodeCharacter{00B6}{\P} \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot} \DeclareUnicodeCharacter{00B8}{\cedilla{ }} \DeclareUnicodeCharacter{00B9}{$^1$} \DeclareUnicodeCharacter{00BA}{\ordm} \DeclareUnicodeCharacter{00BB}{\guillemetright} \DeclareUnicodeCharacter{00BC}{$1\over4$} \DeclareUnicodeCharacter{00BD}{$1\over2$} \DeclareUnicodeCharacter{00BE}{$3\over4$} \DeclareUnicodeCharacter{00BF}{\questiondown} \DeclareUnicodeCharacter{00C0}{\`A} \DeclareUnicodeCharacter{00C1}{\'A} \DeclareUnicodeCharacter{00C2}{\^A} \DeclareUnicodeCharacter{00C3}{\~A} \DeclareUnicodeCharacter{00C4}{\"A} \DeclareUnicodeCharacter{00C5}{\AA} \DeclareUnicodeCharacter{00C6}{\AE} \DeclareUnicodeCharacter{00C7}{\cedilla{C}} \DeclareUnicodeCharacter{00C8}{\`E} \DeclareUnicodeCharacter{00C9}{\'E} \DeclareUnicodeCharacter{00CA}{\^E} \DeclareUnicodeCharacter{00CB}{\"E} \DeclareUnicodeCharacter{00CC}{\`I} \DeclareUnicodeCharacter{00CD}{\'I} \DeclareUnicodeCharacter{00CE}{\^I} \DeclareUnicodeCharacter{00CF}{\"I} \DeclareUnicodeCharacter{00D0}{\DH} \DeclareUnicodeCharacter{00D1}{\~N} \DeclareUnicodeCharacter{00D2}{\`O} \DeclareUnicodeCharacter{00D3}{\'O} \DeclareUnicodeCharacter{00D4}{\^O} \DeclareUnicodeCharacter{00D5}{\~O} \DeclareUnicodeCharacter{00D6}{\"O} \DeclareUnicodeCharacter{00D7}{\ensuremath\times} \DeclareUnicodeCharacter{00D8}{\O} \DeclareUnicodeCharacter{00D9}{\`U} \DeclareUnicodeCharacter{00DA}{\'U} \DeclareUnicodeCharacter{00DB}{\^U} \DeclareUnicodeCharacter{00DC}{\"U} \DeclareUnicodeCharacter{00DD}{\'Y} \DeclareUnicodeCharacter{00DE}{\TH} \DeclareUnicodeCharacter{00DF}{\ss} \DeclareUnicodeCharacter{00E0}{\`a} \DeclareUnicodeCharacter{00E1}{\'a} \DeclareUnicodeCharacter{00E2}{\^a} \DeclareUnicodeCharacter{00E3}{\~a} \DeclareUnicodeCharacter{00E4}{\"a} \DeclareUnicodeCharacter{00E5}{\aa} \DeclareUnicodeCharacter{00E6}{\ae} \DeclareUnicodeCharacter{00E7}{\cedilla{c}} \DeclareUnicodeCharacter{00E8}{\`e} \DeclareUnicodeCharacter{00E9}{\'e} \DeclareUnicodeCharacter{00EA}{\^e} \DeclareUnicodeCharacter{00EB}{\"e} \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} \DeclareUnicodeCharacter{00F0}{\dh} \DeclareUnicodeCharacter{00F1}{\~n} \DeclareUnicodeCharacter{00F2}{\`o} \DeclareUnicodeCharacter{00F3}{\'o} \DeclareUnicodeCharacter{00F4}{\^o} \DeclareUnicodeCharacter{00F5}{\~o} \DeclareUnicodeCharacter{00F6}{\"o} \DeclareUnicodeCharacter{00F7}{\ensuremath\div} \DeclareUnicodeCharacter{00F8}{\o} \DeclareUnicodeCharacter{00F9}{\`u} \DeclareUnicodeCharacter{00FA}{\'u} \DeclareUnicodeCharacter{00FB}{\^u} \DeclareUnicodeCharacter{00FC}{\"u} \DeclareUnicodeCharacter{00FD}{\'y} \DeclareUnicodeCharacter{00FE}{\th} \DeclareUnicodeCharacter{00FF}{\"y} \DeclareUnicodeCharacter{0100}{\=A} \DeclareUnicodeCharacter{0101}{\=a} \DeclareUnicodeCharacter{0102}{\u{A}} \DeclareUnicodeCharacter{0103}{\u{a}} \DeclareUnicodeCharacter{0104}{\ogonek{A}} \DeclareUnicodeCharacter{0105}{\ogonek{a}} \DeclareUnicodeCharacter{0106}{\'C} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} \DeclareUnicodeCharacter{010F}{d'} \DeclareUnicodeCharacter{0110}{\DH} \DeclareUnicodeCharacter{0111}{\dh} \DeclareUnicodeCharacter{0112}{\=E} \DeclareUnicodeCharacter{0113}{\=e} \DeclareUnicodeCharacter{0114}{\u{E}} \DeclareUnicodeCharacter{0115}{\u{e}} \DeclareUnicodeCharacter{0116}{\dotaccent{E}} \DeclareUnicodeCharacter{0117}{\dotaccent{e}} \DeclareUnicodeCharacter{0118}{\ogonek{E}} \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{011A}{\v{E}} \DeclareUnicodeCharacter{011B}{\v{e}} \DeclareUnicodeCharacter{011C}{\^G} \DeclareUnicodeCharacter{011D}{\^g} \DeclareUnicodeCharacter{011E}{\u{G}} \DeclareUnicodeCharacter{011F}{\u{g}} \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} \DeclareUnicodeCharacter{0122}{\cedilla{G}} \DeclareUnicodeCharacter{0123}{\cedilla{g}} \DeclareUnicodeCharacter{0124}{\^H} \DeclareUnicodeCharacter{0125}{\^h} \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}} \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}} \DeclareUnicodeCharacter{0128}{\~I} \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} \DeclareUnicodeCharacter{012A}{\=I} \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} \DeclareUnicodeCharacter{012C}{\u{I}} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} \DeclareUnicodeCharacter{012E}{\ogonek{I}} \DeclareUnicodeCharacter{012F}{\ogonek{i}} \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} \DeclareUnicodeCharacter{0132}{IJ} \DeclareUnicodeCharacter{0133}{ij} \DeclareUnicodeCharacter{0134}{\^J} \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} \DeclareUnicodeCharacter{0136}{\cedilla{K}} \DeclareUnicodeCharacter{0137}{\cedilla{k}} \DeclareUnicodeCharacter{0138}{\ensuremath\kappa} \DeclareUnicodeCharacter{0139}{\'L} \DeclareUnicodeCharacter{013A}{\'l} \DeclareUnicodeCharacter{013B}{\cedilla{L}} \DeclareUnicodeCharacter{013C}{\cedilla{l}} \DeclareUnicodeCharacter{013D}{L'}% should kern \DeclareUnicodeCharacter{013E}{l'}% should kern \DeclareUnicodeCharacter{013F}{L\U{00B7}} \DeclareUnicodeCharacter{0140}{l\U{00B7}} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} \DeclareUnicodeCharacter{0143}{\'N} \DeclareUnicodeCharacter{0144}{\'n} \DeclareUnicodeCharacter{0145}{\cedilla{N}} \DeclareUnicodeCharacter{0146}{\cedilla{n}} \DeclareUnicodeCharacter{0147}{\v{N}} \DeclareUnicodeCharacter{0148}{\v{n}} \DeclareUnicodeCharacter{0149}{'n} \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}} \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}} \DeclareUnicodeCharacter{014C}{\=O} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} \DeclareUnicodeCharacter{014F}{\u{o}} \DeclareUnicodeCharacter{0150}{\H{O}} \DeclareUnicodeCharacter{0151}{\H{o}} \DeclareUnicodeCharacter{0152}{\OE} \DeclareUnicodeCharacter{0153}{\oe} \DeclareUnicodeCharacter{0154}{\'R} \DeclareUnicodeCharacter{0155}{\'r} \DeclareUnicodeCharacter{0156}{\cedilla{R}} \DeclareUnicodeCharacter{0157}{\cedilla{r}} \DeclareUnicodeCharacter{0158}{\v{R}} \DeclareUnicodeCharacter{0159}{\v{r}} \DeclareUnicodeCharacter{015A}{\'S} \DeclareUnicodeCharacter{015B}{\'s} \DeclareUnicodeCharacter{015C}{\^S} \DeclareUnicodeCharacter{015D}{\^s} \DeclareUnicodeCharacter{015E}{\cedilla{S}} \DeclareUnicodeCharacter{015F}{\cedilla{s}} \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} \DeclareUnicodeCharacter{0162}{\cedilla{T}} \DeclareUnicodeCharacter{0163}{\cedilla{t}} \DeclareUnicodeCharacter{0164}{\v{T}} \DeclareUnicodeCharacter{0165}{\v{t}} \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}} \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}} \DeclareUnicodeCharacter{0168}{\~U} \DeclareUnicodeCharacter{0169}{\~u} \DeclareUnicodeCharacter{016A}{\=U} \DeclareUnicodeCharacter{016B}{\=u} \DeclareUnicodeCharacter{016C}{\u{U}} \DeclareUnicodeCharacter{016D}{\u{u}} \DeclareUnicodeCharacter{016E}{\ringaccent{U}} \DeclareUnicodeCharacter{016F}{\ringaccent{u}} \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} \DeclareUnicodeCharacter{0172}{\ogonek{U}} \DeclareUnicodeCharacter{0173}{\ogonek{u}} \DeclareUnicodeCharacter{0174}{\^W} \DeclareUnicodeCharacter{0175}{\^w} \DeclareUnicodeCharacter{0176}{\^Y} \DeclareUnicodeCharacter{0177}{\^y} \DeclareUnicodeCharacter{0178}{\"Y} \DeclareUnicodeCharacter{0179}{\'Z} \DeclareUnicodeCharacter{017A}{\'z} \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} \DeclareUnicodeCharacter{017C}{\dotaccent{z}} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}} \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} \DeclareUnicodeCharacter{01C6}{d\v{z}} \DeclareUnicodeCharacter{01C7}{LJ} \DeclareUnicodeCharacter{01C8}{Lj} \DeclareUnicodeCharacter{01C9}{lj} \DeclareUnicodeCharacter{01CA}{NJ} \DeclareUnicodeCharacter{01CB}{Nj} \DeclareUnicodeCharacter{01CC}{nj} \DeclareUnicodeCharacter{01CD}{\v{A}} \DeclareUnicodeCharacter{01CE}{\v{a}} \DeclareUnicodeCharacter{01CF}{\v{I}} \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} \DeclareUnicodeCharacter{01D1}{\v{O}} \DeclareUnicodeCharacter{01D2}{\v{o}} \DeclareUnicodeCharacter{01D3}{\v{U}} \DeclareUnicodeCharacter{01D4}{\v{u}} \DeclareUnicodeCharacter{01E2}{\={\AE}} \DeclareUnicodeCharacter{01E3}{\={\ae}} \DeclareUnicodeCharacter{01E6}{\v{G}} \DeclareUnicodeCharacter{01E7}{\v{g}} \DeclareUnicodeCharacter{01E8}{\v{K}} \DeclareUnicodeCharacter{01E9}{\v{k}} \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} \DeclareUnicodeCharacter{01F1}{DZ} \DeclareUnicodeCharacter{01F2}{Dz} \DeclareUnicodeCharacter{01F3}{dz} \DeclareUnicodeCharacter{01F4}{\'G} \DeclareUnicodeCharacter{01F5}{\'g} \DeclareUnicodeCharacter{01F8}{\`N} \DeclareUnicodeCharacter{01F9}{\`n} \DeclareUnicodeCharacter{01FC}{\'{\AE}} \DeclareUnicodeCharacter{01FD}{\'{\ae}} \DeclareUnicodeCharacter{01FE}{\'{\O}} \DeclareUnicodeCharacter{01FF}{\'{\o}} \DeclareUnicodeCharacter{021E}{\v{H}} \DeclareUnicodeCharacter{021F}{\v{h}} \DeclareUnicodeCharacter{0226}{\dotaccent{A}} \DeclareUnicodeCharacter{0227}{\dotaccent{a}} \DeclareUnicodeCharacter{0228}{\cedilla{E}} \DeclareUnicodeCharacter{0229}{\cedilla{e}} \DeclareUnicodeCharacter{022E}{\dotaccent{O}} \DeclareUnicodeCharacter{022F}{\dotaccent{o}} \DeclareUnicodeCharacter{0232}{\=Y} \DeclareUnicodeCharacter{0233}{\=y} \DeclareUnicodeCharacter{0237}{\dotless{j}} \DeclareUnicodeCharacter{02DB}{\ogonek{ }} % Greek letters upper case \DeclareUnicodeCharacter{0391}{{\it A}} \DeclareUnicodeCharacter{0392}{{\it B}} \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}} \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}} \DeclareUnicodeCharacter{0395}{{\it E}} \DeclareUnicodeCharacter{0396}{{\it Z}} \DeclareUnicodeCharacter{0397}{{\it H}} \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}} \DeclareUnicodeCharacter{0399}{{\it I}} \DeclareUnicodeCharacter{039A}{{\it K}} \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}} \DeclareUnicodeCharacter{039C}{{\it M}} \DeclareUnicodeCharacter{039D}{{\it N}} \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}} \DeclareUnicodeCharacter{039F}{{\it O}} \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}} \DeclareUnicodeCharacter{03A1}{{\it P}} %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}} \DeclareUnicodeCharacter{03A4}{{\it T}} \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}} \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}} \DeclareUnicodeCharacter{03A7}{{\it X}} \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}} \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}} % Vowels with accents \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}} \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}} \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}} \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}} \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}} \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}} % Standalone accent \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}} % Greek letters lower case \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha} \DeclareUnicodeCharacter{03B2}{\ensuremath\beta} \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma} \DeclareUnicodeCharacter{03B4}{\ensuremath\delta} \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon} \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta} \DeclareUnicodeCharacter{03B7}{\ensuremath\eta} \DeclareUnicodeCharacter{03B8}{\ensuremath\theta} \DeclareUnicodeCharacter{03B9}{\ensuremath\iota} \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa} \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda} \DeclareUnicodeCharacter{03BC}{\ensuremath\mu} \DeclareUnicodeCharacter{03BD}{\ensuremath\nu} \DeclareUnicodeCharacter{03BE}{\ensuremath\xi} \DeclareUnicodeCharacter{03BF}{{\it o}} % omicron \DeclareUnicodeCharacter{03C0}{\ensuremath\pi} \DeclareUnicodeCharacter{03C1}{\ensuremath\rho} \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma} \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma} \DeclareUnicodeCharacter{03C4}{\ensuremath\tau} \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon} \DeclareUnicodeCharacter{03C6}{\ensuremath\phi} \DeclareUnicodeCharacter{03C7}{\ensuremath\chi} \DeclareUnicodeCharacter{03C8}{\ensuremath\psi} \DeclareUnicodeCharacter{03C9}{\ensuremath\omega} % More Greek vowels with accents \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}} \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}} \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}} \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}} \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}} % Variant Greek letters \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta} \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi} \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho} \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} \DeclareUnicodeCharacter{1E20}{\=G} \DeclareUnicodeCharacter{1E21}{\=g} \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} \DeclareUnicodeCharacter{1E26}{\"H} \DeclareUnicodeCharacter{1E27}{\"h} \DeclareUnicodeCharacter{1E30}{\'K} \DeclareUnicodeCharacter{1E31}{\'k} \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} \DeclareUnicodeCharacter{1E3E}{\'M} \DeclareUnicodeCharacter{1E3F}{\'m} \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} \DeclareUnicodeCharacter{1E54}{\'P} \DeclareUnicodeCharacter{1E55}{\'p} \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} \DeclareUnicodeCharacter{1E7C}{\~V} \DeclareUnicodeCharacter{1E7D}{\~v} \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} \DeclareUnicodeCharacter{1E80}{\`W} \DeclareUnicodeCharacter{1E81}{\`w} \DeclareUnicodeCharacter{1E82}{\'W} \DeclareUnicodeCharacter{1E83}{\'w} \DeclareUnicodeCharacter{1E84}{\"W} \DeclareUnicodeCharacter{1E85}{\"w} \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} \DeclareUnicodeCharacter{1E8C}{\"X} \DeclareUnicodeCharacter{1E8D}{\"x} \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} \DeclareUnicodeCharacter{1E90}{\^Z} \DeclareUnicodeCharacter{1E91}{\^z} \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} \DeclareUnicodeCharacter{1E97}{\"t} \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} \DeclareUnicodeCharacter{1EBC}{\~E} \DeclareUnicodeCharacter{1EBD}{\~e} \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} \DeclareUnicodeCharacter{1EF2}{\`Y} \DeclareUnicodeCharacter{1EF3}{\`y} \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} \DeclareUnicodeCharacter{1EF8}{\~Y} \DeclareUnicodeCharacter{1EF9}{\~y} % Punctuation \DeclareUnicodeCharacter{2013}{--} \DeclareUnicodeCharacter{2014}{---} \DeclareUnicodeCharacter{2018}{\quoteleft} \DeclareUnicodeCharacter{2019}{\quoteright} \DeclareUnicodeCharacter{201A}{\quotesinglbase} \DeclareUnicodeCharacter{201C}{\quotedblleft} \DeclareUnicodeCharacter{201D}{\quotedblright} \DeclareUnicodeCharacter{201E}{\quotedblbase} \DeclareUnicodeCharacter{2020}{\ensuremath\dagger} \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger} \DeclareUnicodeCharacter{2022}{\bullet} \DeclareUnicodeCharacter{202F}{\thinspace} \DeclareUnicodeCharacter{2026}{\dots} \DeclareUnicodeCharacter{2039}{\guilsinglleft} \DeclareUnicodeCharacter{203A}{\guilsinglright} \DeclareUnicodeCharacter{20AC}{\euro} \DeclareUnicodeCharacter{2192}{\expansion} \DeclareUnicodeCharacter{21D2}{\result} % Mathematical symbols \DeclareUnicodeCharacter{2200}{\ensuremath\forall} \DeclareUnicodeCharacter{2203}{\ensuremath\exists} \DeclareUnicodeCharacter{2208}{\ensuremath\in} \DeclareUnicodeCharacter{2212}{\minus} \DeclareUnicodeCharacter{2217}{\ast} \DeclareUnicodeCharacter{221E}{\ensuremath\infty} \DeclareUnicodeCharacter{2225}{\ensuremath\parallel} \DeclareUnicodeCharacter{2227}{\ensuremath\wedge} \DeclareUnicodeCharacter{2229}{\ensuremath\cap} \DeclareUnicodeCharacter{2261}{\equiv} \DeclareUnicodeCharacter{2264}{\ensuremath\leq} \DeclareUnicodeCharacter{2265}{\ensuremath\geq} \DeclareUnicodeCharacter{2282}{\ensuremath\subset} \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq} \DeclareUnicodeCharacter{2016}{\ensuremath\Vert} \DeclareUnicodeCharacter{2032}{\ensuremath\prime} \DeclareUnicodeCharacter{210F}{\ensuremath\hbar} \DeclareUnicodeCharacter{2111}{\ensuremath\Im} \DeclareUnicodeCharacter{2113}{\ensuremath\ell} \DeclareUnicodeCharacter{2118}{\ensuremath\wp} \DeclareUnicodeCharacter{211C}{\ensuremath\Re} \DeclareUnicodeCharacter{2127}{\ensuremath\mho} \DeclareUnicodeCharacter{2135}{\ensuremath\aleph} \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow} \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow} \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow} \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow} \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow} \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow} \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow} \DeclareUnicodeCharacter{2198}{\ensuremath\searrow} \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow} \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto} \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow} \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow} \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup} \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown} \DeclareUnicodeCharacter{21BE}{\ensuremath\upharpoonright} \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup} \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown} \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons} \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow} \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow} \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow} \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow} \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow} \DeclareUnicodeCharacter{21DD}{\ensuremath\leadsto} \DeclareUnicodeCharacter{2201}{\ensuremath\complement} \DeclareUnicodeCharacter{2202}{\ensuremath\partial} \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset} \DeclareUnicodeCharacter{2207}{\ensuremath\nabla} \DeclareUnicodeCharacter{2209}{\ensuremath\notin} \DeclareUnicodeCharacter{220B}{\ensuremath\owns} \DeclareUnicodeCharacter{220F}{\ensuremath\prod} \DeclareUnicodeCharacter{2210}{\ensuremath\coprod} \DeclareUnicodeCharacter{2211}{\ensuremath\sum} \DeclareUnicodeCharacter{2213}{\ensuremath\mp} \DeclareUnicodeCharacter{2218}{\ensuremath\circ} \DeclareUnicodeCharacter{221A}{\ensuremath\surd} \DeclareUnicodeCharacter{221D}{\ensuremath\propto} \DeclareUnicodeCharacter{2220}{\ensuremath\angle} \DeclareUnicodeCharacter{2223}{\ensuremath\mid} \DeclareUnicodeCharacter{2228}{\ensuremath\vee} \DeclareUnicodeCharacter{222A}{\ensuremath\cup} \DeclareUnicodeCharacter{222B}{\ensuremath\smallint} \DeclareUnicodeCharacter{222E}{\ensuremath\oint} \DeclareUnicodeCharacter{223C}{\ensuremath\sim} \DeclareUnicodeCharacter{2240}{\ensuremath\wr} \DeclareUnicodeCharacter{2243}{\ensuremath\simeq} \DeclareUnicodeCharacter{2245}{\ensuremath\cong} \DeclareUnicodeCharacter{2248}{\ensuremath\approx} \DeclareUnicodeCharacter{224D}{\ensuremath\asymp} \DeclareUnicodeCharacter{2250}{\ensuremath\doteq} \DeclareUnicodeCharacter{2260}{\ensuremath\neq} \DeclareUnicodeCharacter{226A}{\ensuremath\ll} \DeclareUnicodeCharacter{226B}{\ensuremath\gg} \DeclareUnicodeCharacter{227A}{\ensuremath\prec} \DeclareUnicodeCharacter{227B}{\ensuremath\succ} \DeclareUnicodeCharacter{2283}{\ensuremath\supset} \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq} \DeclareUnicodeCharacter{228E}{\ensuremath\uplus} \DeclareUnicodeCharacter{228F}{\ensuremath\sqsubset} \DeclareUnicodeCharacter{2290}{\ensuremath\sqsupset} \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq} \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq} \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap} \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup} \DeclareUnicodeCharacter{2295}{\ensuremath\oplus} \DeclareUnicodeCharacter{2296}{\ensuremath\ominus} \DeclareUnicodeCharacter{2297}{\ensuremath\otimes} \DeclareUnicodeCharacter{2298}{\ensuremath\oslash} \DeclareUnicodeCharacter{2299}{\ensuremath\odot} \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash} \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv} \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop} \DeclareUnicodeCharacter{22A5}{\ensuremath\bot} \DeclareUnicodeCharacter{22A8}{\ensuremath\models} \DeclareUnicodeCharacter{22B4}{\ensuremath\unlhd} \DeclareUnicodeCharacter{22B5}{\ensuremath\unrhd} \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge} \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee} \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap} \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup} \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond} \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot} \DeclareUnicodeCharacter{22C6}{\ensuremath\star} \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie} \DeclareUnicodeCharacter{2308}{\ensuremath\lceil} \DeclareUnicodeCharacter{2309}{\ensuremath\rceil} \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor} \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor} \DeclareUnicodeCharacter{2322}{\ensuremath\frown} \DeclareUnicodeCharacter{2323}{\ensuremath\smile} \DeclareUnicodeCharacter{25A1}{\ensuremath\Box} \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle} \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright} \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown} \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft} \DeclareUnicodeCharacter{25C7}{\ensuremath\Diamond} \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit} \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit} \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit} \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit} \DeclareUnicodeCharacter{266D}{\ensuremath\flat} \DeclareUnicodeCharacter{266E}{\ensuremath\natural} \DeclareUnicodeCharacter{266F}{\ensuremath\sharp} \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc} \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle} \DeclareUnicodeCharacter{27C2}{\ensuremath\perp} \DeclareUnicodeCharacter{27E8}{\ensuremath\langle} \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow} \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow} \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow} \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto} \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus} \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot} \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus} \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes} \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus} \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup} \DeclareUnicodeCharacter{2A1D}{\ensuremath\Join} \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg} \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq} \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq} \global\mathchardef\checkmark="1370 % actually the square root sign \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark} }% end of \utfeightchardefs % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } % Latin1 (ISO-8859-1) character definitions. \def\nonasciistringdefs{% \setnonasciicharscatcode\active \def\defstringchar##1{\def##1{\string##1}}% % \defstringchar^^80\defstringchar^^81\defstringchar^^82\defstringchar^^83% \defstringchar^^84\defstringchar^^85\defstringchar^^86\defstringchar^^87% \defstringchar^^88\defstringchar^^89\defstringchar^^8a\defstringchar^^8b% \defstringchar^^8c\defstringchar^^8d\defstringchar^^8e\defstringchar^^8f% % \defstringchar^^90\defstringchar^^91\defstringchar^^92\defstringchar^^93% \defstringchar^^94\defstringchar^^95\defstringchar^^96\defstringchar^^97% \defstringchar^^98\defstringchar^^99\defstringchar^^9a\defstringchar^^9b% \defstringchar^^9c\defstringchar^^9d\defstringchar^^9e\defstringchar^^9f% % \defstringchar^^a0\defstringchar^^a1\defstringchar^^a2\defstringchar^^a3% \defstringchar^^a4\defstringchar^^a5\defstringchar^^a6\defstringchar^^a7% \defstringchar^^a8\defstringchar^^a9\defstringchar^^aa\defstringchar^^ab% \defstringchar^^ac\defstringchar^^ad\defstringchar^^ae\defstringchar^^af% % \defstringchar^^b0\defstringchar^^b1\defstringchar^^b2\defstringchar^^b3% \defstringchar^^b4\defstringchar^^b5\defstringchar^^b6\defstringchar^^b7% \defstringchar^^b8\defstringchar^^b9\defstringchar^^ba\defstringchar^^bb% \defstringchar^^bc\defstringchar^^bd\defstringchar^^be\defstringchar^^bf% % \defstringchar^^c0\defstringchar^^c1\defstringchar^^c2\defstringchar^^c3% \defstringchar^^c4\defstringchar^^c5\defstringchar^^c6\defstringchar^^c7% \defstringchar^^c8\defstringchar^^c9\defstringchar^^ca\defstringchar^^cb% \defstringchar^^cc\defstringchar^^cd\defstringchar^^ce\defstringchar^^cf% % \defstringchar^^d0\defstringchar^^d1\defstringchar^^d2\defstringchar^^d3% \defstringchar^^d4\defstringchar^^d5\defstringchar^^d6\defstringchar^^d7% \defstringchar^^d8\defstringchar^^d9\defstringchar^^da\defstringchar^^db% \defstringchar^^dc\defstringchar^^dd\defstringchar^^de\defstringchar^^df% % \defstringchar^^e0\defstringchar^^e1\defstringchar^^e2\defstringchar^^e3% \defstringchar^^e4\defstringchar^^e5\defstringchar^^e6\defstringchar^^e7% \defstringchar^^e8\defstringchar^^e9\defstringchar^^ea\defstringchar^^eb% \defstringchar^^ec\defstringchar^^ed\defstringchar^^ee\defstringchar^^ef% % \defstringchar^^f0\defstringchar^^f1\defstringchar^^f2\defstringchar^^f3% \defstringchar^^f4\defstringchar^^f5\defstringchar^^f6\defstringchar^^f7% \defstringchar^^f8\defstringchar^^f9\defstringchar^^fa\defstringchar^^fb% \defstringchar^^fc\defstringchar^^fd\defstringchar^^fe\defstringchar^^ff% } % define all the unicode characters we know about, for the sake of @U. \utfeightchardefs % Make non-ASCII characters printable again for compatibility with % existing Texinfo documents that may use them, even without declaring a % document encoding. % \setnonasciicharscatcode \other \message{formatting,} \newdimen\defaultparindent \defaultparindent = 15pt \chapheadingskip = 15pt plus 4pt minus 2pt \secheadingskip = 12pt plus 3pt minus 2pt \subsecheadingskip = 9pt plus 2pt minus 2pt % Prevent underfull vbox error messages. \vbadness = 10000 % Don't be very finicky about underfull hboxes, either. \hbadness = 6666 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 \clubpenalty=10000 % Use TeX 3.0's \emergencystretch to help line breaking, but if we're % using an old version of TeX, don't do anything. We want the amount of % stretch added to depend on the line length, hence the dependence on % \hsize. We call this whenever the paper size is set. % \def\setemergencystretch{% \ifx\emergencystretch\thisisundefined % Allow us to assign to \emergencystretch anyway. \def\emergencystretch{\dimen0}% \else \emergencystretch = .15\hsize \fi } % Parameters in order: 1) textheight; 2) textwidth; % 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; % 7) physical page height; 8) physical page width. % % We also call \setleading{\textleading}, so the caller should define % \textleading. The caller should also set \parskip. % \def\internalpagesizes#1#2#3#4#5#6#7#8{% \voffset = #3\relax \topskip = #6\relax \splittopskip = \topskip % \vsize = #1\relax \advance\vsize by \topskip \outervsize = \vsize \advance\outervsize by 2\topandbottommargin \pageheight = \vsize % \hsize = #2\relax \outerhsize = \hsize \advance\outerhsize by 0.5in \pagewidth = \hsize % \normaloffset = #4\relax \bindingoffset = #5\relax % \ifpdf \pdfpageheight #7\relax \pdfpagewidth #8\relax % if we don't reset these, they will remain at "1 true in" of % whatever layout pdftex was dumped with. \pdfhorigin = 1 true in \pdfvorigin = 1 true in \fi % \setleading{\textleading} % \parindent = \defaultparindent \setemergencystretch } % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % If page is nothing but text, make it come out even. \internalpagesizes{607.2pt}{6in}% that's 46 lines {\voffset}{.25in}% {\bindingoffset}{36pt}% {11in}{8.5in}% }} % Use @smallbook to reset parameters for 7x9.25 trim size. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \textleading = 12pt % \internalpagesizes{7.5in}{5in}% {-.2in}{0in}% {\bindingoffset}{16pt}% {9.25in}{7in}% % \lispnarrowing = 0.3in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .5cm }} % Use @smallerbook to reset parameters for 6x9 trim size. % (Just testing, parameters still in flux.) \def\smallerbook{{\globaldefs = 1 \parskip = 1.5pt plus 1pt \textleading = 12pt % \internalpagesizes{7.4in}{4.8in}% {-.2in}{-.4in}% {0pt}{14pt}% {9in}{6in}% % \lispnarrowing = 0.25in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .4cm }} % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % Double-side printing via postscript on Laserjet 4050 % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. % To change the settings for a different printer or situation, adjust % \normaloffset until the front-side and back-side texts align. Then % do the same for \bindingoffset. You can set these for testing in % your texinfo source file like this: % @tex % \global\normaloffset = -6mm % \global\bindingoffset = 10mm % @end tex \internalpagesizes{673.2pt}{160mm}% that's 51 lines {\voffset}{\hoffset}% {\bindingoffset}{44pt}% {297mm}{210mm}% % \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = 5mm }} % Use @afivepaper to print on European A5 paper. % From romildo@urano.iceb.ufop.br, 2 July 2000. % He also recommends making @example and @lisp be small. \def\afivepaper{{\globaldefs = 1 \parskip = 2pt plus 1pt minus 0.1pt \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% {\voffset}{\hoffset}% {\bindingoffset}{8pt}% {210mm}{148mm}% % \lispnarrowing = 0.2in \tolerance = 800 \hfuzz = 1.2pt \contentsrightmargin = 0pt \defbodyindent = 2mm \tableindent = 12mm }} % A specific text layout, 24x15cm overall, intended for A4 paper. \def\afourlatex{{\globaldefs = 1 \afourpaper \internalpagesizes{237mm}{150mm}% {\voffset}{4.6mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% % % Must explicitly reset to 0 because we call \afourpaper. \globaldefs = 0 }} % Use @afourwide to print on A4 paper in landscape format. \def\afourwide{{\globaldefs = 1 \afourpaper \internalpagesizes{241mm}{165mm}% {\voffset}{-2.95mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% \globaldefs = 0 }} % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. % \parseargdef\pagesizes{\pagesizesyyy #1,,\finish} \def\pagesizesyyy#1,#2,#3\finish{{% \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi \globaldefs = 1 % \parskip = 3pt plus 2pt minus 1pt \setleading{\textleading}% % \dimen0 = #1\relax \advance\dimen0 by \voffset % \dimen2 = \hsize \advance\dimen2 by \normaloffset % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% {\bindingoffset}{44pt}% {\dimen0}{\dimen2}% }} % Set default to letter. % \letterpaper \message{and turning on texinfo input format.} \def^^L{\par} % remove \outer, so ^L can appear in an @comment % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 % Define macros to output various characters with catcode for normal text. \catcode`\"=\other \def\normaldoublequote{"} \catcode`\$=\other \def\normaldollar{$}%$ font-lock fix \catcode`\+=\other \def\normalplus{+} \catcode`\<=\other \def\normalless{<} \catcode`\>=\other \def\normalgreater{>} \catcode`\^=\other \def\normalcaret{^} \catcode`\_=\other \def\normalunderscore{_} \catcode`\|=\other \def\normalverticalbar{|} \catcode`\~=\other \def\normaltilde{~} % This macro is used to make a character print one way in \tt % (where it can probably be output as-is), and another way in other fonts, % where something hairier probably needs to be done. % % #1 is what to print if we are indeed using \tt; #2 is what to print % otherwise. Since all the Computer Modern typewriter fonts have zero % interword stretch (and shrink), and it is reasonable to expect all % typewriter fonts to have this, we can check that font parameter. % \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} % Same as above, but check for italic font. Actually this also catches % non-italic slanted fonts since it is impossible to distinguish them from % italic fonts. But since this is only used by $ and it uses \sl anyway % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} % Turn off all special characters except @ % (and those which the user can use as if they were ordinary). % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde \chardef\hatchar=`\^ \catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} \let\realunder=_ % Subroutine for the previous macro. \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } \catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless \chardef \gtr=`\> \catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix \catcode`\-=\active \let-=\normaldash % used for headline/footline in the output routine, in case the page % breaks in the middle of an @tex block. \def\texinfochars{% \let< = \activeless \let> = \activegtr \let~ = \activetilde \let^ = \activehat \markupsetuplqdefault \markupsetuprqdefault \let\b = \strong \let\i = \smartitalic % in principle, all other definitions in \tex have to be undone too. } % Used sometimes to turn off (effectively) the active characters even after % parsing them. \def\turnoffactive{% \normalturnoffactive \otherbackslash } \catcode`\@=0 % \backslashcurfont outputs one backslash character in current font, % as in \char`\\. \global\chardef\backslashcurfont=`\\ \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work % \realbackslash is an actual character `\' with catcode other, and % \doublebackslash is two of them (for the pdf outlines). {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} % In Texinfo, backslash is an active character; it prints the backslash % in fixed width font. \catcode`\\=\active % @ for escape char from now on. % Print a typewriter backslash. For math mode, we can't simply use % \backslashcurfont: the story here is that in math mode, the \char % of \backslashcurfont ends up printing the roman \ from the math symbol % font (because \char in math mode uses the \mathcode, and plain.tex % sets \mathcode`\\="026E). Hence we use an explicit \mathchar, % which is the decimal equivalent of "715c (class 7, e.g., use \fam; % ignored family value; char position "5C). We can't use " for the % usual hex value because it has already been made active. @def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} @let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with % catcode other. We switch back and forth between these. @gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. % {@catcode`- = @active @gdef@normalturnoffactive{% @nonasciistringdefs @let-=@normaldash @let"=@normaldoublequote @let$=@normaldollar %$ font-lock fix @let+=@normalplus @let<=@normalless @let>=@normalgreater @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let~=@normaltilde @let\=@ttbackslash @markupsetuplqdefault @markupsetuprqdefault @unsepspaces } } % 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 @fixbackslash turn them back on. @catcode`+=@other @catcode`@_=@other % \enablebackslashhack - allow file to begin `\input texinfo' % % 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. % If the file did not have a `\input texinfo', then it is turned off after % the first line; otherwise the first `\' in the file would cause an error. % This is used on the very last line of this file, texinfo.tex. % We also use @c to call @fixbackslash, in case ends of lines are hidden. { @catcode`@^=7 @catcode`@^^M=13@gdef@enablebackslashhack{% @global@let\ = @eatinput% @catcode`@^^M=13% @def@c{@fixbackslash@c}% @def ^^M{@let^^M@secondlinenl}% @gdef @secondlinenl{@let^^M@thirdlinenl}% @gdef @thirdlinenl{@fixbackslash}% }} {@catcode`@^=7 @catcode`@^^M=13% @gdef@eatinput input texinfo#1^^M{@fixbackslash}} @gdef@fixbackslash{% @ifx\@eatinput @let\ = @ttbackslash @fi @catcode13=5 % regular end of line @let@c=@texinfoc % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. @catcode`+=@active @catcode`@_=@active % % If texinfo.cnf is present on the system, read it. % Useful for site-wide @afourpaper, etc. This macro, @fixbackslash, gets % called at the beginning of every Texinfo file. Not opening texinfo.cnf % directly in this file, texinfo.tex, makes it possible to make a format % file for Texinfo. % @openin 1 texinfo.cnf @ifeof 1 @else @input texinfo.cnf @fi @closein 1 } % Say @foo, not \foo, in error messages. @escapechar = `@@ % These (along with & and #) are made active for url-breaking, so need % active definitions as the normal characters. @def@normaldot{.} @def@normalquest{?} @def@normalslash{/} % These look ok in all fonts, so just make them not special. % @hashchar{} gets its own user-level command, because of #line. @catcode`@& = @other @def@normalamp{&} @catcode`@# = @other @def@normalhash{#} @catcode`@% = @other @def@normalpercent{%} @let @hashchar = @normalhash @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we @c don't make ` and ' active, @code will not get them as active chars. @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active @markupsetuplqdefault @markupsetuprqdefault @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) @c page-delimiter: "^\\\\message\\|emacs-page" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @c End: @c vim:sw=2: @ignore arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 @end ignore @enablebackslashhack readline-8.0/doc/readline.0000664 000436 000000 00000172437 13300554224 015647 0ustar00chetwheel000000 000000 READLINE(3) Library Functions Manual READLINE(3) NAME readline - get a line from a user with editing SYNOPSIS #include  #include  #include  char * readline (const char *prompt); COPYRIGHT Readline is Copyright (C) 1989-2014 Free Software Foundation, Inc. DESCRIPTION readline will read a line from the terminal and return it, using prompt as a prompt. If prompt is NULL or the empty string, no prompt is issued. The line returned is allocated with malloc(3); the caller must free it when finished. The line returned has the final newline removed, so only the text of the line remains. readline 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. This manual page describes only the most basic use of readline. Much more functionality is available; see The GNU Readline Library and The GNU History Library for additional information. RETURN VALUE readline returns the text of the line read. A blank line returns the empty string. If EOF is encountered while reading a line, and the line is empty, NULL is returned. If an EOF is read with a non-empty line, it is treated as a newline. NOTATION An Emacs-style notation is used to denote keystrokes. Control keys are denoted by C-key, e.g., C-n means Control-N. Similarly, meta keys are denoted by M-key, so M-x means Meta-X. (On keyboards without a meta key, M-x means ESC x, i.e., press the Escape key then the x key. This makes ESC the meta prefix. The combination M-C-x means ESC-Control-x, or press the Escape key then hold the Control key while pressing the x key.) Readline commands may be given numeric arguments, 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., kill-line) causes that command to act in a backward direction. Commands whose behavior with arguments deviates from this are noted below. When a command is described as killing text, the text deleted is saved for possible future retrieval (yanking). The killed text is saved in a kill ring. 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. INITIALIZATION FILE Readline is customized by putting commands in an initialization file (the inputrc file). The name of this file is taken from the value of the INPUTRC environment variable. If that variable is unset, the default is ~/.inputrc. If that file does not exist or cannot be read, the ultimate default is /etc/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 # 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 inputrc would make M-C-u execute the readline command univer- sal-argument. The following symbolic character names are recognized while processing key bindings: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB. In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a macro). Key Bindings The syntax for controlling key bindings in the 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 speci- fied in one of two ways: as a symbolic key name, possibly with Meta- or Control- prefixes, or as a key sequence. The name and key sequence are separated by a colon. There can be no whitespace between the name and the colon. When using the form 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, M-DEL is bound to the function backward-kill-word, 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). In the second form, "keyseq":function-name or macro, keyseq differs from keyname 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, but the symbolic character names are not recognized. "\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 universal-argument. 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 full set of GNU Emacs style escape sequences available when speci- fying key sequences is \C- control prefix \M- meta prefix \e an escape character \\ backslash \" literal ", a double quote \' literal ', a single quote In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available: \a alert (bell) \b backspace \d delete \f form feed \n newline \r carriage return \t horizontal tab \v vertical tab \nnn the eight-bit character whose value is the octal value nnn (one to three digits) \xHH the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) 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. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other character in the macro text, including " and '. Bash allows the current readline key bindings to be displayed or modi- fied with the bind builtin command. The editing mode may be switched during interactive use by using the -o option to the set builtin com- mand. Other programs using this library provide similar mechanisms. The inputrc file may be edited and re-read if a program does not pro- vide any other means to incorporate new bindings. Variables Readline has variables that can be used to further customize its behav- ior. A variable may be set in the inputrc file with a statement of the form set variable-name value Except where noted, readline variables can take the values On or Off (without regard to case). Unrecognized variable names are ignored. When a variable value is read, empty or null values, "on" (case-insen- sitive), and "1" are equivalent to On. All other values are equivalent to Off. The variables and their default values are: bell-style (audible) 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, readline attempts to ring the terminal's bell. bind-tty-special-chars (On) If set to On (the default), readline attempts to bind the con- trol characters treated specially by the kernel's terminal driver to their readline equivalents. blink-matching-paren (Off) If set to On, readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. colored-completion-prefix (Off) If set to On, when listing completions, readline displays the common prefix of the set of possible completions using a differ- ent color. The color definitions are taken from the value of the LS_COLORS environment variable. colored-stats (Off) If set to On, readline displays possible completions using dif- ferent colors to indicate their file type. The color defini- tions are taken from the value of the LS_COLORS environment variable. comment-begin (``#'') The string that is inserted in vi mode when the insert-comment command is executed. This command is bound to M-# in emacs mode and to # in vi command mode. completion-display-width (-1) The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is -1. completion-ignore-case (Off) If set to On, readline performs filename matching and completion in a case-insensitive fashion. completion-map-case (Off) If set to On, and completion-ignore-case is enabled, readline treats hyphens (-) and underscores (_) as equivalent when per- forming case-insensitive filename matching and completion. completion-prefix-display-length (0) The length in characters of the common prefix of a list of pos- sible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possi- ble completions. completion-query-items (100) This determines when the user is queried about viewing the num- ber of possible completions generated by the possible-comple- tions 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 variable, the user is asked whether or not he wishes to view them; otherwise they are simply listed on the terminal. A negative value causes readline to never ask. convert-meta (On) If set to On, readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and prefixing it with an escape character (in effect, using escape as the meta prefix). The default is On, but readline will set it to Off if the locale contains eight-bit characters. disable-completion (Off) 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. echo-control-characters (On) When set to On, on operating systems that indicate they support it, readline echoes a character corresponding to a signal gener- ated from the keyboard. editing-mode (emacs) Controls whether readline begins with a set of key bindings sim- ilar to Emacs or vi. editing-mode can be set to either emacs or vi. emacs-mode-string (@) If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the \1 and \2 escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. enable-bracketed-paste (Off) When set to On, readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a single string of characters, instead of treating each char- acter as if it had been read from the keyboard. This can pre- vent pasted characters from being interpreted as editing com- mands. enable-keypad (Off) When set to On, readline will try to enable the application key- pad when it is called. Some systems need this to enable the arrow keys. enable-meta-key (On) When set to On, readline will try to enable any meta modifier key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. expand-tilde (Off) If set to On, tilde expansion is performed when readline attempts word completion. history-preserve-point (Off) If set to On, the history code attempts to place point at the same location on each history line retrieved with previous-his- tory or next-history. history-size (unset) Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. If an attempt is made to set history-size to a non-numeric value, the maximum number of history entries will be set to 500. horizontal-scroll-mode (Off) When set to On, 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. input-meta (Off) If set to On, readline will enable eight-bit input (that is, it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The name meta-flag is a synonym for this variable. The default is Off, but readline will set it to On if the locale contains eight-bit characters. isearch-terminators (``C-[ C-J'') The string of characters that should terminate an incremental search without subsequently executing the character as a com- mand. If this variable has not been given a value, the charac- ters ESC and C-J will terminate an incremental search. keymap (emacs) Set the current readline keymap. The set of legal keymap names is emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, 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 editing-mode also affects the default keymap. keyseq-timeout (500) Specifies the duration readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, readline will use the shorter but complete key sequence. The value is specified in milliseconds, so a value of 1000 means that readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, readline will wait until another key is pressed to decide which key sequence to complete. mark-directories (On) If set to On, completed directory names have a slash appended. mark-modified-lines (Off) If set to On, history lines that have been modified are dis- played with a preceding asterisk (*). mark-symlinked-directories (Off) If set to On, completed names which are symbolic links to direc- tories have a slash appended (subject to the value of mark-directories). match-hidden-files (On) This variable, when set to On, causes readline to match files whose names begin with a `.' (hidden files) when performing filename completion. If set to Off, the leading `.' must be supplied by the user in the filename to be completed. menu-complete-display-prefix (Off) If set to On, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. output-meta (Off) 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, but readline will set it to On if the locale contains eight-bit characters. page-completions (On) If set to On, readline uses an internal more-like pager to dis- play a screenful of possible completions at a time. print-completions-horizontally (Off) If set to On, readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. revert-all-at-newline (Off) If set to On, readline will undo all changes to history lines before returning when accept-line is executed. By default, his- tory lines may be modified and retain individual undo lists across calls to readline. show-all-if-ambiguous (Off) 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. show-all-if-unmodified (Off) This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to On, words which have more than one possible completion without any possi- ble partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. show-mode-in-prompt (Off) If set to On, add a string to the beginning of the prompt indi- cating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable (e.g., emacs-mode-string). skip-completed-text (Off) If set to On, this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If enabled, readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. vi-cmd-mode-string ((cmd)) If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the \1 and \2 escapes to begin and end sequences of non- printing characters, which can be used to embed a terminal con- trol sequence into the mode string. vi-ins-mode-string ((ins)) If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the \1 and \2 escapes to begin and end sequences of non- printing characters, which can be used to embed a terminal con- trol sequence into the mode string. visible-stats (Off) If set to On, a character denoting a file's type as reported by stat(2) is appended to the filename when listing possible com- pletions. Conditional 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 four parser directives used. $if The $if construct allows bindings to be made based on the edit- ing mode, the terminal being used, or the application using readline. The text of the test, after any comparison operator, extends to the end of the line; unless otherwise noted, no char- acters 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. version The version test may be used to perform comparisons against specific readline versions. The version expands to the current readline version. The set of comparison operators includes =, (and ==), !=, <=, >=, <, and >. The version number supplied on the right side of the operator consists of a major version number, an optional decimal point, and an optional minor version (e.g., 7.1). If the minor version is omitted, it is assumed to be 0. The operator may be separated from the string version and from the version number argument by whitespace. application The application construct is used to include application- specific settings. Each program using the readline library sets the application name, and an initialization file can test for a particular value. 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 variable The variable construct provides simple equality tests for readline variables and values. The permitted comparison operators are =, ==, and !=. The variable name must be separated from the comparison operator by whitespace; the operator may be separated from the value on the right hand side by whitespace. Both string and boolean vari- ables may be tested. Boolean variables must be tested against the values on and off. $endif This command, as seen in the previous example, terminates an $if command. $else Commands in this branch of the $if directive are executed if the test fails. $include This directive takes a single filename as an argument and reads commands and bindings from that file. For example, the follow- ing directive would read /etc/inputrc: $include /etc/inputrc SEARCHING 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, read- line 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. To search backward in the history for a particular string, type C-r. Typing C-s searches forward through the history. The characters present in the value of the isearch-terminators variable are used to terminate an incremental search. If that variable has not been assigned a value the Escape and C-J characters will terminate an incremental search. C-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 C-s or C-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 exe- cute that command. For instance, a newline will terminate the search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing. 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 be part of the contents of the current line. EDITING COMMANDS 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 accom- panying key sequence are unbound by default. In the following descriptions, point refers to the current cursor posi- tion, and mark refers to a cursor position saved by the set-mark com- mand. The text between the point and mark is referred to as the region. 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 alphanumeric characters (letters and digits). backward-word (M-b) Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits). previous-screen-line Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width. next-screen-line Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if the length of the current Readline line is not greater than the length of the prompt plus the screen width. clear-screen (C-l) Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the screen. redraw-current-line Refresh the current line. Commands for Manipulating the History accept-line (Newline, Return) Accept the line regardless of where the cursor is. If this line is non-empty, it may be added to the history list for future recall with add_history(). If the line is a modified history line, the history line is restored to its original state. previous-history (C-p) Fetch the previous command from the history list, moving back in the list. next-history (C-n) Fetch the next command from the history list, moving forward in the 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 currently being entered. 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 history as necessary. This is an incremental search. 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. non-incremental-forward-search-history (M-n) Search forward through the history using a non-incremental search for a string supplied by the user. history-search-backward Search backward through the history for the string of characters between the start of the current line and the current cursor position (the point). The search string must match at the beginning of a history line. This is a non-incremental search. history-search-forward Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. history-substring-search-backward Search backward through the history for the string of characters between the start of the current line and the current cursor position (the point). The search string may match anywhere in a history line. This is a non-incremental search. history-substring-search-forward Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non- incremental search. yank-nth-arg (M-C-y) Insert the first argument to the previous command (usually the second word on the previous line) at point. 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. Once the argument n is computed, the argument is extracted as if the "!n" history expansion had been specified. yank-last-arg (M-., M-_) Insert the last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly like yank-nth-arg. Successive calls to yank-last-arg move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, as if the "!$" history expansion had been specified. Commands for Changing Text end-of-file (usually C-d) The character indicating end-of-file as set, for example, by ``stty''. If this character is read when there are no charac- ters on the line, and point is at the beginning of the line, Readline interprets it as the end of input and returns EOF. delete-char (C-d) Delete the character at point. If this function is bound to the same character as the tty EOF character, as C-d commonly is, see above for the effects. backward-delete-char (Rubout) Delete the character behind the cursor. When given a numeric argument, save the deleted text on the kill ring. forward-backward-delete-char Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cur- sor is deleted. quoted-insert (C-q, C-v) Add the next character that you type to the line verbatim. This is how to insert characters like C-q, for example. tab-insert (M-TAB) Insert a tab character. self-insert (a, b, A, 1, !, ...) Insert the character typed. transpose-chars (C-t) Drag the character before point forward over the character at point, moving point forward as well. If point is at the end of the line, then this transposes the two characters before point. Negative arguments have no effect. transpose-words (M-t) Drag the word before point past the word after point, moving point over that word as well. If point is at the end of the line, this transposes the last two words on the line. upcase-word (M-u) Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move point. downcase-word (M-l) Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move point. capitalize-word (M-c) Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move point. overwrite-mode Toggle overwrite mode. With an explicit positive numeric argu- ment, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only emacs mode; vi mode does overwrite differently. Each call to readline() starts in insert mode. In overwrite mode, charac- ters bound to self-insert replace the text at point rather than pushing the text to the right. Characters bound to back- ward-delete-char replace the character before point with a space. By default, this command is unbound. Killing and Yanking kill-line (C-k) Kill the text from point 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 point to the beginning of the line. The killed text is saved on the kill-ring. kill-whole-line Kill all characters on the current line, no matter where point is. kill-word (M-d) Kill from point 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 forward-word. backward-kill-word (M-Rubout) Kill the word behind point. Word boundaries are the same as those used by backward-word. unix-word-rubout (C-w) Kill the word behind point, using white space as a word bound- ary. The killed text is saved on the kill-ring. unix-filename-rubout Kill the word behind point, using white space and the slash character as the word boundaries. The killed text is saved on the kill-ring. delete-horizontal-space (M-\) Delete all spaces and tabs around point. kill-region Kill the text between the point and mark (saved cursor posi- tion). This text is referred to as the region. copy-region-as-kill Copy the text in the region to the kill buffer. copy-backward-word Copy the word before point to the kill buffer. The word bound- aries are the same as backward-word. copy-forward-word Copy the word following point to the kill buffer. The word boundaries are the same as forward-word. yank (C-y) Yank the top of the kill ring into the buffer at point. yank-pop (M-y) Rotate the kill ring, and yank the new top. Only works follow- ing yank or yank-pop. 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 fol- lowed 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 argu- ment count four, a second time makes the argument count sixteen, and so on. Completing complete (TAB) Attempt to perform completion on the text before point. The actual completion performed is application-specific. Bash, for instance, attempts completion 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 completion is attempted. Gdb, on the other hand, allows completion of program functions and variables, and only attempts filename completion under certain circumstances. possible-completions (M-?) List the possible completions of the text before point. When displaying completions, readline sets the number of columns used for display to the value of completion-display-width, the value of the environment variable COLUMNS, or the screen width, in that order. insert-completions (M-*) Insert all completions of the text before point that would have been generated by possible-completions. menu-complete Similar to complete, but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of menu-complete steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of bell-style) and the original text is restored. An argument of n moves n positions forward in the list of matches; a negative argument may be used to move backward through the list. This command is intended to be bound to TAB, but is unbound by default. menu-complete-backward Identical to menu-complete, but moves backward through the list of possible completions, as if menu-complete had been given a negative argument. This command is unbound by default. delete-char-or-list Deletes the character under the cursor if not at the beginning or end of the line (like delete-char). If at the end of the line, behaves identically to possible-completions. 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 store the definition. call-last-kbd-macro (C-x e) Re-execute the last keyboard macro defined, by making the char- acters in the macro appear as if typed at the keyboard. print-last-kbd-macro () Print the last keyboard macro defined in a format suitable for the inputrc file. Miscellaneous 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-lowercase-version (M-A, M-B, M-x, ...) If the metafied character x is uppercase, run the command that is bound to the corresponding metafied lowercase character. The behavior is undefined if x is already lowercase. prefix-meta (ESC) Metafy the next character typed. ESC f is equivalent to Meta-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 executing the undo command enough times to return the line to its initial state. tilde-expand (M-&) Perform tilde expansion on the current word. set-mark (C-@, M-) Set the mark to the 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 occur- rences. character-search-backward (M-C-]) A character is read and point is moved to the previous occur- rence of that character. A negative count searches for subse- quent occurrences. skip-csi-sequence Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is bound to "\[", keys producing such sequences will have no effect unless explicitly bound to a readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. insert-comment (M-#) Without a numeric argument, the value of the readline com- ment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value of comment-begin, the value is inserted, other- wise the characters in comment-begin are deleted from the begin- ning of the line. In either case, the line is accepted as if a newline had been typed. The default value of comment-begin makes the current line a shell comment. If a numeric argument causes the comment character to be removed, the line will be executed by the shell. dump-functions Print all of the functions and their key bindings to the read- line output stream. If a numeric argument is supplied, the out- put is formatted in such a way that it can be made part of an inputrc file. 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. dump-macros Print all of the readline key sequences bound to macros and the strings they output. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an inputrc file. emacs-editing-mode (C-e) When in vi command mode, this causes a switch to emacs editing mode. vi-editing-mode (M-C-j) When in emacs editing mode, this causes a switch to vi editing mode. DEFAULT KEY BINDINGS The following is a list of the default emacs and vi bindings. Charac- ters with the eighth bit set are written as M-, and are referred to as metafied characters. The printable ASCII characters not mentioned in the list of emacs standard bindings are bound to the self-insert function, which just inserts the given character into the input line. In vi insertion mode, all characters not specifically men- tioned are bound to self-insert. Characters assigned to signal genera- tion by stty(1) or the terminal driver, such as C-Z or C-C, retain that function. Upper and lower case metafied characters are bound to the same function in the emacs mode meta keymap. The remaining characters are unbound, which causes readline to ring the bell (subject to the setting of the bell-style variable). Emacs Mode Emacs Standard bindings "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 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 "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-kill-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 VI Mode bindings 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 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 "C-_" vi-undo " " 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 "^" 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" vi-undo "w" vi-next-word "x" vi-delete "y" vi-yank-to "|" vi-column "~" vi-change-case SEE ALSO The Gnu Readline Library, Brian Fox and Chet Ramey The Gnu History Library, Brian Fox and Chet Ramey bash(1) FILES ~/.inputrc Individual readline initialization file AUTHORS Brian Fox, Free Software Foundation bfox@gnu.org Chet Ramey, Case Western Reserve University chet.ramey@case.edu BUG REPORTS If you find a bug in readline, 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 readline library that you have. Once you have determined that a bug actually exists, mail a bug report to bug-readline@gnu.org. If you have a fix, you are welcome to mail that as well! Suggestions and `philosophical' bug reports may be mailed to bug-readline@gnu.org or posted to the Usenet newsgroup gnu.bash.bug. Comments and bug reports concerning this manual page should be directed to chet.ramey@case.edu. BUGS It's too big and too slow. GNU Readline 7.0 2017 December 28 READLINE(3) readline-8.0/doc/rluser.texi000664 000436 000024 00000257003 13355732013 016214 0ustar00chetstaff000000 000000 @comment %**start of header (This is for running Texinfo on a region.) @setfilename rluser.info @comment %**end of header (This is for running Texinfo on a region.) @ignore This file documents the end user interface to the GNU command line editing features. It is to be an appendix to manuals for programs which 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--2016 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to process this file through Tex and print the results, provided the printed document carries copying permission notice identical to this one except for the removal of this paragraph (this paragraph not being relevant to the printed manual). Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the GNU Copyright statement is available to the distributee, and 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. @end ignore @comment If you are including this manual as an appendix, then set the @comment variable readline-appendix. @ifclear BashFeatures @defcodeindex bt @end ifclear @node Command Line Editing @chapter Command Line Editing This chapter describes the basic features of the @sc{gnu} command line editing interface. @ifset BashFeatures Command line editing is provided by the Readline library, which is used by several different programs, including Bash. Command line editing is enabled by default when using an interactive shell, unless the @option{--noediting} option is supplied at shell invocation. Line editing is also used when using the @option{-e} option to the @code{read} builtin command (@pxref{Bash Builtins}). By default, the line editing commands are similar to those of Emacs. A vi-style line editing interface is also available. Line editing can be enabled at any time using the @option{-o emacs} or @option{-o vi} options to the @code{set} builtin command (@pxref{The Set Builtin}), or disabled using the @option{+o emacs} or @option{+o vi} options to @code{set}. @end ifset @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. @ifset BashFeatures * Programmable Completion:: How to specify the possible completions for a specific command. * Programmable Completion Builtins:: Builtin commands to specify how to complete arguments for a particular command. * A Programmable Completion Example:: An example shell function for generating possible completions. @end ifset @end menu @node Introduction and Notation @section Introduction to Line Editing The following paragraphs describe the notation used to represent keystrokes. The text @kbd{C-k} is read as `Control-K' and describes the character produced when the @key{k} key is pressed while the Control key is depressed. The text @kbd{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 pressed. The Meta key is labeled @key{ALT} on many keyboards. On keyboards with two keys labeled @key{ALT} (usually to either side of the space bar), the @key{ALT} on the left side is generally set to work as a Meta key. The @key{ALT} key on the right may also be configured to work as a Meta key or may be configured as some other modifier, such as a Compose key for typing accented characters. If you do not have a Meta or @key{ALT} key, or another key working as a Meta key, the identical keystroke can be generated by typing @key{ESC} @emph{first}, and then typing @key{k}. Either process is known as @dfn{metafying} the @key{k} key. The text @kbd{M-C-k} is read as `Meta-Control-k' and describes the character produced by @dfn{metafying} @kbd{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}). If your keyboard lacks a @key{LFD} key, typing @key{C-j} will produce the desired character. The @key{RET} key may be labeled @key{Return} or @key{Enter} on some keyboards. @node Readline Interaction @section Readline Interaction @cindex interaction, readline 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 @key{RET}. You do not have to be at the end of the line to press @key{RET}; 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. @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 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 mistype a character, and not notice the error until you have typed several other characters. In that case, you can type @kbd{C-b} to move the cursor to the left, and then correct your mistake. Afterwards, you can move the cursor to the right with @kbd{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 bare essentials for editing the text of an input line follows. @table @asis @item @kbd{C-b} Move back one character. @item @kbd{C-f} Move forward one character. @item @key{DEL} or @key{Backspace} Delete the character to the left of the cursor. @item @kbd{C-d} Delete the character underneath the cursor. @item @w{Printing characters} Insert the character into the line at the cursor. @item @kbd{C-_} or @kbd{C-x C-u} Undo the last editing command. You can undo all the way back to an empty line. @end table @noindent (Depending on your configuration, the @key{Backspace} key be set to delete the character to the left of the cursor and the @key{DEL} key set to delete the character underneath the cursor, like @kbd{C-d}, rather than the character to the left of the cursor.) @node Readline Movement Commands @subsection Readline Movement Commands The above table describes the most basic 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 @kbd{C-b}, @kbd{C-f}, @kbd{C-d}, and @key{DEL}. Here are some commands for moving more rapidly about the line. @table @kbd @item C-a Move to the start of the line. @item C-e Move to the end of the line. @item M-f Move forward a word, where a word is composed of letters and digits. @item M-b Move backward a word. @item C-l Clear the screen, reprinting the current line at the top. @end table Notice how @kbd{C-f} moves forward a character, while @kbd{M-f} moves forward a word. It is a loose convention that control keystrokes operate on characters while meta keystrokes operate on words. @node Readline Killing Commands @subsection Readline Killing Commands @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) it back into the line. (`Cut' and `paste' are more recent jargon for `kill' and `yank'.) 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 @dfn{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. @cindex kill ring Here is the list of commands for killing text. @table @kbd @item C-k Kill the text from the current cursor position to the end of the line. @item 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 those used by @kbd{M-f}. @item M-@key{DEL} Kill from the cursor the start of the current word, or, if between words, to the start of the previous word. Word boundaries are the same as those used by @kbd{M-b}. @item C-w Kill from the cursor to the previous whitespace. This is different than @kbd{M-@key{DEL}} because the word boundaries differ. @end table Here is how to @dfn{yank} the text back into the line. Yanking means to copy the most-recently-killed text from the kill buffer. @table @kbd @item C-y Yank the most recently killed text back into the buffer at the cursor. @item M-y Rotate the kill-ring, and yank the new top. You can only do this if the prior command is @kbd{C-y} or @kbd{M-y}. @end table @node Readline Arguments @subsection Readline Arguments You can pass numeric arguments to Readline commands. Sometimes the 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 @samp{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' typed is a minus sign (@samp{-}), 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 @kbd{C-d} command an argument of 10, you could type @samp{M-1 0 C-d}, which will delete the next ten characters on the input line. @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: @dfn{incremental} and @dfn{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. To search backward in the history for a particular string, type @kbd{C-r}. Typing @kbd{C-s} searches forward through the history. The characters present in the value of the @code{isearch-terminators} variable are used to terminate an incremental search. If that variable has not been assigned a value, the @key{ESC} and @kbd{C-J} characters will terminate an incremental search. @kbd{C-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 @kbd{C-r} or @kbd{C-s} 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 @key{RET} will terminate the search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing. Readline remembers the last incremental search string. If two @kbd{C-r}s are typed without any intervening characters defining a new search string, any remembered search string is used. 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 be 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 keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by putting commands in an @dfn{inputrc} file, conventionally in his home directory. The name of this @ifset BashFeatures file is taken from the value of the shell variable @env{INPUTRC}. If @end ifset @ifclear BashFeatures file is taken from the value of the environment variable @env{INPUTRC}. If @end ifclear that variable is unset, the default is @file{~/.inputrc}. If that file does not exist or cannot be read, the ultimate default is @file{/etc/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 @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 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 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 @samp{#} are comments. Lines beginning with a @samp{$} indicate conditional constructs (@pxref{Conditional Init Constructs}). Other lines denote variable settings and key bindings. @table @asis @item Variable Settings You can modify the run-time behavior of Readline by altering the values of variables in Readline using the @code{set} command within the init file. The syntax is simple: @example set @var{variable} @var{value} @end example @noindent Here, for example, is how to change from the default Emacs-like key binding to use @code{vi} line editing commands: @example set editing-mode vi @end example Variable names and values, where appropriate, are recognized without regard to case. Unrecognized variable names are ignored. Boolean variables (those that can be set to on or off) are set to on if the value is null or empty, @var{on} (case-insensitive), or 1. Any other value results in the variable being set to off. @ifset BashFeatures The @w{@code{bind -V}} command lists the current Readline variable names and values. @xref{Bash Builtins}. @end ifset A great deal of run-time behavior is changeable with the following variables. @cindex variables, readline @table @code @item bell-style @vindex bell-style Controls what happens when Readline wants to ring the terminal bell. 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 bind-tty-special-chars @vindex bind-tty-special-chars If set to @samp{on} (the default), Readline attempts to bind the control characters treated specially by the kernel's terminal driver to their Readline equivalents. @item blink-matching-paren @vindex blink-matching-paren If set to @samp{on}, Readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. The default is @samp{off}. @item colored-completion-prefix @vindex colored-completion-prefix If set to @samp{on}, when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the @env{LS_COLORS} environment variable. The default is @samp{off}. @item colored-stats @vindex colored-stats If set to @samp{on}, Readline displays possible completions using different colors to indicate their file type. The color definitions are taken from the value of the @env{LS_COLORS} environment variable. The default is @samp{off}. @item comment-begin @vindex comment-begin The string to insert at the beginning of the line when the @code{insert-comment} command is executed. The default value is @code{"#"}. @item completion-display-width @vindex completion-display-width The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is -1. @item completion-ignore-case @vindex completion-ignore-case If set to @samp{on}, Readline performs filename matching and completion in a case-insensitive fashion. The default value is @samp{off}. @item completion-map-case @vindex completion-map-case If set to @samp{on}, and @var{completion-ignore-case} is enabled, Readline treats hyphens (@samp{-}) and underscores (@samp{_}) as equivalent when performing case-insensitive filename matching and completion. The default value is @samp{off}. @item completion-prefix-display-length @vindex completion-prefix-display-length The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions. @item completion-query-items @vindex completion-query-items The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. 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. This variable must be set to an integer value greater than or equal to 0. A negative value means Readline should never ask. The default limit is @code{100}. @item convert-meta @vindex convert-meta If set to @samp{on}, Readline will convert characters with the eighth bit set to an @sc{ascii} key sequence by stripping the eighth bit and prefixing an @key{ESC} character, converting them to a meta-prefixed key sequence. The default value is @samp{on}, but will be set to @samp{off} if the locale is one that contains eight-bit characters. @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 echo-control-characters @vindex echo-control-characters When set to @samp{on}, on operating systems that indicate they support it, readline echoes a character corresponding to a signal generated from the keyboard. The default is @samp{on}. @item editing-mode @vindex editing-mode The @code{editing-mode} variable controls which default set of key bindings is used. 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 emacs-mode-string @vindex emacs-mode-string If the @var{show-mode-in-prompt} variable is enabled, this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is @samp{@@}. @item enable-bracketed-paste @vindex enable-bracketed-paste When set to @samp{On}, Readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a single string of characters, instead of treating each character as if it had been read from the keyboard. This can prevent pasted characters from being interpreted as editing commands. The default is @samp{off}. @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 enable-meta-key When set to @samp{on}, Readline will try to enable any meta modifier key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. The default is @samp{on}. @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 history-preserve-point @vindex history-preserve-point If set to @samp{on}, the history code attempts to place the point (the current cursor position) at the same location on each history line retrieved with @code{previous-history} or @code{next-history}. The default is @samp{off}. @item history-size @vindex history-size Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. If an attempt is made to set @var{history-size} to a non-numeric value, the maximum number of history entries will be set to 500. @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 being edited 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 input-meta @vindex input-meta @vindex meta-flag If set to @samp{on}, Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The default value is @samp{off}, but Readline will set it to @samp{on} if the locale contains eight-bit characters. The name @code{meta-flag} is a synonym for this variable. @item isearch-terminators @vindex isearch-terminators The string of characters that should terminate an incremental search without subsequently executing the character as a command (@pxref{Searching}). If this variable has not been given a value, the characters @key{ESC} and @kbd{C-J} will terminate an incremental search. @item keymap @vindex keymap Sets Readline's idea of the current keymap for key binding commands. Built-in @code{keymap} names are @code{emacs}, @code{emacs-standard}, @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{vi-move} is also a synonym); @code{emacs} is equivalent to @code{emacs-standard}. Applications may add additional names. The default value is @code{emacs}. The value of the @code{editing-mode} variable also affects the default keymap. @item keyseq-timeout Specifies the duration Readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, Readline will use the shorter but complete key sequence. Readline uses this value to determine whether or not input is available on the current input source (@code{rl_instream} by default). The value is specified in milliseconds, so a value of 1000 means that Readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, Readline will wait until another key is pressed to decide which key sequence to complete. The default value is @code{500}. @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}, causes Readline to display an asterisk (@samp{*}) at the start of history lines which have been modified. This variable is @samp{off} by default. @item mark-symlinked-directories @vindex mark-symlinked-directories If set to @samp{on}, completed names which are symbolic links to directories have a slash appended (subject to the value of @code{mark-directories}). The default is @samp{off}. @item match-hidden-files @vindex match-hidden-files This variable, when set to @samp{on}, causes Readline to match files whose names begin with a @samp{.} (hidden files) when performing filename completion. If set to @samp{off}, the leading @samp{.} must be supplied by the user in the filename to be completed. This variable is @samp{on} by default. @item menu-complete-display-prefix @vindex menu-complete-display-prefix If set to @samp{on}, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. The default is @samp{off}. @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}, but Readline will set it to @samp{on} if the locale contains eight-bit characters. @item page-completions @vindex page-completions If set to @samp{on}, Readline uses an internal @code{more}-like pager to display a screenful of possible completions at a time. This variable is @samp{on} by default. @item print-completions-horizontally If set to @samp{on}, Readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. The default is @samp{off}. @item revert-all-at-newline @vindex revert-all-at-newline If set to @samp{on}, Readline will undo all changes to history lines before returning when @code{accept-line} is executed. By default, history lines may be modified and retain individual undo lists across calls to @code{readline}. 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 @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 @samp{off}. @item show-all-if-unmodified @vindex show-all-if-unmodified This alters the default behavior of the completion functions in a fashion similar to @var{show-all-if-ambiguous}. If set to @samp{on}, words which have more than one possible completion without any possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. The default value is @samp{off}. @item show-mode-in-prompt @vindex show-mode-in-prompt If set to @samp{on}, add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable (e.g., @var{emacs-mode-string}). The default value is @samp{off}. @item skip-completed-text @vindex skip-completed-text If set to @samp{on}, this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If enabled, readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. For instance, if this is enabled, attempting completion when the cursor is after the @samp{e} in @samp{Makefile} will result in @samp{Makefile} rather than @samp{Makefilefile}, assuming there is a single possible completion. The default value is @samp{off}. @item vi-cmd-mode-string @vindex vi-cmd-mode-string If the @var{show-mode-in-prompt} variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is @samp{(cmd)}. @item vi-ins-mode-string @vindex vi-ins-mode-string If the @var{show-mode-in-prompt} variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is @samp{(ins)}. @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 @item Key Bindings The syntax for controlling key bindings in the init file is simple. First you need to find the name of the command that you want to change. The following sections contain tables of the command name, the default keybinding, if any, and a short description of what the command does. Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, a colon, and then the name of the command. There can be no space between the key name and the colon -- that will be interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a @var{macro}). @ifset BashFeatures The @w{@code{bind -p}} command displays Readline function names and bindings in a format that can put directly into an initialization file. @xref{Bash Builtins}. @end ifset @table @asis @item @w{@var{keyname}: @var{function-name} or @var{macro}} @var{keyname} is the name of a key spelled out in English. For example: @example Control-u: universal-argument Meta-Rubout: backward-kill-word Control-o: "> output" @end example In the example above, @kbd{C-u} is bound to the function @code{universal-argument}, @kbd{M-DEL} is bound to the function @code{backward-kill-word}, and @kbd{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). A number of symbolic character names are recognized while processing this key binding syntax: @var{DEL}, @var{ESC}, @var{ESCAPE}, @var{LFD}, @var{NEWLINE}, @var{RET}, @var{RETURN}, @var{RUBOUT}, @var{SPACE}, @var{SPC}, and @var{TAB}. @item @w{"@var{keyseq}": @var{function-name} or @var{macro}} @var{keyseq} differs from @var{keyname} above in that strings denoting an entire key sequence can be specified, by placing the key sequence in double quotes. Some @sc{gnu} Emacs style key escapes can be used, as in the following example, but the special character names are not recognized. @example "\C-u": universal-argument "\C-x\C-r": re-read-init-file "\e[11~": "Function Key 1" @end example In the above example, @kbd{C-u} is again bound to the function @code{universal-argument} (just as it was in the first example), @samp{@kbd{C-x} @kbd{C-r}} is bound to the function @code{re-read-init-file}, and @samp{@key{ESC} @key{[} @key{1} @key{1} @key{~}} is bound to insert the text @samp{Function Key 1}. @end table The following @sc{gnu} Emacs style escape sequences are available when specifying key sequences: @table @code @item @kbd{\C-} control prefix @item @kbd{\M-} meta prefix @item @kbd{\e} an escape character @item @kbd{\\} backslash @item @kbd{\"} @key{"}, a double quotation mark @item @kbd{\'} @key{'}, a single quote or apostrophe @end table In addition to the @sc{gnu} Emacs style escape sequences, a second set of backslash escapes is available: @table @code @item \a alert (bell) @item \b backspace @item \d delete @item \f form feed @item \n newline @item \r carriage return @item \t horizontal tab @item \v vertical tab @item \@var{nnn} the eight-bit character whose value is the octal value @var{nnn} (one to three digits) @item \x@var{HH} the eight-bit character whose value is the hexadecimal value @var{HH} (one or two hex digits) @end table When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a function name. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other character in the macro text, including @samp{"} and @samp{'}. For example, the following binding will make @samp{@kbd{C-x} \} insert a single @samp{\} into the line: @example "\C-x\\": "\\" @end example @end table @node Conditional Init Constructs @subsection 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 four parser directives used. @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 Readline. The text of the test, after any comparison operator, extends to the end of the line; unless otherwise noted, no characters are required to isolate it. @table @code @item mode The @code{mode=} form of the @code{$if} directive is used to test whether Readline is in @code{emacs} or @code{vi} mode. This may be used in conjunction with the @samp{set keymap} command, for instance, to set bindings in the @code{emacs-standard} and @code{emacs-ctlx} keymaps only if Readline is starting out in @code{emacs} mode. @item term The @code{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 @samp{=} is tested against both the full name of the terminal and the portion of the terminal name before the first @samp{-}. This allows @code{sun} to match both @code{sun} and @code{sun-cmd}, for instance. @item version The @code{version} test may be used to perform comparisons against specific Readline versions. The @code{version} expands to the current Readline version. The set of comparison operators includes @samp{=} (and @samp{==}), @samp{!=}, @samp{<=}, @samp{>=}, @samp{<}, and @samp{>}. The version number supplied on the right side of the operator consists of a major version number, an optional decimal point, and an optional minor version (e.g., @samp{7.1}). If the minor version is omitted, it is assumed to be @samp{0}. The operator may be separated from the string @code{version} and from the version number argument by whitespace. The following example sets a variable if the Readline version being used is 7.0 or newer: @example $if version >= 7.0 set show-mode-in-prompt on $endif @end example @item application The @var{application} construct is used to include application-specific settings. Each program using the Readline library sets the @var{application name}, and you can test for a particular value. 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 # Quote the current or previous word "\C-xq": "\eb\"\ef\"" $endif @end example @item variable The @var{variable} construct provides simple equality tests for Readline variables and values. The permitted comparison operators are @samp{=}, @samp{==}, and @samp{!=}. The variable name must be separated from the comparison operator by whitespace; the operator may be separated from the value on the right hand side by whitespace. Both string and boolean variables may be tested. Boolean variables must be tested against the values @var{on} and @var{off}. The following example is equivalent to the @code{mode=emacs} test described above: @example $if editing-mode == emacs set show-mode-in-prompt on $endif @end example @end table @item $endif This command, as seen in the previous example, terminates an @code{$if} command. @item $else Commands in this branch of the @code{$if} directive are executed if the test fails. @item $include This directive takes a single filename as an argument and reads commands and bindings from that file. For example, the following directive reads from @file{/etc/inputrc}: @example $include /etc/inputrc @end example @end table @node Sample Init File @subsection Sample Init File Here is an example of an @var{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. # # First, include any system-wide bindings and variable # assignments from /etc/Inputrc $include /etc/Inputrc # # 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 @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. @end menu This section describes Readline commands that may be bound to key sequences. @ifset BashFeatures You can list your key bindings by executing @w{@code{bind -P}} or, for a more terse format, suitable for an @var{inputrc} file, @w{@code{bind -p}}. (@xref{Bash Builtins}.) @end ifset Command names without an accompanying key sequence are unbound by default. In the following descriptions, @dfn{point} refers to the current cursor position, and @dfn{mark} refers to a cursor position saved by the @code{set-mark} command. The text between the point and mark is referred to as the @dfn{region}. @node Commands For Moving @subsection Commands For Moving @ftable @code @item beginning-of-line (C-a) Move to the start of the current line. @item end-of-line (C-e) Move to the end of the line. @item forward-char (C-f) Move forward a character. @item backward-char (C-b) Move back a character. @item forward-word (M-f) Move forward to the end of the next word. Words are composed of letters and digits. @item backward-word (M-b) Move back to the start of the current or previous word. Words are composed of letters and digits. @ifset BashFeatures @item shell-forward-word () Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. @item shell-backward-word () Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. @end ifset @item previous-screen-line () Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width. @item next-screen-line () Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if the length of the current Readline line is not greater than the length of the prompt plus the screen width. @item clear-screen (C-l) Clear the screen and redraw the current line, leaving the current line at the top of the screen. @item redraw-current-line () Refresh the current line. By default, this is unbound. @end ftable @node Commands For History @subsection Commands For Manipulating The History @ftable @code @item accept-line (Newline or Return) @ifset BashFeatures Accept the line regardless of where the cursor is. If this line is non-empty, add it to the history list according to the setting of the @env{HISTCONTROL} and @env{HISTIGNORE} variables. If this line is a modified history line, then restore the history line to its original state. @end ifset @ifclear BashFeatures Accept the line regardless of where the cursor is. If this line is non-empty, it may be added to the history list for future recall with @code{add_history()}. If this line is a modified history line, the history line is restored to its original state. @end ifclear @item previous-history (C-p) Move `back' through the history list, fetching the previous command. @item next-history (C-n) Move `forward' through the history list, fetching the next command. @item beginning-of-history (M-<) Move to the first line in the history. @item end-of-history (M->) Move to the end of the input history, i.e., the line currently being entered. @item 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. @item forward-search-history (C-s) Search forward starting at the current line and moving `down' through the history as necessary. This is an incremental search. @item 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. The search string may match anywhere in a history line. @item non-incremental-forward-search-history (M-n) Search forward starting at the current line and moving `down' through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line. @item history-search-forward () Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. 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 point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. @item history-substring-search-forward () Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. @item history-substring-search-backward () Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. @item yank-nth-arg (M-C-y) Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument @var{n}, insert the @var{n}th word from the previous command (the words in the previous command begin with word 0). A negative argument inserts the @var{n}th word from the end of the previous command. Once the argument @var{n} is computed, the argument is extracted as if the @samp{!@var{n}} history expansion had been specified. @item yank-last-arg (M-. or M-_) Insert last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly like @code{yank-nth-arg}. Successive calls to @code{yank-last-arg} move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, as if the @samp{!$} history expansion had been specified. @end ftable @node Commands For Text @subsection Commands For Changing Text @ftable @code @item @i{end-of-file} (usually C-d) The character indicating end-of-file as set, for example, by @code{stty}. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline interprets it as the end of input and returns @sc{eof}. @item delete-char (C-d) Delete the character at point. If this function is bound to the same character as the tty @sc{eof} character, as @kbd{C-d} commonly is, see above for the effects. @item backward-delete-char (Rubout) Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them. @item forward-backward-delete-char () Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key. @item quoted-insert (C-q or C-v) Add the next character typed to the line verbatim. This is how to insert key sequences like @kbd{C-q}, for example. @ifclear BashFeatures @item tab-insert (M-@key{TAB}) Insert a tab character. @end ifclear @item self-insert (a, b, A, 1, !, @dots{}) Insert yourself. @item bracketed-paste-begin () This function is intended to be bound to the "bracketed paste" escape sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters are inserted as if each one was bound to @code{self-insert} instead of executing any editing commands. @item 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 arguments have no effect. @item transpose-words (M-t) Drag the word before point past the word after point, moving point past that word as well. If the insertion point is at the end of the line, this transposes the last two words on the line. @item upcase-word (M-u) Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor. @item downcase-word (M-l) Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor. @item capitalize-word (M-c) Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor. @item overwrite-mode () Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only @code{emacs} mode; @code{vi} mode does overwrite differently. Each call to @code{readline()} starts in insert mode. In overwrite mode, characters bound to @code{self-insert} replace the text at point rather than pushing the text to the right. Characters bound to @code{backward-delete-char} replace the character before point with a space. By default, this command is unbound. @end ftable @node Commands For Killing @subsection Killing And Yanking @ftable @code @item kill-line (C-k) Kill the text from point to the end of the line. @item backward-kill-line (C-x Rubout) Kill backward from the cursor to the beginning of the current line. @item unix-line-discard (C-u) Kill backward from the cursor to the beginning of the current line. @item kill-whole-line () Kill all characters on the current line, no matter where point is. By default, this is unbound. @item kill-word (M-d) Kill from point 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}. @item backward-kill-word (M-@key{DEL}) Kill the word behind point. Word boundaries are the same as @code{backward-word}. @ifset BashFeatures @item shell-kill-word () Kill from point 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{shell-forward-word}. @item shell-backward-kill-word () Kill the word behind point. Word boundaries are the same as @code{shell-backward-word}. @end ifset @item unix-word-rubout (C-w) Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. @item unix-filename-rubout () Kill the word behind point, using white space and the slash character as the word boundaries. 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 in the current region. By default, this command is unbound. @item copy-region-as-kill () Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound. @item copy-backward-word () Copy the word before point to the kill buffer. The word boundaries are the same as @code{backward-word}. By default, this command is unbound. @item copy-forward-word () Copy the word following point to the kill buffer. The word boundaries are the same as @code{forward-word}. By default, this command is unbound. @item yank (C-y) Yank the top of the kill ring into the buffer at point. @item yank-pop (M-y) Rotate the kill-ring, and yank the new top. You can only do this if the prior command is @code{yank} or @code{yank-pop}. @end ftable @node Numeric Arguments @subsection Specifying Numeric Arguments @ftable @code @item digit-argument (@kbd{M-0}, @kbd{M-1}, @dots{} @kbd{M--}) Add this digit to the argument already accumulating, or start a new argument. @kbd{M--} starts a negative argument. @item 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 @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 nor 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. @end ftable @node Commands For Completion @subsection Letting Readline Type For You @ftable @code @item complete (@key{TAB}) Attempt to perform completion on the text before point. The actual completion performed is application-specific. @ifset BashFeatures 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 @ifclear BashFeatures The default is filename completion. @end ifclear @item possible-completions (M-?) List the possible completions of the text before point. When displaying completions, Readline sets the number of columns used for display to the value of @code{completion-display-width}, the value of the environment variable @env{COLUMNS}, or the screen width, in that order. @item insert-completions (M-*) Insert all completions of the text before point that would have been generated by @code{possible-completions}. @item menu-complete () Similar to @code{complete}, but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of @code{menu-complete} steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of @code{bell-style}) and the original text is restored. An argument of @var{n} moves @var{n} positions forward in the list of matches; a negative argument may be used to move backward through the list. This command is intended to be bound to @key{TAB}, but is unbound by default. @item menu-complete-backward () Identical to @code{menu-complete}, but moves backward through the list of possible completions, as if @code{menu-complete} had been given a negative argument. @item delete-char-or-list () Deletes the character under the cursor if not at the beginning or end of the line (like @code{delete-char}). If at the end of the line, behaves identically to @code{possible-completions}. This command is unbound by default. @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, shell 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-@key{TAB}) Attempt completion on the text before point, comparing the text against lines from the history list for possible completion matches. @item dabbrev-expand () Attempt menu 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 insert 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 @subsection Keyboard Macros @ftable @code @item start-kbd-macro (C-x () Begin saving the characters typed into the current keyboard macro. @item end-kbd-macro (C-x )) Stop saving the characters typed into the current keyboard macro and save the definition. @item 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. @item print-last-kbd-macro () Print the last keboard macro defined in a format suitable for the @var{inputrc} file. @end ftable @node Miscellaneous Commands @subsection Some Miscellaneous Commands @ftable @code @item re-read-init-file (C-x C-r) Read in the contents of the @var{inputrc} file, and incorporate any bindings or variable assignments found there. @item abort (C-g) Abort the current editing command and ring the terminal's bell (subject to the setting of @code{bell-style}). @item do-lowercase-version (M-A, M-B, M-@var{x}, @dots{}) If the metafied character @var{x} is upper case, run the command that is bound to the corresponding metafied lower case character. The behavior is undefined if @var{x} is already lower case. @item prefix-meta (@key{ESC}) Metafy the next character typed. This is for keyboards without a meta key. Typing @samp{@key{ESC} f} is equivalent to typing @kbd{M-f}. @item undo (C-_ or C-x C-u) Incremental undo, separately remembered for each line. @item revert-line (M-r) Undo all changes made to this line. This is like executing the @code{undo} command enough times to get back to the beginning. @ifset BashFeatures @item tilde-expand (M-&) @end ifset @ifclear BashFeatures @item tilde-expand (M-~) @end ifclear Perform tilde expansion on the current word. @item set-mark (C-@@) Set the mark to the 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 skip-csi-sequence () Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is bound to "\e[", keys producing such sequences will have no effect unless explicitly bound to a readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. @item insert-comment (M-#) Without a numeric argument, the value of the @code{comment-begin} variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value of @code{comment-begin}, the value is inserted, otherwise the characters in @code{comment-begin} are deleted from the beginning of the line. In either case, the line is accepted as if a newline had been typed. @ifset BashFeatures The default value of @code{comment-begin} causes this command to make the current line a shell comment. If a numeric argument causes the comment character to be removed, the line will be executed by the shell. @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. 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 output. 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-complete-word (M-g) The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to generate a list of matching file names for possible completions. @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. If a numeric argument is supplied, a @samp{*} is appended before pathname expansion. @item glob-list-expansions (C-x g) The list of expansions that would have been generated by @code{glob-expand-word} is displayed, and the line is redrawn. If a numeric argument is supplied, a @samp{*} is appended before pathname expansion. @item display-shell-version (C-x C-v) Display version information about the current instance of Bash. @item shell-expand-line (M-C-e) Expand the line as the shell does. This performs alias and history expansion as well as all of the shell word expansions (@pxref{Shell Expansions}). @item history-expand-line (M-^) Perform history expansion on the current line. @item magic-space () Perform history expansion on the current line and insert a space (@pxref{History Interaction}). @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-. or M-_) A synonym for @code{yank-last-arg}. @item operate-and-get-next (C-o) Accept the current line for execution and fetch the next line relative to the current line from the history for editing. A numeric argument, if supplied, specifies the history entry to use instead of the current line. @item edit-and-execute-command (C-x C-e) Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke @code{$VISUAL}, @code{$EDITOR}, and @code{emacs} as the editor, in that order. @end ifset @ifclear BashFeatures @item emacs-editing-mode (C-e) When in @code{vi} command mode, this causes a switch to @code{emacs} editing mode. @item vi-editing-mode (M-C-j) When in @code{emacs} editing mode, this causes a switch to @code{vi} editing mode. @end ifclear @end ftable @node Readline vi Mode @section Readline vi Mode 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 @sc{posix} standard. @ifset BashFeatures 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} editing modes, use the command @kbd{M-C-j} (bound to emacs-editing-mode when in @code{vi} mode and to vi-editing-mode in @code{emacs} mode). @end ifclear The Readline default is @code{emacs} mode. 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 subsequent lines with @samp{j}, and so forth. @ifset BashFeatures @node Programmable Completion @section Programmable Completion @cindex programmable completion When word completion is attempted for an argument to a command for which a completion specification (a @var{compspec}) has been defined using the @code{complete} builtin (@pxref{Programmable Completion Builtins}), the programmable completion facilities are invoked. First, the command name is identified. If a compspec has been defined for that command, the compspec is used to generate the list of possible completions for the word. If the command word is the empty string (completion attempted at the beginning of an empty line), any compspec defined with the @option{-E} option to @code{complete} is used. If the command word is a full pathname, a compspec for the full pathname is searched for first. If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec defined with the @option{-D} option to @code{complete} is used as the default. If there is no default compspec, Bash attempts alias expansion on the command word as a final resort, and attempts to find a compspec for the command word from any successful expansion Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default Bash completion described above (@pxref{Commands For Completion}) is performed. First, the actions specified by the compspec are used. Only matches which are prefixed by the word being completed are returned. When the @option{-f} or @option{-d} option is used for filename or directory name completion, the shell variable @env{FIGNORE} is used to filter the matches. @xref{Bash Variables}, for a description of @env{FIGNORE}. Any completions specified by a filename expansion pattern to the @option{-G} option are generated next. The words generated by the pattern need not match the word being completed. The @env{GLOBIGNORE} shell variable is not used to filter the matches, but the @env{FIGNORE} shell variable is used. Next, the string specified as the argument to the @option{-W} option is considered. The string is first split using the characters in the @env{IFS} special variable as delimiters. Shell quoting is honored within the string, in order to provide a mechanism for the words to contain shell metacharacters or characters in the value of @env{IFS}. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion, as described above (@pxref{Shell Expansions}). The results are split using the rules described above (@pxref{Word Splitting}). The results of the expansion are prefix-matched against the word being completed, and the matching words become the possible completions. After these matches have been generated, any shell function or command specified with the @option{-F} and @option{-C} options is invoked. When the command or function is invoked, the @env{COMP_LINE}, @env{COMP_POINT}, @env{COMP_KEY}, and @env{COMP_TYPE} variables are assigned values as described above (@pxref{Bash Variables}). If a shell function is being invoked, the @env{COMP_WORDS} and @env{COMP_CWORD} variables are also set. When the function or command is invoked, the first argument ($1) is the name of the command whose arguments are being completed, the second argument ($2) is the word being completed, and the third argument ($3) is the word preceding the word being completed on the current command line. No filtering of the generated completions against the word being completed is performed; the function or command has complete freedom in generating the matches. Any function specified with @option{-F} is invoked first. The function may use any of the shell facilities, including the @code{compgen} and @code{compopt} builtins described below (@pxref{Programmable Completion Builtins}), to generate the matches. It must put the possible completions in the @env{COMPREPLY} array variable, one per array element. Next, any command specified with the @option{-C} option is invoked in an environment equivalent to command substitution. It should print a list of completions, one per line, to the standard output. Backslash may be used to escape a newline, if necessary. After all of the possible completions are generated, any filter specified with the @option{-X} option is applied to the list. The filter is a pattern as used for pathname expansion; a @samp{&} in the pattern is replaced with the text of the word being completed. A literal @samp{&} may be escaped with a backslash; the backslash is removed before attempting a match. Any completion that matches the pattern will be removed from the list. A leading @samp{!} negates the pattern; in this case any completion not matching the pattern will be removed. If the @code{nocasematch} shell option (see the description of @code{shopt} in @ref{The Shopt Builtin}) is enabled, the match is performed without regard to the case of alphabetic characters. Finally, any prefix and suffix specified with the @option{-P} and @option{-S} options are added to each member of the completion list, and the result is returned to the Readline completion code as the list of possible completions. If the previously-applied actions do not generate any matches, and the @option{-o dirnames} option was supplied to @code{complete} when the compspec was defined, directory name completion is attempted. If the @option{-o plusdirs} option was supplied to @code{complete} when the compspec was defined, directory name completion is attempted and any matches are added to the results of the other actions. By default, if a compspec is found, whatever it generates is returned to the completion code as the full set of possible completions. The default Bash completions are not attempted, and the Readline default of filename completion is disabled. If the @option{-o bashdefault} option was supplied to @code{complete} when the compspec was defined, the default Bash completions are attempted if the compspec generates no matches. If the @option{-o default} option was supplied to @code{complete} when the compspec was defined, Readline's default completion will be performed if the compspec (and, if attempted, the default Bash completions) generate no matches. When a compspec indicates that directory name completion is desired, the programmable completion functions force Readline to append a slash to completed names which are symbolic links to directories, subject to the value of the @var{mark-directories} Readline variable, regardless of the setting of the @var{mark-symlinked-directories} Readline variable. There is some support for dynamically modifying completions. This is most useful when used in combination with a default completion specified with @option{-D}. It's possible for shell functions executed as completion handlers to indicate that completion should be retried by returning an exit status of 124. If a shell function returns 124, and changes the compspec associated with the command on which completion is being attempted (supplied as the first argument when the function is executed), programmable completion restarts from the beginning, with an attempt to find a new compspec for that command. This allows a set of completions to be built dynamically as completion is attempted, rather than being loaded all at once. For instance, assuming that there is a library of compspecs, each kept in a file corresponding to the name of the command, the following default completion function would load completions dynamically: @example _completion_loader() @{ . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 @} complete -D -F _completion_loader -o bashdefault -o default @end example @node Programmable Completion Builtins @section Programmable Completion Builtins @cindex completion builtins Three builtin commands are available to manipulate the programmable completion facilities: one to specify how the arguments to a particular command are to be completed, and two to modify the completion as it is happening. @table @code @item compgen @btindex compgen @example @code{compgen [@var{option}] [@var{word}]} @end example Generate possible completion matches for @var{word} according to the @var{option}s, which may be any option accepted by the @code{complete} builtin with the exception of @option{-p} and @option{-r}, and write the matches to the standard output. When using the @option{-F} or @option{-C} options, the various shell variables set by the programmable completion facilities, while available, will not have useful values. The matches will be generated in the same way as if the programmable completion code had generated them directly from a completion specification with the same flags. If @var{word} is specified, only those completions matching @var{word} will be displayed. The return value is true unless an invalid option is supplied, or no matches were generated. @item complete @btindex complete @example @code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DEI] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}] [-F @var{function}] [-C @var{command}] [-X @var{filterpat}] [-P @var{prefix}] [-S @var{suffix}] @var{name} [@var{name} @dots{}]} @code{complete -pr [-DEI] [@var{name} @dots{}]} @end example Specify how arguments to each @var{name} should be completed. If the @option{-p} option is supplied, or if no options are supplied, existing completion specifications are printed in a way that allows them to be reused as input. The @option{-r} option removes a completion specification for each @var{name}, or, if no @var{name}s are supplied, all completion specifications. The @option{-D} option indicates that other supplied options and actions should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. The @option{-E} option indicates that other supplied options and actions should apply to ``empty'' command completion; that is, completion attempted on a blank line. The @option{-I} option indicates that other supplied options and actions should apply to completion on the inital non-assignment word on the line, or after a command delimiter such as @samp{;} or @samp{|}, which is usually command name completion. If multiple options are supplied, the @option{-D} option takes precedence over @option{-E}, and both take precedence over @option{-I}. If any of @option{-D}, @option{-E}, or @option{-I} are supplied, any other @var{name} arguments are ignored; these completions only apply to the case specified by the option. The process of applying these completion specifications when word completion is attempted is described above (@pxref{Programmable Completion}). Other options, if specified, have the following meanings. The arguments to the @option{-G}, @option{-W}, and @option{-X} options (and, if necessary, the @option{-P} and @option{-S} options) should be quoted to protect them from expansion before the @code{complete} builtin is invoked. @table @code @item -o @var{comp-option} The @var{comp-option} controls several aspects of the compspec's behavior beyond the simple generation of completions. @var{comp-option} may be one of: @table @code @item bashdefault Perform the rest of the default Bash completions if the compspec generates no matches. @item default Use Readline's default filename completion if the compspec generates no matches. @item dirnames Perform directory name completion if the compspec generates no matches. @item filenames Tell Readline that the compspec generates filenames, so it can perform any filename-specific processing (like adding a slash to directory names, quoting special characters, or suppressing trailing spaces). This option is intended to be used with shell functions specified with @option{-F}. @item noquote Tell Readline not to quote the completed words if they are filenames (quoting filenames is the default). @item nosort Tell Readline not to sort the list of possible completions alphabetically. @item nospace Tell Readline not to append a space (the default) to words completed at the end of the line. @item plusdirs After any matches defined by the compspec are generated, directory name completion is attempted and any matches are added to the results of the other actions. @end table @item -A @var{action} The @var{action} may be one of the following to generate a list of possible completions: @table @code @item alias Alias names. May also be specified as @option{-a}. @item arrayvar Array variable names. @item binding Readline key binding names (@pxref{Bindable Readline Commands}). @item builtin Names of shell builtin commands. May also be specified as @option{-b}. @item command Command names. May also be specified as @option{-c}. @item directory Directory names. May also be specified as @option{-d}. @item disabled Names of disabled shell builtins. @item enabled Names of enabled shell builtins. @item export Names of exported shell variables. May also be specified as @option{-e}. @item file File names. May also be specified as @option{-f}. @item function Names of shell functions. @item group Group names. May also be specified as @option{-g}. @item helptopic Help topics as accepted by the @code{help} builtin (@pxref{Bash Builtins}). @item hostname Hostnames, as taken from the file specified by the @env{HOSTFILE} shell variable (@pxref{Bash Variables}). @item job Job names, if job control is active. May also be specified as @option{-j}. @item keyword Shell reserved words. May also be specified as @option{-k}. @item running Names of running jobs, if job control is active. @item service Service names. May also be specified as @option{-s}. @item setopt Valid arguments for the @option{-o} option to the @code{set} builtin (@pxref{The Set Builtin}). @item shopt Shell option names as accepted by the @code{shopt} builtin (@pxref{Bash Builtins}). @item signal Signal names. @item stopped Names of stopped jobs, if job control is active. @item user User names. May also be specified as @option{-u}. @item variable Names of all shell variables. May also be specified as @option{-v}. @end table @item -C @var{command} @var{command} is executed in a subshell environment, and its output is used as the possible completions. @item -F @var{function} The shell function @var{function} is executed in the current shell environment. When it is executed, $1 is the name of the command whose arguments are being completed, $2 is the word being completed, and $3 is the word preceding the word being completed, as described above (@pxref{Programmable Completion}). When it finishes, the possible completions are retrieved from the value of the @env{COMPREPLY} array variable. @item -G @var{globpat} The filename expansion pattern @var{globpat} is expanded to generate the possible completions. @item -P @var{prefix} @var{prefix} is added at the beginning of each possible completion after all other options have been applied. @item -S @var{suffix} @var{suffix} is appended to each possible completion after all other options have been applied. @item -W @var{wordlist} The @var{wordlist} is split using the characters in the @env{IFS} special variable as delimiters, and each resultant word is expanded. The possible completions are the members of the resultant list which match the word being completed. @item -X @var{filterpat} @var{filterpat} is a pattern as used for filename expansion. It is applied to the list of possible completions generated by the preceding options and arguments, and each completion matching @var{filterpat} is removed from the list. A leading @samp{!} in @var{filterpat} negates the pattern; in this case, any completion not matching @var{filterpat} is removed. @end table The return value is true unless an invalid option is supplied, an option other than @option{-p} or @option{-r} is supplied without a @var{name} argument, an attempt is made to remove a completion specification for a @var{name} for which no specification exists, or an error occurs adding a completion specification. @item compopt @btindex compopt @example @code{compopt} [-o @var{option}] [-DEI] [+o @var{option}] [@var{name}] @end example Modify completion options for each @var{name} according to the @var{option}s, or for the currently-executing completion if no @var{name}s are supplied. If no @var{option}s are given, display the completion options for each @var{name} or the current completion. The possible values of @var{option} are those valid for the @code{complete} builtin described above. The @option{-D} option indicates that other supplied options should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. The @option{-E} option indicates that other supplied options should apply to ``empty'' command completion; that is, completion attempted on a blank line. The @option{-I} option indicates that other supplied options should apply to completion on the inital non-assignment word on the line, or after a command delimiter such as @samp{;} or @samp{|}, which is usually command name completion. If multiple options are supplied, the @option{-D} option takes precedence over @option{-E}, and both take precedence over @option{-I} The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a @var{name} for which no completion specification exists, or an output error occurs. @end table @node A Programmable Completion Example @section A Programmable Completion Example The most common way to obtain additional completion functionality beyond the default actions @code{complete} and @code{compgen} provide is to use a shell function and bind it to a particular command using @code{complete -F}. The following function provides completions for the @code{cd} builtin. It is a reasonably good example of what shell functions must do when used for completion. This function uses the word passed as @code{$2} to determine the directory name to complete. You can also use the @code{COMP_WORDS} array variable; the current word is indexed by the @code{COMP_CWORD} variable. The function relies on the @code{complete} and @code{compgen} builtins to do much of the work, adding only the things that the Bash @code{cd} does beyond accepting basic directory names: tilde expansion (@pxref{Tilde Expansion}), searching directories in @var{$CDPATH}, which is described above (@pxref{Bourne Shell Builtins}), and basic support for the @code{cdable_vars} shell option (@pxref{The Shopt Builtin}). @code{_comp_cd} modifies the value of @var{IFS} so that it contains only a newline to accommodate file names containing spaces and tabs -- @code{compgen} prints the possible completions it generates one per line. Possible completions go into the @var{COMPREPLY} array variable, one completion per array element. The programmable completion system retrieves the completions from there when the function returns. @example # A completion function for the cd builtin # based on the cd completion function from the bash_completion package _comp_cd() @{ local IFS=$' \t\n' # normalize IFS local cur _skipdot _cdpath local i j k # Tilde expansion, which also expands tilde to full pathname case "$2" in \~*) eval cur="$2" ;; *) cur=$2 ;; esac # no cdpath or absolute pathname -- straight directory completion if [[ -z "$@{CDPATH:-@}" ]] || [[ "$cur" == @@(./*|../*|/*) ]]; then # compgen prints paths one per line; could also use while loop IFS=$'\n' COMPREPLY=( $(compgen -d -- "$cur") ) IFS=$' \t\n' # CDPATH+directories in the current directory if not in CDPATH else IFS=$'\n' _skipdot=false # preprocess CDPATH to convert null directory names to . _cdpath=$@{CDPATH/#:/.:@} _cdpath=$@{_cdpath//::/:.:@} _cdpath=$@{_cdpath/%:/:.@} for i in $@{_cdpath//:/$'\n'@}; do if [[ $i -ef . ]]; then _skipdot=true; fi k="$@{#COMPREPLY[@@]@}" for j in $( compgen -d -- "$i/$cur" ); do COMPREPLY[k++]=$@{j#$i/@} # cut off directory done done $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") ) IFS=$' \t\n' fi # variable names if appropriate shell option set and no completions if shopt -q cdable_vars && [[ $@{#COMPREPLY[@@]@} -eq 0 ]]; then COMPREPLY=( $(compgen -v -- "$cur") ) fi return 0 @} @end example We install the completion function using the @option{-F} option to @code{complete}: @example # Tell readline to quote appropriate and append slashes to directories; # use the bash default completion for other arguments complete -o filenames -o nospace -o bashdefault -F _comp_cd cd @end example @noindent Since we'd like Bash and Readline to take care of some of the other details for us, we use several other options to tell Bash and Readline what to do. The @option{-o filenames} option tells Readline that the possible completions should be treated as filenames, and quoted appropriately. That option will also cause Readline to append a slash to filenames it can determine are directories (which is why we might want to extend @code{_comp_cd} to append a slash if we're using directories found via @var{CDPATH}: Readline can't tell those completions are directories). The @option{-o nospace} option tells Readline to not append a space character to the directory name, in case we want to append to it. The @option{-o bashdefault} option brings in the rest of the "Bash default" completions -- possible completion that Bash adds to the default Readline set. These include things like command name completion, variable completion for words beginning with @samp{@{}, completions containing pathname expansion patterns (@pxref{Filename Expansion}), and so on. Once installed using @code{complete}, @code{_comp_cd} will be called every time we attempt word completion for a @code{cd} command. Many more examples -- an extensive collection of completions for most of the common GNU, Unix, and Linux commands -- are available as part of the bash_completion project. This is installed by default on many GNU/Linux distributions. Originally written by Ian Macdonald, the project now lives at @url{http://bash-completion.alioth.debian.org/}. There are ports for other systems such as Solaris and Mac OS X. An older version of the bash_completion package is distributed with bash in the @file{examples/complete} subdirectory. @end ifset readline-8.0/doc/readline.dvi000664 000436 000000 00001156160 13406221737 016275 0ustar00chetwheel000000 000000 ÷ƒ’À;è TeX output 2018.12.18:1144‹ÿÿÿÿŸòŽ ƒ33 þšà‘GóKÂÖN ¼j cmbx12ëKGNU–ÆqReadline“LibraryŽŽ‘GŸ 0‰±ž¸Ÿ šª’Ï€Úó6Kñ`y ó3 cmr10áEdition–¦f8.0,“for“ó7ßê  b> ó3 cmmi10é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘š7á1ŽŽ¤ 33‘!G1.2‘ ó5Readline‘¦fIn²!teraction‘Rd‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Ô«á1ŽŽ¡‘0G1.2.1‘ ó5Readline–¦fBare“Essen²!tials‘.¶‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘°ýá1ŽŽ¡‘0G1.2.2‘ ó5Readline›¦fMo•²!v“emen“t˜Commands‘B"‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Äiá2ŽŽ¡‘0G1.2.3‘ ó5Readline–¦fKilling“Commands1ž‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘³æá2ŽŽ¡‘0G1.2.4‘ ó5Readline‘¦fArgumen²!ts‘³‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘5cá3ŽŽ¡‘0G1.2.5‘ ó5Searc²!hing–¦ffor“Commands“in“the“History‘i‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ëKá3ŽŽ¡‘!G1.3‘ ó5Readline–¦fInit“File‘§‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘)aá4ŽŽ¡‘0G1.3.1‘ ó5Readline–¦fInit“File“Syn²!tax‘ ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¢]á4ŽŽ¡‘0G1.3.2‘ ó5Conditional–¦fInit“Constructs‘ü‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘~Xá12ŽŽ¡‘0G1.3.3‘ ó5Sample–¦fInit“File‘¾Î‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Aá13ŽŽ¡‘!G1.4‘ ó5Bindable–¦fReadline“Commands‘¯Â‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘2 á16ŽŽ¡‘0G1.4.1‘ ó5Commands–¦fF‘ÿeor“Mo²!ving‘>H‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Àá16ŽŽ¡‘0G1.4.2‘ ó5Commands–¦fF‘ÿeor“Manipulating“The“History‘iò‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ì9á17ŽŽ¡‘0G1.4.3‘ ó5Commands–¦fF›ÿeor“Changing“T˜ext{’‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ýÚá18ŽŽ¡‘0G1.4.4‘ ó5Killing–¦fAnd“Y‘ÿeanking‘šÇ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘á19ŽŽ¡‘0G1.4.5‘ ó5SpMÞecifying–¦fNumeric“Argumen²!ts‘^V‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘àá20ŽŽ¡‘0G1.4.6‘ ó5Letting–¦fReadline“T²!ypMÞe“F›ÿeor“Y˜ou‘ºÒ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘=á21ŽŽ¡‘0G1.4.7‘ ó5KeybMÞoard‘¦fMacrosdI‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘æ‘á21ŽŽ¡‘0G1.4.8‘ ó5Some–¦fMiscellaneous“Commands‘ø&‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘zná22ŽŽ¡‘!G1.5‘ ó5Readline–¦fvi“MoMÞdeE‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘È á23ŽŽŸ33‘Gë]2‘32Programming–ffwith“GNU“Readline‘ב32ëe:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ öOë]24ŽŽ¦‘!Gá2.1‘ ó5Basic‘¦fBeha²!vior‘Òä‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘U,á24ŽŽ¡‘!G2.2‘ ó5Custom‘¦fF‘ÿeunctions‘F·‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Èþá25ŽŽ¡‘0G2.2.1‘ ó5Readline‘¦fT²!ypMÞedefs‘F‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘á26ŽŽ¡‘0G2.2.2‘ ó5W›ÿeriting–¦fa“New“F˜unction‘áÌ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘dá26ŽŽ¡‘!G2.3‘ ó5Readline‘¦fV‘ÿeariablesa‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ãJá27ŽŽ¡‘!G2.4‘ ó5Readline›¦fCon•²!v“enience˜F‘ÿeunctions‘¯À‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘2á32ŽŽ¡‘0G2.4.1‘ ó5Naming–¦fa“F‘ÿeunction‘—Ú‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘"á32ŽŽ¡‘0G2.4.2‘ ó5Selecting–¦fa“Keymap%û‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¨Cá33ŽŽ¡‘0G2.4.3‘ ó5Binding‘¦fKeys‘Ín‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘O¶á34ŽŽ¡‘0G2.4.4‘ ó5AssoMÞciating–¦fF‘ÿeunction“Names“and“Bindings‘'Ñé˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ª á35ŽŽ¡‘0G2.4.5‘ ó5Allo²!wing‘¦fUndoing‘G‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ÉWá36ŽŽ¡‘0G2.4.6‘ ó5Redispla²!y1º‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘´á37ŽŽ¡‘0G2.4.7‘ ó5MoMÞdifying‘¦fT‘ÿeext‘謑é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘jôá39ŽŽ¡‘0G2.4.8‘ ó5Character‘¦fInput‘£‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘%Ôá39ŽŽ¡‘0G2.4.9‘ ó5T‘ÿeerminal‘¦fManagemen²!t‘ ­‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ôá40ŽŽ¡‘0G2.4.10‘ ó5Utilit²!y‘¦fF‘ÿeunctions‘Ýð‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘`7á40ŽŽ¡‘0G2.4.11‘ ó5Miscellaneous‘¦fF‘ÿeunctions‘ÎR‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Pšá42ŽŽ¡‘0G2.4.12‘ ó5Alternate‘¦fIn²!terface‘T‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘š›á43ŽŽ¡‘0G2.4.13‘ ó5A–¦fReadline“Examplesבé˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘öá43ŽŽŽŒ‹ÿÿÿþÌŸò’½š©áiiŽŽŽ ƒ33 ý†ÌÍ‘0G2.4.14‘ ó5Alternate–¦fIn²!terface“Example‘B#‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Äjá45ŽŽ¤ 33‘!G2.5‘ ó5Readline–¦fSignal“Handling‘/O‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘±—á47ŽŽ¡‘!G2.6‘ ó5Custom‘¦fCompleters‘?à‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Â'á50ŽŽ¡‘0G2.6.1‘ ó5Ho²!w–¦fCompleting“W‘ÿeorksh&‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘êná50ŽŽ¡‘0G2.6.2‘ ó5Completion‘¦fF‘ÿeunctions‘R¶‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Ôþá51ŽŽ¡‘0G2.6.3‘ ó5Completion‘¦fV‘ÿeariables‘*Ô‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘­á52ŽŽ¡‘0G2.6.4‘ ó5A–¦fShort“Completion“Example‘Ñ:‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Sá57ŽŽŸ33‘Gë]Apps3endix‘ffAŽ‘wL‹GNU‘œÈF‘þ¦free–œûDos3cumenŒÌtation“License‘È“‘32ëe:Ž‘Q ‘32:Ž‘ @ë]66ŽŽ¤!ÿ‘GConcept‘ffIndex‘#C‘32ëe:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ »ë]74ŽŽ¡‘GF›þ¦function–ffand“V˜ariable“Index‘;¤‘32ëe:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ 1ë]75ŽŽŽŒ‹>•Ÿò’¾6eá1ŽŽŽ ƒ33 ý ÌÍ‘GëT1‘ ¸QCommand–z³Line“EditingŽŽŸn‘GáThis–¦fcš²!hapter“describMÞes“the“basic“features“of“the“ó<Œ-ø ó3 cmcsc10çgnu“ácommand“line“editing“in˜terface.ŽŸ¸ä‘Gë]1.1‘™InŒÌtros3duction–f@to“Line“EditingŽŽŸ33‘GáThe–¦ffolloš²!wing“paragraphs“describMÞe“the“notation“used“to“represen˜t“k˜eystrok˜es.ޤ¥‘!GThe–Yútext›Yùó=ßêset›5?to“`âoná'˜(the“default),‘XôReadline“attempts˜to“bind˜the“con²!trolŽ¡’…³-cš²!haracters–{wtreated‘{vspMÞecially“b˜y“the‘{vk˜ernel's“terminal“driv˜er‘{vto“theirŽ¡’…³-Readline‘¦fequiv‘ÿdDalen²!ts.ަ‘Kâ:âblink-matching-parenŽ¡’…³-áIf–Yåset›Yäto“`âoná',‘†ÄReadline˜attempts“to˜brie y“mo•²!v“e˜the–Yåcursor˜to“anŽ¡’…³-opMÞening–Âparenš²!thesis‘Áwhen“a“closing“paren˜thesis‘Áis“inserted.‘òðTheŽ¡’…³-default–¦fis“`âoffá'.ŽŸ‘Kâ:âcolored-completion-prefixŽ¡’…³-áIf–‡set“to“`âoná',›Wwhen‘‡listing“completions,˜Readline“displa²!ys“the“com-Ž¡’…³-mon– ¤pre x› £of“the˜set“of˜pMÞossible“completions˜using“a˜di eren²!t“color.Ž¡’…³-The–Í color“de nitions“are“tak²!en“from“the“v‘ÿdDalue“of“the“âLS_COLORSŽ¡’…³-áen•²!vironmen“t–¦fv‘ÿdDariable.‘ÝÝThe“default“is“`âoffá'.ަ‘Kâ:âcolored-statsŽ¡’…³-áIf–0*set›0+to“`âoná',‘GÐReadline“displa²!ys˜pMÞossible“completions˜using“di eren²!tŽ¡’…³-colors–´•to›´”indicate“their˜ le“t²!ypMÞe.‘iThe˜color“de nitions˜are“tak²!enŽ¡’…³-from–õ;the›õKi“ákš²!ey“sequence“b˜y“stripping“the“eigh˜th“bit“and“pre xingŽ¡’…³-an–íÎâESC“ác•²!haracter,‘¹con“v“erting–íÎthem“to‘íÍa“meta-pre xed“k²!ey“sequence.Ž¡’…³-The–N½default›N¾v‘ÿdDalue“is“`âoná',‘`Fbut“will“bMÞe˜set“to“`âoffá'˜if“the“loMÞcale˜is“oneŽ¡’…³-that–¦fconš²!tains“eigh˜t-bit“c˜haracters.ަ‘Kâ:âdisable-completionŽ¡’…³-áIf–gset“to–g`âOná',‘—?Readline“will–ginhibit“w²!ord“completion.‘èCompletionŽ¡’…³-cš²!haracters–!Ÿwill“bMÞe‘!žinserted“in˜to“the“line“as“if‘!žthey“had“bšMÞeen“mapp˜edŽ¡’…³-to–¦fâself-insertá.‘ÝÝThe“default“is“`âoffá'.ަ‘Kâ:âecho-control-charactersŽ¡’…³-áWhen–¡îset›¡ïto“`âoná',‘¢Óon˜opMÞerating“systems˜that“indicate˜they“suppMÞortŽ¡’…³-it,‘Òýreadline‘Êecš²!hoMÞes–Êa“c˜haracter›ÊcorrespMÞonding“to“a˜signal“generatedŽ¡’…³-from–¦fthe“k²!eybMÞoard.‘ÝÝThe“default“is“`âoná'.ަ‘Kâ:âediting-modeŽ¡’…³-áThe–rÖâediting-mode“áv‘ÿdDariable“conš²!trols“whic˜h‘r×default“set“of“k˜ey“bind-Ž¡’…³-ings›?is–>used.‘§&By“default,‘#Readline˜starts˜up“in˜Emacs“editing˜moMÞde,Ž¡’…³-where›~«the‘~ªk•²!eystrok“es˜are–~ªmost˜similar˜to“Emacs.‘ПThis“v‘ÿdDariable˜canŽ¡’…³-bMÞe–¦fset“to“either“`âemacsá'“or“`âviá'.ŽŸÛn‘Kâ:âemacs-mode-stringŽ¡’…³-áIf– ·the› ¶åsho²!w-moMÞde-in-prompt‘I·áv‘ÿdDariable“is˜enabled,‘&Kthis“string˜is“dis-Ž¡’…³-pla•²!y“ed–ÃRimmediately›ÃQbMÞefore“the˜last“line“of˜the“primary˜prompt“whenŽ¡’…³-emacs–™Tediting›™UmoMÞde“is˜activ²!e.‘„,The˜v‘ÿdDalue“is“expanded˜lik²!e“a˜k²!ey“bind-Ž¡’…³-ing,‘,êso–Šthe›‹standard“set˜of“meta-˜and“con²!trol˜pre xes“and˜bac²!kslashŽ¡’…³-escapšMÞe–Þ?sequences“is“a²!v‘ÿdDailable.‘›&Use“the“`â\1á'“and‘Þ@`â\2á'“escap˜es“to“b˜eginŽ¡’…³-and–„end›„sequences“of˜non-prinš²!ting“c˜haracters,‘»‰whic˜h“can‘„bMÞe“usedŽ¡’…³-to–zÕem²!bMÞed›zÔa“terminal˜conš²!trol“sequence“in˜to›zÔthe“moMÞde˜string.‘[)TheŽ¡’…³-default–¦fis“`â@á'.ަ‘Kâ:âenable-bracketed-pasteŽ¡’…³-áWhen–ò€set“to“`âOná',‘{Readline“will“con gure“the‘òterminal“in“a“w•²!a“y‘ò€thatŽ¡’…³-will–g"enable“it“to“insert“eacš²!h“paste‘g#in˜to“the“editing“bu er“as“a“singleŽ¡’…³-string–ëàof“cš²!haracters,‘ý>instead“of“treating“eac˜h‘ëßc˜haracter“as“if“it“hadŽ¡’…³-bšMÞeen–ýread‘ýfrom“the“k²!eyb˜oard.‘á¿This“can“prev•²!en“t‘ýpasted‘ýc“haractersŽ¡’…³-from–¦fbMÞeing“in²!terpreted“as“editing“commands.‘ÝÝThe“default“is“`âoffá'.ŽŽŒ‹’úŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’MH7ŽŽŽ ƒ33 ý ÌÍ‘Kâ:âenable-keypadޤ 33’…³-áWhen–Ìïset“to“`âoná',‘ømReadline“will“try‘Ìîto“enable“the“application“k²!eypadŽ¡’…³-when–1Ûit›1Üis“called.‘·Some“systems“need˜this“to˜enable“the˜arroš²!w“k˜eys.Ž¡’…³-The–¦fdefault“is“`âoffá'.Ž©¾-‘Kâ:âenable-meta-keyŽ¡’…³-áWhen–ÇJset›ÇIto“`âoná',‘‚Readline˜will“try“to˜enable“an²!y˜meta“moMÞdi erŽ¡’…³-k²!ey–Ÿthe› terminal“claims“to˜suppMÞort“when“it“is˜called.‘û‰On“man²!yŽ¡’…³-terminals,‘^=the–9ymeta“kš²!ey“is“used“to“send“eigh˜t-bit“c˜haracters.‘—TheŽ¡’…³-default–¦fis“`âoná'.ަ‘Kâ:âexpand-tildeŽ¡’…³-áIf–Pset“to›P`âoná',‘a[tilde“expansion“is“pMÞerformed˜when“Readline“attemptsŽ¡’…³-w²!ord–¦fcompletion.‘ÝÝThe“default“is“`âoffá'.ަ‘Kâ:âhistory-preserve-pointŽ¡’…³-áIf–œset“to›`âoná',‘Zéthe“history“coMÞde“attempts“to“place˜the“pMÞoin²!t“(theŽ¡’…³-curren²!t–;kcursor›;jpMÞosition)“at˜the“same“loMÞcation˜on“eac²!h˜history“lineŽ¡’…³-retriev²!ed–^Éwith“âprevious-history“áor‘^Êânext-historyá.‘The“defaultŽ¡’…³-is‘¦f`âoffá'.ŽŸ¾,‘Kâ:âhistory-sizeŽ¡’…³-áSet–°ÿthe“maxim•²!um‘°þn“um“bMÞer–°ÿof“history“enš²!tries“sa˜v˜ed‘°þin“the“historyŽ¡’…³-list.‘óIf–mset“to“zero,‘(oanš²!y“existing“history“en˜tries“are‘ndeleted“and“noŽ¡’…³-new–Ïqenš²!tries“are–Ïpsa˜v˜ed.‘XþIf“set–Ïqto“a“v‘ÿdDalue‘Ïpless“than“zero,‘Ù³the“n˜um˜bMÞerŽ¡’…³-of–ª»history›ª¼en²!tries“is˜not“limited.‘êÝBy˜default,‘«Ñthe“n•²!um“bMÞer˜of‘ª»historyŽ¡’…³-en²!tries–ôbis“not›ôalimited.‘ÇÑIf“an˜attempt“is“made“to˜set“åhistory-size‘‘iátoŽ¡’…³-a–ÿònon-nš²!umeric“v‘ÿdDalue,‘Vthe“maxim˜um“n˜um˜bMÞer“of‘ÿóhistory“en˜tries“willŽ¡’…³-bMÞe–¦fset“to“500.ަ‘Kâ:âhorizontal-scroll-modeŽ¡’…³-áThis–NËv‘ÿdDariable›NÌcan“bMÞe“set“to˜either“`âoná'“or“`âoffá'.‘× Setting“it˜to“`âoná'Ž¡’…³-means–$jthat“the“text“of“the‘$ilines“bMÞeing“edited“will“scroll“horizon²!tallyŽ¡’…³-on–ÎÁa›ÎÂsingle“screen“line˜when“they“are“longer˜than“the“width˜of“theŽ¡’…³-screen,›:Åinstead–Ýof“wrapping‘Þon²!to“a“new“screen“line.‘±By“default,˜thisŽ¡’…³-v‘ÿdDariable–¦fis“set“to“`âoffá'.ަ‘Kâ:âinput-metaŽ¡’…³-áIf–¾Ìset›¾Ëto“`âoná',‘ÄåReadline˜will“enable˜eigh²!t-bit“input˜(it“will˜not“clearŽ¡’…³-the–Ã"eighš²!th“bit“in‘Ã!the“c˜haracters“it“reads),‘ Pregardless“of“what“theŽ¡’…³-terminal–C-claims“it“can“suppMÞort.‘ ´3The“default“v‘ÿdDalue“is“`âoffá',‘ª^butŽ¡’…³-Readline–Û‚will“set“it“to“`âoná'‘Ûif“the“loMÞcale“conš²!tains“eigh˜t-bit“c˜haracters.Ž¡’…³-The–¦fname“âmeta-flag“áis“a“synon²!ym“for“this“v‘ÿdDariable.ަ‘Kâ:âisearch-terminatorsŽ¡’…³-áThe–5Ñstring›5Òof“c²!haracters˜that“should“terminate˜an“incremen²!talŽ¡’…³-searcš²!h–ú|without“subsequen˜tly“executing“the“c˜haracter“as“a“commandŽ¡’…³-(see–Z±Section“1.2.5“[Searc²!hing],‘ÇÃpage“3).‘ ú¿If“this“v‘ÿdDariable“has“notŽ¡’…³-bMÞeen–Bggivš²!en“a“v‘ÿdDalue,‘igthe“c˜haracters‘BfâESC“áand“èC-J“áwill“terminate“anŽ¡’…³-incremen•²!tal‘¦fsearc“h.ŽŽŒ‹ ´Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’MH8ŽŽŽ ƒ33 ý ÌÍ‘Kâ:âkeymap‘R÷áSets–¿TReadline's“idea“of“the‘¿Ucurrenš²!t“k˜eymap“for“k˜ey“bindingޤ 33’…³-commands.‘‚¨Built-in–ÝTâkeymap›ÝUánames“are˜âemacsá,‘+âemacs-standardá,Ž¡’…³-âemacs-metaá,– 0âemacs-ctlxá,“âviá,‘ 0âvi-moveá,“âvi-commandá,“andŽ¡’…³-âvi-insertá.‘ 2âvi–aØáis“equiv‘ÿdDalen²!t“to“âvi-command“á(âvi-move‘a×áis“also“aŽ¡’…³-synon•²!ym);‘úaâemacs›‰áis‘‰ equiv‘ÿdDalen“t˜to‘‰ âemacs-standardá.‘…ÔApplicationsŽ¡’…³-ma²!y–ºadd›ºadditional“names.‘èThe“default“v‘ÿdDalue˜is“âemacsá.‘èThe“v‘ÿdDalueŽ¡’…³-of–¦fthe“âediting-mode“áv‘ÿdDariable“also“a ects“the“default“k²!eymap.Ž©Ûo‘Kâ:âkeyseq-timeoutŽ¡’…³-áSpMÞeci es– „the“duration“Readline“will“wš²!ait‘ …for“a“c˜haracter“when“read-Ž¡’…³-ing–—Ían‘—Ìamš²!biguous“k˜ey“sequence›—Ì(one“that˜can“form“a˜complete“k²!eyŽ¡’…³-sequence–ý-using›ý.the“input˜read“so“far,‘ßor˜can“tak²!e˜additional“inputŽ¡’…³-to–óKcomplete“a“longer“kš²!ey“sequence).‘ÄŒIf“no“input“is“receiv˜ed“withinŽ¡’…³-the–*átimeout,‘‹ÿReadline›*àwill“use“the“shorter“but˜complete“k²!ey“se-Ž¡’…³-quence.‘«éReadline›‹uses–Šthis“v‘ÿdDalue“to˜determine“whether“or˜not“inputŽ¡’…³-is–­«a²!v‘ÿdDailable›­ªon“the˜curren²!t“input˜source“(ârl_instream˜áb²!y“default).Ž¡’…³-The– ˜v›ÿdDalue“is“spMÞeci ed“in“milliseconds,‘(ôso“a“v˜alue“of“1000“means“thatŽ¡’…³-Readline–®Äwill›®Ãw²!ait“one˜second“for“additional˜input.‘‹RIf“this˜v‘ÿdDariable“isŽ¡’…³-set–Yàto›Yßa“v‘ÿdDalue˜less“than˜or“equal“to˜zero,‘i.or˜to“a˜non-n²!umeric“v‘ÿdDalue,Ž¡’…³-Readline–ƒûwill‘ƒúwš²!ait“un˜til“another“k˜ey›ƒúis“pressed“to“decide˜whicš²!h“k˜eyŽ¡’…³-sequence–¦fto“complete.‘ÝÝThe“default“v‘ÿdDalue“is“â500á.ŽŸÛn‘Kâ:âmark-directoriesŽ¡’…³-áIf––¿set“to›–¾`âoná',‘ÒÕcompleted“directory“names“ha•²!v“e˜a––¿slash“appMÞended.Ž¡’…³-The–¦fdefault“is“`âoná'.ަ‘Kâ:âmark-modified-linesŽ¡’…³-áThis–N”v‘ÿdDariable,‘xŸwhen“set“to“`âoná',‘x causes“Readline“to“displa²!y“an“as-Ž¡’…³-terisk– š(`â*á')› ™at“the“start˜of“history˜lines“whicš²!h“ha˜v˜e‘ ™bšMÞeen“mo˜di ed.Ž¡’…³-This–¦fv‘ÿdDariable“is“`âoffá'“b²!y“default.ަ‘Kâ:âmark-symlinked-directoriesŽ¡’…³-áIf–$Ôset›$Óto“`âoná',‘mcompleted“names“whic²!h˜are“sym²!bMÞolic˜links“toŽ¡’…³-directories›\Ëha•²!v“e˜a˜slash˜appMÞended‘\Ì(sub‘›»ject˜to˜the˜v‘ÿdDalue˜ofŽ¡’…³-âmark-directoriesá).‘ÝÝThe–¦fdefault“is“`âoffá'.ަ‘Kâ:âmatch-hidden-filesŽ¡’…³-áThis–«sv‘ÿdDariable,›Ý£when“set“to“`âoná',˜causes“Readline“to‘«rmatc²!h“ les“whoseŽ¡’…³-names–MÍbšMÞegin“with“a“`â.á'“(hidden“ les)“when“p˜erforming“ lenameŽ¡’…³-completion.‘ÎþIf–öÆset“to–öÇ`âoffá',‘JÝthe“leading–öÆ`â.á'“mš²!ust“bMÞe‘öÇsupplied“b˜yŽ¡’…³-the–Luser›Min“the“ lename“to˜bMÞe“completed.‘9This“v‘ÿdDariable“is˜`âoná'“b²!yŽ¡’…³-default.ŽŸÛn‘Kâ:âmenu-complete-display-prefixŽ¡’…³-áIf–ßset“to‘Þ`âoná',‘ýmenš²!u“completion“displa˜ys“the“common‘Þpre x“of“theŽ¡’…³-list–ƒXof›ƒYpMÞossible“completions˜(whicš²!h“ma˜y‘ƒYbMÞe“empt˜y)‘ƒYbMÞefore“cyclingŽ¡’…³-through–¦fthe“list.‘ÝÝThe“default“is“`âoffá'.ަ‘Kâ:âoutput-metaŽ¡’…³-áIf–Aset“to“`âoná',‘gªReadline“will“displaš²!y“c˜haracters“with“the“eigh˜th“bitŽ¡’…³-set–`!directly“rather“than“as“a‘`"meta-pre xed“escapMÞe“sequence.‘ TheŽŽŒ‹ ¬ÄŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’MH9ŽŽŽ ƒ33 ý ÌÍ’…³-default–kis“`âoffá',‘0Ðbut“Readline“will“set“it“to‘j`âoná'“if“the“loMÞcale“con²!tainsޤ 33’…³-eigh•²!t-bit‘¦fc“haracters.Ž©¾-‘Kâ:âpage-completionsŽ¡’…³-áIf–ôset“to‘ó`âoná',‘,×Readline“uses“an“inš²!ternal“âmoreá-lik˜e‘ópager“to“displa˜yŽ¡’…³-a–ã¹screenful“of“pMÞossible‘ã¸completions“at“a“time.‘•ÕThis“v‘ÿdDariable“is“`âoná'Ž¡’…³-b²!y‘¦fdefault.ަ‘Kâ:âprint-completions-horizontallyŽ¡’…³-áIf–àset›àto“`âoná',‘»Readline˜will“displa²!y“completions“with˜matc²!hes“sortedŽ¡’…³-horizonš²!tally–8Ôin“alphabMÞetical“order,‘orather“than“do˜wn“the“screen.Ž¡’…³-The–¦fdefault“is“`âoffá'.ަ‘Kâ:ârevert-all-at-newlineŽ¡’…³-áIf–Œêset“to“`âoná',‘’Readline“will“undo“all‘Œëc²!hanges“to“history“lines“bMÞeforeŽ¡’…³-returning–qXwhen›qYâaccept-line“áis˜executed.‘Ì-By˜default,‘{õhistory“linesŽ¡’…³-ma²!y–¦bšMÞe“mo˜di ed“and“retain“individual‘¥undo“lists“across“calls“toŽ¡’…³-âreadlineá.‘ÝÝThe–¦fdefault“is“`âoffá'.ŽŸ¾,‘Kâ:âshow-all-if-ambiguousŽ¡’…³-áThis–™]alters“the“default“bMÞeha²!vior“of“the‘™\completion“functions.‘Ù…If“setŽ¡’…³-to–L`âoná',‘^.wš²!ords“whic˜h‘L ha˜v˜e“more“than›L one“pMÞossible˜completion“causeŽ¡’…³-the–­matc²!hes“to“bšMÞe“listed“immediately‘­instead“of“ringing“the“b˜ell.Ž¡’…³-The–¦fdefault“v‘ÿdDalue“is“`âoffá'.ަ‘Kâ:âshow-all-if-unmodifiedŽ¡’…³-áThis–¤‰alters“the›¤Šdefault“bMÞeha²!vior“of“the“completion˜functions“in“aŽ¡’…³-fashion–€similar“to“åsho•²!w-all-if-am“biguousá.‘«If–€set“to“`âoná',‘-®wš²!ords“whic˜hŽ¡’…³-ha•²!v“e–²Ömore“than“one“pšMÞossible‘²×completion“without“an²!y“p˜ossible“par-Ž¡’…³-tial–Ãcompletion›Ä(the“pMÞossible˜completions“don't“share˜a“commonŽ¡’…³-pre x)–¢cause›¢the“matc²!hes“to˜bMÞe“listed“immediately“instead˜of“ring-Ž¡’…³-ing–¦fthe“bMÞell.‘ÝÝThe“default“v‘ÿdDalue“is“`âoffá'.ަ‘Kâ:âshow-mode-in-promptŽ¡’…³-áIf–ê set›ê to“`âoná',‘¸add˜a“string“to˜the“bMÞeginning“of“the˜prompt“indicatingŽ¡’…³-the–ûûediting“moMÞde:‘‰emacs,›`vi“command,˜or“vi“insertion.‘Þ›The“moMÞdeŽ¡’…³-strings–rare‘ruser-settable“(e.g.,‘å™åemacs-moMÞde-string‘ðá).‘ BYThe“defaultŽ¡’…³-v‘ÿdDalue–¦fis“`âoffá'.ަ‘Kâ:âskip-completed-textŽ¡’…³-áIf–ñjset“to“`âoná',‘+this‘ñialters“the“default“completion“bMÞeha²!vior“when“in-Ž¡’…³-serting–}=a‘}“output"ŽŸ€’…³-áIn– \Àthe‘ \¿example“abšMÞo•²!v“e,‘ JSèC-u– \Àáis“b˜ound“to‘ \¿the“functionŽ¡’…³-âuniversal-argumentá,‘|èM-DEL› &áis– %bMÞound“to˜the“functionŽ¡’…³-âbackward-kill-wordá,‘ šand–iLèC-o›iKáis“bMÞound˜to“run˜the“macroŽ¡’…³-expressed–~Jon“the›~Irigh²!t“hand“side“(that“is,‘ôBto“insert˜the“text“`â>Ž¡’…³-outputá'–¦fin²!to“the“line).ŽŽŒ‹ ÆcŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®11ŽŽŽ ƒ33 ý ÌÍ’…³-A‘nbn•²!um“bšMÞer–o[of“sym²!b˜olic“c²!haracter“names“are“recognized“whileޤ 33’…³-proMÞcessing–Ê3this“kš²!ey“binding“syn˜tax:‘%wåDELá,–&åESCá,“åESCAPEá,“åLFDá,Ž¡’…³-åNEWLINEá,–¦fåRETá,“åRETURNá,“åRš²!UBOUTá,“åSP‘ÿeA˜CEá,“åSPCá,“and“åT‘ÿeABá.ŽŸ#בKâ:â"åk²!eyseq@æâ"á:‘ÝÝåfunction-name‘Cmáor‘¦fåmacroŽŽ¡’…³-k•²!eyseq‘ú«ádi ers‘¹Äfrom›¹Ååk“eyname‘VËáabMÞo“v“e˜in˜that–¹Ästrings˜denoting“an˜en-Ž¡’…³-tire– hkš²!ey“sequence“can“b•MÞe‘ gsp“eci ed,‘%éb˜y‘ gplacing– hthe“k˜ey“sequence“inŽ¡’…³-double–‰ôquotes.‘ÔbSome“çgnu“áEmacs“stš²!yle“k˜ey“escapšMÞes“can“b˜e“used,‘¤asŽ¡’…³-in–Ãthe›Âfollo²!wing“example,‘(Ùbut˜the“spMÞecial˜c²!haracter“names˜are“notŽ¡’…³-recognized.Ž©+…’¢›‚â"\C-u":‘¿ªuniversal-argumentŽ¡’¢›‚"\C-x\C-r":‘¿ªre-read-init-fileŽ¡’¢›‚"\e[11~":–¿ª"Function“Key“1"ަ’…³-áIn–Â×the“abšMÞo•²!v“e–Â×example,‘ÉòèC-u“áis“again‘ÂØb˜ound“to“the“functionŽ¡’…³-âuniversal-argument–?ßá(just“as“it“w²!as“in“the“ rst‘?Þexample),‘¦=`èC-xŽ¡’…³-C-rá'–¤Öis“bMÞound“to“the“function“âre-read-init-fileá,‘¥&and“`âESC–¦f[“1“1Ž¡’…³-~á'–¦fis“bMÞound“to“insert“the“text“`âFunction“Key“1á'.Ž©#Ø‘Kâ:The–’Äfolloš²!wing“çgnu“áEmacs“st˜yle“escapMÞe‘’Åsequences“are“a˜v‘ÿdDailable“when“spMÞecifyingŽ¡‘Kâ:k²!ey‘¦fsequences:ޤ#בKâ:è\C-‘(‘õácon²!trol‘¦fpre xŽ¡‘Kâ:è\M-‘(‘õámeta‘¦fpre xŽ¡‘Kâ:è\e‘.QŸáan–¦fescapMÞe“c²!haracterŽ¡‘Kâ:è\\‘.QŸábac²!kslashަ‘Kâ:è\â"‘.QŸ"á,–¦fa“double“quotation“markŽ¡‘Kâ:è\'‘.QŸâ'á,–¦fa“single“quote“or“apMÞostropheŽ¡‘Kâ:In–Qaddition“to›Qthe“çgnu“áEmacs“st²!yle˜escapMÞe“sequences,‘b)a“second˜set“of“bac²!kslashŽŸ 33‘Kâ:escapMÞes–¦fis“a²!v‘ÿdDailable:Ž¡‘Kâ:â\a‘.QŸáalert‘¦f(bMÞell)Ž¡‘Kâ:â\b‘.QŸábac²!kspaceަ‘Kâ:â\d‘.QŸádeleteŽ¡‘Kâ:â\f‘.QŸáform‘¦ffeedŽ¡‘Kâ:â\n‘.QŸánewlineŽ¡‘Kâ:â\r‘.QŸácarriage‘¦freturnŽ¡‘Kâ:â\t‘.QŸáhorizon²!tal‘¦ftabަ‘Kâ:â\v‘.QŸáv²!ertical‘¦ftabŽ¡‘Kâ:â\ènnn‘"ÒKáthe–$«eighš²!t-bit“c˜haracter‘$ªwhose“v›ÿdDalue“is“the“oMÞctal“v˜alue‘$ªånnn“á(one“toŽ© 33’…³-three‘¦fdigits)Ž¡‘Kâ:â\xèHH‘"ÒKáthe›˜eigh•²!t-bit‘˜c“haracter˜whose˜v‘ÿdDalue–˜is˜the˜hexadecimal“v‘ÿdDalue˜åHHަ’…³-á(one–¦for“t•²!w“o–¦fhex“digits)ŽŽŒ‹ ÔŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®12ŽŽŽ ƒ33 ý ÌÍ‘Kâ:When–}Ëenš²!tering“the“text“of“a“macro,‘³£single“or“double“quotes“m˜ust“bMÞe“used“toޤ 33‘Kâ:indicate–“Ša›“‰macro“de nition.‘‚?Unquoted˜text“is“assumed“to˜bMÞe“a“function˜name.‘‚?InŽ¡‘Kâ:the‘Ämacro›Åb•MÞo“dy‘ÿe,‘Ç~the˜bac²!kslash‘Äescap“es˜describ“ed‘Äab“o•²!v“e˜are‘Äexpanded.‘€ýBac“kslashŽ¡‘Kâ:will–Íquote‘Íanš²!y“other“c˜haracter›Íin“the“macro˜text,‘Éincluding“`â"á'˜and“`â'á'.‘RF‘ÿeorŽ¡‘Kâ:example,‘4 the–folloš²!wing‘Žbinding“will“mak˜e›Ž`èC-x‘¦fâ\á'“insert“a˜single“`â\á'“in²!to˜the“line:ŽŸLÍ‘hÊâ"\C-x\\":‘¿ª"\\"ŽŸ34‘Gëg1.3.2‘d(Conditional–íMInit“ConstructsŽŽŸ³3‘GáReadline–iimplemenš²!ts“a“facilit˜y“similar“in‘ispirit“to“the“conditional“compilation“features“ofŽ¡‘Gthe–¯JC‘¯HpreproMÞcessor‘¯Kwhicš²!h“allo˜ws‘¯Kk˜ey“bindings“and›¯Kv‘ÿdDariable“settings“to˜bšMÞe“p˜erformed‘¯Kas“theŽ¡‘Gresult–¦fof“tests.‘ÝÝThere“are“four“parser“directiv²!es“used.ŽŸ€‘Gâ$if‘(‘õáThe–ÃNâ$if“áconstruct“allo²!ws“bindings“to“bšMÞe‘ÃOmade“based“on“the“editing“mo˜de,‘ʈtheŽ¡‘Kâ:terminal–[êbMÞeing›[éused,‘‰Jor“the“application˜using“Readline.‘þhThe˜text“of˜the“test,Ž¡‘Kâ:after–‹\an²!y›‹[comparison“opMÞerator,‘Äextends˜to“the“end˜of“the˜line;‘”_unless“otherwiseŽ¡‘Kâ:noted,–¦fno“c²!haracters“are“required“to“isolate“it.Ž©fg‘Kâ:âmode‘"ÒKáThe–žÞâmode=›žßáform“of“the“â$if“ádirectiv²!e˜is“used“to“test˜whether“Read-Ž¡’…³-line–3½is“in‘3¼âemacs“áor“âvi“ámošMÞde.‘ …áThis“ma²!y“b˜e‘3¼used“in“conjunctionŽ¡’…³-with–º the“`âset‘¦fkeymapá'“command,–ÿfor‘º!instance,“to–º set“bindings“inŽ¡’…³-the–ÌÇâemacs-standard“áand›ÌÆâemacs-ctlx“ák²!eymaps“only“if˜Readline“isŽ¡’…³-starting–¦fout“in“âemacs“ámoMÞde.ަ‘Kâ:âterm‘"ÒKáThe–<âterm=“áform›<ma²!y“bMÞe“used“to“include˜terminal-spMÞeci c“k²!ey“bind-Ž¡’…³-ings,‘ƒpMÞerhaps–Vîto“bind›Víthe“k²!ey˜sequences“output“b²!y˜the“terminal'sŽ¡’…³-function–Þ€kš²!eys.‘›;The“w˜ord“on‘Þthe“righ˜t“side“of“the“`â=á'‘Þis“tested“againstŽ¡’…³-bšMÞoth–šPthe“full“name“of“the‘šOterminal“and“the“p˜ortion“of“the“terminalŽ¡’…³-name–×bMÞefore›Öthe“ rst˜`â-á'.‘ÿ/This“allo²!ws˜âsun“áto˜matc²!h“bMÞoth˜âsun“áandŽ¡’…³-âsun-cmdá,–¦ffor“instance.ŽŸfh‘Kâ:âversion‘“MáThe–^@âversion›^Aátest“ma²!y˜bMÞe“used˜to“pMÞerform˜comparisons“againstŽ¡’…³-spMÞeci c–6Readline“vš²!ersions.‘îMThe“âversion“áexpands“to“the“curren˜tŽ¡’…³-Readline–ÞÊv²!ersion.‘›TThe“set›ÞËof“comparison“opMÞerators“includes˜`â=á'“(andŽ¡’…³-`â==á'),–âÇ`â!=á',›âÈ`â<=á',“`â>=á',˜`â<á',“and–Ö´`â>á'.‘nÇThe“vš²!ersion“n˜um˜bMÞer“supplied“onŽ¡’…³-the–ƒrigh²!t›‚side“of“the“opMÞerator˜consists“of“a“ma‘›»jor˜vš²!ersion“n˜um˜bMÞer,Ž¡’…³-an–uµoptional›u´decimal“pMÞoin²!t,‘éˆand˜an“optional“minor˜v²!ersion“(e.g.,Ž¡’…³-`â7.1á').‘ÁâIf–Ruthe›Rtminor“v²!ersion“is˜omitted,‘c?it˜is“assumed“to˜bMÞe“`â0á'.‘ÁâTheŽ¡’…³-opšMÞerator–ìma²!y“b˜e“separated“from“the‘ëstring“âversion“áand“from“theŽ¡’…³-v•²!ersion›§¯n“um“bMÞer‘§°argumen“t˜b“y˜whitespace.‘á¹The‘§°follo“wing˜exampleŽ¡’…³-sets–¦fa“v‘ÿdDariable“if“the“Readline“vš²!ersion“bMÞeing“used“is“7.0“or“new˜er:ŽŸLÍ’¢›‚â$if–¿ªversion“>=“7.0Ž¡’¢›‚set–¿ªshow-mode-in-prompt“onŽ¡’¢›‚$endifަ‘Kâ:applicationŽ¡’…³-áThe–¢âåapplication“áconstruct›¢ãis“used“to“include˜application-spMÞeci c“set-Ž¡’…³-tings.‘£mEac²!h–÷program“using“the‘÷Readline“library“sets“the“åapplicationŽ¡’…³-nameá,‘õwand–É)Ž¡‘Kâ:áMo•²!v“e–¦fto“the“end“of“the“input“history‘ÿe,“i.e.,“the“line“currenš²!tly“bMÞeing“en˜tered.ŽŸ¼j‘Gâreverse-search-history‘¦f(C-r)Ž¡‘Kâ:áSearc•²!h›½:bac“kw“ard˜starting‘½;at˜the˜curren“t˜line˜and˜mo“ving‘½;`up'˜through˜the˜his-Ž¡‘Kâ:tory–¦fas“necessary‘ÿe.‘ÝÝThis“is“an“incremenš²!tal“searc˜h.ަ‘Gâforward-search-history‘¦f(C-s)Ž¡‘Kâ:áSearc•²!h›>Dforw“ard˜starting˜at˜the˜curren“t‘>Cline˜and˜mo“ving˜`do“wn'˜through˜theŽ¡‘Kâ:history–¦fas“necessary‘ÿe.‘ÝÝThis“is“an“incremenš²!tal“searc˜h.ަ‘Gânon-incremental-reverse-search-history‘¦f(M-p)Ž¡‘Kâ:áSearc•²!h›½:bac“kw“ard˜starting‘½;at˜the˜curren“t˜line˜and˜mo“ving‘½;`up'˜through˜the˜his-Ž¡‘Kâ:tory–Ryas“necessary“using‘Rxa“non-incremenš²!tal“searc˜h“for“a“string‘Rxsupplied“b˜y“theŽ¡‘Kâ:user.‘ÝÝThe–¦fsearcš²!h“string“ma˜y“matc˜h“an˜ywhere“in“a“history“line.ަ‘Gânon-incremental-forward-search-history‘¦f(M-n)Ž¡‘Kâ:áSearc•²!h›>Dforw“ard˜starting˜at˜the˜curren“t‘>Cline˜and˜mo“ving˜`do“wn'˜through˜theŽ¡‘Kâ:history–3ªas›3©necessary“using“a˜non-incremenš²!tal“searc˜h“for›3©a“string“supplied˜b²!y“theŽ¡‘Kâ:user.‘ÝÝThe–¦fsearcš²!h“string“ma˜y“matc˜h“an˜ywhere“in“a“history“line.ަ‘Gâhistory-search-forward‘¦f()Ž¡‘Kâ:áSearc•²!h›úOforw“ard˜through–úPthe˜history˜for˜the˜string˜of“c•²!haracters˜bMÞet“w“een˜theŽ¡‘Kâ:start–QËof›QÌthe“curren²!t“line˜and“the“pMÞoinš²!t.‘à The“searc˜h‘QÌstring“m˜ust“matc˜h‘QÌat“theŽ¡‘Kâ:bMÞeginning–è"of“a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘thisŽ¡‘Kâ:command–¦fis“un²!bMÞound.ަ‘Gâhistory-search-backward‘¦f()Ž¡‘Kâ:áSearc•²!h›-»bac“kw“ard–-¼through˜the“history˜for“the˜string“of˜cš²!haracters“bMÞet˜w˜een‘-»theŽ¡‘Kâ:start–QËof›QÌthe“curren²!t“line˜and“the“pMÞoinš²!t.‘à The“searc˜h‘QÌstring“m˜ust“matc˜h‘QÌat“theŽ¡‘Kâ:bMÞeginning–è"of“a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘thisŽ¡‘Kâ:command–¦fis“un²!bMÞound.ަ‘Gâhistory-substring-search-forward‘¦f()Ž¡‘Kâ:áSearc•²!h›úOforw“ard˜through–úPthe˜history˜for˜the˜string˜of“c•²!haracters˜bMÞet“w“een˜theŽ¡‘Kâ:start–uæof›uçthe“curren²!t“line“and˜the“pMÞoinš²!t.‘ͳThe“searc˜h“string“ma˜y‘uçmatc˜h“an˜ywhereŽŽŒ‹ TŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®18ŽŽŽ ƒ33 ý ÌÍ‘Kâ:in–è"a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘this“commandޤ 33‘Kâ:is‘¦fun²!bMÞound.Ž©Þà‘Gâhistory-substring-search-backward‘¦f()Ž¡‘Kâ:áSearc•²!h›-»bac“kw“ard–-¼through˜the“history˜for“the˜string“of˜cš²!haracters“bMÞet˜w˜een‘-»theŽ¡‘Kâ:start–uæof›uçthe“curren²!t“line“and˜the“pMÞoinš²!t.‘ͳThe“searc˜h“string“ma˜y‘uçmatc˜h“an˜ywhereŽ¡‘Kâ:in–è"a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘this“commandŽ¡‘Kâ:is‘¦fun²!bMÞound.ŽŸÞß‘Gâyank-nth-arg‘¦f(M-C-y)Ž¡‘Kâ:áInsert–sÐthe›sÏ rst“argumen²!t˜to“the˜previous“command˜(usually“the˜second“w²!ordŽ¡‘Kâ:on–Ô|the›Ô}previous“line)˜at“pMÞoin²!t.‘h!With“an˜argumen²!t“åná,‘àinsert˜the“ånáth˜w²!ord“fromŽ¡‘Kâ:the–0previous“command“(the“wš²!ords“in‘0the“previous“command“bMÞegin“with“w˜ordŽ¡‘Kâ:0).‘-dA‘À negativ•²!e›Àéargumen“t–Àèinserts˜the“ånáth“w²!ord˜from“the˜end“of˜the“previousŽ¡‘Kâ:command.‘ÍOnce–öGthe“argumenš²!t‘öFån“áis“computed,‘ >the“argumen˜t“is“extracted‘öFas“ifŽ¡‘Kâ:the–¦f`â!èná'“history“expansion“had“bšMÞeen“sp˜eci ed.ަ‘Gâyank-last-arg–¦f(M-.“or“M-_)Ž¡‘Kâ:áInsert–5Elast›5Fargumen²!t“to“the˜previous“command“(the˜last“w²!ord“of˜the“previousŽ¡‘Kâ:history–"enš²!try).‘With“a‘#n˜umeric“argumen˜t,‘ ’bMÞeha˜v˜e“exactly‘#lik˜e“âyank-nth-argá.Ž¡‘Kâ:Successivš²!e–ú%calls‘ú&to“âyank-last-arg“ámo˜v˜e‘ú&bac˜k“through‘ú&the“history“list,‘™insertingŽ¡‘Kâ:the–µlast‘µwš²!ord“(or“the“w˜ord‘µspMÞeci ed“b˜y“the“argumen˜t›µto“the“ rst“call)˜of“eac²!h“lineŽ¡‘Kâ:in–`¿turn.‘ êAnš²!y“n˜umeric‘`Àargumen˜t“supplied“to‘`Àthese“successiv˜e‘`Àcalls“determinesŽ¡‘Kâ:the–-Idirection›-Jto“mo•²!v“e˜through‘-Ithe˜history‘ÿe.‘r‡A‘-'negativ“e‘-Iargumen“t˜switc“hes‘-ItheŽ¡‘Kâ:direction–¼òthrough›¼óthe“history“(bac²!k˜or“forw²!ard).‘ The“history˜expansion“facilitiesŽ¡‘Kâ:are–Mêused“to›Mëextract“the“last“argumen²!t,‘_as“if“the“`â!$á'“history˜expansion“had“bMÞeenŽ¡‘Kâ:spMÞeci ed.ŽŸ«¬‘Gëg1.4.3‘d(Commands–íMF›þÄ£or“Changing“T˜extŽŽŸ ‘Gèend-of-file–¦fâ(usually“C-d)Ž¡‘Kâ:áThe–%¡c²!haracter›% indicating“end-of- le“as“set,–?bfor˜example,“b²!y–%¡âsttyá.‘²ñIf˜this“c²!harac-Ž¡‘Kâ:ter–×is“read“when“there“are“no“cš²!haracters“on“the“line,‘ÒÁand“pMÞoin˜t“is“at“the“bMÞeginningŽ¡‘Kâ:of–¦fthe“line,“Readline“in²!terprets“it“as“the“end“of“input“and“returns“çeofá.ŽŸÞß‘Gâdelete-char‘¦f(C-d)Ž¡‘Kâ:áDelete–þ¾the“cš²!haracter“at“pMÞoin˜t.‘æåIf‘þ½this“function“is“bMÞound“to“the“same“c˜haracterŽ¡‘Kâ:as–¦fthe“ttš²!y“çeof“ác˜haracter,“as“èC-d“ácommonly“is,“see“abMÞo˜v˜e“for“the“e ects.ަ‘Gâbackward-delete-char‘¦f(Rubout)Ž¡‘Kâ:áDelete–Ÿ§the“cš²!haracter‘Ÿ¨bMÞehind“the“cursor.‘ÛA‘Ÿ¦n˜umeric“argumen˜t“means‘Ÿ¨to“kill“theŽ¡‘Kâ:c²!haracters–¦finstead“of“deleting“them.ŽŸÞß‘Gâforward-backward-delete-char‘¦f()Ž¡‘Kâ:áDelete–˜‘the›˜’c²!haracter“under˜the“cursor,‘Õunless“the˜cursor“is“at˜the“end˜of“theŽ¡‘Kâ:line,‘×~in–Í­whicš²!h‘ͬcase“the“c˜haracter›ͬbMÞehind“the˜cursor“is˜deleted.‘S±By“default,‘×~thisŽ¡‘Kâ:is–¦fnot“bMÞound“to“a“k²!ey‘ÿe.ަ‘Gâquoted-insert–¦f(C-q“or“C-v)Ž¡‘Kâ:áAdd–¸the‘¹next“cš²!haracter“t˜ypMÞed‘¹to“the“line“v˜erbatim.‘CÔThis‘¹is“ho˜w“to‘¹insert“k˜eyŽ¡‘Kâ:sequences–¦flik²!e“èC-qá,“for“example.ŽŽŒ‹îŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®19ŽŽŽ ƒ33 ý ÌÍ‘Gâtab-insert‘¦f(M-TAB)ޤ 33‘Kâ:áInsert–¦fa“tab“c²!haracter.Ž©Ûn‘Gâself-insert–¦f(a,“b,“A,“1,“!,“...Ž‘åe)Ž¡‘Kâ:áInsert‘¦fy²!ourself.ަ‘Gâbracketed-paste-begin‘¦f()Ž¡‘Kâ:áThis–û6function›û7is“in²!tended˜to˜bšMÞe“b˜ound“to›û7the“â"ábrac•²!k“eted˜pasteâ"˜áescapMÞe‘û6sequenceŽ¡‘Kâ:sen•²!t›b“y‘some˜terminals,‘·¯and˜suc“h˜a–binding˜is“assigned˜b•²!y˜default.‘mÁIt˜allo“wsŽ¡‘Kâ:Readline–çÌto›çËinsert“the˜pasted“text˜as“a˜single“unit˜without“treating˜eacš²!h“c˜har-Ž¡‘Kâ:acter–ª‘as›ª’if“it“had˜bMÞeen“read“from˜the“kš²!eybMÞoard.‘ê_The“c˜haracters‘ª’are“insertedŽ¡‘Kâ:as–LPif›LOeac²!h“one˜w²!as“bMÞound“to˜âself-insert“áinstead˜of“executing˜an²!y“editingŽ¡‘Kâ:commands.ŽŸÛo‘Gâtranspose-chars‘¦f(C-t)Ž¡‘Kâ:áDrag–Õãthe“cš²!haracter“bMÞefore‘Õâthe“cursor“forw˜ard“o˜v˜er“the“c˜haracter‘Õâat“the“cursor,Ž¡‘Kâ:moš²!ving–C"the“cursor‘C!forw˜ard“as“w˜ell.‘´If“the“insertion‘C!pMÞoin˜t“is“at“the‘C!end“of“theŽ¡‘Kâ:line,‘ÕÍthen–¡¦this“transpMÞoses“the“last“t•²!w“o‘¡§c“haracters–¡¦of“the“line.‘†óNegativš²!e“argumen˜tsŽ¡‘Kâ:ha•²!v“e–¦fno“e ect.ަ‘Gâtranspose-words‘¦f(M-t)Ž¡‘Kâ:áDrag–áÜthe“w²!ord‘áÝbšMÞefore“p˜oinš²!t“past“the“w˜ord‘áÝafter“p•MÞoin˜t,‘ð¹mo˜ving‘áÝp“oin˜t–áÜpast“thatŽ¡‘Kâ:wš²!ord–g¸as“w˜ell.‘ÈùIf“the“insertion“pMÞoin˜t“is“at“the“end“of“the‘g¹line,‘tAthis“transpMÞoses“theŽ¡‘Kâ:last›¦ft•²!w“o˜w“ords˜on˜the˜line.ަ‘Gâupcase-word‘¦f(M-u)Ž¡‘Kâ:áUppMÞercase–ÖÓthe‘ÖÒcurrenš²!t“(or“follo˜wing)“w˜ord.‘o#With“a‘ÖÒnegativ˜e“argumen˜t,‘âîuppMÞer-Ž¡‘Kâ:case–¦fthe“previous“wš²!ord,“but“do“not“mo˜v˜e“the“cursor.ަ‘Gâdowncase-word‘¦f(M-l)Ž¡‘Kâ:áLo•²!w“ercase›”ãthe‘”âcurren“t˜(or‘”âfollo“wing)˜w“ord.‘‚²With‘”âa˜negativ“e˜argumen“t,‘Ë–lo“w“ercaseŽ¡‘Kâ:the–¦fprevious“wš²!ord,“but“do“not“mo˜v˜e“the“cursor.ŽŸÛo‘Gâcapitalize-word‘¦f(M-c)Ž¡‘Kâ:áCapitalize–6the›5curren²!t“(or˜folloš²!wing)“w˜ord.‘€#With‘5a“negativ˜e“argumen˜t,‘ÅrcapitalizeŽ¡‘Kâ:the–¦fprevious“wš²!ord,“but“do“not“mo˜v˜e“the“cursor.ަ‘Gâoverwrite-mode‘¦f()Ž¡‘Kâ:áT‘ÿeoggle›öo•²!v“erwrite˜mo•MÞde.‘Í With˜an˜explicit˜p“ositiv•²!e‘ö n“umeric˜argumen“t,‘ switc“hesŽ¡‘Kâ:to›™ÿo•²!v“erwrite–šmoMÞde.‘„fWith˜an“explicit˜non-pMÞositivš²!e“n˜umeric–™ÿargumen˜t,‘Ï®switc˜hes“toŽ¡‘Kâ:insert–¬ÛmoMÞde.‘ñ=This›¬Ücommand“a ects“only˜âemacs“ámošMÞde;‘°âvi“ámo˜de‘¬Üdo˜es“o•²!v“erwriteŽ¡‘Kâ:di eren•²!tly‘ÿe.‘ÝÝEac“h–¦fcall“to“âreadline()“ástarts“in“insert“moMÞde.ŽŸ‡Q‘Kâ:In›Ièo•²!v“erwrite˜moMÞde,‘òÈc“haracters˜bMÞound˜to˜âself-insert‘Iéáreplace˜the˜text˜atŽ¡‘Kâ:pMÞoinš²!t–rather“than“pushing“the“text“to“the“righ˜t.‘‚Characters“bMÞound“toŽ¡‘Kâ:âbackward-delete-char–¦fáreplace“the“c²!haracter“bšMÞefore“p˜oin²!t“with“a“space.ŽŸ‡P‘Kâ:By–¦fdefault,“this“command“is“un²!bMÞound.ŽŸ¨;‘Gëg1.4.4‘d(Killing–íMAnd“Y‘þÄ£ankingŽŽŸQ‘Gâkill-line‘¦f(C-k)Ž¡‘Kâ:áKill–¦fthe“text“from“pMÞoin²!t“to“the“end“of“the“line.ŽŽŒ‹#sŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®20ŽŽŽ ƒ33 ý ÌÍ‘Gâbackward-kill-line–¦f(C-x“Rubout)ޤ 33‘Kâ:áKill›¦fbac•²!kw“ard˜from˜the˜cursor˜to˜the˜bMÞeginning˜of˜the˜curren“t˜line.Ž©îY‘Gâunix-line-discard‘¦f(C-u)Ž¡‘Kâ:áKill›¦fbac•²!kw“ard˜from˜the˜cursor˜to˜the˜bMÞeginning˜of˜the˜curren“t˜line.ŽŸîX‘Gâkill-whole-line‘¦f()Ž¡‘Kâ:áKill–cjall“cš²!haracters‘cion“the“curren˜t“line,‘’ªno“matter“where“pMÞoin˜t“is.‘èBy“default,Ž¡‘Kâ:this–¦fis“un²!bMÞound.ަ‘Gâkill-word‘¦f(M-d)Ž¡‘Kâ:áKill–‡ from“pMÞoin²!t›‡ to“the“end“of“the˜currenš²!t“w˜ord,‘Por‘‡ if“bMÞet˜w˜een“w˜ords,‘Qto“the“endŽ¡‘Kâ:of–¦fthe“next“w²!ord.‘ÝÝW‘ÿeord“bMÞoundaries“are“the“same“as“âforward-wordá.ŽŸîX‘Gâbackward-kill-word‘¦f(M-DEL)Ž¡‘Kâ:áKill–wÖthe›w×w²!ord“b•MÞehind˜p“oin²!t.‘ÎXW‘ÿeord›wÖb“oundaries˜are–w×the˜same“as˜âbackward-wordá.ަ‘Gâunix-word-rubout‘¦f(C-w)Ž¡‘Kâ:áKill–ÍLthe“w²!ord“bšMÞehind“p˜oinš²!t,‘×using“white“space“as“a“w˜ord“bMÞoundary‘ÿe.‘RThe“killedŽ¡‘Kâ:text–¦fis“sa•²!v“ed–¦fon“the“kill-ring.ަ‘Gâunix-filename-rubout‘¦f()Ž¡‘Kâ:áKill–]Üthe“w²!ord“bšMÞehind“p˜oinš²!t,‘‹ºusing“white“space“and“the“slash“c˜haracter“as“theŽ¡‘Kâ:wš²!ord–¦fbMÞoundaries.‘ÝÝThe“killed“text“is“sa˜v˜ed“on“the“kill-ring.ŽŸîX‘Gâdelete-horizontal-space‘¦f()Ž¡‘Kâ:áDelete–¦fall“spaces“and“tabs“around“pMÞoinš²!t.‘ÝÝBy“default,“this“is“un˜bMÞound.ަ‘Gâkill-region‘¦f()Ž¡‘Kâ:áKill–¦fthe“text“in“the“currenš²!t“region.‘ÝÝBy“default,“this“command“is“un˜bMÞound.ŽŸîX‘Gâcopy-region-as-kill‘¦f()Ž¡‘Kâ:áCop²!y–³the›²text“in˜the“region˜to“the˜kill“bu er,‘0Eso˜it“can˜bMÞe“y•²!ank“ed˜righ“t‘³a“w“a“y‘ÿe.Ž¡‘Kâ:By–¦fdefault,“this“command“is“un²!bMÞound.ަ‘Gâcopy-backward-word‘¦f()Ž¡‘Kâ:áCopš²!y–žthe“w˜ord“bšMÞefore“p˜oinš²!t“to“the“kill‘žbu er.‘ÄÿThe“w˜ord“bMÞoundaries“are“theŽ¡‘Kâ:same–¦fas“âbackward-wordá.‘ÝÝBy“default,“this“command“is“un²!bMÞound.ŽŸîX‘Gâcopy-forward-word‘¦f()Ž¡‘Kâ:áCopš²!y–º8the“w˜ord“follo˜wing‘º9pMÞoin˜t“to“the“kill“bu er.‘SThe‘º9w˜ord“bMÞoundaries“are“theŽ¡‘Kâ:same–¦fas“âforward-wordá.‘ÝÝBy“default,“this“command“is“un²!bMÞound.ަ‘Gâyank‘¦f(C-y)Ž¡‘Kâ:áY‘ÿeank–¦fthe“top“of“the“kill“ring“inš²!to“the“bu er“at“pMÞoin˜t.ަ‘Gâyank-pop‘¦f(M-y)Ž¡‘Kâ:áRotate–'!the“kill-ring,‘GPand“y²!ank“the“new“top.‘`Y‘ÿeou“can‘'"only“do“this“if“the“priorŽ¡‘Kâ:command–¦fis“âyank“áor“âyank-popá.ŽŸ»%‘Gëg1.4.5‘d(Spiecifying–íMNumeric“Argumen–átsŽŽŸÆ‘Gâdigit-argument–¦f(èM-0â,“èM-1â,“...Ž‘‹ËèM--â)Ž¡‘Kâ:áAdd–:Lthis›:Kdigit“to“the˜argumenš²!t“already“accum˜ulating,‘Oêor“start“a‘:Knew“argumen˜t.Ž¡‘Kâ:èM--–¦fástarts“a“negativš²!e“argumen˜t.ŽŽŒ‹/‰Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®21ŽŽŽ ƒ33 ý ÌÍ‘Gâuniversal-argument‘¦f()ޤ 33‘Kâ:áThis–kis“another“w•²!a“y›jto–kspMÞecify“an“argumen²!t.‘«ßIf“this“command˜is“follo•²!w“ed›kb“y˜oneŽ¡‘Kâ:or–more›digits,‘“´optionally“with˜a“leading“min²!us“sign,‘“³those“digits“de ne˜the“ar-Ž¡‘Kâ:gumenš²!t.‘ÐÚIf‘[the–\command“is“follo˜w˜ed“b˜y“digits,‘‡*executing“âuniversal-argumentŽ¡‘Kâ:áagain–Ñ«ends‘Ѫthe“nš²!umeric“argumen˜t,‘Ü{but“is“otherwise›Ѫignored.‘_«As“a˜spMÞecial“case,Ž¡‘Kâ:if–ñúthis›ñûcommand“is“immediately˜follo•²!w“ed›ñúb“y˜a˜c“haracter–ñûthat˜is˜neither“a˜digitŽ¡‘Kâ:nor–ôÝminš²!us“sign,‘H{the“argumen˜t“coun˜t“for“the“next‘ôÞcommand“is“m˜ultiplied“b˜yŽ¡‘Kâ:four.‘ŽïThe›6Áargumen•²!t‘6Âcoun“t˜is˜initially–6Âone,‘Z×so“executing˜this˜function“the˜ rstŽ¡‘Kâ:time–omakš²!es‘othe“argumen˜t‘ocoun˜t“four,‘z&a›osecond“time˜mak²!es“the˜argumenš²!t“coun˜tŽ¡‘Kâ:sixteen,–¦fand“so“on.‘ÝÝBy“default,“this“is“not“bMÞound“to“a“k²!ey‘ÿe.ŽŸ“4‘Gëg1.4.6‘d(Letting–íMReadline“T–áypie“F›þÄ£or“Y˜ouŽŽŸ|Í‘Gâcomplete‘¦f(TAB)Ž¡‘Kâ:áA²!ttempt–¶èto›¶çpMÞerform“completion˜on“the˜text“b•MÞefore˜p“oin²!t.‘Ž The˜actual‘¶ècompletionŽ¡‘Kâ:pšMÞerformed–¦fis“application-sp˜eci c.‘ÝÝThe“default“is“ lename“completion.Ž©Æg‘Gâpossible-completions‘¦f(M-?)Ž¡‘Kâ:áList–)¯the›)®pMÞossible“completions˜of“the˜text“b•MÞefore˜p“oin•²!t.‘g·When˜displa“ying‘)¯com-Ž¡‘Kâ:pletions,‘ôfReadline–äÌsets›äÍthe“n•²!um“bMÞer˜of–äÌcolumns“used˜for“displa²!y˜to“the˜v‘ÿdDalue“ofŽ¡‘Kâ:âcompletion-display-widthá,‘Uthe–aŒv›ÿdDalue“of“the“en•²!vironmen“t–aŒv˜ariable“âCOLUMNSá,Ž¡‘Kâ:or–¦fthe“screen“width,“in“that“order.ަ‘Gâinsert-completions‘¦f(M-*)Ž¡‘Kâ:áInsert–«µall“completions“of“the“text“bšMÞefore“p˜oinš²!t“that“w˜ould“ha˜v˜e“bMÞeen“generatedŽ¡‘Kâ:b²!y‘¦fâpossible-completionsá.ŽŸÆh‘Gâmenu-complete‘¦f()Ž¡‘Kâ:áSimilar–ÛVto“âcompleteá,‘óbut“replaces“the“wš²!ord“to‘ÛWbMÞe“completed“with“a“single“matc˜hŽ¡‘Kâ:from–‹æthe‘‹çlist“of“pšMÞossible“completions.‘Ž^Rep˜eated“execution‘‹çof“âmenu-completeŽ¡‘Kâ:ásteps–Õ¯through›Õ°the“list“of“pMÞossible˜completions,‘!inserting“eacš²!h“matc˜h‘Õ°in“turn.Ž¡‘Kâ:A²!t–jthe“end“of›jthe“list“of“completions,‘›šthe“bMÞell“is“rung˜(sub‘›»ject“to“the“settingŽ¡‘Kâ:of–Thâbell-styleá)“and“the›Tioriginal“text“is“restored.‘çãAn“argumen²!t˜of“ån“ámo•²!v“es‘ThånŽ¡‘Kâ:ápMÞositions–,Rforw²!ard›,Qin“the“list˜of“matcš²!hes;‘oGa“negativ˜e‘,Qargumen˜t“ma˜y“bMÞe‘,Qused“toŽ¡‘Kâ:mo•²!v“e›™Žbac“kw“ard˜through˜the˜list.‘·VThis˜command˜is˜in“tended˜to˜b•MÞe˜b“ound˜toŽ¡‘Kâ:âTABá,–¦fbut“is“unš²!bMÞound“b˜y“default.ަ‘Gâmenu-complete-backward‘¦f()Ž¡‘Kâ:áIdenš²!tical–5ato“âmenu-completeá,‘Ybut‘5`mo˜v˜es“bac˜kw˜ard“through“the‘5`list“of“pMÞossibleŽ¡‘Kâ:completions,–¦fas“if“âmenu-complete“áhad“bMÞeen“givš²!en“a“negativ˜e“argumen˜t.ަ‘Gâdelete-char-or-list‘¦f()Ž¡‘Kâ:áDeletes–«éthe›«èc²!haracter“under“the“cursor˜if“not“at˜the“bMÞeginning“or“end˜of“theŽ¡‘Kâ:line–öØ(lik²!e›öÙâdelete-chará).‘ Ï4If“at˜the“end“of˜the“line,‘ŠôbMÞeha•²!v“es˜iden“tically‘öØtoŽ¡‘Kâ:âpossible-completionsá.‘ÝÝThis–¦fcommand“is“unš²!bMÞound“b˜y“default.ŽŸ“4‘Gëg1.4.7‘d(Keybioard‘íMMacrosŽŽŸ|Í‘Gâstart-kbd-macro–¦f(C-x“()Ž¡‘Kâ:áBegin–¦fsaš²!ving“the“c˜haracters“t˜ypMÞed“in˜to“the“curren˜t“k˜eybMÞoard“macro.ŽŽŒ‹:WŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®22ŽŽŽ ƒ33 ý ÌÍ‘Gâend-kbd-macro–¦f(C-x“))ޤ 33‘Kâ:áStop–G!saš²!ving“the“c˜haracters‘G"t˜ypMÞed“in˜to“the“curren˜t“k˜eybMÞoard“macro‘G"and“sa˜v˜e“theŽ¡‘Kâ:de nition.Ž©`¶‘Gâcall-last-kbd-macro–¦f(C-x“e)Ž¡‘Kâ:áRe-execute–9Bthe“last‘9Ckš²!eybMÞoard“macro“de ned,‘]ùb˜y“making“the‘9Cc˜haracters“in“theŽ¡‘Kâ:macro–¦fappšMÞear“as“if“t²!yp˜ed“at“the“k²!eyb˜oard.ŽŸ`·‘Gâprint-last-kbd-macro‘¦f()Ž¡‘Kâ:áPrinš²!t–¦fthe“last“k˜ebMÞoard“macro“de ned“in“a“format“suitable“for“the“åinputrc‘Pjá le.ŽŸ-ƒ‘Gëg1.4.8‘d(Some–íMMiscellaneous“CommandsŽŽŸIõ‘Gâre-read-init-file–¦f(C-x“C-r)Ž¡‘Kâ:áRead– kin“the› jcon•²!ten“ts– kof“the“åinputrc‘Joá le,‘ÔÐand“incorpMÞorate“an²!y˜bindings“or“v‘ÿdDariableŽ¡‘Kâ:assignmen²!ts–¦ffound“there.ަ‘Gâabort‘¦f(C-g)Ž¡‘Kâ:áAbMÞort–/the›/curren²!t“editing˜command“and˜ring“the˜terminal's“bMÞell˜(sub‘›»ject“to˜theŽ¡‘Kâ:setting–¦fof“âbell-styleá).ŽŸ`·‘Gâdo-lowercase-version–¦f(M-A,“M-B,“M-èxâ,“...Ž‘åe)Ž¡‘Kâ:áIf–4©the“meta ed›4ªc²!haracter“åx‘öáis“uppMÞer“case,‘X:run“the“command“that˜is“bMÞound“toŽ¡‘Kâ:the–öUcorrespMÞonding›öTmeta ed“lo•²!w“er˜case‘öUc“haracter.‘Í©The˜bMÞeha“vior–öUis˜unde ned“ifŽ¡‘Kâ:åx‘gÅáis–¦falready“lo•²!w“er‘¦fcase.ަ‘Gâprefix-meta‘¦f(ESC)Ž¡‘Kâ:áMetafy–‚2the›‚1next“c•²!haracter˜t“ypMÞed.‘q@This–‚2is˜for“k²!eybMÞoards˜without“a˜meta“k²!ey‘ÿe.Ž¡‘Kâ:Tš²!yping–¦f`âESC“fá'“is“equiv‘ÿdDalen˜t“to“t˜yping“èM-fá.ŽŸ`·‘Gâundo–¦f(C-_“or“C-x“C-u)Ž¡‘Kâ:áIncremenš²!tal–¦fundo,“separately“remem˜bMÞered“for“eac˜h“line.ަ‘Gârevert-line‘¦f(M-r)Ž¡‘Kâ:áUndo–úall“cš²!hanges“made“to“this“line.‘ØåThis“is“lik˜e“executing“the“âundo“ácommandŽ¡‘Kâ:enough–¦ftimes“to“get“bac²!k“to“the“bMÞeginning.ަ‘Gâtilde-expand‘¦f(M-~)Ž¡‘Kâ:áPš²!erform–¦ftilde“expansion“on“the“curren˜t“w˜ord.ŽŸ`·‘Gâset-mark‘¦f(C-@)Ž¡‘Kâ:áSet–ðthe“mark“to“the“pMÞoinš²!t.‘ºØIf“a‘ðn˜umeric“argumen˜t“is“supplied,‘ythe“mark“is“setŽ¡‘Kâ:to–¦fthat“pMÞosition.ަ‘Gâexchange-point-and-mark–¦f(C-x“C-x)Ž¡‘Kâ:áSwš²!ap–¾Òthe“pMÞoin˜t“with“the“mark.‘'"The“curren˜t“cursor“pMÞosition“is“set“to“the“sa˜v˜edŽ¡‘Kâ:pšMÞosition,–¦fand“the“old“cursor“p˜osition“is“sa•²!v“ed–¦fas“the“mark.ŽŸ`·‘Gâcharacter-search‘¦f(C-])Ž¡‘Kâ:áA‘ü&cš²!haracter–üQis‘üRread“and“pMÞoin˜t‘üRis“mo˜v˜ed“to›üRthe“next“oMÞccurrence“of˜that“c²!haracter.Ž¡‘Kâ:A–¦fnegativš²!e“coun˜t“searc˜hes“for“previous“oMÞccurrences.ަ‘Gâcharacter-search-backward‘¦f(M-C-])Ž¡‘Kâ:áA‘c"c²!haracter–c•is›c”read“and˜pMÞoinš²!t“is“mo˜v˜ed›c”to“the˜previous“oMÞccurrence˜of“thatŽ¡‘Kâ:c•²!haracter.‘ÝÝA›¦fnegativ“e˜coun“t˜searc“hes˜for˜subsequen“t˜oMÞccurrences.ŽŽŒ‹GÝŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®23ŽŽŽ ƒ33 ý ÌÍ‘Gâskip-csi-sequence‘¦f()ޤ 33‘Kâ:áRead–G¬enough“cš²!haracters‘G­to“consume“a“m˜ulti-k˜ey“sequence“suc˜h‘G­as“those“de nedŽ¡‘Kâ:for–z÷kš²!eys“lik˜e‘zøHome“and“End.‘[‘Suc˜h“sequences“bMÞegin“with‘zøa“Con˜trol“SequenceŽ¡‘Kâ:Indicator–fM(CSI),“usually–fLESC-[.‘’If“this–fMsequence“is“bMÞound‘fLto“â"\áe[â"á,‘–Fk²!eys“pro-Ž¡‘Kâ:ducing–Ö‰sucš²!h“sequences“will‘Öˆha˜v˜e“no“e ect“unless“explicitly“bMÞound‘Öˆto“a“readlineŽ¡‘Kâ:command,‘ßÔinstead–ÔXof“inserting“straš²!y“c˜haracters“in˜to“the“editing‘ÔWbu er.‘g³This“isŽ¡‘Kâ:un•²!bMÞound›¦fb“y˜default,˜but˜usually˜bMÞound˜to˜ESC-[.Ž©+¼‘Gâinsert-comment‘¦f(M-#)Ž¡‘Kâ:áWithout–GÑa‘GÐnš²!umeric“argumen˜t,‘p*the“v‘ÿdDalue›GÐof“the˜âcomment-begin“áv‘ÿdDariable˜is“in-Ž¡‘Kâ:serted–Ìèat›Ìéthe“bMÞeginning“of“the˜currenš²!t“line.‘QdIf“a“n˜umeric“argumen˜t‘Ìéis“supplied,Ž¡‘Kâ:this–cøcommand“acts“as“a“toggle:‘Yif‘c÷the“c²!haracters“at“the“bMÞeginning“of“the“lineŽ¡‘Kâ:do–¬Ânot“matc²!h“the‘¬Ãv›ÿdDalue“of“âcomment-beginá,‘®Ythe“v˜alue“is‘¬Ãinserted,‘®Yotherwise“theŽ¡‘Kâ:c²!haracters–Ó6in“âcomment-begin“áare›Ó5deleted“from“the“bMÞeginning“of“the˜line.‘dMInŽ¡‘Kâ:either–¦fcase,“the“line“is“accepted“as“if“a“newline“had“bšMÞeen“t²!yp˜ed.ŽŸ+½‘Gâdump-functions‘¦f()Ž¡‘Kâ:áPrin²!t–,Qall›,Pof“the˜functions“and“their˜k²!ey“bindings“to˜the“Readline˜output“stream.Ž¡‘Kâ:If–Îïa“nš²!umeric“argumen˜t›Îðis“supplied,‘Ùthe“output“is“formatted“in˜sucš²!h“a“w˜a˜y“thatŽ¡‘Kâ:it–¦fcan“bšMÞe“made“part“of“an“åinputrc‘Pjá le.‘ÝÝThis“command“is“un²!b˜ound“b²!y“default.ަ‘Gâdump-variables‘¦f()Ž¡‘Kâ:áPrin²!t–ŽÉall“of“the‘ŽÈsettable“v›ÿdDariables“and“their“v˜alues“to‘ŽÈthe“Readline“output“stream.Ž¡‘Kâ:If–Îïa“nš²!umeric“argumen˜t›Îðis“supplied,‘Ùthe“output“is“formatted“in˜sucš²!h“a“w˜a˜y“thatŽ¡‘Kâ:it–¦fcan“bšMÞe“made“part“of“an“åinputrc‘Pjá le.‘ÝÝThis“command“is“un²!b˜ound“b²!y“default.ŽŸ+½‘Gâdump-macros‘¦f()Ž¡‘Kâ:áPrinš²!t– ˆall“of“the‘ ‡Readline“k˜ey“sequences“bMÞound“to“macros‘ ‡and“the“strings“theyŽ¡‘Kâ:output.‘rŠIf–-Ja“nš²!umeric“argumen˜t“is›-Ksupplied,‘Othe“output“is“formatted˜in“suc²!h“aŽ¡‘Kâ:w•²!a“y–šthat›šit“can“bMÞe˜made“part“of˜an“åinputrc‘Dá le.‘ÙÂThis“command“is˜unš²!bMÞound“b˜yŽ¡‘Kâ:default.ަ‘Gâemacs-editing-mode‘¦f(C-e)Ž¡‘Kâ:áWhen–¦fin“âvi“ácommand“mošMÞde,“this“causes“a“switc²!h“to“âemacs“áediting“mo˜de.ŽŸ+½‘Gâvi-editing-mode‘¦f(M-C-j)Ž¡‘Kâ:áWhen–¦fin“âemacs“áediting“mošMÞde,“this“causes“a“switc²!h“to“âvi“áediting“mo˜de.ŽŸø‰‘Gë]1.5‘™Readline–f@vi“Mos3deŽŽŸ33‘GáWhile–É`the“Readline›É_library“doMÞes“not“ha•²!v“e–É`a˜full“set“of“âvi˜áediting“functions,‘Òit“doMÞes“con²!tainŽ¡‘Genough–to›žallo²!w“simple˜editing“of“the˜line.‘.ƒThe˜Readline“âvi“ámo•MÞde˜b“eha•²!v“es–as˜spMÞeci ed“inŽ¡‘Gthe–¦fçposix“ástandard.Ž©/x‘!GIn–|Uorder›|Vto“switc•²!h˜in“teractiv“ely‘|UbMÞet“w“een˜âemacs–|Uáand˜âvi“áediting˜moMÞdes,‘„¿use˜the“commandŽ¡‘GèM-C-j–iá(bšMÞound‘jto“emacs-editing-mo˜de“when“in‘jâvi“ámo˜de“and“to‘jvi-editing-mo˜de“in“âemacsŽ¡‘GámošMÞde).‘ÝÝThe–¦fReadline“default“is“âemacs“ámo˜de.ަ‘!GWhen–›‰yš²!ou“en˜ter“a“line“in“âvi“ámoMÞde,‘µy˜ou‘›Šare“already“placed“in“`insertion'“moMÞde,‘µas“if“y˜ouŽ¡‘Ghad–ˆtš²!ypMÞed“an‘ˆ`âiá'.‘ÓÃPressing“âESC“áswitc˜hes‘ˆy˜ou“in˜to“`command'“moMÞde,‘Ž(where“y˜ou‘ˆcan“edit“theŽ¡‘Gtext–of“the“line“with“the“standard“âvi“ámo•²!v“emen“t›k“eys,‘);mo“v“e˜to˜previous˜history˜lines˜withŽ¡‘G`âká'–¦fand“subsequen²!t“lines“with“`âjá',“and“so“forth.ŽŽŒ‹RÉŸò’¸¼Ëá24ŽŽŽ ƒ33 ý ÌÍ‘GëT2‘ ¸QProgramming–z³with“GNU“ReadlineŽŽŸ]‘GáThis–ü cš²!hapter‘üdescribMÞes“the“in˜terface‘übMÞet˜w˜een“the“çgnu›üáReadline“Library“and˜other“programs.ޤ 33‘GIf–}Éyš²!ou“are“a“programmer,‘…èand“y˜ou“wish“to“include“the“features“found“in“çgnu“áReadline“suc˜hŽ¡‘Gas–ý­completion,›lline“editing,˜and“in•²!teractiv“e–ý­history“manipulation“in“yš²!our“o˜wn“programs,‘lthisŽ¡‘Gsection–¦fis“for“y²!ou.ŽŸ”ó‘Gë]2.1‘™Basic‘f@BehaŒÌviorŽŽŸ33‘GáMan•²!y›’programs‘’pro“vide˜a˜command‘’line˜in“terface,‘Ísuc“h˜as˜âmailá,‘Íâftpá,‘Íand‘’âshá.‘ ôF‘ÿeor˜suc“hŽ¡‘Gprograms,‘x³the–mFdefault“bMÞehaš²!viour“of“Readline“is“sucien˜t.‘ÊÓThis“section“describMÞes“ho˜w“to“useŽ¡‘GReadline–!tin“the‘!usimplest“w•²!a“y›!tp•MÞossible,‘@8p“erhaps˜to˜replace‘!ucalls˜in˜y²!our˜co“de‘!uto˜âgets()˜áorŽ¡‘Gâfgets()á.Ž©–€‘!GThe–èæfunction“âreadline()“áprin²!ts“a“prompt“åprompt‘%çáand“then“reads“and“returns“a“singleŽ¡‘Gline–í¨of“text“from“the“user.‘³¢If“åprompt‘*¨áis“âNULL“áor“the“emptš²!y“string,‘ÿxno“prompt“is“displa˜y˜ed.Ž¡‘GThe–u}line›u|âreadline“áreturns“is˜alloMÞcated“with“âmalloc()á;‘Ýthe˜caller“should“âfree()˜áthe“lineŽ¡‘Gwhen–¦fit“has“ nished“with“it.‘ÝÝThe“declaration“for“âreadline“áin“ANSI“C“isޤ–‘.ùœâchar–¿ª*readline“(const“char“*èpromptâ);ަ‘GáSo,–¦fone“mighš²!t“sa˜yŽ¡‘.ùœâchar–¿ª*line“=“readline“("Enter“a“line:“");ަ‘Gáin–¾—order“to›¾–read“a“line“of“text“from˜the“user.‘˜The“line“returned“has“the˜ nal“newline“remo•²!v“ed,Ž© 33‘Gso–¦fonly“the“text“remains.Ž¡‘!GIf–ÜÆâreadline“áencounš²!ters“an“âEOF“áwhile“reading“the“line,‘*^and“the“line“is“empt˜y“at“thatަ‘GpMÞoin²!t,›^then–‡â(char‘¦f*)NULL“áis“returned.‘ÓoOtherwise,˜the“line“is‘‡ended“just“as“if“a“newline“hadަ‘Gb•MÞeen‘¦ft²!yp“ed.ŽŸ–€‘!GReadline–¡ZpšMÞerforms“some“expansion“on“the“åprompt‘ÞZáb˜efore“it“is“displa•²!y“ed–¡Zon“the“screen.‘†ÙSeeަ‘Gthe–@Ádescription“of“ârl_expand_prompt“á(see“Section“2.4.6‘@Â[Redispla²!y],‘Upage“37)“for“additionalަ‘Gdetails,‘Ö espMÞecially–™Pif“åprompt‘ÖPáwill“conš²!tain“c˜haracters‘™Othat“do“not“consume“ph˜ysical“screenަ‘Gspace–¦fwhen“displa•²!y“ed.Ž¡‘!GIf–=Ayš²!ou“w˜an˜t›=Bthe“user“to“bMÞe˜able“to“get“at“the˜line“later,›RI(with“âC-p“áfor“example),˜yš²!ou“m˜ustަ‘Gcall–¦fâadd_history()“áto“sa•²!v“e–¦fthe“line“a•²!w“a“y–¦fin“a“åhistory‘–~álist“of“suc²!h“lines.Ž©–€‘.ùœâadd_history‘¿ª(line);Ž¡‘GáF›ÿeor–¦ffull“details“on“the“GNU“History“Library˜,“see“the“assoMÞciated“man²!ual.ަ‘!GIt–Ãis“preferable“to“a•²!v“oid‘ÃŒsa“ving›Ãempt“y˜lines˜on˜the˜history˜list,‘ÊÖsince˜users˜rarely˜ha“v“e˜aޤ 33‘Gburning–‘4need“to›‘5reuse“a“blank“line.‘ÖÍHere“is“a“function“whic²!h“usefully˜replaces“the“standardŽ¡‘Gâgets()–¦fálibrary“function,“and“has“the“adv‘ÿdDanš²!tage“of“no“static“bu er“to“o˜v˜er o˜w:ŽŸ–‘.ùœâ/*–¿ªA“static“variable“for“holding“the“line.“*/Ž¡‘.ùœstatic–¿ªchar“*line_read“=“(char“*)NULL;ŽŸff‘.ùœ/*–¿ªRead“a“string,“and“return“a“pointer“to“it.Ž¡‘@8šReturns–¿ªNULL“on“EOF.“*/Ž¡‘.ùœchar‘¿ª*Ž¡‘.ùœrl_gets‘¿ª()Ž¡‘.ùœ{ŽŽŒ‹a?Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—25ŽŽŽ ƒ33 ý ÌÍ‘:xðâ/*–¿ªIf“the“buffer“has“already“been“allocated,ޤ 33‘K·îreturn–¿ªthe“memory“to“the“free“pool.“*/Ž¡‘:xðif‘¿ª(line_read)Ž¡‘EøD{Ž¡‘Qw˜free‘¿ª(line_read);Ž¡‘Qw˜line_read–¿ª=“(char“*)NULL;Ž¡‘EøD}Ž©ff‘:xð/*–¿ªGet“a“line“from“the“user.“*/Ž¡‘:xðline_read–¿ª=“readline“("");ަ‘:xð/*–¿ªIf“the“line“has“any“text“in“it,Ž¡‘K·îsave–¿ªit“on“the“history.“*/Ž¡‘:xðif–¿ª(line_read“&&“*line_read)Ž¡‘EøDadd_history‘¿ª(line_read);ަ‘:xðreturn‘¿ª(line_read);Ž¡‘.ùœ}Ž©ïÖ‘!GáThis–`ˆfunction“givš²!es“the“user“the“default“bMÞeha˜viour“of“âTAB“ácompletion:‘ºîcompletion“on“ leŽ¡‘Gnames.‘ôÞIf‘®yš²!ou–®do“not“w˜an˜t“Readline“to“complete“on–® lenames,‘¯ûy˜ou“can–®c˜hange“the“bindingŽ¡‘Gof–¦fthe“âTAB“ák²!ey“with“ârl_bind_key()á.ŽŸïÕ‘.ùœâint–¿ªrl_bind_key“(int“èkeyâ,“rl_command_func_t“*èfunctionâ);ަ‘!Grl_bind_key()–—átakš²!es“t˜w˜o––argumen˜ts:‘ž?åk˜ey‘ö¯áis“the–—c˜haracter“that“y˜ou“w˜an˜t‘–to“bind,‘£andŽ¡‘Gåfunction–ªäáis“the“address“of‘ªåthe“function“to“call“when“åk²!ey‘šüáis“pressed.‘ëXBinding“âTAB“áto“ârl_Ž¡‘Ginsert()–§wámak²!es›§xâTAB“áinsert“itself.‘áârl_bind_key()“áreturns“non-zero˜if“åk²!ey‘—áis“not˜a“v‘ÿdDalidŽ¡‘GASCIšMÞI–¦fc²!haracter“co˜de“(b˜et•²!w“een–¦f0“and“255).ޤïÕ‘!GThš²!us,–¦fto“disable“the“default“âTAB“ábMÞeha˜vior,“the“follo˜wing“suces:ަ‘.ùœârl_bind_key–¿ª('\t',“rl_insert);Ž¡‘!GáThis–+cošMÞde“should‘+b˜e“executed“once“at‘+the“start“of“yš²!our“program;‘T,y˜ou“migh˜t‘+write“a“func-ޤ 33‘Gtion–ïøcalled›ï÷âinitialize_readline()“áwhic²!h˜pMÞerforms“this˜and“other˜desired“initializations,Ž¡‘Gsuc²!h–¦fas“installing“custom“completers“(see“Section“2.6“[Custom“Completers],“page“50).ŽŸô‘Gë]2.2‘™Custom‘f@F‘þ¦functionsŽŽŸ33‘GáReadline–Eçproš²!vides“man˜y“functions“for‘Eæmanipulating“the“text“of“the“line,‘Y3but“it“isn't“pMÞossibleŽ¡‘Gto–dcan²!ticipate“the›dbneeds“of“all“programs.‘ÓThis“section“describMÞes“the˜v‘ÿdDarious“functions“andŽ¡‘Gv‘ÿdDariables–"de ned“within“the‘"Readline“library“whicš²!h“allo˜w“a“user‘"program“to“add“customizedŽ¡‘Gfunctionalit²!y–¦fto“Readline.ŽŸïÕ‘!GBefore–aÛdeclaring›aÜan²!y“functions“that“customize˜Readline's“bMÞeha²!vior,‘¸or“using˜an²!y“func-Ž¡‘Gtionalit•²!y›xQReadline‘xRpro“vides˜in–xRother˜coMÞde,‘ìÌan˜application˜writer“should˜include“the˜ leŽ¡‘Gâ–‡áin›†an²!y“ le“that“uses˜Readline's“features.‘û?Since“some“of˜the“de -Ž¡‘Gnitions–¾„in›¾…âreadline.h“áuse“the“âstdio˜álibrary‘ÿe,‘Ä‹the˜ le“â“áshould“bMÞe˜included“bMÞeforeŽ¡‘Gâreadline.há.ަ‘!Gâreadline.h–¬2áde nes›¬3a“C‘¬1preproMÞcessor“v‘ÿdDariable˜that“should“bMÞe˜treated“as“an˜in²!teger,‘­¥âRL_Ž¡‘GREADLINE_VERSIONá,‘Ûwhic•²!h›¨(ma“y˜b•MÞe˜used˜to˜conditionally˜compile˜application˜co“de˜dep“endingŽŽŒ‹mÕŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—26ŽŽŽ ƒ33 ý ÌÍ‘Gon–4üthe“installed›4ýReadline“v²!ersion.‘‰ŸThe˜v‘ÿdDalue“is“a“hexadecimal“encoMÞding“of˜the“ma‘›»jor“andޤ 33‘Gminor–Pvš²!ersion“n˜um˜bMÞers›Oof“the“library‘ÿe,‘8Šof“the“form˜0xåMMmmá.‘<›åMM‘Jþáis˜the“t•²!w“o-digit‘Pma‘›»jorŽ¡‘Gv•²!ersion›z.n“um“bMÞer;‘ˆëåmm‘z-áis˜the˜t“w“o-digit‘z-minor˜v“ersion˜n“um“bMÞer.‘ÏF‘ÿeor˜Readline˜4.2,‘ƒfor˜example,Ž¡‘Gthe–¦fv‘ÿdDalue“of“âRL_READLINE_VERSION“áw²!ould“bMÞe“â0x0402á.ŽŸ34‘Gëg2.2.1‘d(Readline‘íMT–áypiedefsŽŽŸ³3‘GáF–ÿeor›¦freadabilit²!y“,˜w•²!e˜declare˜a˜n“um“bMÞer˜of˜new˜ob‘›»ject˜t“yp•MÞes,˜all˜p“oin²!ters˜to˜functions.Ž©fg‘!GThe–IÖreason›IÕfor“declaring˜these“new˜t²!ypMÞes“is˜to“mak²!e˜it“easier˜to“write˜coMÞde“describingŽ¡‘GpMÞoinš²!ters–¦fto“C“functions“with“appropriately“protot˜ypMÞed“argumen˜ts“and“return“v‘ÿdDalues.ŽŸff‘!GF‘ÿeor›m½instance,‘Ÿ“sa•²!y‘m¾w“e˜w“an“t–m¾to˜declare˜a“v‘ÿdDariable˜åfunc‘Âáas˜a˜pMÞoin²!ter“to˜a“function˜whic²!hŽ¡‘Gtak•²!es›©t“w“o‘¨âint˜áargumen“ts–¨and˜returns“an˜âint“á(this˜is“the˜t²!ypMÞe“of˜all“of˜the“Readline˜bindableŽ¡‘Gfunctions).‘ÝÝInstead–¦fof“the“classic“C“declarationަ‘!Gâint‘¦f(*func)();ަ‘Gáor–¦fthe“ANSI-C“st²!yle“declarationަ‘!Gâint–¦f(*func)(int,“int);ŽŸff‘Gáw•²!e›¦fma“y˜writeަ‘!Gârl_command_func_t‘¦f*func;ަ‘!GáThe–¦ffull“list“of“function“pMÞoinš²!ter“t˜ypMÞes“a˜v‘ÿdDailable“isŽŸ‘Gâtypedef–¦fint“rl_command_func_t“(int,“int);Ž¡‘Gtypedef–¦fchar“*rl_compentry_func_t“(const“char“*,“int);Ž¡‘Gtypedef–¦fchar“**rl_completion_func_t“(const“char“*,“int,“int);Ž¡‘Gtypedef–¦fchar“*rl_quote_func_t“(char“*,“int,“char“*);Ž¡‘Gtypedef–¦fchar“*rl_dequote_func_t“(char“*,“int);Ž¡‘Gtypedef–¦fint“rl_compignore_func_t“(char“**);Ž¡‘Gtypedef–¦fvoid“rl_compdisp_func_t“(char“**,“int,“int);Ž¡‘Gtypedef–¦fint“rl_hook_func_t“(void);Ž¡‘Gtypedef–¦fint“rl_getc_func_t“(FILE“*);Ž¡‘Gtypedef–¦fint“rl_linebuf_func_t“(char“*,“int);Ž¡‘Gtypedef–¦fint“rl_intfunc_t“(int);Ž¡‘G#define–¦frl_ivoidfunc_t“rl_hook_func_tŽ¡‘Gtypedef–¦fint“rl_icpfunc_t“(char“*);Ž¡‘Gtypedef–¦fint“rl_icppfunc_t“(char“**);Ž¡‘Gtypedef–¦fvoid“rl_voidfunc_t“(void);Ž¡‘Gtypedef–¦fvoid“rl_vintfunc_t“(int);Ž¡‘Gtypedef–¦fvoid“rl_vcpfunc_t“(char“*);Ž¡‘Gtypedef–¦fvoid“rl_vcppfunc_t“(char“**);ŽŸ™™‘Gëg2.2.2‘d(W›þÄ£riting–íMa“New“F˜unctionŽŽŸ³3‘GáIn–»Öorder›»×to“write“new˜functions“for“Readline,‘Á3y²!ou“need“to˜kno²!w“the“calling˜con•²!v“en“tions‘»ÖforŽ¡‘Gk•²!eybMÞoard-in“v“ok“ed–™Úfunctions,‘œ\and“the›™Ùnames“of“the˜v‘ÿdDariables“that“describMÞe“the˜curren²!t“stateŽ¡‘Gof–¦fthe“line“read“so“far.ަ‘!GThe–¦fcalling“sequence“for“a“command“âfoo“áloMÞoks“lik²!eަ‘.ùœâint–¿ªfoo“(int“count,“int“key)ŽŽŒ‹ywŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—27ŽŽŽ ƒ33 ý ÌÍ‘Gwhere–Pgåcounš²!t‘fáis“the‘Pfn˜umeric“argumen˜t›Pf(or“1˜if“defaulted)˜and“åk²!ey‘@~áis“the˜k²!ey“that˜in•²!v“ok“edޤ 33‘Gthis‘¦ffunction.Ž©,£‘!GIt–Äis›Äcompletely“up˜to“the“function˜as“to“what˜should“bMÞe˜done“with“the˜nš²!umeric“argumen˜t.Ž¡‘GSome–Ï;functions“use“it“as“a“repMÞeat“coun²!t,›psome‘Ï:as“a“ ag,˜and“others“to“c²!hoMÞose“alternateŽ¡‘GbMÞehaš²!vior–4ñ(refreshing‘4ðthe“curren˜t›4ðline“as˜oppMÞosed“to“refreshing˜the“screen,‘˜’for“example).Ž¡‘GSome–ýc²!hoMÞose“to›ýignore“it.‘á±In˜general,‘©if“a˜function“uses“the“nš²!umeric“argumen˜t‘ýas“a“repMÞeatŽ¡‘Gcoun²!t,‘itit–Z7should“bMÞe›Z8able“to“do˜something“useful“with˜bMÞoth“negativ²!e“and˜pMÞositivš²!e“argumen˜ts.Ž¡‘GAš²!t–¦fthe“v˜ery“least,“it“should“bMÞe“a˜w˜are“that“it“can“bMÞe“passed“a“negativ˜e“argumen˜t.ަ‘!GA‘‘command–Ífunction“should“return“0“if“its“action“completes“successfully‘ÿe,‘Ëgand“a“v‘ÿdDalueŽ¡‘Ggreater–ô±than›ô²zero“if“some“error˜oMÞccurs.‘È¿This“is“the“con•²!v“en“tion˜obMÞey“ed›ô±b“y˜all˜of‘ô²the˜builtinŽ¡‘GReadline–¦fbindable“command“functions.ŽŸv(‘Gë]2.3‘™Readline‘f@V‘þ¦fariablesŽŽŸ33‘GáThese–¦fv›ÿdDariables“are“a²!v˜ailable“to“function“writers.Ž©&’–3[V‘ÿeariable]ŽŽ‘Gó@ßêset“from“the“argumen²!t“to“âreadline()á,‘=yand“shouldŽ¡‘.ùœnot–:^bMÞe“assigned“to›:]directly‘ÿe.‘¹ÛThe“ârl_set_prompt()“áfunction˜(see“Section“2.4.6“[Redis-Ž¡‘.ùœplaš²!y],–¦fpage“37)“ma˜y“bšMÞe“used“to“mo˜dify“the“prompt“string“after“calling“âreadline()á.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@char–LÉ*“rl_display_promptŽ¡‘.ùœáThe›ÏÛstring‘ÏÜdispla•²!y“ed˜as–ÏÜthe˜prompt.‘Z=This˜is“usually˜iden²!tical“to˜årl‘Ä>‰x³HøŽ‘Ñtpromptá,‘Ú9but˜ma²!yŽ¡‘.ùœbšMÞe–[c²!hanged“temp˜orarily“b²!y“functions“that“use“the“prompt“string“as“a“message“area,Ž¡‘.ùœsucš²!h–¦fas“incremen˜tal“searc˜h.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_already_promptedŽ¡‘.ùœáIf–\Xan“application“wishes›\Wto“displa²!y“the“prompt“itself,‘‰Ôrather˜than“ha•²!v“e–\XReadline“doŽ¡‘.ùœit–ï9the“ rst“time“âreadline()“áis“called,‘mit“should“set“this“v›ÿdDariable“to“a“non-zero“v˜alueŽ¡‘.ùœafter–Ëdisplaš²!ying‘Êthe“prompt.‘š The“prompt“m˜ust“also›ÊbMÞe“passed“as“the˜argumen²!t“toŽ¡‘.ùœâreadline()–÷ áso“the“redisplaš²!y“functions“can“upMÞdate‘÷the“displa˜y“propMÞerly‘ÿe.‘ÏÆThe“callingŽ¡‘.ùœapplication–¦fis“respMÞonsible“for“managing“the“v‘ÿdDalue;“Readline“nev²!er“sets“it.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_library_versionŽ¡‘.ùœáThe–¦fvš²!ersion“n˜um˜bMÞer“of“this“revision“of“the“library‘ÿe.ŽŸ¸’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_readline_versionŽ¡‘.ùœáAn–’in²!teger›“encoMÞding“the˜currenš²!t“v˜ersion›“of“the˜library‘ÿe.‘4bThe“encoMÞding˜is“of˜the“formŽ¡‘.ùœ0xåMMmmá,‘‘àwhere–bÈåMM‘’váis‘bÇthe“t•²!w“o-digit–bÈma‘›»jor“vš²!ersion“n˜um˜bMÞer,‘‘àand“åmm‘bÇáis“the“t˜w˜o-Ž¡‘.ùœdigit–{¶minor‘{·vš²!ersion“n˜um˜bMÞer.‘]ÏF‘ÿeor“example,–± for‘{·Readline-4.2,“ârl_readline_versionŽ¡‘.ùœáw•²!ould›¦fha“v“e˜the˜v‘ÿdDalue˜0x0402.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_gnu_readline_pŽ¡‘.ùœáAlw•²!a“ys–¦fset“to“1,“denoting“that“this“is“çgnu“áreadline“rather“than“some“em²!ulation.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_terminal_nameŽ¡‘.ùœáThe›_terminal–_t²!ypMÞe,‘mKused“for˜initialization.‘ÆIf˜not“set˜b²!y“the˜application,‘mJReadline˜setsŽ¡‘.ùœthis–¦fto“the“v›ÿdDalue“of“the“âTERM“áen•²!vironmen“t–¦fv˜ariable“the“ rst“time“it“is“called.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_readline_nameŽ¡‘.ùœáThis–¿ƒv‘ÿdDariable“is“set“to“a“unique“name‘¿„bš²!y“eac˜h“application“using“Readline.‘)4The“v‘ÿdDalueŽ¡‘.ùœallo²!ws–]wconditional“parsing›]vof“the“inputrc“ le“(see“Section˜1.3.2“[Conditional“Init“Con-Ž¡‘.ùœstructs],–¦fpage“12).ަ’–3[V‘ÿeariable]ŽŽ‘Gë@FILE–LÉ*“rl_instreamŽ¡‘.ùœáThe–í€stdio“stream“from“whic²!h“Readline“reads“input.‘³*If“âNULLá,‘?FReadline“defaults“toŽ¡‘.ùœåstdiná.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@FILE–LÉ*“rl_outstreamŽ¡‘.ùœáThe–#Rstdio›#Qstream“to“whic²!h˜Readline“pMÞerforms“output.‘T If˜âNULLá,‘BReadline˜defaults“toŽ¡‘.ùœåstdoutá.ŽŽŒ‹‘ÞŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—29ŽŽŽ ƒ33 ý ÌÍ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_prefer_env_winsizeޤ 33‘.ùœáIf–h non-zero,‘t”Readline“givš²!es“v‘ÿdDalues“found“in“the‘hâLINES“áand“âCOLUMNS“áen˜vironmen˜t“v‘ÿdDari-Ž¡‘.ùœables–éžgreater“precedence“than“v‘ÿdDalues“fetcš²!hed“from“the“k˜ernel“when“computing“theŽ¡‘.ùœscreen‘¦fdimensions.Ž©fg’–3[V‘ÿeariable]ŽŽ‘Gë@rl_command_func_t–LÉ*“rl_last_funcŽ¡‘.ùœáThe–-)address“of“the“last“command“function“Readline‘-*executed.‘r&Ma²!y“bMÞe“used“to“testŽ¡‘.ùœwhether–¦for“not“a“function“is“bMÞeing“executed“t²!wice“in“succession,“for“example.ŽŸfh’–3[V‘ÿeariable]ŽŽ‘Gë@rl_hook_func_t–LÉ*“rl_startup_hookŽ¡‘.ùœáIf–ºnon-zero,‘>this“is›»the“address“of˜a“function˜to“call“just˜bMÞefore“âreadline˜áprin²!ts“theŽ¡‘.ùœ rst‘¦fprompt.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_hook_func_t–LÉ*“rl_pre_input_hookŽ¡‘.ùœáIf–CÜnon-zero,‘k9this›CÛis“the“address˜of“a“function˜to“call“after˜the“ rst“prompt˜has“bMÞeenŽ¡‘.ùœprinš²!ted–¦fand“just“bMÞefore“âreadline“ástarts“reading“input“c˜haracters.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_hook_func_t–LÉ*“rl_event_hookŽ¡‘.ùœáIf–ânon-zero,‘0ìthis“is“the‘âaddress“of“a“function“to“call“p•MÞerio“dically–âwhen“Readline“isŽ¡‘.ùœw²!aiting–€*for“terminal–€)input.‘ÑBy“default,‘‡Ðthis›€*will“bMÞe˜called˜at˜most˜ten“times˜a˜secondŽ¡‘.ùœif–¦fthere“is“no“k²!eybMÞoard“input.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_getc_func_t–LÉ*“rl_getc_functionŽ¡‘.ùœáIf–§Wnon-zero,‘§“Readline“will“call“indirectly“through“this“pMÞoinš²!ter“to“get“a“c˜haracter“fromŽ¡‘.ùœthe–›input“stream.‘€EBy“default,‘ÅÃit“is‘œset“to“ârl_getcá,‘ÅÄthe“default“Readline“c²!haracter“inputŽ¡‘.ùœfunction–»Í(see“Section›»Î2.4.8“[Character“Input],‘ê¸page˜39).‘ªIn“general,‘ê¹an“application“thatŽ¡‘.ùœsets›¦fårl‘Ä>‰x³HøŽ–Ñtgetc‘Ä>‰x³HøŽ“function˜áshould˜consider˜setting˜årl‘Ä>‰x³HøŽ“input‘Ä>‰x³HøŽ“a²!v‘ÿdDailable‘Ä>‰x³HøŽ“hoMÞok‘Pjáas˜w²!ell.ŽŸfh’–3[V‘ÿeariable]ŽŽ‘Gë@rl_hook_func_t–LÉ*“rl_signal_event_hookŽ¡‘.ùœáIf–>Ûnon-zero,‘Sthis“is‘>Üthe“address“of“a“function“to“call“if“a“read“system“call“is“in²!terruptedŽ¡‘.ùœwhen–¦fReadline“is“reading“terminal“input.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_hook_func_t–LÉ*“rl_input_available_hookŽ¡‘.ùœáIf–z÷non-zero,‘ƒ§Readline›zöwill“use“this“function's“return“v‘ÿdDalue“when˜it“needs“to“determineŽ¡‘.ùœwhether–àor“not“there‘áis“aš²!v‘ÿdDailable“input“on“the“curren˜t“input“source.‘ 8LThe“defaultŽ¡‘.ùœhoMÞok› #c•²!hec“ks– $ârl_instreamá;‘@:if˜an“application˜is“using˜a˜di eren²!t“input˜source,‘+Ëit˜shouldŽ¡‘.ùœset–îthe›ïhoMÞok“appropriately‘ÿe.‘óvReadline“queries“for“a²!v‘ÿdDailable˜input“when“implemen²!tingŽ¡‘.ùœin•²!tra-k“ey-sequence–cStimeouts“during“input“and“incremenš²!tal“searc˜hes.‘Ç‚This“ma˜y“use“anŽ¡‘.ùœapplication-sp•MÞeci c›€¥timeout‘€¦b“efore˜returning–€¦a˜v‘ÿdDalue;‘â‘Readline˜uses“the˜v‘ÿdDalue“passed˜toŽ¡‘.ùœârl_set_keyboard_input_timeout()–ê9áor›ê:the“v‘ÿdDalue˜of“the˜user-settable“åk²!eyseq-timeoutŽ¡‘.ùœáv‘ÿdDariable.‘˜This›äuis–ätdesigned“for“use“b²!y“applications˜using“Readline's“callbacš²!k“in˜terfaceŽ¡‘.ùœ(see–‘RSection›‘S2.4.12“[Alternate˜In²!terface],–•‰page˜43),“whic•²!h‘‘Rma“y˜not–‘Ruse˜the“traditionalŽ¡‘.ùœâread(2)–ÞKáand“ le“descriptor“inš²!terface,‘,Cor“other“applications“using“a“di eren˜t“inputŽ¡‘.ùœmecš²!hanism.‘LþIf–Ëqan“application“uses“an“input“mec˜hanism“or“hošMÞok“that“can“p˜oten²!tiallyŽ¡‘.ùœexceed–d’the“v‘ÿdDalue“of›d‘åk²!eyseq-timeoutá,‘”it“should“increase“the“timeout˜or“set“this“hoMÞokŽ¡‘.ùœappropriately–àîev²!en›àïwhen“not˜using“the˜callbacš²!k“in˜terface.‘wIn“general,‘ï‘an“applicationŽ¡‘.ùœthat–¦fsets“årl‘Ä>‰x³HøŽ–Ñtgetc‘Ä>‰x³HøŽ“function–¦fáshould“consider“setting“årl‘Ä>‰x³HøŽ–Ñtinput‘Ä>‰x³HøŽ“aš²!v‘ÿdDailable‘Ä>‰x³HøŽ“hoMÞok‘Pjáas‘¦fw˜ell.ŽŽŒ‹Ÿ–Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—30ŽŽŽ ƒ33 ý ÌÍ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_voidfunc_t–LÉ*“rl_redisplay_functionޤ 33‘.ùœáIf–S­non-zero,‘~ÿReadline“will“call“indirectly“through“this‘S®pšMÞoin²!ter“to“up˜date“the“displa²!yŽ¡‘.ùœwith–=Ôthe“curren•²!t›=Õcon“ten“ts–=Ôof“the“editing“bu er.‘»By“default,‘R¾it“is˜set“to“ârl_redisplayá,Ž¡‘.ùœthe–¦fdefault“Readline“redisplaš²!y“function“(see“Section“2.4.6“[Redispla˜y],“page“37).Ž©Ð`’–3[V‘ÿeariable]ŽŽ‘Gë@rl_vintfunc_t–LÉ*“rl_prep_term_functionŽ¡‘.ùœáIf–âÏnon-zero,‘ íReadline“will›âÎcall“indirectly“through“this“pMÞoin²!ter“to˜initialize“the“terminal.Ž¡‘.ùœThe–ufunction“takš²!es“a‘u€single“argumen˜t,‘©Gan“âint“á ag“that“sa˜ys“whether‘u€or“not“to“useŽ¡‘.ùœeigh•²!t-bit›Èc“haracters.‘5By˜default,‘5athis˜is˜set˜to˜ârl_prep_terminal‘Éá(see˜Section˜2.4.9Ž¡‘.ùœ[T‘ÿeerminal–¦fManagemen²!t],“page“40).ŽŸÐ_’–3[V‘ÿeariable]ŽŽ‘Gë@rl_voidfunc_t–LÉ*“rl_deprep_term_functionŽ¡‘.ùœáIf–eynon-zero,‘•>Readline›ezwill“call˜indirectly“through˜this“pMÞoin²!ter˜to“reset˜the“terminal.Ž¡‘.ùœThis–4function“should“undo‘4the“e ects“of“ârl_prep_term_functioná.‘ˆYBy“default,‘XthisŽ¡‘.ùœis–¦fset“to“ârl_deprep_terminal“á(see“Section“2.4.9“[T‘ÿeerminal“Managemen²!t],“page“40).ަ’–3[V‘ÿeariable]ŽŽ‘Gë@Keymap‘LÉrl_executing_keymapŽ¡‘.ùœáThis–ROv‘ÿdDariable›RNis“set˜to“the˜k²!eymap“(see“Section˜2.4.2“[Keymaps],‘}Hpage“33)˜in“whic²!hŽ¡‘.ùœthe–¦fcurrenš²!tly“executing“readline“function“w˜as“found.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@Keymap‘LÉrl_binding_keymapŽ¡‘.ùœáThis–ROv‘ÿdDariable›RNis“set˜to“the˜k²!eymap“(see“Section˜2.4.2“[Keymaps],‘}Hpage“33)˜in“whic²!hŽ¡‘.ùœthe–¦flast“k²!ey“binding“oMÞccurred.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@char–LÉ*“rl_executing_macroŽ¡‘.ùœáThis–¦fv‘ÿdDariable“is“set“to“the“text“of“anš²!y“curren˜tly-executing“macro.ŽŸÐ_’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_executing_keyŽ¡‘.ùœáThe–¦fkš²!ey“that“caused“the“dispatc˜h“to“the“curren˜tly-executing“Readline“function.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@char–LÉ*“rl_executing_keyseqŽ¡‘.ùœáThe–Cùfull“kš²!ey‘Cúsequence“that“caused“the“dispatc˜h“to‘Cúthe“curren˜tly-executing“ReadlineŽ¡‘.ùœfunction.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_key_sequence_lengthŽ¡‘.ùœáThe›¦fn•²!um“bMÞer˜of˜c“haracters˜in˜årl‘Ä>‰x³HøŽ–Ñtexecuting‘Ä>‰x³HøŽ“k²!eyseqá.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_readline_stateŽ¡‘.ùœáA‘#¨v›ÿdDariable‘#Çwith–#Èbit“v˜alues›#Çthat“encapsulate“the“curren²!t˜Readline“state.‘VA‘#¨bit˜is“setŽ¡‘.ùœwith–½the›¾âRL_SETSTATE“ámacro,‘Ç“and“unset˜with“the“âRL_UNSETSTATE˜ámacro.‘“ãUse“theŽ¡‘.ùœâRL_ISSTATE–zámacro“to›ztest“whether“a“particular“state˜bit“is“set.‘X¬Curren²!t“state“bitsŽ¡‘.ùœinclude:ŽŸ©‘.ùœâRL_STATE_NONEŽ¡‘hÊáReadline–¦fhas“not“y²!et“bšMÞeen“called,“nor“has“it“b˜egun“to“initialize.ŽŸÊ‘.ùœâRL_STATE_INITIALIZINGŽ¡‘hÊáReadline–¦fis“initializing“its“in²!ternal“data“structures.ŽŸÉ‘.ùœâRL_STATE_INITIALIZEDŽ¡‘hÊáReadline–¦fhas“completed“its“initialization.ŽŽŒ‹¯?Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—31ŽŽŽ ƒ33 ý ÌÍ‘.ùœâRL_STATE_TERMPREPPEDޤ 33‘hÊáReadline–r[has“mošMÞdi ed“the“terminal“mo˜des“to“do“its“o²!wn“input“and“redis-Ž¡‘hÊpla²!y‘ÿe.Ž©ij‘.ùœâRL_STATE_READCMDŽ¡‘hÊáReadline–¦fis“reading“a“command“from“the“k²!eybMÞoard.ŽŸii‘.ùœâRL_STATE_METANEXTŽ¡‘hÊáReadline–¦fis“reading“more“input“after“reading“the“meta-pre x“c²!haracter.ަ‘.ùœâRL_STATE_DISPATCHINGŽ¡‘hÊáReadline–¦fis“dispatc²!hing“to“a“command.ަ‘.ùœâRL_STATE_MOREINPUTŽ¡‘hÊáReadline–¦fis“reading“more“input“while“executing“an“editing“command.ŽŸii‘.ùœâRL_STATE_ISEARCHŽ¡‘hÊáReadline–¦fis“pMÞerforming“an“incremenš²!tal“history“searc˜h.ަ‘.ùœâRL_STATE_NSEARCHŽ¡‘hÊáReadline–¦fis“pMÞerforming“a“non-incremenš²!tal“history“searc˜h.ަ‘.ùœâRL_STATE_SEARCHŽ¡‘hÊáReadline–péis‘pêsearcš²!hing“bac˜kw˜ard“or‘pêforw˜ard“through›pêthe“history“for˜a“string.ŽŸii‘.ùœâRL_STATE_NUMERICARGŽ¡‘hÊáReadline–¦fis“reading“a“nš²!umeric“argumen˜t.ަ‘.ùœâRL_STATE_MACROINPUTŽ¡‘hÊáReadline–çis›çcurren²!tly“getting˜its“input˜from“a˜previously-de ned“k²!eybMÞoardŽ¡‘hÊmacro.ŽŸii‘.ùœâRL_STATE_MACRODEFŽ¡‘hÊáReadline–¦fis“currenš²!tly“reading“c˜haracters“de ning“a“k˜eybMÞoard“macro.ަ‘.ùœâRL_STATE_OVERWRITEŽ¡‘hÊáReadline–¦fis“in“o•²!v“erwrite‘¦fmoMÞde.ަ‘.ùœâRL_STATE_COMPLETINGŽ¡‘hÊáReadline–¦fis“pMÞerforming“w²!ord“completion.ŽŸii‘.ùœâRL_STATE_SIGHANDLERŽ¡‘hÊáReadline–¦fis“curren²!tly“executing“the“readline“signal“handler.ަ‘.ùœâRL_STATE_UNDOINGŽ¡‘hÊáReadline–¦fis“pMÞerforming“an“undo.ަ‘.ùœâRL_STATE_INPUTPENDINGŽ¡‘hÊáReadline–¦fhas“input“pMÞending“due“to“a“call“to“ârl_execute_next()á.ŽŸii‘.ùœâRL_STATE_TTYCSAVEDŽ¡‘hÊáReadline–¦fhas“sa•²!v“ed–¦fthe“v‘ÿdDalues“of“the“terminal's“spMÞecial“c²!haracters.ަ‘.ùœâRL_STATE_CALLBACKŽ¡‘hÊáReadline–+Žis›+curren²!tly“using˜the“alternate˜(callbacš²!k)“in˜terface‘+(see“Sec-Ž¡‘hÊtion–¦f2.4.12“[Alternate“In²!terface],“page“43).ŽŽŒ‹ »~Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—32ŽŽŽ ƒ33 ý ÌÍ‘.ùœâRL_STATE_VIMOTIONޤ 33‘hÊáReadline–¦fis“reading“the“argumen²!t“to“a“vi-moMÞde“â"ámotionâ"“ácommand.Ž©Àc‘.ùœâRL_STATE_MULTIKEYŽ¡‘hÊáReadline–¦fis“reading“a“m•²!ultiple-k“eystrok“e‘¦fcommand.ŽŸÀd‘.ùœâRL_STATE_VICMDONCEŽ¡‘hÊáReadline–²áhas›²âen²!tered“vi˜command“(mo•²!v“emen“t)–²ámoMÞde˜at“least˜one“timeŽ¡‘hÊduring–¦fthe“curren²!t“call“to“âreadline()á.ަ‘.ùœâRL_STATE_DONEŽ¡‘hÊáReadline–T†has“read“a“k²!ey“sequence‘T…bšMÞound“to“âaccept-line“áand“is“ab˜out“toŽ¡‘hÊreturn–¦fthe“line“to“the“caller.Ž©M”’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_explicit_argŽ¡‘.ùœáSet–©]to“a“non-zero‘©\v‘ÿdDalue“if“an“explicit“nš²!umeric“argumen˜t“w˜as‘©\spMÞeci ed“b˜y“the“user.Ž¡‘.ùœOnly–¦fv‘ÿdDalid“in“a“bindable“command“function.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_numeric_argŽ¡‘.ùœáSet–r,to“the“v‘ÿdDalue“of“anš²!y“n˜umeric‘r-argumen˜t“explicitly“spMÞeci ed“b˜y“the“user“bMÞeforeŽ¡‘.ùœexecuting–´the“curren²!t“Readline“function.‘°MOnly“v‘ÿdDalid“in“a“bindable“command“function.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_editing_modeŽ¡‘.ùœáSet–pto›oa“v‘ÿdDalue“denoting˜Readline's“curren²!t˜editing“moMÞde.‘§‹A‘Fv‘ÿdDalue“of“å1‘â¨ámeans“ReadlineŽ¡‘.ùœis–¦fcurren²!tly“in“emacs“mošMÞde;“å0‘…Ÿámeans“that“vi“mo˜de“is“activ²!e.ŽŸ ÓÉ‘Gë]2.4‘™Readline›f@Con•ŒÌv“enience˜F‘þ¦functionsŽŽŸ‘Gëg2.4.1‘d(Naming–íMa“F‘þÄ£unctionŽŽŸ³3‘GáThe–üåuser“can“dynamically‘üæcš²!hange“the“bindings“of“k˜eys“while‘üæusing“Readline.‘¥]This“is“done“b˜yŽ¡‘Grepresen²!ting–¡"the›¡#function“with˜a“descriptiv²!e“name.‘ÜThe˜user“is“able˜to“t²!ypMÞe˜the“descriptiv²!eŽ¡‘Gname–¦fwhen“referring“to“the“function.‘ÝÝThš²!us,“in“an“init“ le,“one“migh˜t“ ndŽŸÀd‘.ùœâMeta-Rubout:‘ Tbackward-kill-wordŽŸÀc‘!GáThis– Mtbinds“the“k•²!eystrok“e– MtâMeta-Rubout‘ Muáto“the“function“ädescriptively‘ EuánamedŽ¡‘Gâbackward-kill-wordá.‘4·Y‘ÿeou,‘ •as–ÃYthe“programmer,‘ –should“bind“the“functions‘ÃZy²!ou“write“toŽ¡‘Gdescriptivš²!e–¦fnames“as“w˜ell.‘ÝÝReadline“pro˜vides“a“function“for“doing“that:ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_add_defun‘yšó;m#½R ó3 cmss10æ(óAp®0J cmsl10ëAconst–ùocªªhar“*name,‘ú¿rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘ùo*function,Ž¡‘DGin•ªªt‘k“eyæ)Ž¡‘.ùœáAdd–<ýåname‘Úáto“the›<þlist“of“named˜functions.‘¡£Mak²!e“åfunction˜ábMÞe“the“function˜that“getsŽ¡‘.ùœcalled.‘ÝÝIf–¦fåk²!ey‘–~áis“not“-1,“then“bind“it“to“åfunction“áusing“ârl_bind_key()á.ަ‘!GUsing–žthis›žfunction“alone˜is“sucien²!t˜for“most“applications.‘ÛIt˜is“the˜recommended“w•²!a“yŽ¡‘Gto–<Óadd›<Òa“few˜functions“to“the˜default“functions˜that“Readline˜has“built“in.‘º¬If˜y²!ou“need˜to“doŽ¡‘Gsomething– {other“than“adding‘ za“function“to“Readline,‘$Àyš²!ou“ma˜y“need‘ zto“use“the“underlyingŽ¡‘Gfunctions–¦fdescribšMÞed“b˜elo²!w.ŽŽŒ‹!ÃzŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—33ŽŽŽ ƒ33 ý ÌÍ‘Gëg2.4.2‘d(Selecting–íMa“KeymapŽŽŸ³3‘GáKey–¦abindings“takš²!e“place‘¦`on“a“åk˜eymapá.‘ÝÎThe“k˜eymap“is“the‘¦`assošMÞciation“b˜et•²!w“een–¦athe“k²!eysޤ 33‘Gthat–k8the“user›k9t²!ypMÞes“and“the“functions“that˜get“run.‘Ê#Y‘ÿeou“can“makš²!e“y˜our‘k9o˜wn“k˜eymaps,‘wcop˜yŽ¡‘Gexisting–¦fkš²!eymaps,“and“tell“Readline“whic˜h“k˜eymap“to“use.Ž©¹š’“z[F‘ÿeunction]ŽŽ‘Gë@Keymap‘LÉrl_make_bare_keymap‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturns–æEa‘æDnew,‘ ²emptš²!y“k˜eymap.‘ÒThe›æDspace“for“the˜k²!eymap“is“alloMÞcated˜with“âmalloc()á;Ž¡‘.ùœthe–¦fcaller“should“free“it“b²!y“calling“ârl_free_keymap()“áwhen“done.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@Keymap‘LÉrl_copy_keymap‘yšæ(ëAKeymap‘mapæ)Ž¡‘.ùœáReturn–¦fa“new“kš²!eymap“whic˜h“is“a“cop˜y“of“åmapá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@Keymap‘LÉrl_make_keymap‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–Ŭa›Å«new“k²!eymap˜with“the˜prinš²!ting“c˜haracters‘Å«bMÞound“to“rl‘Ä>‰x³HøŽ‘Ñtinsert,‘Í|the“lo˜w˜ercaseŽ¡‘.ùœMeta–µÝcš²!haracters“bMÞound“to“run“their“equiv‘ÿdDalen˜ts,‘åùand“the“Meta“digits“bšMÞound“to“pro˜duceŽ¡‘.ùœn•²!umeric‘¦fargumen“ts.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_discard_keymap‘yšæ(ëAKeymap‘kªªeymapæ)Ž¡‘.ùœáF‘ÿeree–…óthe›…òstorage“assoMÞciated“with˜the“data“in˜åk²!eymapá.‘Ó The“caller“should˜free“åk²!eymapá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_free_keymap‘yšæ(ëAKeymap‘kªªeymapæ)Ž¡‘.ùœáF‘ÿeree–³öall“storage›³õassoMÞciated“with“åk²!eymapá.‘ŒThis“calls“ârl_discard_keymap˜áto“free“sub-Ž¡‘.ùœordindate–¦fk²!eymaps“and“macros.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_empty_keymap‘yšæ(ëAKeymap‘kªªeymapæ)Ž¡‘.ùœáReturn–¯Énon-zero“if“there“are“no“kš²!eys“bMÞound“to“functions“in“åk˜eymapUá;‘´zzero“if“there“areŽ¡‘.ùœan•²!y›¦fk“eys˜bMÞound.ަ‘!GReadline–qhas“sev•²!eral‘qin“ternal›qk“eymaps.‘ >These˜functions˜allo“w˜y“ou‘qto˜c“hange˜whic“hŽ¡‘Gkš²!eymap–¦fis“activ˜e.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@Keymap‘LÉrl_get_keymap‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturns–¦fthe“currenš²!tly“activ˜e“k˜eymap.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_set_keymap‘yšæ(ëAKeymap‘kªªeymapæ)Ž¡‘.ùœáMak•²!es›¦fåk“eymap‘ûgáthe˜curren“tly˜activ“e˜k“eymap.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@Keymap‘LÉrl_get_keymap_by_name‘yšæ(ëAconst–cªªhar“*nameæ)Ž¡‘.ùœáReturn–ý>the“k•²!eymap›ý=matc“hing–ý>ånameá.‘âdåname‘šEáis“one“whic•²!h˜w“ould–ý>bMÞe“supplied“in˜a“âsetŽ¡‘.ùœkeymap–¦fáinputrc“line“(see“Section“1.3“[Readline“Init“File],“page“4).ަ’“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“rl_get_keymap_name‘yšæ(ëAKeymap‘kªªeymapæ)Ž¡‘.ùœáReturn–ý>the“name‘ý=matcš²!hing“åk˜eymapá.‘âdåname‘šEáis“one“whic˜h‘ý=w˜ould“bMÞe“supplied“in‘ý=a“âsetŽ¡‘.ùœkeymap–¦fáinputrc“line“(see“Section“1.3“[Readline“Init“File],“page“4).ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_keymap_name‘yšæ(ëAconst–cšªªhar“*name,“Keymap“k˜eymapæ)Ž¡‘.ùœáSet–the“name› of“åk²!eymapá.‘ÿÔThis“name“will“then˜bMÞe“â"áregisteredâ"“áand“a²!v‘ÿdDailable˜for“useŽ¡‘.ùœin–0”a“âset‘¦fkeymap›0•áinputrc“directiv²!e“see“Section˜1.3“[Readline“Init“File],‘S page“4).‘|hTheŽ¡‘.ùœåname‘Gzáma²!y–ªrnot›ªsbMÞe“one˜of“Readline's˜builtin“k•²!eymap˜names;‘þny“ou˜ma“y–ªrnot˜add“a˜di eren²!tŽ¡‘.ùœname–S'for“one“of“Readline's“builtin“kš²!eymaps.‘ä!Y‘ÿeou“ma˜y“replace“the“name“assoMÞciatedŽŽŒ‹"Ï<Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—34ŽŽŽ ƒ33 ý ÌÍ‘.ùœwith–¼xa‘¼ygivš²!en“k˜eymap“b˜y›¼ycalling“this˜function“more“than˜once“with“the˜same“åk²!eymapޤ 33‘.ùœáargumen•²!t.‘ýY‘ÿeou›$ma“y˜assoMÞciate–%a˜registered˜åname‘£+áwith“a˜new˜k•²!eymap˜b“y‘%calling˜thisŽ¡‘.ùœfunction–Ìmore›Ìthan“once“with˜the“same“åname‘iáargumen²!t.‘NìThere˜is“no“w•²!a“y˜to‘Ìremo“v“eŽ¡‘.ùœa–:¤named›:£k²!eymap“once˜the“name˜has“bMÞeen˜registered.‘š–Readline˜will“mak²!e˜a“cop²!y˜ofŽ¡‘.ùœånameá.‘åÍThe–© return“v‘ÿdDalue›© is“greater“than“zero˜unless“åname‘Fáis“one˜of“Readline's“builtinŽ¡‘.ùœkš²!eymap–¦fnames“or“åk˜eymap‘ûgáis“one“of“Readline's“builtin“k˜eymaps.ŽŸ@Á‘Gëg2.4.3‘d(Binding‘íMKeysŽŽŸ³3‘GáKey–Ûsequences›Úare“assoMÞciate˜with“functions˜through“the˜k²!eymap.‘2;Readline˜has“sev²!eral˜in-Ž¡‘Gternal‘€²k²!eymaps:‘Ëâemacs_standard_keymapá,–ˆ<âemacs_meta_keymapá,“âemacs_ctlx_keymapá,“âvi_Ž¡‘Gmovement_keymapá,‘qxand–§âvi_insertion_keymapá.‘ +£âemacs_standard_keymap“áis–¨the“default,Ž¡‘Gand–¦fthe“examples“in“this“man²!ual“assume“that.ŽŸsô‘!GSince–Qâreadline()“áinstalls›Qa“set“of“default˜k²!ey“bindings“the“ rst˜time“it“is“called,‘b"there“isŽ¡‘Galw•²!a“ys–ëíthe›ëîdanger“that“a“custom˜binding“installed“bMÞefore˜the“ rst“call“to˜âreadline()“áwillŽ¡‘GbMÞe›o•²!v“erridden.‘®An‘alternate˜mec“hanism˜is–to˜install“custom˜k²!ey“bindings˜in“an˜initializationŽ¡‘Gfunction–uŠassigned“to“the“ârl_startup_hook“áv‘ÿdDariable“(see“Section“2.3“[Readline“V‘ÿeariables],Ž¡‘Gpage‘¦f27).ŽŸsõ‘!GThese–¦ffunctions“manage“k²!ey“bindings.Ž©´µ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_key‘yšæ(ëAin•ªªt›k“ey‘þÿÿ,˜rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t˜*functionæ)Ž¡‘.ùœáBinds–ö½åkš²!ey‘æÖáto“åfunction“áin‘ö¾the“curren˜tly“activ˜e‘ö¾k˜eymap.‘ÎãReturns“non-zero“in‘ö¾the“caseŽ¡‘.ùœof–¦fan“inš²!v‘ÿdDalid“åk˜eyá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_key_in_map‘yšæ(ëAin•ªªt›k“ey‘þÿÿ,˜rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t˜*function,Ž¡‘DGKeymap‘mapæ)Ž¡‘.ùœáBind–¦fåkš²!ey‘–~áto“åfunction“áin“åmapá.‘ÝÝReturns“non-zero“in“the“case“of“an“in˜v‘ÿdDalid“åk˜eyá.ŽŸ´¶’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_key_if_unbound‘yšæ(ëAin•ªªt›k“ey‘þÿÿ,˜rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“tŽ¡‘DG*functionæ)Ž¡‘.ùœáBinds–Iåk²!ey‘9-áto“åfunction“áif›Iit“is˜not“already“bMÞound˜in“the“curren•²!tly˜activ“e‘Ik“eymap.Ž¡‘.ùœReturns–¦fnon-zero“in“the“case“of“an“inš²!v‘ÿdDalid“åk˜ey‘–~áor“if“åk˜ey‘–~áis“already“bMÞound.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_key_if_unbound_in_map‘yšæ(ëAin•ªªt›k“ey‘þÿÿ,˜rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“tŽ¡‘DG*function,–Keymap“mapæ)Ž¡‘.ùœáBinds–GÓåk²!ey‘7ëáto“åfunction“áif“it“is“not“already“bMÞound“in“åmapá.‘¾WReturns“non-zero“in“the“caseŽ¡‘.ùœof–¦fan“inš²!v‘ÿdDalid“åk˜ey‘–~áor“if“åk˜ey‘–~áis“already“bMÞound.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_unbind_key‘yšæ(ëAin•ªªt‘k“eyæ)Ž¡‘.ùœáBind–[råkš²!ey‘K‹áto“the‘[sn˜ull“function›[sin“the˜currenš²!tly“activ˜e–[sk˜eymap.‘ýReturns“non-zero‘[rinŽ¡‘.ùœcase–¦fof“error.ŽŸ´¶’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_unbind_key_in_map‘yšæ(ëAin•ªªt›k“ey‘þÿÿ,˜Keymap˜mapæ)Ž¡‘.ùœáBind–¦fåkš²!ey‘–~áto“the“n˜ull“function“in“åmapá.‘ÝÝReturns“non-zero“in“case“of“error.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_unbind_function_in_map‘yšæ(ëArl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘*function,Ž¡‘DGKeymap‘mapæ)Ž¡‘.ùœáUnš²!bind–¦fall“k˜eys“that“execute“åfunction“áin“åmapá.ŽŽŒ‹#ÜÈŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—35ŽŽŽ ƒ33 ý ÌÍ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_unbind_command_in_map‘yšæ(ëAconst–cªªhar“*command,“Keymapޤ 33‘DGmapæ)Ž¡‘.ùœáUnš²!bind–¦fall“k˜eys“that“are“bMÞound“to“åcommand‘¸áin“åmapá.Ž©ÌÍ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_keyseq‘yšæ(ëAconst–cšªªhar“*k˜eyseq,“rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“tŽ¡‘DG*functionæ)Ž¡‘.ùœáBind–,Žthe“kš²!ey“sequence‘,represen˜ted“b˜y“the“string“åk˜eyseq‘mtáto‘,the“function“åfunctioná,Ž¡‘.ùœbMÞeginning–c®in›c­the“curren•²!t˜k“eymap.‘Ç This˜mak“es–c®new“k²!eymaps˜as“necessary‘ÿe.‘ÇŸThe“returnŽ¡‘.ùœv‘ÿdDalue–¦fis“non-zero“if“åkš²!eyseq‘çLáis“in˜v‘ÿdDalid.ŽŸÌÎ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_keyseq_in_map‘yšæ(ëAconst–cšªªhar“*k˜eyseq,Ž¡‘DGrl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t–*function,“Keymap“mapæ)Ž¡‘.ùœáBind–Éthe‘Èkš²!ey“sequence“represen˜ted“b˜y‘Èthe“string“åk˜eyseq‘B¯áto‘Èthe“function“åfunctioná.‘¦þThisŽ¡‘.ùœmakš²!es–€&new“k˜eymaps“as“necessary‘ÿe.›ÑInitial‘€%bindings“are“pMÞerformed“in“åmapá.˜The“returnŽ¡‘.ùœv‘ÿdDalue–¦fis“non-zero“if“åkš²!eyseq‘çLáis“in˜v‘ÿdDalid.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_key‘yšæ(ëAconst–cšªªhar“*k˜eyseq,“rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘*function,Ž¡‘DGKeymap‘mapæ)Ž¡‘.ùœáEquiv‘ÿdDalen²!t–¦fto“ârl_bind_keyseq_in_mapá.ŽŸÌÎ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_keyseq_if_unbound‘yšæ(ëAconst–cšªªhar“*k˜eyseq,Ž¡‘DGrl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘*functionæ)Ž¡‘.ùœáBinds–Cóåk²!eyseq‘„Øáto“åfunction“áif›Còit“is“not˜already“bMÞound˜in“the“curren•²!tly˜activ“e‘Cók“eymap.Ž¡‘.ùœReturns–¦fnon-zero“in“the“case“of“an“inš²!v‘ÿdDalid“åk˜eyseq‘çLáor“if“åk˜eyseq‘çLáis“already“bMÞound.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_keyseq_if_unbound_in_map‘yšæ(ëAconst–cšªªhar“*k˜eyseq,Ž¡‘DGrl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t–*function,“Keymap“mapæ)Ž¡‘.ùœáBinds–×åk²!eyseq‘øáto“åfunction›×áif“it“is˜not“already˜bMÞound“in˜åmapá.‘oãReturns“non-zero˜in“theŽ¡‘.ùœcase–¦fof“an“inš²!v‘ÿdDalid“åk˜eyseq‘çLáor“if“åk˜eyseq‘çLáis“already“bMÞound.ŽŸÌÎ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_generic_bind‘yšæ(ëAin•ªªt›t“ypUVe,˜const˜c“har˜*k“eyseq,˜c“har˜*data,Ž¡‘DGKeymap‘mapæ)Ž¡‘.ùœáBind–>ïthe›>ðk²!ey“sequence˜represenš²!ted“b˜y›>ðthe“string˜åk²!eyseq‘Õáto˜the“arbitrary˜pMÞoin²!ter“ådataá.Ž¡‘.ùœåt•²!ypšMÞe‘•ása“ys–jŽwhat‘jkind“of“data“is“p˜oinš²!ted‘jto“b˜y“ådataá;‘~this“can“bMÞe“a‘jfunction“(âISFUNCá),‘v†aŽ¡‘.ùœmacro–Š™(âISMACRá),‘(or“a›Š˜k²!eymap“(âISKMAPá).‘Ô™This˜makš²!es“new“k˜eymaps“as‘Š˜necessary‘ÿe.‘Ô™TheŽ¡‘.ùœinitial–¦fkš²!eymap“in“whic˜h“to“do“bindings“is“åmapá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_parse_and_bind‘yšæ(ëAcªªhar‘*lineæ)Ž¡‘.ùœáP²!arse–‡yåline‘$€áas›‡xif“it“had“bMÞeen“read“from˜the“âinputrc“á le“and“pMÞerform˜anš²!y“k˜ey“bindingsŽ¡‘.ùœand–¦fv‘ÿdDariable“assignmen²!ts“found“(see“Section“1.3“[Readline“Init“File],“page“4).ŽŸÌÎ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_read_init_file‘yšæ(ëAconst–cªªhar“* lenameæ)Ž¡‘.ùœáRead–È8kš²!eybindings“and‘È9v‘ÿdDariable“assignmen˜ts“from“å lename‘e?á(see‘È9Section“1.3“[ReadlineŽ¡‘.ùœInit–¦fFile],“page“4).ŽŸLÍ‘Gëg2.4.4‘d(Assoiciating–íMF‘þÄ£unction“Names“and“BindingsŽŽŸ³3‘GáThese–ž›functions‘žšalloš²!w“y˜ou›žšto“ nd˜out“what“k•²!eys˜in“v“ok“e–ž›named˜functions“and˜the“functionsŽ¡‘Gin•²!v“ok“ed›MLb“y‘MMa˜particular˜k“ey˜sequence.‘À*Y‘ÿeou‘MMma“y˜also˜assoMÞciate–MMa˜new˜function˜name“with˜anŽ¡‘Garbitrary‘¦ffunction.ŽŽŒ‹$ëqŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—36ŽŽŽ ƒ33 ý ÌÍ’“z[F‘ÿeunction]ŽŽ‘Gë@rl_command_func_t–LÉ*“rl_named_function‘yšæ(ëAconst–cªªhar“*nameæ)ޤ 33‘.ùœáReturn–¦fthe“function“with“name“ånameá.Ž©æg’“z[F‘ÿeunction]ŽŽ‘Gë@rl_command_func_t–LÉ*“rl_function_of_keyseq‘yšæ(ëAconst‘cªªharŽ¡‘DG*kšªªeyseq,–Keymap“map,“in˜t“*t˜ypUVeæ)Ž¡‘.ùœáReturn–è³the›è²function“in•²!v“ok“ed‘è³b“y˜åk“eyseq‘)™áin‘è³k“eymap˜åmapá.‘¤ÄIf˜åmap‘=´áis–è³âNULLá,‘ùEthe“curren²!tŽ¡‘.ùœkš²!eymap–q¤is‘q¥used.‘?˜If“åt˜ypMÞe‘«áis“not–q¥âNULLá,‘¤sthe“t˜ypMÞe–q¤of“the“ob‘›»ject›q¥is“returned“in˜the“âintŽ¡‘.ùœáv‘ÿdDariable–ŒLit“pMÞoinš²!ts“to“(one“of“âISFUNCá,‘‘…âISKMAPá,‘‘„or“âISMACRá).‘Õ*It“tak˜es“a“â"átranslatedâ"“ák˜eyŽ¡‘.ùœsequence–¦fand“should“not“bMÞe“used“if“the“k²!ey“sequence“can“include“NUL.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@rl_command_func_t–LÉ*“rl_function_of_keyseq_len‘yšæ(ëAconst‘cªªharŽ¡‘DG*kšªªeyseq,–size‘׉„F™œŽ‘G¼t“len,“Keymap“map,“in˜t“*t˜ypUVeæ)Ž¡‘.ùœáReturn–†¥the›†¦function“in•²!v“ok“ed˜b“y›†¥åk“eyseq‘ÇŒáof˜length˜ålen‘†¦áin˜k“eymap›†¦åmapá.‘}òEquiv‘ÿdDalen“t˜to‘†¥ârl_Ž¡‘.ùœfunction_of_keyseq–Jôáwith›Jóthe“addition“of“the˜ålen“áparameter.‘¿bIt“tak²!es˜a“â"átranslatedâ"Ž¡‘.ùœákš²!ey–¦fsequence“and“should“bMÞe“used“if“the“k˜ey“sequence“can“include“NUL.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ**“rl_invoking_keyseqs‘yšæ(ëArl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘*functionæ)Ž¡‘.ùœáReturn–¿ëan›¿êarra²!y“of˜strings“represen²!ting“the˜k²!ey“sequences“used˜to“in•²!v“ok“e˜åfunction‘¿ëáinŽ¡‘.ùœthe–¦fcurrenš²!t“k˜eymap.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ**“rl_invoking_keyseqs_in_map‘yšæ(ëArl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“tŽ¡‘DG*function,–Keymap“mapæ)Ž¡‘.ùœáReturn–¿ëan›¿êarra²!y“of˜strings“represen²!ting“the˜k²!ey“sequences“used˜to“in•²!v“ok“e˜åfunction‘¿ëáinŽ¡‘.ùœthe–¦fk²!eymap“åmapá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_function_dumper‘yšæ(ëAinªªt‘readableæ)Ž¡‘.ùœáPrinš²!t–‚Òthe“readline“function“names“and“the‘‚Ñk˜ey“sequences“curren˜tly“bMÞound“to“them“toŽ¡‘.ùœârl_outstreamá.‘¿ÕIf–LLåreadable‘éTáis›LMnon-zero,‘^Rthe“list˜is˜formatted˜in“suc•²!h˜a˜w“a“y˜that‘LLit˜canŽ¡‘.ùœbMÞe–¦fmade“part“of“an“âinputrc“á le“and“re-read.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_list_funmap_names‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáPrin²!t–¦fthe“names“of“all“bindable“Readline“functions“to“ârl_outstreamá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@const–LÉchar“**“rl_funmap_names‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–Sa›RNULL‘1terminated“arra²!y˜of“kno²!wn“function˜names.‘°×The“arra²!y“is˜sorted.‘°×TheŽ¡‘.ùœarra²!y–\hitself›\iis“alloMÞcated,‘k5but“not˜the“strings“inside.‘Å3Y‘ÿeou˜should“free˜the“arra²!y‘ÿe,‘k5but“notŽ¡‘.ùœthe–¦fpMÞoinš²!ters,“using“âfree“áor“ârl_free“áwhen“y˜ou“are“done.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_add_funmap_entry‘yšæ(ëAconst–cªªhar“*name,“rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“tŽ¡‘DG*functionæ)Ž¡‘.ùœáAdd–ð³åname‘»áto“the“list›ð´of“bindable˜Readline“command“names,‘Gand“mak²!e˜åfunction“átheŽ¡‘.ùœfunction–¦fto“bMÞe“called“when“åname‘Cmáis“in•²!v“ok“ed.ŽŸÙš‘Gëg2.4.5‘d(Allo–áwing‘íMUndoingŽŽŸ³3‘GáSuppMÞorting–L´the›L³undo“command˜is“a“painless˜thing,‘vGand“mak•²!es˜y“our‘L´functions˜m“uc“h‘L´moreŽ¡‘Guseful.‘ÝÝIt–¦fis“certainly“easy“to“try“something“if“yš²!ou“kno˜w“y˜ou“can“undo“it.ŽŸ Í‘!GIf–è*y²!our›è+function“simply“inserts˜text“once,‘8›or˜deletes“text“once,‘8›and˜uses“ârl_insert_Ž¡‘Gtext()–Y)áor“ârl_delete_text()›Y*áto“do“it,‘hœthen“undoing“is“already“done˜for“y²!ou“automatically‘ÿe.ŽŽŒ‹%úHŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—37ŽŽŽ ƒ33 ý ÌÍ‘!GIf–u†yš²!ou“do“m˜ultiple“insertions“or“m˜ultiple“deletions,‘²or“an˜y“com˜bination“of“these“opMÞerations,ޤ 33‘Gy²!ou–‘should›group“them˜together“in²!to˜one“opMÞeration.‘œ\This“is˜done“with˜ârl_begin_undo_Ž¡‘Ggroup()–¦fáand“ârl_end_undo_group()á.ŽŸ¹9‘!GThe–¦ftš²!ypMÞes“of“ev˜en˜ts“that“can“bMÞe“undone“are:ŽŸ ‘.ùœóߤN cmtt9Éenum–¹–undo_code“{“UNDO_DELETE,“UNDO_INSERT,“UNDO_BEGIN,“UNDO_END“};ŽŸ¹:‘!GáNotice–£¯that›£®âUNDO_DELETE“ámeans“to“insert˜some“text,‘¤:and“âUNDO_INSERT“ámeans˜to“deleteŽ¡‘Gsome–O²text.‘ÀöThat“is,›a the“undo“coMÞde“tells“what‘O±to“undo,˜not“ho²!w“to“undo“it.‘ÀöâUNDO_BEGIN“áandŽ¡‘GâUNDO_END–¦fáare“tags“added“b²!y“ârl_begin_undo_group()“áand“ârl_end_undo_group()á.ŽŸÅE’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_begin_undo_group‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáBegins–·‡sa²!ving›·ˆundo“information“in˜a“group“construct.‘AThe“undo˜information“usuallyŽ¡‘.ùœcomes–þIfrom›þHcalls“to“ârl_insert_text()˜áand“ârl_delete_text()á,‘TAbut“could˜bMÞe“theŽ¡‘.ùœresult–¦fof“calls“to“ârl_add_undo()á.Ž©ÅF’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_end_undo_group‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáCloses–{the›{curren²!t“undo˜group“started“with˜ârl_begin_undo_group‘¦f()á.‘ÏmThere“shouldŽ¡‘.ùœbMÞe–¦fone“call“to“ârl_end_undo_group()“áfor“eac²!h“call“to“ârl_begin_undo_group()á.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_add_undo‘yšæ(ëAenšªªum–undo‘׉„F™œŽ‘G¼coUVde“what,“in˜t“start,“in˜t“end,“c˜harŽ¡‘DG*textæ)Ž¡‘.ùœáRemem•²!bMÞer›ího“w˜to˜undo‘ìan˜ev“en“t˜(according˜to˜åwhat=á).‘/rThe‘ìa ected˜text˜runs˜fromŽ¡‘.ùœåstart‘ãfáto–¦fåendá,“and“encompasses“åtextá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_free_undo_list‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáF‘ÿeree–¦fthe“existing“undo“list.ŽŸÅE’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_do_undo‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáUndo–¾§the“ rst“thing“on“the“undo“list.‘žReturns“â0“áif“there“w²!as“nothing“to‘¾¨undo,‘ínon-zeroŽ¡‘.ùœif–¦fsomething“w²!as“undone.ަ‘!GFinally‘ÿe,‘Á#if›»Éy²!ou–»Êneither“insert“nor˜delete“text,‘Á#but˜directly“moMÞdify“the“existing˜text“(e.g.,Ž¡‘Gcš²!hange–§its“case),‘çKcall“ârl_modifying()“áonce,‘çLjust“bMÞefore“y˜ou‘§moMÞdify“the“text.‘àY‘ÿeou“m˜ustŽ¡‘Gsupply–¦fthe“indices“of“the“text“range“that“y²!ou“are“going“to“moMÞdify‘ÿe.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_modifying‘yšæ(ëAinšªªt–start,“in˜t“endæ)Ž¡‘.ùœáT‘ÿeell–Ô-Readline“to›Ô.sa•²!v“e–Ô-the“text“bMÞet•²!w“een˜åstart‘-áand–Ô-åend‘Báas“a˜single“undo“unit.‘g3It“isŽ¡‘.ùœassumed–¦fthat“yš²!ou“will“subsequen˜tly“moMÞdify“that“text.ŽŸ ‘Gëg2.4.6‘d(Redispla–áyŽŽŸ¿@’“zá[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_redisplay‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáChange–Šwhat's“displa•²!y“ed–Šon“the“screen“to‘Šre ect“the“currenš²!t“con˜ten˜ts“of“ârl_line_Ž¡‘.ùœbufferá.ŽŸÅE’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_forced_update_display‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáF‘ÿeorce–Äóthe“line“to“bšMÞe“up˜dated“and“redispla•²!y“ed,‘ •whether–Äóor“not“Readline“thinks“theŽ¡‘.ùœscreen–¦fdispla²!y“is“correct.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_on_new_line‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáT‘ÿeell–•Ðthe›•ÏupMÞdate“functions˜that“wš²!e“ha˜v˜e‘•Ïmo˜v˜ed“on˜to“a‘•Ïnew“(empt˜y)‘•Ïline,‘™!usually“afterŽ¡‘.ùœoutputting–¦fa“newline.ŽŽŒ‹& Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—38ŽŽŽ ƒ33 ý ÌÍ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_on_new_line_with_prompt‘yšæ(ëAvªªoidæ)ޤ 33‘.ùœáT‘ÿeell–ã_the›ã`upMÞdate“functions“that˜wš²!e“ha˜v˜e“mo˜v˜ed‘ã`on˜to“a“new–ã`line,‘ `with“årl‘Ä>‰x³HøŽ‘Ñtprompt‘ _áalreadyŽ¡‘.ùœdispla•²!y“ed.‘Ë®This–oÚcould“bMÞe›oÙused“b²!y“applications“that˜w•²!an“t–oÚto“output“the˜prompt“stringŽ¡‘.ùœthemselvš²!es,‘\Çbut–J_still“need“Readline“to“kno˜w“the“prompt“string“length“for“redispla˜y‘ÿe.‘¿0ItŽ¡‘.ùœshould–¦fbMÞe“used“after“setting“årl‘Ä>‰x³HøŽ–Ñtalready‘Ä>‰x³HøŽ“promptedá.Ž©’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_clear_visible_line‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáClear–¦fthe“screen“lines“correspMÞonding“to“the“currenš²!t“line's“con˜ten˜ts.ŽŸ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_reset_line_state‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReset–*‘the›*displa²!y“state“to“a˜clean“state“and“redispla²!y˜the“curren²!t“line“starting˜on“aŽ¡‘.ùœnew‘¦fline.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_crlf‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáMo•²!v“e–¦fthe“cursor“to“the“start“of“the“next“screen“line.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_show_char‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáDispla•²!y›ç³c“haracter–ç´åc‘‘·áon“ârl_outstreamá.‘¡ÅIf˜Readline“has˜not˜bMÞeen“set˜to“displa²!y˜metaŽ¡‘.ùœcš²!haracters–Ødirectly‘ÿe,‘9(this‘Ùwill“con˜v˜ert‘Ùmeta“c˜haracters“to›Ùa“meta-pre xed˜k²!ey“sequence.Ž¡‘.ùœThis–¦fis“inš²!tended“for“use“b˜y“applications“whic˜h“wish“to“do“their“o˜wn“redispla˜y‘ÿe.ŽŸ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_message‘yšæ(ëAconst–cªªhar“*,‘º/.‘èº.‘è».Ž‘æ)Ž¡‘.ùœáThe–y¦argumenš²!ts“are‘y¥a“format“string“as“w˜ould‘y¥bšMÞe“supplied“to“âprintfá,‘µÌp˜ossibly“con²!tainingŽ¡‘.ùœcon•²!v“ersion›NÂspMÞeci cations‘NÃsuc“h˜as˜`â%dá',‘¸Ùand˜an“y˜additional˜argumen“ts‘NÃnecessary˜toŽ¡‘.ùœsatisfy–ø•the“con•²!v“ersion–ø•spMÞeci cations.‘ÔiThe“resulting“string“is‘ø”displa•²!y“ed–ø•in“the“åec²!hoŽ¡‘.ùœareaá.‘qThe–‚Lecš²!ho“area“is“also“used“to“displa˜y“n˜umeric“argumen˜ts“and“searc˜h“strings.Ž¡‘.ùœY‘ÿeou–ßshould“call“ârl_save_prompt“áto“sa•²!v“e–ßthe“prompt“information“bMÞefore“calling“thisŽ¡‘.ùœfunction.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_clear_message‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáClear–zthe“message›zin“the“ec²!ho“area.‘ÏIf“the“prompt˜wš²!as“sa˜v˜ed“with“a‘zcall“to“ârl_save_Ž¡‘.ùœprompt–»oábMÞefore“the›»plast“call“to“ârl_messageá,‘±call˜ârl_restore_prompt“ábMÞefore“callingŽ¡‘.ùœthis‘¦ffunction.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_save_prompt‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáSa•²!v“e–,the›, loMÞcal“Readline“prompt˜displa²!y“state“in˜preparation“for“displa²!ying˜a“newŽ¡‘.ùœmessage–¦fin“the“message“area“with“ârl_message()á.ŽŸ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_restore_prompt‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáRestore–!Pthe“loMÞcal›!OReadline“prompt“displa²!y“state˜sa•²!v“ed›!Pb“y˜the˜most‘!Orecen“t˜call˜toŽ¡‘.ùœârl_save_promptá.‘Çóif–ômârl_save_prompt‘ônáwš²!as“called“to“sa˜v˜e›ônthe“prompt“bMÞefore˜a“callŽ¡‘.ùœto–k7ârl_messageá,‘œkthis‘k6function“should“bšMÞe“called“b˜efore“the‘k6corresp˜onding“call“to“ârl_Ž¡‘.ùœclear_messageá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_expand_prompt‘yšæ(ëAcªªhar‘*promptæ)Ž¡‘.ùœáExpand–#&anš²!y‘#%spMÞecial“c˜haracter›#%sequences“in˜åprompt‘`&áand˜set“up˜the“loMÞcal˜ReadlineŽ¡‘.ùœprompt›M%redispla²!y–M$v‘ÿdDariables.‘ÒThis“function˜is“called˜bš²!y“âreadline()á.‘ÒIt“ma˜y‘M%also“bMÞeŽ¡‘.ùœcalled–‰vto›‰uexpand“the“primary˜prompt“if“the˜ârl_on_new_line_with_prompt()“áfunctionŽ¡‘.ùœor– êârl_already_prompted“áv‘ÿdDariable“is“used.‘« It“returns“the“n•²!um“bMÞer– êof“visible“c²!haractersŽ¡‘.ùœon–/the“last“line“of“the“(pMÞossibly“mš²!ulti-line)‘.prompt.‘8Applications“ma˜y“indicate“thatŽŽŒ‹'{Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—39ŽŽŽ ƒ33 ý ÌÍ‘.ùœthe–XFprompt“conš²!tains“c˜haracters‘XGthat“tak˜e“up“no“ph˜ysical“screen‘XGspace“when“displa˜y˜edޤ 33‘.ùœb•²!y›ìxbrac“k“eting–ìwa˜sequence“of˜sucš²!h“c˜haracters›ìxwith“the˜spMÞecial“mark²!ers˜âRL_PROMPT_Ž¡‘.ùœSTART_IGNORE–àáand“âRL_PROMPT_END_IGNORE“á(declared“in“âreadline.há).‘ŒZThis“ma²!y“bMÞeŽ¡‘.ùœused–¦fto“em²!bšMÞed“terminal-sp˜eci c“escap˜e“sequences“in“prompts.Ž©ª«’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_prompt‘yšæ(ëAconst–cªªhar“*promptæ)Ž¡‘.ùœáMakš²!e–;³Readline“use“åprompt‘x³áfor“subsequen˜t“redispla˜y‘ÿe.‘ºLThis“calls“ârl_expand_prompt()Ž¡‘.ùœáto–¦fexpand“the“prompt“and“sets“ârl_prompt“áto“the“result.ŽŸ»¼‘Gëg2.4.7‘d(Moidifying‘íMT‘þÄ£extŽŽŸnï’“zá[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_insert_text‘yšæ(ëAconst–cªªhar“*textæ)Ž¡‘.ùœáInsert–ËÂåtext‘Ãáin²!to“the›ËÃline“at˜the“curren²!t˜cursor“pMÞosition.‘MòReturns˜the“n•²!um“bMÞer˜of‘ËÂc“har-Ž¡‘.ùœacters‘¦finserted.ŽŸª¬’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_delete_text‘yšæ(ëAinšªªt–start,“in˜t“endæ)Ž¡‘.ùœáDelete–ˆthe“text›ˆ‚bMÞet•²!w“een–ˆåstart‘Åáand“åend‘öÓáin˜the“curren²!t“line.‘„.Returns˜the“n•²!um“bMÞer‘ˆofŽ¡‘.ùœc²!haracters‘¦fdeleted.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“rl_copy_text‘yšæ(ëAinšªªt–start,“in˜t“endæ)Ž¡‘.ùœáReturn–¦fa“copš²!y“of“the“text“bMÞet˜w˜een“åstart‘ãfáand“åend‘¸áin“the“curren˜t“line.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_kill_text‘yšæ(ëAinšªªt–start,“in˜t“endæ)Ž¡‘.ùœáCopš²!y–œthe‘text“bMÞet˜w˜een–åstart‘Wœáand“åend‘ˆîáin“the–œcurren˜t“line›to“the˜kill“ring,‘7ªappMÞendingŽ¡‘.ùœor–øprepMÞending“to›ùthe“last“kill“if˜the“last“command“w²!as“a˜kill“command.‘)”The“text“isŽ¡‘.ùœdeleted.‘ÈIf–_åstart‘E_áis“less“than–^åendá,‘ Þthe“text–_is“appšMÞended,‘ Ýotherwise“prep˜ended.‘ÈIf“theŽ¡‘.ùœlast–¦fcommand“w²!as“not“a“kill,“a“new“kill“ring“slot“is“used.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_push_macro_input‘yšæ(ëAcªªhar‘*macroæ)Ž¡‘.ùœáCause–d’åmacro‘ñbáto“bšMÞe“inserted“in²!to“the“line,‘q¼as“if“it“had“b˜een“in•²!v“ok“ed›d’b“y˜a˜k“ey˜bMÞound˜toŽ¡‘.ùœa–¦fmacro.‘ÝÝNot“espMÞecially“useful;“use“ârl_insert_text()“áinstead.ŽŸ»¼‘Gëg2.4.8‘d(Character‘íMInputŽŽŸnð’“zá[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_read_key‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–Š7the›Š8next“c•²!haracter˜a“v‘ÿdDailable–Š7from˜Readline's“curren²!t˜input“stream.‘ÔyThis“han-Ž¡‘.ùœdles–.Sinput“inserted“in²!to“the“input“stream‘.Tvia“årl‘Ä>‰x³HøŽ–ÑtpMÞending‘Ä>‰x³HøŽ“input‘kSá(see–.SSection“2.3“[Read-Ž¡‘.ùœline–¸©V‘ÿeariables],›ý:page“27)‘¸ªand“ârl_stuff_char()á,‘ý9macros,˜and“c²!haracters‘¸ªread“fromŽ¡‘.ùœthe–×kš²!eybMÞoard.‘2.While“w˜aiting›Öfor“input,‘43this˜function“will˜call“an²!y˜function“assignedŽ¡‘.ùœto–¦fthe“ârl_event_hook“áv‘ÿdDariable.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_getc‘yšæ(ëAFILE‘*streamæ)Ž¡‘.ùœáReturn–Œthe‘Œ€next“cš²!haracter“a˜v‘ÿdDailable“from–Œ€åstreamá,‘Äàwhic˜h“is–Œassumed“to“bMÞe‘Œ€the“k˜eybMÞoard.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_stuff_char‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáInsert–òåc‘œáin²!to“the“Readline“input“stream.‘ÀâIt“will“bšMÞe“â"áreadâ"“áb˜efore“Readline“attemptsŽ¡‘.ùœto–6×read›6Øc²!haracters“from˜the“terminal˜with“ârl_read_key()á.‘¸®Up˜to“512˜cš²!haracters“ma˜yŽ¡‘.ùœbMÞe–¬+pushed“bacš²!k.‘ï,ârl_stuff_char“áreturns“1“if“the“c˜haracter“w˜as“successfully“inserted;Ž¡‘.ùœ0‘¦fotherwise.ŽŽŒ‹(%Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—40ŽŽŽ ƒ33 ý ÌÍ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_execute_next‘yšæ(ëAinªªt‘cæ)ޤ 33‘.ùœáMak²!e–HÆåc‘òËábMÞe“the›HÇnext“command“to˜bMÞe“executed˜when“ârl_read_key()“áis˜called.‘ÄþThisŽ¡‘.ùœsets‘¦fårl‘Ä>‰x³HøŽ–ÑtpMÞending‘Ä>‰x³HøŽ“inputá.Ž©x’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_clear_pending_input‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáUnset›|årl‘Ä>‰x³HøŽ–ÑtpMÞending‘Ä>‰x³HøŽ“inputá,‘\e ectiv•²!ely˜negating˜the˜e ect‘{of˜an“y˜previous˜call˜to˜ârl_Ž¡‘.ùœexecute_next()á.‘zYThis–…:w²!orks“only“if“the“pšMÞending“input“has“not“already“b˜een“readŽ¡‘.ùœwith‘¦fârl_read_key()á.ŽŸx’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_keyboard_input_timeout‘yšæ(ëAinªªt‘uæ)Ž¡‘.ùœáWhile–ÑŽwš²!aiting“for‘Ñk˜eybMÞoard“input“in“ârl_read_key()á,‘WReadline“will“w˜ait‘Ñfor“åu“ámi-Ž¡‘.ùœcroseconds–µÀfor“input›µÁbMÞefore“calling“an²!y“function˜assigned“to“ârl_event_hooká.‘ ìåu“ám²!ustŽ¡‘.ùœbšMÞe–Ógreater“than“or“equal“to“zero“(a“zero-length“timeout“is“equiv‘ÿdDalen²!t“to“a“p˜oll).‘e[TheŽ¡‘.ùœdefault–¦fwš²!aiting“p•MÞerio“d–¦fis“one-ten˜th“of“a“second.‘ÝÝReturns“the“old“timeout“v‘ÿdDalue.ŽŸ-è‘Gëg2.4.9‘d(T‘þÄ£erminal‘íMManagemen–átŽŽŸá’“zá[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_prep_terminal‘yšæ(ëAinªªt‘meta‘׉„F™œŽ‘G¼ agæ)Ž¡‘.ùœáMoMÞdify–¦the“terminal“settings“for“Readline's“use,‘w¶so“âreadline()“ácan“read“a“singleŽ¡‘.ùœc²!haracter–¶,at›¶-a“time“from˜the“k•²!eybMÞoard.‘ 0The˜åmeta‘Ä>‰x³HøŽ‘Ñt ag‘¦Dáargumen“t–¶,should˜bMÞe“non-zeroŽ¡‘.ùœif–¦fReadline“should“read“eigh²!t-bit“input.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_deprep_terminal‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáUndo–Ë­the›ˬe ects“of˜ârl_prep_terminal()á,‘Ôÿlea²!ving˜the“terminal“in˜the“state˜in“whic²!hŽ¡‘.ùœit–¦fwš²!as“bMÞefore“the“most“recen˜t“call“to“ârl_prep_terminal()á.ŽŸx’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_tty_set_default_bindings‘yšæ(ëAKeymap‘kmapæ)Ž¡‘.ùœáRead–oÝthe›oÜopMÞerating“system's“terminal“editing˜cš²!haracters“(as“w˜ould“bMÞe‘oÜdispla˜y˜ed“b˜yŽ¡‘.ùœâsttyá)–¦fto“their“Readline“equiv‘ÿdDalen²!ts.‘ÝÝThe“bindings“are“pMÞerformed“in“åkmapá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_tty_unset_default_bindings‘yšæ(ëAKeymap‘kmapæ)Ž¡‘.ùœáReset–Ò;the“bindings“manipulated“b²!y‘Ò:ârl_tty_set_default_bindings“áso“that“the“ter-Ž¡‘.ùœminal–¯editing›°c²!haracters“are˜bMÞound“to“ârl_insertá.‘2¹The˜bindings“are˜pMÞerformed“inŽ¡‘.ùœåkmapá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_tty_set_echoing‘yšæ(ëAinªªt‘v‘ÿUUalueæ)Ž¡‘.ùœáSet–¶Readline's“idea“of›¶Žwhether“or“not“it“is“ec²!hoing“output˜to“its“output“streamŽ¡‘.ùœ(årl‘Ä>‰x³HøŽ‘Ñtoutstreamá).‘ê€If›ÿñåv‘ÿdDalue‘œùáis–ÿò0,‘TReadline“doMÞes˜not“displa²!y˜output“to“årl‘Ä>‰x³HøŽ‘Ñtoutstreamá;‘,·an²!yŽ¡‘.ùœother–'v‘ÿdDalue›'enables“output.‘ _ÙThe“initial˜v‘ÿdDalue“is˜set“when˜Readline“initializes˜theŽ¡‘.ùœterminal–¦fsettings.‘ÝÝThis“function“returns“the“previous“v‘ÿdDalue.ŽŸx’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_reset_terminal‘yšæ(ëAconst–cªªhar“*terminal‘׉„F™œŽ‘G¼nameæ)Ž¡‘.ùœáReinitialize–Û÷Readline's“idea“of“the“terminal‘Ûøsettings“using“återminal‘Ä>‰x³HøŽ‘Ñtname‘xþáas“the“termi-Ž¡‘.ùœnal–Ñ¢t²!ypMÞe‘Ñ¡(e.g.,›Üqâvt100á).‘_If“återminal‘Ä>‰x³HøŽ‘Ñtname‘n¨áis“âNULLá,˜the›Ñ¡v‘ÿdDalue“of“the˜âTERM“áen•²!vironmen“tŽ¡‘.ùœv‘ÿdDariable–¦fis“used.ŽŸ-è‘Gëg2.4.10‘d(Utilit–áy‘íMF‘þÄ£unctionsŽŽŸá’“zá[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_save_state‘yšæ(ëAstruct–readline‘׉„F™œŽ‘G¼state“*spæ)Ž¡‘.ùœáSa•²!v“e–ka›ksnapshot“of“Readline's“in²!ternal˜state“to“åspá.‘ÊThe“con•²!ten“ts–kof˜the“åreadline‘Ä>‰x³HøŽ‘ÑtstateŽ¡‘.ùœástructure–òare“došMÞcumen²!ted“in“âreadline.há.‘ѶThe“caller“is“resp˜onsible“for“allo˜cating“theŽ¡‘.ùœstructure.ŽŽŒ‹)3šŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—41ŽŽŽ ƒ33 ý ÌÍ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_restore_state‘yšæ(ëAstruct–readline‘׉„F™œŽ‘G¼state“*spæ)ޤ 33‘.ùœáRestore–© Readline's›©in²!ternal“state˜to“that“stored˜in“åspá,‘ÛÇwhicš²!h“m˜ust“ha˜v˜e‘©bMÞeen“sa˜v˜ed‘©b˜y“aŽ¡‘.ùœcall–|¼to“ârl_save_stateá.‘ÏúThe‘|»con•²!ten“ts–|¼of“the“åreadline‘Ä>‰x³HøŽ‘Ñtstate‘Ãástructure“are“doMÞcumen²!tedŽ¡‘.ùœin–¦fâreadline.há.‘ÝÝThe“caller“is“respMÞonsible“for“freeing“the“structure.Ž©’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_free‘yšæ(ëAvªªoid‘*memæ)Ž¡‘.ùœáDeallošMÞcate–Œ“the‘Œ’memory“p˜oinš²!ted“to‘Œ’b˜y“åmemá.‘ìåmem“ám˜ust‘Œ’ha˜v˜e“bšMÞeen“allo˜cated‘Œ’b²!y“âmallocá.ŽŸ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_replace_line‘yšæ(ëAconst–cšªªhar“*text,“in˜t“clear‘׉„F™œŽ‘G¼undoæ)Ž¡‘.ùœáReplace›¼Jthe‘¼Kcon•²!ten“ts˜of˜ârl_line_buffer–¼Káwith˜åtextá.‘ŠThe“pMÞoin²!t˜and˜mark“are˜pre-Ž¡‘.ùœserv²!ed,‘.eif–epMÞossible.‘«ÝIf“åclear‘Ä>‰x³HøŽ‘Ñtundo‘5áis›dnon-zero,‘.fthe“undo˜list“assoMÞciated“with“the“curren²!tŽ¡‘.ùœline–¦fis“cleared.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_extend_line_buffer‘yšæ(ëAinªªt‘lenæ)Ž¡‘.ùœáEnsure–ž4that“ârl_line_buffer“áhas‘ž5enough“space“to“hold“ålen“ác²!haracters,‘ŸØpMÞossibly“real-Ž¡‘.ùœloMÞcating–¦fit“if“necessary‘ÿe.ŽŸ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_initialize‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáInitialize–n8or›n7re-initialize“Readline's˜in²!ternal“state.‘5RIt's“not˜strictly“necessary˜to“callŽ¡‘.ùœthis;–¦fâreadline()“ácalls“it“bMÞefore“reading“an²!y“input.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_ding‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáRing–¦fthe“terminal“bšMÞell,“ob˜eying“the“setting“of“âbell-styleá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_alphabetic‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáReturn–¦f1“if“åc‘Pjáis“an“alphabMÞetic“c²!haracter.ŽŸ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_display_match_list‘yšæ(ëAc•ªªhar›**matc“hes,˜in“t˜len,˜in“t˜maxæ)Ž¡‘.ùœáA‘#;con•²!v“enience–#[function“for“displa²!ying“a“list“of“strings“in“columnar“format“on“Read-Ž¡‘.ùœline's›woutput–xstream.‘âmatches“áis˜the˜list˜of“strings,‘»in˜argv“format,‘»suc²!h˜as˜a“list˜ofŽ¡‘.ùœcompletion–é9matcš²!hes.‘žÎâlen“áis“the“n˜um˜bMÞer“of“strings“in“âmatchesá,‘and“âmax“áis“the“length“ofŽ¡‘.ùœthe–$ˆlongest›$‡string“in“âmatchesá.‘²“This“function˜uses“the“setting˜of“âprint-completions-Ž¡‘.ùœhorizontally–Yðáto‘Yñselect“hoš²!w“the“matc˜hes‘Yñare“displa˜y˜ed“(see“Section‘Yñ1.3.1“[ReadlineŽ¡‘.ùœInit–Ÿ´File“Synš²!tax],‘¡ page‘Ÿµ4).‘Û¢When“displa˜ying“completions,‘¡ this“function‘Ÿµsets“the“n˜um-Ž¡‘.ùœbMÞer–ÔTof›ÔScolumns“used˜for“displa²!y“to˜the“v‘ÿdDalue˜of“âcompletion-display-widthá,‘þWthe“v‘ÿdDalueŽ¡‘.ùœof–¦fthe“en•²!vironmen“t–¦fv‘ÿdDariable“âCOLUMNSá,“or“the“screen“width,“in“that“order.ަ‘!GThe–Ûfolloš²!wing‘Ûare“implemen˜ted“as“macros,‘èlik²!e“erasing“a“line.‘}÷ReadlineŽ¡‘.ùœdoMÞes–4Anot“use›4@all“of“a“terminal's˜capabilities,‘W·and“this“function“will˜return“v‘ÿdDalues“forŽ¡‘.ùœonly–¦fthose“capabilities“Readline“uses.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_clear_history‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáClear–C%the“history›C$list“b²!y“deleting“all˜of“the“en²!tries,‘Vþin“the“same“manner˜as“the“HistoryŽ¡‘.ùœlibrary's›%>âclear_history()–%=áfunction.‘ ZeThis“di ers˜from˜âclear_history“ábMÞecause˜itŽ¡‘.ùœfrees–¦fpriv‘ÿdDate“data“Readline“sa•²!v“es–¦fin“the“history“list.ŽŽŒ‹+Q—Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—43ŽŽŽ ƒ33 ý ÌÍ‘Gëg2.4.12‘d(Alternate‘íMIn–áterfaceŽŽŸ³3‘GáAn–™Äalternate‘™Ãinš²!terface“is“a˜v‘ÿdDailable“to›™Ãplain“âreadline()á.‘„RSome“applications“need˜to“in•²!terlea“v“eޤ 33‘Gk²!eybMÞoard‘F'I/O‘Eþwith›F( le,–ndevice,“or˜windoš²!w–F'system“I/O,“t˜ypically‘F(b˜y“using“a“main‘F(loMÞop“toŽ¡‘Gâselect()–Váon›Vv‘ÿdDarious“ le˜descriptors.‘ ìëT‘ÿeo“accommoMÞdate˜this“need,‘Âreadline“can˜also“bMÞeŽ¡‘Gin•²!v“ok“ed–¾=as“a‘¾>`callbacš²!k'“function“from“an“ev˜en˜t›¾>loMÞop.‘%bThere“are“functions˜aš²!v‘ÿdDailable“to“mak˜eŽ¡‘Gthis‘¦feasy‘ÿe.Ž©£Ø’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_callback_handler_install‘yšæ(ëAconst–cªªhar“*prompt,Ž¡‘DGrl‘׉„F™œŽ–G¼vªªcpfunc‘׉„F™œŽ“t‘*lhandleræ)Ž¡‘.ùœáSet–ùÅup›ùÄthe“terminal“for˜readline“I/O‘ù™and“displa²!y“the˜initial“expanded“v‘ÿdDalue˜of“åpromptá.Ž¡‘.ùœSa•²!v“e–ñ‰x³HøŽ–Ñtcallbacš²!k‘Ä>‰x³HøŽ“read‘Ä>‰x³HøŽ“c˜har–9(e.g.,‘5íthe“state“of‘8an˜y“activ˜e“incremen˜tal“searc˜hes).‘6UThis“isŽ¡‘.ùœin²!tended–Ùto›ÙbMÞe“used˜b²!y“applications˜that“wish˜to“pMÞerform˜their“o²!wn˜signal“handling;Ž¡‘.ùœReadline's–¦fin²!ternal“signal“handler“calls“this“when“appropriate.ŽŸ£Ù’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_callback_handler_remove‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáRestore–L)the›L(terminal“to˜its“initial˜state“and“remo•²!v“e˜the‘L)line˜handler.‘Ï%Y‘ÿeou˜ma“y‘L)callŽ¡‘.ùœthis–ºfunction›»from“within“a“callbac²!k˜as“w²!ell“as˜indepMÞenden²!tly‘ÿe.‘«NIf“the˜ålhandler‘×ãáinstalledŽ¡‘.ùœb²!y– 1ârl_callback_handler_install› 0ádoMÞes“not“exit˜the“program,‘*;either“this˜function“orŽ¡‘.ùœthe–ÅMfunction›ÅLreferred“to“b²!y˜the“v‘ÿdDalue˜of“ârl_deprep_term_function“áshould˜bMÞe“calledŽ¡‘.ùœbMÞefore–¦fthe“program“exits“to“reset“the“terminal“settings.ŽŸ¸R‘Gëg2.4.13‘d(A–íMReadline“ExampleŽŽŸ³3‘GáHere–.is‘/a“function“whicš²!h“c˜hanges‘/lo˜w˜ercase“c˜haracters“to“their‘/uppMÞercase“equiv‘ÿdDalen˜ts,‘+àandŽ¡‘GuppMÞercase–>cš²!haracters“to“lo˜w˜ercase.‘¦XIf“this“function“w˜as“bMÞound“to“`âM-cá',‘d™then“t˜yping“`âM-cá'Ž¡‘Gw•²!ould›ɳc“hange–É´the˜case“of˜the“c²!haracter˜under“pMÞoin•²!t.‘GÅT“yping‘É´`âM-1–¦f0“M-cá'˜w•²!ould‘É´c“hange˜theŽ¡‘Gcase–¦fof“the“folloš²!wing“10“c˜haracters,“lea˜ving“the“cursor“on“the“last“c˜haracter“c˜hanged.ŽŸ놑.ùœâ/*–¿ªInvert“the“case“of“the“COUNT“following“characters.“*/Ž¡‘.ùœintŽ¡‘.ùœinvert_case_line–¿ª(count,“key)Ž¡‘K·îint–¿ªcount,“key;ŽŽŒ‹,_Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—44ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ{Ž© 33‘:xðregister–¿ªint“start,“end,“i;ޤff‘:xðstart–¿ª=“rl_point;Ž¡‘:xðif–¿ª(rl_point“>=“rl_end)ަ‘EøDreturn‘¿ª(0);Ž¡‘:xðif–¿ª(count“<“0)ަ‘EøD{ަ‘Qw˜direction–¿ª=“-1;ަ‘Qw˜count–¿ª=“-count;ަ‘EøD}ަ‘:xðelseަ‘EøDdirection–¿ª=“1;Ž¡‘:xð/*–¿ªFind“the“end“of“the“range“to“modify.“*/ަ‘:xðend–¿ª=“start“+“(count“*“direction);Ž¡‘:xð/*–¿ªForce“it“to“be“within“range.“*/ަ‘:xðif–¿ª(end“>“rl_end)ަ‘EøDend–¿ª=“rl_end;ަ‘:xðelse–¿ªif“(end“<“0)ަ‘EøDend–¿ª=“0;Ž¡‘:xðif–¿ª(start“==“end)ަ‘EøDreturn‘¿ª(0);Ž¡‘:xðif–¿ª(start“>“end)ަ‘EøD{ަ‘Qw˜int–¿ªtemp“=“start;ަ‘Qw˜start–¿ª=“end;ަ‘Qw˜end–¿ª=“temp;ަ‘EøD}Ž¡‘:xð/*–¿ªTell“readline“that“we“are“modifying“the“line,ަ‘K·îso–¿ªit“will“save“the“undo“information.“*/ަ‘:xðrl_modifying–¿ª(start,“end);Ž¡‘:xðfor–¿ª(i“=“start;“i“!=“end;“i++)ަ‘EøD{ަ‘Qw˜if–¿ª(_rl_uppercase_p“(rl_line_buffer[i]))ަ‘\öìrl_line_buffer[i]–¿ª=“_rl_to_lower“(rl_line_buffer[i]);ަ‘Qw˜else–¿ªif“(_rl_lowercase_p“(rl_line_buffer[i]))ަ‘\öìrl_line_buffer[i]–¿ª=“_rl_to_upper“(rl_line_buffer[i]);ަ‘EøD}ަ‘:xð/*–¿ªMove“point“to“on“top“of“the“last“character“changed.“*/ŽŽŒ‹-oÌŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—45ŽŽŽ ƒ33 ý ÌÍ‘:xðârl_point–¿ª=“(direction“==“1)“?“end“-“1“:“start;ޤ 33‘:xðreturn‘¿ª(0);Ž¡‘.ùœ}ŽŸ Ñ‘Gëg2.4.14‘d(Alternate–íMIn–áterface“ExampleŽŽŸ³3‘GáHere–¡Êis“a“complete“program“that“illustrates“Readline's“alternate“in²!terface.‘Ð It“reads“linesŽ¡‘Gfrom–¸0the“terminal“and“displaš²!ys“them,‘¼¢pro˜viding“the“standard“history“and“T‘ÿeAB‘¸+completionŽ¡‘Gfunctions.‘ÝÝIt–¦funderstands“the“EOF“c²!haracter“or“â"áexitâ"“áto“exit“the“program.ŽŸ@‘.ùœâ/*–¿ªStandard“include“files.“stdio.h“is“required.“*/Ž¡‘.ùœ#include‘¿ªŽ¡‘.ùœ#include‘¿ªŽ¡‘.ùœ#include‘¿ªŽ¡‘.ùœ#include‘¿ªŽ©ff‘.ùœ/*–¿ªUsed“for“select(2)“*/Ž¡‘.ùœ#include‘¿ªŽ¡‘.ùœ#include‘¿ªŽ¦‘.ùœ#include‘¿ªŽ¦‘.ùœ#include‘¿ªŽ¦‘.ùœ/*–¿ªStandard“readline“include“files.“*/Ž¡‘.ùœ#include‘¿ªŽ¡‘.ùœ#include‘¿ªŽ¦‘.ùœstatic–¿ªvoid“cb_linehandler“(char“*);Ž¡‘.ùœstatic–¿ªvoid“sighandler“(int);ަ‘.ùœint‘¿ªrunning;Ž¡‘.ùœint‘¿ªsigwinch_received;Ž¡‘.ùœconst–¿ªchar“*prompt“=“"rltest$“";ަ‘.ùœ/*–¿ªHandle“SIGWINCH“and“window“size“changes“when“readline“is“not“active“andŸnï„ ™Ž¡‘@8šreading–¿ªa“character.“*/Ž¡‘.ùœstatic‘¿ªvoidŽ¡‘.ùœsighandler–¿ª(int“sig)Ž¡‘.ùœ{Ž¡‘:xðsigwinch_received–¿ª=“1;Ž¡‘.ùœ}ަ‘.ùœ/*–¿ªCallback“function“called“for“each“line“when“accept-line“executed,“EOFŽ¡‘@8šseen,–¿ªor“EOF“character“read.‘ TThis“sets“a“flag“and“returns;“it“couldŽ¡‘@8šalso–¿ªcall“exit(3).“*/Ž¡‘.ùœstatic‘¿ªvoidŽ¡‘.ùœcb_linehandler–¿ª(char“*line)ŽŽŒ‹.tÈŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—46ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ{ޤ 33‘:xð/*–¿ªCan“use“^D“(stty“eof)“or“`exit'“to“exit.“*/Ž¡‘:xðif–¿ª(line“==“NULL“||“strcmp“(line,“"exit")“==“0)Ž¡‘EøD{Ž¡‘Qw˜if–¿ª(line“==“0)Ž¡‘\öìprintf‘¿ª("\n");Ž¡‘Qw˜printf‘¿ª("exit\n");Ž¡‘Qw˜/*–¿ªThis“function“needs“to“be“called“to“reset“the“terminal“settings,Ÿnï„ ™Ž¡‘b¶–and–¿ªcalling“it“from“the“line“handler“keeps“one“extra“prompt“fromŸnï„ Ž¡‘b¶–being–¿ªdisplayed.“*/Ž¡‘Qw˜rl_callback_handler_remove‘¿ª();Ž©ff‘Qw˜running–¿ª=“0;Ž¡‘EøD}Ž¡‘:xðelseŽ¡‘EøD{Ž¡‘Qw˜if‘¿ª(*line)Ž¡‘\öìadd_history‘¿ª(line);Ž¡‘Qw˜printf–¿ª("input“line:“%s\n",“line);Ž¡‘Qw˜free‘¿ª(line);Ž¡‘EøD}Ž¡‘.ùœ}ަ‘.ùœintŽ¡‘.ùœmain–¿ª(int“c,“char“**v)Ž¡‘.ùœ{Ž¡‘:xðfd_set‘¿ªfds;Ž¡‘:xðint‘¿ªr;ަ‘:xð/*–¿ªSet“the“default“locale“values“according“to“environment“variables.“*/Ÿnï„ ™Ž¡‘:xðsetlocale–¿ª(LC_ALL,“"");ަ‘:xð/*–¿ªHandle“window“size“changes“when“readline“is“not“active“and“readingŽ¡‘K·îcharacters.‘¿ª*/Ž¡‘:xðsignal–¿ª(SIGWINCH,“sighandler);ަ‘:xð/*–¿ªInstall“the“line“handler.“*/Ž¡‘:xðrl_callback_handler_install–¿ª(prompt,“cb_linehandler);ަ‘:xð/*–¿ªEnter“a“simple“event“loop.‘ TThis“waits“until“something“is“availableŽ¡‘K·îto–¿ªread“on“readline's“input“stream“(defaults“to“standard“input)“andŽ¡‘K·îcalls–¿ªthe“builtin“character“read“callback“to“read“it.‘ TIt“does“notŽ¡‘K·îhave–¿ªto“modify“the“user's“terminal“settings.“*/Ž¡‘:xðrunning–¿ª=“1;Ž¡‘:xðwhile‘¿ª(running)Ž¡‘EøD{Ž¡‘Qw˜FD_ZERO‘¿ª(&fds);ŽŽŒ‹/{xŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—47ŽŽŽ ƒ33 ý ÌÍ‘Qw˜âFD_SET–¿ª(fileno“(rl_instream),“&fds);Ž©ff‘Qw˜r–¿ª=“select“(FD_SETSIZE,“&fds,“NULL,“NULL,“NULL);ޤ 33‘Qw˜if–¿ª(r“<“0“&&“errno“!=“EINTR)Ž¡‘\öì{Ž¡‘hv@perror–¿ª("rltest:“select");Ž¡‘hv@rl_callback_handler_remove‘¿ª();Ž¡‘hv@break;Ž¡‘\öì}Ž¡‘Qw˜if‘¿ª(sigwinch_received)Ž¡‘.ùœ{Ž¡‘:xðrl_resize_terminal‘¿ª();Ž¡‘:xðsigwinch_received–¿ª=“0;Ž¡‘.ùœ}Ž¡‘Qw˜if–¿ª(r“<“0)Ž¡‘.ùœcontinue;ަ‘Qw˜if–¿ª(FD_ISSET“(fileno“(rl_instream),“&fds))Ž¡‘\öìrl_callback_read_char‘¿ª();Ž¡‘EøD}ަ‘:xðprintf–¿ª("rltest:“Event“loop“has“exited\n");Ž¡‘:xðreturn‘¿ª0;Ž¡‘.ùœ}ŽŸLÑ‘Gë]2.5‘™Readline–f@Signal“HandlingŽŽŸ33‘GáSignals–¨”are“async•²!hronous‘¨“ev“en“ts›¨”sen“t˜to˜a‘¨“proMÞcess˜b“y˜the˜Unix‘¨“k“ernel,‘©sometimes˜on˜bMÞehalfŽ¡‘Gof–*£another“proMÞcess.‘j•They“are“inš²!tended‘*¤to“indicate“exceptional“ev˜en˜ts,‘K²lik˜e‘*¤a“user“pressingŽ¡‘Gthe– 'inš²!terrupt“k˜ey“on“his“terminal,‘#or“a“net˜w˜ork“connection“bMÞeing“brok˜en.‘ There“is“a“classŽ¡‘Gof–usignals›u€that“can“bMÞe˜sen²!t“to“the˜proMÞcess“curren²!tly“reading˜input“from“the˜k²!eybMÞoard.‘ÍSinceŽ¡‘GReadline–Wc²!hanges›W‚the“terminal˜attributes“when˜it“is˜called,‘ÃÇit˜needs“to˜pšMÞerform“sp˜ecialŽ¡‘GproMÞcessing–OBwhen›OAsuc²!h“a˜signal“is“receiv²!ed˜in“order˜to“restore“the˜terminal“to˜a“sane“state,‘`¯orŽ¡‘Gproš²!vide–¦fapplication“writers“with“functions“to“do“so“man˜ually‘ÿe.ŽŸÙ›‘!GReadline–Øúconš²!tains“an“in˜ternal›Øùsignal“handler“that“is“installed“for˜a“n•²!um“bMÞer–Øúof“signalsŽ¡‘G(âSIGINTá,–ª âSIGQUITá,“âSIGTERMá,›ª âSIGHUPá,“âSIGALRMá,“âSIGTSTPá,“âSIGTTINá,˜and‘vâSIGTTOUá).‘LÿWhenŽ¡‘Gone–5Fof“these“signals“is“receiv²!ed,‘Kæthe“signal‘5Ghandler“will“reset“the“terminal“attributes“to“thoseŽ¡‘Gthat–á w²!ere›áin“e ect˜bMÞefore“âreadline()˜áw²!as“called,‘ïÍreset“the˜signal“handling˜to“what˜it“w²!asŽ¡‘GbMÞefore–4’âreadline()›4‘áw²!as“called,‘KUand“resend˜the“signal“to˜the“calling˜application.‘·ìIf˜and“whenŽ¡‘Gthe–"calling›!application's“signal˜handler“returns,‘0ÐReadline“will˜reinitialize“the˜terminal“andŽ¡‘Gcon•²!tin“ue–dLto“accept›dMinput.‘ÇÔWhen“a“âSIGINT˜áis“receiv²!ed,‘q„the“Readline˜signal“handler“pMÞerformsŽ¡‘Gsome‘¦žadditional›¦w•²!ork,‘æ¬whic“h˜will–¦žcause“anš²!y“partially-en˜tered‘¦line“to“bšMÞe“ab˜orted‘¦(see“theŽ¡‘Gdescription–¦fof“ârl_free_line_state()“ábMÞelo²!w).ŽŸÙœ‘!GThere–ëªis“an“additional“Readline“signal“handler,›for“âSIGWINCHá,˜whicš²!h“the“k˜ernel“sends“to“aŽ¡‘GproMÞcess–v`whenev²!er›v_the“terminal's“size˜c²!hanges“(for˜example,‘ûif“a˜user“resizes˜an“âxtermá).‘ÍÛTheŽ¡‘GReadline–GtâSIGWINCH“áhandler›GsupMÞdates“Readline's“in²!ternal“screen˜size“information,‘o·and“thenŽ¡‘Gcalls–÷an²!y“âSIGWINCH“ásignal“handler“the“calling“application‘öhas“installed.‘Readline“calls“theŽŽŒ‹0¶Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—48ŽŽŽ ƒ33 ý ÌÍ‘Gapplication's–;âSIGWINCH“ásignal›; handler“without“resetting“the“terminal“to˜its“original“state.ޤ 33‘GIf–Ö«the“application's“signal“handler“došMÞes“more“than‘Ö¬up˜date“its“idea“of“the“terminal“size“andŽ¡‘Greturn–Ž(for“example,‘’ìa“âlongjmp“ábac²!k“to“a“main“prošMÞcessing“lo˜op),‘’ìit“ämust‘—øácall“ârl_cleanup_Ž¡‘Gafter_signal()–¦fá(describšMÞed“b˜elo²!w),“to“restore“the“terminal“state.Ž©®‘!GWhen–­an›­application“is“using˜the“callbacš²!k“in˜terface›­(see“Section“2.4.12˜[Alternate“In-Ž¡‘Gterface],–‰page›(€43),“Readline˜installs–(signal˜handlers“only“for˜the“duration˜of“the˜call“toŽ¡‘Gârl_callback_read_chará.‘ƒ”Applications–Ý£using“the‘Ý¢callbacš²!k“in˜terface“should“bMÞe“prepared“toŽ¡‘Gclean–3«up“Readline's›3ªstate“if“they“wish“to˜handle“the“signal“bMÞefore“the˜line“handler“completesŽ¡‘Gand–¦frestores“the“terminal“state.ަ‘!GIf–Kan“application“using‘Kthe“callbacš²!k“in˜terface“wishes“to“ha˜v˜e‘KReadline“install“its“signalŽ¡‘Ghandlers–ºat›º€the“time˜the“application˜calls“ârl_callback_handler_install˜áand“remo•²!v“e˜themŽ¡‘Gonly–Ê\when“a“complete›Ê[line“of“input“has“bMÞeen“read,‘ö^it˜should“set“the“ârl_persistent_signal_Ž¡‘Ghandlers–¥qáv›ÿdDariable“to‘¥pa“non-zero“v˜alue.‘ˆ6This“allo²!ws“an›¥papplication“to“defer“all˜of“the“handlingŽ¡‘Gof–!Îthe›!Ïsignals“Readline“catc²!hes“to˜Readline.‘±ªApplications˜should“use“this“v‘ÿdDariable˜with“care;Ž¡‘Git–¹(can“result›¹)in“Readline“catc²!hing“signals“and˜not“acting“on“them“(or˜allo²!wing“the“applicationŽ¡‘Gto–<react“to›< them)“un²!til“the“application˜calls“ârl_callback_read_chará.‘žÃThis˜can“result“inŽ¡‘Gan–’™application“bšMÞecoming“less“resp˜onsivš²!e“to“k˜eybMÞoard‘’šsignals“lik˜e“SIGINT.“If“an“applicationŽ¡‘GdošMÞes–èÓnot“w•²!an“t–èÓor“need“to“p˜erform“an²!y“signal“handling,‘½or“do˜es“not“need“to“do“an²!y“pro˜cessingŽ¡‘GbšMÞet•²!w“een–¦fcalls“to“ârl_callback_read_chará,“setting“this“v‘ÿdDariable“ma²!y“b˜e“desirable.ŽŸ®‘!GReadline–o#proš²!vides“t˜w˜o“v‘ÿdDariables“that“allo˜w‘o"application“writers“to“con˜trol“whether“or“notŽ¡‘Git–û.will›û/catc²!h“certain“signals“and˜act“on“them˜when“they“are“receiv²!ed.‘Ü6It“is˜impMÞortan²!t“thatŽ¡‘Gapplications–f“c²!hange›f’the“v‘ÿdDalues˜of“these˜v‘ÿdDariables“only˜when“calling“âreadline()á,‘–not˜in“aŽ¡‘Gsignal–¦fhandler,“so“Readline's“in²!ternal“signal“state“is“not“corrupted.ŽŸ(÷’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_catch_signalsŽ¡‘.ùœáIf–w*this›w)v‘ÿdDariable“is˜non-zero,‘€œReadline“will“install˜signal“handlers˜for“âSIGINTá,‘€œâSIGQUITá,Ž¡‘.ùœâSIGTERMá,–¦fâSIGHUPá,“âSIGALRMá,“âSIGTSTPá,“âSIGTTINá,“and“âSIGTTOUá.ަ‘.ùœThe–¦fdefault“v‘ÿdDalue“of“ârl_catch_signals“áis“1.ŽŸ(ö’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_catch_sigwinchŽ¡‘.ùœáIf–…Tthis“v›ÿdDariable“is“set“to“a“non-zero“v˜alue,‘½Readline“will“install“a“signal“handler“forŽ¡‘.ùœâSIGWINCHá.ަ‘.ùœThe–¦fdefault“v‘ÿdDalue“of“ârl_catch_sigwinch“áis“1.ŽŸ(÷’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_persistent_signal_handlersŽ¡‘.ùœáIf–Ë!an›Ë application“using˜the“callbacš²!k“in˜terface›Ë wishes“Readline's˜signal“handlers˜to“bMÞeŽ¡‘.ùœinstalled–zand“activ²!e“during“the“set‘zof“calls“to“ârl_callback_read_char“áthat“constitutesŽ¡‘.ùœan–¦fen²!tire“single“line,“it“should“set“this“v›ÿdDariable“to“a“non-zero“v˜alue.ަ‘.ùœThe–¦fdefault“v‘ÿdDalue“of“ârl_persistent_signal_handlers“áis“0.ŽŸ(ö’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_change_environmentŽ¡‘.ùœáIf–Ã2this›Ã1v‘ÿdDariable“is˜set“to˜a“non-zero˜v‘ÿdDalue,‘Êeand˜Readline“is˜handling“âSIGWINCHá,‘ÊdRead-Ž¡‘.ùœline–›Áwill››ÂmoMÞdify“the“åLINES‘?Iáand“åCOLUMNS‘?Háen•²!vironmen“t˜v‘ÿdDariables–›ÁupMÞon“receipt˜of“aŽ¡‘.ùœâSIGWINCHަ‘.ùœáThe–¦fdefault“v‘ÿdDalue“of“ârl_change_environment“áis“1.ŽŽŒ‹1rŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—49ŽŽŽ ƒ33 ý ÌÍ‘!GIf–¸0an“application›¸/doMÞes“not“wish“to˜ha•²!v“e–¸0Readline“catcš²!h“an˜y–¸/signals,‘¼£or“to–¸0handle“signalsޤ 33‘Gother–¤Ãthan›¤Äthose“Readline“catc²!hes˜(âSIGHUPá,›äZfor“example),˜Readline‘¤Äproš²!vides“con˜v˜enienceŽ¡‘Gfunctions–¦fto“do“the“necessary“terminal“and“inš²!ternal“state“clean˜up“upMÞon“receipt“of“a“signal.Ž©¹’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_pending_signal‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–IÚthe›IÙsignal“n•²!um“bMÞer˜of–IÚthe˜most“recen²!t“signal˜Readline“receiv²!ed˜but“has˜not“y²!etŽ¡‘.ùœhandled,–¦for“0“if“there“is“no“pMÞending“signal.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_cleanup_after_signal‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáThis–¦function›¥will“reset˜the“state˜of“the“terminal˜to“what˜it“w²!as˜bMÞefore“âreadline()Ž¡‘.ùœáwš²!as–†called,‘Œ~and“remo˜v˜e›†the“Readline˜signal“handlers˜for“all˜signals,‘ŒdepMÞending˜on“theŽ¡‘.ùœv‘ÿdDalues–¦fof“ârl_catch_signals“áand“ârl_catch_sigwinchá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_free_line_state‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáThis–µwill“free›µ~an²!y“partial“state“assoMÞciated˜with“the“curren²!t“input˜line“(undo“infor-Ž¡‘.ùœmation,‘z$anš²!y–˜partial“history“en˜try‘ÿe,‘z#an˜y“partially-en˜tered“k˜eybMÞoard“macro,‘z$and“an˜yŽ¡‘.ùœpartially-en•²!tered‘½Õn“umeric›½Ôargumen“t).‘ $*This˜should–½ÕbMÞe“called˜bMÞefore“ârl_cleanup_Ž¡‘.ùœafter_signal()á.‘ LãThe– ½Readline“signal“handler› ¾for“âSIGINT“ácalls“this˜to“abMÞort“theŽ¡‘.ùœcurren²!t–¦finput“line.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_reset_after_signal‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáThis–k¶will“reinitialize“the“terminal“and“reinstall‘kµan²!y“Readline“signal“handlers,‘wsdepMÞend-Ž¡‘.ùœing–¦fon“the“v‘ÿdDalues“of“ârl_catch_signals“áand“ârl_catch_sigwinchá.ŽŸ¸‘!GIf–îan›îapplication“w•²!an“ts˜to–îforce˜Readline“to˜handle“an²!y˜signals“that˜ha•²!v“e‘îarriv“ed˜whileŽ¡‘Git–M9has›M:bMÞeen“executing,‘vïârl_check_signals()“áwill˜call“Readline's˜in²!ternal“signal˜handler“ifŽ¡‘Gthere–jare›jan²!y“pMÞending˜signals.‘(õThis˜is“primarily˜in²!tended“for˜those“applications˜that“useŽ¡‘Ga–‰úcustom›‰ùârl_getc_function“á(see˜Section“2.3˜[Readline“V‘ÿeariables],‘ÂÞpage˜27)“and˜wish“toŽ¡‘Ghandle–¦fsignals“receivš²!ed“while“w˜aiting“for“input.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_check_signals‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáIf–ã!there›ã are“an²!y˜pMÞending“signals,‘2Ncall“Readline's˜in²!ternal“signal˜handling“functionsŽ¡‘.ùœto–"GprošMÞcess“them.‘ Q€ârl_pending_signal()‘"Hácan“b˜e“used“indep˜enden²!tly“to“determineŽ¡‘.ùœwhether–¦for“not“there“are“an²!y“pMÞending“signals.ަ‘!GIf–»µan›»¶application“doMÞes“not˜wish“Readline“to˜catcš²!h“âSIGWINCHá,‘ it“ma˜y‘»¶call“ârl_resize_Ž¡‘Gterminal()–Báor“ârl_set_screen_size()“áto“force“Readline“to“upMÞdate“its“idea“of“the“terminalŽ¡‘Gsize–¦fwhen“a“âSIGWINCH“áis“receiv²!ed.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_echo_signal_char‘yšæ(ëAinªªt‘sigæ)Ž¡‘.ùœáIf–;©an“application“wishes“to“install“its‘;¨oš²!wn“signal“handlers,‘ ùbut“still“ha˜v˜e“readlineŽ¡‘.ùœdispla•²!y›¨Íc“haracters–¨Îthat˜generate˜signals,‘©gcalling˜this“function˜with˜åsig‘˜åáset“to˜âSIGINTá,Ž¡‘.ùœâSIGQUITá,–¦for“âSIGTSTP“áwill“displaš²!y“the“c˜haracter“generating“that“signal.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_resize_terminal‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáUpMÞdate–¦fReadline's“inš²!ternal“screen“size“b˜y“reading“v‘ÿdDalues“from“the“k˜ernel.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_set_screen_size‘yšæ(ëAin•ªªt›ro“ws,˜in“t˜colsæ)Ž¡‘.ùœáSet–XÅReadline's“idea›XÄof“the“terminal“size“to˜åro•²!ws›ÌGáro“ws–XÅand“åcols˜ácolumns.‘ÃüIf“either“åro²!wsŽ¡‘.ùœáor–9Øåcolumns‘­Záis“less“than›9Ùor“equal“to“0,‘^´Readline's“idea˜of“that“terminal“dimension“isŽ¡‘.ùœunc²!hanged.ŽŽŒ‹2œçŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—50ŽŽŽ ƒ33 ý ÌÍ‘!GIf–¹an“application›¸doMÞes“not“w•²!an“t–¹to“install“a˜âSIGWINCH“áhandler,‘Žbut“is˜still“in²!terested“inޤ 33‘Gthe–¦fscreen“dimensions,“Readline's“idea“of“the“screen“size“ma²!y“bMÞe“queried.Ž©úp’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_get_screen_size‘yšæ(ëAin•ªªt›*ro“ws,˜in“t˜*colsæ)Ž¡‘.ùœáReturn–GReadline's“idea“of›Hthe“terminal's“size“in“the“v‘ÿdDariables“pMÞoin²!ted˜to“b²!y“the“argu-Ž¡‘.ùœmen²!ts.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_reset_screen_size‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáCause–¦fReadline“to“reobtain“the“screen“size“and“recalculate“its“dimensions.ަ‘!GThe–¦ffolloš²!wing“functions“install“and“remo˜v˜e“Readline's“signal“handlers.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_signals‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáInstall–ÊíReadline's“signal“handler“for“âSIGINTá,–âSIGQUITá,›âSIGTERMá,“âSIGHUPá,˜âSIGALRMá,Ž¡‘.ùœâSIGTSTPá,–a¶âSIGTTINá,‘aµâSIGTTOUá,“and›‰x³HøŽ‘Ñtk˜eyá.‘ÂíIt“isolatesŽ¡‘'¿«the–ƒ,w²!ord“to“bMÞe“completed“and“calls‘ƒ+ârl_completion_matches()“áto“generate“a“list“ofŽ¡‘'¿«pMÞossible–¼?completions.‘iIt›¼@then“either˜lists“the“pMÞossible˜completions,‘Áµinserts˜the“pMÞossibleŽ¡‘'¿«completions,›ÞÎor‘mactually–m pMÞerforms“the“completion,˜depšMÞending‘mon“whic²!h“b˜eha²!vior“isŽ¡‘'¿«desired.ŽŸ H‘-2.Ž‘'¿«The–Œin²!ternal›‹function“ârl_completion_matches()˜áuses“an˜application-supplied“ågener-Ž¡‘'¿«ator‘:yáfunction›qQto–qPgenerate“the˜list“of“pMÞossible˜matc²!hes,‘¤ and˜then“returns“the˜arra²!y“ofŽ¡‘'¿«these–¯>matc²!hes.‘øfThe“caller“should“place“the“address“of“its‘¯?generator“function“in“ârl_Ž¡‘'¿«completion_entry_functioná.ŽŸ G‘-3.Ž‘'¿«The–¿generator“function“is“called“repMÞeatedly“from‘¿ârl_completion_matches()á,‘íLreturningŽ¡‘'¿«a–înstring“eacš²!h“time.‘µõThe“argumen˜ts“to‘îothe“generator“function“are“åtext‘+náand“åstateá.‘µõåtextŽ¡‘'¿«áis–Ùâthe“partial“w²!ord“to“bMÞe“completed.‘xRåstate‘véáis“zero“the“ rst“time“the“function“is“called,ŽŽŒ‹3¬4Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—51ŽŽŽ ƒ33 ý ÌÍ‘'¿«alloš²!wing–G2the“generator“to‘G3pMÞerform“an˜y“necessary“initialization,‘¯eand“a“pMÞositiv˜e“non-ޤ 33‘'¿«zero–¡inš²!teger‘¢for“eac˜h“subsequen˜t–¢call.‘Ñ›The“generator–¡function“returns‘¢â(char‘¦f*)NULL“átoŽ¡‘'¿«inform–’þârl_completion_matches()“áthat‘’ÿthere“are“no“more“pMÞossibilities“left.‘£¦UsuallyŽ¡‘'¿«the–§^generator“function“computes“the“list“of‘§]pMÞossible“completions“when“åstate‘Deáis“zero,Ž¡‘'¿«and–jreturns›kthem“one˜at“a“time˜on“subsequen•²!t˜calls.‘«ÞEac“h˜string–jthe˜generator“functionŽ¡‘'¿«returns–Ô¨as“a“matcš²!h“m˜ust“bšMÞe“allo˜cated“with“âmalloc()á;‘ëÉReadline“frees“the“strings“whenŽ¡‘'¿«it–Žhas› nished“with˜them.‘TSuc²!h˜a“generator˜function“is˜referred“to˜as“an˜åapplication-Ž¡‘'¿«spMÞeci c–¦fcompletion“functioná.Ž©˜}’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_complete‘yšæ(ëAinšªªt–ignore,“in˜t“in˜v˜oking‘׉„F™œŽ‘G¼k˜eyæ)Ž¡‘.ùœáComplete–¯tthe›¯sw²!ord“at“or˜bšMÞefore“p˜oinš²!t.‘ùY‘ÿeou“ha˜v˜e“supplied›¯sthe“function“that˜doMÞes“theŽ¡‘.ùœinitial–ð™simple›ðšmatc²!hing“selection“algorithm˜(see“ârl_completion_matches()á).‘¼wTheŽ¡‘.ùœdefault–¦fis“to“do“ lename“completion.ŽŸ˜~’–3[V‘ÿeariable]ŽŽ‘Gë@rl_compentry_func_t–LÉ*“rl_completion_entry_functionŽ¡‘.ùœáThis–ÌJis›ÌIa“pMÞoin²!ter“to˜the“generator“function“for˜ârl_completion_matches()á.‘OˆIf“theŽ¡‘.ùœv‘ÿdDalue–Ùîof›Ùïârl_completion_entry_function“áis˜âNULL“áthen˜the“default˜ lename“generatorŽ¡‘.ùœfunction,–×êârl_filename_completion_function()á,“is–gused.‘ !An“åapplication-spMÞeci cŽ¡‘.ùœcompletion–†Ëfunction›†Ìáis“a˜function“whose˜address“is˜assigned“to˜ârl_completion_entry_Ž¡‘.ùœfunction–¦fáand“whose“return“v‘ÿdDalues“are“used“to“generate“pMÞossible“completions.ŽŸî2‘Gëg2.6.2‘d(Completion‘íMF‘þÄ£unctionsŽŽŸ³3‘GáHere–¦fis“the“complete“list“of“callable“completion“functions“presen²!t“in“Readline.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_complete_internal‘yšæ(ëAinªªt‘what‘׉„F™œŽ–G¼to‘׉„F™œŽ“doæ)Ž¡‘.ùœáComplete–fthe“w²!ord‘fat“or“bšMÞefore“p˜oinš²!t.‘­åwhat‘Ä>‰x³HøŽ–Ñtto‘Ä>‰x³HøŽ“do‘òÑása˜ys›fwhat–fto“do“with˜the“com-Ž¡‘.ùœpletion.‘(éA‘¿cv‘ÿdDalue–¿jof“`â?á'“means“list“the“pMÞossible“completions.‘(è`âTABá'“means“do“standardŽ¡‘.ùœcompletion.‘&'`â*á'–¾~means›¾insert“all˜of“the˜pMÞossible“completions.‘&'`â!á'“means˜to“displa²!y˜allŽ¡‘.ùœof–!)the“pMÞossible“completions,‘?Úif“there“is›!*more“than“one,‘?Ùas˜w²!ell“as“pMÞerforming“partialŽ¡‘.ùœcompletion.‘¾*`â@á'–GMis›GNsimilar“to“`â!á',‘ZRbut“pMÞossible˜completions“are“not“listed˜if“the“pMÞossibleŽ¡‘.ùœcompletions–¦fshare“a“common“pre x.ŽŸ˜~’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_complete‘yšæ(ëAinšªªt–ignore,“in˜t“in˜v˜oking‘׉„F™œŽ‘G¼k˜eyæ)Ž¡‘.ùœáComplete–ñèthe›ñçw²!ord“at˜or“bšMÞefore“p˜oinš²!t.‘ÀaY‘ÿeou“ha˜v˜e“supplied›ñçthe“function˜that“doMÞesŽ¡‘.ùœthe–õàinitial›õßsimple“matc²!hing“selection˜algorithm“(see˜ârl_completion_matches()“áandŽ¡‘.ùœârl_completion_entry_functioná).‘×XThe–Nädefault›Nåis“to“do˜ lename“completion.‘×XThisŽ¡‘.ùœcalls–¦fârl_complete_internal()“áwith“an“argumenš²!t“depMÞending“on“åin˜v˜oking‘Ä>‰x³HøŽ‘Ñtk˜eyá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_possible_completions‘yšæ(ëAin•ªªt›coun“t,˜in“t˜in“v“oking‘׉„F™œŽ‘G¼k“eyæ)Ž¡‘.ùœáList–ÞÇthe“pMÞossible“completions.›†ÿSee“description“of“ârl_complete‘¦f()á.˜This“calls“ârl_Ž¡‘.ùœcomplete_internal()–¦fáwith“an“argumen²!t“of“`â?á'.ŽŸ˜~’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_insert_completions‘yšæ(ëAin•ªªt›coun“t,˜in“t˜in“v“oking‘׉„F™œŽ‘G¼k“eyæ)Ž¡‘.ùœáInsert– Ëthe› Êlist“of˜pMÞossible“completions˜in²!to“the˜line,‘"¤deleting˜the“partially-completedŽ¡‘.ùœw²!ord.›WâSee–Ïdescription‘Ïof“ârl_complete()á.˜This›Ïcalls“ârl_complete_internal()˜áwithŽ¡‘.ùœan–¦fargumen²!t“of“`â*á'.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_completion_mode‘yšæ(ëArl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘*cfuncæ)Ž¡‘.ùœáReturns–úûthe›úúappropriate“v‘ÿdDalue˜to“pass˜to“ârl_complete_internal()˜ádepMÞending“onŽ¡‘.ùœwhether–çxåcfunc‘‘{áwš²!as“called‘çwt˜wice“in›çwsuccession“and˜the“v‘ÿdDalues˜of“the˜âshow-all-if-ŽŽŒ‹4»UŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—52ŽŽŽ ƒ33 ý ÌÍ‘.ùœâambiguous–OŽáand‘Oâshow-all-if-unmodified“áv‘ÿdDariables.‘ÀêApplication-spMÞeci c“completionޤ 33‘.ùœfunctions–¦fmaš²!y“use“this“function“to“presen˜t“the“same“in˜terface“as“ârl_complete()á.Ž©´|’“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ**“rl_completion_matches‘yšæ(ëAconst–cªªhar“*text,Ž¡‘DGrl‘׉„F™œŽ–G¼compUVenšªªtry‘׉„F™œŽ“func‘׉„F™œŽ“t‘*en˜try‘׉„F™œŽ“funcæ)Ž¡‘.ùœáReturns–Œ^an‘Œ]arraš²!y“of“strings“whic˜h›Œ]is“a“list“of˜completions“for“åtextá.‘ÄIf“there˜are“noŽ¡‘.ùœcompletions,‘C;returns–#ÝâNULLá.‘VCThe›#Þ rst“en²!try“in“the˜returned“arra²!y“is˜the“substitutionŽ¡‘.ùœfor–)Gåtextá.›´(The“remaining“en²!tries“are“the“pMÞossible“completions.˜The“arra²!y“is“terminatedŽ¡‘.ùœwith–¦fa“âNULL“ápMÞoin²!ter.ŽŸö‘.ùœåen²!try‘Ä>‰x³HøŽ‘Ñtfunc‘hoáis–¾la›¾kfunction“of˜t•²!w“o˜args,‘mand˜returns˜a–¾lâchar‘¦f*á.‘%íThe˜ rst“argumen²!t˜isŽ¡‘.ùœåtextá.‘××The–¤dsecond“is“a“state›¤eargumen²!t;‘#bit“is“zero˜on“the“ rst“call,‘ããand“non-zero“onŽ¡‘.ùœsubsequen•²!t›~calls.‘#åen“try‘Ä>‰x³HøŽ‘Ñtfunc‘º‚áreturns˜a‘}âNULL˜ápMÞoin“ter–}to˜the˜caller“when˜there“are˜noŽ¡‘.ùœmore‘¦fmatc²!hes.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“rl_filename_completion_function‘yšæ(ëAconst–cšªªhar“*text,“in˜tŽ¡‘DGstateæ)Ž¡‘.ùœáA‘‹generator–±function›°for“ lename˜completion“in˜the“general˜case.‘¬öåtext‘P±áis˜a“partial˜ le-Ž¡‘.ùœname.‘‚UThe–“ÏBash›“Îsource“is˜a“useful˜reference“for˜writing“application-spMÞeci c˜completionŽ¡‘.ùœfunctions–¦f(the“Bash“completion“functions“call“this“and“other“Readline“functions).ŽŸ´{’“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“rl_username_completion_function‘yšæ(ëAconst–cšªªhar“*text,“in˜tŽ¡‘DGstateæ)Ž¡‘.ùœáA‘l&completion–l4generator›l5for“usernames.‘Êxåtext‘©4ácon²!tains˜a“partial˜username“preceded˜b²!yŽ¡‘.ùœa–«ºrandom›«»c²!haracter“(usually“`â~á').‘íÚAs˜with“all“completion˜generators,‘­åstate‘HÁáis˜zero“onŽ¡‘.ùœthe–¦f rst“call“and“non-zero“for“subsequen²!t“calls.ŽŸ«†‘Gëg2.6.3‘d(Completion‘íMV‘þÄ£ariablesŽŽŸ^¹’–3á[V‘ÿeariable]ŽŽ‘Gë@rl_compentry_func_t–LÉ*“rl_completion_entry_functionŽ¡‘.ùœáA‘{pMÞoin²!ter‘’to–“the“generator“function“for“ârl_completion_matches()á.‘ûdâNULL“ámeans“toŽ¡‘.ùœuse–¦fârl_filename_completion_function()á,“the“default“ lename“completer.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_completion_func_t–LÉ*“rl_attempted_completion_functionŽ¡‘.ùœáA‘,„pMÞoinš²!ter–,§to‘,¦an“alternativ˜e›,¦function“to˜create“matc²!hes.‘pŸThe˜function“is˜called“withŽ¡‘.ùœåtextá,‘îûåstartá,‘îúand–Á åendá.‘‘qåstart‘þ áand“åend‘/ráare‘Áindices“in“ârl_line_buffer“áde ning“the“bMÞound-Ž¡‘.ùœaries›of–åtextá,‘9\whic²!h“is˜a˜c²!haracter“string.‘°nIf˜this“function˜exists˜and“returns˜âNULLá,‘9]or˜ifŽ¡‘.ùœthis– v‘ÿdDariable› žis“set˜to“âNULLá,‘Ôùthen“ârl_complete()˜áwill“call˜the“v‘ÿdDalue˜of“ârl_completion_Ž¡‘.ùœentry_function–hÚáto›hÙgenerate“matc²!hes,‘u)otherwise˜the“arra²!y“of˜strings“returned˜will“bMÞeŽ¡‘.ùœused.‘‹tIf–¯,this›¯+function“sets˜the“ârl_attempted_completion_over˜áv‘ÿdDariable“to˜a“non-zeroŽ¡‘.ùœv‘ÿdDalue,‘-óReadline–×will“not“pMÞerform“its“default‘Öcompletion“ev²!en“if“this“function“returnsŽ¡‘.ùœno‘¦fmatc²!hes.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_quote_func_t–LÉ*“rl_filename_quoting_functionŽ¡‘.ùœáA‘è–pMÞoin²!ter›è¦to–è§a“function˜that“will“quote“a˜ lename“in“an˜application-spMÞeci c“fashion.Ž¡‘.ùœThis–·Kis“called“if“ lename“completion“is‘·JbMÞeing“attempted“and“one“of“the“c²!haractersŽ¡‘.ùœin–ü’ârl_filename_quote_characters›ü‘áappMÞears“in“a“completed˜ lename.‘à`The“functionŽ¡‘.ùœis–mPcalled“with‘mQåtextá,‘Ÿ åmatc•²!h‘Ä>‰x³HøŽ›Ñtt“yp•MÞeá,‘Ÿ and‘mPåquote‘Ä>‰x³HøŽ˜p“oin²!terá.‘2œThe–mPåtext‘ªPáis“the‘mQ lename“to“bMÞeŽ¡‘.ùœquoted.‘ (TThe›åmatc•²!h‘Ä>‰x³HøŽ‘Ñtt“ypMÞe‘±•áis˜either–ŽâSINGLE_MATCHá,‘pif“there˜is“only˜one“completionŽ¡‘.ùœmatc²!h,‘Ì‚or–ÄãâMULT_MATCHá.‘9SSome“functions“use“this“to“decide“whether“or‘Äânot“to“insert“aŽŽŒ‹5ÌoŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—53ŽŽŽ ƒ33 ý ÌÍ‘.ùœclosing–çquote‘æcš²!haracter.‘{³The“åquote‘Ä>‰x³HøŽ‘ÑtpMÞoin˜ter‘Iáis“a‘æpMÞoin˜ter“to‘æan˜y“opMÞening‘æquote“c˜haracterޤ 33‘.ùœthe–¦fuser“tš²!ypMÞed.‘ÝÝSome“functions“c˜hoMÞose“to“reset“this“c˜haracter.Ž© ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_dequote_func_t–LÉ*“rl_filename_dequoting_functionŽ¡‘.ùœáA‘޼pMÞoin²!ter›ŽÃto–ŽÂa“function“that˜will“remo•²!v“e–ŽÂapplication-spMÞeci c“quoting˜c²!haracters“fromŽ¡‘.ùœa–çž lename“bMÞefore“completion“is“attempted,‘÷ëso“those“cš²!haracters“do“not“in˜terfere“withŽ¡‘.ùœmatc²!hing–“áthe“text›“âagainst“names“in“the˜ lesystem.‘¦NIt“is˜called“with“åtextá,‘Ï@the“textŽ¡‘.ùœof–xthe“wš²!ord“to‘wbMÞe“dequoted,‘m|and“åquote‘Ä>‰x³HøŽ‘Ñtc˜hará,‘m|whic˜h“is‘wthe“quoting“c˜haracter“thatŽ¡‘.ùœdelimits–Ü>the“ lename›Ü?(usually“`â'á'“or“`â"á').‘fIf“åquote‘Ä>‰x³HøŽ‘Ñtc²!har‘¥gáis“zero,‘é´the˜ lename“w²!as“notŽ¡‘.ùœin–¦fan“em²!bMÞedded“string.ŽŸŸ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_linebuf_func_t–LÉ*“rl_char_is_quoted_pŽ¡‘.ùœáA‘kÿpšMÞoin²!ter–l2to“a“function“to“call“that“determines“whether“or“not“a“sp˜eci c“c²!haracterŽ¡‘.ùœin–#^the“line›#_bu er“is“quoted,‘Bœaccording“to“whatev²!er“quoting˜mec²!hanism“the“programŽ¡‘.ùœcalling–úÎReadline“uses.‘¤«The“function“is“called“with“t•²!w“o‘úÏargumen“ts:‘ˆåtextá,‘ the–úÎtext“of“theŽ¡‘.ùœline,–´­and›±Òåindexá,“the˜index–±Ñof˜the˜c²!haracter˜in˜the˜line.‘!It˜is“used˜to˜decide˜whether˜aŽ¡‘.ùœc²!haracter›ŸFfound–ŸEin“ârl_completer_word_break_characters˜áshould“bMÞe˜used˜to“breakŽ¡‘.ùœw²!ords–¦ffor“the“completer.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_compignore_func_t–LÉ*“rl_ignore_some_completions_functionŽ¡‘.ùœáThis–†hfunction,‘¾hif“de ned,‘¾iis“called“b²!y“the“completer“when“real“ lename“completionŽ¡‘.ùœis–¸done,‘1after›¹all“the“matc²!hing˜names“ha•²!v“e˜bMÞeen–¸generated.‘+ÔIt“is˜passed“a˜âNULL“áter-Ž¡‘.ùœminated–³Zarraš²!y‘³Yof“matc˜hes.‘¸The“ rst“elemen˜t›³Y(âmatches[0]á)“is“the˜maximal“substringŽ¡‘.ùœcommon–tEto›tFall“matc²!hes.‘Í(This“function˜can“re-arrange˜the“list˜of“matc²!hes˜as“required,Ž¡‘.ùœbut–¦feacš²!h“elemen˜t“deleted“from“the“arra˜y“m˜ust“bMÞe“freed.ŽŸŸ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_icppfunc_t–LÉ*“rl_directory_completion_hookŽ¡‘.ùœáThis–qAfunction,›ãöif“de ned,˜is“allo•²!w“ed›q@to–qAmoMÞdify“the˜directory“pMÞortion˜of“ lenamesŽ¡‘.ùœReadline–0Ëcompletes.‘} It›0Ìcould“bMÞe“used˜to“expand“sym²!bMÞolic˜links“or“shell˜v‘ÿdDariables“inŽ¡‘.ùœpathnames.‘tIt›Øwis–Øxcalled“with˜the“address˜of“a“string˜(the“curren²!t˜directory“name)Ž¡‘.ùœas–…6an“argumenš²!t,‘¼êand“ma˜y“moMÞdify“that“string.‘zMIf“the“string“is“replaced“with“a“newŽ¡‘.ùœstring,‘ÜUthe–žYold“v‘ÿdDalue“should“bšMÞe“freed.‘ŶAn²!y‘žXmo˜di ed“directory“name“should“ha•²!v“e‘žYaŽ¡‘.ùœtrailing–2œslash.‘‚€The“mošMÞdi ed“v‘ÿdDalue‘2will“b˜e“used“as‘2part“of“the“completion,‘UªreplacingŽ¡‘.ùœthe–Í}directory›Í~pMÞortion“of˜the“pathname˜the“user˜t•²!ypMÞed.‘S#A“t˜the›Í}least,‘×Dev“en˜if‘Í~no˜otherŽ¡‘.ùœexpansion–EQis“pMÞerformed,‘m this“function“should“remo•²!v“e›EQan“y‘ERquote˜c“haracters˜from˜theŽ¡‘.ùœdirectory–¦fname,“bšMÞecause“its“result“will“b˜e“passed“directly“to“âopendir()á.ŽŸ¢é‘.ùœThe–directory“completion›ÿhoMÞok“returns“an“in²!teger˜that“should“bMÞe“non-zero˜if“the“func-Ž¡‘.ùœtion–õmoMÞdi es“its›ödirectory“argumen²!t.‘;‹The“function“should“not˜moMÞdify“the“directoryŽ¡‘.ùœargumen²!t–¦fif“it“returns“0.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_icppfunc_t–LÉ*“rl_directory_rewrite_hook;Ž¡‘.ùœáIf–êãnon-zero,‘dthis“is›êäthe“address“of˜a“function“to˜call“when“completing“a˜directory“name.Ž¡‘.ùœThis–2}function“tak²!es“the›2~address“of“the“directory“name“to“b•MÞe˜mo“di ed–2}as“an“argumen²!t.Ž¡‘.ùœUnlik²!e–µèârl_directory_completion_hooká,‘ùÈit“only“moMÞdi es“the“directory“name“usedŽ¡‘.ùœin–>øâopendirá,‘enot“what“is“displa•²!y“ed›>ùwhen–>øthe“pMÞossible“completions“are˜prin²!ted“or“in-Ž¡‘.ùœserted.‘³NIt–&ºis‘&¹called“bšMÞefore“rl‘Ä>‰x³HøŽ–Ñtdirectory‘Ä>‰x³HøŽ“completion‘Ä>‰x³HøŽ“ho˜ok.‘³NA•²!t‘&¹the›&ºleast,‘@Bev“en˜if‘&¹no˜otherŽ¡‘.ùœexpansion–EQis“pMÞerformed,‘m this“function“should“remo•²!v“e›EQan“y‘ERquote˜c“haracters˜from˜theŽ¡‘.ùœdirectory–¦fname,“bšMÞecause“its“result“will“b˜e“passed“directly“to“âopendir()á.ŽŽŒ‹6ÜÝŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—54ŽŽŽ ƒ33 ý ÌÍ‘.ùœThe–Œ*directory›Œ+rewrite“hoMÞok˜returns“an˜in²!teger“that˜should“bMÞe˜non-zero“if˜the“func-ޤ 33‘.ùœtion–VÛmošMÞd es“its“directory“argumen²!t.‘ïaddress“of“a“function˜for“the“completer“to˜call“bMÞefore“decidingŽ¡‘.ùœwhic•²!h›ác“haracter–âto˜appMÞend˜to“a˜completed˜name.‘ÛThis˜function˜moMÞdi es“its˜ lenameŽ¡‘.ùœname–Fargumen²!t,‘mìand“the“moMÞdi ed“v‘ÿdDalue“is“passed“to“âstat()“áto“determine“the“ le'sŽ¡‘.ùœtš²!ypMÞe–Þ:and“c˜haracteristics.‘…YThis“function‘Þ;doMÞes“not“need“to“remo˜v˜e“quote“c˜haractersŽ¡‘.ùœfrom–¦fthe“ lename.ŽŸè_‘.ùœThe–Þèstat›ÞéhoMÞok“returns˜an“in²!teger˜that“should“bMÞe˜non-zero“if˜the“function˜moMÞd es“itsŽ¡‘.ùœdirectory–îeargumen²!t.‘µÜThe“function›îfshould“not˜moMÞdify“the˜directory“argumen²!t˜if“itŽ¡‘.ùœreturns‘¦f0.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_dequote_func_t–LÉ*“rl_filename_rewrite_hookŽ¡‘.ùœáIf–Æ non-zero,‘this“is“the“address“of“a“function“called“when“reading“directory“en²!triesŽ¡‘.ùœfrom–ÉÜthe“ lesystem“for“completion“and“comparing‘ÉÝthem“to“the“partial“w²!ord“to“bMÞeŽ¡‘.ùœcompleted.‘»zThe–?>function›?=should“pMÞerform“an²!y˜necessary“application˜or“system-spMÞeci cŽ¡‘.ùœcon•²!v“ersion–Êon›Ëthe“ lename,‘9$suc²!h“as˜con•²!v“erting‘ÊbMÞet“w“een˜c“haracter–Êsets˜or“con•²!v“ertingŽ¡‘.ùœfrom–„a›… lesystem“format˜to“a“c²!haracter˜input“format.‘ì8The˜function“tak•²!es˜t“w“o‘„argu-Ž¡‘.ùœmen²!ts:‘ÙRåfnameá,‘Cthe–$! lename›$ to“bMÞe˜con•²!v“erted,–Cand›$!åfnlená,“its˜length‘$ in˜b•²!ytes.‘W It˜m“ustŽ¡‘.ùœeither–ÈŠreturn“its“ rst“argumenš²!t“(if“no‘È‹con˜v˜ersion“tak˜es“place)“or“the“con˜v˜erted“ lenameŽ¡‘.ùœin–dÛnewly-alloMÞcated“memory‘ÿe.‘ÈThe›dÚcon•²!v“erted–dÛform“is“used“to“compare˜against“the“w²!ordŽ¡‘.ùœto›BÔbMÞe‘BÕcompleted,–V¾and,“if˜it‘BÕmatc²!hes,“is˜added–BÕto˜the˜list“of˜matc²!hes.‘¼¬Readline“will˜freeŽ¡‘.ùœthe–¦falloMÞcated“string.ŽŸŠ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_compdisp_func_t–LÉ*“rl_completion_display_matches_hookŽ¡‘.ùœáIf–£xnon-zero,‘×Athen“this“is“the“address“of“a“function“to“call“when“completing“a“wš²!ord“w˜ouldŽ¡‘.ùœnormally–¨¶displa²!y›¨µthe“list“of˜pMÞossible“matc²!hes.‘‰MThis“function“is˜called“in“lieu˜of“ReadlineŽ¡‘.ùœdisplaš²!ying–s7the“list.‘DPIt‘s8tak˜es“three“argumen˜ts:‘w(âchar‘¦f**åmatc˜hesá,‘¦kâint“ån˜um‘Ä>‰x³HøŽ‘Ñtmatc˜hesá,Ž¡‘.ùœâint–-åmax‘Ä>‰x³HøŽ‘Ñtlengthá)›-where“åmatc²!hes‘ ’áis“the˜arra²!y“of˜matcš²!hing“strings,‘EUån˜um‘Ä>‰x³HøŽ‘Ñtmatc˜hes‘ ’áis“theŽ¡‘.ùœn•²!um“bMÞer–acof›abstrings“in“that“arra²!y‘ÿe,‘!and“åmax‘Ä>‰x³HøŽ‘Ñtlength“áis˜the“length“of“the˜longest“stringŽ¡‘.ùœin‘‡Âthat–‡Áarraš²!y‘ÿe.‘ðReadline“pro˜vides‘‡Âa“con˜v˜enience‘‡Âfunction,‘Àârl_display_match_listá,Ž¡‘.ùœthat–×\tak²!es›×[care“of“doing˜the“displa²!y˜to“Readline's“output˜stream.‘p¾Y‘ÿeou“ma²!y˜call“thatŽ¡‘.ùœfunction–¦ffrom“this“hoMÞok.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_basic_word_break_charactersŽ¡‘.ùœáThe–Oobasic“list“of“cš²!haracters“that“signal‘Ona“break“bMÞet˜w˜een“w˜ords“for“the“completerŽ¡‘.ùœroutine.‘M¼The–v[default“v›ÿdDalue“of“this‘v\v˜ariable“is“the“cš²!haracters“whic˜h“break“w˜ords“forŽ¡‘.ùœcompletion–¦fin“Bash:‘ÝÝâ"“\t\n\"\\'`@$><=;|&{("á.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_basic_quote_charactersŽ¡‘.ùœáA–¦flist“of“quote“cš²!haracters“whic˜h“can“cause“a“w˜ord“break.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_completer_word_break_charactersŽ¡‘.ùœáThe–Ïlist“of“cš²!haracters“that“signal‘Ï~a“break“bMÞet˜w˜een“w˜ords“for“ârl_complete_Ž¡‘.ùœinternal()á.‘ÝÝThe–¦fdefault“list“is“the“v‘ÿdDalue“of“ârl_basic_word_break_charactersá.ŽŽŒ‹7î}Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—55ŽŽŽ ƒ33 ý ÌÍ’–3[V‘ÿeariable]ŽŽ‘Gë@rl_cpvfunc_t–LÉ*“rl_completion_word_break_hookޤ 33‘.ùœáIf–Èënon-zero,‘ÑŒthis›Èêis“the“address˜of“a“function“to˜call“when“Readline“is˜deciding“whereŽ¡‘.ùœto–¡separate‘¢wš²!ords“for“w˜ord“completion.‘FIt“should‘¢return“a“c˜haracter“string‘¢lik˜e“ârl_Ž¡‘.ùœcompleter_word_break_characters–ôëáto“bšMÞe“used“to“p˜erform“the“curren²!t“completion.Ž¡‘.ùœThe–øMfunction“ma•²!y›øLc“hoMÞose–øMto“set“ârl_completer_word_break_characters˜áitself.‘£ÕIf“theŽ¡‘.ùœfunction–¦freturns“âNULLá,“ârl_completer_word_break_characters“áis“used.Ž©ÌÎ’–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_completer_quote_charactersŽ¡‘.ùœáA‘ Clist– ^of“c•²!haracters› ]whic“h– ^can“bMÞe˜used“to“quote˜a“substring“of˜the“line.‘ÄCompletionŽ¡‘.ùœoMÞccurs–&­on›&¬the“en²!tire“substring,‘@8and“within“the˜substring“ârl_completer_word_break_Ž¡‘.ùœcharacters–8\áare›8[treated“as“an²!y“other˜c²!haracter,‘\Ùunless“they“also“appMÞear˜within“thisŽ¡‘.ùœlist.ŽŸÌÍ’–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_filename_quote_charactersŽ¡‘.ùœáA‘ ]list› vof– wc²!haracters“that“cause˜a“ lename“to“bMÞe˜quoted“b²!y“the“completer˜when“theyŽ¡‘.ùœappMÞear–¦fin“a“completed“ lename.‘ÝÝThe“default“is“the“n²!ull“string.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_special_prefixesŽ¡‘.ùœáThe–S­list›S¬of“c²!haracters“that“are˜wš²!ord“break“c˜haracters,‘d8but›S¬should“bMÞe“left“in˜åtext‘­áwhenŽ¡‘.ùœit–ô¡is“passed“to“the›ô¢completion“function.‘¢›Programs“can“use˜this“to“help“determine“whatŽ¡‘.ùœkind–Uíof›Uîcompleting“to˜do.‘à F‘ÿeor“instance,‘fBash“sets“this˜v‘ÿdDariable“to“â"á$@â"˜áso“that˜it“canŽ¡‘.ùœcomplete–¦fshell“v‘ÿdDariables“and“hostnames.ŽŸÌÍ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_query_itemsŽ¡‘.ùœáUp–YAto“this“manš²!y“items“will“bMÞe“displa˜y˜ed“in“respšMÞonse“to“a“p˜ossible-completions“call.Ž¡‘.ùœAfter–Vthat,‘f&readline“asks›Vthe“user˜if“she˜is“sure“she˜w•²!an“ts–Vto˜see“them˜all.‘ÃThe“defaultŽ¡‘.ùœv›ÿdDalue–¦fis“100.‘ÝÝA“negativ²!e“v˜alue“indicates“that“Readline“should“nev²!er“ask“the“user.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_append_characterŽ¡‘.ùœáWhen–ýºa“single‘ý»completion“alternativš²!e“matc˜hes“at›ý»the“end“of“the˜command“line,‘thisŽ¡‘.ùœcš²!haracter–’?is“appMÞended“to“the“inserted“completion“text.‘ÑThe“default“is“a“space“c˜haracterŽ¡‘.ùœ(`‘¦f').‘·Setting›2this–2to“the˜nš²!ull“c˜haracter“(`â\0á')‘2prev˜en˜ts“an˜ything“b•MÞeing‘2app“ended‘2auto-Ž¡‘.ùœmatically‘ÿe.‘•,This–ÌQcan“bšMÞe“c²!hanged“in“application-sp˜eci c‘ÌRcompletion“functions“to“pro²!videŽ¡‘.ùœthe–Å\most“sensible‘Äwš²!ord“separator“c˜haracter"“according“to‘Äan“application-spMÞeci c“com-Ž¡‘.ùœmand–€Vline“syn²!tax“spšMÞeci cation.‘Ñ-It“is“set“to“the“default“b˜efore“an²!y“application-sp˜eci cŽ¡‘.ùœcompletion–¦ffunction“is“called,“and“maš²!y“only“bMÞe“c˜hanged“within“suc˜h“a“function.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_suppress_appendŽ¡‘.ùœáIf›þðnon-zero,‘årl‘Ä>‰x³HøŽ–Ñtcompletion‘Ä>‰x³HøŽ“appMÞend‘Ä>‰x³HøŽ“c²!haracter‘Èáis˜not–þñappMÞended˜to“matc²!hes˜at“the˜endŽ¡‘.ùœof–Ošthe“command‘O™line,‘`öas“describšMÞed“ab˜o•²!v“e.‘ÀîIt–Ošis“set“to“0‘O™b˜efore“an²!y“application-sp˜eci cŽ¡‘.ùœcompletion–¦ffunction“is“called,“and“maš²!y“only“bMÞe“c˜hanged“within“suc˜h“a“function.ŽŸÌÍ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_quote_characterŽ¡‘.ùœáWhen–X;Readline“is›X:completing“quoted“text,‘„°as˜delimited“b²!y“one“of˜the“c²!haracters“inŽ¡‘.ùœårl‘Ä>‰x³HøŽ–Ñtcompleter‘Ä>‰x³HøŽ“quote‘Ä>‰x³HøŽ“c²!haractersá,‘òCit–¯äsets›¯ãthis“v‘ÿdDariable“to“the˜quoting“c²!haracter“found.Ž¡‘.ùœThis–¦fis“set“bšMÞefore“an²!y“application-sp˜eci c“completion“function“is“called.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_suppress_quoteŽ¡‘.ùœáIf–àDnon-zero,‘î»Readline›àCdoMÞes“not˜appMÞend“a“matc²!hing˜quote“c²!haracter˜when“pMÞerformingŽ¡‘.ùœcompletion–ÓGon›ÓFa“quoted˜string.‘—~It˜is“set˜to“0˜bMÞefore“an²!y˜application-spMÞeci c“completionŽ¡‘.ùœfunction–¦fis“called,“and“maš²!y“only“bMÞe“c˜hanged“within“suc˜h“a“function.ŽŽŒ‹8þAŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—56ŽŽŽ ƒ33 ý ÌÍ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_found_quoteޤ 33‘.ùœáWhen–ÌúReadline“is“completing›Ìûquoted“text,‘ÖŸit“sets“this“v‘ÿdDariable“to˜a“non-zero“v‘ÿdDalue“ifŽ¡‘.ùœthe–‡¿wš²!ord‘‡¾bMÞeing“completed“con˜tains‘‡¾or“is“delimited“b˜y‘‡¾an˜y“quoting“c˜haracters,‘ÁincludingŽ¡‘.ùœbacš²!kslashes.‘ÝÝThis–¦fis“set“bMÞefore“an˜y“application-spMÞeci c“completion“function“is“called.Ž© ë’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_mark_symlink_dirsŽ¡‘.ùœáIf–ѧnon-zero,‘Üwa“slash“will“bšMÞe“app˜ended“to“completed“ lenames“that“are“sym²!b˜olic“linksŽ¡‘.ùœto–ærdirectory›æsnames,‘ Ösub‘›»ject“to“the˜v‘ÿdDalue“of“the“user-settable˜åmark-directories‘Yôáv‘ÿdDariable.Ž¡‘.ùœThis–Imv‘ÿdDariable“exists“so“that“application-spMÞeci c“completion“functions“can“o•²!v“erride‘ImtheŽ¡‘.ùœuser's–global›preference“(set“via“the˜åmark-symlink²!ed-directories‘Š’áReadline“v‘ÿdDariable)Ž¡‘.ùœif–„appropriate.‘võThis“v‘ÿdDariable“is“set“to“the“user's‘„preference“bMÞefore“an²!y“application-Ž¡‘.ùœspMÞeci c–Îcompletion›Îfunction“is˜called,‘×ìso“unless“that˜function“moMÞdi es˜the“v‘ÿdDalue,‘×ìtheŽ¡‘.ùœuser's–¦fpreferences“are“honored.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_ignore_completion_duplicatesŽ¡‘.ùœáIf–¦fnon-zero,“then“duplicates“in“the“matcš²!hes“are“remo˜v˜ed.‘ÝÝThe“default“is“1.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_filename_completion_desiredŽ¡‘.ùœáNon-zero–Ñmeans“that›Ñ the“results“of“the“matc²!hes˜are“to“bMÞe“treated“as“ lenames.‘]ÄThisŽ¡‘.ùœis–Ì'äalways‘²?ázero›Ì(when“completion“is“attempted,‘—and“can“only“bMÞe˜c²!hanged“within“anŽ¡‘.ùœapplication-spMÞeci c›¼õcompletion–¼ôfunction.‘!‰If“it˜is“set˜to“a˜non-zero“v‘ÿdDalue˜bš²!y“suc˜h‘¼õaŽ¡‘.ùœfunction,‘Þdirectory–¬ names“ha•²!v“e›¬ a–¬ slash“appMÞended˜and“Readline“attempts“to˜quote“com-Ž¡‘.ùœpleted–6 lenames“if“they‘6!conš²!tain“an˜y“c˜haracters“in“ârl_filename_quote_charactersŽ¡‘.ùœáand–¦fârl_filename_quoting_desired“áis“set“to“a“non-zero“v‘ÿdDalue.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_filename_quoting_desiredŽ¡‘.ùœáNon-zero–^nmeans“that“the›^mresults“of“the“matc²!hes“are“to“bMÞe˜quoted“using“double“quotesŽ¡‘.ùœ(or–8an“application-spMÞeci c“quoting“mecš²!hanism)‘7if“the“completed“ lename“con˜tainsŽ¡‘.ùœan•²!y›QJc“haracters–QIin˜ârl_filename_quote_charsá.‘Á~This˜is“äalways‘7bánon-zero“when˜comple-Ž¡‘.ùœtion–Q is›Qattempted,‘band“can“only˜bMÞe“c²!hanged˜within“an˜application-spMÞeci c“completionŽ¡‘.ùœfunction.‘} The–…°quoting›…¯is“e ected˜via“a˜call˜to“the˜function“pMÞoin²!ted˜to“b²!y˜ârl_filename_Ž¡‘.ùœquoting_functioná.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_attempted_completion_overŽ¡‘.ùœáIf– Oan“application-spMÞeci c“completion‘ Ofunction“assigned“to“ârl_attempted_Ž¡‘.ùœcompletion_function–básets›bŒthis“v‘ÿdDariable“to˜a“non-zero“v‘ÿdDalue,‘•Readline˜will“notŽ¡‘.ùœpMÞerform–Žºits“default“ lename“completion‘޹ev²!en“if“the“application's“completion“functionŽ¡‘.ùœreturns–¦fno“matcš²!hes.‘ÝÝIt“should“bMÞe“set“only“b˜y“an“application's“completion“function.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_sort_completion_matchesŽ¡‘.ùœáIf–”Ôan›”Óapplication“sets˜this“v‘ÿdDariable˜to“0,‘˜WReadline“will˜not“sort˜the“list˜of“completionsŽ¡‘.ùœ(whicš²!h–òÍimplies“that‘òÎit“cannot“remo˜v˜e“an˜y›òÎduplicate“completions).‘¡ÿThe˜default“v‘ÿdDalue“isŽ¡‘.ùœ1,›ÅÖwhic²!h–¿Œmeans“that“Readline“will“sort“the“completions“and,˜depMÞending“on“the“v‘ÿdDalueŽ¡‘.ùœof–¦fârl_ignore_completion_duplicatesá,“will“attempt“to“remo•²!v“e–¦fduplicate“matc²!hes.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_typeŽ¡‘.ùœáSet–61to›62a“c²!haracter˜describing“the˜t²!ypMÞe“of“completion˜Readline“is˜curren²!tly“attempt-Ž¡‘.ùœing;‘.qsee–the“description‘of“ârl_complete_internal()“á(see“Section“2.6.2“[CompletionŽ¡‘.ùœF‘ÿeunctions],‘˜%page–gÌ51)“for“the“list“of“c²!haracters.‘"This“is“set“to“the“appropriate“v‘ÿdDalueŽŽŒ‹9+Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—57ŽŽŽ ƒ33 ý ÌÍ‘.ùœb•MÞefore›Í¡an²!y‘Í application-sp“eci c˜completion˜function˜is–Í called,‘×palloš²!wing“suc˜h‘Í¡functionsޤ 33‘.ùœto–¦fpresenš²!t“the“same“in˜terface“as“ârl_complete()á.Ž©33’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_invoking_keyŽ¡‘.ùœáSet–äRto›äQthe“ nal˜c²!haracter“in˜the“k²!ey“sequence˜that“in•²!v“ok“ed˜one–äRof˜the“completionŽ¡‘.ùœfunctions–that“call“ârl_complete_internal()á.‘o(This“is“set“to“the“appropriate“v‘ÿdDalueŽ¡‘.ùœbšMÞefore–¦fan²!y“application-sp˜eci c“completion“function“is“called.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_inhibit_completionŽ¡‘.ùœáIf–d`this›dav‘ÿdDariable“is“non-zero,‘q•completion“is˜inhibited.‘ÇÛThe“completion“c²!haracter˜will“bMÞeŽ¡‘.ùœinserted–¦fas“an²!y“other“bMÞound“to“âself-insertá.ŽŸ‘Gëg2.6.4‘d(A–íMShort“Completion“ExampleŽŽŸ³3‘GáHere–}ais“a›}`small“application“demonstrating“the˜use“of“the“GNU‘}VReadline“library‘ÿe.‘Ð0It“is“calledŽ¡‘Gâfilemaná,‘ 0and–ÃÕthe“source‘ÃÔcoMÞde“resides“in“âexamples/fileman.cá.‘6)This“sample“applicationŽ¡‘Gpro²!vides–#þcompletion“of‘#ÿcommand“names,›>line“editing“features,˜and“access“to‘#ÿthe“history“list.ŽŽŒ‹:0Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—58ŽŽŽ ƒ33 ý ÌÍ‘.ùœÉ/*–¹–fileman.c“--“A“tiny“application“which“demonstrates“how“to“use“theޤ €‘=&^GNU–¹–Readline“library.‘ s,This“application“interactively“allows“usersŽ¡‘=&^to–¹–manipulate“files“and“their“modes.“*/Ž©‘.ùœ#ifdef‘¹–HAVE_CONFIG_HŽ¡‘.ùœ#‘ s,include‘¹–Ž¡‘.ùœ#endifަ‘.ùœ#include‘¹–Ž¡‘.ùœ#ifdef‘¹–HAVE_SYS_FILE_HŽ¡‘.ùœ#‘ s,include‘¹–Ž¡‘.ùœ#endifŽ¡‘.ùœ#include‘¹–ަ‘.ùœ#ifdef‘¹–HAVE_UNISTD_HŽ¡‘.ùœ#‘ s,include‘¹–Ž¡‘.ùœ#endifަ‘.ùœ#include‘¹–Ž¡‘.ùœ#include‘¹–Ž¡‘.ùœ#include‘¹–ަ‘.ùœ#if–¹–defined“(HAVE_STRING_H)Ž¡‘.ùœ#‘ s,include‘¹–Ž¡‘.ùœ#else–¹–/*“!HAVE_STRING_H“*/Ž¡‘.ùœ#‘ s,include‘¹–Ž¡‘.ùœ#endif–¹–/*“!HAVE_STRING_H“*/ަ‘.ùœ#ifdef‘¹–HAVE_STDLIB_HŽ¡‘.ùœ#‘ s,include‘¹–Ž¡‘.ùœ#endifަ‘.ùœ#include‘¹–ަ‘.ùœ#include‘¹–Ž¡‘.ùœ#include‘¹–ަ‘.ùœextern–¹–char“*xmalloc“PARAMS((size_t));ަ‘.ùœ/*–¹–The“names“of“functions“that“actually“do“the“manipulation.“*/Ž¡‘.ùœint–¹–com_list“PARAMS((char“*));Ž¡‘.ùœint–¹–com_view“PARAMS((char“*));Ž¡‘.ùœint–¹–com_rename“PARAMS((char“*));Ž¡‘.ùœint–¹–com_stat“PARAMS((char“*));Ž¡‘.ùœint–¹–com_pwd“PARAMS((char“*));Ž¡‘.ùœint–¹–com_delete“PARAMS((char“*));Ž¡‘.ùœint–¹–com_help“PARAMS((char“*));Ž¡‘.ùœint–¹–com_cd“PARAMS((char“*));Ž¡‘.ùœint–¹–com_quit“PARAMS((char“*));ަ‘.ùœ/*–¹–A“structure“which“contains“information“on“the“commands“this“programŽ¡‘=&^can–¹–understand.“*/ަ‘.ùœtypedef–¹–struct“{Ž¡‘8lÈchar–¹–*name;“/*“User“printable“name“of“the“function.“*/Ž¡‘8lÈrl_icpfunc_t–¹–*func;“/*“Function“to“call“to“do“the“job.“*/Ž¡‘8lÈchar–¹–*doc;“/*“Documentation“for“this“function.‘ s,*/Ž¡‘.ùœ}‘¹–COMMAND;ŽŽŒ‹;$=Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—59ŽŽŽ ƒ33 ý«LÍ‘.ùœÉCOMMAND–¹–commands[]“=“{ޤ €‘8lÈ{–¹–"cd",“com_cd,“"Change“to“directory“DIR"“},Ž¡‘8lÈ{–¹–"delete",“com_delete,“"Delete“FILE"“},Ž¡‘8lÈ{–¹–"help",“com_help,“"Display“this“text"“},Ž¡‘8lÈ{–¹–"?",“com_help,“"Synonym“for“`help'"“},Ž¡‘8lÈ{–¹–"list",“com_list,“"List“files“in“DIR"“},Ž¡‘8lÈ{–¹–"ls",“com_list,“"Synonym“for“`list'"“},Ž¡‘8lÈ{–¹–"pwd",“com_pwd,“"Print“the“current“working“directory"“},Ž¡‘8lÈ{–¹–"quit",“com_quit,“"Quit“using“Fileman"“},Ž¡‘8lÈ{–¹–"rename",“com_rename,“"Rename“FILE“to“NEWNAME"“},Ž¡‘8lÈ{–¹–"stat",“com_stat,“"Print“out“statistics“on“FILE"“},Ž¡‘8lÈ{–¹–"view",“com_view,“"View“the“contents“of“FILE"“},Ž¡‘8lÈ{–¹–(char“*)NULL,“(rl_icpfunc_t“*)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)Ž¡‘F™Šchar‘¹–*s;Ž¡‘.ùœ{Ž¡‘8lÈchar‘¹–*r;ަ‘8lÈr–¹–=“xmalloc“(strlen“(s)“+“1);Ž¡‘8lÈstrcpy–¹–(r,“s);Ž¡‘8lÈreturn‘¹–(r);Ž¡‘.ùœ}ަ‘.ùœmain–¹–(argc,“argv)Ž¡‘F™Šint‘¹–argc;Ž¡‘F™Šchar‘¹–**argv;Ž¡‘.ùœ{Ž¡‘8lÈchar–¹–*line,“*s;ަ‘8lÈprogname–¹–=“argv[0];ަ‘8lÈinitialize_readline–¹–();“/*“Bind“our“completer.“*/ަ‘8lÈ/*–¹–Loop“reading“and“executing“lines“until“the“user“quits.“*/Ž¡‘8lÈfor–¹–(“;“done“==“0;“)Ž¡‘Aßô{Ž¡‘KS line–¹–=“readline“("FileMan:“");ަ‘KS if‘¹–(!line)Ž¡‘TÆLbreak;ަ‘KS /*–¹–Remove“leading“and“trailing“whitespace“from“the“line.Ž¡‘YâThen,–¹–if“there“is“anything“left,“add“it“to“the“history“listŽ¡‘Yâand–¹–execute“it.“*/ŽŽŒ‹<+­Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—60ŽŽŽ ƒ33 ý ÌÍ‘KS És–¹–=“stripwhite“(line);Ž©‘KS if‘¹–(*s)ޤ €‘TÆL{Ž¡‘^9xadd_history‘¹–(s);Ž¡‘^9xexecute_line‘¹–(s);Ž¡‘TÆL}ަ‘KS free‘¹–(line);Ž¡‘Aßô}Ž¡‘8lÈexit‘¹–(0);Ž¡‘.ùœ}ަ‘.ùœ/*–¹–Execute“a“command“line.“*/Ž¡‘.ùœintŽ¡‘.ùœexecute_line‘¹–(line)Ž¡‘F™Šchar‘¹–*line;Ž¡‘.ùœ{Ž¡‘8lÈregister–¹–int“i;Ž¡‘8lÈCOMMAND‘¹–*command;Ž¡‘8lÈchar‘¹–*word;ަ‘8lÈ/*–¹–Isolate“the“command“word.“*/Ž¡‘8lÈi–¹–=“0;Ž¡‘8lÈwhile–¹–(line[i]“&&“whitespace“(line[i]))Ž¡‘Aßôi++;Ž¡‘8lÈword–¹–=“line“+“i;ަ‘8lÈwhile–¹–(line[i]“&&“!whitespace“(line[i]))Ž¡‘Aßôi++;ަ‘8lÈif‘¹–(line[i])Ž¡‘Aßôline[i++]–¹–=“'\0';ަ‘8lÈcommand–¹–=“find_command“(word);ަ‘8lÈif‘¹–(!command)Ž¡‘Aßô{Ž¡‘KS fprintf–¹–(stderr,“"%s:“No“such“command“for“FileMan.\n",“word);Ž¡‘KS return‘¹–(-1);Ž¡‘Aßô}ަ‘8lÈ/*–¹–Get“argument“to“command,“if“any.“*/Ž¡‘8lÈwhile–¹–(whitespace“(line[i]))Ž¡‘Aßôi++;ަ‘8lÈword–¹–=“line“+“i;ަ‘8lÈ/*–¹–Call“the“function.“*/Ž¡‘8lÈreturn–¹–((*(command->func))“(word));Ž¡‘.ùœ}ަ‘.ùœ/*–¹–Look“up“NAME“as“the“name“of“a“command,“and“return“a“pointer“to“thatŽ¡‘=&^command.‘ s,Return–¹–a“NULL“pointer“if“NAME“isn't“a“command“name.“*/Ž¡‘.ùœCOMMAND‘¹–*Ž¡‘.ùœfind_command‘¹–(name)Ž¡‘F™Šchar‘¹–*name;Ž¡‘.ùœ{ŽŽŒ‹=2æŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—61ŽŽŽ ƒ33 ý ÌÍ‘8lÈÉregister–¹–int“i;Ž©‘8lÈfor–¹–(i“=“0;“commands[i].name;“i++)ޤ €‘Aßôif–¹–(strcmp“(name,“commands[i].name)“==“0)Ž¡‘KS return‘¹–(&commands[i]);ަ‘8lÈreturn–¹–((COMMAND“*)NULL);Ž¡‘.ùœ}ަ‘.ùœ/*–¹–Strip“whitespace“from“the“start“and“end“of“STRING.‘ s,Return“a“pointerŽ¡‘=&^into–¹–STRING.“*/Ž¡‘.ùœchar‘¹–*Ž¡‘.ùœstripwhite‘¹–(string)Ž¡‘F™Šchar‘¹–*string;Ž¡‘.ùœ{Ž¡‘8lÈregister–¹–char“*s,“*t;ަ‘8lÈfor–¹–(s“=“string;“whitespace“(*s);“s++)Ž¡‘Aßô;ަ‘8lÈif–¹–(*s“==“0)Ž¡‘Aßôreturn‘¹–(s);ަ‘8lÈt–¹–=“s“+“strlen“(s)“-“1;Ž¡‘8lÈwhile–¹–(t“>“s“&&“whitespace“(*t))Ž¡‘Aßôt--;Ž¡‘8lÈ*++t–¹–=“'\0';ަ‘8lÈreturn‘¹–s;Ž¡‘.ùœ}ަ‘.ùœ/*–¹–****************************************************************“*/Ž¡‘.ùœ/*’7ج*/Ž¡‘.ùœ/*‘U ŒInterface–¹–to“Readline“Completion‘K™`*/Ž¡‘.ùœ/*’7ج*/Ž¡‘.ùœ/*–¹–****************************************************************“*/ަ‘.ùœchar–¹–*command_generator“PARAMS((const“char“*,“int));Ž¡‘.ùœchar–¹–**fileman_completion“PARAMS((const“char“*,“int,“int));ަ‘.ùœ/*–¹–Tell“the“GNU“Readline“library“how“to“complete.‘ s,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‘¹–()Ž¡‘.ùœ{Ž¡‘8lÈ/*–¹–Allow“conditional“parsing“of“the“~/.inputrc“file.“*/Ž¡‘8lÈrl_readline_name–¹–=“"FileMan";ަ‘8lÈ/*–¹–Tell“the“completer“that“we“want“a“crack“first.“*/Ž¡‘8lÈrl_attempted_completion_function–¹–=“fileman_completion;Ž¡‘.ùœ}ަ‘.ùœ/*–¹–Attempt“to“complete“on“the“contents“of“TEXT.‘ s,START“and“END“bound“theŽ¡‘=&^region–¹–of“rl_line_buffer“that“contains“the“word“to“complete.‘ s,TEXT“isŽ¡‘=&^the–¹–word“to“complete.‘ s,We“can“use“the“entire“contents“of“rl_line_bufferŽ¡‘=&^in–¹–case“we“want“to“do“some“simple“parsing.‘ s,Return“the“array“of“matches,Ž¡‘=&^or–¹–NULL“if“there“aren't“any.“*/Ž¡‘.ùœchar‘¹–**ŽŽŒ‹>81Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—62ŽŽŽ ƒ33 ý ÌÍ‘.ùœÉfileman_completion–¹–(text,“start,“end)ޤ €‘F™Šconst–¹–char“*text;Ž¡‘F™Šint–¹–start,“end;Ž¡‘.ùœ{Ž¡‘8lÈchar‘¹–**matches;ޤ‘8lÈmatches–¹–=“(char“**)NULL;Ž¡‘8lÈ/*–¹–If“this“word“is“at“the“start“of“the“line,“then“it“is“a“commandޤ €‘F™Što–¹–complete.‘ s,Otherwise“it“is“the“name“of“a“file“in“the“currentŽ¡‘F™Šdirectory.‘¹–*/Ž¡‘8lÈif–¹–(start“==“0)Ž¡‘Aßômatches–¹–=“rl_completion_matches“(text,“command_generator);Ž©‘8lÈreturn‘¹–(matches);Ž¡‘.ùœ}ަ‘.ùœ/*–¹–Generator“function“for“command“completion.‘ s,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)Ž¡‘F™Šconst–¹–char“*text;Ž¡‘F™Šint‘¹–state;Ž¡‘.ùœ{Ž¡‘8lÈstatic–¹–int“list_index,“len;Ž¡‘8lÈchar‘¹–*name;ަ‘8lÈ/*–¹–If“this“is“a“new“word“to“complete,“initialize“now.‘ s,This“includesŽ¡‘F™Šsaving–¹–the“length“of“TEXT“for“efficiency,“and“initializing“the“indexŽ¡‘F™Švariable–¹–to“0.“*/Ž¡‘8lÈif‘¹–(!state)Ž¡‘Aßô{Ž¡‘KS list_index–¹–=“0;Ž¡‘KS len–¹–=“strlen“(text);Ž¡‘Aßô}ަ‘8lÈ/*–¹–Return“the“next“name“which“partially“matches“from“the“command“list.“*/Ž¡‘8lÈwhile–¹–(name“=“commands[list_index].name)Ž¡‘Aßô{Ž¡‘KS list_index++;ަ‘KS if–¹–(strncmp“(name,“text,“len)“==“0)Ž¡‘TÆLreturn‘¹–(dupstr(name));Ž¡‘Aßô}ަ‘8lÈ/*–¹–If“no“names“matched,“then“return“NULL.“*/Ž¡‘8lÈreturn–¹–((char“*)NULL);Ž¡‘.ùœ}ަ‘.ùœ/*–¹–****************************************************************“*/Ž¡‘.ùœ/*’7ج*/Ž¡‘.ùœ/*‘l¬zFileMan‘¹–Commands‘’Ò*/Ž¡‘.ùœ/*’7ج*/Ž¡‘.ùœ/*–¹–****************************************************************“*/ަ‘.ùœ/*–¹–String“to“pass“to“system“().‘ s,This“is“for“the“LIST,“VIEW“and“RENAMEŽ¡‘=&^commands.‘¹–*/ŽŽŒ‹?@ Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—63ŽŽŽ ƒ33 ý ÌÍ‘.ùœÉstatic–¹–char“syscom[1024];Ž©‘.ùœ/*–¹–List“the“file(s)“named“in“arg.“*/ޤ €‘.ùœcom_list‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈif‘¹–(!arg)Ž¡‘Aßôarg–¹–=“"";ަ‘8lÈsprintf–¹–(syscom,“"ls“-FClg“%s",“arg);Ž¡‘8lÈreturn–¹–(system“(syscom));Ž¡‘.ùœ}ަ‘.ùœcom_view‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈif–¹–(!valid_argument“("view",“arg))Ž¡‘Aßôreturn‘¹–1;ަ‘.ùœ#if–¹–defined“(__MSDOS__)Ž¡‘8lÈ/*–¹–more.com“doesn't“grok“slashes“in“pathnames“*/Ž¡‘8lÈsprintf–¹–(syscom,“"less“%s",“arg);Ž¡‘.ùœ#elseŽ¡‘8lÈsprintf–¹–(syscom,“"more“%s",“arg);Ž¡‘.ùœ#endifŽ¡‘8lÈreturn–¹–(system“(syscom));Ž¡‘.ùœ}ަ‘.ùœcom_rename‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈtoo_dangerous‘¹–("rename");Ž¡‘8lÈreturn‘¹–(1);Ž¡‘.ùœ}ަ‘.ùœcom_stat‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈstruct–¹–stat“finfo;ަ‘8lÈif–¹–(!valid_argument“("stat",“arg))Ž¡‘Aßôreturn‘¹–(1);ަ‘8lÈif–¹–(stat“(arg,“&finfo)“==“-1)Ž¡‘Aßô{Ž¡‘KS perror‘¹–(arg);Ž¡‘KS return‘¹–(1);Ž¡‘Aßô}ަ‘8lÈprintf–¹–("Statistics“for“`%s':\n",“arg);ަ‘8lÈprintf–¹–("%s“has“%d“link%s,“and“is“%d“byte%s“in“length.\n",Ž¡‘8lÈarg,Ž¡‘^9xfinfo.st_nlink,Ž¡‘^9x(finfo.st_nlink–¹–==“1)“?“""“:“"s",Ž¡‘^9xfinfo.st_size,Ž¡‘^9x(finfo.st_size–¹–==“1)“?“""“:“"s");Ž¡‘8lÈprintf–¹–("Inode“Last“Change“at:“%s",“ctime“(&finfo.st_ctime));ŽŽŒ‹@G–Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—64ŽŽŽ ƒ33 ý ÌÍ‘8lÈÉprintf–¹–("‘Y„Last“access“at:“%s",“ctime“(&finfo.st_atime));ޤ €‘8lÈprintf–¹–("‘æXLast“modified“at:“%s",“ctime“(&finfo.st_mtime));Ž¡‘8lÈreturn‘¹–(0);Ž¡‘.ùœ}Ž©‘.ùœcom_delete‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈtoo_dangerous‘¹–("delete");Ž¡‘8lÈreturn‘¹–(1);Ž¡‘.ùœ}ަ‘.ùœ/*–¹–Print“out“help“for“ARG,“or“for“all“of“the“commands“if“ARG“isŽ¡‘=&^not–¹–present.“*/Ž¡‘.ùœcom_help‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈregister–¹–int“i;Ž¡‘8lÈint–¹–printed“=“0;ަ‘8lÈfor–¹–(i“=“0;“commands[i].name;“i++)Ž¡‘Aßô{Ž¡‘KS if–¹–(!*arg“||“(strcmp“(arg,“commands[i].name)“==“0))Ž¡‘TÆL{Ž¡‘^9xprintf–¹–("%s\t\t%s.\n",“commands[i].name,“commands[i].doc);Ž¡‘^9xprinted++;Ž¡‘TÆL}Ž¡‘Aßô}ަ‘8lÈif‘¹–(!printed)Ž¡‘Aßô{Ž¡‘KS printf–¹–("No“commands“match“`%s'.‘ s,Possibilties“are:\n",“arg);ަ‘KS for–¹–(i“=“0;“commands[i].name;“i++)Ž¡‘TÆL{Ž¡‘^9x/*–¹–Print“in“six“columns.“*/Ž¡‘^9xif–¹–(printed“==“6)Ž¡‘g¬¤{Ž¡‘qÐprinted–¹–=“0;Ž¡‘qÐprintf‘¹–("\n");Ž¡‘g¬¤}ަ‘^9xprintf–¹–("%s\t",“commands[i].name);Ž¡‘^9xprinted++;Ž¡‘TÆL}ަ‘KS if‘¹–(printed)Ž¡‘TÆLprintf‘¹–("\n");Ž¡‘Aßô}Ž¡‘8lÈreturn‘¹–(0);Ž¡‘.ùœ}ަ‘.ùœ/*–¹–Change“to“the“directory“ARG.“*/Ž¡‘.ùœcom_cd‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈif–¹–(chdir“(arg)“==“-1)Ž¡‘Aßô{ŽŽŒ‹AM9Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—65ŽŽŽ ƒ33 ý ÌÍ‘KS Éperror‘¹–(arg);ޤ €‘KS return‘¹–1;Ž¡‘Aßô}Ž©‘8lÈcom_pwd‘¹–("");Ž¡‘8lÈreturn‘¹–(0);Ž¡‘.ùœ}ަ‘.ùœ/*–¹–Print“out“the“current“working“directory.“*/Ž¡‘.ùœcom_pwd‘¹–(ignore)Ž¡‘F™Šchar‘¹–*ignore;Ž¡‘.ùœ{Ž¡‘8lÈchar–¹–dir[1024],“*s;ަ‘8lÈs–¹–=“getcwd“(dir,“sizeof(dir)“-“1);Ž¡‘8lÈif–¹–(s“==“0)Ž¡‘Aßô{Ž¡‘KS printf–¹–("Error“getting“pwd:“%s\n",“dir);Ž¡‘KS return‘¹–1;Ž¡‘Aßô}ަ‘8lÈprintf–¹–("Current“directory“is“%s\n",“dir);Ž¡‘8lÈreturn‘¹–0;Ž¡‘.ùœ}ަ‘.ùœ/*–¹–The“user“wishes“to“quit“using“this“program.‘ s,Just“set“DONE“non-zero.“*/Ž¡‘.ùœcom_quit‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈdone–¹–=“1;Ž¡‘8lÈreturn‘¹–(0);Ž¡‘.ùœ}ަ‘.ùœ/*–¹–Function“which“tells“you“that“you“can't“do“this.“*/Ž¡‘.ùœtoo_dangerous‘¹–(caller)Ž¡‘F™Šchar‘¹–*caller;Ž¡‘.ùœ{Ž¡‘8lÈfprintf‘¹–(stderr,Ž¡‘bó"%s:–¹–Too“dangerous“for“me“to“distribute.‘ s,Write“it“yourself.\n",Ž¡‘bó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)Ž¡‘F™Šchar–¹–*caller,“*arg;Ž¡‘.ùœ{Ž¡‘8lÈif–¹–(!arg“||“!*arg)Ž¡‘Aßô{Ž¡‘KS fprintf–¹–(stderr,“"%s:“Argument“required.\n",“caller);Ž¡‘KS return‘¹–(0);Ž¡‘Aßô}ަ‘8lÈreturn‘¹–(1);Ž¡‘.ùœ}ŽŽŒ‹BR»Ÿò’¸¼Ëá66ŽŽŽ ƒ33 ý ÌÍ‘GëTApp›Š=endix‘záA‘ ¸QGNU–z³F‘þaGree“Do˜cumen‘ÿuÂtation“LicenseŽŽŸƒª’£¤AáV‘ÿeersion–¦f1.3,“3“No•²!v“em“bMÞer‘¦f2008Ž©Q‘.ùœCop•²!yrigh“t‘±ž«‚cŽŽŽ‘¦fê ŽŽŽŽ‘@á2000,–¦f2001,“2002,“2007,“2008“F›ÿeree“Soft•²!w“are–¦fF˜oundation,“Inc.ޤ 33‘.ùœâhttp://fsf.org/ŽŸff‘.ùœáEv•²!ery“one–¦fis“pMÞermitted“to“copš²!y“and“distribute“v˜erbatim“copiesŽ¡‘.ùœof–¦fthis“license“doMÞcumenš²!t,“but“c˜hanging“it“is“not“allo˜w˜ed.ަ‘-0.Ž‘'¿«PREAMBLEަ‘'¿«The–vQpurpMÞose›vRof“this˜License“is˜to“mak²!e“a˜man²!ual,›ªLtextb•MÞo“ok,˜or–vQother‘vRfunctional“andŽ¡‘'¿«useful–žïdoMÞcumen²!t›žîåfree‘;öáin“the“sense˜of“freedom:‘Ú!to“assure“ev•²!ery“one‘žïthe˜e ectiv“e‘žïfreedomŽ¡‘'¿«to–Æ9cop²!y›Æ:and“redistribute“it,‘Î.with“or˜without“moMÞdifying“it,‘Î.either“commercially˜or“non-Ž¡‘'¿«commercially–ÿe.‘cÏSecondarily“,‘Hàthis–(aLicense›(bpreserv²!es“for“the˜author“and“publisher˜a“w•²!a“yŽ¡‘'¿«to–W9get“credit›W8for“their“w²!ork,‘ƒmwhile“not“bMÞeing“considered˜respšMÞonsible“for“mo˜di cationsŽ¡‘'¿«made–¦fb²!y“others.ަ‘'¿«This–È/License›È0is“a“kind“of˜\cop•²!yleft",‘ô whic“h–È/means˜that“deriv‘ÿdDativš²!e“w˜orks“of‘È0the“doMÞcumen˜tŽ¡‘'¿«m•²!ust›õthemselv“es–ôbMÞe˜free˜in˜the“same˜sense.‘ ‰It˜complemen²!ts˜the“GNU‘ÙGeneral˜PublicŽ¡‘'¿«License,–¦fwhicš²!h“is“a“cop˜yleft“license“designed“for“free“soft˜w˜are.ަ‘'¿«W‘ÿee›‹#ha•²!v“e˜designed˜this˜License˜in˜order˜to˜use˜it‘‹"for˜man“uals˜for˜free˜soft“w“are,‘—bMÞecauseŽ¡‘'¿«free›?soft•²!w“are˜needs˜free‘>doMÞcumen“tation:‘³a˜free˜program˜should‘>come˜with˜man“ualsŽ¡‘'¿«pro²!viding–urthe›ussame“freedoms˜that“the˜soft•²!w“are–urdoMÞes.‘ÍŒBut˜this“License˜is“not˜limited“toŽ¡‘'¿«soft•²!w“are›­âman“uals;‘±¡it–­ãcan˜bMÞe“used˜for“an²!y˜textual“w²!ork,‘¯Áregardless“of˜sub‘›»ject“matter˜orŽ¡‘'¿«whether–Ç2it“is“published“as“a“prin²!ted“b•MÞo“ok.‘@BW‘ÿee–Ç2recommend“this“License“principally“forŽ¡‘'¿«w²!orks–¦fwhose“purpMÞose“is“instruction“or“reference.ަ‘-1.Ž‘'¿«APPLICABILITY–¦fAND“DEFINITIONSŽŸP‘'¿«This–Ì>License‘Ì=applies“to“anš²!y“man˜ual‘Ì=or“other“w˜ork,‘³in“an˜y–Ì=medium,‘´that“con˜tains‘Ì>aŽ¡‘'¿«notice–ýplaced›ýb²!y“the˜cop•²!yrigh“t‘ýholder˜sa“ying–ýit˜can“bMÞe˜distributed“under˜the“termsŽ¡‘'¿«of–€†this“License.‘l=Sucš²!h“a“notice“gran˜ts“a“w˜orld-wide,‘· ro˜y˜alt˜y-free“license,‘·unlimited“inŽ¡‘'¿«duration,‘â to–o·use›o¶that“w²!ork“under˜the“conditions“stated˜herein.‘ 9ÏThe“\DoMÞcumen²!t",Ž¡‘'¿«bMÞeloš²!w,‘tkrefers–gìto“an˜y“suc˜h‘gíman˜ual“or“w˜ork.‘É An˜y“mem˜bMÞer“of“the‘gípublic“is“a“licensee,‘tkandŽ¡‘'¿«is–ÿaddressed“as“\yš²!ou".‘¦@Y‘ÿeou“accept“the“license“if“y˜ou“cop˜y‘ÿe,‘ îmoMÞdify“or“distribute“the“w˜orkŽ¡‘'¿«in–¦fa“w•²!a“y–¦frequiring“pMÞermission“under“cop•²!yrigh“t‘¦fla“w.ަ‘'¿«A‘ ¦\MošMÞdi ed– ÀV‘ÿeersion"‘ Áof“the“Do˜cumenš²!t“means‘ Áan˜y“w˜ork“con˜taining“the‘ ÁDoMÞcumen˜t“orŽ¡‘'¿«a–‚hpMÞortion›‚gof“it,‘¹heither˜copied“v²!erbatim,‘¹hor˜with“moMÞdi cations“and/or˜translated“in²!toŽ¡‘'¿«another‘¦flanguage.ަ‘'¿«A‘ž\Secondary–ÀSection"“is›Áa“named˜appMÞendix“or˜a“fron²!t-matter˜section“of˜the“DoMÞcumen²!tŽ¡‘'¿«that–Ž/deals“exclusiv²!ely›Ž0with“the“relationship“of˜the“publishers“or“authors˜of“the“DoMÞcumen²!tŽ¡‘'¿«to–z the‘zDoMÞcumenš²!t's“o˜v˜erall›zsub‘›»ject“(or˜to“related“matters)˜and“con²!tains˜nothing“thatŽ¡‘'¿«could–Ø®fall›دdirectly“within“that“o•²!v“erall˜sub‘›»ject.‘tµ(Th“us,‘%@if˜the›Ø®DoMÞcumen“t˜is˜in‘دpart˜aŽ¡‘'¿«textb•MÞo“ok›Õ†of–Õ…mathematics,‘ÿMa“Secondary˜Section˜ma²!y˜not“explain˜an²!y˜mathematics.)‘˜=TheŽ¡‘'¿«relationship–GÞcould“bMÞe“a“matter“of“historical“connection“with“the“sub‘›»ject“or“with“relatedŽ¡‘'¿«matters,–jor‘Bøof›B÷legal,“commercial,‘jphilosophical,“ethical˜or˜p•MÞolitical‘Bøp“osition˜regardingŽ¡‘'¿«them.ަ‘'¿«The›r\In•²!v‘ÿdDarian“t–sSections"˜are˜certain˜Secondary“Sections˜whose˜titles˜are“designated,‘0ÖasŽ¡‘'¿«bMÞeing–2Dthose›2Cof“In•²!v‘ÿdDarian“t–2DSections,‘I}in“the“notice˜that“sa²!ys˜that“the“DoMÞcumen²!t˜is“releasedŽŽŒ‹CX<Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:67ŽŽŽ ƒ33 ý ÌÍ‘'¿«under–S5this“License.‘Â"If›S4a“section“doMÞes“not“ t˜the“abMÞo•²!v“e–S5de nition“of“Secondary˜then“it“isޤ 33‘'¿«not›Óallo•²!w“ed˜to‘ÓŽbMÞe˜designated˜as˜In“v‘ÿdDarian“t.‘eSThe˜DoMÞcumen“t˜ma“y‘ÓŽcon“tain˜zero˜In“v‘ÿdDarian“tŽ¡‘'¿«Sections.‘¢ÄIf–õthe“DošMÞcumen²!t“do˜es‘õnot“idenš²!tify“an˜y“In˜v‘ÿdDarian˜t“Sections“then‘õthere“are“none.Ž©&g‘'¿«The›f­\Co•²!v“er–f¬T‘ÿeexts"˜are˜certain˜short“passages˜of˜text˜that“are˜listed,‘–¾as˜F‘ÿeron•²!t-Co“v“erŽ¡‘'¿«T›ÿeexts–-or“Bac•²!k-Co“v“er‘,T˜exts,‘"8in–-the“notice“that‘,saš²!ys“that“the“DoMÞcumen˜t‘,is“released“underŽ¡‘'¿«this›’License.‘¯AA‘nF‘ÿeron•²!t-Co“v“er˜T‘ÿeext˜ma“y˜bMÞe˜at˜most˜5›‘w“ords,‘6Šand˜a›’Bac“k-Co“v“er˜T‘ÿeext˜ma“yŽ¡‘'¿«bMÞe–¦fat“most“25“w²!ords.ŽŸ&h‘'¿«A‘C¦\T‘ÿeransparen•²!t"›CÎcop“y˜of‘CÏthe˜DoMÞcumen“t˜means˜a‘CÏmac“hine-readable˜cop“y‘ÿe,‘k(represen“tedŽ¡‘'¿«in–Jma“format›Jnwhose“spMÞeci cation“is“a²!v‘ÿdDailable“to“the˜general“public,‘snthat˜is“suitable“forŽ¡‘'¿«revising–Îàthe‘ÎßdoMÞcumenš²!t“straigh˜tforw˜ardly“with›Îßgeneric“text˜editors“or“(for˜images“com-Ž¡‘'¿«pMÞosed–ÚÃof›ÚÄpixels)“generic˜pain²!t“programs˜or“(for˜dra²!wings)“some˜widely“a•²!v‘ÿdDailable˜dra“wingŽ¡‘'¿«editor,‘…úand–}ßthat“is“suitable“for“input“to‘}àtext“formatters“or“for“automatic“translation“toŽ¡‘'¿«a–9Ov‘ÿdDariet²!y“of›9Nformats“suitable“for“input“to“text˜formatters.‘¹A‘93cop²!y“made˜in“an“otherwiseŽ¡‘'¿«T‘ÿeransparen²!t–„æ le“format›„åwhose“markup,‘¼†or“absence˜of“markup,‘¼†has˜bMÞeen“arranged“toŽ¡‘'¿«th•²!w“art–0ûor›0üdiscourage“subsequen²!t“moMÞdi cation˜b²!y“readers“is˜not“T‘ÿeransparen²!t.‘¶ºAn“imageŽ¡‘'¿«format– Éis“not“T‘ÿeransparenš²!t“if“used‘ Èfor“an˜y“substan˜tial“amoun˜t“of“text.‘MA‘ ©cop˜y“that“isŽ¡‘'¿«not–¦f\T‘ÿeransparen²!t"“is“called“\Opaque".ަ‘'¿«Examples–cXof“suitable›cWformats“for“T‘ÿeransparen²!t“copies“include˜plain“çasci>Ki“áwithoutŽ¡‘'¿«markup,‘„ÂT‘ÿeexinfo–XIinput“format,›„ÁLaT‘þ,³Ÿ[wEŽ‘B X‘XJinput“format,˜óKñ`y cmr10«SGML“áor‘XJ«XML“áusing“a“publiclyŽ¡‘'¿«a²!v‘ÿdDailable–«DTDá,‘üand›Âstandard-conforming“simple˜«HTMLá,‘üP²!ostScript“or˜«PDF“ádesignedŽ¡‘'¿«for–˜.hš²!uman“moMÞdi cation.‘³4Examples“of“transparen˜t“image“formats“include“«PNGá,‘ÔŸ«X¸ãCFŽ¡‘'¿«áand–¢«JPGá.‘ÐáOpaque“formats“include“proprietary‘¢formats“that“can“bMÞe“read“and“editedŽ¡‘'¿«only–sbš²!y‘sproprietary“w˜ord›sproMÞcessors,‘&J«SGML“áor˜«XML“áfor˜whic²!h“the˜«DTD“áand/orŽ¡‘'¿«pro•MÞcessing›W*to“ols˜are˜not‘W)generally˜a•²!v‘ÿdDailable,‘CYand˜the˜mac“hine-generated˜«HTMLá,Ž¡‘'¿«Pš²!ostScript–¦for“«PDF“áproMÞduced“b˜y“some“w˜ord“prošMÞcessors“for“output“purp˜oses“only‘ÿe.ަ‘'¿«The–Ü\Title›ÛP²!age"“means,‘<ùfor˜a“prin²!ted˜b•MÞo“ok,‘<ùthe–Ütitle˜page“itself,‘<ùplus˜sucš²!h“follo˜wingŽ¡‘'¿«pages–RÃas“are“needed“to“hold,–c}legibly‘ÿe,“the–RÃmaterial“this‘RÂLicense“requires“to“appMÞear“in“theŽ¡‘'¿«title–1.page.‘¶ÊF‘ÿeor“w²!orks›1-in“formats˜whic²!h“do“not˜ha•²!v“e‘1.an“y˜title–1.page“as˜sucš²!h,‘HŸ\Title“P˜age"Ž¡‘'¿«means–­Žthe“text“near›­the“most“prominen²!t“appMÞearance“of“the˜w²!ork's“title,‘¯Xpreceding“theŽ¡‘'¿«bšMÞeginning–¦fof“the“b˜o˜dy“of“the“text.ަ‘'¿«The–)—\publisher"“means‘)˜anš²!y“pMÞerson“or“en˜tit˜y“that“distributes‘)˜copies“of“the“DoMÞcumen˜tŽ¡‘'¿«to–¦fthe“public.ŽŸ&h‘'¿«A›ísection–ò\En²!titled“XYZ"˜means“a“named›ósubunit“of“the“DoMÞcumen²!t˜whose“title“eitherŽ¡‘'¿«is–Uªprecisely‘U©XYZ›U•or“con²!tains“XYZ˜in“paren•²!theses›U©follo“wing–Uªtext“that˜translates“XYZ‘U•inŽ¡‘'¿«another–þ¯language.‘¥ö(Here“XYZ‘þ„stands“for“a“spšMÞeci c“section“name“men²!tioned“b˜elo•²!w,‘ :suc“hŽ¡‘'¿«as›aa\Ac•²!kno“wledgemen“ts",–o/\Dedications",“\Endorsemen²!ts",“or˜\History".)‘ÆÛT‘ÿeo˜\Preserv²!eŽ¡‘'¿«the–›Title"›šof“suc²!h˜a“section“when˜y²!ou“moMÞdify˜the“DoMÞcumen²!t“means˜that“it˜remains“aŽ¡‘'¿«section–¦f\En²!titled“XYZ"“according“to“this“de nition.ަ‘'¿«The–SuDoMÞcumenš²!t“ma˜y“include“W‘ÿearran˜t˜y“Disclaimers“next‘Svto“the“notice“whic˜h“states“thatŽ¡‘'¿«this–¹License“applies‘ºto“the“DoMÞcumenš²!t.‘×These“W‘ÿearran˜t˜y“Disclaimers‘ºare“considered“toŽ¡‘'¿«bMÞe–„ýincluded›„þb²!y“reference“in“this˜License,‘¼£but“only“as“regards˜disclaiming“w•²!arran“ties:Ž¡‘'¿«an²!y–nother›n‘implication“that˜these“W‘ÿearran•²!t“y˜Disclaimers‘nma“y˜ha“v“e‘nis˜v“oid–nand˜has“noŽ¡‘'¿«e ect–¦fon“the“meaning“of“this“License.ަ‘-2.Ž‘'¿«VERBA‘ÿeTIM‘¦fCOPYINGŽŽŒ‹Dh¸Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:68ŽŽŽ ƒ33 ý ÌÍ‘'¿«Y‘ÿeou–’ùmaš²!y“cop˜y“and“distribute“the“DoMÞcumen˜t“in“an˜y“medium,‘Îeither“commercially“orޤ 33‘'¿«noncommercially‘ÿe,›zªpro²!vided–that‘this“License,˜the‘cop•²!yrigh“t–notices,˜and‘the“licenseŽ¡‘'¿«notice–Ksa²!ying›K this“License˜applies“to˜the“DoMÞcumen²!t“are˜reproMÞduced“in˜all“copies,‘t7andŽ¡‘'¿«that–1'yš²!ou“add“no‘1(other“conditions“whatsoMÞev˜er“to“those“of“this“License.‘¶ÉY‘ÿeou“ma˜y“not“useŽ¡‘'¿«tec²!hnical–ò“measures›ò”to“obstruct˜or“con²!trol˜the“reading˜or“further˜cop²!ying“of˜the“copiesŽ¡‘'¿«y•²!ou›òÇmak“e‘òÈor˜distribute.‘¡þHo“w“ev“er,‘´y“ou˜ma“y˜accept‘òÈcompMÞensation˜in˜exc“hange‘òÈfor˜copies.Ž¡‘'¿«If–Þy²!ou›Þdistribute“a“large˜enough“n•²!um“bMÞer˜of–Þcopies“y•²!ou˜m“ust–Þalso“follo²!w˜the“conditionsŽ¡‘'¿«in–¦fsection“3.Ž©"#‘'¿«Y‘ÿeou–}ìma²!y“also›}ëlend“copies,‘¹7under“the“same“conditions“stated˜abMÞo•²!v“e,‘¹8and˜y“ou›}ìma“y˜publiclyŽ¡‘'¿«displa²!y‘¦fcopies.ަ‘-3.Ž‘'¿«COPYING–¦fIN“QUANTITYަ‘'¿«If–Ãyš²!ou‘Âpublish“prin˜ted›Âcopies“(or˜copies˜in“media“that˜commonly“ha•²!v“e˜prin“ted˜co“v“ers)‘ÃofŽ¡‘'¿«the‘Ñ.DošMÞcumen•²!t,‘Ûßn“um“b˜ering–Ñ.more“than–Ñ-100,‘Ûàand“the–Ñ.Do˜cumen²!t's“license‘Ñ-notice“requiresŽ¡‘'¿«Co•²!v“er›ÜT‘ÿeexts,‘<ùy“ou‘Ûm“ust˜enclose˜the˜copies‘Ûin˜co“v“ers˜that˜carry–ÿe,‘<ùclearly‘Ûand˜legibly“,‘<ùallŽ¡‘'¿«these›´@Co•²!v“er˜T–ÿeexts:‘ùF“ron•²!t-Co“v“er˜T‘ÿeexts˜on˜the˜fron“t˜co“v“er,‘÷µand˜Bac“k-Co“v“er˜T‘ÿeexts˜onŽ¡‘'¿«the›öbac•²!k‘õco“v“er.‘Ñ Both˜co“v“ers˜m“ust–õalso˜clearly˜and˜legibly“iden•²!tify˜y“ou˜as‘õthe˜publisherŽ¡‘'¿«of›,these–+copies.‘H/The“fron•²!t˜co“v“er˜m“ust˜presen“t–+the˜full˜title“with˜all˜w²!ords˜of“the˜titleŽ¡‘'¿«equally–³xprominenš²!t“and‘³yvisible.‘Y‘ÿeou“ma˜y›³yadd“other“material“on“the˜co•²!v“ers–³xin“addition.Ž¡‘'¿«Cop•²!ying›Y4with‘Y3c“hanges˜limited–Y3to˜the“co•²!v“ers,‘…ças–Y3long˜as“they˜preserv²!e“the˜title“of˜theŽ¡‘'¿«DošMÞcumen²!t–uand“satisfy“these“conditions,‘¨Åcan“b˜e“treated‘uas“vš²!erbatim“cop˜ying“in“otherŽ¡‘'¿«respMÞects.ަ‘'¿«If–î|the“required›î}texts“for“either“co•²!v“er–î|are“toMÞo˜vš²!oluminous“to“ t“legibly‘ÿe,‘‚y˜ou“should“putŽ¡‘'¿«the–ò rst›òones“listed“(as“man²!y˜as“ t“reasonably)“on˜the“actual“co•²!v“er,‘ùand˜con“tin“ue‘òtheŽ¡‘'¿«rest–¦fonš²!to“adjacen˜t“pages.ŽŸ""‘'¿«If–?|y²!ou›?{publish“or˜distribute“Opaque˜copies“of˜the“DoMÞcumen•²!t˜n“um“bMÞering–?|more˜than“100,Ž¡‘'¿«y•²!ou›\3m“ust˜either‘\4include˜a˜mac“hine-readable˜T‘ÿeransparen“t˜cop“y˜along‘\4with˜eac“h˜OpaqueŽ¡‘'¿«cop²!y‘ÿe,‘[>or›7state–7in“or˜with“eacš²!h“Opaque“cop˜y‘7a“computer-net˜w˜ork“loMÞcation‘7from“whic˜hŽ¡‘'¿«the›éSgeneral‘éRnet•²!w“ork-using˜public˜has‘éRaccess˜to˜do“wnload˜using‘éRpublic-standard˜net“w“orkŽ¡‘'¿«protoMÞcols–¬=a“complete‘¬>T‘ÿeransparenš²!t“cop˜y“of“the“DoMÞcumen˜t,‘í³free“of“added“material.‘ïcIfŽ¡‘'¿«yš²!ou–ªuse“the‘ªlatter“option,‘êùy˜ou“m˜ust‘ªtak˜e“reasonably“pruden˜t“steps,‘êøwhen“y˜ou“bMÞeginŽ¡‘'¿«distribution–—lof›—mOpaque“copies˜in“quan•²!tit“y‘ÿe,‘Ó®to–—lensure“that˜this“T‘ÿeransparen•²!t˜cop“y‘—lwillŽ¡‘'¿«remain– Cthš²!us“accessible‘ Dat“the“stated“loMÞcation“un˜til‘ Dat“least“one“y˜ear“after‘ Dthe“last“timeŽ¡‘'¿«yš²!ou–k‘distribute‘k’an“Opaque“cop˜y‘k’(directly“or“through“y˜our‘k’agen˜ts“or“retailers)‘k’of“thatŽ¡‘'¿«edition–¦fto“the“public.ަ‘'¿«It–&Nis“requested,‘FHbut“not“required,‘FGthat“yš²!ou“con˜tact“the“authors“of“the“DoMÞcumen˜t“w˜ellŽ¡‘'¿«bMÞefore–oÅredistributing‘oÄanš²!y“large“n˜um˜bMÞer›oÄof“copies,‘z²to˜giv²!e“them˜a“c²!hance“to˜proš²!vide“y˜ouŽ¡‘'¿«with–¦fan“upšMÞdated“v²!ersion“of“the“Do˜cumen²!t.ަ‘-4.Ž‘'¿«MODIFICA‘ÿeTIONSަ‘'¿«Y‘ÿeou–*maš²!y“cop˜y“and›)distribute“a“MoMÞdi ed“V‘ÿeersion“of“the˜DoMÞcumen²!t“under“the“conditionsŽ¡‘'¿«of–…šsections›…›2“and˜3“abMÞo•²!v“e,‘¿]pro“vided˜that‘…šy“ou˜release–…šthe˜MoMÞdi ed“V‘ÿeersion˜under“preciselyŽ¡‘'¿«this–{ÞLicense,‘„`with“the›{ßMoMÞdi ed“V‘ÿeersion“ lling˜the“role“of˜the“DoMÞcumen•²!t,‘„`th“us‘{ÞlicensingŽ¡‘'¿«distribution–¸and“mošMÞdi cation‘¹of“the“Mo˜di ed“V‘ÿeersion“to“who˜ev²!er‘¹p˜ossesses“a“cop²!y“ofŽ¡‘'¿«it.‘ÝÝIn–¦faddition,“yš²!ou“m˜ust“do“these“things“in“the“MoMÞdi ed“V‘ÿeersion:ަ‘*òÄA.Ž‘=nUse–ípin“the“Title“Pš²!age“(and“on“the“co˜v˜ers,‘ÿ2if“an˜y)“a“title“distinct“from“that“of“theŽ¡‘=nDoMÞcumenš²!t,‘+and–ˆfrom“those“of“previous“v˜ersions‘‡(whic˜h“should,‘+if“there“w˜ere“an˜y‘ÿe,ŽŽŒ‹E{Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:69ŽŽŽ ƒ33 ý ÌÍ‘=nbšMÞe–Âølisted“in“the“History‘Â÷section“of“the“Do˜cumenš²!t).‘3“Y‘ÿeou“ma˜y‘Â÷use“the“same“title“asޤ 33‘=na–¦fprevious“vš²!ersion“if“the“original“publisher“of“that“v˜ersion“giv˜es“pMÞermission.Ž©€‘+gB.Ž‘=nList–ª\on“the“Title›ª[P²!age,‘«Zas“authors,‘«Yone“or“more“pMÞersons˜or“en²!tities“respMÞonsible“forŽ¡‘=nauthorship–"of›"the“moMÞdi cations“in˜the“MoMÞdi ed˜V‘ÿeersion,‘<|together“with“at˜least“ v²!eŽ¡‘=nof–߸the“principal“authors“of“the“DoMÞcumenš²!t“(all“of“its“principal“authors,‘uif“it“has“few˜erŽ¡‘=nthan–¦f vš²!e),“unless“they“release“y˜ou“from“this“requiremen˜t.ŽŸ€‘+@¢C.Ž‘=nState–±Óon›±Òthe“Title˜page“the˜name“of˜the“publisher˜of“the˜MoMÞdi ed“V‘ÿeersion,‘´­as“theŽ¡‘=npublisher.ަ‘*ËÕD.Ž‘=nPreservš²!e–¦fall“the“cop˜yrigh˜t“notices“of“the“DoMÞcumen˜t.ަ‘+µoE.Ž‘=nAdd–Äean›Ädappropriate“cop•²!yrigh“t˜notice‘Äefor˜y“our‘ÄemoMÞdi cations˜adjacen“t–Äeto˜the“otherŽ¡‘=ncop•²!yrigh“t‘¦fnotices.ŽŸ€‘,LF.Ž‘=nInclude,›hSimmediately–XÎafter“the“cop•²!yrigh“t–XÎnotices,˜a“license“notice“giving“the“publicŽ¡‘=npMÞermission–ïËto›ïÊuse“the˜MoMÞdi ed“V‘ÿeersion“under˜the“terms˜of“this“License,‘Pin˜the“formŽ¡‘=nshoš²!wn–¦fin“the“Addendum“bMÞelo˜w.ަ‘*‘nG.Ž‘=nPreserv²!e–¼min›¼lthat“license˜notice“the˜full“lists˜of“In•²!v‘ÿdDarian“t˜Sections–¼mand˜required“Co•²!v“erŽ¡‘=nT‘ÿeexts–¦fgivš²!en“in“the“DoMÞcumen˜t's“license“notice.ަ‘*òÄH.Ž‘=nInclude–¦fan“unaltered“cop²!y“of“this“License.ŽŸ€‘/4çI.Ž‘=nPreservš²!e–Ú†the‘Ú‡section“En˜titled‘Ú‡\History",‘çŽPreserv˜e“its›Ú‡Title,‘çŽand“add˜to“it˜an“itemŽ¡‘=nstating–_ at›_ least“the˜title,–mQy²!ear,“new˜authors,“and–_ publisher˜of“the˜MoMÞdi ed“V‘ÿeersionŽ¡‘=nas–ÄXgivš²!en“on‘ÄWthe“Title“P˜age.‘7³If‘ÄWthere“is“no“section“En˜titled“\History"‘ÄWin“the“DoMÞcu-Ž¡‘=nmenš²!t,‘O#create‘-eone–-dstating“the“title,‘O$y˜ear,–O#authors,“and‘-epublisher–-dof“the“DoMÞcumen˜tŽ¡‘=nas–Wgivš²!en“on“its“Title“P˜age,‘ƒFthen“add“an“item“describing“the“MoMÞdi ed“V‘ÿeersion“asŽ¡‘=nstated–¦fin“the“previous“sen²!tence.ަ‘-ˆ¢J.Ž‘=nPreservš²!e–æthe“net˜w˜ork“loMÞcation,‘õúif“an˜y‘ÿe,‘õúgiv˜en“in“the“DoMÞcumen˜t‘æfor“public“access“toŽ¡‘=na–½…T‘ÿeransparenš²!t“cop˜y‘½†of“the“DoMÞcumen˜t,‘ÃMand“lik˜ewise“the“net˜w˜ork‘½†loMÞcations“giv˜en“inŽ¡‘=nthe–Í„DoMÞcumenš²!t‘̓for“previous“v˜ersions‘̓it“w˜as“based“on.‘S6These‘̓ma˜y“bMÞe“placed‘̓in“theŽ¡‘=n\History"–8section.‘¦ÎY‘ÿeou›9ma²!y“omit˜a“net•²!w“ork–8loMÞcation˜for“a˜w²!ork“that˜w²!as“publishedŽ¡‘=nat–Kleast“four‘Ky²!ears“bšMÞefore“the“Do˜cumen²!t“itself,‘t@or“if“the“original‘Kpublisher“of“theŽ¡‘=nvš²!ersion–¦fit“refers“to“giv˜es“pMÞermission.ަ‘*¤åK.Ž‘=nF‘ÿeor–Ùranš²!y“section“En˜titled“\Ac˜kno˜wledgemen˜ts"“or“\Dedications",‘oPreserv˜e“the“TitleŽ¡‘=nof›/Rthe–/Qsection,‘G#and“preserv²!e˜in˜the“section˜all˜the“substance˜and“tone˜of˜eac²!h“of˜theŽ¡‘=ncon•²!tributor›¦fac“kno“wledgemen“ts˜and/or˜dedications˜giv“en˜therein.ަ‘,Q*L.Ž‘=nPreservš²!e–?Ôall‘?Óthe“In˜v‘ÿdDarian˜t›?ÓSections“of˜the“DoMÞcumen²!t,‘f/unaltered˜in“their˜text“andŽ¡‘=nin›PÜtheir–PÝtitles.‘Ý@Section“n•²!um“bMÞers˜or‘PÝthe˜equiv‘ÿdDalen“t–PÝare˜not“considered˜part“of˜theŽ¡‘=nsection‘¦ftitles.ŽŸ€‘)M.Ž‘=nDelete–°5anš²!y“section“En˜titled‘°4\Endorsemen˜ts".‘ûJSuc˜h“a“section‘°4ma˜y“not“bMÞe“includedŽ¡‘=nin–¦fthe“MoMÞdi ed“V‘ÿeersion.ަ‘*òÄN.Ž‘=nDo–g!not›g"retitle“an²!y˜existing“section“to˜bMÞe“Enš²!titled“\Endorsemen˜ts"›g"or“to˜con ict“inŽ¡‘=ntitle–¦fwith“anš²!y“In˜v‘ÿdDarian˜t“Section.ަ‘*¤åO.Ž‘=nPreserv•²!e›¦fan“y˜W‘ÿearran“t“y˜Disclaimers.ŽŸÌΑ'¿«If–Øthe›×MoMÞdi ed“V‘ÿeersion˜includes“new˜fron²!t-matter“sections˜or“appMÞendices˜that“qualifyŽ¡‘'¿«as–XSecondary›X Sections“and“con²!tain“no˜material“copied“from˜the“DoMÞcumen•²!t,‘g´y“ou˜ma“y‘XatŽ¡‘'¿«y²!our–ãkoption›ãldesignate“some˜or“all“of˜these“sections˜as“in•²!v‘ÿdDarian“t.‘”íT‘ÿeo˜do–ãkthis,‘ò­add“theirŽŽŒ‹F~Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:70ŽŽŽ ƒ33 ý ÌÍ‘'¿«titles–@«to“the“list›@¬of“In•²!v‘ÿdDarian“t–@«Sections“in“the“MoMÞdi ed“V‘ÿeersion's“license˜notice.‘¬¬Theseޤ 33‘'¿«titles–¦fmš²!ust“bMÞe“distinct“from“an˜y“other“section“titles.Ž©(ö‘'¿«Y‘ÿeou–pmaš²!y‘qadd“a“section“En˜titled‘q\Endorsemen˜ts",‘s²pro˜vided“it“con˜tains‘qnothing“butŽ¡‘'¿«endorsemen•²!ts›‘of‘‘y“our˜MoMÞdi ed˜V‘ÿeersion˜b“y‘‘v‘ÿdDarious˜parties|for˜example,‘•Zstatemen“ts˜ofŽ¡‘'¿«pšMÞeer–D review“or‘Dthat“the“text“has“b˜een‘Dappro•²!v“ed›D b“y˜an˜organization‘Das˜the˜authoritativ“eŽ¡‘'¿«de nition–¦fof“a“standard.ŽŸ(÷‘'¿«Y‘ÿeou–f,ma²!y›f-add“a˜passage“of˜up“to˜ vš²!e“w˜ords›f-as“a˜F›ÿeron•²!t-Co“v“er–f,T˜ext,‘sand›f-a“passage˜of“upŽ¡‘'¿«to–@25“wš²!ords‘@Žas“a“Bac˜k-Co˜v˜er“T‘ÿeext,‘Tìto›@Žthe“end“of“the˜list“of“Co•²!v“er–@T‘ÿeexts˜in“the“MoMÞdi edŽ¡‘'¿«V›ÿeersion.‘Õ+Only–N+one‘N*passage“of“F˜ron•²!t-Co“v“er‘N*T˜ext–N+and“one‘N*of“Bac•²!k-Co“v“er‘N+T˜ext‘N*ma“y‘N+bMÞeŽ¡‘'¿«added–NÁbš²!y“(or“through“arrangemen˜ts“made“b˜y)‘NÂan˜y“one“en˜tit˜y‘ÿe.‘À¦If“the“DoMÞcumen˜t“alreadyŽ¡‘'¿«includes›Éa‘Èco•²!v“er˜text–Èfor˜the˜same“co•²!v“er,‘/!previously˜added˜b“y‘Èy“ou˜or‘Èb“y˜arrangemen“tŽ¡‘'¿«made–:Çbš²!y“the“same“en˜tit˜y“y˜ou“are“acting“on“bMÞehalf“of,‘_ßy˜ou“ma˜y‘:Ènot“add“another;‘„÷butŽ¡‘'¿«y•²!ou›)ma“y˜replace–*the˜old˜one,‘2on˜explicit˜pMÞermission˜from˜the“previous˜publisher˜thatŽ¡‘'¿«added–¦fthe“old“one.ަ‘'¿«The–^author(s)›]and“publisher(s)˜of“the“DoMÞcumen²!t˜do“not“b²!y˜this“License˜giv²!e“pMÞermissionŽ¡‘'¿«to–¤juse“their›¤knames“for“publicit²!y“for“or˜to“assert“or“imply“endorsemen²!t˜of“an²!y“MoMÞdi edŽ¡‘'¿«V‘ÿeersion.ŽŸ(÷‘-5.Ž‘'¿«COMBINING‘¦fDOCUMENTSަ‘'¿«Y‘ÿeou›¦Çma•²!y‘¦Ècom“bine˜the˜DoMÞcumen“t–¦Èwith˜other“doMÞcumen²!ts˜released˜under“this˜License,Ž¡‘'¿«under–—sthe“terms›—tde ned“in“section“4˜abšMÞo•²!v“e–—sfor“mo˜di ed“v•²!ersions,‘Ó·pro“vided–—sthat“y²!ouŽ¡‘'¿«include– in› the“com²!bination“all“of˜the“In•²!v‘ÿdDarian“t– Sections˜of“all“of“the˜original“doMÞcumen²!ts,Ž¡‘'¿«unmoMÞdi ed,‘L3and–5¦list›5§them“all˜as“In•²!v‘ÿdDarian“t–5¦Sections˜of“yš²!our“com˜bined‘5§w˜ork“in‘5§its“licenseŽ¡‘'¿«notice,–¦fand“that“yš²!ou“preserv˜e“all“their“W‘ÿearran˜t˜y“Disclaimers.ަ‘'¿«The–¢@comš²!bined“w˜ork“need“only“con˜tain“one“cop˜y“of“this“License,‘£and“m˜ultiple“iden˜ticalŽ¡‘'¿«In•²!v‘ÿdDarian“t–æÝSections“maš²!y“bMÞe“replaced“with“a“single‘æÜcop˜y‘ÿe.‘ŸBIf“there“are“m˜ultiple“In˜v‘ÿdDarian˜tŽ¡‘'¿«Sections–6Çwith›6Èthe“same˜name“but˜di erenš²!t“con˜ten˜ts,‘Mmak˜e›6Èthe“title˜of“eac•²!h˜suc“h‘6ÇsectionŽ¡‘'¿«unique–bb²!y›cadding“at˜the“end˜of“it,‘1"in“paren²!theses,‘1!the˜name“of˜the“original˜author“orŽ¡‘'¿«publisher–of“that›~section“if“kno²!wn,‘!­or“else“a“unique˜n•²!um“bMÞer.‘¦‘Mak“e˜the–same“adjustmen²!tŽ¡‘'¿«to–î‡the›î†section“titles“in˜the“list“of˜In•²!v‘ÿdDarian“t–î‡Sections“in“the˜license“notice“of˜the“com²!binedŽ¡‘'¿«w²!ork.ŽŸ(÷‘'¿«In›ö"the‘ö#com•²!bination,‘Jy“ou˜m“ust‘ö#com“bine˜an“y‘ö#sections˜En“titled–ö#\History"˜in“the˜v‘ÿdDari-Ž¡‘'¿«ous–ÜÛoriginal›ÜÚdoMÞcumen²!ts,‘êxforming“one˜section“Enš²!titled“\History";‘ølik˜ewise‘ÜÚcom˜bine“an˜yŽ¡‘'¿«sections–ÑEnš²!titled“\Ac˜kno˜wledgemen˜ts",‘Û¿and“an˜y“sections“En˜titled“\Dedications".‘]çY‘ÿeouŽ¡‘'¿«mš²!ust–¦fdelete“all“sections“En˜titled“\Endorsemen˜ts."ަ‘-6.Ž‘'¿«COLLECTIONS–¦fOF“DOCUMENTSŽŸ(÷‘'¿«Y‘ÿeou–Ò¤maš²!y“mak˜e“a“collection“consisting“of‘Ò£the“DoMÞcumen˜t“and“other“doMÞcumen˜ts“releasedŽ¡‘'¿«under–this“License,‘sÚand“replace“the“individual“copies“of“this“License“in“the“v‘ÿdDariousŽ¡‘'¿«doMÞcumenš²!ts–Dwith‘Ca“single“cop˜y›Cthat“is˜included“in“the˜collection,‘y»pro²!vided˜that“y²!ouŽ¡‘'¿«follo²!w–t”the›t•rules“of˜this“License˜for“v•²!erbatim˜cop“ying‘t”of˜eac“h–t”of˜the“doMÞcumen²!ts˜in“allŽ¡‘'¿«other‘¦frespMÞects.ަ‘'¿«Y‘ÿeou–Æ=maš²!y“extract“a“single“doMÞcumen˜t“from“suc˜h“a“collection,‘Î2and“distribute“it“individu-Ž¡‘'¿«ally–4under›4this“License,‘Wnpro•²!vided˜y“ou–4insert“a“cop²!y˜of“this“License“in²!to˜the“extractedŽ¡‘'¿«doMÞcumen•²!t,‘ùøand›éBfollo“w–éAthis˜License“in“all˜other“respMÞects˜regarding“v•²!erbatim˜cop“ying‘éAofŽ¡‘'¿«that‘¦fdoMÞcumen²!t.ŽŽŒ‹Gߟò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:71ŽŽŽ ƒ33 ý ÌÍ‘-7.Ž‘'¿«Aš²!GGREGA‘ÿeTION–¦fWITH“INDEPENDENT“W˜ORKSŽ©(ö‘'¿«A‘]Æcompilation–]Øof“the“DoMÞcumenš²!t‘]Ùor“its“deriv‘ÿdDativ˜es“with“other‘]Ùseparate“and“indepMÞenden˜tޤ 33‘'¿«doMÞcumen•²!ts›ÿhor‘ÿiw“orks,‘©in˜or˜on‘ÿia˜v“olume–ÿiof˜a“storage˜or˜distribution“medium,‘©is˜calledŽ¡‘'¿«an– \aggregate"“if“the› cop•²!yrigh“t– resulting“from“the“compilation“is“not˜used“to“limit“theŽ¡‘'¿«legal–1 righ²!ts›1of“the“compilation's˜users“bMÞey²!ond˜what“the“individual˜w²!orks“pMÞermit.‘¶¾WhenŽ¡‘'¿«the–žDošMÞcumen²!t“is“included‘žin“an“aggregate,‘Ûðthis“License“do˜es“not‘žapply“to“the“otherŽ¡‘'¿«wš²!orks–¦fin“the“aggregate“whic˜h“are“not“themselv˜es“deriv‘ÿdDativ˜e“w˜orks“of“the“DoMÞcumen˜t.ŽŸ(÷‘'¿«If–»Vthe“Co•²!v“er–»VT‘ÿeext“requiremenš²!t“of“section“3‘»Uis“applicable“to“these“copies“of“the“DoMÞcumen˜t,Ž¡‘'¿«then–°Dif›°Ethe“DoMÞcumen²!t“is“less˜than“one“half“of˜the“en²!tire“aggregate,‘á~the˜DoMÞcumenš²!t's“Co˜v˜erŽ¡‘'¿«T‘ÿeexts–0maš²!y“bMÞe“placed“on“co˜v˜ers“that“brac˜k˜et“the“DoMÞcumen˜t“within“the‘0aggregate,‘G°or“theŽ¡‘'¿«electronic–5qequiv‘ÿdDalenš²!t‘5pof“co˜v˜ers›5pif“the˜DoMÞcumen²!t“is“in˜electronic“form.‘ŠüOtherwise“theyŽ¡‘'¿«mš²!ust–¦fappMÞear“on“prin˜ted“co˜v˜ers“that“brac˜k˜et“the“whole“aggregate.ަ‘-8.Ž‘'¿«TRANSLA‘ÿeTIONŽŸ(÷‘'¿«T‘ÿeranslation–̯is›̰considered“a˜kind“of“moMÞdi cation,‘Aso˜yš²!ou“ma˜y‘̰distribute“translationsŽ¡‘'¿«of–Tþthe›TýDoMÞcumen²!t“under˜the“terms˜of“section“4.‘ é£Replacing“In•²!v‘ÿdDarian“t˜Sections‘TþwithŽ¡‘'¿«translations–v²requires‘v³spšMÞecial“p˜ermission“from“their›v³cop•²!yrigh“t‘v²holders,‘êÄbut˜y“ou‘v²ma“yŽ¡‘'¿«include–ðktranslations“of“some›ðjor“all“In•²!v‘ÿdDarian“t–ðkSections“in“addition˜to“the“original“v²!ersionsŽ¡‘'¿«of›Æthese‘ÆIn•²!v‘ÿdDarian“t˜Sections.‘=Y‘ÿeou‘Æma“y˜include–Æa˜translation˜of“this˜License,‘Î and“all˜theŽ¡‘'¿«license–òúnotices›òûin“the“DoMÞcumen•²!t,‘Fand˜an“y›òúW‘ÿearran“t“y˜Disclaimers,‘Fpro“vided‘òûthat˜y“ouŽ¡‘'¿«also–Ïinclude›Îÿthe“original“English˜v²!ersion“of“this“License˜and“the“original˜v²!ersions“ofŽ¡‘'¿«those–notices“and“disclaimers.‘5åIn“case“of“a“disagreemen•²!t‘bMÞet“w“een–the“translation“andŽ¡‘'¿«the–:•original›:”v²!ersion“of˜this“License˜or“a˜notice“or˜disclaimer,‘_ the“original˜v²!ersion“willŽ¡‘'¿«prev‘ÿdDail.ަ‘'¿«If–pèa“section“in‘péthe“DoMÞcumenš²!t“is“En˜titled“\Ac˜kno˜wledgemen˜ts",–{›\Dedications",“or‘pè\His-Ž¡‘'¿«tory",‘A¿the–(•requiremenš²!t“(section“4)“to“Preserv˜e“its“Title“(section“1)“will“t˜ypically“requireŽ¡‘'¿«c²!hanging–¦fthe“actual“title.ަ‘-9.Ž‘'¿«TERMINA‘ÿeTIONŽŸ(÷‘'¿«Y‘ÿeou–”maš²!y“not‘”cop˜y–ÿe,›—¾moMÞdify“,˜sublicense,˜or–”distribute“the“DoMÞcumen²!t‘”except“as“expresslyŽ¡‘'¿«proš²!vided–¡ðunder‘¡ñthis“License.‘Ð|An˜y›¡ñattempt“otherwise˜to“cop²!y–ÿe,›àÓmoMÞdify“,‘àÒsublicense,˜orŽ¡‘'¿«distribute–¦fit“is“vš²!oid,“and“will“automatically“terminate“y˜our“righ˜ts“under“this“License.ަ‘'¿«Ho•²!w“ev“er,‘ó·if›äAy“ou–ä@cease˜all“violation˜of“this“License,‘ó¸then“y²!our˜license“from˜a“particularŽ¡‘'¿«cop•²!yrigh“t–Jholder“is‘Jreinstated“(a)“proš²!visionally‘ÿe,‘sšunless“and“un˜til‘Jthe“cop˜yrigh˜t“holderŽ¡‘'¿«explicitly–á_and“ nally“terminates“yš²!our“license,‘0and“(b)“pMÞermanen˜tly‘ÿe,‘0if“the“cop˜yrigh˜tŽ¡‘'¿«holder–"fails“to“notify“yš²!ou“of“the“violation‘"b˜y“some“reasonable“means“prior“to“60“da˜ysŽ¡‘'¿«after–¦fthe“cessation.ŽŸ(÷‘'¿«Moreo•²!v“er,‘Ï8y“our–Ç license›Çfrom“a˜particular˜cop•²!yrigh“t–Ç holder˜is˜reinstated“pMÞermanen²!tly˜ifŽ¡‘'¿«the›V`cop•²!yrigh“t˜holder‘Vanoti es˜y“ou˜of˜the˜violation‘Vab“y˜some˜reasonable˜means,‘fbthis˜is˜theŽ¡‘'¿« rst–Wtime“y•²!ou‘Wha“v“e›Wreceiv“ed˜notice˜of˜violation‘Wof˜this˜License˜(for˜an“y‘Ww“ork)˜from˜thatŽ¡‘'¿«cop•²!yrigh“t–Õúholder,‘áÞand“yš²!ou“cure“the“violation“prior‘Õùto“30“da˜ys“after“y˜our‘Õùreceipt“of“theŽ¡‘'¿«notice.ަ‘'¿«T‘ÿeermination–Nuof“yš²!our“righ˜ts“under“this“section‘NtdoMÞes“not“terminate“the“licenses“of“partiesŽ¡‘'¿«who›•qha•²!v“e˜receiv“ed˜copies˜or˜righ“ts˜from˜y“ou‘•punder˜this˜License.‘ªþIf˜y“our˜righ“ts˜ha“v“eŽ¡‘'¿«bšMÞeen–Îterminated“and“not‘Íp˜ermanenš²!tly“reinstated,‘:¹receipt“of“a“cop˜y“of“some‘Íor“all“of“theŽ¡‘'¿«same–¦fmaterial“doMÞes“not“givš²!e“y˜ou“an˜y“righ˜ts“to“use“it.ŽŽŒ‹H¯DŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:72ŽŽŽ ƒ33 ý ÌÍ‘‡“10.Ž‘'¿«FUTURE–¦fREVISIONS“OF“THIS“LICENSEŽ©33‘'¿«The›ÿaF‘ÿeree‘ÿbSoft•²!w“are˜F‘ÿeoundation‘ÿbma“y˜publish–ÿbnew,‘UŸrevised“v²!ersions˜of“the˜GNU‘ÿ F‘ÿereeޤ 33‘'¿«DoMÞcumenš²!tation–ÙâLicense‘Ùãfrom“time“to“time.‘xRSuc˜h“new‘Ùãv˜ersions“will“bMÞe“similar‘Ùãin“spiritŽ¡‘'¿«to– æthe“presenš²!t“v˜ersion,‘?…but“ma˜y“di er“in“detail“to“address‘ ånew“problems“or“concerns.Ž¡‘'¿«See‘¦fâhttp://www.gnu.org/copyleft/á.ަ‘'¿«Eac•²!h›ˆ×v“ersion˜of˜the˜License˜is˜giv“en˜a˜distinguishing˜v“ersion˜n“um“b•MÞer.‘ÔIf˜the˜Do“cumen²!tŽ¡‘'¿«spšMÞeci es–r”that“a“particular“n•²!um“b˜ered›r”v“ersion˜of˜this˜License˜\or˜an“y˜later˜v“ersion"Ž¡‘'¿«applies‘æQto–æPit,‘öLyš²!ou“ha˜v˜e–æQthe“option‘æPof“follo˜wing“the“terms›æPand“conditions“either˜of“thatŽ¡‘'¿«spMÞeci ed–Žvš²!ersion“or“of“an˜y“later“v˜ersion“that‘Žhas“bMÞeen“published“(not“as“a“draft)“b˜yŽ¡‘'¿«the›î!F‘ÿeree‘î"Soft•²!w“are˜F‘ÿeoundation.‘µIf‘î"the˜DošMÞcumen“t‘î"do˜es–î!not“sp˜ecify›î"a“v•²!ersion˜n“um“bMÞer‘î!ofŽ¡‘'¿«this–$œLicense,‘D)yš²!ou“ma˜y“c˜hoMÞose‘$an˜y“v˜ersion“ev˜er“published“(not“as“a“draft)“b˜y“the“F‘ÿereeŽ¡‘'¿«Soft•²!w“are–ÖUF‘ÿeoundation.‘m©If“the“DošMÞcumen²!t“sp˜eci es“that“a“proš²!xy‘ÖTcan“decide“whic˜h“futureŽ¡‘'¿«v²!ersions–é)of›é*this“License˜can“bMÞe“used,‘ùÚthat˜proš²!xy's“public“statemen˜t›é*of“acceptance˜of“aŽ¡‘'¿«v•²!ersion›¦fpMÞermanen“tly˜authorizes˜y“ou˜to˜c“hoMÞose˜that˜v“ersion˜for˜the˜DoMÞcumen“t.ަ‘‡“11.Ž‘'¿«RELICENSINGަ‘'¿«\Massivš²!e–{"Multiauthor‘{#CollabMÞoration“Site"“(or“\MMC‘zìSite")“means“an˜y‘{#W‘ÿeorld“WideŽ¡‘'¿«W‘ÿeeb–Leservš²!er“that“publishes“cop˜yrigh˜table‘Lfw˜orks“and“also“pro˜vides“prominen˜t“facilitiesŽ¡‘'¿«for›M an²!yb•MÞo“dy˜to˜edit˜those˜w•²!orks.‘ÀEA‘MŠpublic˜wiki˜that‘MŸan“yb•MÞo“dy˜can˜edit˜is˜an˜example˜ofŽ¡‘'¿«sucš²!h– Ya“serv˜er.‘µA‘ ?\Massiv˜e‘ XMultiauthor“CollabMÞoration"“(or“\MMC")‘ >con˜tained“in“theŽ¡‘'¿«site–¦fmeans“anš²!y“set“of“cop˜yrigh˜table“w˜orks“th˜us“published“on“the“MMC“site.ަ‘'¿«\CC-BY-SA"‘8¤means–8Éthe‘8ÊCreativš²!e“Commons“A˜ttribution-Share‘8ÊAlik˜e“3.0‘8Êlicense“pub-Ž¡‘'¿«lished›8b•²!y‘8Creativ“e˜Commons–8CorpMÞoration,‘N(a˜not-for-pro t“corpMÞoration˜with“a˜principalŽ¡‘'¿«place–òof“business“in“San“F‘ÿerancisco,‘7£California,‘7¢as“wš²!ell“as“future“cop˜yleft“v˜ersions“of“thatŽ¡‘'¿«license–¦fpublished“b²!y“that“same“organization.ަ‘'¿«\IncorpšMÞorate"–­zmeans“to“publish‘­yor“republish“a“Do˜cumen²!t,›¯?in“whole“or‘­yin“part,˜as“partŽ¡‘'¿«of–¦fanother“DoMÞcumen²!t.ަ‘'¿«An–&\MMC‘&)‘£ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d}¬17ŽŽ¡’óáðÉend-of-line‘T(C-e)‘Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬16ŽŽ¡’óáðÉexchange-point-and-mark–T(C-x“C-x)‘”º‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘U—¬22ŽŽ¦’óáðexpand-tilde‘¶Å‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘w¡¬7ŽŽŸ\‘’ókˆë]FŽŸJ’óáðÉforward-backward-delete-char‘T()‘_¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ œ¬18ŽŽ¡’óáðÉforward-char‘T(C-f)‘@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘£¬16ŽŽ¤ šÈ’óáðÉforward-search-history‘T(C-s)=@‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘þ¬17ŽŽ¦’óáðÉforward-word‘T(M-f)‘@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘£¬16ŽŽŸ\’ókˆë]HŽŸJ’óáð¬history-preserv•¾9e-pAÇoin“t‘ž‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Þz¬7ŽŽ¡’óáðÉhistory-search-backward‘T()‘Úf‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›C¬17ŽŽ¤ šÇ’óáðÉhistory-search-forward‘T()‘(ù‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘éÖ¬17ŽŽ¡’óáðhistory-size‘é+‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ª¬7ŽŽ¡’óáðÉhistory-substring-search-backward‘T()‘å‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¥õ¬18ŽŽ¡’óáðÉhistory-substring-search-forward‘T()%s‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘æP¬17ŽŽ¦’óáðhorizon¾9tal-scroll-moAÇde‘ƒN‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘D*¬7ŽŽŸ;I’ókˆë]IŽŸJ’óáð¬input-metaMp‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘L¬7ŽŽ¡’óáðÉinsert-comment‘T(M-#)‘£ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d}¬23ŽŽ¡’óáðÉinsert-completions‘T(M-*)‘wŒ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘8i¬21ŽŽ¦’óáðisearc¾9h-terminatorsXº‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘—¬7ŽŽŽŽŽŽŒ‹LâÓŸò‘GáF›ÿeunction–¦fand“V˜ariable“Index’œÃ76ŽŽŽ ƒ33Ÿæ€ ý¹®‘šßë]KŽŸ«É‘G¬k¾9eymap‘ñá‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘²¾¬8ŽŽ¤ á‘GÉkill-line‘T(C-k)G‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ß$¬19ŽŽŸ â‘GÉkill-region‘T()lÚ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘-·¬20ŽŽ¡‘GÉkill-whole-line‘T()‘@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘£¬20ŽŽ© €‘GÉkill-word‘T(M-d)G‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ß$¬20ŽŽŸ'¸°‘šßë]MŽŸ«Ê‘G¬mark-moAÇdi ed-lines‘JÜ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ¸¬8ŽŽ¡‘Gmark-symlink¾9ed-directories‘üº‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘½—¬8ŽŽ¡‘Gmatc¾9h-hidden- les%‡‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘æc¬8ŽŽ¡‘GÉmenu-complete‘T()‘Ýì‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘žÉ¬21ŽŽ¡‘GÉmenu-complete-backward‘T()‘(ù‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘éÖ¬21ŽŽ¡‘Gmen•¾9u-complete-displa“y-pre x‘„¤‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘E€¬8ŽŽ¦‘Gmeta- ag‘Ø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘˜ö¬7ŽŽŸ(¸²‘šßë]NŽŸ«É‘GÉnext-history‘T(C-n)‘@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘£¬17ŽŽ¡‘GÉnext-screen-line‘T()‘ò3‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘³¬16ŽŽŸ<ÝŸõ€‘GÉnon-incremental-forward-ަ‘QCsearch-history‘T(M-n) ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬17ŽŽŸÿÿŸõ€‘GÉnon-incremental-reverse-ަ‘QCsearch-history‘T(M-p) ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬17ŽŽŸ*´‘šßë]Oޤ«Ê‘G¬output-meta‘–S‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘W/¬8ŽŽ¦‘GÉoverwrite-mode‘T()‘Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬19ŽŽŸ'¸°‘šßë]PŽ¡‘G¬page-completionsFj‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘G¬9ŽŽ¤ á‘GÉpossible-completions‘T(M-?)‘Úf‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›C¬21ŽŽ¡‘GÉprefix-meta‘T(ESC)‘Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬22ŽŽ¡‘GÉprevious-history‘T(C-p)z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇW¬17ŽŽ¡‘GÉprevious-screen-line‘T()‘Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬16ŽŽ¦‘GÉprint-last-kbd-macro‘T()‘Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬22ŽŽŸ(ø²‘šßë]QŽŸè‘GÉquoted-insert–T(C-q“or“C-v)pp‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘1M¬18ŽŽŽ ý¹®’ókˆë]RŽŸ à’óáðÉre-read-init-file–T(C-x“C-r)‘]ô‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ѭ22ŽŽ¤ †’óáðÉreadline‘r+‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘3¬24ŽŽ© †’óáðÉredraw-current-line‘T()z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇW¬17ŽŽ¡’óáðÉreverse-search-history‘T(C-r)=@‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘þ¬17ŽŽ¡’óáðrev¾9ert-all-at-newline‘ˆ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ij¬9ŽŽ¡’óáðÉrevert-line‘T(M-r)‘Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬22ŽŽ¡’óáðÉrl_add_defun7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬32ŽŽ¦’óáðÉrl_add_funmap_entry ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬36ŽŽ¡’óáðÉrl_add_undo‘†r‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘GO¬37ŽŽ¡’óáðÉrl_alphabetic‘÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬41ŽŽ¡’óáðÉrl_begin_undo_group ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬37ŽŽ¡’óáðÉrl_bind_key‘†r‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘GO¬34ŽŽ¡’óáðÉrl_bind_key_if_unbound‘B‘‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘n¬34ŽŽ¦’óáðÉrl_bind_key_if_unbound_in_map‘*Ä‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘롬34ŽŽ¡’óáðÉrl_bind_key_in_mapn¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬34ŽŽ¡’óáðÉrl_bind_keyseq‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά35ŽŽ¡’óáðÉrl_bind_keyseq_if_unboundVØ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘µ¬35ŽŽ¡’óáðÉrl_bind_keyseq_if_unbound_in_map? ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÿè¬35ŽŽ¦’óáðÉrl_bind_keyseq_in_map‘‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R¬35ŽŽ¡’óáðÉrl_callback_handler_install‘Çê‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆÇ¬43ŽŽ¡’óáðÉrl_callback_handler_removeE‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘É"¬43ŽŽ¡’óáðÉrl_callback_read_char‘‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R¬43ŽŽ¡’óáðÉrl_callback_sigcleanup‘B‘‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘n¬43ŽŽ¡’óáðÉrl_check_signals‘ Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬49ŽŽ¦’óáðÉrl_cleanup_after_signal‘óþ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘´Û¬49ŽŽ¡’óáðÉrl_clear_history‘ Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬42ŽŽ¡’óáðÉrl_clear_message‘ Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬38ŽŽ¡’óáðÉrl_clear_pending_input‘B‘‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘n¬40ŽŽ¡’óáðÉrl_clear_signals‘ Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬50ŽŽ¡’óáðÉrl_clear_visible_line‘‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R¬38ŽŽ¦’óáðÉrl_complete‘†r‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘GO¬51ŽŽ¡’óáðÉrl_complete_internal‘ß·‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ”¬51ŽŽ¡’óáðÉrl_completion_matches‘‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R¬52ŽŽ¡’óáðÉrl_completion_moden¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬51ŽŽ¡’óáðÉrl_copy_keymap‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά33ŽŽ¦’óáðÉrl_copy_text7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬39ŽŽ¡’óáðÉrl_crlf‘À¾‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›¬38ŽŽ¡’óáðÉrl_delete_text‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά39ŽŽ¡’óáðÉrl_deprep_terminaln¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬40ŽŽ¡’óáðÉrl_ding‘À¾‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›¬41ŽŽ¡’óáðÉrl_discard_keymap‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬33ŽŽ¦’óáðÉrl_display_match_list‘‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R¬41ŽŽ¡’óáðÉrl_do_undo‘Õ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘•â¬37ŽŽ¡’óáðÉrl_echo_signal_char ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬49ŽŽ¡’óáðÉrl_empty_keymap‘Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬33ŽŽ¡’óáðÉrl_end_undo_group‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬37ŽŽ¦’óáðÉrl_execute_next‘Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬40ŽŽ¡’óáðÉrl_expand_prompt‘ Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬38ŽŽ¡’óáðÉrl_extend_line_buffer‘‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R¬41ŽŽ¡’óáðÉrl_filename_completion_function‘ž‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘N{¬52ŽŽ¡’óáðÉrl_forced_update_display‘¥k‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘fH¬37ŽŽ¡’óáðÉrl_free‘À¾‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›¬41ŽŽ¦’óáðÉrl_free_keymap‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά33ŽŽ¡’óáðÉrl_free_line_staten¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬49ŽŽ¡’óáðÉrl_free_undo_list‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬37ŽŽŽŽŽŽŒ‹M*ìŸò‘GáF›ÿeunction–¦fand“V˜ariable“Index’œÃ77ŽŽŽ ƒ33ŸÉ ýÓ—‘GÉrl_function_dumpern¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬36ŽŽ¤ ‚ ‘GÉrl_function_of_keyseq‘‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R¬36ŽŽ© ‚ ‘GÉrl_function_of_keyseq_lenVØ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘µ¬36ŽŽ¡‘GÉrl_funmap_names‘Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬36ŽŽ¡‘GÉrl_generic_bind‘Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬35ŽŽ¦‘GÉrl_get_keymap‘÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬33ŽŽ¡‘GÉrl_get_keymap_by_name‘‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R¬33ŽŽ¦‘GÉrl_get_keymap_namen¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬33ŽŽ¡‘GÉrl_get_screen_sizen¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬50ŽŽ¡‘GÉrl_get_termcap‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά42ŽŽ¦‘GÉrl_getc‘À¾‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›¬39ŽŽ¡‘GÉrl_initialize‘÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬41ŽŽ¡‘GÉrl_insert_completions‘‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R¬51ŽŽ¦‘GÉrl_insert_text‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά39ŽŽ¡‘GÉrl_invoking_keyseqs ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬36ŽŽ¡‘GÉrl_invoking_keyseqs_in_mapE‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘É"¬36ŽŽ¦‘GÉrl_kill_text7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬39ŽŽ¡‘GÉrl_list_funmap_names‘ß·‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ”¬36ŽŽ¡‘GÉrl_macro_bind‘÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬42ŽŽ¦‘GÉrl_macro_dumper‘Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬42ŽŽ¡‘GÉrl_make_bare_keymap ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬33ŽŽ¦‘GÉrl_make_keymap‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά33ŽŽ¡‘GÉrl_message‘Õ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘•â¬38ŽŽ¡‘GÉrl_modifying7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬37ŽŽ¦‘GÉrl_named_function‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬36ŽŽ¡‘GÉrl_on_new_line‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά37ŽŽ¡‘GÉrl_on_new_line_with_promptE‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘É"¬38ŽŽ¦‘GÉrl_parse_and_bind‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬35ŽŽ¡‘GÉrl_pending_signal‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬49ŽŽ¡‘GÉrl_possible_completions‘óþ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘´Û¬51ŽŽ¦‘GÉrl_prep_terminal‘ Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬40ŽŽ¡‘GÉrl_push_macro_input ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬39ŽŽ¡‘GÉrl_read_init_file‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬35ŽŽ¦‘GÉrl_read_key‘†r‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘GO¬39ŽŽ¡‘GÉrl_redisplay7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬37ŽŽ¦‘GÉrl_replace_line‘Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬41ŽŽ¡‘GÉrl_reset_after_signal‘‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R¬49ŽŽ¡‘GÉrl_reset_line_state ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬38ŽŽ¦‘GÉrl_reset_screen_size‘ß·‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ”¬50ŽŽ¡‘GÉrl_reset_terminal‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬40ŽŽ¡‘GÉrl_resize_terminaln¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬49ŽŽ¦‘GÉrl_restore_prompt‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬38ŽŽ¡‘GÉrl_restore_state‘ Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬41ŽŽ¡‘GÉrl_save_prompt‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά38ŽŽ¦‘GÉrl_save_state‘÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬40ŽŽ¡‘GÉrl_set_key‘Õ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘•â¬35ŽŽ¡‘GÉrl_set_keyboard_input_timeout‘*Ä‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘롬40ŽŽ¦‘GÉrl_set_keymap‘÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬33ŽŽ¡‘GÉrl_set_keymap_namen¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬33ŽŽ¦‘GÉrl_set_paren_blink_timeoutE‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘É"¬42ŽŽ¡‘GÉrl_set_prompt‘÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬39ŽŽ¡‘GÉrl_set_screen_sizen¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬49ŽŽ¦‘GÉrl_set_signals‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά50ŽŽ¡‘GÉrl_show_char7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬38ŽŽŽ ýÓ—’óáðÉrl_stuff_char‘÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬39ŽŽ¤ —’óáðÉrl_tty_set_default_bindings‘Çê‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆÇ¬40ŽŽ¡’óáðÉrl_tty_set_echoingn¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬40ŽŽ© –’óáðÉrl_tty_unset_default_bindings‘*Ä‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘롬40ŽŽ¡’óáðÉrl_unbind_command_in_map‘¥k‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘fH¬35ŽŽ¡’óáðÉrl_unbind_function_in_mapVØ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘µ¬34ŽŽ¡’óáðÉrl_unbind_key‘÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬34ŽŽ¦’óáðÉrl_unbind_key_in_map‘ß·‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ”¬34ŽŽ¡’óáðÉrl_username_completion_function‘ž‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘N{¬52ŽŽ¡’óáðÉrl_variable_bind‘ Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬42ŽŽ¡’óáðÉrl_variable_dumpern¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬42ŽŽŸ €’óáðÉrl_variable_value‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬42ŽŽŸh!’ókˆë]SŽŸ!,’óáðÉself-insert–T(a,“b,“A,“1,“!,“...Ž‘B)‘a‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ð>¬19ŽŽ¡’óáðÉset-mark‘T(C-@)lÚ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘-·¬22ŽŽ¦’óáðsho•¾9w-all-if-am“biguous‘ª€‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘k\¬9ŽŽ¡’óáðsho¾9w-all-if-unmoAÇdi ed‘©†‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘jc¬9ŽŽ¡’óáðsho¾9w-moAÇde-in-prompt‘ †‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Êc¬9ŽŽ¡’óáðskip-completed-text‘M‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ñ¬9ŽŽ¦’óáðÉskip-csi-sequence‘T()‘£ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d}¬23ŽŽ© €’óáðÉstart-kbd-macro–T(C-x“()‘Š‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Jå¬21ŽŽŸG™’ókˆë]TŽŸ!+’óáðÉtab-insert‘T(M-TAB)‘@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘£¬19ŽŽ¡’óáðÉtilde-expand‘T(M-~)‘@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘£¬22ŽŽ¡’óáðÉtranspose-chars‘T(C-t)U ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ê¬19ŽŽ¦’óáðÉtranspose-words‘T(M-t)U ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ê¬19ŽŽŸ‡™’ókˆë]UŽŸ!,’óáðÉundo–T(C-_“or“C-x“C-u)‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬22ŽŽ¡’óáðÉuniversal-argument‘T()U ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ê¬21ŽŽŸ –’óáðÉunix-filename-rubout‘T()‘Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬20ŽŽ¡’óáðÉunix-line-discard‘T(C-u)‘Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬20ŽŽ¡’óáðÉunix-word-rubout‘T(C-w)z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇW¬20ŽŽ¦’óáðÉupcase-word‘T(M-u)‘Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬19ŽŽŸ‡™’ókˆë]VŽŸ!,’óáð¬vi-cmd-moAÇde-string‘‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Mñ¬10ŽŽ¡’óáðÉvi-editing-mode‘T(M-C-j)‘Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬23ŽŽŸ –’óáðvi-ins-moAÇde-string=‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘þz¬10ŽŽ¦’óáðvisible-stats‘œ^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘];¬10ŽŽŸ&S’ókˆë]YŽŸ!+’óáðÉyank‘T(C-y)‘§&‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘h¬20ŽŽ¡’óáðÉyank-last-arg–T(M-.“or“M-_)pp‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘1M¬18ŽŽ¡’óáðÉyank-nth-arg‘T(M-C-y)‘£ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d}¬18ŽŽ¦’óáðÉyank-pop‘T(M-y)lÚ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘-·¬20ŽŽŽŽŽŽŒø|ƃ’À;è…ïÿïÿQógÂÖN  #× cmbx12óe·ág£ff cmmi12ó]ÂÖN ff cmbx12óTÂÖN G® cmbx12óKÂÖN ¼j cmbx12óFßê  b> ó3 cmmi10ó=ßê. * Menu: * Command Line Editing:: GNU Readline User's Manual. * GNU Free Documentation License:: License for copying this manual.  File: rluserman.info, Node: Command Line Editing, Next: GNU Free Documentation License, Prev: Top, Up: Top 1 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: rluserman.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing 1.1 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 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 key is pressed. The Meta key is labeled on many keyboards. On keyboards with two keys labeled (usually to either side of the space bar), the on the left side is generally set to work as a Meta key. The key on the right may also be configured to work as a Meta key or may be configured as some other modifier, such as a Compose key for typing accented characters. If you do not have a Meta or key, or another key working as a Meta key, the identical keystroke can be generated by typing _first_, and then typing . Either process is known as "metafying" the 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, , , , , , and all stand for themselves when seen in this text, or in an init file (*note Readline Init File::). If your keyboard lacks a key, typing will produce the desired character. The key may be labeled or on some keyboards.  File: rluserman.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing 1.2 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 . You do not have to be at the end of the line to press ; 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: rluserman.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction 1.2.1 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 mistype a character, and not notice the 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 bare essentials for editing the text of an input line follows. 'C-b' Move back one character. 'C-f' Move forward one character. or 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-_' or 'C-x C-u' Undo the last editing command. You can undo all the way back to an empty line. (Depending on your configuration, the key be set to delete the character to the left of the cursor and the key set to delete the character underneath the cursor, like 'C-d', rather than the character to the left of the cursor.)  File: rluserman.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction 1.2.2 Readline Movement Commands -------------------------------- The above table describes the most basic 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 . 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, where a word is composed of letters and digits. '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: rluserman.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction 1.2.3 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. ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.) 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. Word boundaries are the same as those used by 'M-f'. 'M-' Kill from the cursor the start of the current word, or, if between words, to the start of the previous word. Word boundaries are the same as those used by 'M-b'. 'C-w' Kill from the cursor to the previous whitespace. This is different than 'M-' because the word boundaries differ. 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: rluserman.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction 1.2.4 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' typed 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', which will delete the next ten characters on the input line.  File: rluserman.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction 1.2.5 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. To search backward in the history for a particular string, type 'C-r'. Typing 'C-s' searches forward through the history. The characters present in the value of the 'isearch-terminators' variable are used to terminate an incremental search. If that variable has not been assigned a value, the and 'C-J' characters will terminate an incremental search. 'C-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 'C-r' or 'C-s' 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 will terminate the search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing. Readline remembers the last incremental search string. If two 'C-r's are typed without any intervening characters defining a new search string, any remembered search string is used. 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 be part of the contents of the current line.  File: rluserman.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing 1.3 Readline Init File ====================== Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by putting commands in an "inputrc" file, conventionally in his 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'. If that file does not exist or cannot be read, the ultimate default is '/etc/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: rluserman.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File 1.3.1 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 modify the run-time behavior of Readline by altering the values of variables in Readline using the 'set' command within the init file. The syntax is simple: set VARIABLE VALUE Here, for example, is how to change from the default Emacs-like key binding to use 'vi' line editing commands: set editing-mode vi Variable names and values, where appropriate, are recognized without regard to case. Unrecognized variable names are ignored. Boolean variables (those that can be set to on or off) are set to on if the value is null or empty, ON (case-insensitive), or 1. Any other value results in the variable being set to off. A great deal of run-time behavior is changeable with the following variables. '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. 'bind-tty-special-chars' If set to 'on' (the default), Readline attempts to bind the control characters treated specially by the kernel's terminal driver to their Readline equivalents. 'blink-matching-paren' If set to 'on', Readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. The default is 'off'. 'colored-completion-prefix' If set to 'on', when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the 'LS_COLORS' environment variable. The default is 'off'. 'colored-stats' If set to 'on', Readline displays possible completions using different colors to indicate their file type. The color definitions are taken from the value of the 'LS_COLORS' environment variable. The default is 'off'. 'comment-begin' The string to insert at the beginning of the line when the 'insert-comment' command is executed. The default value is '"#"'. 'completion-display-width' The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is -1. 'completion-ignore-case' If set to 'on', Readline performs filename matching and completion in a case-insensitive fashion. The default value is 'off'. 'completion-map-case' If set to 'on', and COMPLETION-IGNORE-CASE is enabled, Readline treats hyphens ('-') and underscores ('_') as equivalent when performing case-insensitive filename matching and completion. The default value is 'off'. 'completion-prefix-display-length' The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions. 'completion-query-items' The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. 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. This variable must be set to an integer value greater than or equal to 0. A negative value means Readline should never ask. The default limit is '100'. 'convert-meta' If set to 'on', Readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and prefixing an character, converting them to a meta-prefixed key sequence. The default value is 'on', but will be set to 'off' if the locale is one that contains eight-bit characters. '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'. 'echo-control-characters' When set to 'on', on operating systems that indicate they support it, readline echoes a character corresponding to a signal generated from the keyboard. The default is 'on'. 'editing-mode' The 'editing-mode' variable controls which default set of key bindings is used. 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'. 'emacs-mode-string' If the SHOW-MODE-IN-PROMPT variable is enabled, this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the '\1' and '\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is '@'. 'enable-bracketed-paste' When set to 'On', Readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a single string of characters, instead of treating each character as if it had been read from the keyboard. This can prevent pasted characters from being interpreted as editing commands. The default is 'off'. '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'. 'enable-meta-key' When set to 'on', Readline will try to enable any meta modifier key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. The default is 'on'. 'expand-tilde' If set to 'on', tilde expansion is performed when Readline attempts word completion. The default is 'off'. 'history-preserve-point' If set to 'on', the history code attempts to place the point (the current cursor position) at the same location on each history line retrieved with 'previous-history' or 'next-history'. The default is 'off'. 'history-size' Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. If an attempt is made to set HISTORY-SIZE to a non-numeric value, the maximum number of history entries will be set to 500. 'horizontal-scroll-mode' This variable can be set to either 'on' or 'off'. Setting it to 'on' means that the text of the lines being edited 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'. 'input-meta' If set to 'on', Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The default value is 'off', but Readline will set it to 'on' if the locale contains eight-bit characters. The name 'meta-flag' is a synonym for this variable. 'isearch-terminators' The string of characters that should terminate an incremental search without subsequently executing the character as a command (*note Searching::). If this variable has not been given a value, the characters and 'C-J' will terminate an incremental search. 'keymap' Sets Readline's idea of the current keymap for key binding commands. Built-in 'keymap' names are 'emacs', 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move', 'vi-command', and 'vi-insert'. 'vi' is equivalent to 'vi-command' ('vi-move' is also a synonym); 'emacs' is equivalent to 'emacs-standard'. Applications may add additional names. The default value is 'emacs'. The value of the 'editing-mode' variable also affects the default keymap. 'keyseq-timeout' Specifies the duration Readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, Readline will use the shorter but complete key sequence. Readline uses this value to determine whether or not input is available on the current input source ('rl_instream' by default). The value is specified in milliseconds, so a value of 1000 means that Readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, Readline will wait until another key is pressed to decide which key sequence to complete. The default value is '500'. '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', causes Readline to display an asterisk ('*') at the start of history lines which have been modified. This variable is 'off' by default. 'mark-symlinked-directories' If set to 'on', completed names which are symbolic links to directories have a slash appended (subject to the value of 'mark-directories'). The default is 'off'. 'match-hidden-files' This variable, when set to 'on', causes Readline to match files whose names begin with a '.' (hidden files) when performing filename completion. If set to 'off', the leading '.' must be supplied by the user in the filename to be completed. This variable is 'on' by default. 'menu-complete-display-prefix' If set to 'on', menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. The default is 'off'. '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', but Readline will set it to 'on' if the locale contains eight-bit characters. 'page-completions' If set to 'on', Readline uses an internal 'more'-like pager to display a screenful of possible completions at a time. This variable is 'on' by default. 'print-completions-horizontally' If set to 'on', Readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. The default is 'off'. 'revert-all-at-newline' If set to 'on', Readline will undo all changes to history lines before returning when 'accept-line' is executed. By default, history lines may be modified and retain individual undo lists across calls to 'readline'. 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'. 'show-all-if-unmodified' This alters the default behavior of the completion functions in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to 'on', words which have more than one possible completion without any possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. The default value is 'off'. 'show-mode-in-prompt' If set to 'on', add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable (e.g., EMACS-MODE-STRING). The default value is 'off'. 'skip-completed-text' If set to 'on', this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If enabled, readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. For instance, if this is enabled, attempting completion when the cursor is after the 'e' in 'Makefile' will result in 'Makefile' rather than 'Makefilefile', assuming there is a single possible completion. The default value is 'off'. 'vi-cmd-mode-string' If the SHOW-MODE-IN-PROMPT variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the '\1' and '\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is '(cmd)'. 'vi-ins-mode-string' If the SHOW-MODE-IN-PROMPT variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the '\1' and '\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is '(ins)'. '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 need to find the name of the command that you want to change. The following sections contain tables of the command name, the default keybinding, if any, and a short description of what the command does. Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, a colon, and then the name of the command. There can be no space between the key name and the colon - that will be interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a MACRO). 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 example above, 'C-u' is bound to the function 'universal-argument', 'M-DEL' is bound to the function 'backward-kill-word', 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). A number of symbolic character names are recognized while processing this key binding syntax: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB. "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 again 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 ' <[> <1> <1> <~>' is bound to insert the text 'Function Key 1'. The following GNU Emacs style escape sequences are available when specifying key sequences: '\C-' control prefix '\M-' meta prefix '\e' an escape character '\\' backslash '\"' <">, a double quotation mark '\'' <'>, a single quote or apostrophe In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available: '\a' alert (bell) '\b' backspace '\d' delete '\f' form feed '\n' newline '\r' carriage return '\t' horizontal tab '\v' vertical tab '\NNN' the eight-bit character whose value is the octal value NNN (one to three digits) '\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a function name. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other 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: rluserman.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File 1.3.2 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 four 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, after any comparison operator, extends to the end of the line; unless otherwise noted, 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 both 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. 'version' The 'version' test may be used to perform comparisons against specific Readline versions. The 'version' expands to the current Readline version. The set of comparison operators includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The version number supplied on the right side of the operator consists of a major version number, an optional decimal point, and an optional minor version (e.g., '7.1'). If the minor version is omitted, it is assumed to be '0'. The operator may be separated from the string 'version' and from the version number argument by whitespace. The following example sets a variable if the Readline version being used is 7.0 or newer: $if version >= 7.0 set show-mode-in-prompt on $endif '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 a particular value. 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 'variable' The VARIABLE construct provides simple equality tests for Readline variables and values. The permitted comparison operators are '=', '==', and '!='. The variable name must be separated from the comparison operator by whitespace; the operator may be separated from the value on the right hand side by whitespace. Both string and boolean variables may be tested. Boolean variables must be tested against the values ON and OFF. The following example is equivalent to the 'mode=emacs' test described above: $if editing-mode == emacs set show-mode-in-prompt on $endif '$endif' This command, as seen in the previous example, terminates an '$if' command. '$else' Commands in this branch of the '$if' directive are executed if the test fails. '$include' This directive takes a single filename as an argument and reads commands and bindings from that file. For example, the following directive reads from '/etc/inputrc': $include /etc/inputrc  File: rluserman.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File 1.3.3 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. # # First, include any system-wide bindings and variable # assignments from /etc/Inputrc $include /etc/Inputrc # # 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: rluserman.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing 1.4 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. Command names without an accompanying key sequence are unbound by default. In the following descriptions, "point" refers to the current cursor position, and "mark" refers to a cursor position saved by the 'set-mark' command. The text between the point and mark is referred to as the "region".  File: rluserman.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands 1.4.1 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 the current or previous word. Words are composed of letters and digits. 'previous-screen-line ()' Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width. 'next-screen-line ()' Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if the length of the current Readline line is not greater than the length of the prompt plus the screen width. '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: rluserman.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands 1.4.2 Commands For Manipulating The History ------------------------------------------- 'accept-line (Newline or Return)' Accept the line regardless of where the cursor is. If this line is non-empty, it may be added to the history list for future recall with 'add_history()'. If this line is a modified history line, the history line is restored to its original state. 'previous-history (C-p)' Move 'back' through the history list, fetching the previous command. 'next-history (C-n)' Move 'forward' through the history list, fetching the next command. '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 currently being entered. '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 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. The search string may match anywhere in a history line. 'non-incremental-forward-search-history (M-n)' Search forward starting at the current line and moving 'down' through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line. 'history-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. 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. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. 'history-substring-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. 'history-substring-search-backward ()' Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. 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) at point. 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. Once the argument N is computed, the argument is extracted as if the '!N' history expansion had been specified. 'yank-last-arg (M-. or M-_)' Insert last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly like 'yank-nth-arg'. Successive calls to 'yank-last-arg' move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, as if the '!$' history expansion had been specified.  File: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands 1.4.3 Commands For Changing Text -------------------------------- 'end-of-file (usually C-d)' The character indicating end-of-file as set, for example, by 'stty'. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline interprets it as the end of input and returns EOF. 'delete-char (C-d)' Delete the character at point. If this function is bound to the same character as the tty EOF character, as 'C-d' commonly is, see above for the effects. 'backward-delete-char (Rubout)' Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them. 'forward-backward-delete-char ()' Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key. 'quoted-insert (C-q or C-v)' Add the next character typed to the line verbatim. This is how to insert key sequences like 'C-q', for example. 'tab-insert (M-)' Insert a tab character. 'self-insert (a, b, A, 1, !, ...)' Insert yourself. 'bracketed-paste-begin ()' This function is intended to be bound to the "bracketed paste" escape sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters are inserted as if each one was bound to 'self-insert' instead of executing any editing commands. '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 arguments have no effect. 'transpose-words (M-t)' Drag the word before point past the word after point, moving point past that word as well. If the insertion point is at the end of the line, this transposes the last two words on the line. 'upcase-word (M-u)' Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor. 'downcase-word (M-l)' Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor. 'capitalize-word (M-c)' Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor. 'overwrite-mode ()' Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only 'emacs' mode; 'vi' mode does overwrite differently. Each call to 'readline()' starts in insert mode. In overwrite mode, characters bound to 'self-insert' replace the text at point rather than pushing the text to the right. Characters bound to 'backward-delete-char' replace the character before point with a space. By default, this command is unbound.  File: rluserman.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands 1.4.4 Killing And Yanking ------------------------- 'kill-line (C-k)' Kill the text from point to the end of the line. 'backward-kill-line (C-x Rubout)' Kill backward from the cursor to the beginning of the current line. 'unix-line-discard (C-u)' Kill backward from the cursor to the beginning of the current line. 'kill-whole-line ()' Kill all characters on the current line, no matter where point is. By default, this is unbound. 'kill-word (M-d)' Kill from point 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-)' Kill the word behind point. Word boundaries are the same as 'backward-word'. 'unix-word-rubout (C-w)' Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. 'unix-filename-rubout ()' Kill the word behind point, using white space and the slash character as the word boundaries. 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 in the current region. By default, this command is unbound. 'copy-region-as-kill ()' Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound. 'copy-backward-word ()' Copy the word before point to the kill buffer. The word boundaries are the same as 'backward-word'. By default, this command is unbound. 'copy-forward-word ()' Copy the word following point to the kill buffer. The word boundaries are the same as 'forward-word'. By default, this command is unbound. 'yank (C-y)' Yank the top of the kill ring into the buffer at point. '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: rluserman.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands 1.4.5 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 nor 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: rluserman.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands 1.4.6 Letting Readline Type For You ----------------------------------- 'complete ()' Attempt to perform completion on the text before point. The actual completion performed is application-specific. The default is filename completion. 'possible-completions (M-?)' List the possible completions of the text before point. When displaying completions, Readline sets the number of columns used for display to the value of 'completion-display-width', the value of the environment variable 'COLUMNS', or the screen width, in that order. 'insert-completions (M-*)' Insert all completions of the text before point that would have been generated by 'possible-completions'. 'menu-complete ()' Similar to 'complete', but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of 'menu-complete' steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of 'bell-style') and the original text is restored. An argument of N moves N positions forward in the list of matches; a negative argument may be used to move backward through the list. This command is intended to be bound to , but is unbound by default. 'menu-complete-backward ()' Identical to 'menu-complete', but moves backward through the list of possible completions, as if 'menu-complete' had been given a negative argument. 'delete-char-or-list ()' Deletes the character under the cursor if not at the beginning or end of the line (like 'delete-char'). If at the end of the line, behaves identically to 'possible-completions'. This command is unbound by default.  File: rluserman.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands 1.4.7 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. 'print-last-kbd-macro ()' Print the last keboard macro defined in a format suitable for the INPUTRC file.  File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands 1.4.8 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-lowercase-version (M-A, M-B, M-X, ...)' If the metafied character X is upper case, run the command that is bound to the corresponding metafied lower case character. The behavior is undefined if X is already lower case. 'prefix-meta ()' Metafy the next character typed. This is for keyboards without a meta key. Typing ' f' is equivalent to typing 'M-f'. 'undo (C-_ or 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 executing 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 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. 'skip-csi-sequence ()' Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is bound to "\e[", keys producing such sequences will have no effect unless explicitly bound to a readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. 'insert-comment (M-#)' Without a numeric argument, the value of the 'comment-begin' variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value of 'comment-begin', the value is inserted, otherwise the characters in 'comment-begin' are deleted from the beginning of the line. In either case, 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 output. 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. 'emacs-editing-mode (C-e)' When in 'vi' command mode, this causes a switch to 'emacs' editing mode. 'vi-editing-mode (M-C-j)' When in 'emacs' editing mode, this causes a switch to 'vi' editing mode.  File: rluserman.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing 1.5 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 standard. In order to switch interactively between 'emacs' and 'vi' editing modes, use the command 'M-C-j' (bound to emacs-editing-mode when in 'vi' mode and to vi-editing-mode in 'emacs' 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 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.  File: rluserman.info, Node: GNU Free Documentation License, Prev: Command Line Editing, Up: Top Appendix A GNU Free Documentation License ***************************************** Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See . Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents ==================================================== To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.  Tag Table: Node: Top908 Node: Command Line Editing1430 Node: Introduction and Notation2084 Node: Readline Interaction3709 Node: Readline Bare Essentials4902 Node: Readline Movement Commands6687 Node: Readline Killing Commands7649 Node: Readline Arguments9569 Node: Searching10615 Node: Readline Init File12769 Node: Readline Init File Syntax13924 Node: Conditional Init Constructs34084 Node: Sample Init File38282 Node: Bindable Readline Commands41401 Node: Commands For Moving42457 Node: Commands For History44025 Node: Commands For Text48291 Node: Commands For Killing51734 Node: Numeric Arguments53902 Node: Commands For Completion55043 Node: Keyboard Macros57013 Node: Miscellaneous Commands57702 Node: Readline vi Mode61625 Node: GNU Free Documentation License62539  End Tag Table readline-8.0/doc/rltech.texi000664 000436 000120 00000310671 13400402377 016142 0ustar00chetadmin000000 000000 @comment %**start of header (This is for running Texinfo on a region.) @setfilename rltech.info @comment %**end of header (This is for running Texinfo on a region.) @ifinfo This document describes the GNU Readline Library, a utility for aiding in the consistency of user interface across discrete programs that need to provide a command line interface. Copyright (C) 1988--2016 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. @ignore Permission is granted to process this file through TeX and print the results, provided the printed document carries copying permission notice identical to this one except for the removal of this paragraph (this paragraph not being relevant to the printed manual). @end ignore Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided 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. @end ifinfo @node Programming with GNU Readline @chapter Programming with GNU Readline This chapter describes the interface between the @sc{gnu} Readline Library and other programs. If you are a programmer, and you wish to include the features found in @sc{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 functions. * Readline Signal Handling:: How Readline behaves when it receives signals. * Custom Completers:: Supplanting or supplementing Readline's completion functions. @end menu @node Basic Behavior @section Basic Behavior Many programs provide a command line interface, such as @code{mail}, @code{ftp}, and @code{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 @code{gets()} or @code{fgets()}. @findex readline @cindex readline, function The function @code{readline()} prints a prompt @var{prompt} and then reads and returns a single line of text from the user. If @var{prompt} is @code{NULL} or the empty string, no prompt is displayed. The line @code{readline} returns is allocated with @code{malloc()}; the caller should @code{free()} the line when it has finished with it. The declaration for @code{readline} in ANSI C is @example @code{char *readline (const char *@var{prompt});} @end example @noindent So, one might say @example @code{char *line = readline ("Enter a line: ");} @end example @noindent 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 @code{readline} encounters an @code{EOF} while reading the line, and the line is empty at that point, then @code{(char *)NULL} is returned. Otherwise, the line is ended just as if a newline had been typed. Readline performs some expansion on the @var{prompt} before it is displayed on the screen. See the description of @code{rl_expand_prompt} (@pxref{Redisplay}) for additional details, especially if @var{prompt} will contain characters that do not consume physical screen space when displayed. If you want the user to be able to get at the line later, (with @key{C-p} for example), you must call @code{add_history()} to save the line away in a @dfn{history} list of such lines. @example @code{add_history (line)}; @end example @noindent 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 @code{gets()} library function, and has the advantage of no static buffer to overflow: @example /* 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); @} @end example This function gives the user the default behaviour of @key{TAB} completion: completion on file names. If you do not want Readline to complete on filenames, you can change the binding of the @key{TAB} key with @code{rl_bind_key()}. @example @code{int rl_bind_key (int @var{key}, rl_command_func_t *@var{function});} @end example @code{rl_bind_key()} takes two arguments: @var{key} is the character that you want to bind, and @var{function} is the address of the function to call when @var{key} is pressed. Binding @key{TAB} to @code{rl_insert()} makes @key{TAB} insert itself. @code{rl_bind_key()} returns non-zero if @var{key} is not a valid ASCII character code (between 0 and 255). Thus, to disable the default @key{TAB} behavior, the following suffices: @example @code{rl_bind_key ('\t', rl_insert);} @end example This code should be executed once at the start of your program; you might write a function called @code{initialize_readline()} which performs this and other desired initializations, such as installing custom completers (@pxref{Custom Completers}). @node Custom Functions @section 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. Before declaring any functions that customize Readline's behavior, or using any functionality Readline provides in other code, an application writer should include the file @code{} in any file that uses Readline's features. Since some of the definitions in @code{readline.h} use the @code{stdio} library, the file @code{} should be included before @code{readline.h}. @code{readline.h} defines a C preprocessor variable that should be treated as an integer, @code{RL_READLINE_VERSION}, which may be used to conditionally compile application code depending on the installed Readline version. The value is a hexadecimal encoding of the major and minor version numbers of the library, of the form 0x@var{MMmm}. @var{MM} is the two-digit major version number; @var{mm} is the two-digit minor version number. For Readline 4.2, for example, the value of @code{RL_READLINE_VERSION} would be @code{0x0402}. @menu * Readline Typedefs:: C declarations to make code readable. * Function Writing:: Variables and calling conventions. @end menu @node Readline Typedefs @subsection Readline Typedefs For readability, we declare a number of new object types, all pointers to functions. The reason for declaring these new types is to make it easier to write code describing pointers to C functions with appropriately prototyped arguments and return values. For instance, say we want to declare a variable @var{func} as a pointer to a function which takes two @code{int} arguments and returns an @code{int} (this is the type of all of the Readline bindable functions). Instead of the classic C declaration @code{int (*func)();} @noindent or the ANSI-C style declaration @code{int (*func)(int, int);} @noindent we may write @code{rl_command_func_t *func;} The full list of function pointer types available is @table @code @item typedef int rl_command_func_t (int, int); @item typedef char *rl_compentry_func_t (const char *, int); @item typedef char **rl_completion_func_t (const char *, int, int); @item typedef char *rl_quote_func_t (char *, int, char *); @item typedef char *rl_dequote_func_t (char *, int); @item typedef int rl_compignore_func_t (char **); @item typedef void rl_compdisp_func_t (char **, int, int); @item typedef int rl_hook_func_t (void); @item typedef int rl_getc_func_t (FILE *); @item typedef int rl_linebuf_func_t (char *, int); @item typedef int rl_intfunc_t (int); @item #define rl_ivoidfunc_t rl_hook_func_t @item typedef int rl_icpfunc_t (char *); @item typedef int rl_icppfunc_t (char **); @item typedef void rl_voidfunc_t (void); @item typedef void rl_vintfunc_t (int); @item typedef void rl_vcpfunc_t (char *); @item typedef void rl_vcppfunc_t (char **); @end table @node Function Writing @subsection 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 @code{foo} looks like @example @code{int foo (int count, int key)} @end example @noindent where @var{count} is the numeric argument (or 1 if defaulted) and @var{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. A command function should return 0 if its action completes successfully, and a value greater than zero if some error occurs. This is the convention obeyed by all of the builtin Readline bindable command functions. @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}. The function @code{rl_extend_line_buffer} is available to increase the memory allocated to @code{rl_line_buffer}. @end deftypevar @deftypevar int rl_point The offset of the current cursor position in @code{rl_line_buffer} (the @emph{point}). @end deftypevar @deftypevar int rl_end The number of characters present in @code{rl_line_buffer}. When @code{rl_point} is at the end of the line, @code{rl_point} and @code{rl_end} are equal. @end deftypevar @deftypevar int rl_mark The @var{mark} (saved position) in the current line. If set, the mark and point define a @emph{region}. @end deftypevar @deftypevar int rl_done Setting this to a non-zero value causes Readline to return the current line immediately. @end deftypevar @deftypevar int rl_num_chars_to_read Setting this to a positive value before calling @code{readline()} causes Readline to return after accepting that many characters, rather than reading up to a character bound to @code{accept-line}. @end deftypevar @deftypevar 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. @end deftypevar @deftypevar int rl_dispatching Set to a non-zero value if a function is being called from a key binding; zero otherwise. Application functions can test this to discover whether they were called directly or by Readline's dispatching mechanism. @end deftypevar @deftypevar int rl_erase_empty_line Setting this to a non-zero value causes Readline to completely erase the current line, including any prompt, any time a newline is typed as the only character on an otherwise-empty line. The cursor is moved to the beginning of the newly-blank line. @end deftypevar @deftypevar {char *} rl_prompt The prompt Readline uses. This is set from the argument to @code{readline()}, and should not be assigned to directly. The @code{rl_set_prompt()} function (@pxref{Redisplay}) may be used to modify the prompt string after calling @code{readline()}. @end deftypevar @deftypevar {char *} rl_display_prompt The string displayed as the prompt. This is usually identical to @var{rl_prompt}, but may be changed temporarily by functions that use the prompt string as a message area, such as incremental search. @end deftypevar @deftypevar int rl_already_prompted If an application wishes to display the prompt itself, rather than have Readline do it the first time @code{readline()} is called, it should set this variable to a non-zero value after displaying the prompt. The prompt must also be passed as the argument to @code{readline()} so the redisplay functions can update the display properly. The calling application is responsible for managing the value; Readline never sets it. @end deftypevar @deftypevar {const char *} rl_library_version The version number of this revision of the library. @end deftypevar @deftypevar int rl_readline_version An integer encoding the current version of the library. The encoding is of the form 0x@var{MMmm}, where @var{MM} is the two-digit major version number, and @var{mm} is the two-digit minor version number. For example, for Readline-4.2, @code{rl_readline_version} would have the value 0x0402. @end deftypevar @deftypevar {int} rl_gnu_readline_p Always set to 1, denoting that this is @sc{gnu} readline rather than some emulation. @end deftypevar @deftypevar {const char *} rl_terminal_name The terminal type, used for initialization. If not set by the application, Readline sets this to the value of the @env{TERM} environment variable the first time it is called. @end deftypevar @deftypevar {const 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 (@pxref{Conditional Init Constructs}). @end deftypevar @deftypevar {FILE *} rl_instream The stdio stream from which Readline reads input. If @code{NULL}, Readline defaults to @var{stdin}. @end deftypevar @deftypevar {FILE *} rl_outstream The stdio stream to which Readline performs output. If @code{NULL}, Readline defaults to @var{stdout}. @end deftypevar @deftypevar int rl_prefer_env_winsize If non-zero, Readline gives values found in the @env{LINES} and @env{COLUMNS} environment variables greater precedence than values fetched from the kernel when computing the screen dimensions. @end deftypevar @deftypevar {rl_command_func_t *} rl_last_func The address of the last command function Readline executed. May be used to test whether or not a function is being executed twice in succession, for example. @end deftypevar @deftypevar {rl_hook_func_t *} rl_startup_hook If non-zero, this is the address of a function to call just before @code{readline} prints the first prompt. @end deftypevar @deftypevar {rl_hook_func_t *} rl_pre_input_hook If non-zero, this is the address of a function to call after the first prompt has been printed and just before @code{readline} starts reading input characters. @end deftypevar @deftypevar {rl_hook_func_t *} rl_event_hook If non-zero, this is the address of a function to call periodically when Readline is waiting for terminal input. By default, this will be called at most ten times a second if there is no keyboard input. @end deftypevar @deftypevar {rl_getc_func_t *} 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 @code{rl_getc}, the default Readline character input function (@pxref{Character Input}). In general, an application that sets @var{rl_getc_function} should consider setting @var{rl_input_available_hook} as well. @end deftypevar @deftypevar {rl_hook_func_t *} rl_signal_event_hook If non-zero, this is the address of a function to call if a read system call is interrupted when Readline is reading terminal input. @end deftypevar @deftypevar {rl_hook_func_t *} rl_input_available_hook If non-zero, Readline will use this function's return value when it needs to determine whether or not there is available input on the current input source. The default hook checks @code{rl_instream}; if an application is using a different input source, it should set the hook appropriately. Readline queries for available input when implementing intra-key-sequence timeouts during input and incremental searches. This may use an application-specific timeout before returning a value; Readline uses the value passed to @code{rl_set_keyboard_input_timeout()} or the value of the user-settable @var{keyseq-timeout} variable. This is designed for use by applications using Readline's callback interface (@pxref{Alternate Interface}), which may not use the traditional @code{read(2)} and file descriptor interface, or other applications using a different input mechanism. If an application uses an input mechanism or hook that can potentially exceed the value of @var{keyseq-timeout}, it should increase the timeout or set this hook appropriately even when not using the callback interface. In general, an application that sets @var{rl_getc_function} should consider setting @var{rl_input_available_hook} as well. @end deftypevar @deftypevar {rl_voidfunc_t *} 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 @code{rl_redisplay}, the default Readline redisplay function (@pxref{Redisplay}). @end deftypevar @deftypevar {rl_vintfunc_t *} rl_prep_term_function If non-zero, Readline will call indirectly through this pointer to initialize the terminal. The function takes a single argument, an @code{int} flag that says whether or not to use eight-bit characters. By default, this is set to @code{rl_prep_terminal} (@pxref{Terminal Management}). @end deftypevar @deftypevar {rl_voidfunc_t *} rl_deprep_term_function If non-zero, Readline will call indirectly through this pointer to reset the terminal. This function should undo the effects of @code{rl_prep_term_function}. By default, this is set to @code{rl_deprep_terminal} (@pxref{Terminal Management}). @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 @deftypevar {char *} rl_executing_macro This variable is set to the text of any currently-executing macro. @end deftypevar @deftypevar int rl_executing_key The key that caused the dispatch to the currently-executing Readline function. @end deftypevar @deftypevar {char *} rl_executing_keyseq The full key sequence that caused the dispatch to the currently-executing Readline function. @end deftypevar @deftypevar int rl_key_sequence_length The number of characters in @var{rl_executing_keyseq}. @end deftypevar @deftypevar {int} rl_readline_state A variable with bit values that encapsulate the current Readline state. A bit is set with the @code{RL_SETSTATE} macro, and unset with the @code{RL_UNSETSTATE} macro. Use the @code{RL_ISSTATE} macro to test whether a particular state bit is set. Current state bits include: @table @code @item RL_STATE_NONE Readline has not yet been called, nor has it begun to initialize. @item RL_STATE_INITIALIZING Readline is initializing its internal data structures. @item RL_STATE_INITIALIZED Readline has completed its initialization. @item RL_STATE_TERMPREPPED Readline has modified the terminal modes to do its own input and redisplay. @item RL_STATE_READCMD Readline is reading a command from the keyboard. @item RL_STATE_METANEXT Readline is reading more input after reading the meta-prefix character. @item RL_STATE_DISPATCHING Readline is dispatching to a command. @item RL_STATE_MOREINPUT Readline is reading more input while executing an editing command. @item RL_STATE_ISEARCH Readline is performing an incremental history search. @item RL_STATE_NSEARCH Readline is performing a non-incremental history search. @item RL_STATE_SEARCH Readline is searching backward or forward through the history for a string. @item RL_STATE_NUMERICARG Readline is reading a numeric argument. @item RL_STATE_MACROINPUT Readline is currently getting its input from a previously-defined keyboard macro. @item RL_STATE_MACRODEF Readline is currently reading characters defining a keyboard macro. @item RL_STATE_OVERWRITE Readline is in overwrite mode. @item RL_STATE_COMPLETING Readline is performing word completion. @item RL_STATE_SIGHANDLER Readline is currently executing the readline signal handler. @item RL_STATE_UNDOING Readline is performing an undo. @item RL_STATE_INPUTPENDING Readline has input pending due to a call to @code{rl_execute_next()}. @item RL_STATE_TTYCSAVED Readline has saved the values of the terminal's special characters. @item RL_STATE_CALLBACK Readline is currently using the alternate (callback) interface (@pxref{Alternate Interface}). @item RL_STATE_VIMOTION Readline is reading the argument to a vi-mode "motion" command. @item RL_STATE_MULTIKEY Readline is reading a multiple-keystroke command. @item RL_STATE_VICMDONCE Readline has entered vi command (movement) mode at least one time during the current call to @code{readline()}. @item RL_STATE_DONE Readline has read a key sequence bound to @code{accept-line} and is about to return the line to the caller. @end table @end deftypevar @deftypevar {int} rl_explicit_arg Set to a non-zero value if an explicit numeric argument was specified by the user. Only valid in a bindable command function. @end deftypevar @deftypevar {int} rl_numeric_arg Set to the value of any numeric argument explicitly specified by the user before executing the current Readline function. Only valid in a bindable command function. @end deftypevar @deftypevar {int} rl_editing_mode Set to a value denoting Readline's current editing mode. A value of @var{1} means Readline is currently in emacs mode; @var{0} means that vi mode is active. @end deftypevar @node Readline Convenience Functions @section 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 @code{rl_line_buffer}. * Character Input:: Functions to read keyboard input. * Terminal Management:: Functions to manage terminal settings. * Utility Functions:: Generally useful functions and hooks. * Miscellaneous Functions:: Functions that don't fall into any category. * Alternate Interface:: Using Readline in a `callback' fashion. * A Readline Example:: An example Readline function. * Alternate Interface Example:: An example program using the alternate interface. @end menu @node Function Naming @subsection 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 @example Meta-Rubout: backward-kill-word @end example This binds the keystroke @key{Meta-Rubout} to the function @emph{descriptively} named @code{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: @deftypefun int rl_add_defun (const char *name, rl_command_func_t *function, int key) Add @var{name} to the list of named functions. Make @var{function} be the function that gets called. If @var{key} is not -1, then bind it to @var{function} using @code{rl_bind_key()}. @end deftypefun 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. @node Keymaps @subsection Selecting a Keymap Key bindings take place on a @dfn{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. @deftypefun Keymap rl_make_bare_keymap (void) Returns a new, empty keymap. The space for the keymap is allocated with @code{malloc()}; the caller should free it by calling @code{rl_free_keymap()} when done. @end deftypefun @deftypefun Keymap rl_copy_keymap (Keymap map) Return a new keymap which is a copy of @var{map}. @end deftypefun @deftypefun Keymap rl_make_keymap (void) 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. @end deftypefun @deftypefun void rl_discard_keymap (Keymap keymap) Free the storage associated with the data in @var{keymap}. The caller should free @var{keymap}. @end deftypefun @deftypefun void rl_free_keymap (Keymap keymap) Free all storage associated with @var{keymap}. This calls @code{rl_discard_keymap} to free subordindate keymaps and macros. @end deftypefun @deftypefun int rl_empty_keymap (Keymap keymap) Return non-zero if there are no keys bound to functions in @var{keymap}; zero if there are any keys bound. @end deftypefun Readline has several internal keymaps. These functions allow you to change which keymap is active. @deftypefun Keymap rl_get_keymap (void) Returns the currently active keymap. @end deftypefun @deftypefun void rl_set_keymap (Keymap keymap) Makes @var{keymap} the currently active keymap. @end deftypefun @deftypefun Keymap rl_get_keymap_by_name (const char *name) 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 @deftypefun int rl_set_keymap_name (const char *name, Keymap keymap) Set the name of @var{keymap}. This name will then be "registered" and available for use in a @code{set keymap} inputrc directive @pxref{Readline Init File}). The @var{name} may not be one of Readline's builtin keymap names; you may not add a different name for one of Readline's builtin keymaps. You may replace the name associated with a given keymap by calling this function more than once with the same @var{keymap} argument. You may associate a registered @var{name} with a new keymap by calling this function more than once with the same @var{name} argument. There is no way to remove a named keymap once the name has been registered. Readline will make a copy of @var{name}. The return value is greater than zero unless @var{name} is one of Readline's builtin keymap names or @var{keymap} is one of Readline's builtin keymaps. @end deftypefun @node Binding Keys @subsection Binding Keys Key sequences are associate with functions through the keymap. Readline has several internal keymaps: @code{emacs_standard_keymap}, @code{emacs_meta_keymap}, @code{emacs_ctlx_keymap}, @code{vi_movement_keymap}, and @code{vi_insertion_keymap}. @code{emacs_standard_keymap} is the default, and the examples in this manual assume that. Since @code{readline()} installs a set of default key bindings the first time it is called, there is always the danger that a custom binding installed before the first call to @code{readline()} will be overridden. An alternate mechanism is to install custom key bindings in an initialization function assigned to the @code{rl_startup_hook} variable (@pxref{Readline Variables}). These functions manage key bindings. @deftypefun int rl_bind_key (int key, rl_command_func_t *function) Binds @var{key} to @var{function} in the currently active keymap. Returns non-zero in the case of an invalid @var{key}. @end deftypefun @deftypefun int rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map) Bind @var{key} to @var{function} in @var{map}. Returns non-zero in the case of an invalid @var{key}. @end deftypefun @deftypefun int rl_bind_key_if_unbound (int key, rl_command_func_t *function) Binds @var{key} to @var{function} if it is not already bound in the currently active keymap. Returns non-zero in the case of an invalid @var{key} or if @var{key} is already bound. @end deftypefun @deftypefun int rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *function, Keymap map) Binds @var{key} to @var{function} if it is not already bound in @var{map}. Returns non-zero in the case of an invalid @var{key} or if @var{key} is already bound. @end deftypefun @deftypefun int rl_unbind_key (int key) Bind @var{key} to the null function in the currently active keymap. Returns non-zero in case of error. @end deftypefun @deftypefun int rl_unbind_key_in_map (int key, Keymap map) Bind @var{key} to the null function in @var{map}. Returns non-zero in case of error. @end deftypefun @deftypefun int rl_unbind_function_in_map (rl_command_func_t *function, Keymap map) Unbind all keys that execute @var{function} in @var{map}. @end deftypefun @deftypefun int rl_unbind_command_in_map (const char *command, Keymap map) Unbind all keys that are bound to @var{command} in @var{map}. @end deftypefun @deftypefun int rl_bind_keyseq (const char *keyseq, rl_command_func_t *function) Bind the key sequence represented by the string @var{keyseq} to the function @var{function}, beginning in the current keymap. This makes new keymaps as necessary. The return value is non-zero if @var{keyseq} is invalid. @end deftypefun @deftypefun int rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) Bind the key sequence represented by the string @var{keyseq} to the function @var{function}. This makes new keymaps as necessary. Initial bindings are performed in @var{map}. The return value is non-zero if @var{keyseq} is invalid. @end deftypefun @deftypefun int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map) Equivalent to @code{rl_bind_keyseq_in_map}. @end deftypefun @deftypefun int rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *function) Binds @var{keyseq} to @var{function} if it is not already bound in the currently active keymap. Returns non-zero in the case of an invalid @var{keyseq} or if @var{keyseq} is already bound. @end deftypefun @deftypefun int rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) Binds @var{keyseq} to @var{function} if it is not already bound in @var{map}. Returns non-zero in the case of an invalid @var{keyseq} or if @var{keyseq} is already bound. @end deftypefun @deftypefun int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map) Bind the key sequence represented by the string @var{keyseq} to the arbitrary pointer @var{data}. @var{type} says what kind of data is pointed to by @var{data}; this can be a function (@code{ISFUNC}), a macro (@code{ISMACR}), or a keymap (@code{ISKMAP}). This makes new keymaps as necessary. The initial keymap in which to do bindings is @var{map}. @end deftypefun @deftypefun int rl_parse_and_bind (char *line) Parse @var{line} as if it had been read from the @code{inputrc} file and perform any key bindings and variable assignments found (@pxref{Readline Init File}). @end deftypefun @deftypefun int rl_read_init_file (const 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 These functions allow you to find out what keys invoke named functions and the functions invoked by a particular key sequence. You may also associate a new function name with an arbitrary function. @deftypefun {rl_command_func_t *} rl_named_function (const char *name) Return the function with name @var{name}. @end deftypefun @deftypefun {rl_command_func_t *} rl_function_of_keyseq (const char *keyseq, Keymap map, int *type) Return the function invoked by @var{keyseq} in keymap @var{map}. If @var{map} is @code{NULL}, the current keymap is used. If @var{type} is not @code{NULL}, the type of the object is returned in the @code{int} variable it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}). It takes a "translated" key sequence and should not be used if the key sequence can include NUL. @end deftypefun @deftypefun {rl_command_func_t *} rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type) Return the function invoked by @var{keyseq} of length @var{len} in keymap @var{map}. Equivalent to @code{rl_function_of_keyseq} with the addition of the @var{len} parameter. It takes a "translated" key sequence and should be used if the key sequence can include NUL. @end deftypefun @deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function) Return an array of strings representing the key sequences used to invoke @var{function} in the current keymap. @end deftypefun @deftypefun {char **} rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map) 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 (void) Print the names of all bindable Readline functions to @code{rl_outstream}. @end deftypefun @deftypefun {const char **} rl_funmap_names (void) Return a NULL terminated array of known function names. The array is sorted. The array itself is allocated, but not the strings inside. You should free the array, but not the pointers, using @code{free} or @code{rl_free} when you are done. @end deftypefun @deftypefun int rl_add_funmap_entry (const char *name, rl_command_func_t *function) Add @var{name} to the list of bindable Readline command names, and make @var{function} the function to be called when @var{name} is invoked. @end deftypefun @node Allowing Undoing @subsection 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. If your function simply inserts text once, or deletes text once, and uses @code{rl_insert_text()} or @code{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 @code{rl_begin_undo_group()} and @code{rl_end_undo_group()}. The types of events that can be undone are: @smallexample enum undo_code @{ UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END @}; @end smallexample Notice that @code{UNDO_DELETE} means to insert some text, and @code{UNDO_INSERT} means to delete some text. That is, the undo code tells what to undo, not how to undo it. @code{UNDO_BEGIN} and @code{UNDO_END} are tags added by @code{rl_begin_undo_group()} and @code{rl_end_undo_group()}. @deftypefun int rl_begin_undo_group (void) Begins saving undo information in a group construct. The undo information usually comes from calls to @code{rl_insert_text()} and @code{rl_delete_text()}, but could be the result of calls to @code{rl_add_undo()}. @end deftypefun @deftypefun int rl_end_undo_group (void) Closes the current undo group started with @code{rl_begin_undo_group ()}. There should be one call to @code{rl_end_undo_group()} for each call to @code{rl_begin_undo_group()}. @end deftypefun @deftypefun void rl_add_undo (enum undo_code what, int start, int end, char *text) Remember how to undo an event (according to @var{what}). The affected text runs from @var{start} to @var{end}, and encompasses @var{text}. @end deftypefun @deftypefun void rl_free_undo_list (void) Free the existing undo list. @end deftypefun @deftypefun int rl_do_undo (void) Undo the first thing on the undo list. Returns @code{0} if there was nothing to undo, non-zero if something was undone. @end deftypefun Finally, if you neither insert nor delete text, but directly modify the existing text (e.g., change its case), call @code{rl_modifying()} once, just before you modify the text. You must supply the indices of the text range that you are going to modify. @deftypefun int rl_modifying (int start, int end) Tell Readline to save the text between @var{start} and @var{end} as a single undo unit. It is assumed that you will subsequently modify that text. @end deftypefun @node Redisplay @subsection Redisplay @deftypefun void rl_redisplay (void) Change what's displayed on the screen to reflect the current contents of @code{rl_line_buffer}. @end deftypefun @deftypefun int rl_forced_update_display (void) Force the line to be updated and redisplayed, whether or not Readline thinks the screen display is correct. @end deftypefun @deftypefun int rl_on_new_line (void) Tell the update functions that we have moved onto a new (empty) line, usually after outputting a newline. @end deftypefun @deftypefun int rl_on_new_line_with_prompt (void) Tell the update functions that we have moved onto a new line, with @var{rl_prompt} already displayed. This could be used by applications that want to output the prompt string themselves, but still need Readline to know the prompt string length for redisplay. It should be used after setting @var{rl_already_prompted}. @end deftypefun @deftypefun int rl_clear_visible_line (void) Clear the screen lines corresponding to the current line's contents. @end deftypefun @deftypefun int rl_reset_line_state (void) Reset the display state to a clean state and redisplay the current line starting on a new line. @end deftypefun @deftypefun int rl_crlf (void) Move the cursor to the start of the next screen line. @end deftypefun @deftypefun int rl_show_char (int c) Display character @var{c} on @code{rl_outstream}. If Readline has not been set to display meta characters directly, this will convert meta characters to a meta-prefixed key sequence. This is intended for use by applications which wish to do their own redisplay. @end deftypefun @deftypefun int rl_message (const char *, @dots{}) The arguments are a format string as would be supplied to @code{printf}, possibly containing conversion specifications such as @samp{%d}, and any additional arguments necessary to satisfy the conversion specifications. The resulting string is displayed in the @dfn{echo area}. The echo area is also used to display numeric arguments and search strings. You should call @code{rl_save_prompt} to save the prompt information before calling this function. @end deftypefun @deftypefun int rl_clear_message (void) Clear the message in the echo area. If the prompt was saved with a call to @code{rl_save_prompt} before the last call to @code{rl_message}, call @code{rl_restore_prompt} before calling this function. @end deftypefun @deftypefun void rl_save_prompt (void) Save the local Readline prompt display state in preparation for displaying a new message in the message area with @code{rl_message()}. @end deftypefun @deftypefun void rl_restore_prompt (void) Restore the local Readline prompt display state saved by the most recent call to @code{rl_save_prompt}. if @code{rl_save_prompt} was called to save the prompt before a call to @code{rl_message}, this function should be called before the corresponding call to @code{rl_clear_message}. @end deftypefun @deftypefun int rl_expand_prompt (char *prompt) Expand any special character sequences in @var{prompt} and set up the local Readline prompt redisplay variables. This function is called by @code{readline()}. It may also be called to expand the primary prompt if the @code{rl_on_new_line_with_prompt()} function or @code{rl_already_prompted} variable is used. It returns the number of visible characters on the last line of the (possibly multi-line) prompt. Applications may indicate that the prompt contains characters that take up no physical screen space when displayed by bracketing a sequence of such characters with the special markers @code{RL_PROMPT_START_IGNORE} and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h}). This may be used to embed terminal-specific escape sequences in prompts. @end deftypefun @deftypefun int rl_set_prompt (const char *prompt) Make Readline use @var{prompt} for subsequent redisplay. This calls @code{rl_expand_prompt()} to expand the prompt and sets @code{rl_prompt} to the result. @end deftypefun @node Modifying Text @subsection Modifying Text @deftypefun int rl_insert_text (const char *text) Insert @var{text} into the line at the current cursor position. Returns the number of characters inserted. @end deftypefun @deftypefun int rl_delete_text (int start, int end) Delete the text between @var{start} and @var{end} in the current line. Returns the number of characters deleted. @end deftypefun @deftypefun {char *} rl_copy_text (int start, int end) Return a copy of the text between @var{start} and @var{end} in the current line. @end deftypefun @deftypefun int rl_kill_text (int start, int end) Copy the text between @var{start} and @var{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 @var{start} is less than @var{end}, the text is appended, otherwise prepended. If the last command was not a kill, a new kill ring slot is used. @end deftypefun @deftypefun int rl_push_macro_input (char *macro) Cause @var{macro} to be inserted into the line, as if it had been invoked by a key bound to a macro. Not especially useful; use @code{rl_insert_text()} instead. @end deftypefun @node Character Input @subsection Character Input @deftypefun int rl_read_key (void) Return the next character available from Readline's current input stream. This handles input inserted into the input stream via @var{rl_pending_input} (@pxref{Readline Variables}) and @code{rl_stuff_char()}, macros, and characters read from the keyboard. While waiting for input, this function will call any function assigned to the @code{rl_event_hook} variable. @end deftypefun @deftypefun int rl_getc (FILE *stream) Return the next character available from @var{stream}, which is assumed to be 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()}. Up to 512 characters may be pushed back. @code{rl_stuff_char} returns 1 if the character was successfully inserted; 0 otherwise. @end deftypefun @deftypefun int rl_execute_next (int c) Make @var{c} be the next command to be executed when @code{rl_read_key()} is called. This sets @var{rl_pending_input}. @end deftypefun @deftypefun int rl_clear_pending_input (void) Unset @var{rl_pending_input}, effectively negating the effect of any previous call to @code{rl_execute_next()}. This works only if the pending input has not already been read with @code{rl_read_key()}. @end deftypefun @deftypefun int rl_set_keyboard_input_timeout (int u) While waiting for keyboard input in @code{rl_read_key()}, Readline will wait for @var{u} microseconds for input before calling any function assigned to @code{rl_event_hook}. @var{u} must be greater than or equal to zero (a zero-length timeout is equivalent to a poll). The default waiting period is one-tenth of a second. Returns the old timeout value. @end deftypefun @node Terminal Management @subsection Terminal Management @deftypefun void rl_prep_terminal (int meta_flag) Modify the terminal settings for Readline's use, so @code{readline()} can read a single character at a time from the keyboard. The @var{meta_flag} argument should be non-zero if Readline should read eight-bit input. @end deftypefun @deftypefun void rl_deprep_terminal (void) Undo the effects of @code{rl_prep_terminal()}, leaving the terminal in the state in which it was before the most recent call to @code{rl_prep_terminal()}. @end deftypefun @deftypefun void rl_tty_set_default_bindings (Keymap kmap) Read the operating system's terminal editing characters (as would be displayed by @code{stty}) to their Readline equivalents. The bindings are performed in @var{kmap}. @end deftypefun @deftypefun void rl_tty_unset_default_bindings (Keymap kmap) Reset the bindings manipulated by @code{rl_tty_set_default_bindings} so that the terminal editing characters are bound to @code{rl_insert}. The bindings are performed in @var{kmap}. @end deftypefun @deftypefun int rl_tty_set_echoing (int value) Set Readline's idea of whether or not it is echoing output to its output stream (@var{rl_outstream}). If @var{value} is 0, Readline does not display output to @var{rl_outstream}; any other value enables output. The initial value is set when Readline initializes the terminal settings. This function returns the previous value. @end deftypefun @deftypefun int rl_reset_terminal (const char *terminal_name) Reinitialize Readline's idea of the terminal settings using @var{terminal_name} as the terminal type (e.g., @code{vt100}). If @var{terminal_name} is @code{NULL}, the value of the @code{TERM} environment variable is used. @end deftypefun @node Utility Functions @subsection Utility Functions @deftypefun int rl_save_state (struct readline_state *sp) Save a snapshot of Readline's internal state to @var{sp}. The contents of the @var{readline_state} structure are documented in @file{readline.h}. The caller is responsible for allocating the structure. @end deftypefun @deftypefun int rl_restore_state (struct readline_state *sp) Restore Readline's internal state to that stored in @var{sp}, which must have been saved by a call to @code{rl_save_state}. The contents of the @var{readline_state} structure are documented in @file{readline.h}. The caller is responsible for freeing the structure. @end deftypefun @deftypefun void rl_free (void *mem) Deallocate the memory pointed to by @var{mem}. @var{mem} must have been allocated by @code{malloc}. @end deftypefun @deftypefun void rl_replace_line (const char *text, int clear_undo) Replace the contents of @code{rl_line_buffer} with @var{text}. The point and mark are preserved, if possible. If @var{clear_undo} is non-zero, the undo list associated with the current line is cleared. @end deftypefun @deftypefun void 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 (void) Initialize or re-initialize Readline's internal state. It's not strictly necessary to call this; @code{readline()} calls it before reading any input. @end deftypefun @deftypefun int rl_ding (void) Ring the terminal bell, obeying the setting of @code{bell-style}. @end deftypefun @deftypefun int rl_alphabetic (int c) Return 1 if @var{c} is an alphabetic character. @end deftypefun @deftypefun void rl_display_match_list (char **matches, int len, int max) A convenience function for displaying a list of strings in columnar format on Readline's output stream. @code{matches} is the list of strings, in argv format, such as a list of completion matches. @code{len} is the number of strings in @code{matches}, and @code{max} is the length of the longest string in @code{matches}. This function uses the setting of @code{print-completions-horizontally} to select how the matches are displayed (@pxref{Readline Init File Syntax}). When displaying completions, this function sets the number of columns used for display to the value of @code{completion-display-width}, the value of the environment variable @env{COLUMNS}, or the screen width, in that order. @end deftypefun The following are implemented as macros, defined in @code{chardefs.h}. Applications should refrain from using them. @deftypefun int _rl_uppercase_p (int c) Return 1 if @var{c} is an uppercase alphabetic character. @end deftypefun @deftypefun int _rl_lowercase_p (int c) Return 1 if @var{c} is a lowercase alphabetic character. @end deftypefun @deftypefun int _rl_digit_p (int c) Return 1 if @var{c} is a numeric character. @end deftypefun @deftypefun int _rl_to_upper (int c) If @var{c} is a lowercase alphabetic character, return the corresponding uppercase character. @end deftypefun @deftypefun int _rl_to_lower (int c) If @var{c} is an uppercase alphabetic character, return the corresponding lowercase character. @end deftypefun @deftypefun int _rl_digit_value (int c) If @var{c} is a number, return the value it represents. @end deftypefun @node Miscellaneous Functions @subsection Miscellaneous Functions @deftypefun int rl_macro_bind (const char *keyseq, const char *macro, Keymap map) Bind the key sequence @var{keyseq} to invoke the macro @var{macro}. The binding is performed in @var{map}. When @var{keyseq} is invoked, the @var{macro} will be inserted into the line. This function is deprecated; use @code{rl_generic_bind()} instead. @end deftypefun @deftypefun void rl_macro_dumper (int readable) Print the key sequences bound to macros and their values, using the current keymap, 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 int rl_variable_bind (const char *variable, const char *value) Make the Readline variable @var{variable} have @var{value}. This behaves as if the readline command @samp{set @var{variable} @var{value}} had been executed in an @code{inputrc} file (@pxref{Readline Init File Syntax}). @end deftypefun @deftypefun {char *} rl_variable_value (const char *variable) Return a string representing the value of the Readline variable @var{variable}. For boolean variables, this string is either @samp{on} or @samp{off}. @end deftypefun @deftypefun void rl_variable_dumper (int readable) Print the readline variable names and their current values 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 int rl_set_paren_blink_timeout (int u) Set the time interval (in microseconds) that Readline waits when showing a balancing character when @code{blink-matching-paren} has been enabled. @end deftypefun @deftypefun {char *} rl_get_termcap (const char *cap) Retrieve the string value of the termcap capability @var{cap}. Readline fetches the termcap entry for the current terminal name and uses those capabilities to move around the screen line and perform other terminal-specific operations, like erasing a line. Readline does not use all of a terminal's capabilities, and this function will return values for only those capabilities Readline uses. @end deftypefun @deftypefun {void} rl_clear_history (void) Clear the history list by deleting all of the entries, in the same manner as the History library's @code{clear_history()} function. This differs from @code{clear_history} because it frees private data Readline saves in the history list. @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 accommodate 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 (const char *prompt, rl_vcpfunc_t *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 handler function to call when a complete line of input has been entered. The handler function receives the text of the line as an argument. As with @code{readline()}, the handler function should @code{free} the line when it it finished with it. @end deftypefun @deftypefun void rl_callback_read_char (void) 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 installed by @code{rl_callback_handler_install} to process the line. Before calling the @var{lhandler} function, the terminal settings are reset to the values they had before calling @code{rl_callback_handler_install}. If the @var{lhandler} function returns, and the line handler remains installed, the terminal settings are modified for Readline's use again. @code{EOF} is indicated by calling @var{lhandler} with a @code{NULL} line. @end deftypefun @deftypefun void rl_callback_sigcleanup (void) Clean up any internal state the callback interface uses to maintain state between calls to rl_callback_read_char (e.g., the state of any active incremental searches). This is intended to be used by applications that wish to perform their own signal handling; Readline's internal signal handler calls this when appropriate. @end deftypefun @deftypefun void rl_callback_handler_remove (void) Restore the terminal to its initial state and remove the line handler. You may call this function from within a callback as well as independently. If the @var{lhandler} installed by @code{rl_callback_handler_install} does not exit the program, either this function or the function referred to by the value of @code{rl_deprep_term_function} should be called before the program exits to reset the terminal settings. @end deftypefun @node A Readline Example @subsection A Readline Example 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}, then typing @samp{M-c} would change the case of the character under point. Typing @samp{M-1 0 M-c} would change the case of the following 10 characters, leaving the cursor on the last character changed. @example /* 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 (_rl_uppercase_p (rl_line_buffer[i])) rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]); else if (_rl_lowercase_p (rl_line_buffer[i])) rl_line_buffer[i] = _rl_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); @} @end example @node Alternate Interface Example @subsection Alternate Interface Example Here is a complete program that illustrates Readline's alternate interface. It reads lines from the terminal and displays them, providing the standard history and TAB completion functions. It understands the EOF character or "exit" to exit the program. @example /* Standard include files. stdio.h is required. */ #include #include #include #include /* Used for select(2) */ #include #include #include #include /* Standard readline include files. */ #include #include static void cb_linehandler (char *); static void sighandler (int); int running; int sigwinch_received; const char *prompt = "rltest$ "; /* Handle SIGWINCH and window size changes when readline is not active and reading a character. */ static void sighandler (int sig) @{ sigwinch_received = 1; @} /* Callback function called for each line when accept-line executed, EOF seen, or EOF character read. This sets a flag and returns; it could also call exit(3). */ static void cb_linehandler (char *line) @{ /* Can use ^D (stty eof) or `exit' to exit. */ if (line == NULL || strcmp (line, "exit") == 0) @{ if (line == 0) printf ("\n"); printf ("exit\n"); /* This function needs to be called to reset the terminal settings, and calling it from the line handler keeps one extra prompt from being displayed. */ rl_callback_handler_remove (); running = 0; @} else @{ if (*line) add_history (line); printf ("input line: %s\n", line); free (line); @} @} int main (int c, char **v) @{ fd_set fds; int r; /* Set the default locale values according to environment variables. */ setlocale (LC_ALL, ""); /* Handle window size changes when readline is not active and reading characters. */ signal (SIGWINCH, sighandler); /* Install the line handler. */ rl_callback_handler_install (prompt, cb_linehandler); /* Enter a simple event loop. This waits until something is available to read on readline's input stream (defaults to standard input) and calls the builtin character read callback to read it. It does not have to modify the user's terminal settings. */ running = 1; while (running) @{ FD_ZERO (&fds); FD_SET (fileno (rl_instream), &fds); r = select (FD_SETSIZE, &fds, NULL, NULL, NULL); if (r < 0 && errno != EINTR) @{ perror ("rltest: select"); rl_callback_handler_remove (); break; @} if (sigwinch_received) @{ rl_resize_terminal (); sigwinch_received = 0; @} if (r < 0) continue; if (FD_ISSET (fileno (rl_instream), &fds)) rl_callback_read_char (); @} printf ("rltest: Event loop has exited\n"); return 0; @} @end example @node Readline Signal Handling @section Readline Signal Handling Signals are asynchronous events sent to a process by the Unix kernel, sometimes on behalf of another process. They are intended to indicate exceptional events, like a user pressing the interrupt key on his terminal, or a network connection being broken. There is a class of signals that can be sent to the process currently reading input from the keyboard. Since Readline changes the terminal attributes when it is called, it needs to perform special processing when such a signal is received in order to restore the terminal to a sane state, or provide application writers with functions to do so manually. Readline contains an internal signal handler that is installed for a number of signals (@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM}, @code{SIGHUP}, @code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}). When one of these signals is received, the signal handler will reset the terminal attributes to those that were in effect before @code{readline()} was called, reset the signal handling to what it was before @code{readline()} was called, and resend the signal to the calling application. If and when the calling application's signal handler returns, Readline will reinitialize the terminal and continue to accept input. When a @code{SIGINT} is received, the Readline signal handler performs some additional work, which will cause any partially-entered line to be aborted (see the description of @code{rl_free_line_state()} below). There is an additional Readline signal handler, for @code{SIGWINCH}, which the kernel sends to a process whenever the terminal's size changes (for example, if a user resizes an @code{xterm}). The Readline @code{SIGWINCH} handler updates Readline's internal screen size information, and then calls any @code{SIGWINCH} signal handler the calling application has installed. Readline calls the application's @code{SIGWINCH} signal handler without resetting the terminal to its original state. If the application's signal handler does more than update its idea of the terminal size and return (for example, a @code{longjmp} back to a main processing loop), it @emph{must} call @code{rl_cleanup_after_signal()} (described below), to restore the terminal state. When an application is using the callback interface (@pxref{Alternate Interface}), Readline installs signal handlers only for the duration of the call to @code{rl_callback_read_char}. Applications using the callback interface should be prepared to clean up Readline's state if they wish to handle the signal before the line handler completes and restores the terminal state. If an application using the callback interface wishes to have Readline install its signal handlers at the time the application calls @code{rl_callback_handler_install} and remove them only when a complete line of input has been read, it should set the @code{rl_persistent_signal_handlers} variable to a non-zero value. This allows an application to defer all of the handling of the signals Readline catches to Readline. Applications should use this variable with care; it can result in Readline catching signals and not acting on them (or allowing the application to react to them) until the application calls @code{rl_callback_read_char}. This can result in an application becoming less responsive to keyboard signals like SIGINT. If an application does not want or need to perform any signal handling, or does not need to do any processing between calls to @code{rl_callback_read_char}, setting this variable may be desirable. Readline provides two variables that allow application writers to control whether or not it will catch certain signals and act on them when they are received. It is important that applications change the values of these variables only when calling @code{readline()}, not in a signal handler, so Readline's internal signal state is not corrupted. @deftypevar int rl_catch_signals If this variable is non-zero, Readline will install signal handlers for @code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM}, @code{SIGHUP}, @code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}. The default value of @code{rl_catch_signals} is 1. @end deftypevar @deftypevar int rl_catch_sigwinch If this variable is set to a non-zero value, Readline will install a signal handler for @code{SIGWINCH}. The default value of @code{rl_catch_sigwinch} is 1. @end deftypevar @deftypevar int rl_persistent_signal_handlers If an application using the callback interface wishes Readline's signal handlers to be installed and active during the set of calls to @code{rl_callback_read_char} that constitutes an entire single line, it should set this variable to a non-zero value. The default value of @code{rl_persistent_signal_handlers} is 0. @end deftypevar @deftypevar int rl_change_environment If this variable is set to a non-zero value, and Readline is handling @code{SIGWINCH}, Readline will modify the @var{LINES} and @var{COLUMNS} environment variables upon receipt of a @code{SIGWINCH} The default value of @code{rl_change_environment} is 1. @end deftypevar If an application does not wish to have Readline catch any signals, or to handle signals other than those Readline catches (@code{SIGHUP}, for example), Readline provides convenience functions to do the necessary terminal and internal state cleanup upon receipt of a signal. @deftypefun int rl_pending_signal (void) Return the signal number of the most recent signal Readline received but has not yet handled, or 0 if there is no pending signal. @end deftypefun @deftypefun void rl_cleanup_after_signal (void) This function will reset the state of the terminal to what it was before @code{readline()} was called, and remove the Readline signal handlers for all signals, depending on the values of @code{rl_catch_signals} and @code{rl_catch_sigwinch}. @end deftypefun @deftypefun void rl_free_line_state (void) This will free any partial state associated with the current input line (undo information, any partial history entry, any partially-entered keyboard macro, and any partially-entered numeric argument). This should be called before @code{rl_cleanup_after_signal()}. The Readline signal handler for @code{SIGINT} calls this to abort the current input line. @end deftypefun @deftypefun void rl_reset_after_signal (void) This will reinitialize the terminal and reinstall any Readline signal handlers, depending on the values of @code{rl_catch_signals} and @code{rl_catch_sigwinch}. @end deftypefun If an application wants to force Readline to handle any signals that have arrived while it has been executing, @code{rl_check_signals()} will call Readline's internal signal handler if there are any pending signals. This is primarily intended for those applications that use a custom @code{rl_getc_function} (@pxref{Readline Variables}) and wish to handle signals received while waiting for input. @deftypefun void rl_check_signals (void) If there are any pending signals, call Readline's internal signal handling functions to process them. @code{rl_pending_signal()} can be used independently to determine whether or not there are any pending signals. @end deftypefun If an application does not wish Readline to catch @code{SIGWINCH}, it may call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force Readline to update its idea of the terminal size when a @code{SIGWINCH} is received. @deftypefun void rl_echo_signal_char (int sig) If an application wishes to install its own signal handlers, but still have readline display characters that generate signals, calling this function with @var{sig} set to @code{SIGINT}, @code{SIGQUIT}, or @code{SIGTSTP} will display the character generating that signal. @end deftypefun @deftypefun void rl_resize_terminal (void) Update Readline's internal screen size by reading values from the kernel. @end deftypefun @deftypefun void rl_set_screen_size (int rows, int cols) Set Readline's idea of the terminal size to @var{rows} rows and @var{cols} columns. If either @var{rows} or @var{columns} is less than or equal to 0, Readline's idea of that terminal dimension is unchanged. @end deftypefun If an application does not want to install a @code{SIGWINCH} handler, but is still interested in the screen dimensions, Readline's idea of the screen size may be queried. @deftypefun void rl_get_screen_size (int *rows, int *cols) Return Readline's idea of the terminal's size in the variables pointed to by the arguments. @end deftypefun @deftypefun void rl_reset_screen_size (void) Cause Readline to reobtain the screen size and recalculate its dimensions. @end deftypefun The following functions install and remove Readline's signal handlers. @deftypefun int rl_set_signals (void) Install Readline's signal handler for @code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM}, @code{SIGHUP}, @code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGWINCH}, depending on the values of @code{rl_catch_signals} and @code{rl_catch_sigwinch}. @end deftypefun @deftypefun int rl_clear_signals (void) Remove all of the Readline signal handlers installed by @code{rl_set_signals()}. @end deftypefun @node Custom Completers @section Custom Completers @cindex application-specific completion functions 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. @end menu @node How Completing Works @subsection 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: @enumerate @item The user-interface function @code{rl_complete()}. This function is called with the same arguments as other bindable Readline functions: @var{count} and @var{invoking_key}. It isolates the word to be completed and calls @code{rl_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. @item The internal function @code{rl_completion_matches()} uses an application-supplied @dfn{generator} function to generate the list of possible matches, and then returns the array of these matches. The caller should place the address of its generator function in @code{rl_completion_entry_function}. @item The generator function is called repeatedly from @code{rl_completion_matches()}, returning a string each time. The arguments to the generator function are @var{text} and @var{state}. @var{text} is the partial word to be completed. @var{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. The generator function returns @code{(char *)NULL} to inform @code{rl_completion_matches()} that there are no more possibilities left. Usually the generator function computes the list of possible completions when @var{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 @code{malloc()}; Readline frees the strings when it has finished with them. Such a generator function is referred to as an @dfn{application-specific completion function}. @end enumerate @deftypefun 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 @code{rl_completion_matches()}). The default is to do filename completion. @end deftypefun @deftypevar {rl_compentry_func_t *} rl_completion_entry_function This is a pointer to the generator function for @code{rl_completion_matches()}. If the value of @code{rl_completion_entry_function} is @code{NULL} then the default filename generator function, @code{rl_filename_completion_function()}, is used. An @dfn{application-specific completion function} is a function whose address is assigned to @code{rl_completion_entry_function} and whose return values are used to generate possible completions. @end deftypevar @node Completion Functions @subsection Completion Functions Here is the complete list of callable completion functions present in Readline. @deftypefun int rl_complete_internal (int what_to_do) Complete the word at or before point. @var{what_to_do} says what to do with the completion. A value of @samp{?} means list the possible completions. @samp{TAB} means do standard completion. @samp{*} means insert all of the possible completions. @samp{!} means to display all of the possible completions, if there is more than one, as well as performing partial completion. @samp{@@} is similar to @samp{!}, but possible completions are not listed if the possible completions share a common prefix. @end deftypefun @deftypefun 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 @code{rl_completion_matches()} and @code{rl_completion_entry_function}). The default is to do filename completion. This calls @code{rl_complete_internal()} with an argument depending on @var{invoking_key}. @end deftypefun @deftypefun int rl_possible_completions (int count, int invoking_key) List the possible completions. See description of @code{rl_complete ()}. This calls @code{rl_complete_internal()} with an argument of @samp{?}. @end deftypefun @deftypefun 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 @code{rl_complete()}. This calls @code{rl_complete_internal()} with an argument of @samp{*}. @end deftypefun @deftypefun int rl_completion_mode (rl_command_func_t *cfunc) Returns the appropriate value to pass to @code{rl_complete_internal()} depending on whether @var{cfunc} was called twice in succession and the values of the @code{show-all-if-ambiguous} and @code{show-all-if-unmodified} variables. Application-specific completion functions may use this function to present the same interface as @code{rl_complete()}. @end deftypefun @deftypefun {char **} rl_completion_matches (const char *text, rl_compentry_func_t *entry_func) Returns an array of strings which is a list of completions for @var{text}. If there are no completions, returns @code{NULL}. The first entry in the returned array is the substitution for @var{text}. The remaining entries are the possible completions. The array is terminated with a @code{NULL} pointer. @var{entry_func} is a function of two args, and returns a @code{char *}. The first argument is @var{text}. The second is a state argument; it is zero on the first call, and non-zero on subsequent calls. @var{entry_func} returns a @code{NULL} pointer to the caller when there are no more matches. @end deftypefun @deftypefun {char *} rl_filename_completion_function (const char *text, int state) A generator function for filename completion in the general case. @var{text} is a partial filename. The Bash source is a useful reference for writing application-specific completion functions (the Bash completion functions call this and other Readline functions). @end deftypefun @deftypefun {char *} rl_username_completion_function (const char *text, int state) A completion generator for usernames. @var{text} contains a partial username preceded by a random character (usually @samp{~}). As with all completion generators, @var{state} is zero on the first call and non-zero for subsequent calls. @end deftypefun @node Completion Variables @subsection Completion Variables @deftypevar {rl_compentry_func_t *} rl_completion_entry_function A pointer to the generator function for @code{rl_completion_matches()}. @code{NULL} means to use @code{rl_filename_completion_function()}, the default filename completer. @end deftypevar @deftypevar {rl_completion_func_t *} rl_attempted_completion_function A pointer to an alternative function to create matches. The function is called with @var{text}, @var{start}, and @var{end}. @var{start} and @var{end} are indices in @code{rl_line_buffer} defining the boundaries of @var{text}, which is a character string. If this function exists and returns @code{NULL}, or if this variable is set to @code{NULL}, then @code{rl_complete()} will call the value of @code{rl_completion_entry_function} to generate matches, otherwise the array of strings returned will be used. If this function sets the @code{rl_attempted_completion_over} variable to a non-zero value, Readline will not perform its default completion even if this function returns no matches. @end deftypevar @deftypevar {rl_quote_func_t *} 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 {rl_dequote_func_t *} 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 {rl_linebuf_func_t *} 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 {rl_compignore_func_t *} 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 @code{NULL} terminated array of matches. The first element (@code{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. @end deftypevar @deftypevar {rl_icppfunc_t *} rl_directory_completion_hook This function, if defined, is allowed to modify the directory portion of filenames Readline completes. It could be used to expand symbolic links or shell variables in pathnames. It is called with the address of a string (the current directory name) as an argument, and may modify that string. If the string is replaced with a new string, the old value should be freed. Any modified directory name should have a trailing slash. The modified value will be used as part of the completion, replacing the directory portion of the pathname the user typed. At the least, even if no other expansion is performed, this function should remove any quote characters from the directory name, because its result will be passed directly to @code{opendir()}. The directory completion hook returns an integer that should be non-zero if the function modifies its directory argument. The function should not modify the directory argument if it returns 0. @end deftypevar @deftypevar {rl_icppfunc_t *} rl_directory_rewrite_hook; If non-zero, this is the address of a function to call when completing a directory name. This function takes the address of the directory name to be modified as an argument. Unlike @code{rl_directory_completion_hook}, it only modifies the directory name used in @code{opendir}, not what is displayed when the possible completions are printed or inserted. It is called before rl_directory_completion_hook. At the least, even if no other expansion is performed, this function should remove any quote characters from the directory name, because its result will be passed directly to @code{opendir()}. The directory rewrite hook returns an integer that should be non-zero if the function modfies its directory argument. The function should not modify the directory argument if it returns 0. @end deftypevar @deftypevar {rl_icppfunc_t *} rl_filename_stat_hook If non-zero, this is the address of a function for the completer to call before deciding which character to append to a completed name. This function modifies its filename name argument, and the modified value is passed to @code{stat()} to determine the file's type and characteristics. This function does not need to remove quote characters from the filename. The stat hook returns an integer that should be non-zero if the function modfies its directory argument. The function should not modify the directory argument if it returns 0. @end deftypevar @deftypevar {rl_dequote_func_t *} rl_filename_rewrite_hook If non-zero, this is the address of a function called when reading directory entries from the filesystem for completion and comparing them to the partial word to be completed. The function should perform any necessary application or system-specific conversion on the filename, such as converting between character sets or converting from a filesystem format to a character input format. The function takes two arguments: @var{fname}, the filename to be converted, and @var{fnlen}, its length in bytes. It must either return its first argument (if no conversion takes place) or the converted filename in newly-allocated memory. The converted form is used to compare against the word to be completed, and, if it matches, is added to the list of matches. Readline will free the allocated string. @end deftypevar @deftypevar {rl_compdisp_func_t *} rl_completion_display_matches_hook If non-zero, then this is the address of a function to call when completing a word would normally display the list of possible matches. This function is called in lieu of Readline displaying the list. It takes three arguments: (@code{char **}@var{matches}, @code{int} @var{num_matches}, @code{int} @var{max_length}) where @var{matches} is the array of matching strings, @var{num_matches} is the number of strings in that array, and @var{max_length} is the length of the longest string in that array. Readline provides a convenience function, @code{rl_display_match_list}, that takes care of doing the display to Readline's output stream. You may call that function from this hook. @end deftypevar @deftypevar {const 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: @code{" \t\n\"\\'`@@$><=;|&@{("}. @end deftypevar @deftypevar {const char *} rl_basic_quote_characters A list of quote characters which can cause a word break. @end deftypevar @deftypevar {const 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 {rl_cpvfunc_t *} rl_completion_word_break_hook If non-zero, this is the address of a function to call when Readline is deciding where to separate words for word completion. It should return a character string like @code{rl_completer_word_break_characters} to be used to perform the current completion. The function may choose to set @code{rl_completer_word_break_characters} itself. If the function returns @code{NULL}, @code{rl_completer_word_break_characters} is used. @end deftypevar @deftypevar {const char *} rl_completer_quote_characters 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} are treated as any other character, unless they also appear within this list. @end deftypevar @deftypevar {const 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 the null string. @end deftypevar @deftypevar {const 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. 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. @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, readline asks the user if she is sure she wants to see them all. The default value is 100. A negative value indicates that Readline should never ask the user. @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 application-specific completion functions to provide the ``most sensible word separator character'' according to an application-specific command line syntax specification. It is set to the default before any application-specific completion function is called, and may only be changed within such a function. @end deftypevar @deftypevar int rl_completion_suppress_append If non-zero, @var{rl_completion_append_character} is not appended to matches at the end of the command line, as described above. It is set to 0 before any application-specific completion function is called, and may only be changed within such a function. @end deftypevar @deftypevar int rl_completion_quote_character When Readline is completing quoted text, as delimited by one of the characters in @var{rl_completer_quote_characters}, it sets this variable to the quoting character found. This is set before any application-specific completion function is called. @end deftypevar @deftypevar int rl_completion_suppress_quote If non-zero, Readline does not append a matching quote character when performing completion on a quoted string. It is set to 0 before any application-specific completion function is called, and may only be changed within such a function. @end deftypevar @deftypevar int rl_completion_found_quote When Readline is completing quoted text, it sets this variable to a non-zero value if the word being completed contains or is delimited by any quoting characters, including backslashes. This is set before any application-specific completion function is called. @end deftypevar @deftypevar int rl_completion_mark_symlink_dirs If non-zero, a slash will be appended to completed filenames that are symbolic links to directory names, subject to the value of the user-settable @var{mark-directories} variable. This variable exists so that application-specific completion functions can override the user's global preference (set via the @var{mark-symlinked-directories} Readline variable) if appropriate. This variable is set to the user's preference before any application-specific completion function is called, so unless that function modifies the value, the user's preferences are honored. @end deftypevar @deftypevar int rl_ignore_completion_duplicates If non-zero, then duplicates in the matches are removed. The default is 1. @end deftypevar @deftypevar int rl_filename_completion_desired Non-zero means that the results of the matches are to be treated as filenames. This is @emph{always} zero when completion is attempted, and can only be changed within an application-specific completion function. If it is set to a non-zero value by such a function, directory names have a slash appended and Readline attempts to quote completed filenames if they contain any characters in @code{rl_filename_quote_characters} and @code{rl_filename_quoting_desired} is set to a non-zero value. @end deftypevar @deftypevar 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 @code{rl_filename_quote_chars}. This is @emph{always} non-zero when completion is attempted, and can only be changed within an application-specific completion function. The quoting is effected via a call to the function pointed to by @code{rl_filename_quoting_function}. @end deftypevar @deftypevar int rl_attempted_completion_over If an application-specific completion function assigned to @code{rl_attempted_completion_function} sets this variable to a non-zero value, Readline will not perform its default filename completion even if the application's completion function returns no matches. It should be set only by an application's completion function. @end deftypevar @deftypevar int rl_sort_completion_matches If an application sets this variable to 0, Readline will not sort the list of completions (which implies that it cannot remove any duplicate completions). The default value is 1, which means that Readline will sort the completions and, depending on the value of @code{rl_ignore_completion_duplicates}, will attempt to remove duplicate matches. @end deftypevar @deftypevar int rl_completion_type Set to a character describing the type of completion Readline is currently attempting; see the description of @code{rl_complete_internal()} (@pxref{Completion Functions}) for the list of characters. This is set to the appropriate value before any application-specific completion function is called, allowing such functions to present the same interface as @code{rl_complete()}. @end deftypevar @deftypevar int rl_completion_invoking_key Set to the final character in the key sequence that invoked one of the completion functions that call @code{rl_complete_internal()}. This is set to the appropriate value before any application-specific completion function is called. @end deftypevar @deftypevar int rl_inhibit_completion If this variable is non-zero, completion is inhibited. The completion character will be inserted as any other bound to @code{self-insert}. @end deftypevar @node A Short Completion Example @subsection A Short Completion Example Here is a small application demonstrating the use of the GNU Readline library. It is called @code{fileman}, and the source code resides in @file{examples/fileman.c}. This sample application provides completion of command names, line editing features, and access to the history list. @page @smallexample /* 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #ifdef HAVE_SYS_FILE_H # include #endif #include #ifdef HAVE_UNISTD_H # include #endif #include #include #include #if defined (HAVE_STRING_H) # include #else /* !HAVE_STRING_H */ # include #endif /* !HAVE_STRING_H */ #ifdef HAVE_STDLIB_H # include #endif #include #include #include extern char *xmalloc PARAMS((size_t)); /* The names of functions that actually do the manipulation. */ int com_list PARAMS((char *)); int com_view PARAMS((char *)); int com_rename PARAMS((char *)); int com_stat PARAMS((char *)); int com_pwd PARAMS((char *)); int com_delete PARAMS((char *)); int com_help PARAMS((char *)); int com_cd PARAMS((char *)); int com_quit PARAMS((char *)); /* A structure which contains information on the commands this program can understand. */ typedef struct @{ char *name; /* User printable name of the function. */ rl_icpfunc_t *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, (rl_icpfunc_t *)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) char *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 PARAMS((const char *, int)); char **fileman_completion PARAMS((const char *, int, int)); /* 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 = 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) const 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 = rl_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) const 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; #if defined (__MSDOS__) /* more.com doesn't grok slashes in pathnames */ sprintf (syscom, "less %s", arg); #else sprintf (syscom, "more %s", arg); #endif 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 = getcwd (dir, sizeof(dir) - 1); 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); @} @end smallexample readline-8.0/doc/rluserman.dvi000664 000436 000000 00000334164 13406221742 016517 0ustar00chetwheel000000 000000 ÷ƒ’À;è TeX output 2018.12.18:1144‹ÿÿÿÿŸòŽ ƒ33 þšà‘GóKÂÖN ¼j cmbx12ëKGNU–ÆqReadline“Library“User“In‘ÿZterfaceŽŽ‘GŸ 0‰±ž¸Ÿ šª’Ï€Úó6Kñ`y ó3 cmr10áEdition–¦f8.0,“for“ó7ßê  b> ó3 cmmi10é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘š7á1ŽŽ¤ 33‘!G1.2‘ ó5Readline‘¦fIn²!teraction‘Rd‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Ô«á1ŽŽ¡‘0G1.2.1‘ ó5Readline–¦fBare“Essen²!tials‘.¶‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘°ýá1ŽŽ¡‘0G1.2.2‘ ó5Readline›¦fMo•²!v“emen“t˜Commands‘B"‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Äiá2ŽŽ¡‘0G1.2.3‘ ó5Readline–¦fKilling“Commands1ž‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘³æá2ŽŽ¡‘0G1.2.4‘ ó5Readline‘¦fArgumen²!ts‘³‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘5cá3ŽŽ¡‘0G1.2.5‘ ó5Searc²!hing–¦ffor“Commands“in“the“History‘i‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ëKá3ŽŽ¡‘!G1.3‘ ó5Readline–¦fInit“File‘§‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘)aá4ŽŽ¡‘0G1.3.1‘ ó5Readline–¦fInit“File“Syn²!tax‘ ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¢]á4ŽŽ¡‘0G1.3.2‘ ó5Conditional–¦fInit“Constructs‘ü‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘~Xá12ŽŽ¡‘0G1.3.3‘ ó5Sample–¦fInit“File‘¾Î‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Aá13ŽŽ¡‘!G1.4‘ ó5Bindable–¦fReadline“Commands‘¯Â‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘2 á16ŽŽ¡‘0G1.4.1‘ ó5Commands–¦fF‘ÿeor“Mo²!ving‘>H‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Àá16ŽŽ¡‘0G1.4.2‘ ó5Commands–¦fF‘ÿeor“Manipulating“The“History‘iò‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ì9á17ŽŽ¡‘0G1.4.3‘ ó5Commands–¦fF›ÿeor“Changing“T˜ext{’‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ýÚá18ŽŽ¡‘0G1.4.4‘ ó5Killing–¦fAnd“Y‘ÿeanking‘šÇ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘á19ŽŽ¡‘0G1.4.5‘ ó5SpMÞecifying–¦fNumeric“Argumen²!ts‘^V‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘àá20ŽŽ¡‘0G1.4.6‘ ó5Letting–¦fReadline“T²!ypMÞe“F›ÿeor“Y˜ou‘ºÒ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘=á21ŽŽ¡‘0G1.4.7‘ ó5KeybMÞoard‘¦fMacrosdI‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘æ‘á21ŽŽ¡‘0G1.4.8‘ ó5Some–¦fMiscellaneous“Commands‘ø&‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘zná22ŽŽ¡‘!G1.5‘ ó5Readline–¦fvi“MoMÞdeE‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘È á23ŽŽŸ33‘Gë]Apps3endix‘ffAŽ‘wL‹GNU‘œÈF‘þ¦free–œûDos3cumenŒÌtation“License‘È“‘32ëe:Ž‘Q ‘32:Ž‘ @ë]24ŽŽŽŒ‹þŸò’¾6eá1ŽŽŽ ƒ33 ý ÌÍ‘GëT1‘ ¸QCommand–z³Line“EditingŽŽŸn‘GáThis–¦fcš²!hapter“describMÞes“the“basic“features“of“the“ó<Œ-ø ó3 cmcsc10çgnu“ácommand“line“editing“in˜terface.ŽŸ¸ä‘Gë]1.1‘™InŒÌtros3duction–f@to“Line“EditingŽŽŸ33‘GáThe–¦ffolloš²!wing“paragraphs“describMÞe“the“notation“used“to“represen˜t“k˜eystrok˜es.ޤ¥‘!GThe–Yútext›Yùó=ßêset›5?to“`âoná'˜(the“default),‘XôReadline“attempts˜to“bind˜the“con²!trolŽ¡’…³-cš²!haracters–{wtreated‘{vspMÞecially“b˜y“the‘{vk˜ernel's“terminal“driv˜er‘{vto“theirŽ¡’…³-Readline‘¦fequiv‘ÿdDalen²!ts.ަ‘Kâ:âblink-matching-parenŽ¡’…³-áIf–Yåset›Yäto“`âoná',‘†ÄReadline˜attempts“to˜brie y“mo•²!v“e˜the–Yåcursor˜to“anŽ¡’…³-opMÞening–Âparenš²!thesis‘Áwhen“a“closing“paren˜thesis‘Áis“inserted.‘òðTheŽ¡’…³-default–¦fis“`âoffá'.ŽŸ‘Kâ:âcolored-completion-prefixŽ¡’…³-áIf–‡set“to“`âoná',›Wwhen‘‡listing“completions,˜Readline“displa²!ys“the“com-Ž¡’…³-mon– ¤pre x› £of“the˜set“of˜pMÞossible“completions˜using“a˜di eren²!t“color.Ž¡’…³-The–Í color“de nitions“are“tak²!en“from“the“v‘ÿdDalue“of“the“âLS_COLORSŽ¡’…³-áen•²!vironmen“t–¦fv‘ÿdDariable.‘ÝÝThe“default“is“`âoffá'.ަ‘Kâ:âcolored-statsŽ¡’…³-áIf–0*set›0+to“`âoná',‘GÐReadline“displa²!ys˜pMÞossible“completions˜using“di eren²!tŽ¡’…³-colors–´•to›´”indicate“their˜ le“t²!ypMÞe.‘iThe˜color“de nitions˜are“tak²!enŽ¡’…³-from–õ;the›õKi“ákš²!ey“sequence“b˜y“stripping“the“eigh˜th“bit“and“pre xingŽ¡’…³-an–íÎâESC“ác•²!haracter,‘¹con“v“erting–íÎthem“to‘íÍa“meta-pre xed“k²!ey“sequence.Ž¡’…³-The–N½default›N¾v‘ÿdDalue“is“`âoná',‘`Fbut“will“bMÞe˜set“to“`âoffá'˜if“the“loMÞcale˜is“oneŽ¡’…³-that–¦fconš²!tains“eigh˜t-bit“c˜haracters.ަ‘Kâ:âdisable-completionŽ¡’…³-áIf–gset“to–g`âOná',‘—?Readline“will–ginhibit“w²!ord“completion.‘èCompletionŽ¡’…³-cš²!haracters–!Ÿwill“bMÞe‘!žinserted“in˜to“the“line“as“if‘!žthey“had“bšMÞeen“mapp˜edŽ¡’…³-to–¦fâself-insertá.‘ÝÝThe“default“is“`âoffá'.ަ‘Kâ:âecho-control-charactersŽ¡’…³-áWhen–¡îset›¡ïto“`âoná',‘¢Óon˜opMÞerating“systems˜that“indicate˜they“suppMÞortŽ¡’…³-it,‘Òýreadline‘Êecš²!hoMÞes–Êa“c˜haracter›ÊcorrespMÞonding“to“a˜signal“generatedŽ¡’…³-from–¦fthe“k²!eybMÞoard.‘ÝÝThe“default“is“`âoná'.ަ‘Kâ:âediting-modeŽ¡’…³-áThe–rÖâediting-mode“áv‘ÿdDariable“conš²!trols“whic˜h‘r×default“set“of“k˜ey“bind-Ž¡’…³-ings›?is–>used.‘§&By“default,‘#Readline˜starts˜up“in˜Emacs“editing˜moMÞde,Ž¡’…³-where›~«the‘~ªk•²!eystrok“es˜are–~ªmost˜similar˜to“Emacs.‘ПThis“v‘ÿdDariable˜canŽ¡’…³-bMÞe–¦fset“to“either“`âemacsá'“or“`âviá'.ŽŸÛn‘Kâ:âemacs-mode-stringŽ¡’…³-áIf– ·the› ¶åsho²!w-moMÞde-in-prompt‘I·áv‘ÿdDariable“is˜enabled,‘&Kthis“string˜is“dis-Ž¡’…³-pla•²!y“ed–ÃRimmediately›ÃQbMÞefore“the˜last“line“of˜the“primary˜prompt“whenŽ¡’…³-emacs–™Tediting›™UmoMÞde“is˜activ²!e.‘„,The˜v‘ÿdDalue“is“expanded˜lik²!e“a˜k²!ey“bind-Ž¡’…³-ing,‘,êso–Šthe›‹standard“set˜of“meta-˜and“con²!trol˜pre xes“and˜bac²!kslashŽ¡’…³-escapšMÞe–Þ?sequences“is“a²!v‘ÿdDailable.‘›&Use“the“`â\1á'“and‘Þ@`â\2á'“escap˜es“to“b˜eginŽ¡’…³-and–„end›„sequences“of˜non-prinš²!ting“c˜haracters,‘»‰whic˜h“can‘„bMÞe“usedŽ¡’…³-to–zÕem²!bMÞed›zÔa“terminal˜conš²!trol“sequence“in˜to›zÔthe“moMÞde˜string.‘[)TheŽ¡’…³-default–¦fis“`â@á'.ަ‘Kâ:âenable-bracketed-pasteŽ¡’…³-áWhen–ò€set“to“`âOná',‘{Readline“will“con gure“the‘òterminal“in“a“w•²!a“y‘ò€thatŽ¡’…³-will–g"enable“it“to“insert“eacš²!h“paste‘g#in˜to“the“editing“bu er“as“a“singleŽ¡’…³-string–ëàof“cš²!haracters,‘ý>instead“of“treating“eac˜h‘ëßc˜haracter“as“if“it“hadŽ¡’…³-bšMÞeen–ýread‘ýfrom“the“k²!eyb˜oard.‘á¿This“can“prev•²!en“t‘ýpasted‘ýc“haractersŽ¡’…³-from–¦fbMÞeing“in²!terpreted“as“editing“commands.‘ÝÝThe“default“is“`âoffá'.ŽŽŒ‹kSŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’MH7ŽŽŽ ƒ33 ý ÌÍ‘Kâ:âenable-keypadޤ 33’…³-áWhen–Ìïset“to“`âoná',‘ømReadline“will“try‘Ìîto“enable“the“application“k²!eypadŽ¡’…³-when–1Ûit›1Üis“called.‘·Some“systems“need˜this“to˜enable“the˜arroš²!w“k˜eys.Ž¡’…³-The–¦fdefault“is“`âoffá'.Ž©¾-‘Kâ:âenable-meta-keyŽ¡’…³-áWhen–ÇJset›ÇIto“`âoná',‘‚Readline˜will“try“to˜enable“an²!y˜meta“moMÞdi erŽ¡’…³-k²!ey–Ÿthe› terminal“claims“to˜suppMÞort“when“it“is˜called.‘û‰On“man²!yŽ¡’…³-terminals,‘^=the–9ymeta“kš²!ey“is“used“to“send“eigh˜t-bit“c˜haracters.‘—TheŽ¡’…³-default–¦fis“`âoná'.ަ‘Kâ:âexpand-tildeŽ¡’…³-áIf–Pset“to›P`âoná',‘a[tilde“expansion“is“pMÞerformed˜when“Readline“attemptsŽ¡’…³-w²!ord–¦fcompletion.‘ÝÝThe“default“is“`âoffá'.ަ‘Kâ:âhistory-preserve-pointŽ¡’…³-áIf–œset“to›`âoná',‘Zéthe“history“coMÞde“attempts“to“place˜the“pMÞoin²!t“(theŽ¡’…³-curren²!t–;kcursor›;jpMÞosition)“at˜the“same“loMÞcation˜on“eac²!h˜history“lineŽ¡’…³-retriev²!ed–^Éwith“âprevious-history“áor‘^Êânext-historyá.‘The“defaultŽ¡’…³-is‘¦f`âoffá'.ŽŸ¾,‘Kâ:âhistory-sizeŽ¡’…³-áSet–°ÿthe“maxim•²!um‘°þn“um“bMÞer–°ÿof“history“enš²!tries“sa˜v˜ed‘°þin“the“historyŽ¡’…³-list.‘óIf–mset“to“zero,‘(oanš²!y“existing“history“en˜tries“are‘ndeleted“and“noŽ¡’…³-new–Ïqenš²!tries“are–Ïpsa˜v˜ed.‘XþIf“set–Ïqto“a“v‘ÿdDalue‘Ïpless“than“zero,‘Ù³the“n˜um˜bMÞerŽ¡’…³-of–ª»history›ª¼en²!tries“is˜not“limited.‘êÝBy˜default,‘«Ñthe“n•²!um“bMÞer˜of‘ª»historyŽ¡’…³-en²!tries–ôbis“not›ôalimited.‘ÇÑIf“an˜attempt“is“made“to˜set“åhistory-size‘‘iátoŽ¡’…³-a–ÿònon-nš²!umeric“v‘ÿdDalue,‘Vthe“maxim˜um“n˜um˜bMÞer“of‘ÿóhistory“en˜tries“willŽ¡’…³-bMÞe–¦fset“to“500.ަ‘Kâ:âhorizontal-scroll-modeŽ¡’…³-áThis–NËv‘ÿdDariable›NÌcan“bMÞe“set“to˜either“`âoná'“or“`âoffá'.‘× Setting“it˜to“`âoná'Ž¡’…³-means–$jthat“the“text“of“the‘$ilines“bMÞeing“edited“will“scroll“horizon²!tallyŽ¡’…³-on–ÎÁa›ÎÂsingle“screen“line˜when“they“are“longer˜than“the“width˜of“theŽ¡’…³-screen,›:Åinstead–Ýof“wrapping‘Þon²!to“a“new“screen“line.‘±By“default,˜thisŽ¡’…³-v‘ÿdDariable–¦fis“set“to“`âoffá'.ަ‘Kâ:âinput-metaŽ¡’…³-áIf–¾Ìset›¾Ëto“`âoná',‘ÄåReadline˜will“enable˜eigh²!t-bit“input˜(it“will˜not“clearŽ¡’…³-the–Ã"eighš²!th“bit“in‘Ã!the“c˜haracters“it“reads),‘ Pregardless“of“what“theŽ¡’…³-terminal–C-claims“it“can“suppMÞort.‘ ´3The“default“v‘ÿdDalue“is“`âoffá',‘ª^butŽ¡’…³-Readline–Û‚will“set“it“to“`âoná'‘Ûif“the“loMÞcale“conš²!tains“eigh˜t-bit“c˜haracters.Ž¡’…³-The–¦fname“âmeta-flag“áis“a“synon²!ym“for“this“v‘ÿdDariable.ަ‘Kâ:âisearch-terminatorsŽ¡’…³-áThe–5Ñstring›5Òof“c²!haracters˜that“should“terminate˜an“incremen²!talŽ¡’…³-searcš²!h–ú|without“subsequen˜tly“executing“the“c˜haracter“as“a“commandŽ¡’…³-(see–Z±Section“1.2.5“[Searc²!hing],‘ÇÃpage“3).‘ ú¿If“this“v‘ÿdDariable“has“notŽ¡’…³-bMÞeen–Bggivš²!en“a“v‘ÿdDalue,‘igthe“c˜haracters‘BfâESC“áand“èC-J“áwill“terminate“anŽ¡’…³-incremen•²!tal‘¦fsearc“h.ŽŽŒ‹y Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’MH8ŽŽŽ ƒ33 ý ÌÍ‘Kâ:âkeymap‘R÷áSets–¿TReadline's“idea“of“the‘¿Ucurrenš²!t“k˜eymap“for“k˜ey“bindingޤ 33’…³-commands.‘‚¨Built-in–ÝTâkeymap›ÝUánames“are˜âemacsá,‘+âemacs-standardá,Ž¡’…³-âemacs-metaá,– 0âemacs-ctlxá,“âviá,‘ 0âvi-moveá,“âvi-commandá,“andŽ¡’…³-âvi-insertá.‘ 2âvi–aØáis“equiv‘ÿdDalen²!t“to“âvi-command“á(âvi-move‘a×áis“also“aŽ¡’…³-synon•²!ym);‘úaâemacs›‰áis‘‰ equiv‘ÿdDalen“t˜to‘‰ âemacs-standardá.‘…ÔApplicationsŽ¡’…³-ma²!y–ºadd›ºadditional“names.‘èThe“default“v‘ÿdDalue˜is“âemacsá.‘èThe“v‘ÿdDalueŽ¡’…³-of–¦fthe“âediting-mode“áv‘ÿdDariable“also“a ects“the“default“k²!eymap.Ž©Ûo‘Kâ:âkeyseq-timeoutŽ¡’…³-áSpMÞeci es– „the“duration“Readline“will“wš²!ait‘ …for“a“c˜haracter“when“read-Ž¡’…³-ing–—Ían‘—Ìamš²!biguous“k˜ey“sequence›—Ì(one“that˜can“form“a˜complete“k²!eyŽ¡’…³-sequence–ý-using›ý.the“input˜read“so“far,‘ßor˜can“tak²!e˜additional“inputŽ¡’…³-to–óKcomplete“a“longer“kš²!ey“sequence).‘ÄŒIf“no“input“is“receiv˜ed“withinŽ¡’…³-the–*átimeout,‘‹ÿReadline›*àwill“use“the“shorter“but˜complete“k²!ey“se-Ž¡’…³-quence.‘«éReadline›‹uses–Šthis“v‘ÿdDalue“to˜determine“whether“or˜not“inputŽ¡’…³-is–­«a²!v‘ÿdDailable›­ªon“the˜curren²!t“input˜source“(ârl_instream˜áb²!y“default).Ž¡’…³-The– ˜v›ÿdDalue“is“spMÞeci ed“in“milliseconds,‘(ôso“a“v˜alue“of“1000“means“thatŽ¡’…³-Readline–®Äwill›®Ãw²!ait“one˜second“for“additional˜input.‘‹RIf“this˜v‘ÿdDariable“isŽ¡’…³-set–Yàto›Yßa“v‘ÿdDalue˜less“than˜or“equal“to˜zero,‘i.or˜to“a˜non-n²!umeric“v‘ÿdDalue,Ž¡’…³-Readline–ƒûwill‘ƒúwš²!ait“un˜til“another“k˜ey›ƒúis“pressed“to“decide˜whicš²!h“k˜eyŽ¡’…³-sequence–¦fto“complete.‘ÝÝThe“default“v‘ÿdDalue“is“â500á.ŽŸÛn‘Kâ:âmark-directoriesŽ¡’…³-áIf––¿set“to›–¾`âoná',‘ÒÕcompleted“directory“names“ha•²!v“e˜a––¿slash“appMÞended.Ž¡’…³-The–¦fdefault“is“`âoná'.ަ‘Kâ:âmark-modified-linesŽ¡’…³-áThis–N”v‘ÿdDariable,‘xŸwhen“set“to“`âoná',‘x causes“Readline“to“displa²!y“an“as-Ž¡’…³-terisk– š(`â*á')› ™at“the“start˜of“history˜lines“whicš²!h“ha˜v˜e‘ ™bšMÞeen“mo˜di ed.Ž¡’…³-This–¦fv‘ÿdDariable“is“`âoffá'“b²!y“default.ަ‘Kâ:âmark-symlinked-directoriesŽ¡’…³-áIf–$Ôset›$Óto“`âoná',‘mcompleted“names“whic²!h˜are“sym²!bMÞolic˜links“toŽ¡’…³-directories›\Ëha•²!v“e˜a˜slash˜appMÞended‘\Ì(sub‘›»ject˜to˜the˜v‘ÿdDalue˜ofŽ¡’…³-âmark-directoriesá).‘ÝÝThe–¦fdefault“is“`âoffá'.ަ‘Kâ:âmatch-hidden-filesŽ¡’…³-áThis–«sv‘ÿdDariable,›Ý£when“set“to“`âoná',˜causes“Readline“to‘«rmatc²!h“ les“whoseŽ¡’…³-names–MÍbšMÞegin“with“a“`â.á'“(hidden“ les)“when“p˜erforming“ lenameŽ¡’…³-completion.‘ÎþIf–öÆset“to–öÇ`âoffá',‘JÝthe“leading–öÆ`â.á'“mš²!ust“bMÞe‘öÇsupplied“b˜yŽ¡’…³-the–Luser›Min“the“ lename“to˜bMÞe“completed.‘9This“v‘ÿdDariable“is˜`âoná'“b²!yŽ¡’…³-default.ŽŸÛn‘Kâ:âmenu-complete-display-prefixŽ¡’…³-áIf–ßset“to‘Þ`âoná',‘ýmenš²!u“completion“displa˜ys“the“common‘Þpre x“of“theŽ¡’…³-list–ƒXof›ƒYpMÞossible“completions˜(whicš²!h“ma˜y‘ƒYbMÞe“empt˜y)‘ƒYbMÞefore“cyclingŽ¡’…³-through–¦fthe“list.‘ÝÝThe“default“is“`âoffá'.ަ‘Kâ:âoutput-metaŽ¡’…³-áIf–Aset“to“`âoná',‘gªReadline“will“displaš²!y“c˜haracters“with“the“eigh˜th“bitŽ¡’…³-set–`!directly“rather“than“as“a‘`"meta-pre xed“escapMÞe“sequence.‘ TheŽŽŒ‹ …Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’MH9ŽŽŽ ƒ33 ý ÌÍ’…³-default–kis“`âoffá',‘0Ðbut“Readline“will“set“it“to‘j`âoná'“if“the“loMÞcale“con²!tainsޤ 33’…³-eigh•²!t-bit‘¦fc“haracters.Ž©¾-‘Kâ:âpage-completionsŽ¡’…³-áIf–ôset“to‘ó`âoná',‘,×Readline“uses“an“inš²!ternal“âmoreá-lik˜e‘ópager“to“displa˜yŽ¡’…³-a–ã¹screenful“of“pMÞossible‘ã¸completions“at“a“time.‘•ÕThis“v‘ÿdDariable“is“`âoná'Ž¡’…³-b²!y‘¦fdefault.ަ‘Kâ:âprint-completions-horizontallyŽ¡’…³-áIf–àset›àto“`âoná',‘»Readline˜will“displa²!y“completions“with˜matc²!hes“sortedŽ¡’…³-horizonš²!tally–8Ôin“alphabMÞetical“order,‘orather“than“do˜wn“the“screen.Ž¡’…³-The–¦fdefault“is“`âoffá'.ަ‘Kâ:ârevert-all-at-newlineŽ¡’…³-áIf–Œêset“to“`âoná',‘’Readline“will“undo“all‘Œëc²!hanges“to“history“lines“bMÞeforeŽ¡’…³-returning–qXwhen›qYâaccept-line“áis˜executed.‘Ì-By˜default,‘{õhistory“linesŽ¡’…³-ma²!y–¦bšMÞe“mo˜di ed“and“retain“individual‘¥undo“lists“across“calls“toŽ¡’…³-âreadlineá.‘ÝÝThe–¦fdefault“is“`âoffá'.ŽŸ¾,‘Kâ:âshow-all-if-ambiguousŽ¡’…³-áThis–™]alters“the“default“bMÞeha²!vior“of“the‘™\completion“functions.‘Ù…If“setŽ¡’…³-to–L`âoná',‘^.wš²!ords“whic˜h‘L ha˜v˜e“more“than›L one“pMÞossible˜completion“causeŽ¡’…³-the–­matc²!hes“to“bšMÞe“listed“immediately‘­instead“of“ringing“the“b˜ell.Ž¡’…³-The–¦fdefault“v‘ÿdDalue“is“`âoffá'.ަ‘Kâ:âshow-all-if-unmodifiedŽ¡’…³-áThis–¤‰alters“the›¤Šdefault“bMÞeha²!vior“of“the“completion˜functions“in“aŽ¡’…³-fashion–€similar“to“åsho•²!w-all-if-am“biguousá.‘«If–€set“to“`âoná',‘-®wš²!ords“whic˜hŽ¡’…³-ha•²!v“e–²Ömore“than“one“pšMÞossible‘²×completion“without“an²!y“p˜ossible“par-Ž¡’…³-tial–Ãcompletion›Ä(the“pMÞossible˜completions“don't“share˜a“commonŽ¡’…³-pre x)–¢cause›¢the“matc²!hes“to˜bMÞe“listed“immediately“instead˜of“ring-Ž¡’…³-ing–¦fthe“bMÞell.‘ÝÝThe“default“v‘ÿdDalue“is“`âoffá'.ަ‘Kâ:âshow-mode-in-promptŽ¡’…³-áIf–ê set›ê to“`âoná',‘¸add˜a“string“to˜the“bMÞeginning“of“the˜prompt“indicatingŽ¡’…³-the–ûûediting“moMÞde:‘‰emacs,›`vi“command,˜or“vi“insertion.‘Þ›The“moMÞdeŽ¡’…³-strings–rare‘ruser-settable“(e.g.,‘å™åemacs-moMÞde-string‘ðá).‘ BYThe“defaultŽ¡’…³-v‘ÿdDalue–¦fis“`âoffá'.ަ‘Kâ:âskip-completed-textŽ¡’…³-áIf–ñjset“to“`âoná',‘+this‘ñialters“the“default“completion“bMÞeha²!vior“when“in-Ž¡’…³-serting–}=a‘}“output"ŽŸ€’…³-áIn– \Àthe‘ \¿example“abšMÞo•²!v“e,‘ JSèC-u– \Àáis“b˜ound“to‘ \¿the“functionŽ¡’…³-âuniversal-argumentá,‘|èM-DEL› &áis– %bMÞound“to˜the“functionŽ¡’…³-âbackward-kill-wordá,‘ šand–iLèC-o›iKáis“bMÞound˜to“run˜the“macroŽ¡’…³-expressed–~Jon“the›~Irigh²!t“hand“side“(that“is,‘ôBto“insert˜the“text“`â>Ž¡’…³-outputá'–¦fin²!to“the“line).ŽŽŒ‹ ž¼Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®11ŽŽŽ ƒ33 ý ÌÍ’…³-A‘nbn•²!um“bšMÞer–o[of“sym²!b˜olic“c²!haracter“names“are“recognized“whileޤ 33’…³-proMÞcessing–Ê3this“kš²!ey“binding“syn˜tax:‘%wåDELá,–&åESCá,“åESCAPEá,“åLFDá,Ž¡’…³-åNEWLINEá,–¦fåRETá,“åRETURNá,“åRš²!UBOUTá,“åSP‘ÿeA˜CEá,“åSPCá,“and“åT‘ÿeABá.ŽŸ#בKâ:â"åk²!eyseq@æâ"á:‘ÝÝåfunction-name‘Cmáor‘¦fåmacroŽŽ¡’…³-k•²!eyseq‘ú«ádi ers‘¹Äfrom›¹Ååk“eyname‘VËáabMÞo“v“e˜in˜that–¹Ästrings˜denoting“an˜en-Ž¡’…³-tire– hkš²!ey“sequence“can“b•MÞe‘ gsp“eci ed,‘%éb˜y‘ gplacing– hthe“k˜ey“sequence“inŽ¡’…³-double–‰ôquotes.‘ÔbSome“çgnu“áEmacs“stš²!yle“k˜ey“escapšMÞes“can“b˜e“used,‘¤asŽ¡’…³-in–Ãthe›Âfollo²!wing“example,‘(Ùbut˜the“spMÞecial˜c²!haracter“names˜are“notŽ¡’…³-recognized.Ž©+…’¢›‚â"\C-u":‘¿ªuniversal-argumentŽ¡’¢›‚"\C-x\C-r":‘¿ªre-read-init-fileŽ¡’¢›‚"\e[11~":–¿ª"Function“Key“1"ަ’…³-áIn–Â×the“abšMÞo•²!v“e–Â×example,‘ÉòèC-u“áis“again‘ÂØb˜ound“to“the“functionŽ¡’…³-âuniversal-argument–?ßá(just“as“it“w²!as“in“the“ rst‘?Þexample),‘¦=`èC-xŽ¡’…³-C-rá'–¤Öis“bMÞound“to“the“function“âre-read-init-fileá,‘¥&and“`âESC–¦f[“1“1Ž¡’…³-~á'–¦fis“bMÞound“to“insert“the“text“`âFunction“Key“1á'.Ž©#Ø‘Kâ:The–’Äfolloš²!wing“çgnu“áEmacs“st˜yle“escapMÞe‘’Åsequences“are“a˜v‘ÿdDailable“when“spMÞecifyingŽ¡‘Kâ:k²!ey‘¦fsequences:ޤ#בKâ:è\C-‘(‘õácon²!trol‘¦fpre xŽ¡‘Kâ:è\M-‘(‘õámeta‘¦fpre xŽ¡‘Kâ:è\e‘.QŸáan–¦fescapMÞe“c²!haracterŽ¡‘Kâ:è\\‘.QŸábac²!kslashަ‘Kâ:è\â"‘.QŸ"á,–¦fa“double“quotation“markŽ¡‘Kâ:è\'‘.QŸâ'á,–¦fa“single“quote“or“apMÞostropheŽ¡‘Kâ:In–Qaddition“to›Qthe“çgnu“áEmacs“st²!yle˜escapMÞe“sequences,‘b)a“second˜set“of“bac²!kslashŽŸ 33‘Kâ:escapMÞes–¦fis“a²!v‘ÿdDailable:Ž¡‘Kâ:â\a‘.QŸáalert‘¦f(bMÞell)Ž¡‘Kâ:â\b‘.QŸábac²!kspaceަ‘Kâ:â\d‘.QŸádeleteŽ¡‘Kâ:â\f‘.QŸáform‘¦ffeedŽ¡‘Kâ:â\n‘.QŸánewlineŽ¡‘Kâ:â\r‘.QŸácarriage‘¦freturnŽ¡‘Kâ:â\t‘.QŸáhorizon²!tal‘¦ftabަ‘Kâ:â\v‘.QŸáv²!ertical‘¦ftabŽ¡‘Kâ:â\ènnn‘"ÒKáthe–$«eighš²!t-bit“c˜haracter‘$ªwhose“v›ÿdDalue“is“the“oMÞctal“v˜alue‘$ªånnn“á(one“toŽ© 33’…³-three‘¦fdigits)Ž¡‘Kâ:â\xèHH‘"ÒKáthe›˜eigh•²!t-bit‘˜c“haracter˜whose˜v‘ÿdDalue–˜is˜the˜hexadecimal“v‘ÿdDalue˜åHHަ’…³-á(one–¦for“t•²!w“o–¦fhex“digits)ŽŽŒ‹ ¬xŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®12ŽŽŽ ƒ33 ý ÌÍ‘Kâ:When–}Ëenš²!tering“the“text“of“a“macro,‘³£single“or“double“quotes“m˜ust“bMÞe“used“toޤ 33‘Kâ:indicate–“Ša›“‰macro“de nition.‘‚?Unquoted˜text“is“assumed“to˜bMÞe“a“function˜name.‘‚?InŽ¡‘Kâ:the‘Ämacro›Åb•MÞo“dy‘ÿe,‘Ç~the˜bac²!kslash‘Äescap“es˜describ“ed‘Äab“o•²!v“e˜are‘Äexpanded.‘€ýBac“kslashŽ¡‘Kâ:will–Íquote‘Íanš²!y“other“c˜haracter›Íin“the“macro˜text,‘Éincluding“`â"á'˜and“`â'á'.‘RF‘ÿeorŽ¡‘Kâ:example,‘4 the–folloš²!wing‘Žbinding“will“mak˜e›Ž`èC-x‘¦fâ\á'“insert“a˜single“`â\á'“in²!to˜the“line:ŽŸLÍ‘hÊâ"\C-x\\":‘¿ª"\\"ŽŸ34‘Gëg1.3.2‘d(Conditional–íMInit“ConstructsŽŽŸ³3‘GáReadline–iimplemenš²!ts“a“facilit˜y“similar“in‘ispirit“to“the“conditional“compilation“features“ofŽ¡‘Gthe–¯JC‘¯HpreproMÞcessor‘¯Kwhicš²!h“allo˜ws‘¯Kk˜ey“bindings“and›¯Kv‘ÿdDariable“settings“to˜bšMÞe“p˜erformed‘¯Kas“theŽ¡‘Gresult–¦fof“tests.‘ÝÝThere“are“four“parser“directiv²!es“used.ŽŸ€‘Gâ$if‘(‘õáThe–ÃNâ$if“áconstruct“allo²!ws“bindings“to“bšMÞe‘ÃOmade“based“on“the“editing“mo˜de,‘ʈtheŽ¡‘Kâ:terminal–[êbMÞeing›[éused,‘‰Jor“the“application˜using“Readline.‘þhThe˜text“of˜the“test,Ž¡‘Kâ:after–‹\an²!y›‹[comparison“opMÞerator,‘Äextends˜to“the“end˜of“the˜line;‘”_unless“otherwiseŽ¡‘Kâ:noted,–¦fno“c²!haracters“are“required“to“isolate“it.Ž©fg‘Kâ:âmode‘"ÒKáThe–žÞâmode=›žßáform“of“the“â$if“ádirectiv²!e˜is“used“to“test˜whether“Read-Ž¡’…³-line–3½is“in‘3¼âemacs“áor“âvi“ámošMÞde.‘ …áThis“ma²!y“b˜e‘3¼used“in“conjunctionŽ¡’…³-with–º the“`âset‘¦fkeymapá'“command,–ÿfor‘º!instance,“to–º set“bindings“inŽ¡’…³-the–ÌÇâemacs-standard“áand›ÌÆâemacs-ctlx“ák²!eymaps“only“if˜Readline“isŽ¡’…³-starting–¦fout“in“âemacs“ámoMÞde.ަ‘Kâ:âterm‘"ÒKáThe–<âterm=“áform›<ma²!y“bMÞe“used“to“include˜terminal-spMÞeci c“k²!ey“bind-Ž¡’…³-ings,‘ƒpMÞerhaps–Vîto“bind›Víthe“k²!ey˜sequences“output“b²!y˜the“terminal'sŽ¡’…³-function–Þ€kš²!eys.‘›;The“w˜ord“on‘Þthe“righ˜t“side“of“the“`â=á'‘Þis“tested“againstŽ¡’…³-bšMÞoth–šPthe“full“name“of“the‘šOterminal“and“the“p˜ortion“of“the“terminalŽ¡’…³-name–×bMÞefore›Öthe“ rst˜`â-á'.‘ÿ/This“allo²!ws˜âsun“áto˜matc²!h“bMÞoth˜âsun“áandŽ¡’…³-âsun-cmdá,–¦ffor“instance.ŽŸfh‘Kâ:âversion‘“MáThe–^@âversion›^Aátest“ma²!y˜bMÞe“used˜to“pMÞerform˜comparisons“againstŽ¡’…³-spMÞeci c–6Readline“vš²!ersions.‘îMThe“âversion“áexpands“to“the“curren˜tŽ¡’…³-Readline–ÞÊv²!ersion.‘›TThe“set›ÞËof“comparison“opMÞerators“includes˜`â=á'“(andŽ¡’…³-`â==á'),–âÇ`â!=á',›âÈ`â<=á',“`â>=á',˜`â<á',“and–Ö´`â>á'.‘nÇThe“vš²!ersion“n˜um˜bMÞer“supplied“onŽ¡’…³-the–ƒrigh²!t›‚side“of“the“opMÞerator˜consists“of“a“ma‘›»jor˜vš²!ersion“n˜um˜bMÞer,Ž¡’…³-an–uµoptional›u´decimal“pMÞoin²!t,‘éˆand˜an“optional“minor˜v²!ersion“(e.g.,Ž¡’…³-`â7.1á').‘ÁâIf–Ruthe›Rtminor“v²!ersion“is˜omitted,‘c?it˜is“assumed“to˜bMÞe“`â0á'.‘ÁâTheŽ¡’…³-opšMÞerator–ìma²!y“b˜e“separated“from“the‘ëstring“âversion“áand“from“theŽ¡’…³-v•²!ersion›§¯n“um“bMÞer‘§°argumen“t˜b“y˜whitespace.‘á¹The‘§°follo“wing˜exampleŽ¡’…³-sets–¦fa“v‘ÿdDariable“if“the“Readline“vš²!ersion“bMÞeing“used“is“7.0“or“new˜er:ŽŸLÍ’¢›‚â$if–¿ªversion“>=“7.0Ž¡’¢›‚set–¿ªshow-mode-in-prompt“onŽ¡’¢›‚$endifަ‘Kâ:applicationŽ¡’…³-áThe–¢âåapplication“áconstruct›¢ãis“used“to“include˜application-spMÞeci c“set-Ž¡’…³-tings.‘£mEac²!h–÷program“using“the‘÷Readline“library“sets“the“åapplicationŽ¡’…³-nameá,‘õwand–É)Ž¡‘Kâ:áMo•²!v“e–¦fto“the“end“of“the“input“history‘ÿe,“i.e.,“the“line“currenš²!tly“bMÞeing“en˜tered.ŽŸ¼j‘Gâreverse-search-history‘¦f(C-r)Ž¡‘Kâ:áSearc•²!h›½:bac“kw“ard˜starting‘½;at˜the˜curren“t˜line˜and˜mo“ving‘½;`up'˜through˜the˜his-Ž¡‘Kâ:tory–¦fas“necessary‘ÿe.‘ÝÝThis“is“an“incremenš²!tal“searc˜h.ަ‘Gâforward-search-history‘¦f(C-s)Ž¡‘Kâ:áSearc•²!h›>Dforw“ard˜starting˜at˜the˜curren“t‘>Cline˜and˜mo“ving˜`do“wn'˜through˜theŽ¡‘Kâ:history–¦fas“necessary‘ÿe.‘ÝÝThis“is“an“incremenš²!tal“searc˜h.ަ‘Gânon-incremental-reverse-search-history‘¦f(M-p)Ž¡‘Kâ:áSearc•²!h›½:bac“kw“ard˜starting‘½;at˜the˜curren“t˜line˜and˜mo“ving‘½;`up'˜through˜the˜his-Ž¡‘Kâ:tory–Ryas“necessary“using‘Rxa“non-incremenš²!tal“searc˜h“for“a“string‘Rxsupplied“b˜y“theŽ¡‘Kâ:user.‘ÝÝThe–¦fsearcš²!h“string“ma˜y“matc˜h“an˜ywhere“in“a“history“line.ަ‘Gânon-incremental-forward-search-history‘¦f(M-n)Ž¡‘Kâ:áSearc•²!h›>Dforw“ard˜starting˜at˜the˜curren“t‘>Cline˜and˜mo“ving˜`do“wn'˜through˜theŽ¡‘Kâ:history–3ªas›3©necessary“using“a˜non-incremenš²!tal“searc˜h“for›3©a“string“supplied˜b²!y“theŽ¡‘Kâ:user.‘ÝÝThe–¦fsearcš²!h“string“ma˜y“matc˜h“an˜ywhere“in“a“history“line.ަ‘Gâhistory-search-forward‘¦f()Ž¡‘Kâ:áSearc•²!h›úOforw“ard˜through–úPthe˜history˜for˜the˜string˜of“c•²!haracters˜bMÞet“w“een˜theŽ¡‘Kâ:start–QËof›QÌthe“curren²!t“line˜and“the“pMÞoinš²!t.‘à The“searc˜h‘QÌstring“m˜ust“matc˜h‘QÌat“theŽ¡‘Kâ:bMÞeginning–è"of“a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘thisŽ¡‘Kâ:command–¦fis“un²!bMÞound.ަ‘Gâhistory-search-backward‘¦f()Ž¡‘Kâ:áSearc•²!h›-»bac“kw“ard–-¼through˜the“history˜for“the˜string“of˜cš²!haracters“bMÞet˜w˜een‘-»theŽ¡‘Kâ:start–QËof›QÌthe“curren²!t“line˜and“the“pMÞoinš²!t.‘à The“searc˜h‘QÌstring“m˜ust“matc˜h‘QÌat“theŽ¡‘Kâ:bMÞeginning–è"of“a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘thisŽ¡‘Kâ:command–¦fis“un²!bMÞound.ަ‘Gâhistory-substring-search-forward‘¦f()Ž¡‘Kâ:áSearc•²!h›úOforw“ard˜through–úPthe˜history˜for˜the˜string˜of“c•²!haracters˜bMÞet“w“een˜theŽ¡‘Kâ:start–uæof›uçthe“curren²!t“line“and˜the“pMÞoinš²!t.‘ͳThe“searc˜h“string“ma˜y‘uçmatc˜h“an˜ywhereŽŽŒ‹á­Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®18ŽŽŽ ƒ33 ý ÌÍ‘Kâ:in–è"a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘this“commandޤ 33‘Kâ:is‘¦fun²!bMÞound.Ž©Þà‘Gâhistory-substring-search-backward‘¦f()Ž¡‘Kâ:áSearc•²!h›-»bac“kw“ard–-¼through˜the“history˜for“the˜string“of˜cš²!haracters“bMÞet˜w˜een‘-»theŽ¡‘Kâ:start–uæof›uçthe“curren²!t“line“and˜the“pMÞoinš²!t.‘ͳThe“searc˜h“string“ma˜y‘uçmatc˜h“an˜ywhereŽ¡‘Kâ:in–è"a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘this“commandŽ¡‘Kâ:is‘¦fun²!bMÞound.ŽŸÞß‘Gâyank-nth-arg‘¦f(M-C-y)Ž¡‘Kâ:áInsert–sÐthe›sÏ rst“argumen²!t˜to“the˜previous“command˜(usually“the˜second“w²!ordŽ¡‘Kâ:on–Ô|the›Ô}previous“line)˜at“pMÞoin²!t.‘h!With“an˜argumen²!t“åná,‘àinsert˜the“ånáth˜w²!ord“fromŽ¡‘Kâ:the–0previous“command“(the“wš²!ords“in‘0the“previous“command“bMÞegin“with“w˜ordŽ¡‘Kâ:0).‘-dA‘À negativ•²!e›Àéargumen“t–Àèinserts˜the“ånáth“w²!ord˜from“the˜end“of˜the“previousŽ¡‘Kâ:command.‘ÍOnce–öGthe“argumenš²!t‘öFån“áis“computed,‘ >the“argumen˜t“is“extracted‘öFas“ifŽ¡‘Kâ:the–¦f`â!èná'“history“expansion“had“bšMÞeen“sp˜eci ed.ަ‘Gâyank-last-arg–¦f(M-.“or“M-_)Ž¡‘Kâ:áInsert–5Elast›5Fargumen²!t“to“the˜previous“command“(the˜last“w²!ord“of˜the“previousŽ¡‘Kâ:history–"enš²!try).‘With“a‘#n˜umeric“argumen˜t,‘ ’bMÞeha˜v˜e“exactly‘#lik˜e“âyank-nth-argá.Ž¡‘Kâ:Successivš²!e–ú%calls‘ú&to“âyank-last-arg“ámo˜v˜e‘ú&bac˜k“through‘ú&the“history“list,‘™insertingŽ¡‘Kâ:the–µlast‘µwš²!ord“(or“the“w˜ord‘µspMÞeci ed“b˜y“the“argumen˜t›µto“the“ rst“call)˜of“eac²!h“lineŽ¡‘Kâ:in–`¿turn.‘ êAnš²!y“n˜umeric‘`Àargumen˜t“supplied“to‘`Àthese“successiv˜e‘`Àcalls“determinesŽ¡‘Kâ:the–-Idirection›-Jto“mo•²!v“e˜through‘-Ithe˜history‘ÿe.‘r‡A‘-'negativ“e‘-Iargumen“t˜switc“hes‘-ItheŽ¡‘Kâ:direction–¼òthrough›¼óthe“history“(bac²!k˜or“forw²!ard).‘ The“history˜expansion“facilitiesŽ¡‘Kâ:are–Mêused“to›Mëextract“the“last“argumen²!t,‘_as“if“the“`â!$á'“history˜expansion“had“bMÞeenŽ¡‘Kâ:spMÞeci ed.ŽŸ«¬‘Gëg1.4.3‘d(Commands–íMF›þÄ£or“Changing“T˜extŽŽŸ ‘Gèend-of-file–¦fâ(usually“C-d)Ž¡‘Kâ:áThe–%¡c²!haracter›% indicating“end-of- le“as“set,–?bfor˜example,“b²!y–%¡âsttyá.‘²ñIf˜this“c²!harac-Ž¡‘Kâ:ter–×is“read“when“there“are“no“cš²!haracters“on“the“line,‘ÒÁand“pMÞoin˜t“is“at“the“bMÞeginningŽ¡‘Kâ:of–¦fthe“line,“Readline“in²!terprets“it“as“the“end“of“input“and“returns“çeofá.ŽŸÞß‘Gâdelete-char‘¦f(C-d)Ž¡‘Kâ:áDelete–þ¾the“cš²!haracter“at“pMÞoin˜t.‘æåIf‘þ½this“function“is“bMÞound“to“the“same“c˜haracterŽ¡‘Kâ:as–¦fthe“ttš²!y“çeof“ác˜haracter,“as“èC-d“ácommonly“is,“see“abMÞo˜v˜e“for“the“e ects.ަ‘Gâbackward-delete-char‘¦f(Rubout)Ž¡‘Kâ:áDelete–Ÿ§the“cš²!haracter‘Ÿ¨bMÞehind“the“cursor.‘ÛA‘Ÿ¦n˜umeric“argumen˜t“means‘Ÿ¨to“kill“theŽ¡‘Kâ:c²!haracters–¦finstead“of“deleting“them.ŽŸÞß‘Gâforward-backward-delete-char‘¦f()Ž¡‘Kâ:áDelete–˜‘the›˜’c²!haracter“under˜the“cursor,‘Õunless“the˜cursor“is“at˜the“end˜of“theŽ¡‘Kâ:line,‘×~in–Í­whicš²!h‘ͬcase“the“c˜haracter›ͬbMÞehind“the˜cursor“is˜deleted.‘S±By“default,‘×~thisŽ¡‘Kâ:is–¦fnot“bMÞound“to“a“k²!ey‘ÿe.ަ‘Gâquoted-insert–¦f(C-q“or“C-v)Ž¡‘Kâ:áAdd–¸the‘¹next“cš²!haracter“t˜ypMÞed‘¹to“the“line“v˜erbatim.‘CÔThis‘¹is“ho˜w“to‘¹insert“k˜eyŽ¡‘Kâ:sequences–¦flik²!e“èC-qá,“for“example.ŽŽŒ‹îGŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®19ŽŽŽ ƒ33 ý ÌÍ‘Gâtab-insert‘¦f(M-TAB)ޤ 33‘Kâ:áInsert–¦fa“tab“c²!haracter.Ž©Ûn‘Gâself-insert–¦f(a,“b,“A,“1,“!,“...Ž‘åe)Ž¡‘Kâ:áInsert‘¦fy²!ourself.ަ‘Gâbracketed-paste-begin‘¦f()Ž¡‘Kâ:áThis–û6function›û7is“in²!tended˜to˜bšMÞe“b˜ound“to›û7the“â"ábrac•²!k“eted˜pasteâ"˜áescapMÞe‘û6sequenceŽ¡‘Kâ:sen•²!t›b“y‘some˜terminals,‘·¯and˜suc“h˜a–binding˜is“assigned˜b•²!y˜default.‘mÁIt˜allo“wsŽ¡‘Kâ:Readline–çÌto›çËinsert“the˜pasted“text˜as“a˜single“unit˜without“treating˜eacš²!h“c˜har-Ž¡‘Kâ:acter–ª‘as›ª’if“it“had˜bMÞeen“read“from˜the“kš²!eybMÞoard.‘ê_The“c˜haracters‘ª’are“insertedŽ¡‘Kâ:as–LPif›LOeac²!h“one˜w²!as“bMÞound“to˜âself-insert“áinstead˜of“executing˜an²!y“editingŽ¡‘Kâ:commands.ŽŸÛo‘Gâtranspose-chars‘¦f(C-t)Ž¡‘Kâ:áDrag–Õãthe“cš²!haracter“bMÞefore‘Õâthe“cursor“forw˜ard“o˜v˜er“the“c˜haracter‘Õâat“the“cursor,Ž¡‘Kâ:moš²!ving–C"the“cursor‘C!forw˜ard“as“w˜ell.‘´If“the“insertion‘C!pMÞoin˜t“is“at“the‘C!end“of“theŽ¡‘Kâ:line,‘ÕÍthen–¡¦this“transpMÞoses“the“last“t•²!w“o‘¡§c“haracters–¡¦of“the“line.‘†óNegativš²!e“argumen˜tsŽ¡‘Kâ:ha•²!v“e–¦fno“e ect.ަ‘Gâtranspose-words‘¦f(M-t)Ž¡‘Kâ:áDrag–áÜthe“w²!ord‘áÝbšMÞefore“p˜oinš²!t“past“the“w˜ord‘áÝafter“p•MÞoin˜t,‘ð¹mo˜ving‘áÝp“oin˜t–áÜpast“thatŽ¡‘Kâ:wš²!ord–g¸as“w˜ell.‘ÈùIf“the“insertion“pMÞoin˜t“is“at“the“end“of“the‘g¹line,‘tAthis“transpMÞoses“theŽ¡‘Kâ:last›¦ft•²!w“o˜w“ords˜on˜the˜line.ަ‘Gâupcase-word‘¦f(M-u)Ž¡‘Kâ:áUppMÞercase–ÖÓthe‘ÖÒcurrenš²!t“(or“follo˜wing)“w˜ord.‘o#With“a‘ÖÒnegativ˜e“argumen˜t,‘âîuppMÞer-Ž¡‘Kâ:case–¦fthe“previous“wš²!ord,“but“do“not“mo˜v˜e“the“cursor.ަ‘Gâdowncase-word‘¦f(M-l)Ž¡‘Kâ:áLo•²!w“ercase›”ãthe‘”âcurren“t˜(or‘”âfollo“wing)˜w“ord.‘‚²With‘”âa˜negativ“e˜argumen“t,‘Ë–lo“w“ercaseŽ¡‘Kâ:the–¦fprevious“wš²!ord,“but“do“not“mo˜v˜e“the“cursor.ŽŸÛo‘Gâcapitalize-word‘¦f(M-c)Ž¡‘Kâ:áCapitalize–6the›5curren²!t“(or˜folloš²!wing)“w˜ord.‘€#With‘5a“negativ˜e“argumen˜t,‘ÅrcapitalizeŽ¡‘Kâ:the–¦fprevious“wš²!ord,“but“do“not“mo˜v˜e“the“cursor.ަ‘Gâoverwrite-mode‘¦f()Ž¡‘Kâ:áT‘ÿeoggle›öo•²!v“erwrite˜mo•MÞde.‘Í With˜an˜explicit˜p“ositiv•²!e‘ö n“umeric˜argumen“t,‘ switc“hesŽ¡‘Kâ:to›™ÿo•²!v“erwrite–šmoMÞde.‘„fWith˜an“explicit˜non-pMÞositivš²!e“n˜umeric–™ÿargumen˜t,‘Ï®switc˜hes“toŽ¡‘Kâ:insert–¬ÛmoMÞde.‘ñ=This›¬Ücommand“a ects“only˜âemacs“ámošMÞde;‘°âvi“ámo˜de‘¬Üdo˜es“o•²!v“erwriteŽ¡‘Kâ:di eren•²!tly‘ÿe.‘ÝÝEac“h–¦fcall“to“âreadline()“ástarts“in“insert“moMÞde.ŽŸ‡Q‘Kâ:In›Ièo•²!v“erwrite˜moMÞde,‘òÈc“haracters˜bMÞound˜to˜âself-insert‘Iéáreplace˜the˜text˜atŽ¡‘Kâ:pMÞoinš²!t–rather“than“pushing“the“text“to“the“righ˜t.‘‚Characters“bMÞound“toŽ¡‘Kâ:âbackward-delete-char–¦fáreplace“the“c²!haracter“bšMÞefore“p˜oin²!t“with“a“space.ŽŸ‡P‘Kâ:By–¦fdefault,“this“command“is“un²!bMÞound.ŽŸ¨;‘Gëg1.4.4‘d(Killing–íMAnd“Y‘þÄ£ankingŽŽŸQ‘Gâkill-line‘¦f(C-k)Ž¡‘Kâ:áKill–¦fthe“text“from“pMÞoin²!t“to“the“end“of“the“line.ŽŽŒ‹ûÌŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®20ŽŽŽ ƒ33 ý ÌÍ‘Gâbackward-kill-line–¦f(C-x“Rubout)ޤ 33‘Kâ:áKill›¦fbac•²!kw“ard˜from˜the˜cursor˜to˜the˜bMÞeginning˜of˜the˜curren“t˜line.Ž©îY‘Gâunix-line-discard‘¦f(C-u)Ž¡‘Kâ:áKill›¦fbac•²!kw“ard˜from˜the˜cursor˜to˜the˜bMÞeginning˜of˜the˜curren“t˜line.ŽŸîX‘Gâkill-whole-line‘¦f()Ž¡‘Kâ:áKill–cjall“cš²!haracters‘cion“the“curren˜t“line,‘’ªno“matter“where“pMÞoin˜t“is.‘èBy“default,Ž¡‘Kâ:this–¦fis“un²!bMÞound.ަ‘Gâkill-word‘¦f(M-d)Ž¡‘Kâ:áKill–‡ from“pMÞoin²!t›‡ to“the“end“of“the˜currenš²!t“w˜ord,‘Por‘‡ if“bMÞet˜w˜een“w˜ords,‘Qto“the“endŽ¡‘Kâ:of–¦fthe“next“w²!ord.‘ÝÝW‘ÿeord“bMÞoundaries“are“the“same“as“âforward-wordá.ŽŸîX‘Gâbackward-kill-word‘¦f(M-DEL)Ž¡‘Kâ:áKill–wÖthe›w×w²!ord“b•MÞehind˜p“oin²!t.‘ÎXW‘ÿeord›wÖb“oundaries˜are–w×the˜same“as˜âbackward-wordá.ަ‘Gâunix-word-rubout‘¦f(C-w)Ž¡‘Kâ:áKill–ÍLthe“w²!ord“bšMÞehind“p˜oinš²!t,‘×using“white“space“as“a“w˜ord“bMÞoundary‘ÿe.‘RThe“killedŽ¡‘Kâ:text–¦fis“sa•²!v“ed–¦fon“the“kill-ring.ަ‘Gâunix-filename-rubout‘¦f()Ž¡‘Kâ:áKill–]Üthe“w²!ord“bšMÞehind“p˜oinš²!t,‘‹ºusing“white“space“and“the“slash“c˜haracter“as“theŽ¡‘Kâ:wš²!ord–¦fbMÞoundaries.‘ÝÝThe“killed“text“is“sa˜v˜ed“on“the“kill-ring.ŽŸîX‘Gâdelete-horizontal-space‘¦f()Ž¡‘Kâ:áDelete–¦fall“spaces“and“tabs“around“pMÞoinš²!t.‘ÝÝBy“default,“this“is“un˜bMÞound.ަ‘Gâkill-region‘¦f()Ž¡‘Kâ:áKill–¦fthe“text“in“the“currenš²!t“region.‘ÝÝBy“default,“this“command“is“un˜bMÞound.ŽŸîX‘Gâcopy-region-as-kill‘¦f()Ž¡‘Kâ:áCop²!y–³the›²text“in˜the“region˜to“the˜kill“bu er,‘0Eso˜it“can˜bMÞe“y•²!ank“ed˜righ“t‘³a“w“a“y‘ÿe.Ž¡‘Kâ:By–¦fdefault,“this“command“is“un²!bMÞound.ަ‘Gâcopy-backward-word‘¦f()Ž¡‘Kâ:áCopš²!y–žthe“w˜ord“bšMÞefore“p˜oinš²!t“to“the“kill‘žbu er.‘ÄÿThe“w˜ord“bMÞoundaries“are“theŽ¡‘Kâ:same–¦fas“âbackward-wordá.‘ÝÝBy“default,“this“command“is“un²!bMÞound.ŽŸîX‘Gâcopy-forward-word‘¦f()Ž¡‘Kâ:áCopš²!y–º8the“w˜ord“follo˜wing‘º9pMÞoin˜t“to“the“kill“bu er.‘SThe‘º9w˜ord“bMÞoundaries“are“theŽ¡‘Kâ:same–¦fas“âforward-wordá.‘ÝÝBy“default,“this“command“is“un²!bMÞound.ަ‘Gâyank‘¦f(C-y)Ž¡‘Kâ:áY‘ÿeank–¦fthe“top“of“the“kill“ring“inš²!to“the“bu er“at“pMÞoin˜t.ަ‘Gâyank-pop‘¦f(M-y)Ž¡‘Kâ:áRotate–'!the“kill-ring,‘GPand“y²!ank“the“new“top.‘`Y‘ÿeou“can‘'"only“do“this“if“the“priorŽ¡‘Kâ:command–¦fis“âyank“áor“âyank-popá.ŽŸ»%‘Gëg1.4.5‘d(Spiecifying–íMNumeric“Argumen–átsŽŽŸÆ‘Gâdigit-argument–¦f(èM-0â,“èM-1â,“...Ž‘‹ËèM--â)Ž¡‘Kâ:áAdd–:Lthis›:Kdigit“to“the˜argumenš²!t“already“accum˜ulating,‘Oêor“start“a‘:Knew“argumen˜t.Ž¡‘Kâ:èM--–¦fástarts“a“negativš²!e“argumen˜t.ŽŽŒ‹âŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®21ŽŽŽ ƒ33 ý ÌÍ‘Gâuniversal-argument‘¦f()ޤ 33‘Kâ:áThis–kis“another“w•²!a“y›jto–kspMÞecify“an“argumen²!t.‘«ßIf“this“command˜is“follo•²!w“ed›kb“y˜oneŽ¡‘Kâ:or–more›digits,‘“´optionally“with˜a“leading“min²!us“sign,‘“³those“digits“de ne˜the“ar-Ž¡‘Kâ:gumenš²!t.‘ÐÚIf‘[the–\command“is“follo˜w˜ed“b˜y“digits,‘‡*executing“âuniversal-argumentŽ¡‘Kâ:áagain–Ñ«ends‘Ѫthe“nš²!umeric“argumen˜t,‘Ü{but“is“otherwise›Ѫignored.‘_«As“a˜spMÞecial“case,Ž¡‘Kâ:if–ñúthis›ñûcommand“is“immediately˜follo•²!w“ed›ñúb“y˜a˜c“haracter–ñûthat˜is˜neither“a˜digitŽ¡‘Kâ:nor–ôÝminš²!us“sign,‘H{the“argumen˜t“coun˜t“for“the“next‘ôÞcommand“is“m˜ultiplied“b˜yŽ¡‘Kâ:four.‘ŽïThe›6Áargumen•²!t‘6Âcoun“t˜is˜initially–6Âone,‘Z×so“executing˜this˜function“the˜ rstŽ¡‘Kâ:time–omakš²!es‘othe“argumen˜t‘ocoun˜t“four,‘z&a›osecond“time˜mak²!es“the˜argumenš²!t“coun˜tŽ¡‘Kâ:sixteen,–¦fand“so“on.‘ÝÝBy“default,“this“is“not“bMÞound“to“a“k²!ey‘ÿe.ŽŸ“4‘Gëg1.4.6‘d(Letting–íMReadline“T–áypie“F›þÄ£or“Y˜ouŽŽŸ|Í‘Gâcomplete‘¦f(TAB)Ž¡‘Kâ:áA²!ttempt–¶èto›¶çpMÞerform“completion˜on“the˜text“b•MÞefore˜p“oin²!t.‘Ž The˜actual‘¶ècompletionŽ¡‘Kâ:pšMÞerformed–¦fis“application-sp˜eci c.‘ÝÝThe“default“is“ lename“completion.Ž©Æg‘Gâpossible-completions‘¦f(M-?)Ž¡‘Kâ:áList–)¯the›)®pMÞossible“completions˜of“the˜text“b•MÞefore˜p“oin•²!t.‘g·When˜displa“ying‘)¯com-Ž¡‘Kâ:pletions,‘ôfReadline–äÌsets›äÍthe“n•²!um“bMÞer˜of–äÌcolumns“used˜for“displa²!y˜to“the˜v‘ÿdDalue“ofŽ¡‘Kâ:âcompletion-display-widthá,‘Uthe–aŒv›ÿdDalue“of“the“en•²!vironmen“t–aŒv˜ariable“âCOLUMNSá,Ž¡‘Kâ:or–¦fthe“screen“width,“in“that“order.ަ‘Gâinsert-completions‘¦f(M-*)Ž¡‘Kâ:áInsert–«µall“completions“of“the“text“bšMÞefore“p˜oinš²!t“that“w˜ould“ha˜v˜e“bMÞeen“generatedŽ¡‘Kâ:b²!y‘¦fâpossible-completionsá.ŽŸÆh‘Gâmenu-complete‘¦f()Ž¡‘Kâ:áSimilar–ÛVto“âcompleteá,‘óbut“replaces“the“wš²!ord“to‘ÛWbMÞe“completed“with“a“single“matc˜hŽ¡‘Kâ:from–‹æthe‘‹çlist“of“pšMÞossible“completions.‘Ž^Rep˜eated“execution‘‹çof“âmenu-completeŽ¡‘Kâ:ásteps–Õ¯through›Õ°the“list“of“pMÞossible˜completions,‘!inserting“eacš²!h“matc˜h‘Õ°in“turn.Ž¡‘Kâ:A²!t–jthe“end“of›jthe“list“of“completions,‘›šthe“bMÞell“is“rung˜(sub‘›»ject“to“the“settingŽ¡‘Kâ:of–Thâbell-styleá)“and“the›Tioriginal“text“is“restored.‘çãAn“argumen²!t˜of“ån“ámo•²!v“es‘ThånŽ¡‘Kâ:ápMÞositions–,Rforw²!ard›,Qin“the“list˜of“matcš²!hes;‘oGa“negativ˜e‘,Qargumen˜t“ma˜y“bMÞe‘,Qused“toŽ¡‘Kâ:mo•²!v“e›™Žbac“kw“ard˜through˜the˜list.‘·VThis˜command˜is˜in“tended˜to˜b•MÞe˜b“ound˜toŽ¡‘Kâ:âTABá,–¦fbut“is“unš²!bMÞound“b˜y“default.ަ‘Gâmenu-complete-backward‘¦f()Ž¡‘Kâ:áIdenš²!tical–5ato“âmenu-completeá,‘Ybut‘5`mo˜v˜es“bac˜kw˜ard“through“the‘5`list“of“pMÞossibleŽ¡‘Kâ:completions,–¦fas“if“âmenu-complete“áhad“bMÞeen“givš²!en“a“negativ˜e“argumen˜t.ަ‘Gâdelete-char-or-list‘¦f()Ž¡‘Kâ:áDeletes–«éthe›«èc²!haracter“under“the“cursor˜if“not“at˜the“bMÞeginning“or“end˜of“theŽ¡‘Kâ:line–öØ(lik²!e›öÙâdelete-chará).‘ Ï4If“at˜the“end“of˜the“line,‘ŠôbMÞeha•²!v“es˜iden“tically‘öØtoŽ¡‘Kâ:âpossible-completionsá.‘ÝÝThis–¦fcommand“is“unš²!bMÞound“b˜y“default.ŽŸ“4‘Gëg1.4.7‘d(Keybioard‘íMMacrosŽŽŸ|Í‘Gâstart-kbd-macro–¦f(C-x“()Ž¡‘Kâ:áBegin–¦fsaš²!ving“the“c˜haracters“t˜ypMÞed“in˜to“the“curren˜t“k˜eybMÞoard“macro.ŽŽŒ‹°Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®22ŽŽŽ ƒ33 ý ÌÍ‘Gâend-kbd-macro–¦f(C-x“))ޤ 33‘Kâ:áStop–G!saš²!ving“the“c˜haracters‘G"t˜ypMÞed“in˜to“the“curren˜t“k˜eybMÞoard“macro‘G"and“sa˜v˜e“theŽ¡‘Kâ:de nition.Ž©`¶‘Gâcall-last-kbd-macro–¦f(C-x“e)Ž¡‘Kâ:áRe-execute–9Bthe“last‘9Ckš²!eybMÞoard“macro“de ned,‘]ùb˜y“making“the‘9Cc˜haracters“in“theŽ¡‘Kâ:macro–¦fappšMÞear“as“if“t²!yp˜ed“at“the“k²!eyb˜oard.ŽŸ`·‘Gâprint-last-kbd-macro‘¦f()Ž¡‘Kâ:áPrinš²!t–¦fthe“last“k˜ebMÞoard“macro“de ned“in“a“format“suitable“for“the“åinputrc‘Pjá le.ŽŸ-ƒ‘Gëg1.4.8‘d(Some–íMMiscellaneous“CommandsŽŽŸIõ‘Gâre-read-init-file–¦f(C-x“C-r)Ž¡‘Kâ:áRead– kin“the› jcon•²!ten“ts– kof“the“åinputrc‘Joá le,‘ÔÐand“incorpMÞorate“an²!y˜bindings“or“v‘ÿdDariableŽ¡‘Kâ:assignmen²!ts–¦ffound“there.ަ‘Gâabort‘¦f(C-g)Ž¡‘Kâ:áAbMÞort–/the›/curren²!t“editing˜command“and˜ring“the˜terminal's“bMÞell˜(sub‘›»ject“to˜theŽ¡‘Kâ:setting–¦fof“âbell-styleá).ŽŸ`·‘Gâdo-lowercase-version–¦f(M-A,“M-B,“M-èxâ,“...Ž‘åe)Ž¡‘Kâ:áIf–4©the“meta ed›4ªc²!haracter“åx‘öáis“uppMÞer“case,‘X:run“the“command“that˜is“bMÞound“toŽ¡‘Kâ:the–öUcorrespMÞonding›öTmeta ed“lo•²!w“er˜case‘öUc“haracter.‘Í©The˜bMÞeha“vior–öUis˜unde ned“ifŽ¡‘Kâ:åx‘gÅáis–¦falready“lo•²!w“er‘¦fcase.ަ‘Gâprefix-meta‘¦f(ESC)Ž¡‘Kâ:áMetafy–‚2the›‚1next“c•²!haracter˜t“ypMÞed.‘q@This–‚2is˜for“k²!eybMÞoards˜without“a˜meta“k²!ey‘ÿe.Ž¡‘Kâ:Tš²!yping–¦f`âESC“fá'“is“equiv‘ÿdDalen˜t“to“t˜yping“èM-fá.ŽŸ`·‘Gâundo–¦f(C-_“or“C-x“C-u)Ž¡‘Kâ:áIncremenš²!tal–¦fundo,“separately“remem˜bMÞered“for“eac˜h“line.ަ‘Gârevert-line‘¦f(M-r)Ž¡‘Kâ:áUndo–úall“cš²!hanges“made“to“this“line.‘ØåThis“is“lik˜e“executing“the“âundo“ácommandŽ¡‘Kâ:enough–¦ftimes“to“get“bac²!k“to“the“bMÞeginning.ަ‘Gâtilde-expand‘¦f(M-~)Ž¡‘Kâ:áPš²!erform–¦ftilde“expansion“on“the“curren˜t“w˜ord.ŽŸ`·‘Gâset-mark‘¦f(C-@)Ž¡‘Kâ:áSet–ðthe“mark“to“the“pMÞoinš²!t.‘ºØIf“a‘ðn˜umeric“argumen˜t“is“supplied,‘ythe“mark“is“setŽ¡‘Kâ:to–¦fthat“pMÞosition.ަ‘Gâexchange-point-and-mark–¦f(C-x“C-x)Ž¡‘Kâ:áSwš²!ap–¾Òthe“pMÞoin˜t“with“the“mark.‘'"The“curren˜t“cursor“pMÞosition“is“set“to“the“sa˜v˜edŽ¡‘Kâ:pšMÞosition,–¦fand“the“old“cursor“p˜osition“is“sa•²!v“ed–¦fas“the“mark.ŽŸ`·‘Gâcharacter-search‘¦f(C-])Ž¡‘Kâ:áA‘ü&cš²!haracter–üQis‘üRread“and“pMÞoin˜t‘üRis“mo˜v˜ed“to›üRthe“next“oMÞccurrence“of˜that“c²!haracter.Ž¡‘Kâ:A–¦fnegativš²!e“coun˜t“searc˜hes“for“previous“oMÞccurrences.ަ‘Gâcharacter-search-backward‘¦f(M-C-])Ž¡‘Kâ:áA‘c"c²!haracter–c•is›c”read“and˜pMÞoinš²!t“is“mo˜v˜ed›c”to“the˜previous“oMÞccurrence˜of“thatŽ¡‘Kâ:c•²!haracter.‘ÝÝA›¦fnegativ“e˜coun“t˜searc“hes˜for˜subsequen“t˜oMÞccurrences.ŽŽŒ‹ 6Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®23ŽŽŽ ƒ33 ý ÌÍ‘Gâskip-csi-sequence‘¦f()ޤ 33‘Kâ:áRead–G¬enough“cš²!haracters‘G­to“consume“a“m˜ulti-k˜ey“sequence“suc˜h‘G­as“those“de nedŽ¡‘Kâ:for–z÷kš²!eys“lik˜e‘zøHome“and“End.‘[‘Suc˜h“sequences“bMÞegin“with‘zøa“Con˜trol“SequenceŽ¡‘Kâ:Indicator–fM(CSI),“usually–fLESC-[.‘’If“this–fMsequence“is“bMÞound‘fLto“â"\áe[â"á,‘–Fk²!eys“pro-Ž¡‘Kâ:ducing–Ö‰sucš²!h“sequences“will‘Öˆha˜v˜e“no“e ect“unless“explicitly“bMÞound‘Öˆto“a“readlineŽ¡‘Kâ:command,‘ßÔinstead–ÔXof“inserting“straš²!y“c˜haracters“in˜to“the“editing‘ÔWbu er.‘g³This“isŽ¡‘Kâ:un•²!bMÞound›¦fb“y˜default,˜but˜usually˜bMÞound˜to˜ESC-[.Ž©+¼‘Gâinsert-comment‘¦f(M-#)Ž¡‘Kâ:áWithout–GÑa‘GÐnš²!umeric“argumen˜t,‘p*the“v‘ÿdDalue›GÐof“the˜âcomment-begin“áv‘ÿdDariable˜is“in-Ž¡‘Kâ:serted–Ìèat›Ìéthe“bMÞeginning“of“the˜currenš²!t“line.‘QdIf“a“n˜umeric“argumen˜t‘Ìéis“supplied,Ž¡‘Kâ:this–cøcommand“acts“as“a“toggle:‘Yif‘c÷the“c²!haracters“at“the“bMÞeginning“of“the“lineŽ¡‘Kâ:do–¬Ânot“matc²!h“the‘¬Ãv›ÿdDalue“of“âcomment-beginá,‘®Ythe“v˜alue“is‘¬Ãinserted,‘®Yotherwise“theŽ¡‘Kâ:c²!haracters–Ó6in“âcomment-begin“áare›Ó5deleted“from“the“bMÞeginning“of“the˜line.‘dMInŽ¡‘Kâ:either–¦fcase,“the“line“is“accepted“as“if“a“newline“had“bšMÞeen“t²!yp˜ed.ŽŸ+½‘Gâdump-functions‘¦f()Ž¡‘Kâ:áPrin²!t–,Qall›,Pof“the˜functions“and“their˜k²!ey“bindings“to˜the“Readline˜output“stream.Ž¡‘Kâ:If–Îïa“nš²!umeric“argumen˜t›Îðis“supplied,‘Ùthe“output“is“formatted“in˜sucš²!h“a“w˜a˜y“thatŽ¡‘Kâ:it–¦fcan“bšMÞe“made“part“of“an“åinputrc‘Pjá le.‘ÝÝThis“command“is“un²!b˜ound“b²!y“default.ަ‘Gâdump-variables‘¦f()Ž¡‘Kâ:áPrin²!t–ŽÉall“of“the‘ŽÈsettable“v›ÿdDariables“and“their“v˜alues“to‘ŽÈthe“Readline“output“stream.Ž¡‘Kâ:If–Îïa“nš²!umeric“argumen˜t›Îðis“supplied,‘Ùthe“output“is“formatted“in˜sucš²!h“a“w˜a˜y“thatŽ¡‘Kâ:it–¦fcan“bšMÞe“made“part“of“an“åinputrc‘Pjá le.‘ÝÝThis“command“is“un²!b˜ound“b²!y“default.ŽŸ+½‘Gâdump-macros‘¦f()Ž¡‘Kâ:áPrinš²!t– ˆall“of“the‘ ‡Readline“k˜ey“sequences“bMÞound“to“macros‘ ‡and“the“strings“theyŽ¡‘Kâ:output.‘rŠIf–-Ja“nš²!umeric“argumen˜t“is›-Ksupplied,‘Othe“output“is“formatted˜in“suc²!h“aŽ¡‘Kâ:w•²!a“y–šthat›šit“can“bMÞe˜made“part“of˜an“åinputrc‘Dá le.‘ÙÂThis“command“is˜unš²!bMÞound“b˜yŽ¡‘Kâ:default.ަ‘Gâemacs-editing-mode‘¦f(C-e)Ž¡‘Kâ:áWhen–¦fin“âvi“ácommand“mošMÞde,“this“causes“a“switc²!h“to“âemacs“áediting“mo˜de.ŽŸ+½‘Gâvi-editing-mode‘¦f(M-C-j)Ž¡‘Kâ:áWhen–¦fin“âemacs“áediting“mošMÞde,“this“causes“a“switc²!h“to“âvi“áediting“mo˜de.ŽŸø‰‘Gë]1.5‘™Readline–f@vi“Mos3deŽŽŸ33‘GáWhile–É`the“Readline›É_library“doMÞes“not“ha•²!v“e–É`a˜full“set“of“âvi˜áediting“functions,‘Òit“doMÞes“con²!tainŽ¡‘Genough–to›žallo²!w“simple˜editing“of“the˜line.‘.ƒThe˜Readline“âvi“ámo•MÞde˜b“eha•²!v“es–as˜spMÞeci ed“inŽ¡‘Gthe–¦fçposix“ástandard.Ž©/x‘!GIn–|Uorder›|Vto“switc•²!h˜in“teractiv“ely‘|UbMÞet“w“een˜âemacs–|Uáand˜âvi“áediting˜moMÞdes,‘„¿use˜the“commandŽ¡‘GèM-C-j–iá(bšMÞound‘jto“emacs-editing-mo˜de“when“in‘jâvi“ámo˜de“and“to‘jvi-editing-mo˜de“in“âemacsŽ¡‘GámošMÞde).‘ÝÝThe–¦fReadline“default“is“âemacs“ámo˜de.ަ‘!GWhen–›‰yš²!ou“en˜ter“a“line“in“âvi“ámoMÞde,‘µy˜ou‘›Šare“already“placed“in“`insertion'“moMÞde,‘µas“if“y˜ouŽ¡‘Ghad–ˆtš²!ypMÞed“an‘ˆ`âiá'.‘ÓÃPressing“âESC“áswitc˜hes‘ˆy˜ou“in˜to“`command'“moMÞde,‘Ž(where“y˜ou‘ˆcan“edit“theŽ¡‘Gtext–of“the“line“with“the“standard“âvi“ámo•²!v“emen“t›k“eys,‘);mo“v“e˜to˜previous˜history˜lines˜withŽ¡‘G`âká'–¦fand“subsequen²!t“lines“with“`âjá',“and“so“forth.ŽŽŒ‹+"Ÿò’¸¼Ëá24ŽŽŽ ƒ33 ý ÌÍ‘GëTApp›Š=endix‘záA‘ ¸QGNU–z³F‘þaGree“Do˜cumen‘ÿuÂtation“LicenseŽŽŸƒª’£¤AáV‘ÿeersion–¦f1.3,“3“No•²!v“em“bMÞer‘¦f2008Ž©Q‘.ùœCop•²!yrigh“t‘±ž«‚cŽŽŽ‘¦fê ŽŽŽŽ‘@á2000,–¦f2001,“2002,“2007,“2008“F›ÿeree“Soft•²!w“are–¦fF˜oundation,“Inc.ޤ 33‘.ùœâhttp://fsf.org/ŽŸff‘.ùœáEv•²!ery“one–¦fis“pMÞermitted“to“copš²!y“and“distribute“v˜erbatim“copiesŽ¡‘.ùœof–¦fthis“license“doMÞcumenš²!t,“but“c˜hanging“it“is“not“allo˜w˜ed.ަ‘-0.Ž‘'¿«PREAMBLEަ‘'¿«The–vQpurpMÞose›vRof“this˜License“is˜to“mak²!e“a˜man²!ual,›ªLtextb•MÞo“ok,˜or–vQother‘vRfunctional“andŽ¡‘'¿«useful–žïdoMÞcumen²!t›žîåfree‘;öáin“the“sense˜of“freedom:‘Ú!to“assure“ev•²!ery“one‘žïthe˜e ectiv“e‘žïfreedomŽ¡‘'¿«to–Æ9cop²!y›Æ:and“redistribute“it,‘Î.with“or˜without“moMÞdifying“it,‘Î.either“commercially˜or“non-Ž¡‘'¿«commercially–ÿe.‘cÏSecondarily“,‘Hàthis–(aLicense›(bpreserv²!es“for“the˜author“and“publisher˜a“w•²!a“yŽ¡‘'¿«to–W9get“credit›W8for“their“w²!ork,‘ƒmwhile“not“bMÞeing“considered˜respšMÞonsible“for“mo˜di cationsŽ¡‘'¿«made–¦fb²!y“others.ަ‘'¿«This–È/License›È0is“a“kind“of˜\cop•²!yleft",‘ô whic“h–È/means˜that“deriv‘ÿdDativš²!e“w˜orks“of‘È0the“doMÞcumen˜tŽ¡‘'¿«m•²!ust›õthemselv“es–ôbMÞe˜free˜in˜the“same˜sense.‘ ‰It˜complemen²!ts˜the“GNU‘ÙGeneral˜PublicŽ¡‘'¿«License,–¦fwhicš²!h“is“a“cop˜yleft“license“designed“for“free“soft˜w˜are.ަ‘'¿«W‘ÿee›‹#ha•²!v“e˜designed˜this˜License˜in˜order˜to˜use˜it‘‹"for˜man“uals˜for˜free˜soft“w“are,‘—bMÞecauseŽ¡‘'¿«free›?soft•²!w“are˜needs˜free‘>doMÞcumen“tation:‘³a˜free˜program˜should‘>come˜with˜man“ualsŽ¡‘'¿«pro²!viding–urthe›ussame“freedoms˜that“the˜soft•²!w“are–urdoMÞes.‘ÍŒBut˜this“License˜is“not˜limited“toŽ¡‘'¿«soft•²!w“are›­âman“uals;‘±¡it–­ãcan˜bMÞe“used˜for“an²!y˜textual“w²!ork,‘¯Áregardless“of˜sub‘›»ject“matter˜orŽ¡‘'¿«whether–Ç2it“is“published“as“a“prin²!ted“b•MÞo“ok.‘@BW‘ÿee–Ç2recommend“this“License“principally“forŽ¡‘'¿«w²!orks–¦fwhose“purpMÞose“is“instruction“or“reference.ަ‘-1.Ž‘'¿«APPLICABILITY–¦fAND“DEFINITIONSŽŸP‘'¿«This–Ì>License‘Ì=applies“to“anš²!y“man˜ual‘Ì=or“other“w˜ork,‘³in“an˜y–Ì=medium,‘´that“con˜tains‘Ì>aŽ¡‘'¿«notice–ýplaced›ýb²!y“the˜cop•²!yrigh“t‘ýholder˜sa“ying–ýit˜can“bMÞe˜distributed“under˜the“termsŽ¡‘'¿«of–€†this“License.‘l=Sucš²!h“a“notice“gran˜ts“a“w˜orld-wide,‘· ro˜y˜alt˜y-free“license,‘·unlimited“inŽ¡‘'¿«duration,‘â to–o·use›o¶that“w²!ork“under˜the“conditions“stated˜herein.‘ 9ÏThe“\DoMÞcumen²!t",Ž¡‘'¿«bMÞeloš²!w,‘tkrefers–gìto“an˜y“suc˜h‘gíman˜ual“or“w˜ork.‘É An˜y“mem˜bMÞer“of“the‘gípublic“is“a“licensee,‘tkandŽ¡‘'¿«is–ÿaddressed“as“\yš²!ou".‘¦@Y‘ÿeou“accept“the“license“if“y˜ou“cop˜y‘ÿe,‘ îmoMÞdify“or“distribute“the“w˜orkŽ¡‘'¿«in–¦fa“w•²!a“y–¦frequiring“pMÞermission“under“cop•²!yrigh“t‘¦fla“w.ަ‘'¿«A‘ ¦\MošMÞdi ed– ÀV‘ÿeersion"‘ Áof“the“Do˜cumenš²!t“means‘ Áan˜y“w˜ork“con˜taining“the‘ ÁDoMÞcumen˜t“orŽ¡‘'¿«a–‚hpMÞortion›‚gof“it,‘¹heither˜copied“v²!erbatim,‘¹hor˜with“moMÞdi cations“and/or˜translated“in²!toŽ¡‘'¿«another‘¦flanguage.ަ‘'¿«A‘ž\Secondary–ÀSection"“is›Áa“named˜appMÞendix“or˜a“fron²!t-matter˜section“of˜the“DoMÞcumen²!tŽ¡‘'¿«that–Ž/deals“exclusiv²!ely›Ž0with“the“relationship“of˜the“publishers“or“authors˜of“the“DoMÞcumen²!tŽ¡‘'¿«to–z the‘zDoMÞcumenš²!t's“o˜v˜erall›zsub‘›»ject“(or˜to“related“matters)˜and“con²!tains˜nothing“thatŽ¡‘'¿«could–Ø®fall›دdirectly“within“that“o•²!v“erall˜sub‘›»ject.‘tµ(Th“us,‘%@if˜the›Ø®DoMÞcumen“t˜is˜in‘دpart˜aŽ¡‘'¿«textb•MÞo“ok›Õ†of–Õ…mathematics,‘ÿMa“Secondary˜Section˜ma²!y˜not“explain˜an²!y˜mathematics.)‘˜=TheŽ¡‘'¿«relationship–GÞcould“bMÞe“a“matter“of“historical“connection“with“the“sub‘›»ject“or“with“relatedŽ¡‘'¿«matters,–jor‘Bøof›B÷legal,“commercial,‘jphilosophical,“ethical˜or˜p•MÞolitical‘Bøp“osition˜regardingŽ¡‘'¿«them.ަ‘'¿«The›r\In•²!v‘ÿdDarian“t–sSections"˜are˜certain˜Secondary“Sections˜whose˜titles˜are“designated,‘0ÖasŽ¡‘'¿«bMÞeing–2Dthose›2Cof“In•²!v‘ÿdDarian“t–2DSections,‘I}in“the“notice˜that“sa²!ys˜that“the“DoMÞcumen²!t˜is“releasedŽŽŒ‹9˜Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:25ŽŽŽ ƒ33 ý ÌÍ‘'¿«under–S5this“License.‘Â"If›S4a“section“doMÞes“not“ t˜the“abMÞo•²!v“e–S5de nition“of“Secondary˜then“it“isޤ 33‘'¿«not›Óallo•²!w“ed˜to‘ÓŽbMÞe˜designated˜as˜In“v‘ÿdDarian“t.‘eSThe˜DoMÞcumen“t˜ma“y‘ÓŽcon“tain˜zero˜In“v‘ÿdDarian“tŽ¡‘'¿«Sections.‘¢ÄIf–õthe“DošMÞcumen²!t“do˜es‘õnot“idenš²!tify“an˜y“In˜v‘ÿdDarian˜t“Sections“then‘õthere“are“none.Ž©&g‘'¿«The›f­\Co•²!v“er–f¬T‘ÿeexts"˜are˜certain˜short“passages˜of˜text˜that“are˜listed,‘–¾as˜F‘ÿeron•²!t-Co“v“erŽ¡‘'¿«T›ÿeexts–-or“Bac•²!k-Co“v“er‘,T˜exts,‘"8in–-the“notice“that‘,saš²!ys“that“the“DoMÞcumen˜t‘,is“released“underŽ¡‘'¿«this›’License.‘¯AA‘nF‘ÿeron•²!t-Co“v“er˜T‘ÿeext˜ma“y˜bMÞe˜at˜most˜5›‘w“ords,‘6Šand˜a›’Bac“k-Co“v“er˜T‘ÿeext˜ma“yŽ¡‘'¿«bMÞe–¦fat“most“25“w²!ords.ŽŸ&h‘'¿«A‘C¦\T‘ÿeransparen•²!t"›CÎcop“y˜of‘CÏthe˜DoMÞcumen“t˜means˜a‘CÏmac“hine-readable˜cop“y‘ÿe,‘k(represen“tedŽ¡‘'¿«in–Jma“format›Jnwhose“spMÞeci cation“is“a²!v‘ÿdDailable“to“the˜general“public,‘snthat˜is“suitable“forŽ¡‘'¿«revising–Îàthe‘ÎßdoMÞcumenš²!t“straigh˜tforw˜ardly“with›Îßgeneric“text˜editors“or“(for˜images“com-Ž¡‘'¿«pMÞosed–ÚÃof›ÚÄpixels)“generic˜pain²!t“programs˜or“(for˜dra²!wings)“some˜widely“a•²!v‘ÿdDailable˜dra“wingŽ¡‘'¿«editor,‘…úand–}ßthat“is“suitable“for“input“to‘}àtext“formatters“or“for“automatic“translation“toŽ¡‘'¿«a–9Ov‘ÿdDariet²!y“of›9Nformats“suitable“for“input“to“text˜formatters.‘¹A‘93cop²!y“made˜in“an“otherwiseŽ¡‘'¿«T‘ÿeransparen²!t–„æ le“format›„åwhose“markup,‘¼†or“absence˜of“markup,‘¼†has˜bMÞeen“arranged“toŽ¡‘'¿«th•²!w“art–0ûor›0üdiscourage“subsequen²!t“moMÞdi cation˜b²!y“readers“is˜not“T‘ÿeransparen²!t.‘¶ºAn“imageŽ¡‘'¿«format– Éis“not“T‘ÿeransparenš²!t“if“used‘ Èfor“an˜y“substan˜tial“amoun˜t“of“text.‘MA‘ ©cop˜y“that“isŽ¡‘'¿«not–¦f\T‘ÿeransparen²!t"“is“called“\Opaque".ަ‘'¿«Examples–cXof“suitable›cWformats“for“T‘ÿeransparen²!t“copies“include˜plain“çasci>Ki“áwithoutŽ¡‘'¿«markup,‘„ÂT‘ÿeexinfo–XIinput“format,›„ÁLaT‘þ,³Ÿ[wEŽ‘B X‘XJinput“format,˜óKñ`y cmr10«SGML“áor‘XJ«XML“áusing“a“publiclyŽ¡‘'¿«a²!v‘ÿdDailable–«DTDá,‘üand›Âstandard-conforming“simple˜«HTMLá,‘üP²!ostScript“or˜«PDF“ádesignedŽ¡‘'¿«for–˜.hš²!uman“moMÞdi cation.‘³4Examples“of“transparen˜t“image“formats“include“«PNGá,‘ÔŸ«X¸ãCFŽ¡‘'¿«áand–¢«JPGá.‘ÐáOpaque“formats“include“proprietary‘¢formats“that“can“bMÞe“read“and“editedŽ¡‘'¿«only–sbš²!y‘sproprietary“w˜ord›sproMÞcessors,‘&J«SGML“áor˜«XML“áfor˜whic²!h“the˜«DTD“áand/orŽ¡‘'¿«pro•MÞcessing›W*to“ols˜are˜not‘W)generally˜a•²!v‘ÿdDailable,‘CYand˜the˜mac“hine-generated˜«HTMLá,Ž¡‘'¿«Pš²!ostScript–¦for“«PDF“áproMÞduced“b˜y“some“w˜ord“prošMÞcessors“for“output“purp˜oses“only‘ÿe.ަ‘'¿«The–Ü\Title›ÛP²!age"“means,‘<ùfor˜a“prin²!ted˜b•MÞo“ok,‘<ùthe–Ütitle˜page“itself,‘<ùplus˜sucš²!h“follo˜wingŽ¡‘'¿«pages–RÃas“are“needed“to“hold,–c}legibly‘ÿe,“the–RÃmaterial“this‘RÂLicense“requires“to“appMÞear“in“theŽ¡‘'¿«title–1.page.‘¶ÊF‘ÿeor“w²!orks›1-in“formats˜whic²!h“do“not˜ha•²!v“e‘1.an“y˜title–1.page“as˜sucš²!h,‘HŸ\Title“P˜age"Ž¡‘'¿«means–­Žthe“text“near›­the“most“prominen²!t“appMÞearance“of“the˜w²!ork's“title,‘¯Xpreceding“theŽ¡‘'¿«bšMÞeginning–¦fof“the“b˜o˜dy“of“the“text.ަ‘'¿«The–)—\publisher"“means‘)˜anš²!y“pMÞerson“or“en˜tit˜y“that“distributes‘)˜copies“of“the“DoMÞcumen˜tŽ¡‘'¿«to–¦fthe“public.ŽŸ&h‘'¿«A›ísection–ò\En²!titled“XYZ"˜means“a“named›ósubunit“of“the“DoMÞcumen²!t˜whose“title“eitherŽ¡‘'¿«is–Uªprecisely‘U©XYZ›U•or“con²!tains“XYZ˜in“paren•²!theses›U©follo“wing–Uªtext“that˜translates“XYZ‘U•inŽ¡‘'¿«another–þ¯language.‘¥ö(Here“XYZ‘þ„stands“for“a“spšMÞeci c“section“name“men²!tioned“b˜elo•²!w,‘ :suc“hŽ¡‘'¿«as›aa\Ac•²!kno“wledgemen“ts",–o/\Dedications",“\Endorsemen²!ts",“or˜\History".)‘ÆÛT‘ÿeo˜\Preserv²!eŽ¡‘'¿«the–›Title"›šof“suc²!h˜a“section“when˜y²!ou“moMÞdify˜the“DoMÞcumen²!t“means˜that“it˜remains“aŽ¡‘'¿«section–¦f\En²!titled“XYZ"“according“to“this“de nition.ަ‘'¿«The–SuDoMÞcumenš²!t“ma˜y“include“W‘ÿearran˜t˜y“Disclaimers“next‘Svto“the“notice“whic˜h“states“thatŽ¡‘'¿«this–¹License“applies‘ºto“the“DoMÞcumenš²!t.‘×These“W‘ÿearran˜t˜y“Disclaimers‘ºare“considered“toŽ¡‘'¿«bMÞe–„ýincluded›„þb²!y“reference“in“this˜License,‘¼£but“only“as“regards˜disclaiming“w•²!arran“ties:Ž¡‘'¿«an²!y–nother›n‘implication“that˜these“W‘ÿearran•²!t“y˜Disclaimers‘nma“y˜ha“v“e‘nis˜v“oid–nand˜has“noŽ¡‘'¿«e ect–¦fon“the“meaning“of“this“License.ަ‘-2.Ž‘'¿«VERBA‘ÿeTIM‘¦fCOPYINGŽŽŒ‹JŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:26ŽŽŽ ƒ33 ý ÌÍ‘'¿«Y‘ÿeou–’ùmaš²!y“cop˜y“and“distribute“the“DoMÞcumen˜t“in“an˜y“medium,‘Îeither“commercially“orޤ 33‘'¿«noncommercially‘ÿe,›zªpro²!vided–that‘this“License,˜the‘cop•²!yrigh“t–notices,˜and‘the“licenseŽ¡‘'¿«notice–Ksa²!ying›K this“License˜applies“to˜the“DoMÞcumen²!t“are˜reproMÞduced“in˜all“copies,‘t7andŽ¡‘'¿«that–1'yš²!ou“add“no‘1(other“conditions“whatsoMÞev˜er“to“those“of“this“License.‘¶ÉY‘ÿeou“ma˜y“not“useŽ¡‘'¿«tec²!hnical–ò“measures›ò”to“obstruct˜or“con²!trol˜the“reading˜or“further˜cop²!ying“of˜the“copiesŽ¡‘'¿«y•²!ou›òÇmak“e‘òÈor˜distribute.‘¡þHo“w“ev“er,‘´y“ou˜ma“y˜accept‘òÈcompMÞensation˜in˜exc“hange‘òÈfor˜copies.Ž¡‘'¿«If–Þy²!ou›Þdistribute“a“large˜enough“n•²!um“bMÞer˜of–Þcopies“y•²!ou˜m“ust–Þalso“follo²!w˜the“conditionsŽ¡‘'¿«in–¦fsection“3.Ž©"#‘'¿«Y‘ÿeou–}ìma²!y“also›}ëlend“copies,‘¹7under“the“same“conditions“stated˜abMÞo•²!v“e,‘¹8and˜y“ou›}ìma“y˜publiclyŽ¡‘'¿«displa²!y‘¦fcopies.ަ‘-3.Ž‘'¿«COPYING–¦fIN“QUANTITYަ‘'¿«If–Ãyš²!ou‘Âpublish“prin˜ted›Âcopies“(or˜copies˜in“media“that˜commonly“ha•²!v“e˜prin“ted˜co“v“ers)‘ÃofŽ¡‘'¿«the‘Ñ.DošMÞcumen•²!t,‘Ûßn“um“b˜ering–Ñ.more“than–Ñ-100,‘Ûàand“the–Ñ.Do˜cumen²!t's“license‘Ñ-notice“requiresŽ¡‘'¿«Co•²!v“er›ÜT‘ÿeexts,‘<ùy“ou‘Ûm“ust˜enclose˜the˜copies‘Ûin˜co“v“ers˜that˜carry–ÿe,‘<ùclearly‘Ûand˜legibly“,‘<ùallŽ¡‘'¿«these›´@Co•²!v“er˜T–ÿeexts:‘ùF“ron•²!t-Co“v“er˜T‘ÿeexts˜on˜the˜fron“t˜co“v“er,‘÷µand˜Bac“k-Co“v“er˜T‘ÿeexts˜onŽ¡‘'¿«the›öbac•²!k‘õco“v“er.‘Ñ Both˜co“v“ers˜m“ust–õalso˜clearly˜and˜legibly“iden•²!tify˜y“ou˜as‘õthe˜publisherŽ¡‘'¿«of›,these–+copies.‘H/The“fron•²!t˜co“v“er˜m“ust˜presen“t–+the˜full˜title“with˜all˜w²!ords˜of“the˜titleŽ¡‘'¿«equally–³xprominenš²!t“and‘³yvisible.‘Y‘ÿeou“ma˜y›³yadd“other“material“on“the˜co•²!v“ers–³xin“addition.Ž¡‘'¿«Cop•²!ying›Y4with‘Y3c“hanges˜limited–Y3to˜the“co•²!v“ers,‘…ças–Y3long˜as“they˜preserv²!e“the˜title“of˜theŽ¡‘'¿«DošMÞcumen²!t–uand“satisfy“these“conditions,‘¨Åcan“b˜e“treated‘uas“vš²!erbatim“cop˜ying“in“otherŽ¡‘'¿«respMÞects.ަ‘'¿«If–î|the“required›î}texts“for“either“co•²!v“er–î|are“toMÞo˜vš²!oluminous“to“ t“legibly‘ÿe,‘‚y˜ou“should“putŽ¡‘'¿«the–ò rst›òones“listed“(as“man²!y˜as“ t“reasonably)“on˜the“actual“co•²!v“er,‘ùand˜con“tin“ue‘òtheŽ¡‘'¿«rest–¦fonš²!to“adjacen˜t“pages.ŽŸ""‘'¿«If–?|y²!ou›?{publish“or˜distribute“Opaque˜copies“of˜the“DoMÞcumen•²!t˜n“um“bMÞering–?|more˜than“100,Ž¡‘'¿«y•²!ou›\3m“ust˜either‘\4include˜a˜mac“hine-readable˜T‘ÿeransparen“t˜cop“y˜along‘\4with˜eac“h˜OpaqueŽ¡‘'¿«cop²!y‘ÿe,‘[>or›7state–7in“or˜with“eacš²!h“Opaque“cop˜y‘7a“computer-net˜w˜ork“loMÞcation‘7from“whic˜hŽ¡‘'¿«the›éSgeneral‘éRnet•²!w“ork-using˜public˜has‘éRaccess˜to˜do“wnload˜using‘éRpublic-standard˜net“w“orkŽ¡‘'¿«protoMÞcols–¬=a“complete‘¬>T‘ÿeransparenš²!t“cop˜y“of“the“DoMÞcumen˜t,‘í³free“of“added“material.‘ïcIfŽ¡‘'¿«yš²!ou–ªuse“the‘ªlatter“option,‘êùy˜ou“m˜ust‘ªtak˜e“reasonably“pruden˜t“steps,‘êøwhen“y˜ou“bMÞeginŽ¡‘'¿«distribution–—lof›—mOpaque“copies˜in“quan•²!tit“y‘ÿe,‘Ó®to–—lensure“that˜this“T‘ÿeransparen•²!t˜cop“y‘—lwillŽ¡‘'¿«remain– Cthš²!us“accessible‘ Dat“the“stated“loMÞcation“un˜til‘ Dat“least“one“y˜ear“after‘ Dthe“last“timeŽ¡‘'¿«yš²!ou–k‘distribute‘k’an“Opaque“cop˜y‘k’(directly“or“through“y˜our‘k’agen˜ts“or“retailers)‘k’of“thatŽ¡‘'¿«edition–¦fto“the“public.ަ‘'¿«It–&Nis“requested,‘FHbut“not“required,‘FGthat“yš²!ou“con˜tact“the“authors“of“the“DoMÞcumen˜t“w˜ellŽ¡‘'¿«bMÞefore–oÅredistributing‘oÄanš²!y“large“n˜um˜bMÞer›oÄof“copies,‘z²to˜giv²!e“them˜a“c²!hance“to˜proš²!vide“y˜ouŽ¡‘'¿«with–¦fan“upšMÞdated“v²!ersion“of“the“Do˜cumen²!t.ަ‘-4.Ž‘'¿«MODIFICA‘ÿeTIONSަ‘'¿«Y‘ÿeou–*maš²!y“cop˜y“and›)distribute“a“MoMÞdi ed“V‘ÿeersion“of“the˜DoMÞcumen²!t“under“the“conditionsŽ¡‘'¿«of–…šsections›…›2“and˜3“abMÞo•²!v“e,‘¿]pro“vided˜that‘…šy“ou˜release–…šthe˜MoMÞdi ed“V‘ÿeersion˜under“preciselyŽ¡‘'¿«this–{ÞLicense,‘„`with“the›{ßMoMÞdi ed“V‘ÿeersion“ lling˜the“role“of˜the“DoMÞcumen•²!t,‘„`th“us‘{ÞlicensingŽ¡‘'¿«distribution–¸and“mošMÞdi cation‘¹of“the“Mo˜di ed“V‘ÿeersion“to“who˜ev²!er‘¹p˜ossesses“a“cop²!y“ofŽ¡‘'¿«it.‘ÝÝIn–¦faddition,“yš²!ou“m˜ust“do“these“things“in“the“MoMÞdi ed“V‘ÿeersion:ަ‘*òÄA.Ž‘=nUse–ípin“the“Title“Pš²!age“(and“on“the“co˜v˜ers,‘ÿ2if“an˜y)“a“title“distinct“from“that“of“theŽ¡‘=nDoMÞcumenš²!t,‘+and–ˆfrom“those“of“previous“v˜ersions‘‡(whic˜h“should,‘+if“there“w˜ere“an˜y‘ÿe,ŽŽŒ‹\xŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:27ŽŽŽ ƒ33 ý ÌÍ‘=nbšMÞe–Âølisted“in“the“History‘Â÷section“of“the“Do˜cumenš²!t).‘3“Y‘ÿeou“ma˜y‘Â÷use“the“same“title“asޤ 33‘=na–¦fprevious“vš²!ersion“if“the“original“publisher“of“that“v˜ersion“giv˜es“pMÞermission.Ž©€‘+gB.Ž‘=nList–ª\on“the“Title›ª[P²!age,‘«Zas“authors,‘«Yone“or“more“pMÞersons˜or“en²!tities“respMÞonsible“forŽ¡‘=nauthorship–"of›"the“moMÞdi cations“in˜the“MoMÞdi ed˜V‘ÿeersion,‘<|together“with“at˜least“ v²!eŽ¡‘=nof–߸the“principal“authors“of“the“DoMÞcumenš²!t“(all“of“its“principal“authors,‘uif“it“has“few˜erŽ¡‘=nthan–¦f vš²!e),“unless“they“release“y˜ou“from“this“requiremen˜t.ŽŸ€‘+@¢C.Ž‘=nState–±Óon›±Òthe“Title˜page“the˜name“of˜the“publisher˜of“the˜MoMÞdi ed“V‘ÿeersion,‘´­as“theŽ¡‘=npublisher.ަ‘*ËÕD.Ž‘=nPreservš²!e–¦fall“the“cop˜yrigh˜t“notices“of“the“DoMÞcumen˜t.ަ‘+µoE.Ž‘=nAdd–Äean›Ädappropriate“cop•²!yrigh“t˜notice‘Äefor˜y“our‘ÄemoMÞdi cations˜adjacen“t–Äeto˜the“otherŽ¡‘=ncop•²!yrigh“t‘¦fnotices.ŽŸ€‘,LF.Ž‘=nInclude,›hSimmediately–XÎafter“the“cop•²!yrigh“t–XÎnotices,˜a“license“notice“giving“the“publicŽ¡‘=npMÞermission–ïËto›ïÊuse“the˜MoMÞdi ed“V‘ÿeersion“under˜the“terms˜of“this“License,‘Pin˜the“formŽ¡‘=nshoš²!wn–¦fin“the“Addendum“bMÞelo˜w.ަ‘*‘nG.Ž‘=nPreserv²!e–¼min›¼lthat“license˜notice“the˜full“lists˜of“In•²!v‘ÿdDarian“t˜Sections–¼mand˜required“Co•²!v“erŽ¡‘=nT‘ÿeexts–¦fgivš²!en“in“the“DoMÞcumen˜t's“license“notice.ަ‘*òÄH.Ž‘=nInclude–¦fan“unaltered“cop²!y“of“this“License.ŽŸ€‘/4çI.Ž‘=nPreservš²!e–Ú†the‘Ú‡section“En˜titled‘Ú‡\History",‘çŽPreserv˜e“its›Ú‡Title,‘çŽand“add˜to“it˜an“itemŽ¡‘=nstating–_ at›_ least“the˜title,–mQy²!ear,“new˜authors,“and–_ publisher˜of“the˜MoMÞdi ed“V‘ÿeersionŽ¡‘=nas–ÄXgivš²!en“on‘ÄWthe“Title“P˜age.‘7³If‘ÄWthere“is“no“section“En˜titled“\History"‘ÄWin“the“DoMÞcu-Ž¡‘=nmenš²!t,‘O#create‘-eone–-dstating“the“title,‘O$y˜ear,–O#authors,“and‘-epublisher–-dof“the“DoMÞcumen˜tŽ¡‘=nas–Wgivš²!en“on“its“Title“P˜age,‘ƒFthen“add“an“item“describing“the“MoMÞdi ed“V‘ÿeersion“asŽ¡‘=nstated–¦fin“the“previous“sen²!tence.ަ‘-ˆ¢J.Ž‘=nPreservš²!e–æthe“net˜w˜ork“loMÞcation,‘õúif“an˜y‘ÿe,‘õúgiv˜en“in“the“DoMÞcumen˜t‘æfor“public“access“toŽ¡‘=na–½…T‘ÿeransparenš²!t“cop˜y‘½†of“the“DoMÞcumen˜t,‘ÃMand“lik˜ewise“the“net˜w˜ork‘½†loMÞcations“giv˜en“inŽ¡‘=nthe–Í„DoMÞcumenš²!t‘̓for“previous“v˜ersions‘̓it“w˜as“based“on.‘S6These‘̓ma˜y“bMÞe“placed‘̓in“theŽ¡‘=n\History"–8section.‘¦ÎY‘ÿeou›9ma²!y“omit˜a“net•²!w“ork–8loMÞcation˜for“a˜w²!ork“that˜w²!as“publishedŽ¡‘=nat–Kleast“four‘Ky²!ears“bšMÞefore“the“Do˜cumen²!t“itself,‘t@or“if“the“original‘Kpublisher“of“theŽ¡‘=nvš²!ersion–¦fit“refers“to“giv˜es“pMÞermission.ަ‘*¤åK.Ž‘=nF‘ÿeor–Ùranš²!y“section“En˜titled“\Ac˜kno˜wledgemen˜ts"“or“\Dedications",‘oPreserv˜e“the“TitleŽ¡‘=nof›/Rthe–/Qsection,‘G#and“preserv²!e˜in˜the“section˜all˜the“substance˜and“tone˜of˜eac²!h“of˜theŽ¡‘=ncon•²!tributor›¦fac“kno“wledgemen“ts˜and/or˜dedications˜giv“en˜therein.ަ‘,Q*L.Ž‘=nPreservš²!e–?Ôall‘?Óthe“In˜v‘ÿdDarian˜t›?ÓSections“of˜the“DoMÞcumen²!t,‘f/unaltered˜in“their˜text“andŽ¡‘=nin›PÜtheir–PÝtitles.‘Ý@Section“n•²!um“bMÞers˜or‘PÝthe˜equiv‘ÿdDalen“t–PÝare˜not“considered˜part“of˜theŽ¡‘=nsection‘¦ftitles.ŽŸ€‘)M.Ž‘=nDelete–°5anš²!y“section“En˜titled‘°4\Endorsemen˜ts".‘ûJSuc˜h“a“section‘°4ma˜y“not“bMÞe“includedŽ¡‘=nin–¦fthe“MoMÞdi ed“V‘ÿeersion.ަ‘*òÄN.Ž‘=nDo–g!not›g"retitle“an²!y˜existing“section“to˜bMÞe“Enš²!titled“\Endorsemen˜ts"›g"or“to˜con ict“inŽ¡‘=ntitle–¦fwith“anš²!y“In˜v‘ÿdDarian˜t“Section.ަ‘*¤åO.Ž‘=nPreserv•²!e›¦fan“y˜W‘ÿearran“t“y˜Disclaimers.ŽŸÌΑ'¿«If–Øthe›×MoMÞdi ed“V‘ÿeersion˜includes“new˜fron²!t-matter“sections˜or“appMÞendices˜that“qualifyŽ¡‘'¿«as–XSecondary›X Sections“and“con²!tain“no˜material“copied“from˜the“DoMÞcumen•²!t,‘g´y“ou˜ma“y‘XatŽ¡‘'¿«y²!our–ãkoption›ãldesignate“some˜or“all“of˜these“sections˜as“in•²!v‘ÿdDarian“t.‘”íT‘ÿeo˜do–ãkthis,‘ò­add“theirŽŽŒ‹nÚŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:28ŽŽŽ ƒ33 ý ÌÍ‘'¿«titles–@«to“the“list›@¬of“In•²!v‘ÿdDarian“t–@«Sections“in“the“MoMÞdi ed“V‘ÿeersion's“license˜notice.‘¬¬Theseޤ 33‘'¿«titles–¦fmš²!ust“bMÞe“distinct“from“an˜y“other“section“titles.Ž©(ö‘'¿«Y‘ÿeou–pmaš²!y‘qadd“a“section“En˜titled‘q\Endorsemen˜ts",‘s²pro˜vided“it“con˜tains‘qnothing“butŽ¡‘'¿«endorsemen•²!ts›‘of‘‘y“our˜MoMÞdi ed˜V‘ÿeersion˜b“y‘‘v‘ÿdDarious˜parties|for˜example,‘•Zstatemen“ts˜ofŽ¡‘'¿«pšMÞeer–D review“or‘Dthat“the“text“has“b˜een‘Dappro•²!v“ed›D b“y˜an˜organization‘Das˜the˜authoritativ“eŽ¡‘'¿«de nition–¦fof“a“standard.ŽŸ(÷‘'¿«Y‘ÿeou–f,ma²!y›f-add“a˜passage“of˜up“to˜ vš²!e“w˜ords›f-as“a˜F›ÿeron•²!t-Co“v“er–f,T˜ext,‘sand›f-a“passage˜of“upŽ¡‘'¿«to–@25“wš²!ords‘@Žas“a“Bac˜k-Co˜v˜er“T‘ÿeext,‘Tìto›@Žthe“end“of“the˜list“of“Co•²!v“er–@T‘ÿeexts˜in“the“MoMÞdi edŽ¡‘'¿«V›ÿeersion.‘Õ+Only–N+one‘N*passage“of“F˜ron•²!t-Co“v“er‘N*T˜ext–N+and“one‘N*of“Bac•²!k-Co“v“er‘N+T˜ext‘N*ma“y‘N+bMÞeŽ¡‘'¿«added–NÁbš²!y“(or“through“arrangemen˜ts“made“b˜y)‘NÂan˜y“one“en˜tit˜y‘ÿe.‘À¦If“the“DoMÞcumen˜t“alreadyŽ¡‘'¿«includes›Éa‘Èco•²!v“er˜text–Èfor˜the˜same“co•²!v“er,‘/!previously˜added˜b“y‘Èy“ou˜or‘Èb“y˜arrangemen“tŽ¡‘'¿«made–:Çbš²!y“the“same“en˜tit˜y“y˜ou“are“acting“on“bMÞehalf“of,‘_ßy˜ou“ma˜y‘:Ènot“add“another;‘„÷butŽ¡‘'¿«y•²!ou›)ma“y˜replace–*the˜old˜one,‘2on˜explicit˜pMÞermission˜from˜the“previous˜publisher˜thatŽ¡‘'¿«added–¦fthe“old“one.ަ‘'¿«The–^author(s)›]and“publisher(s)˜of“the“DoMÞcumen²!t˜do“not“b²!y˜this“License˜giv²!e“pMÞermissionŽ¡‘'¿«to–¤juse“their›¤knames“for“publicit²!y“for“or˜to“assert“or“imply“endorsemen²!t˜of“an²!y“MoMÞdi edŽ¡‘'¿«V‘ÿeersion.ŽŸ(÷‘-5.Ž‘'¿«COMBINING‘¦fDOCUMENTSަ‘'¿«Y‘ÿeou›¦Çma•²!y‘¦Ècom“bine˜the˜DoMÞcumen“t–¦Èwith˜other“doMÞcumen²!ts˜released˜under“this˜License,Ž¡‘'¿«under–—sthe“terms›—tde ned“in“section“4˜abšMÞo•²!v“e–—sfor“mo˜di ed“v•²!ersions,‘Ó·pro“vided–—sthat“y²!ouŽ¡‘'¿«include– in› the“com²!bination“all“of˜the“In•²!v‘ÿdDarian“t– Sections˜of“all“of“the˜original“doMÞcumen²!ts,Ž¡‘'¿«unmoMÞdi ed,‘L3and–5¦list›5§them“all˜as“In•²!v‘ÿdDarian“t–5¦Sections˜of“yš²!our“com˜bined‘5§w˜ork“in‘5§its“licenseŽ¡‘'¿«notice,–¦fand“that“yš²!ou“preserv˜e“all“their“W‘ÿearran˜t˜y“Disclaimers.ަ‘'¿«The–¢@comš²!bined“w˜ork“need“only“con˜tain“one“cop˜y“of“this“License,‘£and“m˜ultiple“iden˜ticalŽ¡‘'¿«In•²!v‘ÿdDarian“t–æÝSections“maš²!y“bMÞe“replaced“with“a“single‘æÜcop˜y‘ÿe.‘ŸBIf“there“are“m˜ultiple“In˜v‘ÿdDarian˜tŽ¡‘'¿«Sections–6Çwith›6Èthe“same˜name“but˜di erenš²!t“con˜ten˜ts,‘Mmak˜e›6Èthe“title˜of“eac•²!h˜suc“h‘6ÇsectionŽ¡‘'¿«unique–bb²!y›cadding“at˜the“end˜of“it,‘1"in“paren²!theses,‘1!the˜name“of˜the“original˜author“orŽ¡‘'¿«publisher–of“that›~section“if“kno²!wn,‘!­or“else“a“unique˜n•²!um“bMÞer.‘¦‘Mak“e˜the–same“adjustmen²!tŽ¡‘'¿«to–î‡the›î†section“titles“in˜the“list“of˜In•²!v‘ÿdDarian“t–î‡Sections“in“the˜license“notice“of˜the“com²!binedŽ¡‘'¿«w²!ork.ŽŸ(÷‘'¿«In›ö"the‘ö#com•²!bination,‘Jy“ou˜m“ust‘ö#com“bine˜an“y‘ö#sections˜En“titled–ö#\History"˜in“the˜v‘ÿdDari-Ž¡‘'¿«ous–ÜÛoriginal›ÜÚdoMÞcumen²!ts,‘êxforming“one˜section“Enš²!titled“\History";‘ølik˜ewise‘ÜÚcom˜bine“an˜yŽ¡‘'¿«sections–ÑEnš²!titled“\Ac˜kno˜wledgemen˜ts",‘Û¿and“an˜y“sections“En˜titled“\Dedications".‘]çY‘ÿeouŽ¡‘'¿«mš²!ust–¦fdelete“all“sections“En˜titled“\Endorsemen˜ts."ަ‘-6.Ž‘'¿«COLLECTIONS–¦fOF“DOCUMENTSŽŸ(÷‘'¿«Y‘ÿeou–Ò¤maš²!y“mak˜e“a“collection“consisting“of‘Ò£the“DoMÞcumen˜t“and“other“doMÞcumen˜ts“releasedŽ¡‘'¿«under–this“License,‘sÚand“replace“the“individual“copies“of“this“License“in“the“v‘ÿdDariousŽ¡‘'¿«doMÞcumenš²!ts–Dwith‘Ca“single“cop˜y›Cthat“is˜included“in“the˜collection,‘y»pro²!vided˜that“y²!ouŽ¡‘'¿«follo²!w–t”the›t•rules“of˜this“License˜for“v•²!erbatim˜cop“ying‘t”of˜eac“h–t”of˜the“doMÞcumen²!ts˜in“allŽ¡‘'¿«other‘¦frespMÞects.ަ‘'¿«Y‘ÿeou–Æ=maš²!y“extract“a“single“doMÞcumen˜t“from“suc˜h“a“collection,‘Î2and“distribute“it“individu-Ž¡‘'¿«ally–4under›4this“License,‘Wnpro•²!vided˜y“ou–4insert“a“cop²!y˜of“this“License“in²!to˜the“extractedŽ¡‘'¿«doMÞcumen•²!t,‘ùøand›éBfollo“w–éAthis˜License“in“all˜other“respMÞects˜regarding“v•²!erbatim˜cop“ying‘éAofŽ¡‘'¿«that‘¦fdoMÞcumen²!t.ŽŽŒ‹;Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:29ŽŽŽ ƒ33 ý ÌÍ‘-7.Ž‘'¿«Aš²!GGREGA‘ÿeTION–¦fWITH“INDEPENDENT“W˜ORKSŽ©(ö‘'¿«A‘]Æcompilation–]Øof“the“DoMÞcumenš²!t‘]Ùor“its“deriv‘ÿdDativ˜es“with“other‘]Ùseparate“and“indepMÞenden˜tޤ 33‘'¿«doMÞcumen•²!ts›ÿhor‘ÿiw“orks,‘©in˜or˜on‘ÿia˜v“olume–ÿiof˜a“storage˜or˜distribution“medium,‘©is˜calledŽ¡‘'¿«an– \aggregate"“if“the› cop•²!yrigh“t– resulting“from“the“compilation“is“not˜used“to“limit“theŽ¡‘'¿«legal–1 righ²!ts›1of“the“compilation's˜users“bMÞey²!ond˜what“the“individual˜w²!orks“pMÞermit.‘¶¾WhenŽ¡‘'¿«the–žDošMÞcumen²!t“is“included‘žin“an“aggregate,‘Ûðthis“License“do˜es“not‘žapply“to“the“otherŽ¡‘'¿«wš²!orks–¦fin“the“aggregate“whic˜h“are“not“themselv˜es“deriv‘ÿdDativ˜e“w˜orks“of“the“DoMÞcumen˜t.ŽŸ(÷‘'¿«If–»Vthe“Co•²!v“er–»VT‘ÿeext“requiremenš²!t“of“section“3‘»Uis“applicable“to“these“copies“of“the“DoMÞcumen˜t,Ž¡‘'¿«then–°Dif›°Ethe“DoMÞcumen²!t“is“less˜than“one“half“of˜the“en²!tire“aggregate,‘á~the˜DoMÞcumenš²!t's“Co˜v˜erŽ¡‘'¿«T‘ÿeexts–0maš²!y“bMÞe“placed“on“co˜v˜ers“that“brac˜k˜et“the“DoMÞcumen˜t“within“the‘0aggregate,‘G°or“theŽ¡‘'¿«electronic–5qequiv‘ÿdDalenš²!t‘5pof“co˜v˜ers›5pif“the˜DoMÞcumen²!t“is“in˜electronic“form.‘ŠüOtherwise“theyŽ¡‘'¿«mš²!ust–¦fappMÞear“on“prin˜ted“co˜v˜ers“that“brac˜k˜et“the“whole“aggregate.ަ‘-8.Ž‘'¿«TRANSLA‘ÿeTIONŽŸ(÷‘'¿«T‘ÿeranslation–̯is›̰considered“a˜kind“of“moMÞdi cation,‘Aso˜yš²!ou“ma˜y‘̰distribute“translationsŽ¡‘'¿«of–Tþthe›TýDoMÞcumen²!t“under˜the“terms˜of“section“4.‘ é£Replacing“In•²!v‘ÿdDarian“t˜Sections‘TþwithŽ¡‘'¿«translations–v²requires‘v³spšMÞecial“p˜ermission“from“their›v³cop•²!yrigh“t‘v²holders,‘êÄbut˜y“ou‘v²ma“yŽ¡‘'¿«include–ðktranslations“of“some›ðjor“all“In•²!v‘ÿdDarian“t–ðkSections“in“addition˜to“the“original“v²!ersionsŽ¡‘'¿«of›Æthese‘ÆIn•²!v‘ÿdDarian“t˜Sections.‘=Y‘ÿeou‘Æma“y˜include–Æa˜translation˜of“this˜License,‘Î and“all˜theŽ¡‘'¿«license–òúnotices›òûin“the“DoMÞcumen•²!t,‘Fand˜an“y›òúW‘ÿearran“t“y˜Disclaimers,‘Fpro“vided‘òûthat˜y“ouŽ¡‘'¿«also–Ïinclude›Îÿthe“original“English˜v²!ersion“of“this“License˜and“the“original˜v²!ersions“ofŽ¡‘'¿«those–notices“and“disclaimers.‘5åIn“case“of“a“disagreemen•²!t‘bMÞet“w“een–the“translation“andŽ¡‘'¿«the–:•original›:”v²!ersion“of˜this“License˜or“a˜notice“or˜disclaimer,‘_ the“original˜v²!ersion“willŽ¡‘'¿«prev‘ÿdDail.ަ‘'¿«If–pèa“section“in‘péthe“DoMÞcumenš²!t“is“En˜titled“\Ac˜kno˜wledgemen˜ts",–{›\Dedications",“or‘pè\His-Ž¡‘'¿«tory",‘A¿the–(•requiremenš²!t“(section“4)“to“Preserv˜e“its“Title“(section“1)“will“t˜ypically“requireŽ¡‘'¿«c²!hanging–¦fthe“actual“title.ަ‘-9.Ž‘'¿«TERMINA‘ÿeTIONŽŸ(÷‘'¿«Y‘ÿeou–”maš²!y“not‘”cop˜y–ÿe,›—¾moMÞdify“,˜sublicense,˜or–”distribute“the“DoMÞcumen²!t‘”except“as“expresslyŽ¡‘'¿«proš²!vided–¡ðunder‘¡ñthis“License.‘Ð|An˜y›¡ñattempt“otherwise˜to“cop²!y–ÿe,›àÓmoMÞdify“,‘àÒsublicense,˜orŽ¡‘'¿«distribute–¦fit“is“vš²!oid,“and“will“automatically“terminate“y˜our“righ˜ts“under“this“License.ަ‘'¿«Ho•²!w“ev“er,‘ó·if›äAy“ou–ä@cease˜all“violation˜of“this“License,‘ó¸then“y²!our˜license“from˜a“particularŽ¡‘'¿«cop•²!yrigh“t–Jholder“is‘Jreinstated“(a)“proš²!visionally‘ÿe,‘sšunless“and“un˜til‘Jthe“cop˜yrigh˜t“holderŽ¡‘'¿«explicitly–á_and“ nally“terminates“yš²!our“license,‘0and“(b)“pMÞermanen˜tly‘ÿe,‘0if“the“cop˜yrigh˜tŽ¡‘'¿«holder–"fails“to“notify“yš²!ou“of“the“violation‘"b˜y“some“reasonable“means“prior“to“60“da˜ysŽ¡‘'¿«after–¦fthe“cessation.ŽŸ(÷‘'¿«Moreo•²!v“er,‘Ï8y“our–Ç license›Çfrom“a˜particular˜cop•²!yrigh“t–Ç holder˜is˜reinstated“pMÞermanen²!tly˜ifŽ¡‘'¿«the›V`cop•²!yrigh“t˜holder‘Vanoti es˜y“ou˜of˜the˜violation‘Vab“y˜some˜reasonable˜means,‘fbthis˜is˜theŽ¡‘'¿« rst–Wtime“y•²!ou‘Wha“v“e›Wreceiv“ed˜notice˜of˜violation‘Wof˜this˜License˜(for˜an“y‘Ww“ork)˜from˜thatŽ¡‘'¿«cop•²!yrigh“t–Õúholder,‘áÞand“yš²!ou“cure“the“violation“prior‘Õùto“30“da˜ys“after“y˜our‘Õùreceipt“of“theŽ¡‘'¿«notice.ަ‘'¿«T‘ÿeermination–Nuof“yš²!our“righ˜ts“under“this“section‘NtdoMÞes“not“terminate“the“licenses“of“partiesŽ¡‘'¿«who›•qha•²!v“e˜receiv“ed˜copies˜or˜righ“ts˜from˜y“ou‘•punder˜this˜License.‘ªþIf˜y“our˜righ“ts˜ha“v“eŽ¡‘'¿«bšMÞeen–Îterminated“and“not‘Íp˜ermanenš²!tly“reinstated,‘:¹receipt“of“a“cop˜y“of“some‘Íor“all“of“theŽ¡‘'¿«same–¦fmaterial“doMÞes“not“givš²!e“y˜ou“an˜y“righ˜ts“to“use“it.ŽŽŒ‹ Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:30ŽŽŽ ƒ33 ý ÌÍ‘‡“10.Ž‘'¿«FUTURE–¦fREVISIONS“OF“THIS“LICENSEŽ©33‘'¿«The›ÿaF‘ÿeree‘ÿbSoft•²!w“are˜F‘ÿeoundation‘ÿbma“y˜publish–ÿbnew,‘UŸrevised“v²!ersions˜of“the˜GNU‘ÿ F‘ÿereeޤ 33‘'¿«DoMÞcumenš²!tation–ÙâLicense‘Ùãfrom“time“to“time.‘xRSuc˜h“new‘Ùãv˜ersions“will“bMÞe“similar‘Ùãin“spiritŽ¡‘'¿«to– æthe“presenš²!t“v˜ersion,‘?…but“ma˜y“di er“in“detail“to“address‘ ånew“problems“or“concerns.Ž¡‘'¿«See‘¦fâhttp://www.gnu.org/copyleft/á.ަ‘'¿«Eac•²!h›ˆ×v“ersion˜of˜the˜License˜is˜giv“en˜a˜distinguishing˜v“ersion˜n“um“b•MÞer.‘ÔIf˜the˜Do“cumen²!tŽ¡‘'¿«spšMÞeci es–r”that“a“particular“n•²!um“b˜ered›r”v“ersion˜of˜this˜License˜\or˜an“y˜later˜v“ersion"Ž¡‘'¿«applies‘æQto–æPit,‘öLyš²!ou“ha˜v˜e–æQthe“option‘æPof“follo˜wing“the“terms›æPand“conditions“either˜of“thatŽ¡‘'¿«spMÞeci ed–Žvš²!ersion“or“of“an˜y“later“v˜ersion“that‘Žhas“bMÞeen“published“(not“as“a“draft)“b˜yŽ¡‘'¿«the›î!F‘ÿeree‘î"Soft•²!w“are˜F‘ÿeoundation.‘µIf‘î"the˜DošMÞcumen“t‘î"do˜es–î!not“sp˜ecify›î"a“v•²!ersion˜n“um“bMÞer‘î!ofŽ¡‘'¿«this–$œLicense,‘D)yš²!ou“ma˜y“c˜hoMÞose‘$an˜y“v˜ersion“ev˜er“published“(not“as“a“draft)“b˜y“the“F‘ÿereeŽ¡‘'¿«Soft•²!w“are–ÖUF‘ÿeoundation.‘m©If“the“DošMÞcumen²!t“sp˜eci es“that“a“proš²!xy‘ÖTcan“decide“whic˜h“futureŽ¡‘'¿«v²!ersions–é)of›é*this“License˜can“bMÞe“used,‘ùÚthat˜proš²!xy's“public“statemen˜t›é*of“acceptance˜of“aŽ¡‘'¿«v•²!ersion›¦fpMÞermanen“tly˜authorizes˜y“ou˜to˜c“hoMÞose˜that˜v“ersion˜for˜the˜DoMÞcumen“t.ަ‘‡“11.Ž‘'¿«RELICENSINGަ‘'¿«\Massivš²!e–{"Multiauthor‘{#CollabMÞoration“Site"“(or“\MMC‘zìSite")“means“an˜y‘{#W‘ÿeorld“WideŽ¡‘'¿«W‘ÿeeb–Leservš²!er“that“publishes“cop˜yrigh˜table‘Lfw˜orks“and“also“pro˜vides“prominen˜t“facilitiesŽ¡‘'¿«for›M an²!yb•MÞo“dy˜to˜edit˜those˜w•²!orks.‘ÀEA‘MŠpublic˜wiki˜that‘MŸan“yb•MÞo“dy˜can˜edit˜is˜an˜example˜ofŽ¡‘'¿«sucš²!h– Ya“serv˜er.‘µA‘ ?\Massiv˜e‘ XMultiauthor“CollabMÞoration"“(or“\MMC")‘ >con˜tained“in“theŽ¡‘'¿«site–¦fmeans“anš²!y“set“of“cop˜yrigh˜table“w˜orks“th˜us“published“on“the“MMC“site.ަ‘'¿«\CC-BY-SA"‘8¤means–8Éthe‘8ÊCreativš²!e“Commons“A˜ttribution-Share‘8ÊAlik˜e“3.0‘8Êlicense“pub-Ž¡‘'¿«lished›8b•²!y‘8Creativ“e˜Commons–8CorpMÞoration,‘N(a˜not-for-pro t“corpMÞoration˜with“a˜principalŽ¡‘'¿«place–òof“business“in“San“F‘ÿerancisco,‘7£California,‘7¢as“wš²!ell“as“future“cop˜yleft“v˜ersions“of“thatŽ¡‘'¿«license–¦fpublished“b²!y“that“same“organization.ަ‘'¿«\IncorpšMÞorate"–­zmeans“to“publish‘­yor“republish“a“Do˜cumen²!t,›¯?in“whole“or‘­yin“part,˜as“partŽ¡‘'¿«of–¦fanother“DoMÞcumen²!t.ަ‘'¿«An–&\MMC‘&  b> ó3 cmmi10ó=ßê), with Reserved Font Name CMMI9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup /UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI9 def /FontBBox {-29 -250 1075 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI9.) readonly def /FullName (CMMI9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB 7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67 7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8 BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365 82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74 91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E 540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112 7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8 93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756 972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A 6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149 796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94 DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80 E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D 0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83 F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9 ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97 72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9 4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1 692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109 4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1 CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59 41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A 9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20 5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292 2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5 8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B 33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28 03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1 749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE 3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F 64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F 90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05 DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8 F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D 4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF 49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4 E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117 58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE 88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3 B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE 7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776 01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46 19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41 194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55 53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3 F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4 412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6 C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108 4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831 E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81 AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF 00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91 C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8 2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980 F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50 0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023 28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4 E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42 20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B 7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE 5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4 74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4 90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55 3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621 98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066 54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7 93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC 19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A 9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84 A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB 107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA 5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08 22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95 B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D 403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789 D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6 20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6 943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33 AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70 B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA 2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84 2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F 8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642 87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4 2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842 D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC 512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4 4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559 6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9 9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A 0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040 9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1 430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8 56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE 718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3 F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE 95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE 6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7 6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867 630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111 6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA 89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475 3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2 90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47 38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34 EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9 B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376 9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9 1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF 1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C 62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5 84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2 AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618 D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196 BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6 4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6 531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24 FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2 43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256 D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6 0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4 E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53 DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358 99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD 8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1 8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73 A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5 362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3 C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79 E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2 07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F 0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6 190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4 5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50 005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8 6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9 F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087 F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE 2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752 F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0 0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD 73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2 62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79 5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98 F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F 6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7 DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109 EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222 E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107 536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18 36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3 F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0 431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900 5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C 074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78 E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77 2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600 324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR9 %!PS-AdobeFont-1.0: CMR9 003.002 %%Title: CMR9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup /UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR9 def /FontBBox {-39 -250 1036 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR9.) readonly def /FullName (CMR9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 48 /zero put dup 49 /one put dup 55 /seven put dup 57 /nine put dup 72 /H put dup 83 /S put dup 97 /a put dup 99 /c put dup 100 /d put dup 101 /e put dup 103 /g put dup 104 /h put dup 105 /i put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 118 /v put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340 15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4 B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029 85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955 F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D 2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5 B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7 78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7 E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3 41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277 B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072 55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA 700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9 8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4 FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4 3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15 B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2 AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013 461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85 CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C 4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F 291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223 D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181 C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115 D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9 9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405 2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380 A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB 2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E 2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6 AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577 9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67 0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D 9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B 42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0 C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35 623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6 B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4 E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97 CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D 07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7 53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350 EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9 52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88 F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3 81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6 B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A 31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293 846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733 46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E 44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08 A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5 1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4 D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344 6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E 24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E 75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51 C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0 5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034 099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281 7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE 53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84 7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F 7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933 CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD 866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826 ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64 FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B 40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643 D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8 2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787 39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2 1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4 F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9 253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B 14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085 6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B 9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339 FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F 289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3 A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5 5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46 5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652 152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE 67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3 BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59 3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88 713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF 2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5 D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143 6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9 F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95 26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970 350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700 70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5 F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95 F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8 9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2 DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473 F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D 064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF 1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325 A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF 01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C 40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C 72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645 24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1 EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775 D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311 83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483 5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448 1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69 AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC 4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3 7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9 65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063 B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6 FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6 4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490 8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6 1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3 10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4 8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0 7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F 852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C 3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997 648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD 855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE 1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C 1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0 B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7 D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99 24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C 552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733 6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0 800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8 6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659 E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4 5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2 00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4 82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7 6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3 128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D 744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507 84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86 5C7A69BCDFE8ECE3C5F1C047BDAC4B2DAF36832BB25487385C650FC3C30A0894 2CEB8973FA2E6C749D88789C550C32B2230FB689F0DB5E9F5E2A8133F6477232 AD8B11FBDB46362C03A2967EC7E875CC0D0C94437517736307F4B8887FD275E2 E346171058EC303E62B84EA810FCEBB2905DC186B95AFC6AD4127429E71BFC7B 79E612C18501DFE5AC0E7921BF1C6BD483FD867BC2938609EE52C0271A7ED1FD EFEA3CC6F0872C28108F7EBBF5BF770C0BA6C712275E1239FA44736247CBAAD5 B856D7BD6E5E186AC4C3913293D99529B8F9EAC85FE548406DE5D90A058F1106 F98799495DBB3A05C04BD649053FD29380E217942F71F70C30735423F6F13DC7 F5015DA9043FA42C1045FD7E0F586CBF2D967E468B2E8E763415D60AEBA2BE7A BC199BFE58FA66F52AD7C5ED80B4481C08EC85B51D5111091F54823FDAAC9DDF DDFCC6DD16186911750F761F9907A438DDF4506C6ADBAE868F8AE594EDD14B67 2F4AE01822A99E924DFA530CE96B6A830ECE92ED0AA54E82D971689EA5AACDB6 EF5562BF5C5C05996D08F30998D4C5AABCEBA2668C779577B2ECF422EB0192CA E5A6376D0A7DD36AE46B713D0F7BA51039E05F76B3DC275C95EE5FAF3A6D8765 36B55707F5DA048F27E64850AF042F96BFFFD3B3903C60869AB41C1D92AA8ABD 1FDBE17E30BD3C035BAEBD18239DAA330A84A5FFE1F4E73AB0D97814C976112B 9DE60C280C67CE7B6B5CCD4A00A4866D2F89FB374260E9C0D1047C26DAA81658 42A4DDD43FC3AB8DADBB4D53C5BC7FCBD0403E755FE896AA75B11435C7A68AA7 2F30E648E53BC96D108520D9CE9193DA216221F842FD0F3FC6533B95EA18BBA9 22286C98403528F049DF779B434B60BDE95597FF0AABEFDF460AA0BE6AC0D179 D8120F9E6B053113D442CC584FD6EA91C4F94FEDE368E0B9DE473F786B0FE914 21F3099CCD799C271639CC314F9940AE48775B4094985B207F8A833037FDCE9A CC73F75B045E923878E5F33D28C98CD7E3D8B59B2FDC4A483CDFE067EE6BB49A AA5DC515825A9FCF3BB17187332CE5CC9FE34A8AAB8931883A177C37610A75DE C881A5C5EC31782C568D1B04D2233CE0930FA5D878A7BD6CAB5CC86EDEB29124 A9E47F4F5A8A95B780B4286397595596B95B7422964D5D2D609CFE3440E62146 C04C75E9EFA7845A3A760AD00863134C211BE72DD261ABBAE39CC898A634A429 F9D0B4733117E3217EC749F520C8AEA79C2D61038BA7A2B491D23FD512B31710 8280D8DF30D8CA287A2B040C71F73911C8D5C8917C242C02A331EE280CECAEA7 FE970E55A74B44A3EEE8ABE0E207824D81AB21C8AFCF5D4BAEA507A2B669177F E94D14189B0552342C288137DCE659AD2F629533B07E8A668E68D117A3EAD47C D56112F27F9B4CDC7D414D3B7B50B4F489556C7BA0A3DB7E8C29DB3630B72D10 2B874A871540D45D3F9B39005F6F4D8095A21EC9F557EB81CB08D826B257A40A C29D2907B33C90D28E6FC5BF776DB2466800F8B10325A5A826C7C959ECC2D2DB 3DD7EBAD12E1955C958FE51559594C29EDD3DE5931CC13C766F9223C555CCFB1 6BD1571D1F0F61584608EE366E37AA4B5DE50459E00A2F7DBF7232980A348B0C AD0009DCFBAF1970B2A8022199FAF4079610E9E335396BBE2B43906C5D49FD87 0013EF41B79E49B5EBDE37373B8179748A2208ECC9987F45BACF7B4FD3D56A0A 64873020DCE8EDE7ED99A63327FD3D695A193EDBF90DC8A018BCA317B08759FB 45133229F99FFC9557D0FCCB67758049A446061AE96830DA3951E84323A7DDE5 75937E1E8FC44D1B4B272C6F2FBF4E1A4F314B548E46EA8A4DD6076BA24CB572 B26681037ADCB67BE340151001642913BF172ACF92FA3787D8743830492E2781 D54E9771414C185B58E15953350D2486757F78CC5E099001627AFF7B58C206AB CCBC550797B79F6DE84CDF2049AFCB62812CEE8454A918504C1463A0BE0B5664 DA447AB71A060B517ACEC106C6BF9AE03A6D15026DC7BCF3AA98FC41B2D263A9 9D7889A5C15AB3EBA00DFC9E095BCC4C44547D566AE9831B7AC4B253C2658571 06DB8A68192AD9586DC7E5145B47DF21660523F680D85246E3756169B3FBD813 8EC48A865241182332BEF52606D9D8F980575A7A8CAADA6136AC9CE8532125D3 6C3EB26E2257F6EB80314143177A167F533171AB5C16D71F28FDBC1F16E06499 4688185850778D7372DFA56845D468CD19396FF3EF1AAE7F596542A55730ADD1 9574BB00A15289BDBE8796C599B0D4627FCA53C1486F7124FA047093707020F2 B161B3C343CE9B31FC9E9E37619FA30D58A082F41601EE3E7BB420DEF4C8A0FD 6254E9EB5D2927452C649DDF5D0B2925126FA9EC4D65D711CF943FCD7F58C518 9BAED942FA06619E39BA7EB20492EBC7EC93D95965C6121CDE165CA660A8FA9B DD40C3EB89C0E2E963440FF61F98F039974ED30A1E080D5AE6E801B081D89235 DB8FD7D0EFDB5386ACB4B5ABA03E7D9F82C7F3F2C57D6A4DE8F972075FB1979D 1537F128E94BB3B4CCABF46E2033DDCB213F15B16469F7410E70499F15950CCF 6E1F83C4B87C25FCEA468F8E5B973AFCD5EF74438A5ADB3BB0D91A0C38329070 9EAF71DF918A74D81228B1860BAD29FAFF284E6979D5CFE5F745A90E14C5FD71 8F856C4DDA56D045EE22877F25F3330D16A825F61551CA52EA1852ECC7A2CBE1 9584C756FA0A322CCAD06D9A1875BD14690A0ED6115C23DD0C3223EDD5E79A9D CF18EF3B3240DEA92AF27D0D44BBA56788BA3AC4F97782D02F742721C068B702 62D59D8FFB2D2C5862F5CE393E2D9AAD5A7969D22F7C8AEC9BA90F2ECCFF54DE 98CFCA43192EBC2BA294810AEE0DFF0D98ACA9305D1A33F8912919C03580F2C5 2AE44C0C1255A876EC4298E12F1BC17BE3F3E9F43616D3E3440DA8E0D5044DD0 35895C4DC1BC280ED84A564F79227CC2BCCA1B39DAD02789B13FD15C9B60B3C3 9C9C47442DCCCB9377E8823D7157FDC1F734EFB6A53396BFD22839A97CB026C3 E29CACE7A9E8D9AFFE49AF1AAF800E013A8ED5A22CB3FC0504F1FE34F2068813 229C62C9435372C81312CC73465370BB4540E24A7D35701A4F0E598BFDFF939C 164481A395C61BA61748BA0FA396F7360ACE2A6E8AFCC9081AC259D7F8C4C4B3 5FE223CF1C93B3F1B75917E855A5BDDE3976A31887049A4AD6C8234E1C0D3E31 C504CCCF33E22E3A7707C0398E2F994EA40B47AFAB3B6B7C6C5887B79C16E255 3033428DC3A0AAE04486F36E1881DB296AE845A2F422E7A79F4A048077CA31C5 7531E2B5F5F5D7D91F8C5B6711952C5D744BEC6DEA810510F9CD16E95C9143AF 9227F14C4F2C5EE75C82A62C5C8D80ED13DC518BB3465BE921BD31ECFE0AEECE EB94D3C5C7687BE86CD137055077E60BC1F134E9BEB3E4F709528A893B54B4A3 5B48529DF1A4FAE03DAB8C28D821339B384F4F5962581CCDA583C0EC09D6263F 96F61A14840557EC0FD9C17C33C1D507F0B152D5AC297135C2C6A331A4FCCC6D 501A08969CD6C091EF9AB457755680F34D61DC0F1C5474CBE940C68ADE951D8F 9ECEF97273115AE580D2756462AAC8B5047EEE3F3ABBB03EA8DA7E3F331185A3 755A826B27915EC8C9BC4A4528990E5F84EAB95BF8F14A6A3A0ACF99ADF30921 87029D30353ECB1760279B8677A55A0D71F70620D66E1BFC747D4B901A462E47 C87F864B6CA670FF56F6548E38AD161AC74F8525CB8D4DA880506ACCAED5F8D3 4B7D484F76F4C54529888A9F8BBD2DE8876930F334CDB54D9CD72A66BC03C549 3FE123DBFF46D80FE89993F03A8585E5C90F47DE133674BCBB7D19FDE6E8A89E EB90176F92AA3C095825F515627CBC11E4B0D8EA20D3B435D2050104716BC1A1 89F3C00B4AE327C643074D5D7CCF3133C39967DDE5652861DF69D94324CA68D0 A8B8518A829D4A0884B1B8A3A06A2E144B8B73BB90419EFA4512B181301507D6 7EC25983C83C544A7A8B6DE922AD09BBB7B378A3C53E260744EB821ADE6FA512 40004D22029EBB932450C6A6A703D5DF1F7944D12EE69F5ADA72BAA3E69786B0 DB79B8D16CFB37C0B6CAE7A94C9498654AAA21B76D51FD067A00FF477A6FEC5A 27525F85273B01575E49F10F8A14531E9750FD38666427B020024CB981696A89 079D10650FED50A1989C1A9C509170C4C296DD40E87CF9F8F78C8904E7AE5D90 F872EFBCECD772C622458C09503CD98C1EDDEE09AECF940640D979B5087013FF D1AA7582CC928483F8CBD2A8CE5D2545BC45FCAD47E48FB0A0A3F9A1AC37FE8D 531380F14718773ADCA01C090104119844DFDB128801D1BF8A086CC6142E4644 AA58DD23B910DCD4A88D4BD0CF65CBB006421CEE74EE1B279A7A51D9C04D2E42 23EFC041C1B943E694A389B4A9E3901632A5CA640F91D1EFDB6C88072BDDA54D EC583FBB93FDA9C9C61D1D98AA1FB1A2BA4C72B1390F87688027F29B6FAF70F0 E9D48093324B2895F129AEF3187649C6FD3C26185A812E489159ACCA2F2FE797 D283B0A26A07652415D9D4A02D46E6420D2D890E26D23FE47589ABE8CE9B4A94 8D880612325E470D820B30E842D2A46F498E3C6EBC68FB53E5F7FE8EDEF8F7CE 85C8158DC36BDB6F3584B46E3843013FDDF31229215045733B3078E344211AD7 8DAC4332A5DD8CD8B1BB6B9C654DAE5BD33E813C70A0C90A187BAAD38C39CF4E 0C46C54F0B282AA168B3B77DB004678EC86B38601E34E989B5E82B4573133F27 47FB6FFC01A26A4C1BA9CA5B69EFD9288B62E53756161EB3EF1407C426199524 26CC7E5318B3D36345FC17734B971CEB33703A2BD3882B5E360EA54F48BC4441 A5947F2917E184AF56FAC34FF504A8212B794E212646F0BE71EF55E013DDAD18 7255F33E0A209DB1A0C45BB8212E46DC626F08121850C0177E916C98FD2B4BC6 6AEC7AACF4B3D19630A5BEFBA00FE0AC7EE873FEC27854BA0EB16DCFDAA17C2F C0057C85BAC9244AD05F88CC05D2A09CAC0AD4B01EF0FABFE565F3CC71111A7C 6AE1FEB3C657B982AF72ED527491863AFBD1C8473A7C28C6769C8A10AE18145F 99C87772D625C02A6224799B01B67E21CB2202719C309BB2A5A781A9B67BA67A 56C18BDD7749A684464FF0528A40EA576EE8ACD132C78B81E012827708DE9504 733E9F692C17365DB8D4BADCA04D3F5F968D21F77111AEDFA9BD53D1BC39D68A DB875CADA1AD9E50E79516A37F11BEACD46B02B3AE11842178CFFE9990B2B16D D5AB4F1CF9EC349D141F080DF768BBD6CB785DE6A665CD74823ADA7B737006F9 7BBA98A9B44965813A441931DA18873CE327DFD35E8192C8809F02BBED8183BC 17AF50BB95750F660288D5B3E13001A1D330056D50D4D069403595B8A18DF321 BDEC558D0210BC679C135D8C2BB83A5E5613EDD51E76BD2DAA67FA8E74A26A75 71F2849B4E3B4593757DAA4270A3600DF96A242EBB69E947140CA154B443B908 44698C41B488227F5AF0EFB0D8A2E015FB9A90D28D9F7707FBC2B2C65F63E289 69575B2845A823F03F6CEE1BF783568C70E4796D387F03D4CF3E4328173D2B08 CEC1D2694B13C395B981C0EC9169EA35808A26527C1B7F15316426697804157B 76EF0BBE41A42F5590CCF7AA901AABB3DC32DBEEF7A24A1924B10DE655C73EBD 3071FEF7276EF38FEEC7F544AC1B68769CBE98237AB8EE411EF435E71D51373F 64C55CB88B3C482D3B47DAD804586E5077F678E72B67F6C85FCBD0A6A9BFAA49 F87CED403626DAA867C300F3B2D2C597DBADC3DF8B15746B33887B2C4C4CCF53 EC3AACB2DACB914B458B9E0C373C2B323372FBC8489D30777148AD3167784E28 22F5CA86A3C54E144CC6FE93F0A2F7D95222DF69B0F4B896AE9E4E12600C4054 CA7CC585809E64724ADA88EC845D87F81C314D5A1EEEC25DAA1544DA0169163E 87416F4222793775B0FF349EFBCD14A32291FA6B63F2E6A0183645EAF31E2D85 E8BF8BDF43790F86CD11F90153FE852FA79E57E465C41E4E5A6B7E7913035B71 D7AAB0E5B7FC2C953558DF1B403D9791BFE2BAC479E2BBAFA9AAB4D749DE02DB F2A9D3CF3D2CF8C4521D453478024D1824DE9C21F34CC387A965570351253EEE BE8D920B219106CB0401569E7C81ACBC7B3DC3B1C4FF14F017366EDA62493257 B099439672EF7B0BF954774CEDF3B0EC19887613338A66821E9CAAE0B2864E68 C0969234882AA39E2AA90AE9E3B2CA22DB3178D29D4106B27B781C4752302EBC 56DE145488C0306CFB3B4E23A3FB9D1D3156EEE5CE6040CE446D6EEB8037736C 176A8A855C8F665F6B55878D9F3A10B9CC2838474095E13DF61D6AAEB95900A5 3DFE4D7D25E4885A19EC5856AF7617AFE79182DB185FA4656061E36F260C4316 42A4589E7CA8B2C95DF751A861C2EF2921B6A8181C30A7E0112015FCD9F20590 26AEAE99AF8F170CFAE5EC19BC396DFCD32CC78CBC47A485ED6E88D4871C5D61 CE271F3AE45222C8EBAB0EBE432D3D2BD9CD69CDBC9E2F47961C9F74589382E3 F7D6C133D7CA2E7C52835C48AA83452C69E7127F031DFD26B40CF409D3408D88 56F8576972EFBC947400C8485F55267579C41C83D5418BA24AC9ED39DE4001E9 68D0062ED8B8CFC5ABAA91E59D2B33B77F42D70CF896F3CA5408951A25CA3A4C 9B31EF3BEEFFB5C9F62BDDBD38029B27D2FF99461F3A9DA8500CBA6A4F46F489 89F51D149470F18DB41F5DFBD78D82011019D3F6EBFCB4F9A6959B87466C259D BDD14B284F1954ED9BEC8AABD2A94043F8BEF7F14E15BB7901151B67B4DCF824 FCA42BC7DA7CB54062AEAD59ACB7F5A0B48985D2F408C6702FD25BA5869A658F 80024778A4A078AFF95332A0E113D9F0C71051F46D3D2657AE8191CA7FD9A813 32A50908D672983773DDB25A9D06A174B750A19AF2F06BE981A5FBC999F20171 3060FE8BF2DED7628FF1C2A22BD4D288AFE44FA6E0515D48C35F60BCE52A847D C5F340DACB8FA15544552D52D819293765B7BA4184C504A8656797F91765EC53 BD0A8E2EDEF3C5F89D7AE357E1C5CB10C5689AC67D0998C0BFE07B0BF1FF0E51 F0F93EE4D49CBD3C29394A1AAE2D9E7D899029D9F5C768B7D70177B44A3BA335 02E7AEDA13E132AC1D91FE66A194827B00453C72647EEFF3BCDA0BEB7F6D2AAB 50D477D017DF0341EE249E8CDB07D8764DEC30B217967EF9422ED96D7BA3278B BA6A9659A7AB945CA306399726CEE1FE24856DA2CD70E5ADCAFBEE37F2F4E19E FC780DFF2899C82FFAA0A2FE9A5A3DD6A8AAEC10998A377DA8AF8CE7CB2CF4B8 7AE85B74674370669A06F7A3C4C19312318C7BEA80C5282F18A1C870EA786671 3B5123B88BBA35EC72B1855EF6539F00EBE6B574BF0D26A528441588A191F6F8 A49C8AF170CF9455BEF83152DC0438DF17B350FEE2B9CAEBD92DF32205990FCA BA6455388C5CB8CF444C1DAD0A1028B369E6DEE21EFC40F557EBF6A8BC91603D 1775A1A0DB52DDD9B0F8F86334D76018B90808A3569701471CC6A9543345070E D981CA923C7A49E22C758B639D085B001C2ED5D54331AFE2D95FA1D77C9655A7 8D920659F7A0127ACEAC6E687B9D4F5D452761CA30B7EE6BF7B17F86B7715422 902AA3FCC3B04FF410B5184A2C665F24E0B2A0E0F06E0A5E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSLTT10 %!PS-AdobeFont-1.0: CMSLTT10 003.002 %%Title: CMSLTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSLTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup /UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSLTT10 def /FontBBox {-20 -233 617 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSLTT10.) readonly def /FullName (CMSLTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 49 /one put dup 50 /two put dup 97 /a put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA 3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC 6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F 3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C 4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90 DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2 753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131 54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D 107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3 7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231 328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9 85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C 2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7 308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450 CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195 739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93 FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6 F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312 3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F 55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB 69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50 82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0 8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8 0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6 0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8 1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1 D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737 170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863 767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3 826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235 8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048 345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE 67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD 802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E 20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127 5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07 0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36 22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC 4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B 4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880 0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5 220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403 7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005 27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300 7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07 A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D 45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10 F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7 C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65 AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012 DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781 FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA 997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4 3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A 2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605 31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22 A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891 43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D 4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5 94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E 425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616 FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5 51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9 859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852 E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F 2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910 82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA 22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D 200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5 892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32 0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140 437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3 BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9 E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402 DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1 CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551 80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA 9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41 031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90 9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3 9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891 4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB 57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B 2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39 0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9 03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067 22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79 06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC 39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163 A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6 9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6 B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F 79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553 2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5 8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA 1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA 0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2 BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3 312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3 B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F 9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16 A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6 91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F 7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D 78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC 7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09 766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11 016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3 8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278 E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC 6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8 B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959 44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE 5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB 42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57 CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009 9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2 82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72 0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5 F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9 EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F 14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8 BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2 9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5 6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A 6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116 4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C 9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780 42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE 7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024 1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D 4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540 CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4 D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81 CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1 0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9 92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0 57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4 5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4 57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158 8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0 C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3 7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7 B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674 EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521 D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9 DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074 F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0 56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8 46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40 52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA 19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D 465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02 0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE 078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339 F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6291 4663BAB0C9AF29F46951712C354B1EB67CF3FFF6DB1FD83F056774CC7F2283B2 49B075479604C9B305D9C4587AC495570DF9C4F05525921AFF53D81C0D5AB7B5 6F00251395F7675345C050C6679867C964E82EE6981E93684B0B28AEEE03B79E 4C26DF3A514E97F57A397BEA4315C09652254E780916102F48220688AF69BE44 0C2CD2F43A576F4606BF4F1817C78B7068368AE36D593EC32F0C344B0D728A55 089C518FC3D903FBF3FC98EAC7567224389B666D105516F48B7F46FF5A13572C AA7A87B6AD749B9718946CFD1AE8B6D3CC90CF6A87B9B2F0C2F56D5FDA37CB61 6AC4D8EFFF054CC016233A437E615F13A2A393CF269C603D2D57683047A0685A E19032F5857E84E9DF2D16FCCDCE2C3679DD509E5A6058CC9FD78A7846017FD0 178C712CA8D1B9A9D2DFEF19887D01D19B7C3AB4A02D5CFDED33131B7E46AB35 3091A04328F530A8296C6F35EFA6182ABBB64C78682160034BC4D9F68EFD6000 0B844CCF122E632068853944E646E33AA88CB79B127254FB45132447BA9D7AC4 219AD1D5FD4D77723C4026768A051FFCF2AF1B7E22D2D598D0BB54669B0B81F6 E010506C1FFF5BF04BC512CD766A955212B373C41EFA8733798257736CFF8B51 52BE941B6791353A134E451A83BEA38C0A187DDFD23C2B7EEAC1A2505D0355DF 840C695952357E8780A6C9F47BD189EAC599A7C278B5E1E61467EB671953C2A1 C71E035F3C66D88DF56CD37A37A400BB39D5CFB15A5007F9B339A5DD70ECA10C BA6B38B84502FD74512D99E4B8E06409664C7523EB035E6188DD37140CD7FE55 3878C6AA72F2065C7DC50D34DF0308A2798BA4E69E96AF19B916002EFAD38731 EF1E8CB091AD21DBB2CDF345E5833EC2E51984A841B3EF04E0AE87D470288B7D D42BB81C4A732FDED84096C947AC915AC401AED151DB68FAAC3A721833673B14 3F7BB8111DC05BB7F707A9F57ABAD8B53337203640BA33B1689C9E431991EA36 EEB231066F374E62432DDD055189844E5695469DC4511CFFD616FC4803C864D0 873874A028907E5D0B8308DB5A19C65348926A62DF837AC247E7D6A55E23C696 5313A67FFD96DE214B403B5A8CDD93E4CA1945C89EC9057D0456621EFCC1C42F 61E7C1DBA1F6EDE6A4BDD6D319C6341059F62609F14EF9E82C965D20C44BCBC6 06B539365913C49FC2942C94E574415896FD459F5BCA2AE963891433545C5A11 A85AE5ACC8E5995CFEA2482BD2BB3CC844F2D3A83821ADD3724A180D1F042206 00581E061573D63C543AC5B9585B2A5D201A84A3434595C18761BEFDD00CA4E7 2956D4486197F5AA7024E5FBE2FE197BB6491508E89A67574A63AE346019D4D7 D4D23DE0B9D1D544ED82E0068BEDC5CB1E953204D731D9FA5AD7E8567E10B3F9 F54F745A44FE06E6B2CEF76DCE87281F2D4B57C343844CAC894C1E3074873B21 CC6DD0DDB106CBC6FF0DC13CE3132E9B86DC5DEAF638C0B240151ECC41DEABCA 0F1573C9B6A83E176FE8B160770AEB16E1AC0BE350165E28DBE259ED7BB1200D 83708D25774547C2D86354CD161F8DF70140EEB8DFEBF8B916005C5A5D3C1D59 6FBD8EAAC2A93F3061E700D2CD04E803DA26401743B9AC7CCBA5F99E88E401C0 453CBFB8309877E1003A65A898AF76F89C54FE4D5A4B51F07920967757FEEE7B 0836ECB7F66E922DAF520F32D9ECD0B83CD7719CB95579B6FC27D6E3E7DE3E8B 03965C6925CF9FCA4F06EDFE9EA48244C7A315B866D6B3F5C767B2B15FBCCD5E A609DB4FCAB2C2246D320DF17D60DEBD6C2E78FF32CB7D120E9D1251E0866D14 8B393910D9FBB4225C1B384BAD153C2B1FED53725B3F4FA46CB6DB649F6F1380 9ADDBD04FFF2A8F3E53A6AFD44A55A1C394E2FCC723EFE4A30FE24963472BC9A F349542BDE1FC7CE25DF0484ED3A1A344007FD9BDB04E863BBFB60996570557A 71EE4C77B244331147C5A70059A74064B3F2556E0B70E3A4BE685712379C35A4 E616230DD8C716EFC1E318BFC8770272A3A7DBA0E0EEB60419207B6B2855124E 70575EB86D2DABC9738141D3C2DAA80F4488F1AA94B3F0FAA24683F2370B1ABF 6D06D5C0BB9063171E0F8FA31D56A9793738B7653E05EC4D5F136BA8C6BE6256 2B0B79DAF5F989CEF8E5F0F42888D8EC9A32F2074DC9174776DEC9C3166E5B81 F44F7AFB85FF7F7E244D3D64856D71340A13B267D04F25CD68126F443E1215EB 3615891A22B8A27FACCABEAEDAAEF7F7DF4C0BB15C1B652ED6033A76C4538F10 324713DB4683F0A7C272895A0D9AAED5BDEC07080F9F19D61934A6B344216873 A618463B816701EAF3F507FA0C10FC3BD12A1118E5357F2C502DD25315363362 D0FA6C0BC28691C752DF717A651E8B0FB5B88696BC3ED7E23020CA9D6BD8D03F 7292E2C07399C40B9EDB7D161908BA250227EF489C16217EBDC6C3465481973B 72146FB3051DF328ADBD7A98986E7227821E2C24DF994A24884266AD2BCF0AC6 B36A938DAF8E8A40AB859290FA078CEDAC6B0210A181ADBC199AAEE6793F4F61 5504E4CCFD6DCA48F246F7F969633C70C5667B663E229592963ACD8A6982C6F8 F52F5116DEEEDE61302F89D92EE1CE0B1BA22CF9F017D7747394BC2ED5BC0141 6B247B07D0D2CFDAF75ECFCFA5D1CCE76CC9FFEC345B1B3A34194EDB4C75A06A B03502F7702D368F2BC048F42CDD18829CA3D96CC07946DB257A3580787A5C40 802A085E900E4785B1B9081DF4F0CC55CD292B034B4FFDC1E8326FB3170653CB 844636627878DDFFDE6CD0F6D8EE3FAC7AF79E03C3238AB517874DF858BF4D17 971BDC9EE0152E969BB876784D35317FF452AE220819D1F48DEF67D8F296735D BF445BD8815B21C3D9CB5A262DFCE53AC150206B32889B1E6A6C48452AA56EE8 E66A7F99EE0F7B5AA66109DA632FAA425646350E58EE8D9FDDAF4DAFCC33DADD C64D2A62092406E28C9483DB256D0BE9876D3E95F2715264B842193BF2860BA0 98A8DBD3043742744C8C60E4AF996C733570050B09D1CDEC63CA7AAC157CA349 B9E6188BA077DFE2FFAC844F6B6C3152670DB3C7FD149DDE67054B869A6EB19C C8756AD1987CEE857262450FC870503F54A0B2A6574F9BA63F43B72DE9CF0528 52BEE0FE270AA0D2E6B0D87B361CEFCB7F4635E4ACB38311428542A954C551D9 BF33B8194311C20FA0D97D411ECED2312DA77197E09239660AC6A9465B06E3A3 2AE9EAACF07AAE6D297DA00E3A366B0465E48117600936C8EFAB79D9D2A156E3 EF0EEA375EBAE7DE404ADACBDBB45F830E8BD185C8348316EE978598A80C83B7 24F89C1BA0BCCB2AA96B71D51BD66C3B87F58F9951F9872033109BE5CF1B4D68 B17EE96C0AA378FB7E1163A6F6BC130AFD2666C214414383D9E0EBCD993C7A32 0206A4DA1040CBE19B348701EC6015EF37BD273A46BDB64CDD80927BCB9D7B49 B5F7F69DB66215CFBAA85F8CE86B788520DE516F36F7ABC6AEB7EDAA268F8523 6008CA78284EA582E23C0F6E09B8C67C24711D65FC2C7C3AF48F8630D6AB7516 CC29F74199D60E0EDE2F50B3A1CE95354CBD122E1DEB06128527016F23E8696B 053936A66BBEF29330F33D578CF456CC65EF39AC87BF10B0C677C4E6D8B06915 ECFF2EAA9CF67139BA9249D581E9243AAD3E59FDAAC3B28A87758412D6F5D8F8 F79EC4C47A045BA16D3D6AE0F9AFB29C7A20DEA61B932FD7240087F64EBC6379 DC0E3F1DB7388853857E457D3B09536455528047E4DA6AA7938E3F656986B61A 21E73D3773CC66D813DC3DDD01C5E60E3CC098764E3C4EB309B6482A10F2C928 B10AF5138C4225967A8A801F0DEE929E63B1A16FCF9A4D75723BD63EA3458FC2 E3218E41839E091E134B655ED4049352A59B9BB7447BE1987ADB2C8309ABC25F 6743C6CBA2C0049869BCF800838E8356B5754274ADBCDA4F42034B5F49B971A9 E2FF41AC8951BDC0BCB23F90919477D227FB3DE0C205C53C6D1D4A995212AF25 06255B0BA2AB068CCE1685842774F1325B2594DD2C59BF414C6235879089A789 6AD3DCEA1F8271CA3F41269AA934CC3A60C25A91FC73FCAA66D7068176C8F777 01002FEB2343AB559B310FC5ECAE480FE0FC6A3D10B6037831852A654E2C326A 4EB26FE7155EAE63324E6796724B435522DC5935691F11D0B1DA1040F720768A DCEE90219413C6358C7A602B978339B22103890EC4ACB3425DA4A1DE274BF619 281DD83B9FBFFF431B06164A34F15CE90D76642D0587036FBE526ABFF1FA0694 526C25F271910751C5DB07ACB4429059B6B9C5644FFFE2C622F5F7B6ED859249 DD3E98EF0C0D6E0DB6CA03DD87BB9331797889A65C4708FE9A696041FC5D1EBF 107589B49CF9A04EE49AFBD59FA7FE9E3DAD2C46F44F6F54237302E498B80C61 A975FFF794971CB55252D049E414DB833A05BFB0AD2FF340D73893A3286A17AB C4ED27AE133D7FFD9FF0F2C9B96E83E566EBA52E5626CAACC6A569327C4F74C3 ECF1DA1AA4E562073458A21785766FB65F487CB2DB656C438FCD2D6D33692FF7 AA14958C5AAF35F8056304978BCA5901BFF9879441A81CBD9C270230A19269BF 110EE3382AC29404412E2B975D6C11CC5AD1825E10F74C632A7F54834C6BC433 0EA2A0B303057D8AF4C222CE233E408D02E0E8DC600BAA5A6D14025CE0459A34 B57B8CB8AF49A804EBDFED5276AD608FF1C8A9F299B9B5802225ACC1016F627C 9F457B3CDA742A6EC8507782C5009DD5F26090A1FB624186840F174609517773 DC17E6EF8DEEBDABCD84172AEAE450A585EA54FFCABB66E652B885000A457D7D 17B159385131907E7B82A978B73ECE7ADFA85E755CF11D4123BBE0991BB733E6 17F193AB516AF3D0D2A17FE00A9B3264953206CE596101D32EC850F5A5890CEF 00C261F646555B7BC183 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.0: CMR10 003.002 %%Title: CMR10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup /UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR10 def /FontBBox {-40 -250 1009 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 34 /quotedblright put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /endash put dup 124 /emdash put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A 2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E 3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B 03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A 8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E 94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C 8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A 64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B 07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC 1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A 5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE 0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D 38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C 0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D 4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F 3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE 15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF 7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA 4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B 3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED 49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B 8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B 5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC 17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D 364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F 7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F 26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD 8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A 65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A 5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C 9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B 72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB 3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF 2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF 9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A 2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED 6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B 7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A 8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC 41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F 4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF 9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E 61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6 652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA 07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11 6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2 BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77 2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84 246AB18279A2B24E5B50A2FF6337B7B1039FFDD4B00ED3667B5F2F7BC2786D2F 525A0E82234B30711AA835EAEAC2E404915FC7EC0081B194765032708B5E11CE EF6868298CD26E5B9EF345BFA3EC2911E2B96A0B40AEAB95BDCCEE38F5EC170D 3BFB792D2DDA7E57BD2FB7669484EF9322A1BEE009594901095DE2BA9A15A0EE 4DD77404CEF16EA6C31FC04A8FBDEF27B9FC1AD3264388B0B12D8E476305B912 30B51624D4605C45B514473F327DC3EE8BA69032A95301CF714F225A92C253D0 D943C80B9CD0524C5B87A8D052D2E47A9725EF869D3B89097CC13CA9BC695FF8 A9468004450A76A13B7EE78A03CC18917EC44036C2DD237344E594569B8F2DDB 21F7619180B8C760741961CCBE54FD6DD07C4CF73B346099234A1EFFEFC88574 6324E4232BA18A38EC9F0B780C298877EF0AF42C1EBC2EB52DB64A1E1E352503 36AA29953A073B864FCB31BA938A4163D000A159ED4D345331FA1EB4009CFF67 1D107BABA6AAA48075C6C50BC7683929EC146594E55B01D4F5B582328284068B 2AB05CE92EEE1DF4557DFC8FEF287CB7F961F4F1828EA48B0ACF5C63E1EEC8FB 6A0EFF132268B7DDF7B465D4A21B05993F4A4CFD168A700D04A7303BC2C00391 392C3FF97E770E6FAFFFE501242B20B4F7B6C17331C64BDBA3E59695E176CC79 E7632AC6D2E920AA048BD1EBCF9909D8C314D2EF3CFC5CF88D8570BAA814D467 96D86CF4415C5B739FA6FE7B4C228F06268D28EE33381982E7B005C26D2604B3 AA363CA4732B9BB0E4D4EE50556D777258A7BC232087C9F00B0D5EF70270B40D 3071E14E4E5AB5AF1C686C5A7C268D36A0787DC9300D4CFA004F89A73FFEF780 E6BBC957E31B764159C3ADF752E6E1A6C3B5B855F8A483497A347B601E3C8DE0 362D76B715916113CBD2D3765197074104C7E17B87670CDD5C227A1467BD678A BE442F196034B02132850CCB77143C2873447FDB8767C462C63916D9D4A13198 B7910E1B274B27644DFB2E8372C8CD55E6E2AA5CA952A079E1E6389927495921 CA39D69ECB4DF382FD2DC213EE382BA1A48CA886CB6AEF2B0C50CAB47B1FC40B 2C95E13190C92480439E3C56188D162C294F24987AAF4E15E8FF7ABBFF2A12FD AEB884FCFFD671EEB94CC075B815C6A45549EC23DB85923F4C37221641B75CE0 C5C8FA8403C2C9FFCB66CC74C5160D6C7042DDFF33A954DD01C8E21B21F8F364 F6FC735507D0DB5F68F2D8B520AAA7E0F1D503211339F9466006E9A148F39874 A1488F1F0458409D442D2BF5935A655AD4656A8411543F58C63DFF9C4FE56256 7F9F876B56BEB208F9DCA363D2E0F7DF3CCAFD5F9674675BF622CBFC2D1CEFA2 7A5323971101D3641E99D84197B00D67436843EB9CF74C273062159C361A07C6 E3F1E0E4666ABFD5C9AA8F914F05D02EE1906FCB66E421C73243257170617FEC 2F02D5A7F3347CC0D290E52FA815C4D5D2A16A4D4A5E0B50165B0C5C77B675F1 0EF343D70813346EC4D7384A9D9A091984AF29C810F8C3D4247D37F91C5DA967 747890DFFB25E67F6FB766168487AE8BD8E49C55BC1B68B831E3F510BA1DA3A3 9F810B865FA98AF89696CF7489BACBC1033A1C929023588E9E03FAD6D901DC52 A2F5EB74DB679A16DE42F7B47BCBE16617EDC7328A2CEB2C23733D98ED753C66 502DD2FC75CE2905A429B5B56C62C1C0FCE17144D96E0C615E7FEA48EFA05D9D 344ED266BD96C3296D6005D289228C62D572167E369AC65724E0E62AEAF608C3 423FD37E586D41B2AF9B10E0A36312AC1A6F61418BEBF528932FE61881636837 47CFEDDFEB25F7FC156AC7D6E78D608A91270FF6D1D510E8CD61C289F3E7960C B6093B333A0CA3CB8BE51107C5C1C085B3CF6D6F61379420AC1E5D9A3FABF084 80D6C719D93BF74A99D681726C81F9F83949E06A560F3B3905C0766134533256 6CEECBBE3EDC220193964706085526386391260838C2E885C88F882E29F31F69 149CB1B4B788BE82AEBD32B5A8F07D1F537D85077B4BD1FF945EED4BB41B79FC CA0B25D1D761129A6043D701AB1F6655C06DF7B0891C3C5224977B9464A6A794 5FAC6547F7548402420976CA3A644E5A7CD7F64974B71872B02756FF6A135EE7 BA60B9974A0A2CFA4E46D91B929A3A0DECDF44C39CC06BC2105538856718CF59 59B1D9BD88735ED4D83C17A67031178B43CFEB4C301E551D708F5F08E80E5A1E 5579CDA06C9902E412052CE7714A8BE29DF9911F556899F819A7FC2565522182 20918E8C476DFC00F79BCC4248BCAC6615891C3115B30A39B365044CDA0AB26F C8966DB46FB9FB7B7BB37C48B7CC4852C8C05A57D92ED8E6AAE6EE5A60BC81B8 C0B22E5E74610495094F12BA6D60DA3190C4CAC7F46D740005264BDBCDE61FB2 50B8DF1CBF41195E616F4595F7860F1538363D529E3E3FD2D408B56CE034521F 3D9AD6C30174D0AC1A9F9151C8C8DB6E7624290CEB82632679BD0A01EC30B3CF FCE72F32F4443E137EA554CDEF84B62CFE21A5E8BFB2EE52C87CBD603C8E0FC7 35A9ADA5E49FC4C7E3F1538C84761186C045B9F11074F8061F0F4BE061D22C85 2BDC140F6CCD858B1A4E9AE9444B4EE3DAEFF4E3760A8B851ED3B9780F990595 36210570D82E9DE83AFB3A20D0D955F69FD838B6F9F785231A84D8BF9F434665 CB62D518CD5F4623711E022DF76D2CF20202FBA15A1D1070FEA87D6BE954DEE0 370280ED09237334FCA7AFB1A0CBC9A153A25A929BEF57B202A5889958A9AEDA 535781A11DA8E2BB5C885BCB83053BEDE8436846C7B54B41703839F861F95D5E 3C34C4DC8FAADB39D20DC53F642A28B92D0BF1B02876E348B088AC9B2C55DB06 808BA40658ABE50D6956C9B1201C8D3D97CF9ACBE1FCDB7E7C02D1BB8D87AE61 2902D77900C11D1DA6CE808C425A7EC0B31BBDC690E98A09AB656294A1B17E00 2D12DDCAA5E0F1B44EC9D7CDFB5E916045F5CE852D3FF3E8D421A11356EB4392 F7DA22AFA6C18C7F507F5D8892E8F1DF11E5CC965A61D732F12EFA8339951645 CC3AF8C3EC88C5B372729EBBD3530439E0E8AE43B43CF57A5258AE8AB259EB71 9E1F057688B110D4177CF54B1D56D2EAB6B1DB603D6536EA9B9EA11DD57E7F3E DB574B05043CEDD701DF8C0982EE726187EAF637ADC279BF7C83A244D3EA9800 F9797A4D3E4D5F6669B49D2B37CC9BB1C9244B54DD62A5C4BE533DF46F618D3B 9FE2203DC6C75B25AD6B49B2A760D3604F156ACD80CF5458FEEA64E243B2E527 E750720E97CCFFE2322734D5DD0FB1A8FD8FA77AD87AA1C8EA1B023F70BCCF92 624F9A6B0B27B5C8A5AD21D8C08F62BA1738359A4D78439A7A580D605929D6D7 60790297E11930F43BA89832A2D351CAD0F77AF8BB70A2DD5DEDD4B34FCBC714 C2BEA2C26F768EE44D27F39021F5AC95FEF199F6ACC4A2F3109E081A3AC7F42D 1767C2A82683BED075A3293189784AC8D12F17FC3C15B83915E0425926D6069C 16D58DCF97B1D8E1021F51C47BDB1286B5F9CB60A2B2B7D3F219F20C8651DCCF 80B30FC5B20DD6D887BD571450A3A005F5980E90A649DEDD316A452589B2BBA4 BE8625C231E5D4886124B24580C7795F7B3D063667F400C18150A80DEA255943 B9BC4E1F0A0E5F5BFEF9F7322C836AE892F91A4B3291F216F99654C54BDEB5DD 87563AEAEED8D8E65D1B60795F1011C3CC63B8FAA15B381E04E1FBC2A5BA5EC8 B76DCA2AE3686F7D71CF0662338C5E468C0E8155715EE8DD963FA7C257214DB0 6E523E1370D0F14165FDEF1C9D2F9DDDB4C61DC764B946DC40BB897E8A0BD7A9 A7D9B684B5899E1A8F4CF9FF67EE19B4FCB61AA4463C5F06309C7B10A131AC21 63E04A69A223818185F44D48ED721CCCD98737DF4BD3CF6924C6EF30372E9E38 22B3230829B054EC1B8B42D29059AB5E706E5EBD6CAFA57502005BB170E5B471 8BC330C11C068849A61C37E5AEDFF994D9A53E73E12D3F7BF63CD6C435055F5C 875056658B8141B78E3E5050E3F8209CEDC015445893B5B798DED6777B98017B 4B9766F79E20DE51B4081215A072BF3BFDA0AA741D3EAB7F35138C2B32982453 5681A66A99A21F0663C8B559FA49AD7B854BD648335DC7B8F72EA85CEC66231B AE8F8FA55020FEB0FDA90055CE8255D02C0E2FCC829AEC8EFBAA08071CDD03E3 9FE8C4F28DB460E0AE8514E319ADE43559B190D9104C78DEB8DCD9E1B2118746 3DF257B5DA0A52F0F6F0F70352C2B1F851F14F3251A2CEF2B15590E4E80363ED 652CEA14D0CD2FAF8CD0CD6A7888159FEFC0A3D8978F49D85DC8BFBF33FEE7B3 C0B040618510F483EF114F46A509E86D08D9470B9A6293083E6FBD511C388D8E 5A16B5777FC9FF933366757609163E9567B121906BAAB48B1D3CEF9D0B1028C2 18E9B6536DDA27ACD9816D2D1D5571038F936FE496081B801485F9CCAFC7EE0A 34D2BF741863A5F639D9D4E123EE90AEB355314E4E38F3F4C243CAD3112A0504 48BBD089B189203DF7ED4933819A0C1D57ED8AE20B2B15F19F8A0CFD927CAC50 116B04C25A4E5B20C4C5864A8DCF8CC9BDF5CEA59D1EC52EF62CB642A8FCF1C9 3E036AA4DD6F4ADBA4F8CD013C622F831397B8640936910C6D1F82ACC6451C68 760E14BF5B7845762DFE0037BABBE5046C5F3CE3874702EE51D1A463F3B86C69 7C758A4B1960E1A796F07859A9B1860AE5BC7D5703E63A37B9334D67613241C2 5B606439A6AB29FA7386317DB876D26FAC05188B4C59672F2CD9A750A0E70CD5 AD69A8609AB0C78F625E7749C770391D5426D9C3CD1CD7D37445D9718C07A37B 5BECECE3E6F3147731D5C12C4946F88A7C82500F8C495FFA7E2FFF6A9C2F0BFA 8EF861E6C369C8DF969B5FB0F02CAC74E8E080B16BEF1CF0D1A81E90FA1612F1 FCF086961FDD981A8698FBDCE44A80E4290B7B553D9F46BDF6E346627437903D 499C80A29BE6E7A2C03D943D23C41F1B85C92FE922EE3A3E0601565564C55116 17F01B2DC9FACA12AC59950EA410D5533B0C31D89FA68D07E9FF1139554C7920 FF84CB51E13B7FA3EE6A32DDD9FCC192B576A871CBC9E04C5C66ABED560AFF24 6D6271979BC7D04F7287E32F52B1D2DF60B7D7A53A7D776FC36D70E9C6F54E97 44F15C5ABF2547DB40EC913EF0B9597A721563C3664E74E7283E9030CAE36B7A B14E781BC772691347ED48EBAFDF23EDC452EE8A118A840A185B7C1DFB7F3AF1 A2D64EFBA1C9F662A35F3B46CC8E2D7E7A7F63F9BFEBB6E4A6DB8FF0BDC83E9A A70438435C3B8A780F7F92578501656FF963ED66A73921E014A46385450D26F5 B73EDA0630201BEE50325B0F76B55E77BC55F4401251D083225EA5777F42A7C7 748FAE7C22E6A17E04BA9F6D451B35A63DA6F3D80B0365E159B3E993E0DAA242 2212784C9651F9A0766F473DF743748FAF491CB69728C2473ECC5524E0F2997C 2650BC1F945EDA4CE833980E706C4D413F7929804A0B1D182E26052876D6B836 01284296115233D90D2D0FE83317D4AA206A67207BD899DAC1D726C937A34193 F0B6EEDECB391C6434144275295014BA4283D4346BCC495AE3EC6EE9C4FA7711 BB6004D39D7BE17FAF0241F2798C36C451BCC4227899837FC244BEC3432ADE1D 9E4F47F45E9B1D2C832FEF6896C92A207AAED7AA924520D096F983D66DCAF476 83A2F6F1844E7EC5195EDD3E5FBD0FBAABACE5D13BF754BB2B0CC8FC633D83BA 3BB65BD9837B109AC1B5B255298E6B65AE4CEC0FFE24DDC3D1883FB0D6F8FE65 94D0A898278E0313303CF7DE2E37BE0152A1D4CDBA04ED61D54555B1B107D9CC C08C89BD2A19050191867EFAB8FD582226B03D7ACFA97C6D404BF99F39EAB7AA 9AA9397B57CD7CAC1B338C21579A593D7DE1241E6F77366CAB10C3FAA772C663 BD1051F9D791A84C35196E74D28D342553D344199CBEF83D3A6ABF05A4779B16 EAC70F7CEE167132D04BE5F56F8F20927DC3C7A20239AC6AAC2B57BBC83174D6 25F59228ED58B5D492B16ACF3EECA04054F59247A8E318B6F5A09F0A8B3820B7 2CE711056E3A3ED9300B6F2DFE2C665D7C3351D40A779FEDA09B406E804BFFDB 9831478F237DAF6352CADC53D6AE85A14E5FC7C0C1BA4009FF962FAA52499506 C6F3C18BD4C13C1272D844EE151CB5A0DB0188AB7FA2DD47A6A2CE8554A7CB82 C0CC30593F062451363778FD5A8D39C60835825D63CF3BEF323C8CBEF3055F61 294FE558C7542977A3C520DE15A984C6D82041E06C356FD7BE75D601CB95816F F05AA3F53144B7D768F6732339FB8E6A068F8E021C1BDDB26572385FD1B3794A 0E1C780576819CA271C78010D8416F6B19912227CE781CDF6AFEC335138203D0 ADEA0617451CE0BEB024CDE135922C72FE0932F10589F0FF9F1DA721D32B1583 8D032EB9049E4AC34B3AF16C4DC1A85CDD8B047035ED7D50CF8D9D02621BF6C8 2CCAA23DE753C7B0B8818B68D625F44A54689C0B1CA36FA7C68A567FDAB813A1 8B34DFF1300D5E42067F51ADDF7DC9BEC7D4376D304A417741E17AE427639676 407472CBFAABB5AB329AA7CCF130B3EC6DD588A1F44409FD239238B1A8884382 F04198DD7C5DC5E2288FE0B206C9D9516D468AA6E2B1183E2E906F9DE47C9209 578321590CF839C9FFD5FBC3393FFC75322B4E703EFE69534745D579B74AAE3A 2336823D2DD5F477F39AA9386736476F5C0B1CB19457D44AD6417BA503475D23 51A99BDC97751E7172363DB670AA50D21920E98BC1DE7349EF8B8C1E72CACB47 557B3E2BC30454F75CCC41B84A67648E894AA0A43C5A2BFB5BEE8D0BB07910B3 47EDA7B547EF357C2553933E0BDC0F05D596E4C55B33AD63E924164DEC1934E4 58F937DADD65AC866E4EA2BF02D36C54AE3E3727A8FF9F3658337D2BFAED5908 5BE3C1F4503843FFA47C83B3D9CBF1DF2AED7A6B97A7E68CB6B9E5420E70C5C4 36843B29D902584DF95CCD8C34647E87E2335371DCD89E495A92033BA482A62A 0D2D3A7BB06506E42A4926CA0AFF80EC8DA63D7B73E8A04B25312F03251B512D 76BBFD76C1F5207FD6A8E69ED9BF063C7DDD0FD4C6974BBC531429EBB55BB715 0D08FCB2F80275425FE42E87AEDCE78D2BDC07CED8BC49D260D1671BA0ABDDB8 98E0F7BA7EDA086F4E3585157A71CCEEA35750B9DC3195E3396F1161EE1E1D25 E6FE6E0B022A9625B5866B8EF59DFE5391AA7F033886402C654F4834F4E43138 EBAAA758DFC8C27356F012F4D0F398EB8D013678059D8419C2D947F3FB2BDA1F 70A5FCB549BFFAC288ACA7051BDAEA41A4AE0341035B4365A63C553DB80CE429 02670706A74AD397B49AF535067EB07CC3CB86704ED45301DDFD5238E7DF5ADA 8DF465E45F7514D7A0BAA202305CEC73032FC09294480796251045AFBCD6B081 8EE4481D29E817C7DC32539B364076672596DC24CA8AC45D60A8536865FB475A 3DB48E98C675A8BFA39792AFD17B5251D56F0D5C27E229DFA75FA3560E7ECFBB 8164E4FF15421846BA40EE13146A316D530287CC8652B58804B95C53F6FA9DF6 F84DE1E222C5D69E45E12C06C97E672D456E21B95584F8371FE34ECB0E6174BB 468EA60BB0C06B3DF48D996D9083F70181799CECC224FE60736CFCC6F246E5E2 EF465A6B1B411ACB7474A59BECA5935DFD15F5C18160D4AD4DE9767D6213C35E 08AB18F834CAB32013AEB8C634DD6382D4C7E49F10BC5113214A18A5EB31A0D6 923630A849327C1CAFEA3B8F5EBA83668E03EBE084ABC1A4C1DEFB333ACE0696 EB20FAB6FE6E61D38457C8E10D8FB7595C627E8FBE2D5563C4D50A6E1F3DCFF1 F5A2DF1A62301665C0E44C2257B4516B515FC995A52D4DBD54B3D4EFBFC63A8D F07C27065CFE19527AE04A9CA14935B7399E30EF88D2B63891A58044D7CE07F2 916EB8E9C65388A73956B3D82B4B41AC378B4B75AC304A32339CA7701636B6A3 84254743EA5F8525897D4FB054698031D1FFF4C971A10440212DE812752425D1 E71B02AAD20E994357EC8436BF1B74F016DD41D6B1F6C1578E4B261ADE5A7B31 2ECA2C16294C9309F200AE0AB5BDAF2BBCB3E97B0FC5556BD8208E50CDEB88BD F137D2F72258B6E41092F1256CA4AD867338DE757E29298F404FF94F247A805B 40524952A6D8581F065B11B6324F9F2821A3AAC2E7A583771EEE640F2FD0975D 299EACAB2A99942480DCCC95BC7CEA846EB1B2423FCE304596A2581583450455 CD1D56843DF8FFBA723FBE4A4AD8E539828BF48BFB4D0C4EAA68EADB81A2C58B EBF89CF83017DE3382BEF407B493FA5EEF810C740C3C8B646292AECE9A5180CE 07ADE6E6B2935B90BC521D3ECBE25B43F14DABCF49F378C26CDD2B27C690EAE1 E888EDC3C963F55F1AD13C8FBED4BE0BEFEF31C0636913B47205DB1D0DDDBEEF 4441A3DE9825160AD57948567EDE8660567998D41A0AE2D9A9B5BD4207F2A0F3 EE82DDE22D16C32A583613E0EC2BA331EA91042B8FA2865A8A7DE1BDAD0B6D33 3DB1409222AAD20577ABAA7A2DD6B302803FC7B4244ACFF725E37CB5926563D2 82AEF220424600581E25001DE71E1385C9D690747BCE051539AB8B03B2EA77BC 39B27AA8F63CA37E3886C50E125D3886C5132869596039589AD6A8421C8B7AF8 B0EE2872AF974A4B779F09DC1DF2BBF673A7FB32BD1BF3D8D99A94E1BCDFEF81 37B2D7BBB80ABEC1EAD544448E6A49DF730A1B7F63267C9DDFE81131867F0C0A 8D2B37E8B0AF2A6265C57CF9BCF98A01998081E7BBB94DD53FCAE52F3F5010C7 AFB011FC6FA98FFDF173FA0F935D33EC3DE55890BFAD217870974C00CBBB6C67 1CC558F6FB2C30B28B9987721722A27EBFA924A382569E3D7C47A3220F21EAB9 1011D71B104BAD1A47CDD9CD64487A8E9721CABFDB83FDEC748EBF0D08E77CFF 1A54D0B3ABF4024DAA403436C9F6CABF3B6CA7089776ACB183AC01C8E7F287FF 9DA7959C4B7D73F00976AC5C3E4B810DBCCE732E4C9ED9EF8006AFC7314F0055 FA3FAEC780434F273ADD7D07C2006E4B755B24A26341AA5AC2DCE258F8B03409 188109067E22F078E093A76FA372C87CAD401794D94317B2665DCC7E21FDF901 E1511307385B6EE148FE1666BB616351F48A8082ABF94040CDB058DD584364F8 CBE3E94DBB8A2450D18D435FF5C8CF2DBA1EB562E957A83F184C9F3CC43C1860 E6FBEE91C4D240C61D7A7D554A17B90D0A9CE1E7AAF7840846B3F1A1BB9926A7 CF8E9DA56DB81D35CB3687E9818CE74C0336DF7B2CEFD8BC432268AC93EB34E2 3D361A8387BC92B459F645BC069A49628D7382E22EB249BC7CAAE98AC55FBD24 F570D8D654B54710B809234AA2E662D2ACC44E1FE1AA63A497FDD94A46B9D1BC E37B29430A5E0C2E592F13BE227CD9A6556E9A0E1C3EAD9DCD742D1F9CF62014 5EA4510003418D1881C4EF1589A8B9EFB52DDBB67BCFC4E55B134A3C2E31AC1C 4658B592EF69C2E23E335499A35B91A58DF9A947712DD55BDCDB7E0AADD53E29 2777329340EC29A51E9020B8EBABB7B066113ED3A4791D3FBCABADC40CC45FB6 8744DC0116379D2649B216366C6FC83999E1FC558EEE5E17E13A12B252E5F7A9 E760CD51C96C1B4815BFE37D4D39621BCD10DA9428CF186E61E9921585C1944F DDC084DC9216FAB69CF54E456D47F65B3FB02F34B0CC998E12E41110A4791465 19780824EE2AC1B799655553375ECB24149100E539C23829944BCC82211A85E8 6A2D3559BBC0EDFEC2DA02AE3BB86A9E30AD5BF95E5CD956297C1F6AE85D0768 1F9D96DD8EAAAD78CFBB543E913951A78D3262CF08BE0DDE7D870FDA94C51A1B 1F8544122EDB7653E66D772E3EBCBCE4419F17500D8469EF4FBF93144B20DCD7 39B815E0B09D0BC3283E8B7A907F203EA3B22924419C1C3A8DEEAD335FD538F6 0D5ED1581BB64FAD4979D67D51F18B047E096747FC50C6A2B48377E458038374 7FF93A3A46E09ADA5A844EAAA3EEFA1625510D3AB7A74764FFB229725FDA314A 72CCE353A9693869F26CB904505B089DE6D41825336318DA00DAFD986779D4DE E8DC47E496A9936DD3CF46719D5E832E3B7C85B44D16D4BB588CADCCB90CBBF3 3589F08AF2AF77D7ECC3AB68D6409221B2ED853012C693C522407B4E97DD4F89 9EAA4CDA6C85F8B65F5E165399F6CA79550965F3AAF7D875CA947FD6BC42A4DA 1AF797BDBAEE65A1C3BAF00E8E48FE567E757715166DD2757F7DE6C45FE4B3FC A0C76D12FCB66B4CE9CCB47060AA5CB3FD427BCA5B549A4AF34CA654D9421C26 9EA4106806950525CA856624E9EFF9DC5B598AE4AFE928447D0704D4EE99DF07 69AC51F4D3163B7424059ABA4381DBBBD5C8C7DEEF723F163AE69C48962C34D5 7514F73FAF946C121EA5848C29E127DD0FDACDCB6B1AF4414EA369093282383D 0213B391666CF596FAB2AA27270FC273E32B90D3209091D8360A0D50F8F28D23 F7B8B097E2FCF2DCE92A7D5AB68EE680B691C2DC7BB846FD5132EB5789A30B8E 9B849C18E8560E9F49764CB89FE01E2E9968C769BAF6B44E08E45E563EB14BC0 70601E5133AAC33723E934677518C54A235EE9E4A832B363DE44FD82D37BEEF1 E9C842EF2570C97C3C5D6C0DE94DED4DC5B6681E4A04BAA725F0D9061B16C431 8ED6859AA5E5BF254BD3C29F100293FEF2D0D6EDAF428490E13B06527B5FCC90 54768BCE8007EAA2EB1AE14F3F577CC243BA416AB6E43E92EC4FC99775BC1D92 CECEA05EB8ADDA826E364921ABE388295AAEC6678C08D26415B2725025C70089 9F12735F37C45F00218EA2E398A8CB173086C43B2A7EE4C95852110F8DCD12DD 64AEA60156E560E8D8D84285B523515EC15888E9912C6C1AB91290E1D57D7595 1DF73319FCA62BE7C04F4E9968F7E453C384899736D48EE6FF64DF1260057C37 3082E207F796CE6AB2271E3F31AD2FF83B99FC3DF2826C07F4E4CD05077DCD69 A3B9EC76BC02C12A468AC4C0D7D83FD4BB4BC8ACF9C312CE3144E76D2F3C6246 A210DCC9834608CD0A52CC551FBC059B88BC2CEE954AC6B5811281737EC83C8D 72B39D016B0ECCED40BDC58706910851447C80E3FFFA9D57898204F9815DB6DB 1EB38FC10637CC50768703AF9FAE89A94B424A3C647A7870B26970954CEAAD68 E069ECBADBFC0519C33AEECE55AA93C75B6CF907DF65B98C7A9B043E4BB5840A 88DBB212EA2E86888D36B76D270926739B48D6435C1547D703FEA7B989CA60A4 87CDF9DF654919F730787D58680BAD0E5B506FDC2BF0C89569CFAF6BE11F80B2 07D69B417562178E087AE3AE9380CAF8CEEE40FD3989BB50E8521963B0617401 2996B2C32A3F03B7F312A211B605932233E7C230FA084BB912BFB20E85D721C9 532D22AB85802085C715206297C09713C3142039602BA9D607F7A52FEA25B0D9 FDB7E9FB15499E3DE1E47CCF2500BA8B8798497469DF248B8244493738C81815 1008200E9457B4CCA5740897B17F8832515EBAA84A237E17542B359F173E7868 64E99FD8159C9051E876C235E434BD5920F55084DD7F31C6FD2B6CB58E5FF307 0AF6020EA9012AEA47F9BCF018C30885988ADD1A630C2F1CBBCFD5A2C95028AA 6FC89D43E089957267B6F94C7F4E05FCFBAC85E879D27F7BA921FEDB4B551F9F 3B5D3197C0FCFE264D45F6C1181BA26796006B94BEFDC342C7CCDDBFAF332F8A D96D8D6C52ACBB10C871DAA7162501071CBC04CE01D8FDBAB48393E59ACCF1C3 9EE4972D7DABC3E639B1C2722F346553DA9E9F163DCE4CC7CB2D1B966F561A07 8862C3230BDB104C55DE3436ACA77800229637A6DFE1F041DB4B45B2D1A5481A 6641D77981CDA367CD23E64AD5355B484930C7B09B47ED6C79851844099A68C7 1F4E6ABBDDD7490259E856C267804A4EAF61246AB4C1233F025EE81793312479 CECC3813C2D887855573122E59FAD0B85DBD9AF66203F4618F22D6D56E1F7323 2BE1ABF7702D8BACA8AAB9FDEAB48E3ED56BC0D3E4696505E16473CAD93D0559 54E8991E7F146F4D4C9E3DFD35012F5830B57FA04BA42BEC724E5708FFB6D521 B209D2F6CDA86560921C705D6A99F822DD3B182B0BAC8AB381653298B82C86E5 098FBC2E1E30DDA83919362D1BCF4D91702B16E849E032B44EC2482369B4C342 211E7382390388FDDAC362431B45DCB55FEAA7C48C30996C47B0E21BB32FAA7B 14D6F0DB95C450B59975CE25D65E727148BC7400E00C249A415AA52DA829F547 8D7AF32D029BFB27EA195EA3E8A038493FE5BDDFD89597C420CA1ADDD2D5AE9D D3BF13CE3B530D78BB7413F47056F663395BEAFAF4002BAA6E9FFD3F1F0C7C72 03592F5627EA49F1C0E8C95813E1C30BC256C99A2F34A027D4552B650B0376EB 9BC2482C80F19BD6F9315C71A185EB246091F6D7D019637100B555077B1549FF 27446A2CA0C8C815B6CCEE95CF19B78908DEDB25C1F9A5E6C36FFE65E0A8F694 8A3E847529C50351F6CF88F1F3B901A78378BAE535678A6C60D7DF4A00505B14 FAFB1A1AE87CE09E1E90769C046C11309AA7BD8476AFAAC0EA48E6D32842E0FA 10CEE024B1B178D8B9A15E29F825E42564A8F8F1E1F1EC760FC03F1D5773DB78 E177A95C3D2E3FFEBA469404A866E662D217FEF7A99D6BEDF9F144A2A8B97542 9423BDE10EED471B99F70661A7AC7A260C6C32EB4D00F21F7A3A5257EC597EE4 885981989562FB08DBFCE4ADCBE6D9A1C92F6E9FF65A23BDF943835BBB7C29C4 0D7C987B626819583D4D52DA32BF7DF15C21BE5BB64B575C7F4B149AC539ACBD A49DF3F0480DCD61E3C14BBC956DE5D968E74DF4141BEB0106E6C5F7828E4F77 4EC7F0775CF320C26323EBD09354B3E2A52973E75E54CB42F6B0F5C10AE8A8E6 EB93124C15AD140C971D2E2D9C2B5275F93BA3B01556B72B7630CBE7AAF3D997 E82D11875B82071FE770B13C232388C07F2E6F7E9C6930F4D7379BF74FC3436C D301123050BECE20F2BF95FAD2E57FC50203EE6EC6D9420BF8C218D3D2F8B236 6572EB16DE1CB2AF00CF19C56BFD8D333FE1DA4494933BAD214701819B0C2ACE FD02F0682306A6B0039002B0B7095D992A30CB675CDA3D4B196C447F102DB4B2 FCE3AAF81D94B2FA40B31EAC2BEC613654B1D885EA590F675E6106BFD0575B1B 4AA50D0583A2BA2F79AFC2EF5640A9EDF12F6BFE45ADBBBA43B773B36DE8DD60 C4BB8FB6F09A334FD947877A785AFCC4F9D366326F5B609ABF1E0CB8942560D7 68D0FA410EB83A9BE859840A9E024FDF850DCBF5FA8D649B40505AE64B1BEEA3 6776EC44EA3298203B09990EAAA5FA937CB648A0377173CAAED6432A38B48DC7 906B730B6BFEB2B9B166526D1E8D4110C6A2A4CE1ADD2D0C9C179621F7867669 31D3A28EA97D1281E80B4B6A4F223D1FF77F8960CDB83E5768F3A8FE52120CA6 15164AA799E18FCBFD91697783BA537FA897D58726F5F3BAC1F0B20B57583374 35837E9EE8DD0DE39B6CFB69EE47ADEE4624EDF65E43781EDD056024FE108280 29E5A39815F494C65020B91F68D1187F815ED8A312150B414D9DA84F542E0F15 32351B82F2322C9200F987E477807E9E4051D4057240E99D42E6852164704F26 81A939AF1E3BD237C4FA341C702F7AB978F63CBA8DF745DC2C57AD5511D89AE5 B4A80BFC57B1A5CA1A110D3BD5859EF41959EB364DF07CE50F709B30EA099EB9 01C010ED4F4DA9AB062BB8E10F515559D2FEEE69C579859E43962AF7640A705B 2C3086E862AB4297EF9625C58AF049BDC0840F9562D8D8BC686CDECA7D4259C7 4C86D8C92909BAB7FA09AA2E83B4089B246F8B4AB7A086C5B9943773C496C62E 9E6344BBD213B44C821CDDA42B1BE933F74BC8FDFD0A85070F50D4881C7E875E DD689E97ABBF6AEEA6E8C8BA377BF3E4A8EEBBB1D47FBDAEC3B88462A62CF500 727EF93FD166092861FB67303490DCC4504B759BE754808BEDD580E6DC38223B E02EE2D9BB8F32E2D3386376F8E49A853F7C81650DBD33E23437EC98F4A6F7EC 12705E52817A7B647F4CDE1B173EC370C78589E329D93C35895CA8B3EA2B945D E30630DBCB2B8ACC49846C7835869202FB5231ED9167F307CBA31D2DC0B423D8 65DE2E24CABD53913C01C388F64BB66976FE3B0B421AAE861E0C0D495D5E0B26 1D207792F1072BABB49156544C024118BF0D239BCB1AEF8AB7F38EEB34C88CEC C7401AA6177E9B7849AAA081334E04A2205077A90C0377A363F22091678371F2 36A088CF84558630C3F370FE00FE97209AF40D77C6F70B1B4028F1680FF6268D EC09B05DB3F8DEE17678CFC46AE78E02DD01454A9A8ABBAE157086DDC92AD22B DBE7861A2909232DE46FFDB6FC84989B2B137C564FE84961BCD663B592FF2A85 A65D7B595113AA7DA8463F852A28233A754591A5F2D7F70649A12EB8CFA35361 1410C7E2F08EB5353A91CBF2109D6E279758B8E458DC7737369AA35B330A9229 B73DFB9E1745410440E440DEC966C0B21349149E08D57740773B1F17161217AE B0605236A44353081EA2248CBE9E8F4A0CE1499354F6475C10346F337227B8C0 2474942B49CF891C5D0953B1015203B1BFE0A7528C900968D16A876AFD9BF28F 43EAD0516A38FE48F7091219A717617CEF422F7E2054F3E40D7D6239F6744E44 86F62AD7ABB61DB0E75B245B44E7A6FF9D72DAB469A07D8046DAA059CA891766 1420C7A397CEFC7CBFC41A09C54FEC6E77312347C14CB8D87B313A0E7F2CABEF CEAC4B9E15C279A18BABC098027A02EEA025F481769AAC7A89F9F419A9EE5908 351B0D25A2F9FB805227F0ABC3D4A87C63C59E80B1BF915FBB1E1E164568CCEB 1EB5B1A19180F370EBF2DD11827844584475357DE9E31A138874E567B8E1DA93 FC5D6084A3737CA8EE391773F3F91C243AF33013891B4E7DCBA7BBE1E06C5031 C3C0FD60806B7052C5F7B069BFCF4F879914D9C2827EB53C505D5C738E1564D1 1FE8A3EFE5B3EDE0B766E816FF02473739FC5BED647CEB758C6D7457ACD5E352 1C3F13E6F1DBA43FACA8FB3D257B24902EBC64B10C7701AD3850BD845140C3D1 A6CB630AFD8E81ED647D65D7F51803369D37DA44F36D8AC77976AF53B9C4E56C 84D5969C27EE9DA518FBBD8430D5769AD02F28B6036D5D8AB73C784734C22D5C 7200D0A706326DB04C52907DC99648D46F2741B3A9BADAF9040F2CA68642156D E597FD6BDBB5658C87501440DA17A44557EDDEF1C576F8FE343A6E2DE27CDB35 8E62AA7C8367E3E44DA6E435DA063BAC3DE82D73AA2A147CC5A844187D29B83C D12D91B9018718B53C9CB11CABDC9F7A8848C19E73E1DA7067632DFED7994B8D 3A5E1260D0315558BA94389D996A960836FD9C7570F02C453129DA181B2BB9B6 56BDBA69A47729BB3EE50403667025273C0FA725D6742B32DF5E58BAF48BA6BD DB77F2571F3643E792CC757B8F1AABD13B60965B5F1AEFC5108B68126149F4F5 F54E72341790C7D75372F0550FF3C9FA8844DE0C6E71C261F94C2A763C6853CB 6179437BFB20949F530804A81C8C71B2E04531E2F3E0C158040763FF38F69682 F8FE6FC7F914C9BD77FD51B7F533FADAC22C819B6F7E3094BA3B4F96A74E43BF 240DB5BC95B8577597AB79D6ECCAB0D65EE279F5CB8527B05BB521EF2F7F23C8 42349BEDFD0E303A7969A9383A6290B9ACFF7C7D402EA8A7C9517F01C28D31A7 5B705C785F6418B802A18AB458C03291A0751FB55AB25515926778649BF7DC53 8E94F949469AB3EEC16FCA42F98220A5EAEE73D6E82C71779E8892B2BE652796 E12C2B6E3D535037013D60F8211EBA7119383CEE9B06981BFB98666749064BEF 338B4AD1C6300DA217F38EBF093C867A7B019F1C8F4C64226FAEFC38027AC7F3 A528689C44EC4CC0D0612AEF76650826D2B16F53675A57273A78A911647D112A 193F579ADA161BB62859141F9893013F55D636A595E532BCA11F26E5846724EE E6F3026983BA6E24C1E462CB599D2C6F3E7C0803244D9A773D1DE70325786EF5 C42D2E9F3DDA5F7108E3C28357AD1F088404AFF56EF5BC9ABC92A32BD46FAD66 4BF53BD32E3A6781F4DA33E25E0075638D941389DCF2D5F3FA3C9AD7DC26BC19 28D04510B6DC27C7C6EF0EF6189968C8759920E15F65108B389BAA1D2047B977 E1818381DF9FC5FC217DBBDCA80BAB7B98E7A00A97AA3BD47EF50ED526FC8583 1FF5B2B4B470642E3F575F4C0B1FC5EBBDA263F89E6D644E2F56DBC6FB50D23A A04A2ED571997F30657BEDF19D268F69D7A624FB11BBE30E94448708D077A238 CD4543C8E805BC0DE96A0F4E14E721CA75A34DF4F911034DCAF94C190380D55E 77BBA860C105DCBA06BB201281A02830F8FE7951855ECD7E13A2514B2EC6A93D A40D690A17709E21DA5305E3DFFB395708581573005A777EAFA0403B2F6ABC0B EAD09C5C3E2B111D8E3687DDA302B8AC5B11341E916A63832439057BC72B2E67 7BAA5ECF2A8FB4D60751A1F209BA3F80E2BDDD496106EE382F0B704B94A7EB2D 1659474F5B80774BB710BA2A744794A74061970230B044218212BF7C908A9F5C 8575922D7E0D13FE10CC1E548C182F402346C6E256C3C77E871703214488172A 76E46E6B5BF7B7704AA57E3C8CE8EABC9F8BF0A53538F3A09F27ABC005117354 39F733BCE06C01F617CA9552C01B0ECC3AD05D9C04E67CB7C194007C4C64A460 726BA5371B9B33A713C6B3D69A6DDA20E104580E1CCF7B0958E5086B31C28AF0 D645B982521DDF76581C7DE21C7FA385F5A5AE637169427D13300AA66B53DBCC 4CC79A0320A2C5379B7A9A54AC967163DBFB993753FA7AF4E4F7AB3710BDBF8C 3F10A9BCC0BB17ADB5C5727895910CD7CA7F4923F00B07FD16318E0A53633A3B 0501EA6D8851CB557D80120DF270B85DC721881CD897BEB71CD7EEC64CA12990 E8E580E138EF6F9EE2F8EBD3DDC3C5F63AAF381ECC7350379646788EDDE61725 C72975D2DBD54F7E7B5B1DCF78969BBCFDF726C8F7CB93F39CA28715C943C782 5CD1C1DDB42404E24E079ECB45A8C3625039AAE73D365CDE69473537D4E575A1 1D017E12D1FB54B41D956915EB6315A82EF3CA876200D5CF0973CE5F56649FEB F62747208C08C8C61A0AE81FC3A538B16DDB109177C7A686A256CF37D55DBDA7 8F807AD40060A99A44BEDF27C3B7178199E750C91119A7AF35496F6F1ACBD666 B5E1C8F49FF59AC5C5648011E2D0F7F85596705D4DF9CA26541624DD059E8E70 4E74F1743A6C6DFE15BF1FAC3CD9A004F3AD0828489706818A60C1661B9E09D3 3F18885643D21E8EFFA14F48E22ED8124BFBB4398024C177B02C760A59F7C0CE E1B619449022B819131DDCD178F826A0C2E9389C2B8B44B229F954FEB4D5FC0E CA84B53501FC1767BEED2381CF24BD89BAC6BFE1868C78416159F6F933E7C828 DB743BC92B2EC3DC2DBB0E14F569EF1BCFF9182C04627D1E2BD48EF654850CD8 7151797484EAFF38C38F8577737F5EE125EF08565E4F6E6603CB9CAFA165A355 4B06608C939495934D515A13D319F3F8C4C1425363C897D025D28BF1A4BFA09E 0F97561179C2C0F030F0B6A3C8591537506D9FDF232AC0BC848E517E61F2AB95 88D386584AB5F92CE4C68D1F419A32576D47EA6CEF4B37946B1E3DAB1E67FED4 A5B70D62A9F69C227C21C8AB490DB86DFB4CA788B6CBFF8F02B920F739B141DE 1A095167465D82714F492EA9D2B4F7BF14719BAB487EF25F8BD1B377FEC95E66 F3D7020294E06E743A606D61B27DE20252F211737C4026FF7B9B4945DBFC9809 8E1594CE15A1D7E5270B7448CDEC0E7D728AF99771E64A43B27A041FCE6B963D 42B6E1975F5F8F8C26602DC75D04ACF27CB1DA2B0841529E26CE6A1D0E5E9B31 0C191C39FDB29C4505CAAC095E91619AD29468DE658EFE5D5198FE5EEFB0A2E1 4D6A7F1BBBBE87D543592D0E658FAD7B5A002D6464C9A413D8952C533DAE8507 B88888C8BFC31C3F8838653527A3AF640BB9CF67FBB5844FA83E7D9D51D801F5 62C12CA2D6070801067033521249A56C5B0B77B19811FAD4951E34A6CE5CA1A8 443E4C5B72CAD2FFE1650FFF90A91EE8D7DD95D77F681C1858857EC9C449AA1B C0D7145473917BC9E1D8D6A691C91E1A9DBABCAB74BB080F506E992C1A974E26 00C556FE22EA28DF85CE94B3898AD28F137ED56D605CE095BAD1AC60BC6B73CF 85EA4ED98FC0ED5971DC5A75F289698FB94A4FEA6479479FB2A9BFED1859F69D 1EDF8BEFD567FA71B725B11D55B06CF0E95F817DD67612B41AD48934A4D5ED7B D888DD698395041DB1C9290F599BF0ACD24AD9EEE1ABCFEFABFFEEA96A02D292 C78CBAF56DC3AE9E909A2856E2614E2EB9D4F46289AF8248CACE1CFF69C66F94 F5B939A523DD14332C225110DA3446A4818FDD67B5D16FDACA990DDE72B9F10B F3924237D2B6069030B76DECAFFA70FE97F5C5C684A750AC53EE37B1E27C5910 48BDAC0DE147D16BEA29E4A67AB88588CD8F3B50C4EA3A18D81778949CB17F14 E4B19BBB9FE53ED4105C05FC9180CFF9F59F956CA0A6D11230499F04724051CA B98968E61ED0DF26ACB0D0EB7EC9BA825547B42F4A439AF0F1B4D4F9F4518ED9 4A80B709484E08438B6D103CA4F0C7C8CE75889EC2C501A375FD8D91722D5FF8 195D24FB5D569630D94FDEFA35A8D881FF0271B3D451A884D106735D4A2361A6 D71626BBDF60991E20045C1B980FDCA1F436C1EC063C9B454E55062FE19F88B3 C84211C2D38911CCC65C1B10931EBC9D633FF04826D1875DE425E69D60905013 3280E96B205088FA4C3AA2665B595DC5BE5AFF1C29FE961869F3A03AC93569CF A1EF8D26E4FCB55CC541FAD73B55A60A9AFDB07C4F26B7AAD34193D5D3E55B6E 53B7E8C23EF6AF8D363C59A59C1C5DF268B43E3BDE031C960662E3B308BDE103 5717C31227ED287DE82B9C1923F0FB2885C2AA2839273128EA545CB9704CC989 C4B324BB68E070E9F0810137F4B1FDAD4B7E959872BDB8929AE4855EB15D88BF F1A10FDD74B735B9EE49465875B67070F6D6CA219A64FA86934A4CB5EDF7073B B814B8C9892EF9A90129E3C0D84BC60C0DAED6A7CA8EF9164BAA7B3B11736AF8 C58302F9578CAF243178E37C0CC8C3C9544AFA68952BF4B02890A0D000645694 7AEBF900234A5374E199A5D90F10E57A1C123DEA596AC51BFD29DF7433141F90 E0656BECAFED14399A3CB3A7CC99D5B2A8F88FAF17C9EEE84C08D0EADBC15B41 7B21B8BF97FE52CEB94EBA37CEEB39EF757F7FC8A76B150796A27C646D5C85DD 69AFE8AAF7465D0BE73B348CCD8E6493AACB6CEA5C15A9636C2DF301E5C7F72C B8C6BA861E90D2015817619C9A013CA9E7D22D26C6E8393187F8179E1693EDEA F2531A7555FF7BA758D3792108786E9745DC6B235D02AEC8A65A45CD310169BB F8AE3BA1C8A88A4C2A8C2C730F428FDDE333C75558417E41F95D6DC547E0AE93 134F547C8F7BCA1D2FF766A9E2A2C799C529348871F5A56D5B8ADEA3B2A11DF0 545A0A5930AC1EB9B33D296DB9F1E8B815B741D855622350EC35DA65E002610F 4EBA010D0E018E168377533CC24CF7F4B79C90FD7C4AFAD40756621200E45012 6C65F1359854128910451346DB93A34374EBE00140D3BB639CC14901E7C448EA B7C6F6D76DD96CDB8910BC20869B7E235BEA990DC962554C1D92EC9625813BAC 252E58DF9D422C9C3645A999A3F25B5ECBE2B43926E2E9951E47DDC1E302FAC5 921AF039D110CAB81962ED99254457E99A142A2F3230492827806417B1480691 BE5511A7C1FAEC3B11745B30A10B8DDBFCBAC3B3B8122115F3E869C36AF8584C ACCD78A3B88E09C7AC348187D3D9B650827FACB330B2492DA961EAF8CBBE87C6 8ADD19B167EBE1A73EEFD7CC9239DBE4E8438A4A16A28F97A1C6CEB14F543C23 238478AC9630CDC4CD3A01C8DF7E06C8B8F033A32D2B4BF1C23CAA5366367DDC D3CA457D69489D0C84E56D50796B28F8BD089108F4D8C7FF554CC68309055B12 9F910D46D48AFF711073F5453D8DE7A781FD9DF4CF4B28799093DD8FC2055BCE E8129ED81391F18F26EED523B9BCC59E941DDED79B23E74FC37BFAE9724A9E24 5304601310BE6FF3B480C7BA9E0B72E4C6FC8BE2A0A9407109E1770ABC56FBC0 A8A44AC1496D3F41A74B8AB00435E679E7B107C133F3669697E8341B70DEDED3 48D6BCDD9BF9D336F25E5739A9CB1420D6F1813D1282C0E0EFBFD8DDE2C66089 8B82A466300D6356A3257222AD8B28F8185085218997DFE0FE1A1CE1AF554B98 A1699E9068CB49374FDEFFA433B638B71284FAA1211B65898C3C056802FD3AD2 3AA4F680922D437146E4F7DEC9CB8ABF1A8EBFCCFB7DC9B3BCE38C8C4F2A578F 51B3AA15BD2BA58496CF4BF26DB0DE0CE1214674239166AAA4A25606920B81D2 A0AD21E24B3AC6A74368F9E7F116BBA02DD2AECEC99F41BC3D955D43C2E22F2C 7C81B1EB554351D47461805FEEF5CB89426AD58246617F6E5135F7F735822D2A 8A41C2A685086F145175154762EB694EF1A877670A51C4A86139E64063A80933 61B9C6111F450BE26BB644316FE30986368945EFA43F6BD4BE3840F578C6B7E5 64E8BB87AF2A7E2F4A8B1AA257C2DEB9C8BDA8A5274E5076756B3E942A44F1BA D26498BF571F450D904733A0F796238403E5A781E640330D70AD296F6D74B679 B0B1168B656E9B28E4BC7026FD15197875D89A72696FD7B20A3EE4ECA24B78B6 6391F8DE690ED48966603F2186424B17A28CD3B64BE1E3768D8AE01954A4DC91 CDD6F3A30D3C4EB5F9C2CE00A5A64086FFE87EBD9B4ED432FE59DDBA942F72B0 F6B3C8CA4CCFA5DD2BB195FBE297F6E65CF6C06E9D4475EA2C41D61D39F0B25B 889E1EF856FF0817142ABA12DE2C80A2FBE0C0D98A60952D93E3AB87C644D4AA B7CD2011876AD53DE27BB957F69F4C4E48B292D916CEE8BDCF3AA2FF9C72E580 EB5482E26EB7719FC7BEBAEA7102D55048289FBEF5C5829D96A437F4F7CA57CF 9FDE380071F7859DC68EFD00288063EBAC1112227AF649694E3D2D63B6AFDD3C 7702EEE2F4ED8D760D2023EE1193D3266AD408AB8A3FFBBF6FB9FB1E8E849F75 D79AA064A146C42EBEC6B1F5B77A02D9C92DFE729DB8F03C6E67E9587346ADCE 213F08F02AE6C6D2340E8F041B212A760F0EB6D4C4F7AD11C0C7D003C384E9EC 8009BBF3B5351BAC77CBB2DEC5547D9C9F2ECFEBCAB4D48B5985E891E51C7BFA 0A02C7B166565EE79D8D5BDCA41C79C69399102BAB4561B1171CA99A57550363 3231BB3E3F48BEAE734E65310AFB89A170D7D2C23690D07050E6246647B2A3C5 BF170818138683EA1B4DEA8C2F018D0FD5778BEA72C72E6CDA1458BC8D1E553D E61050AA240D0677D9DA9D9C22810CBC6C0E441C02B27BEF9BB48027E07FC495 9E83F67BE50872095AD837B6BF75C0B5669091CD4923EE8929877CD0BBC624F9 17B90C8D5FCE286F68DE2FC1508373EE9F9FA6F5A3978C75F52DDC397E368A0B 57F5B40322053BBAFE6C7F8F293E0E3BACFE054A8AA7DCC3FF253F58C75B9D12 4669407237089506FE8CC6A24A1025C8B4673B48FF3174C042C4D66BE2AC584F 6A346027B020024CB9816965E99F62488D47EF144740C30CDDD2562F6BAC56EE 04AE0AA4421F68C2525130D92002CE82F361624166C24F7C2B11C69310B93719 0947BA4E74BA25398727049E1E8C94669B709718B2BA25D889BA48D66B0A9EF9 173C6CF93116BC0DCE2DD62D2A936341BA360D901BF23D9A6579977464D12A3E 14A083FB37A4049BDC5F4D9E8D49D05FC4213B01CFB0231D2B03F552F366846B 7AB75D68EB74D57CA505C571AE2086BBB8072B00881A57AEBE38304FD73F20D1 B3A3F4DBA7CD736A475A04B7785C64F8802DD8483C75E50F385FE63D063E7ADB 0FC45DC313B0585C605D1529D226FE08FF7ACA26E0CB2C1B23444E976107731F 1795EE18D69C11B9969542AA52BF0D3C4D00862494DF946B74718DB8FC586DAF 64BAE620E3C1512720B0ACB343DA448A0419975CD986B40D91192158129232C5 85E18BBA914D219AE5979CF98BC9A4006687095BB53215DEE575D4FF7FDFE94A 25A05F1CCE048E2F7A801C7AFACD586C218C1A04B43F167EEA5D6A4EC9DB4FB8 C2E56225709D9AF95C88DFFF3B7EB9C337069278D51F0824C96DF582C630BEE2 C4DFA3E9C9CE76D1B52A23CBAAC840EEC8B3786D45834D55942B46B6B4C612AF BFB077F21E0F7F0EC6436BDF1704EAC52789C75F7900EB441EF83E37C780A699 2E3B2F5222D7FC4440FFBD93A01205FC7E64CBE9849BD01FD4448B343FEA4101 9FFF4E1527F81F4DF3FEE2F42953C4BD655A50BDC6EFC02E25A5D8695544E166 7ECC195622F1911EE8D637DCEFD8686B01A130671BA5597768246CEEDB1DC252 214E01AB3AF7AB7E3D766C1FF37CFEFC2FBD4448DE566042D46B3F2A0CD85D27 52F4CBBF632139E86B8A2669321B4488AEE0E3EE016440B026BA4F3CDB798BF5 1E026DE9653F2851D1B095C7272112CC642066872578C2063921B1F1DC1DC37E 6FCA614E9EDC7EFBCADDF112E3127B753D0DBA1F920964D69C779343ABB1B56C EEF95475F7CCE12C08A5AC0502C65284DD6F34C8FC31E6D696D9B1075B6CA4E6 8857AE5D9267CF640DBEB733B3FA1DF1EE67D578445DA58492A8BC190AE91CAE DFE1F1C833312BD85578E1D63F8E593432BE3D4A9307127750DD9F9509660664 92F85F9C97860433F1190C2448AAEE97CEFD9E048681D41D17F5CD3B8C6C3AC9 E7D46179623C806085BB5D23E6ED26B2D900515216EFC224A9F25660536467B8 B47665F6514284E567397A7AC78784A8CF47B61DDC9A66B74C04FADC5074B8C0 476EAE541AB9F94E990FFC31CD94CAA9E93966096383C1951B00C4E79B51A728 7526A4FD3A5F6E9D673555CD7142C94EDE73E8A3295341698D777405898E3B4A E149CB4E9EF567CC18C35C3BA9354CDE55382A6569A8D0B2B7453E5008347B32 8B5745431E577B3525D343EEE8C0CE5CBE1CC6D3FD13AE8C5C9F672B10451183 3BDB33698C0D220902195138EF44A545EA6092A79C9F4AF24D73B735E3733FE6 67E47D76CE584299B16295BE997949021F949E035F49593BC128DFA89182F89B 2FC9EDE36D2010B1BA62A6D900B00C4524AC6981F0DDEE41043ED7500F574409 C275BD142BE36AD2F5B08121EB0EFD58E8EDF388CEE211D4FC3C2D04D09E8757 17CF2869D202B2302BF7F5741F4DF47C1D76962A3DE9E718ACF684751BD968F4 6B3488D623E734451674276CE47A465AE3F50B50A938C17DAEDBD7E40737FC3D 35A709ED283B930E0381A174F3804E78BDF8B8761BC37179A96FA636127145B8 639577E80613C9A547AA8C3441C85E8408C0C4C1A5143A3179F9366DECA49F47 324BCB48FFBF44DC15A98DF0A4F9331BCD908E5D516881A82ADA22B906A85015 6643813BFBBFBD2790451F64AF61E0252CA23D2C44BB92D546B50DF7C2F5F3B9 560117B9EC0D5DEC65A4404FD7CAB019E50B6C468DA7B5D2239F298DB98C83EC 8611CDF1D5207EE2F8F817958D2ECDC5557BA2D8023B69FE98BF4ADEBA5610DD F12B997F1D998441952BD2EB089AF2C6CC99FAD2E7E9AF14648BF99A09355470 F32C0A511E8A02FE7E24F7E535020C6FA0FC4D9015532467666B0192BAE64768 756C8AC401A71864A830359DEAC2919113979FE4DA48292EFC5DDD97A53377ED CB29E122DACB9C126F687AD2684F4EF885727C84F09CA8C579D48ADEF1F47859 DA6848081327E0316788D90F3F59452FC9EBDA175845FF0FD6178A0582E20436 4BCE9A140877B4DE31EC9006341568BDCCC9DF9DDA0B086DCF1D5A8BCE4060B4 1F13F5A274242B4A0990BE59BC8DD36A2AC264258E19CFDC1AA63432D07E9DFD C35528A40580887195D79101345AEBBD0041A765274D09780B2BE95BD42CD1E6 A5B490374097FA0E5B6F196A3C47C18E8499717C07A36BF3DEC7064845253515 E0299143BEED08AE775CADA4F8ACEB96D70F08779BEBF179B2BFB0DCB0F1C126 35B6BAB5C1F755CC9C40D5506135F11A22F802A9F3C79342B6FB9522729E681C C4A93373F8E6DB2CABFA5B7CAB4C243C975EFF5C5D634D4D311EEFADBF115E41 1C3EA696F82803A071B80E18BE67F7828DB353FDE5B51073E86E68486CDCE01F 5D79F3E3DB087505FCEF1F9B01908F1D9FE1EBEB25B6DDB40C119D5B28DECDDF 0F579BBDE6CA59B903368E3460730A756FBEBA62903512DEFDA5CE765C479DC4 5658ED736D9EEE0CCA46CD2676C475FD3F8E2BFEEF43E7B959F19468FDEDAB2E BDFF5ACA6119413724BA04E9B006C4AC43CF2A16FFDD90A1E46F52C661328295 B245F8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT9 %!PS-AdobeFont-1.0: CMTT9 003.002 %%Title: CMTT9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup /UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT9 def /FontBBox {-6 -233 542 698 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def /FullName (CMTT9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 33 /exclam put dup 34 /quotedbl put dup 35 /numbersign put dup 36 /dollar put dup 37 /percent put dup 38 /ampersand put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 54 /six put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 78 /N put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 89 /Y put dup 91 /bracketleft put dup 92 /backslash put dup 93 /bracketright put dup 95 /underscore put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /braceleft put dup 124 /bar put dup 125 /braceright put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0 42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259 4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457 689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521 0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA 610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8 3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735 C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933 995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723 2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0 4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014 D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE 510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5 BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF 93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385 45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757 4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47 088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8 9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A 09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988 E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C 0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C 94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741 03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF 409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71 45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95 39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971 58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85 84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A 0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B 3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B 7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D 8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737 712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3 E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC 2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467 757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C 54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981 DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9 08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD 6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2 A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5 336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB 3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627 1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903 FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72 A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6 465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0 3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32 CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF 573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA 9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D 15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5 15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1 64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789 D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8 576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540 ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135 EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC 9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099 3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A 1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598 C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA 4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0 CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7 3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9 BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6 1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D 4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442 C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D 80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6 59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647 3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6 14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59 B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34 F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8 54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588 34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191 825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439 BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54 4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F 66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E 2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A 1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416 37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6 741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1 39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC 887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49 B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD 15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526 5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1 80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839 A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404 BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048 2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598 F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B 9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483 CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91 DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62 6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B 7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7 D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B 9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9 EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12 0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2 1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10 85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0 EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518 E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0 88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842 E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8 01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68 54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A 97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78 B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2 D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9 18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13 1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62 31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5 408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF 1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E 29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33 BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8 0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D 99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE 480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481 FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB 587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51 A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4 48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367 385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56 8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38 4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C 839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C 320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63 7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F 461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449 1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A 3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500 0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77 EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8 F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4 097C4995B2C3BAB2DD04B1A7097DE16DFDD76465E79ADEEBA90489ADD0914EBA 53E11A43ECB11D072C68D2131BE1C7C43CB9DD5FBA0A67BA43D6851AD4CD3BC7 39AE2E22CCC183A56CEB71D4F9F578518E376426E42B6390426A8434B5A83E78 77A5B9963BAECD5FA5521C2A29418764E4EC1A72462B04957F823E2817A7F8D0 1512919889500024B1C42EC107E8B8533C0B314EE4E23313A4C1BDB009A20114 2248276B7E4F8924750C8361FDB1FA328B434499FE5DF14B96C1F5D03F1F2702 C77057AF82D3982C5EF8EA40D0B923249FD9810464A9EF6D1A99402DDF08120F FE77568235A193F5DAF57231E5095D4EF505A0FCD8E538D53C5E23E226B487CC 568F94438B050A4ACB53340A4054B02E8F4D8BB42E72FFD1124BFA91C22F3F76 3F3015809D6EA1CDBF7827ECF8893F550132A618BCA2B9CEC7A329460CF59E2E 3F0E70D05F42D3E37130429C984D24F49529F647CFCB675C7CB79749E35DBA8E E8A0B56EE8FD852899BA52B789CF2A5D4F1C948FD5F5C57DC8475E65C83FC690 28EDD11C5A7149D68B924EF92D73A70D37AFBB433D1563A034361A4415C1722B 7599BA7ABFB5D0189D99B2C48024088699820761A73762B4BEA323121D893572 DB414C845757270E9F21A5B2BBDEABEC09C5D030ACDBF5FD8FB7F9D62F13A93E AB6060F37CA8DFCFEFDF62CF0222FC4298247FF97BEFB153EB48A5654F570E17 1E1DFD669AD81A441A98F39A41352DD1447E6B923B88395230C74CF703375B82 8200F0186280DD3701067721E2DA2947A499A0974C5ED5C7BF3A226319D5E60E FC29B2484C062A0FC798C291CD5DF9CCDE6D548E2FD14853CBF563792BB38EA2 29E2FF53230B91825B5D239571581541B8BC60EB5CC943808DE2E587CD56AED3 BEC3DAA382464FA0DF0DCFC029DAB0DD3E3180ACFD8C81AC0484F0C096DCBA59 430CF139C30F8E45F15CCDCBBE3F96907ECC42F00DA70994C7E3DA894A5E4367 9131033E06F1AF4FE22FBBC261B490641D914837EC2715CB72E5DE97FDCAB119 77C8401699DE82B21695A2BBA34DE7E23FA3E4506CA817F20331D0710D2C9B08 F03F2C3322E96BFB5064EC80EF4DFEBD8367BB7EDA4344562CCD23259F7ACB48 04A9AD253332216DEF772A5438B95FCE3393CCBD5CFD3564B70A6B785E3FB2B5 A90A86D161B6F70006DC30254CFE76B55FEE58F2DEDC34C6DDCBF1A75674F657 2214FB982FDB68CFA80DE2485479759CE3DC6A7E73ED2BC4F1E12B16DA41A1C5 7BFC746498B0388AB63258419384F06BB89531E3CE7A320CC929BBA524CE6B78 7E9523EAEDAE6E724E6172A76C8B844B721C4CB17E831211FCB830B1ADDDAF2B F101C2E3F973E3EBF963B70A5B403CEF7E3D869AE8461BA22A21944F954F0784 911D337209C32F1ED5585735149343A8DF86749E395907A4DF47E3DD955632F4 2119F02BC4688C047960306B85C79FA5011A0A947B3D998078763E196AFC24C3 F4C5B764B1A90C2FC34808D92BB87AAA5328D35AFC5F6036147C906B7D1A3499 65C100A777CE69E53BB32D79075918510681B6932CDD71EA32D2B8D624249414 E5490FA6B660AB817752C9A70ABAD21AB8B1227D4C87532ECC8B504902FD53BE 5A130CFFCCE869C76BDE799CB07BE6E8A364CC42FCF642314329FA02D641D85A 20F2B7E13DEA7FF35CD9BA932B1ADC1BC32DD07EB048F4E87C200FC186942E89 9CA9E82EFC02119549CBA415130B0D98A471C970EB1EF7A3E8B7B8242F7E81C8 EF86B46A99759F12C62138634EF26C0D0942BAF165A40347CCCA16FC278F875A B0CC1515417283D9D093ACA02D40284BDF8604CF49C1BC391A14BF2FA0D2CBF0 FC6C63080242FB76CD082CD5F8B74D44AA03208458D4E76D5979CEED233CED2A 111A6D222DA6023A10721B41C8E3AAF75B687A8BFC5719E21101D005BB811172 4621B2493D36C2E4834F7187895F9AA31F67C06EF7F4C77B220D4FB889F8ED08 B29E10164249A7D5B7E5F0984DE91C1C5B28439EBD117BD235B700F0A962F781 5D085D110C2E73A70FBF1116A3089843598D04568166C344A1F41758470B6ED7 9184178DF09FEE308F775400B5573AADA47232243060D683C4E7850B70E7D798 802BCF2038A79D9C02702EF781BEDD831FAB3615DAE92498B0618859A00CF942 50187C26853134D471D76842C893C6D041566BC2A51858E41FC0E3DB1672B373 8F565BAE23909602161C8FA3B0A8CFA5B5A525EB95E477627C24707B7BCEDDB0 C8321822C491A5A86355857CB3BA92D4C5DC550FBCBB42A024479E71BC219C3F DE97CDDB5FC69007024B01BA460B522CDCF5D300293F8375127DCB1ABD94DBB5 A08B40555BA14BFC5E23F8165BA7B45154D3FF754428AEE97A1CFF07DFE06AE2 9C4D711D48AFDE0BC3A50FA23D09516EC4CBD986F746CACB8C95BA69DD20B1F2 08841D940741C960DB0E48623644599B17A04E7F500B64569516376156449033 2A8943AC82EBFE91990FCC2C99AEE28247B3D4DA7C5BF4DEAFDFA2CDD3D08BEC E4EAE749EC0F9A6A28850F201E3B2C79E920FBEA1A7F3CBE19F3F3B2BBA2009A 729D26431A31A7A3405F9BAB02A9F451A3591AA29334FCE6E7DAEB68DC34690F E189556BD67A31FE42BAFB929CCB0B6ACC4DC1649B03AE11042803B9A21C879E DA2E857A305DD86DDFDF10BDD0B7FE06FCE80BF6728A9BF434AA27A1FA11A164 D1584D7829EE7053D34AC69CE905871C3166C96740EBF60FE64730C11A63CC23 4EE4318CEEFB38885A3011812172A1C0ED6CAEDF62CDA8CFF9D0081F4B32FBED 6890FAC82FD2128DC38266AF0DE70FD90489229153F5D172B496B937D2BB8D65 2A86CDDB601218AD60E1B68CE245ED1D0E58CA1936908A114FC8C7A1EC53E3C4 64FCE5D1D94C899EC235DDE3748392BD878EBB8005B92F092F6470F435DBD0F6 59FF0448F92A1D6612BC766242754CECD05FDD77F837B411DD4DAF18DE438B44 833E0228C3349A29BDCA5EB57C81832D9703293BFDA307F8B3084AB5E82CAEBF DC71070017586387A94E218DF6DADDA303D892AC7198249FC769E64EB4010725 5704E6FD548FFBBEB2AF71FD922B8205FF782BFEDC44161AF9C6C366B837CC10 D2DAE81100064589CF1FD53847A0FE243383CC02D9C77E08FCF101D3C2C1C5AB 3177425910BB80B7626B8BE707271BF4A40B4143DBFAF11F30606698652A866C AC430FA8C48362C122C3D3E1A6CD487D49ED49B14270869E8D9AB138DFCE62A4 94DE6402E94C6923D5C7AB32B6C1C595ACB6B6C6D4637C0C33E5D278803A29C5 1970489E0DD6220824B012752FC60AF3D0CAFBE07E0D918E62A723A9E71F504D A5284AE855EA175D724B976D989CC7BBFA69019BB3958B7D61978959C2B12719 788FC7AAB8029B8895621F618DD67578AA066BBCC56649293791A1F07307A232 58EF97F617517F20843F0B317C6BC6F3EF64AD70DD35E6B25AEE4345CE0D3DEB 8DF2284BD0EE20D326FD65F759826D48148C4057DA66FE14CC14ED33F79B2F17 69AC90656F331371D13685AC5090A8653D3B256C5FCAE10A86011E25FF042BED D1346BC6046B0FD5BF7B8C2100A5CCE4DCBF9E882191AEF91C300FFB3EF52F03 EECE89C7D8B46A2C8F993C0A47B3494099403E9042EDC07CB6862531B2024899 A378960B55D3FE5998290457BA27337104887CE83A7CCB5E243097A7A86EBB37 600E7AB7655D3003A6E37AB275BDC82FB30F8E7AA1072AE291BC692A7B8C913E 0FE58AE6C100BEE929F86495D735CD59D277728A4C1D8CDB025785F09D14DCFF AC86E32A4A582CC053B4A60519EA32000AC3F372739D6973CE3C2DAB2794D923 AE6379DE839B195DB3A1EF5A7D1C40EC956F4928CC9C9BA7ABE78135DE7E8FE0 0A243119A8A652396BEE0C84C2B0FD19FC42B64CBF9D22CB75663FD43AC3EF1C 555611B1BA1D45F85D27FA3DF97F57C321AFA39566D5796BD7DA9D776214C53E A8ADB3C7478A2E779597D1F66C6E3B027E29C02A32CD02A6C8957ACFED6390F1 11DB06ABFFF7AE18923D4E4EF99EF4E0F58245357A9FF20283BD0A045446CE2B BDD97A4856CE8898CFD1A69BC87A1D8B155A9E3C337AB860D4B9C518580AC24D C89557495A65113EEE53502254B60A6457C73EDE878025E25760D1BF4050755F 7E73C95A73D7D83BCFC1EE63FFBED31D55149F98BBE60CB0075878C088C1C932 B3EBAA3FA7A98E01BBB900BC12C83E90E2E51BBD8F2C1FAA5DCCDAD3E89368C0 2441328E2963044B19A6014289D088C0434921CDAE975E9A547E41089F4B24A5 93435B3698FBBD0D4765CAD1DB922F95AD9452C483B53BAF5091EB7C5627BA57 0B89514654C04DF4552809C7C1EB967137FEA20FA1D92D261632AA66AC66C2BD 4E6584871E1CC55B702F05A97389C51BDA4FB131E9BAAC3345792E0657089179 909CB2EB0529A23BE5FD4AA804492AD5466AAC0B6534A63ABA1DA4EFEE1FC003 160F7EBA31A4BC54C4E327E40DCC1112B17D53D4BC3887FAD8189B8AAC3658A5 B44B1F10ADB62190E9A097637951B18DB403C20D93A65F602EF033D3EBAE895D 02CC3E72176D6BFC26B7AE9024945BC787B07310628D702580C0622EE5B624CE 45F40BD8C49CE83F7F807D586193961D3F2E802A57C299070B2D0F760BAC8879 7D619D7356596434A7822983D64F157ADADEEA2DAC8DDC362504FE79EB29F3D3 84354E9709F5968B0891E10C66EF859EA472E26F0DA704617370757C40FF2A61 6005169BAF7B3F6AC6AD6F4CA4E92B666C5942946303D7E8F284619CFB0C23B3 B2CE3368C46FA4EE95B893B3987FE902D0A553962D230730F00960E5EB7A4095 8DB86FC8FC5E1B519A63A10EB05B239BD980614EBE9F47A630A3E9960D1B1B30 ACF15F2B9BA83899455CB66EDE2804E4FCD5390BC6184AA466B65AF9C273C6CC 4CC9EFDD9DA23C2B6EE6D41897D75622D13639B48A934B71D8B5727FD3716690 9DB0B5CB21D990281E88930682FAC6C5F4E2F6B6275648A15CD4976BD7A2C3C9 3088AFB5C74CC7B013013FC07C1B0F3855B346153B65C1DBDCCE354C46997443 F0D88F3A566016F9DE8CC72E2533AB3D608C3879CA50A44987521E4AA87C7535 70D52212A6E9B20188A29AC8EC5BBDC36E5905AE8A98D98BEDB04CBCB86803E3 9C11481DC384480BA84D6739749755EEA5D13825E2A73CE60C4D9E895213DA3F D17614DE23A4F5BBB77CED37BC0EDD509FC982B6A384D354404888BF640EEE32 011B752126CDC123D644359A67CA221B943FC9F9AD3C21C6A6C200E1116C4EA3 6342DEB13641F27465E8BA07492CE3478456F4AD33F11396C683B645A9265A8F BFEA4B15045B6D086722C4DDCF6636F10B0C7AEF67DF5263BB3C3B0205BBBA6A 3CBB91361E9D6DCA886DA4811976AEEBDF9F693EF2B9C92AEFF1150396924FA5 6773EDDB28EDD632A6AB358D8D9481B681A4132718ADF8114A886D485BFE3B3D 5E4D38E5993452235ACE90DE18F05D3D8BA1BADA1C91E115FB44D97F3950404F BF60DE067BEA3DE4107DD9C602A1F79DB07FE8B9578253DE009329954D4FDFAC 03538C871E0E861A27010FA65520E2D64538E16207EB2E7480E120E7E951E687 53B3A675C2B7A33C87F74C712C6A3F7AECAE4B93B854BBD64B290AD73F418E24 ECC55323BC26742A57ADD9A875D54845CC152A0387796B2D4240D8FD233B7ADC 24320EF503F00864E616875A4A78E5C6812E4C080E1A9ED6FA5BAD10CA19F60E 75E9555D3DD97FA9D4FFFDD0A7F1976A5E6162C9274BCF9B54E70045C2DBCD45 DB89D6132634D5A247EE4D86CAF91169A3828801D6C809BA93731FDB1DAA57FE 32943D7D3777547C5667A36711BBD59519106F08EEA586F6AC76000B4B11F0ED AE10745950A200C4854DB95E19793DA183C0D65EA822A6E4B74D958C3C04C3BF 535B18FAB3A2ED655122C1936B010C5C386C4B7B9F0BE1D3540898DADCEDC7EE 15BD873F84D16075241F458C0CB77190A9AFDBCC06B8F9EF0826EB30ACAD19E7 E6F677680A43F868621D5F159E7D4FA6D02298013A38D07B95215341D825E7D2 6645DC4548F7638FA0E7C6623DB99DD3E5AFF3E98CE808EB2269D04F2974180C 5C6835B702BCB803ECED3E509E11F549D99E104D0072FD0AE0E3368B8BAAE93F D7FE42F04D18D1334487A4E264FE55637FB75AEDC315E26FA1B786EB7DD8B92D FFD25EC6CC2987C62DFFA29E8AD556D63CB52C5AC6892B6E1FF5634AA04381BC 1511469606DF08C618CF6458060F97F504AC0EA6313834D1A7CBF35EFFF4ED85 5E0778A7C485E61DAE41A5962822016DB270FCBAA00F6AEAFA29A4EBAD761C68 209ED228DF25730626741D50E19D1766BB895830397C8C1A72DB3BBA55F7DA7D 4148C1D90B37EF217AC492993BA2CEF9F2842004547AE32AD8A8999B3077AFEF 7672A0D505B382E6A41E9FA2D11C617A44D5AAC2042184266017C39B29540FC6 08B70ADDC1BDC711390DCF933A70D9DAD03EDAF54F8C38C9EFFD8EAD1FF65D45 11AD1CA1BE49E98BEF8BA210FDC8F146CA563F9A51AF0B1178502382A7482EDC EF1E313E3AD947109B58112FC644CF77308D2A8B377F5FB494E28B64E96B3F2D 7DC3A2D3F8E95EADBE7C11F92CC922FE78E07900D69898F357910436C69B63DA 2ECFCFC37CAE957B83C5B9E232E308B5090BB2A99C1A19ECA4763FFE3C9BB3F7 E7A8A66023438A6D0A2320F3CABF171C0B1910141987305A01E08FCB9D07BACB 54F5E23C26E05F97B2D8D4C29C3442EC472FC39C278AD0BE6DC19D91433BB8F2 0745D9639D35B97D9FEFEFDB3AECA7C3765A5E88B59B40E00A0088440F1D6E0E 01792EEBBECDE832E58A843D333DF394AE900C45C42C756D27DCC4B6CF6390C3 8450BC057D44E6E83D6CC28F81E99363615CDB0AAA8DD56BD454491A6E9F6B77 455CA95CF08A14C6326E78AA6FA39CA2053D332E1218056A952D1123C1C73A9F 6021124CAB7F23CC38A67F3FF7AD39041A290926E85E75D9ECBD7C78C05D8E5E F004D7B65CA97608F35E17C91A8C3ABBF76237B4B171AC566A0B9C34F578D551 1FB4317A794CE695A872463510543E212A8E61CBC6D762730E1FCBA388369494 9AB9DAB46D412CD198968F40A60335DFE34F255581923EE62B5A8984E50B34F8 AFF6606331FEECE433749E039AA1B74D4C6A27AA1F6730A86A7EBD67BD70C0C0 0D3999DE78836667371883ACEBFD70A6CD51D417ABEC5B2324D863D8DFBA6918 8ADBB879EE3823AF3DBD47E280814FA603F4B13AA966A7F7114BB0130E518715 C442CB4AE0D51C1F8811B902D25E8B2515DD537E9292429711D725F5613182A3 4AC989EE031908DD115C98349B9695F13969A43395604C2E19CA305FD1D60226 9CDC9C26724DE6F6B4819262B8E8A1114F633933B8E18AF2ED71BBAF27277935 41590F61F257066BC3F5A53A41E4AAC48C871C4CD6AD9FF3781B6038AE360DD7 955A4818950DA028D308779858C29E6D010F28451A3676A3EBF13F4F82A25D3F C470BC73BCA4C342967F3F77A0B971E5AF9AC80D5595FCDE497B774902B89B80 A58E83E55E40AE05E9BBC2C8BF914FAA83EE695EB109B713DB0A3FC67E102096 A7719209AD328C46C3F913A6CB7C78A290749BDE09D0C5C7947C715F1359C493 26A276EB34D9E0D1CCE459296FEC388078992BB794AEA66BB7C80743716FD0E9 E1D47B891D95ABA42352651B832AF5D8777AD257FC26E614C9B1807EB829951A 0153E30FF02B63ED75A314E206532D5A6F02F7D31EF1A4FDAF1DDB327DD36287 EC0226F0823954EB663F735073878B115EF2B0B069543626DD0292BA4C59974A 3710A723D9C00EEB118E98DA3A8934845C44C3F988B4553497248C3342122E2D A76A1FA97E5D1061D824999E0A67025E4BF678088B6B57B444C290DEE9D7C3AB B6848C14EF2FC6776A47BEE20CBFE61F667E9132E00EB96A581B154B437C8E2E 9E16A414F99AB459D532768C7905A37AC6F0DFE133B7D43F58AA2D43C0B63486 E769429461C0C574376291A00DC3E084CA171F9F546AD307098FE9E3AAD1DD61 DADD7AAB91DD6C00DABF4E6BDDD8BDD51D687F2E1B7162301F2B80BFCDDFC3DD EC3AF5030F284E2B869C89A196762FE21725A7F614C16144E0891EC814DF7CF0 5D4D3F66D56EEBAB3F8539D890B7D7C869648B58E6A51793C213A5D5D335E27E 3C6B2105D07E8751915662AA0B8F51FBA97169A66CF2195E09125F056735520E 6FC8AE0C5EBC2BF6380C1C6176B8C51F51772FB260C83C7CD256573AD0F36304 710A857C900B2BE113C5316A1825771F94321863F2E703AE4412E73001758478 94610FA250C774178992AE169A24F246F58632CFC2704CC92439AADC4ECDBE42 A35B595E632698D4AB4A56A8AA56BA77F732643753E34F6A6372BADB7DC4B872 3C336F6A425707F3A484CB46707D39C785419AA3B53A3346E1B51878AF2C93D6 5F81B5D88FD4AD6B0250E16394EF95AECF15B3F00D4247DB499B13FE31B73010 D2494176F67B8437C97401626DF51355C93C404461C4ABB7D92FFFC765E0BE89 84A227B1FEA694D32FCFF15D3EACBF9D33C5AD275B6AB76D2B79A3E0D0F7EE94 2046ACA982FD57F2415B6914733CA58DA9AD53B5169D973C3686FB1EE4CFB94B 8099312D9758B884768E82043A6345CFC2D05AD742B2B50A932D310200EA0207 FA6F0F78DF0F234C27C9A7D15491E6729C7665AF2BC732116EA2A2BD75A83596 6E4381DDD537450C431BFDDF20A784EF02B1FB68D64EA9B4DD4EDBC17AC6C60C 38D99AF68F29D5AE73FCEE7A36E77A46137953E9846F5B8F1E89A5A184AC3B66 9906B2715E3CA27FBD9A51220FC6B0CB3D7A2A1617D3C6B1ED4C98CEF3941EB2 508605E64D3ADA65B6260F0EDF3B483A7FD014F88E32BAAB33541FB16DE5FC99 D77018CE78471A24DC42A3E0CA3979527D049887023D024A3002B37EAEC9AC04 2D5F14E26213FE6047D0F4DDFB27972AF90D39BBD19417C0E7D682DE0F82900F C24B570F2EE7F2191FEF466CEB9846B1F387324D5B12B9795A13D8D454FF23DE 9D9221B1DE88CF14649B6C9F1FEB572D2BB11470C5D4AAF80CDC4E07E72E4FE2 658D8835158AD7B8AD06687BE521A647752838BBEFC0C9356A0CF1B73542B6CD 1DD5606CB6A9F6263B799230463616775209C2B2B8EC69C0FB00BFF103053EEF D164BE0ADD2D7234F5B93D9C79DBACF53630479948CB151A4BA659D490BD6B1B FE49EBEB01949EA4EFD789DC7F584D2D0FF4C2307BD49844C0A09B1152699CFD 00451F12C8041BC3569CDC068613BF42A3505E1E1EF7C15DCE095D4837A3B075 A1B8E329A5A264BD10C3C78FEBF4FD5963C0443E1B36B718ABC713CD4980DA0C 7E7B786EB989FF2DFD627A6132E360712F222988A4E6459225F4438F7464B01A 9B7F2C6EE557F6BF291DDBCF5BB3381F8C5AFD3DCB67CB8D885C38CB5CE49EB3 DA040612837DCE5DB1A56ACC3819EAE607D852BF64EC9BC75371A948541AF8EB DC5BC4583E013D578715034B7753D0BC6F55AB54C87B7FC771B1D0140341736E F99D7610E03ED6EECDD1046ADA13B865E118FB4322880C19BF933549CA1E31BB DE2DB4F370E015CF1DCBC99D792297189D7BDBE5EEDE7E30EE6650F33161D319 6F6BD222E804A6507BA2ACA37284B25E455B0537185DAF8773008BD6EBD113BC 7B27B47AB8E9CC8B6A21BD6FB58E3FA32C81CC3EFE9135234AAE897E191A2600 A6AE60220207E885422BB1B48B2AF4D4CD98554CA3BD3BB720FDA9E8540A1FD0 4B15777D2A23C60AE4E9A80B1A9A6273FEFEBB7AA57DD4931D88934A91490B06 F5AEF60987734D8435BCB113E56FE6F3FB2D3A0C057DF82611163D91E032B44F 3257510434B96168D0A1C91C12F669FAB09961CAA5759CB880F7CC8581FEB999 8D73181255DCDE6852FBF100DB92B70EA8C7E2B82C5C2D1B069E0B126FB09845 1F828A67AA70CD628BDEF776931920AA91A1861662B30367A8B75F7DB9585601 F3BC666F1E422E884A49156FB8DEE987F064788373A9C98B9A01C5E8526B6120 177D3BA99D17A99CFF561B8EA85AA74FB443F02AF95BADB1496CE49FAB52B3AB 6284DDC0B6F8E286FF527B0653FC3BCE3A791536C6662EEF3F21023DCF65B05D 3506D713EB4CAD909E57C9672D911DB320ACFCC0724F25E49DB713B979A9FE44 329918977D00E41BDCB4A8BBC984FD743BAFA0AF1845BE4AE1D47428D124909D BE639284E91D71CF630078EA2FB7408731A88E28A9768961C52E2E3FA37F3FD1 E34F85E189D822C9ECB971D9CD819CA028A138D741DFE1FE8373E3A7C3373270 82AA6B286D19C1DD7D16D61326009A75E2F23A68A5ACBCD453E5516D9198C125 3E3C172A730443463B36110E4B1CE6776077CF23700A36A4A434C641331626E4 4591E792928383A7463F3264DA88C9A22140B0752EB0EFF7BE8B684131FF4F4C 19377AE97D4EF96532FD72DBA9570CF8F52457CA48FB99ED65B8AE6E8AC2F982 03B338CFD36CB681279E9094CA6F110BBD4D633629CFB0C5DA424D2003CBF6DF 1965ADE0281C20C9C872A1B987BE11FF533F03EB9173739D68EA0E2FDE0C5BB2 9428A037DAF9AC7560A3551FAD938B6BA40D5F8F12BE6960325EE234F255DFCB FD86DBAF8B027C2A34C8AA4F0D0EAA3CB020591A784B25BEF370C99AE34E2202 6395AE62B5B71DD4A551BDFCBBFE8F7FA64CFF587EE5B03A8445BF66BF7DF203 6ED5104402FB9B5560FDF3AD85617DFFB4C8D0FB27931073F3CA6C55E6E54E02 82CB95E852170FAEC9D6E26B3B49152C3DBCD5BB22F5B212999D21D23CF371A6 02E8AADD793585C7B8BED25D7E6FC8509848EF83DA8B0CEBACFA64D22BFB0772 D5C50A431235520DE11BE4F280049613E70B53629E6D79305EC6333BC8485378 25630D8BD49F12963C1EDA7FEECE66B6989C18598F9F1D0E1DF584F83303AF24 29A47FA93BEB04D73913C112AF4F17BEC47D7A7658FC08346AFE4B2A7146BD61 5DC0395C52A0920393DBCBFB31CAE13E8B0C1AD9BE8AFC3CA81066890BB79CAC C8B083ED7853EB74795371A2C72983CD9F35C771C0707D9140C22F7E9D148D8B D8FD578E160ADA08568B9ADB7075F426097A0C3BD72C557D7B8D808A1D24BA33 06E970953C6A952AB7B9FA9DBD3AF93F39D953992396CB4A8CA699916FC666C1 BF279C4ADF1615EE65BF22C3DC916B0F9F7B2CC54EBEBFC9E6F47290896130AE DE1B1B599CCC39208D4142D529A8BF191B99B1C49E60F969647EF6FF5304103C 235F10E72AA15473AD31B7DFDCEBFEA40B73D98528B9BA34115E2D428AF84702 BD9B3296285CABADD2038A505F67CBC6226A942561D5076803C8E57012BDC5D0 143BA3A2F5C501AF422AEFB95116C5C40BFFACF1BF7F663D35551F8B270ADFA1 7C29847D1FC9C91188A3E30D35A357033C213FD9C4AAFFDFCEE8E56D0F494570 377825DB4DC78A2E4910321F7A99CA19D8F63B6AC5DB9DD3D25A6B7BD9B59A0E DB5F0A25DEC3BBC96B3D26FAB85CE144D7834A1CE02AC05898F11B8415A3CF25 AC20EA39612951A5AA6246DD379656C8E42007491461F6C237C6A21A4633ABC7 9096E45DCEFBFE5750F7D223C6D00DF0974B98FD99190E48E04D6AF706F3C9C2 4CC83AC842856F85563B0D48DF0B04B2FD6F3FFDD891F608782ED50A2C3BE1B9 2CBAA891ADDB4D65F2651F1DAD6C4A0A77B25F3B6867EAF356D30ADE19D406B6 B96E61E18FA814F25A4EC9A7DB9A97E7062DCA91768C2C57FB065B001D966263 21276E0CBB1ADB60360598561888946F39E0AAB25881B90D6B08698243086340 5EEA694B7CCCC012165C4E32F2272314252B5C937BB54329C078C37E8BBEBD96 82813CF7DFFDAB3F2DE684630B10BCD386D19E8E653E220F4403C5831EE96069 94F23EAD50696129006B8CC3160DE8086C978E92886169CADEDDC53C6D0EB174 DE2D95EE0AF5754A954E7806D202964D8E679CD7F93B8E5BBE02AB2417524888 1AC98AE1FA2D369C70C0179F086FD3B2A759D6219B6BC48252F970893C5C1DE9 5CCEA71B1A0F10BBECD9A63D30F6469E0AC94EFF99322190057B2FD5A1507AA3 D242FF2C3DA7CA93452BD6C658831FEFA2A2D0282EF662C3B0B8220176860CB9 4E2BA62E6E57048875EAF30B0093B782764422692D0067375843F96647735D41 8C19C1ABC9D8B0BDF3D97F21C5900BA2D9E45A0979B21FE7CA2FD50319EBE343 8A16E6DF19AE467FB3C19FDCBA1017211E259A3D8EC4714E38C8405C5B008626 175E959124BDE96372905BB9555798DF405DE23830F3F26BAE7058034A0FA2FC 0BE9640C22D88A8547FA1938DE72515AC0847A820BB6116C81FDC85DBCBB4BC7 D81815E0260D9FA0E759375A9E4721CC2204F4CE00D0CA74E51871FA34875C68 0B1E05DE1DCDDD21BF3AEF51482BBC19DC6E1AF3C2E3C915102FCA956BA86CFB 9FA5F50BA977A472DDDB35E477ED5AEA56C005157C7AC7627E529F60BDDB7422 BF4C061D7029C0F85DE7D266263FD23FA9EEEBE58ADA311BB0D36FF1FF0802B1 299762D3930C34D69EE4CE17AAA7326835A4D553BB045C4A216A4AEA82AF36FD 73944CB69AE75F9E79369F833EDF5930646C3BE057F457B21BC52206693E19F9 A390AB95E0FCBE021308220B9DCFA3A2C43627F105464F41CA9ACBF51DD01816 87595BFA78440BDE4C69A41DAC308F5D19720E1F01C2B3829160738FB498B2F9 C52ED576618B3998576443454A07B7784FA0CCC0831461954C05C364D9B0B09F 467043627E67D7FD66D583E92183A52C3EF8C0179E05661D41DF119605ED3202 3B3E1C232040B475CDEA8E0AB92B881720A079F93014937C4BB2450C8A7A6182 820CF7BFD92B71B2924972DF468BD9E120C8C3C96A3D38059DC95E2497BDF251 639DF3BA5D34B763AB8E8716FD5A9B8E1AA0E1C445B5417B16B3A2DE03C1564B 32A17598D24AEB4C51DCDD7D28BD0ECC39BCA860E5FA32FB8DA4FC960E488E52 EC7A3B42A9701DA7CE09FE0DC6844E26960C6B6F1D6EB3C07C903866117B3FE9 D51AD8C654048C70A94434B5A2C6FEA57D5071679FD41EBE6E6EB7C94FA9E49F 13534142F2FFFC56632873F5EDD88190A727A57EAFA05E07EECFB8E901A978FF 66B1B6026D59E36EE4D11B667161B01021B1697EAA4DAE1789C85E90276D6E80 3AE9EF553659116F60CA3790D10BB50E21DFF508E8C13AE909A031F320ED684A 4757DE36C67EF5A61A9382DDE8026F044EE45D9299BE637CE9F3FF1DF2612E94 F1AA8C6C9CF3E7A7DD54EA60DAC781FDFC79FA23A549F9D045B7D33815AD1862 B2443B02B7017DC77784967E9535452F3466796A1A79AFAEF033087852EEED3B F73B887659C3B5FCEFD0B3C6CBE54FDC4997B52331FD58FAB9A3636DA029B88A 85B74A691D803AA3A9C24032582F11E3EE8369B5F3B5E9D121896A29F2E6C65E 48692E4DAD0296BE653A632609DF2C7536DBCDCEBA1F3EA21D6E4848780E53C3 C850611024B2F2CE430F725091F4D94262A1963B6434A3B7F7DD2D48725A9530 D1588A863EF323BBB5A628472E87FDAC1F10EEEDF42334AD39F659AB1D3C174D E9CF07772CC74C112916CCE5E02EA1F813DD7BA5A2B8F5EE63529C4509900B2F 410B7B16E6119ADF83659EC1A742688C1A1699682B90C518B3DE85479C890E29 A99E798A4BB845A982169F7301CF3C4BBF583E6D79AD2E49CEAEC0E7D2311FA7 5756E69122F4CD6AF69057EB6D76BFF0C19343048B230A20361E33297D683AE1 45D1687D84ABD5C8BB836048B9B5E650ABBE68E66EF27C89AE01DE9BF0E1A0EF C5DAD166222EAA95986D0A31AD4FFB210D8DB5582D92AB2085FB6207313E3BD0 0B8D05218DCD8124F8E9AEE538C455AC0F3A121C53A27B963680D625AF421DFF 718D0682B8FC8994D10F80EE7CFEF3C7A22A2622E8B685132DB7AD8B8EB74891 A10B4DCEAE8EE380EDAA8F13931F9D3DCE875161CF52277757980ABFE42A15A2 9427A355A1D0E43D51E5259C1236925DC69CC205D8C4286E7579F990A29F6A98 C0148F081FEE5FEBA4CE1267AE67C854987B9B70A41F730768967A58046D80F4 9FC01AC85AF924C87CF6A97D017E382E2C888BB1C80138263B8E0DA15F82E169 7D23A24302AAB8CADEECA545700D979261D1F7F1142F2C0CC2F3390F58123B88 77DCF0DAC085BAF095BD3E158572FDD033E44E067F0D0447071AA62B1B4FF680 B841E0C19E5443970C937F80966046D7A00A5DD1AF38C18D95AE7732AB983511 30622485D8DFE310AA3613DB5F351C9D1DBA6FCD686E38148967004A5EBCAA78 9B6B31B3244FAA863022D2762D43BDED9A8CFE51DC9A8F545441E3A478F0933E B187A85A04E4857AC883BAC5F42A890C93D38C495F783CAF9780B6D2BF160363 2EC4DAEB9039526E575A4183F9C02B56785C6AD690B48110030507634EA65649 EBC356154C92197E63103FBB8E22D39003AE100B70A920CCF051D95BFA98A5FD 912B94289DDCB7C05C6ED85A75E27FD5F74F86486E23D2988B6DB358F41471AE FAE134BF06EA5B5D1831D9D68FA9791B72D3A2E54D1DE5C2C6A8DA1DBF18C280 C6073F817125B132928E2EFBA35BCFBE39C1B88FFD602D2D216EF0473CAE549D C6D0A2E6E82E68404259516F3591FD433517D9C9FCEFBC9A5CF7B5B27F5AB430 AB18435EC8BB9AC2843258FB72004AF4CF43228AAA717CFCE311ED7A785D1D19 41A7D56339F7D5A6DCBD8C2473738D9EE6F0AED82C56E7CC01CC7812ECE57061 43A65CF7C781FE0994ABAD729D54FF48C029DE1F8473FE2A77EEA482C87C0D31 E3D8B7C0B58C7B93A535B401725657E2B81F602C0EC9D5E38C1AF15718346664 0E95B89D0987153BEF53185D351D2AB2EBB8F88B44580A7C8D9114A1CB01D29A 788656E462955BEB11A3CC309E5349B033F33B0213C10166D67A24C877199DA0 76F0D03ECDB6EED7C23062FAD575FB03D34ECAA6CE3F3EF5A4A4F44B94955424 60598749E3D93B9FF2260A1EED71D6FE5D321F658DB5155130BC84C8AF3CE339 8F16E09681886C2A8456B547144B3E52571AC2E8E30E6CE628C48BE2D08E67C6 D2A79325EF9C6C4B9FBC621FDDCD1A9D62A618E924345ACF81154B583589DB80 6F572ED120A7067A893DFFFD64DBC2D7859B9329E417C0713A5FB0C19B10DE49 864629DAB75E73C3E82198B00E9F40AA40E51D8D64AB90C14E94F51298C8F20E FAEE0DB31426337836E77546A68D0C3BE4AE7E54A693E6645F4C86F0199BDF70 C9960A3CF831EF539CECE72B563E7DAA9423BC14BCB069F045D906DE885D7425 726DA4C547B99590E71B83335247A025A7D3DF1F6C37A9B330A62E8E09462C89 EBAC587566817177EFC52550D10043D933196549C0FE765F2581E74ACC018898 27561470E34FBE6D2A2685E6520A4414D7EE1E8A038E082CD20FDB77811766FA D06186B6AF02B84B0FE903B99ABF0C8C595D951458 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSL10 %!PS-AdobeFont-1.0: CMSL10 003.002 %%Title: CMSL10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSL10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup /UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSL10 def /FontBBox {-62 -250 1123 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL10.) readonly def /FullName (CMSL10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 42 /asterisk put dup 44 /comma put dup 49 /one put dup 50 /two put dup 65 /A put dup 69 /E put dup 72 /H put dup 73 /I put dup 78 /N put dup 79 /O put dup 82 /R put dup 83 /S put dup 84 /T put dup 89 /Y put dup 91 /bracketleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384 7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0 C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814 25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5 7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581 299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8 80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB 5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584 8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894 5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B 966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5 9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4 A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD 94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669 E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929 5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23 8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5 155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E 4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038 44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D 8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0 04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07 111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344 8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C 567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728 C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214 C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094 51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01 66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58 9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6 2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4 4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7 5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256 0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9 233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF 62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086 B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88 DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0 C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC 38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24 303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2 8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1 8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2 C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53 9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363 4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29 03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212 93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8 91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0 FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27 06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179 95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954 9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2 7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972 6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31 5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262 3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91 CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1 797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0 DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112 CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19 8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51 04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757 78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE 730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F 021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79 CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57 90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD 97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0 F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9 4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394 40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7 3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B 362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7 DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136 7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233 04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8 DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049 B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F 9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229 3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2 B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571 74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A 44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5 A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8 3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1 BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64 01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4 6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C 683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D 87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF 550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6 2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB 17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB 3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B 1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514 61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7 124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2 ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746 0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246 D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933 F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2 BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003 75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A 8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3 B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E 7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7 322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E 523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017 6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77 66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633 B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182 5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1 093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838 B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72 6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394 EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966 8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE 144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0 7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F 172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9 254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6 5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71 011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460 B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC 0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E 3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E 993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E 0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9 18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0 ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228 1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3 A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A 6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20 DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323 1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761 93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082 E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62 4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 AB7916D44EC2210CB941B83BC0F1C097792CFFE7112D039CF77EAE73CB4E02BF 60F5C3F629F7BC5A27C207D70DE63FBE0E023452097D5B7AA5B2CAC668D4D075 1A0F70683E96AE35A6BA0B59619C215A7012568991AFC0C35789DD0ECE45C649 F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289 1D0C954B079BD2977384B96D8460B4F50EE635A4C8F7A3B6866F93CA641F3F2C C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627 73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866 2F2CF263C8B27100503264301A710BAFDABE2BC79B07CFA2FF4628FB593B0C62 24651DBA0CB2302B18664065F9C6D06EDF4CE96CAB664B99C0B710586D3E3D73 2357B60C1EC5EC0A5FFFAEBD1FDC2E8607886FD2E971CB2BDE3F3831ACA3C77C 09331BA12ECD9C58934C3C61023C70149AD63B43B158C677FD43830A89DC89D8 8DBF8D0F98DDA8D06C9D59B5B4255EE05C2FB4C677FAEF12B325F8363F4A9C00 0FA3A548FF16017CECCD6A1560E11ED9EEFE1BC796D2BD8984FD88F5DD6153BD 3172D56277366465F8AE0AE10E72F38DB57D30F9DC28A4C2AD1063ED7F4BF8A8 B4D7732E938AC8487739D26FC08BA2DD3927747652FF43107A1F8EC3F11F8E38 1D7A79B86C69CC188F2FBD0627C7F4C624121B2C3B0DE133930F9D480BB2F6D8 254B97BF6159DDBD297E8F0DBEF47689E090BAC0209D53234F3A97DFABADE965 30DA301AFFFEB9BBF566F732FD3BC741A4FD6C6E923C0279DDE108FAB57DFB2E ACE75598F49515F54CD038003920FFC3F00ADB18020C7E2E008598623A8A11B8 8CA1EFE31D894F2B86179C7041C0BE2DC7029117D29FF00F8EBF7CADD2246280 2CEC39A29D82D70413FB6CEFD9B5999414655E1E6FAA31488C3ED458E880A344 5D6119FD88B3AE9AA81DA4E675F78B570679A50EE64EFF2809E2BA0185EE5B94 FF3A70DE7E0462E09651C2F4F216479C29D8B753F0936AEAD3EFCC0BA64A72F0 58770CC3DADFE22FED4BDAF76B9F6D6008A85415D01479746BD03DE32A7D488D 9B1C8F8B6F10A5A8419B8DE651B2B9CF6ACF892BFFDEEB08B780AEB0818539C3 7DAA805D8F621BD6B3B75123DE511D88604C5EF071514E58962BDDCA03BE02F4 48A689D7E434347E81077F835F9801B1262494A8A831D803AD6323DD703ED2E5 A92BDE25BAA62E955AC85FFA599F38A94A4558F83CB6D601D3DFD0EF37610A34 F3B68AB6ED3BC07AE74331556F2ADECCCBDE091A2571B5AC458415284E0CAC03 7733EEA500102E39526E921714290B6EF33987E8FDC5D5E2E6304405B32E6F19 0D34C9995F41248D56A698B7EEB6CF86722751A0D680389F4F7F0D7B0FA89BAC 645836C890A9F3EFCE85CC21699950A00DAC35DE915E2AB54D09ABDF4E9A0A44 75BC29128EA22CD98ADBB8A5011C734367095FE0B43E205E1E579438ED3CC098 668D1D533E0686E9F6527AB4EDDDE7BD654793F67BC090DA7083619328B2F6A0 76F82D5AF56DBD8A80F757748FF98C2A6D5BECFC35464BC557123FFCC5D1447F D0E47454CBF0564E3449DBD404831D268447DB88DDA42F1239E291FA5B0C2A7F 0D1BC8606E79E388ABC7F2C4E2F9A37BF075D69C59592D2E4B1749969E4BC3F6 8DB0A31ED1BB0EAF337DE171630F93F08FBA4BD889DDC7069F06711E40565ABA 80EFEA764D8D52A10182F141110ACD55089ED2A1686B0A2966929A690BEB4E1E F896346DB64B1BD93D2ABA1271303C2051D2065E818FC6F7076D8FFD473FFF7D 5972990679D3A477AEE532EEA8B4ED029FC6CF5E049FDA19BA86B756A8575E2A 1A403D14F491FA424733646614F62E16410A30AEDB48F88182CF81F775869F02 0F8D8B4130CF6A8C4379475C0E5FE333956A7BEB826146670329ED1E267A1418 AD742E72E26FF3F53DF9BD0973EC25108298BEC5BC4C8A334AB9E9F179494BC8 BEF0E05DCF987436DB4417EB49CA8BE14460325ACA66945084953FFAEF84F37E 9881EA4C778636D2EE3E512CE45A4CC31EB52E7BDE60C68F21E90946632A91BA 402C1F82A5E4E7FC60825785331A9DAC906C9574777749A34326B25259E0F31C EA7C970E5344483055900BD864A29F58085BEB1CB67AFFFBAD6294B69F9F8F2A 36A4B5FC710642A3443674A4D13A89EE56224DB9E402B17A645466E74A293FD9 A6083DE85E837D034B347A86E6277E4B4DAA3B7D8C15A9BFBC19CB1D0F13595E D330FC272F0F4E944FD5C61F26C8734051853FBF27BA228AA98352C4127BDEBC A6DC86850E0F1760472C7E182EC921E446583EE115E544E71D326B3A483AA55F 2624FC99D29A19C03D3420D4B845DA59FAA739F206881580FD36F16514BC3C5A 66C8B6CCC715035C4A355221321D53D0A05A8FF9E4E7E2DE61126AEEC58965BC 464448D3A3DB5CF9CE341520B2D8360AC6D0CD8086E53D5FE0A4E9BC992F1DF9 7056113D28F191921A49F34271FE816F6A4A3016252279DE9A17A3153617F0DB B4F5D360243C157FA120CC89F7FE8C2BED8248D1587D2D4DC4F5C90D7D6AC2A1 329C5536E85BB5ACD3DF5520C4F620782D52F896186453F3206D740B57AB0451 EE735047AAB4AEF258FB1DD705DAD49F695D5FFE98CC9F73AA59B034D7A6689E AC3FC0144A791FB04DD0C2718B676B0405BA04CAF72C57DF2EAB282CB9A81A47 FFA4890EA672F3DC041210C9F9C86F238FED85DA9710C7C6C0364552CAEF927C D52D5A603D205C1494E39F6A66BD012080A4BD18DEBD96DDCF50CA118A569035 040AD7B9E925F33391D130C3F274077C475BCAE215C7F3C457AB339647191729 05F89D2FE3FBDB1DDD7606214B50C3860625F0E34FBB3037668338D70032FD4A F7602CEF0B62E0D06B5E27F3106894CDC7B249734195A62A5C1BA0CC8F03E3B3 EFBA46FA153FD44EB55ADE26D38C5B5C1D8C19623208987839093126ED883168 D4A1D9A5F9C94C71E16FB6BB3504D9E772140F505438A00EAAE79D05C5722442 EF1244BE875098251BFD488A2E84C2D3F8F70EA07C9805AD823980561A074FAC 523D3143EF274AC1F1872D8C1272495F07DF9B062ECAB0530DF8FA962D33C377 2449FEC027B79CFC109821620FF67F02AF25F265E9D241F761B1C21DE9AE21BD A0A7BE667E34578A62259E35CD3503A49015D169BA5131BD1230CC16DDDC9BDA 81FBD19765355B5501FFFCD65438449C36F66ABFA4C6DC52D44706C6E95FA7C5 E5D69839225C8141E81F67339D6A3F510F1A87980A7FA2CFCF919F83D2758981 885EF470DC2ECA30F843CC677A3E6083A9639E040DA5FE2AB4173581DA251557 B631AB6ABB4746A81929310854DC087427DCAA78BE0A14D52CAD85EC12CB5D81 21F8F7D8ED34E2EF764391DEEA35D03B34F5EEE7E0845939B73683C9A726D269 6EF42C322E69844F503AB771E7BC722DE5D39ABC79723BA77B0ADA9A27C7E6FD 8F0523F450EE4FF8D985E36CAEBDF1DD6707B61478675CE0ADAD4E67FF4D34A8 597F98978F414323791B64E84FBBE9D67764C113C6822C20C57BA3425C1B7645 9AECC2E00CBB6C8CA670A2A5A7AAD80A1E737E77CFF242BE49B872FFB60FB3A7 FDAB635914C9947859FB5EA665F7432BF5E507C5C95B5BCC14A841A2BBBAB185 D1576730BDEFA8A5897E476D51EB1BAEAFF9FB6C457E0B7C9CCAA1684DE2C1AC 5E893046D4E6D704528669F08063EF86F99D8ACBFA5027686834E8461792E35A 0CE30ABC123D8C3E22873D65364CE0E5FF75B89D80D6BBF420E5FC5E31CE10EC 073C4064C47A38800034AB2BCE4966C18B1187E5CB1870B30FFFF6B967A54E38 2A38EE09854E20AFB47C7E2ABB35DA449FDE353FA5A6FE4D7B550018230154EE E635670AA0FBC05DB432E65F3457ABBAF7FD175D5AB5B386E0CED8D7193BD547 86ED900579DDCACD269C1F4994F845804AEB40D68457BC8DF062A7F3953A2F07 E3A24311F563B23859C69C790D218B0AE1B4A3945F46A5FD63BE4029957390B5 54EA289752B826B24BDB883EDDF6659F26212AFC7CC8ECDFF1E7123A911B0F98 FD9533D672C0A00C73E0F01719100918F605CFE56D0DAA18F421320FC18B3FBC 78AF72B4093E2D305FB3D8EBE1EA2207D05F5A121BEF677F3DE94ED9F0A7672C 11ADB780122787F68CFC8F59D4F4DDC33E13A13CBE7B3C5D8782F8C9162190C9 0F49DB134292B4B488315B11A4C3250977E43F0FCC585709C47B96A2FC381035 61674AC6B51052D77130C37A49CE264C0973D3D75B1AE625A66B56AD41EC0931 C9765F8DFA5D1587D06A28DA530498CC3BF68C0B0F24F80BE5C1E76F528A1887 E8A415FEA0519FF3261FD62F2D1E009F97455D5FD3C75B7775FB5104DB7A20B6 CCC697D5A821F89F69ACF1017C5462D5B828907191B41C0918A8FF44547B7CEB 0F49B625F790A2147B94EAE381164BBE644A3E70DAE8E1F6C97A75E8425CF6AB 6C8073D8E3116D9B5D06C1992CE93024618A5105E7AF32C6BF525C7B5D4AB280 5D4103479D66C948EC9D153B2737FFD64F95D300B0CB491D97AEE905F3C62E3D 439936E4C70508DEF021EB918AFBCB4A56E8758E13C9490D86A5B732CCD77373 4EFF0B8CE6819A7AA5BCC01CA85CFC95719A03098F9CA7AAC88DE8B0C09F015C 46901E5D0A49613F544290560871A1D4FE48D7F6214F5AE1362E5D1EA1508FD0 E57DD35C0993EC0CC5E7BE4CB79256FFA4B5687CDD69750377E48CD6DC808922 BC1BC7F14A5C664B36259FF9161669AAF0525FC70C6F856CC22A7A938BCBC318 D01E132682BCA208FE3B0989D714E5BC01BEA2E3E1AD01FB56F4477172766938 7023741747CA79AEE51D233B0C82103426121821648D4F96C22F040F40A068C6 DD24A417D17F46999C9BC648C5AFEDBE3C4157E2EAC85D9997DF585D8F686C2B 3365696E492DB619498ED80DBD495BF52AACA15AFA2C7AF60B5697E3E471B80C D313AFB321295FC989E819E1970F383C94511737E60C92B92D1720A7AAC6F774 14C51AA35192A28DD4B2D46736A65DC54B2B25B0996CD01D7B388311B37E6318 C29731128DF495967AD5E6EB6F1D469B5541A41D4280AE5DA85FF96EB4AF1789 D7C1DC31D52C087DCE9405062806A0B4E68A075CA2C6CFF60F8720E77AB94BB1 CF15D4AB943E7150B286C5CF6966B1C3C304F96864958030A625C742158EE151 49451D17894D4390AFBBB830C7739D4DCDDCEF731712034ED0CAE738647D49C4 D73584E907CBB7D64E5CCE1A42267689F160E43D8771535D9BDA7702D1981687 107C015208124B4D759DD00397A0B54C83878FEF897F3BEF278BEEA272CF0C82 88F57EC3DF160D26746D785AD19F9FF3CAA86BE390898C6B797B3ADF01B0989A 95B0FC905F034C14C5F32AA0C97B7120601C7440EB99D5855A61A7039320DCB3 CA9E49E5FAE282460118757D841DAD5CF14D34E5D108524170B6C8F2F209C4EF 071D1C930A071D0AFEECA65EAD8826E0E54A349F60B54265C62CC70EAD8AE3DB B113BE98479072046FFE73BACE222033E2C47C7C749D97E7BC932EF60FAE13D4 0A208321C365A5104F6638D21176ADB80A3B415C20757104D051D967471F687D E3E7E344F9CCA96E6C235B52138879D72D33CE3EF4183ADC3173AFF0AFF779C7 78190DD5AEEBEF54DB6F50226B652A496F6899978747E151E6347834F8177F18 0F14381A7BDF9FF785DBF90498806CF5350C82B89E4BBBD5A4F3B050E10E121C E71FC9FC055831EEAB6DDEC8F26D102A9250064EDCAE106D53245BF15EBFF4BF EBD2DA1099A1F0A1F4B6941DACE2BBBF2A38F6D25C1565B6C95CC94DE6C17E2E AA539FC845F16712A2CDFD39854C63F6B7E7A89F335CA2DC57ED30B92A0E0A34 A15B59674766AC84417A9042E9C388A906FEEDD189714A087ECADAA080DD178A 70C9D8A1C1B0C9884D02B692483730FD313C4E64190E6684DA24324CF88A8C16 C04E949E9ACA502B5D5ABA91803992091869C0697422CDB5203057BD85471518 B86DEE52FAFEA174D86E3DBA6EF3440E3DA943480C88F0886412F4411D0FE7CD C2794552597E9CD1107AC4AD756C4CC1BAB6EAD6D38559A233852C3C6735A7F5 EC6D6D99FD510AA4428918E0AED80E0DAD0BE22EE3EA20A309BC7267899D1396 79458C5DF3CD1C0848B555D2AA48DDDAABB87EFC2B584C48CA8BC0A91867D9BB 25994B16DD7512B4836A691B03BF5767EA105D68B62D3D81F2440EE269750E58 8091F08CEE3C62D4131C18D575147A112AE01C93773124DA4E2B74D4EEAEB1F2 C8B0D863EE815D994070ED9DCBEBBB673B2182F190608AE7D97C309028E7C992 B14BEE67E749D1A875E79934D23E4BD9A3768497518620388D55C076EC42F6A6 2EA61F2DDAEAD939E921AAAE37D58CE72AFE3B74A8A02F4A1804551117D2922B 80A2750F0A3D9375361BC7AD2E302267A15C675DC20FD858DE9793A080624F29 8D9106D26F7F5747FB7944BCFEADEEA4C7605DD473432B4EA58ACD471AE3A4E1 64E4E35DB9D97E2A374DE22A6A9F8B6D7E2D32A0C603BE0A044283621B3D1F0F 1154CA2149ED42E08F08FD85D2CA5DD02DF68E535A25487BDD98964A6C2064B7 A057D4186F0169777C3BCBB4E397C22F4196E3F5025EF5D59501FEBAC3C44768 6DBDF3342857931DDC23BA77C22A318CB13C653086032E880E191BDCAA77124D 7238361A68F663A638D0722BB7DC3A37226FE9C5B1C15E0A32B900A335F93AD0 98D0F22C9092134E37B336750C48B5C30AC8BE183A154ABE2F304915F8FE256B 0221EB3064620A3F87AECF76FA16A7A1BFC67EFB0D27910977DF3C8B1B93F7EC 5C47C8648197E784C084F332FB505DB3A3FBFE6367534AC18D37CFC9D96814B5 0B568AA24B823D93D58C38FEC655183AAC309FD07CE32353820B5471E345FC29 51FA9581A7CFEE964B4219E3837A158FD43C9FA8502A566E64DDCAC0ECA874FA CFC71A0D442E128423D92340E53A76C9CFB6882BCF76A2AC1EB66DF300F6AEB8 C9A2A9808EA83ACD248A68DB3F78D6CDD9A507785799714214DA4B60EC547FA8 2967939DBF9A29B73D319810FADF8C44792E1667596261B6E52339736E7F857D EFC6C4997298BC8ECA834F8BFA5E3786AE80790C50FB1669230ED454DC81CCA7 7DF4E5AFC2071127D70476AE9B225166EE9C65842EA63B4B309A907A275000E5 94E0994A08FC58EF0138B557AE8D96842EB50AEAD3F1FF98F454E011CBF4C2E4 DD531883C44989669A50AD00BAF10A062BEB4B6DC3F790CAAAD0E68686FF3A50 1009236F70FC80905D8EA2BDA8D2442A006E2B77D9C40A01A106D8BAFE585D2E CE2FD94F9A628634CD1F829657939751174E8F43F318C47CB894EADAE6C8ACB7 2AD554E3085ADB6F3443489F3BD33A56CB4AC8CE9E11FA0C83DE9E133C97F69F 4812256B60954CFFCF3E7F439D126F7DACEF1626D83608DB70079F0B2BFA5DB4 9E2EABE7D23BBA421A88374E77DC5B6E2648AC9B7B1C3569C826A33AA21F71BF 8A5B0B825DB9E00CFEF59403990D57BE4C48953786B76D55D8B665A15AD69709 A360AA9D8BFCA8E00DBF9AE1D0A40F0B02A652B2B330C689E61C3C5A7EE81172 E847414CD43E2277F37BDC832104B29C998785022A693389A9FE86EAEC5CCC4D 09A7B9348C80AD3BDE70E7752E44D30113EFA182DD5E47CB21EEA64D9101C657 2106899AF37365A796ED255FA7F4EE501D8681FE11F92E64149EF8CE9D23F334 6E2B1E1A67CE7CFDC535319EB61E5089201708A0F4F449F89534FC7BC340948C 6788F3115AE6B80CB6C1956474D2D292B830DC9F8F67E1FF381CD81D788AE222 1AF6B548B5C7C496BA711F1F8AC21947D2604ACDAAF0C5A68E587FA2109B11BF 24807B7DB0EE845C13E8F693DF8A4969715443E1FA0090C4BF359F4827067C0C 823676958AF915D6D75C767F01C7ACBF06CDF9E9A27B57FD5C2F133DDB091CAC 2B31E9DB522783B69951F2965AFEFE6F454E9A859664A65AF8D087B203924BCF E4C45AC959352FFFECE860648C6200DF02D650237BDE22AB1ED127EC09B4F3D1 234BB3F32ED111B8BD481729F4293135EB333723B7990F8B70A211A3ADD67AB2 8B5A7D6AA9E9B0EBA08F9F2959D13611FB8F29B749686739380BB59E0A93E99A 0B97B297ED8362D421F3AA230DBAC86D200DB0AD6D5F320D1B23F0A570357646 94DC98B2973F2EADFC8D2AB5DF1038740AA520B7AF4AFB812575C18EBAAB76B6 EBDF757E1B8264C87A7180C627070C3B95EA0FA431E8360F0DA8A722F0861C9C BB7DABF781FCDEC603326ADFD0FA3F788A7C695E50F23848CF85CE410DADD5F1 D7CEDBB484D009FA9BC4E06108CB63056129815A616BBE98C38E6DA6E587C23E D0F6496CF0FE5F51ECE5FB21779A44163115D2F05541531EEB124695FC34E359 8E0BE91219FCDDA56C4FE3BCBF6E8F45505ACF974C6F9EF55DDB391BF5606A61 725BC73D5FAF324A7DFCFAC9C9C2728CD4370A9CC71F645316ECCD8AAD062EBE 9F0763A7F77ACEC296597E0374545BBFBC538525889D39E9153D8FA7C5945F8B 955BC41CF03F7400E4AE3359818A4C1FA2AE66AF9B77F6AEE16FAF82A469F6B7 46E679B38AC3897D1AF3CB2E0289802E8B449A1FBB084EC5938185AB229211F3 6D8A9C36134ADAA0498417E2FACE92E753325E0B23BC6330DF323C6DC3C4C41F 25B077754E4724164566626638525F6F49BBDDBB3E8EAEA9ED1C3AB5F8DE8BEB 9432578C9E334AFB9B3B05E4E11D0C17C4A084BC7903ACB1FCB213622CA5A95B D6EED267C225E42D372F5AB6D45B23DA02D5141E310A4AF395531CF047673DD5 69FC7C683F52CDFD0BD9598587E1D66BDEAAA467C512AE2BF24ED472527661E2 CFE5723B43C46C210CF6E76D0A4FD426258688C5A797F1F6ADCBF6174A61C332 2009A4AC1E90E598359039CD693DBE122E18F574B96FC97BBBCF0C7020EC446E FA902325670BD42463490952BC7CAFBEF1074FC1A36271F6C6E29DA363A6335F 6223F16AF2A3ED714A8BAA0EC08998F41BC8DFDC7B0007F04642CC489BEB0139 0A78094BA9D580810CAC4D4FEACE3B67D1F957B180A481BC62BD7836A708A336 CCCC06B85F07F7CD13104E30FB110F749A966554CF8E507D10572B4BFC0E24AB AD69A17D1468C4F4EA8E96ACF86192EF402E4F59EF145E0C8B187709E9C64EA9 C52F7CF2E7CD9F43170430CF6A76CD422648542920F90917C1698803282D5AB5 5C39F06597D76D52CEB7AFEDBE9C91C90274EE106BC54DEFF89B7E870ABF946B 0C87A133D0CEE117C00ACD3BBD72474D14F14D2A6AAC857254CB409EACDEB6D0 F22AF9B820FCE6A5DE6DE866CE8BFCB17C1E3C452CA7912BF25D07020E447AE8 9565BADB3EB531A704AECE4A80024BEC8920543773349987E9F6240514EED4B4 8D78A234318102A2AF9D6C45D9BFB27AAE43D5ED91483CD1284A6712DF124855 B64C5E3FF7DDB5DA6735A0C765AE823BA1F14749B6022624EC3170435DD20CBC 018936484A3F93D5BF136281E07A5352F9F1D5772DB0DCEFB57EDFF0DFF1A92E 22D3B7C7DF81B7F9BD970CAEAFE9C01771C4E2DCFF8B97FBF80788DE47C77707 5F2D211034B5150F0343DD875E6ABAAB8E68999B59738A3999C440EFB67BD76D 90085D1D4254E63EF500D66E4177A18EB2C74B1BC53EBAA89892F680F33F3EC1 AF438446E2E38CC40F3BD253BE7E37F00F4F6132A5AD13F09A9A19C801694078 0189410E617ED04990AC4B4AB626BD9A10599193E3B7C7A3BE9AB3DA5F9466A4 1BC68B6DC033EA0123D1D1DBDD8CD5C86B4C0539E1D79DCF67653DC84C3A8C89 D250A78AAE935811AFE6F3FBE2E5E452E430E16A20DC563CA577C898E68F2A84 ABF46FDDA19186DD43A1DFA24C92FC62ABEA7CD85BD68D64CFD1A0C29DBF88B4 D25D8C0F2A6FBC7A33C4DBFD91D97918748A9E41637820C7CB4FD427825B7FB3 44DC759B24D98AD1565AC930B89E81D23128723BAB5BE792A6C9112787225241 575015D00D0691CFC7E29EF61F931599B88E165E8EE75DBEFF5B1A8D4740496E 9F85ED6820722C274DA65F73AED95051BD9FE38AFDE4FBF425FEB6ED07C8A976 F32A9BC9850E0C7069AF74BFBD5A78765AAB81037075B4CC6F09A95013F4B75E A86D41C755425B4B00776EAD7F5872622D8BA5F5A2C5187DC8F36F03DF03B168 6AA1AEBEA0702437D8E546888A00D42EC5D6085945E31BB14AD594BD9BCF97D0 4B99A50C128B77C75D87CE0BE0C73FF37F2DAD7A5B5A361697627255E6E5797C FE1E38C38E4359B97D594EBC15E0E10F17F20156E7DC9E33DD8BF8EB016CC9D5 F496FBDE6E16F0FC9E5EDCF67A39EEF57345C3E6A4E04DFB7EE6AE6E54EBFCEB 1C53ACE652AAFE3425ECBB3E42EBBD51097E06D1C2ACAF97ABF4D875865429B2 2D9A1E61267AF7E31018C46EAD1839A45032BD9746DA458A2893613BC41D0BEF F6338BEF85A69A8683E5B3C3D83DC5F651011934745C042E3DDA4DFB7B393C4B 9002B5721DFED701278E9CDEEC9F7B4EF1D326CCEC149E68FEA5D7468F7A091C 00A3FF3AD5446B14FB635771A5138FF8C2B02FE98180C19595BFEFD29B8F1A0E 51CB37E46E06413ACA5D70EA7F4F0039A0F9A4A20BCBE335C82317F6B1CE4E8C 7B06513CBA59EC62CB7563CB4B29ED6BC20BEC14F6D4C192E0261C8A2CFD0968 BCC64408B19F39F69CBAD5D6E117BFD8470DE959BAA369613057DB1BA3441E27 EEC436544FCD8B6C50D24548886892C86EA61CD573FCA53F0CFA97D799C25418 3EBC2302D0B43DC80E08F68C01934958A810C76DB2E23B13FC0BC6CBE37AE842 8F2452EFE0AD6E97620A070BD93CB99F13E8EA78DA56728314E62FEDABC6A6EA 491EC96A8256AF6C7E8FFA6A04DD6CAF1DB9A45AEF196342D690863F54B3196A 11CB3BD65F022BBB8DD1356F768AD0FBEB817DBA77D2BA4FADD43C8C7682DAFD EB331954CA9668AACCAAB539AF7BB1F94B6C9C430021D1DF43432F03DAC805B5 EDD2279D4BB979130BB5B44FC22191C59A849D0DFBA2847D76DEA80E88AC203E 84A8657C760AFCE2E070E16E3AC53B9D2F0AE040AAF7435051B0B36795BA0ABD AC192D83908FFB421CB493A64F1C3FE99DB9F0B41B5AADAC1D6E0482D6579670 F5154DCFA00E4E45991B6CB9FBCE7F6A470807193224CE848C379F508C5BF898 4CA713E40BF4EF1D3EBDE3D1118D838516CC5FA9B3BB84D22408404692E04873 C7482267713954828DE7C91EA03BACDBD2E53780E260601FD03CB08201C62BBB B95B268EE00F702907B2F210776046900F80857CF5AB73029584954452E1CFD8 6AA384D3238AF280DBCC617B8144DE8DF0DB36C18C54CDFB81800ED65DD9EC4B 4ABF20562FE068BEAC88A21059084A3189328AD5CF5AC9015555C896D0D2D096 B734CE37CAF2ABFCA0504F24869D0004F6976C73D8369DADF0077457A374E601 7D8120F6918B57F5A3ED0E142835A8FC95CE31A30073D5AF29AECD010D2C80BD 737FFEA417B9CA710CC39B759BFC9129B11544D222C31B165027AA9A981944D8 E429D11D540538AD0E26B7D6D714A770F8FBB42B969BA55953DE4DC7393051CB 17F74547E2599B43AB9CC178BF0560BD5EF585A67342146D32FBA4B477B6F403 C97C8CC1DC04B16A21E0CCFEAD2845E4A7943C34378B80201C6033CC8CCFEAF1 8026EB0AA7F77FC2165E6A2F99BCC0D7D65C4566BFC56B9A1D35B964D6DFCB6F A2E9FE35915C8AD53861F593589ACB337CAD96DAB5A00F0BF52B7940FCDD915D 03A57E81EAA243C525F5A99B2C9325A65B63937ACE78801D22979306C3927400 30B3682657443F972DAE9702D1D1709B71622ABEEDEC3EFF4FC3A82B9EC94C5E 6FCD4086A02F8B4A58E00B4B28F054E203734082BD4A7E039CF0403836E439AE 652962FF9907AFBA6C7AC441CD769AC304E243AEE7DBC219C5406320F6D20E6B B1FFAC7CA30E77A419AD834DDB087C33422C2B1E689794D09CE6FC29204A14F4 6047A79CBFC04AFD3D68F96C0B8C3A202A304D697FE178F0EDCB34F9B0FE3BB9 61C2B07A7EE35E8F18071D61F6A98BE7CC573D0135FF9A53560159BBE16F26EB B171D725905D4A0671FB8BEEBA009B47CA9633362FC0C4553509AAAB43F137C5 852DCEB47074F71DD6345634065E358CE4EBE88111970F1190CE776EE7709729 548AF51C38735F6F63BB83E9D91D5A5D2E1F89C7BC8785711452AAC43E77498F A74D91A1EAA3F29114E49EEABB681B56C5456541F4342D607C477983380FE29B 9A08A61D371950992F17F20D40F8169E3CFB99AE231C40EA020C6C253FAC30C2 04AAAF5D992E9458877380510AFB91851B289DC03AFA363EC338E21ED01D2186 C706EAD057ACB2D47CDA1FBDEF9AAF93841C5BAD0668C10541D7B41EB3CB214F 4F214D7ECDD4606A4035795AE25C58C9692845F535762AC3403E2A0CDFE79D27 B58887D2688C7694D4D271EBE925801E7C1B27C18C8E0BBA3E6F999484033991 B0F021F1A60419F06CA0758F7C3321D20754888062DB453FC09F3033DAC6BF0D 341BA60AF9A8608E7BDA2DEAE73F83A5DD9FC35BADBEBC2E0C6AB18CBB05FC06 7B967D6263051E960498B63BEA972BDEEB89650EFA809C88644E8E00ED119DAC 5AD530C519658A82AE9E17EEDE4B91FA83AA1A925F6C7E65119F8A397F11F50B 681E3A69AF664B9B6076E4A9033C3F391BC110289DB31DF9F326826F480B9F4A D0147924421F1B5528F463E5D97FD84B06C9CC9A35EC2DAFEB9FE70C86C9B843 6C60F79CA7F7A61B2E58B7C15752AFA82BF0F19F4EB7276D17109D975206FAD3 A02CB0FE17FAB4AA9F8A649C84F1EE19E2F5026D2CB3847533D7ACA488D5A531 3C95BC346E9C249E34A4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSS10 %!PS-AdobeFont-1.0: CMSS10 003.002 %%Title: CMSS10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSS10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup /UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSS10 def /FontBBox {-61 -250 999 759 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSS10.) readonly def /FullName (CMSS10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 40 /parenleft put dup 41 /parenright put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48 63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3 274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F 388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4 154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B 4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200 29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5 CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5 C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16 131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682 302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575 F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378 AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49 28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18 121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D 8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7 69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7 BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960 C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92 B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8 8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01 161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565 F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14 0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674 D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169 B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434 DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5 261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2 64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038 F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29 AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3 CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF 5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091 73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5 A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F 1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6 D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C 13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7 C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8 08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220 B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3 23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA 56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788 2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE 3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D 5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D 9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5 2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7 F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB 73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5 B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007 11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7 03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7 5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1 60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7 622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5 C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16 8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474 1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647 F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE 257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA 7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315 611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4 246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97 E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698 AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1 EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68 0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A 94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120 73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680 AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443 8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070 5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE 6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28 B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378 129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB 8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6 753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4 93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE 207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433 3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26 7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80 D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825 09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C 5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105 B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29 E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26 C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90 F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9 7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989 99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A 96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982 1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B 48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F 4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A 45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3 D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81 838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794 5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200 DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240 5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5 46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D 491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318 F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B 0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287 EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298 E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0 0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D 8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C 8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741 A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447 4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1 AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C 2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780 14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A 647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E 6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6 4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36 D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD 60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627 4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289 BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0 1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194 6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE 65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7 6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9 85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC 7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853 BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4 9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440 6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3 2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A 374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336 39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6 AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F 1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8 E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6 AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684 CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF 9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3 DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441 670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD 99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B 8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900 E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1 DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2 99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF 51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A 40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5 AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977 DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093 8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2 BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49 BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E096517A 0CEDD60F43DDB684BC6E4C3F6F3D70BD58AAB5052936EC4ED7140EDE795223D0 4E3B95161D16B0402EB45FE97ADAFA0433FCAF55E22BD7E4AD2030D9DC86F55A 8D7EA00901EB1351EE8A0F1BFE75CE46DA4165D78043F8F0741D4D9DE0CCA00E 5F7D89A849AD0F0CEBBCB948613028CFC39617FE9184753372C375A9896F5F1C 7E24255FD49D2109CFF9ADD9A118CA47CF58975A9CD3A960A8A08A078B98A50E 4DE619C8B2D3E15938C879D785539445AC468AABD6A6576AF0E8ED368A9350EC 717B7D3BB55AF58941B47FF639CA2946028CDDFDB84FF0060D330DCDEDF13BE1 FB1F743317C15C7A9F34408F5FF7CD9745217D9B809DACDDF7DAF9D821C06B37 25738F0D20F4A86A079EDF71583A9640173B3EC529B98899601F0EBDFE45BEF0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT10 %!PS-AdobeFont-1.0: CMTT10 003.002 %%Title: CMTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup /UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT10 def /FontBBox {-4 -233 537 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 33 /exclam put dup 34 /quotedbl put dup 35 /numbersign put dup 36 /dollar put dup 37 /percent put dup 38 /ampersand put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 43 /plus put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 65 /A put dup 66 /B put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 89 /Y put dup 91 /bracketleft put dup 92 /backslash put dup 93 /bracketright put dup 94 /asciicircum put dup 95 /underscore put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /braceleft put dup 124 /bar put dup 125 /braceright put dup 126 /asciitilde put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB 556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F 8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC 56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F 15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD 04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA 4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D 69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A 0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C 550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A 9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F 7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A 2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE 49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE 484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C 6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F 5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C 1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F 52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B 0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC 2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F 0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D 67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC 60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F 1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D 55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C 7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E 75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB 8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA 6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD 4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD 2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE 97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF 639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A 5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE 5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A 288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E 7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F 759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E 03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A 6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D 906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE 251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6 46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33 DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813 F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025 46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F26BDA3B469D678F01 BBD601F46245B0AEF9E844A38F0A186733A8523992CBBF6DFDED8BDE4E6DDEE1 AA0EE78B943B79CBA4AE311FF4612252D9EEC7DDF88BA8080801F9BC7611DCF9 D6AA4A8651177CB85010D420CDFB43CD103ED7A1B9C2E885C88F882E29F4C301 4750C3EFA20150F9AF0A5BCC8DD9C7DD53434855ACC1FF84087D95BE7A2FC2AA 446A89DCD272268178C02DB29FED2749139BF0A51A5A9E0B6B8322558086D62E BF48C20DCB99FD2BAE6853877991059EA432234EA3DBBEAA7A63B0279661F69F 181917D92AA634ED55BF9736395C609B315ACC4F49566EDF37EE388BB8B5D9A7 E227219DE137AA06BBBB2F2530EB0082E730BA30DF67E83E8E3E6D47CC0D6183 D68AFDFDB89A8F7F6B8C3381BF4903576CC2D058CF656F221C153D7EC7C6CFDE 3487F61D3712FACEC12BBDA5C084F01CD52E27B685B7ADDB34D477C47BDA3D6A F5F94FEEE22ED1CF93F2A4576F53D5E9AB73CAB5CFBE85DD6F4364A8CE71574F 2D6AC3F8AD690AEC0AAC2AAF8CFDEE51FE47B56661DF84FCD8AC27A0C591A39E 769DF23C1D077B7C905CE9FB31C7594CB1E63CD82E119CE68AB58F6B8E3E370C 11D91D32ABD0DFEDAAD93A07401045F38198465E1D503704FDAB902347ABC936 1F1DEB3601A993B6641E4442154962DDE3812AA8D948B112C9C8C51A5BBDCE0F 31E244844D0C77BD0F206C7399B4687F352DBA807E1D9C5439A9944E0B3949BA B173C40D43F4A0B97AA73A07B3F016580D2C2DF39EA392F678313B1FA589C0DD 6CAEB67B5E78334A41156A070819698E8D576F5177868FA05D4E66AC6F313967 C251958A426B160B5645120A7F2E33986B79CD3ABDE16A8320A355A7F18C2FF3 60AC078C70EE8123060EB9672A7D112A7C1F916DCBBEFBCA48B59B4B497B2992 CC43893291BD454ACC071A68E6D7664916857E6EA7C34345C13693EC4D94B08F 0EC526563979CAD433B998DC5A0D835C862CBD360AF49D068D07AB1709E1A3FA 4C1F8EEE38FE96A5EE6334C12E55B24E5CA3AD0E78C5B3939A3C69553212C069 67548E8039596E5C73650E32147ECE269066DD3A4E4CA042DBC2011D60A378DC 45C605A5D6704780155DE769AC843B3C717D41D9E319BE62523BA58583CEBA3F 8AD278952CEC5236F3CDD374766075BA04259A2C9F2539DDAE7F0D4356AD67DE 0786B29ACA9DD362B55E72BF69173DB426EBC75F6E5BA686EB82952C20838199 8E5BC15A79E2F0F5F998DA7269560B6F65BE4FFEC8131FC9EFA692B60FDA916C DAA9CEA8793D1AD57558D4B424E591024738132535D310D2121838FF3ADC091B 4D1BA849B4054206AF41262CA2110DC795D988AFBD1B9725D673444D9B5D9A3F C0F865201B6D797A0575DFAB5C51E5FFC0F52735EE1B21B355C10CEBB2B62D72 96AE789D63C6413BA44FCBB2C384624038186B76DBFE94A9E85540BAE8B3FD40 09BAC6A615BC1B497804F55065E3C18BE77DB8563B1730D5CEF7428A9BE8C118 DE8B1B9EDBF53BA3288B4985B1EF68F2EAA7AF9A2543CC66D3CD11925EB08E2F 2E9293A5AC0245FB4B4704B5C61C49276F5E1F4560A4C0615D26FB097A5D0746 42239DE3560B0787A347FA3516D012A2C205A3CA4074893F360FD2D6A980E6E4 F77B93A92506F3F852DB888567C1C1717D06FAE23DC20555C129B998666F0D47 6985495B8E94E4F3A3A788FC6EA5EA0BCDAC1F5D36B3E0459DF6D683EAA9F7ED 484EB781E72A5B67823F69FA949C74BD03A6AC015ED3C872108B6D2771414119 6AF2774FCABCE014D681EE6F599F2B675210E8A89132B5FC9701B1802919C192 242F75BA14EACE61BCE6EC7A980DB15B33EE760A8C80ABA4CB4ACD62856BB083 987F29347547523481D58DD157C1E71878254F83129FEDC651186F696FA4E015 554C5EFF61208812DE8473E0CCD8D108670FC49664B666C9A97C07185286A45A 6FAA91966BB3F3EBA629F4DC645A522C763F276B6BC34425FBB4187C77274565 235CC4B9C902DE9C5B6A9ED253598464AB766CAF4BA3905F431CE64801711723 7F22BC03056EDE0F03E7154B9227AB5D9DB43729C14FE45044F0368523794A37 E93EDAEDE1A49769F27E57439B281DD121430D11E87AA64F4F7EEF90C8207CF0 FBFA73F68F7C2023C63FEF39B8BA4BF429D61DB22B86AE5DA40DB7533CD9C0D7 8DC6819DF76A5B569C55A9D821A658006E6AD50AA4F9FA0C29AB8B417E2D6012 59D09EDCD7D968AA2EB4989492ECA5E6FDB6827637A807B3F1910E6F91122095 30A35F48C0429D7C7F793D432FE423B89CD21D5A9CC3891A934D8A85021512FA 923157FB455E127E007404C2FC5E1B5A43B944C4EB884AFCCD3B642C0A13B0CF 6F4FD1642B917B64E296280261D6AB904738E35E10BA91A1580BE1E4214DEC4F 041E1BC61C5F65DC263FF9FEA39D7FE05F31B85799B786A3D5D0C5AC21C21EB9 69AC3FCBD19085438FC1E3081B7EE187C0CF717EDE9958FB4ECA83FC2A97AC06 C42B92571D1CB295A4E739B10738E0854557A1695C9623AF2796A960156A3395 B63759BFE8E5B14A2C49192BB6103184CF756E1D585B84736D090B827C199BC1 DCB1EA3B8DA7CBC73B2E26E96B6F0556D49923D63173C465D725223C0D8159F0 E70ED77B0B380397112BFD024DC0F03CAE4AD3853735B3FB12DDB249A3929B87 4F77103703EC7D4B4C8D41D0CE65F05CC6ADE30BAD9EF7D41D7DD1DB2BF35B87 A929238B57DDF01AB94A1E31C10B759315E3E4D58D37142CB1DD6F27D321F6F9 20FA0E6C2EA968494217E7F75A34F6B050B27F7BE3394CE69FFA957C678F1A5C A0B3D8CE8ADF168CE01BA90F039DB20A8AC6B76D5036A2DE654CEB00A853B3A0 7625675AE757C92E06C7E24827E47A09D620E62DEAF04F1FF407AA23C63A895F E66E14E4A7CAA511423D5DCD020D1385376C3CFBB6FEE585256923F98A702217 B1096DB80ED911924499572284BCCF297DD8B7CDC1186F6E12E6461039A353E7 62786A8AC2072569AD069AC5BDE24540A069D26A73705E58D7FF12806610D709 D3B58073669A255D65AFB23575EA5402380FF69CD6F61E6556B794441F7725AB C82E82E284CB201B36DC5E37FE3E45D1595F9C5DD72EEB58959B3026F45C1E91 7ED8E500C5CD1E1AE673CBC5222CF60D25643C9AB66833DBDAE1845B16F9E550 8AEFA7F0FC8D2EF3EE39EDB8512BDE5077AC9A032CD4B29347B84E1BD602C4BE 83766227DC6B32191DF6743953790BD8AF842A4B5E4EA6409CEA963D8AC3F471 FBA7C08F4E4C6CD6012B82F79BB6DD247F93BE9D898A7884C9B224ECBD25F85A 33758D69172C1FAC421944E482B7716E839D32027851FAF6F4E0C4D78F680552 C11461E5E45EC9FC958D7C2D640C3D4FBC85D8D23428B5AB71F6B8827446E5E1 CC0C38C1B7974F649E6BBA748DD76E1DA9747D7DA222A0FF08B5DBF0E8303664 8F791FFEE6DBAF4084F1558BAE2FA8E48C807F1C6403D4A91B78ECB1BBE082C1 A8C0CDDDB7AEADF5E525C03402B8AFB1BAE627D91C479EB198BA6B466A029C89 BCEE9CFAA8BC88F344091D76EFAB92F5512D1BCA61498405823B231E0A587907 543A798BD9664259ACE2C4965A15B653B7808B70CC050EE225ECABC1476EE957 FDDDBCEB75E704EC7E33301443F5A467FA6DE504A055D611C2FA6B07BBE03C76 9C430F6A3FE1198093A834D90029CAF806FD6A75C999B5E8EFFCAF676DF17CC4 B256C6FC93F4AE44947B1381B6C475F282667A65708598CA4A4CD006B02F3004 BE93081B80DAB1467214A6A947EE0E8451E74B5953B2D57E83CDF905D1B86677 D811628F1D49F1CF5678E8AEE3C57BE4072535B6245E19BC918B29EC7989B698 01ABA09A7CC82AEC3C0E3F64CB0EE69C71A127CBFF6002C561F3DBC94CAE7C2D 872CA1BE31370821D70098A7A5541DF5E6B6E3D1F9056759DC0AE1DE6F3581B2 C7BF466AB8C841E0CEB14F965D1C31AEFEC4724F120E58C1706E009B738F1D67 0B2074B3FAA0F98302A3DF8E093BEC432FF011FBB3C73EC4906D00C846B30501 4199B83754E9B1A2F80B523B1D9DF5ACCDA9AFAED5F5B2643C5046A0E2A7D873 ADA9DB69793D60F09D408297302124C10B6915147EAD703FA5AB9DCA1838C590 7E66B21981FAB8BAB54BB00FB1CE6E36EDC67838F762B7F91B76DD8683EEF42F 1D0537608BAD4BF1191CAC12DBD7C17D0AFBFFDCE31580F7B6465CA5E2D5FD6C 55A8ACBDC91530FA9033413057308627025D4431D175ECE3167D99B1E1B0A2D3 633FBE69CF0A4E23CCCEAE95F6661EDE0DD6DE0D1F6713901CA13DCEDD01A7CF 737EFCAE29EA421F3CB7887261161D5A33C685E28E11008DF6D366042DA16E0A 475E762E506D59625FB9B6A384A9A3F6B118F6254FF8D4C95CF84030A7A6D914 6136C77BE7F7D01938226A0ADDD08CFA63B68CB6C0CF532FDBFB0AAA6CC3FF54 AB5435949968AFC9BB14B7889CAF0C5B1C80F749FD9E966D7FF38D64476076E8 9C4DAAA24CA211C0D4C0DB27D7A8DE66817F002A76310BBEEC5ED2444F9C0974 A3DAA9AD65FCAEB77FFAEA91882CA8648A0F27443680EF7D2511ABF85DBD456B 2D72E529851B255CB48E86B537A0CC0127B8EB3F53FB67EEE069ED8BE30301B7 02458C82CBCD2CF2396F4AB5B781FC69D583FFE8C7B62BCC05B746B5C495009A BF675F38E811B3292DF31864A1848DDE036DAF7ABBBF17B9E5E655CAD4DB38D5 5E40EF78371FD46BF1190BDDF34C476FD09DD23CBB54EEB938A538589A03B28B 03A3CCCBC550D90EB73564D4E56354846030B0D8ABA795AF99DD48DAE65EC594 FC4CCA5CFD39860A6F23AA22D0E7C25A5CC06AE9A1C35EBA87DE6B5029F4BB4B B308BE301E6C1CA24980D5A72F14A65C6552F8205282BAA07AB56FFBEB77BDAD 2A9B398216116A09A7FDBD0B01A33DE66E4A149E2CBF60715E8FC76A910021F0 F26859FE2908C529F263D97481F07F784CFEF19369F023C98AEC7AF9A018AE6C 727DD9581662FD83F76FF3A445465D8113D7EE8B5420446804C67624B22883EE 4C31E69D1ACEA21DF7136529E6AAA2CF4FCA394142B3239010BE265F24405452 8987FB64D9CDED947AC0F2FCA0636046872B6B742921CEDB4AEA45FE61F33A04 120C7771D3541631B56332AED1B57A404362FDE040780A8A3509BFFD95FAEB93 F3A2359122F3E9F709242E919AA0A52CED7C69623CE32ACB260FA787268E8312 511A535827F5AA08C34CDBB689C9D47F31390B89104A698EC20F7B217807ABF4 CEE3C2FF7D349E766E83510D204F0067D1A4144CACE3E9362FEACF05B95EC18D BC587E4455B9632CE28D02842C100510B81B1D598AAD6EE21634F6A13A30821E 641D5D7DB3F7B784BD6DF4DAC840AAE74324CC00B515597CB7E4CF77A2DBEB15 E655781F8D4A7ABF0CCB9A0D09720CF3A1671B256C81BC7C64BCE000DAF280F4 6E5D749649B582C0639FF0CE11F6D0C36705A67A51404F22C0415A2135922FF8 D11F8DCB25ED1CCC58E77CE7BD74FBE143B55DBC4AB525D4C4A8B7C392C4CB8D 631540238AAB4B3D9E1892B747B0C273917453C1E2AA7585A77E9427925FD5BE 1377961EE7C6AC55460A134AF811A327FC939A321DA059FB7DDDE88701922C02 56727A98AAFF0D0FCA54EF784A1633B7EE514317D253780A1A62C7BD98FC4D67 B49B930D55117F3DE5C5A634376FFDB177EFFFC6FB607B0D4F11591049D63890 9E8C296F85483FE343D5B1EC41CEA8A3C66A890EC7812640016891AEDF8A64BD FD923BC5176DCEF2A5BC67948BD55AC844FC1BCE542F8D8F8E1B30A61EC9C422 AF66942C540E02A9F1449ACDE6F2987734A06088DB9BAB4B9D57C67C4D22E912 ECE827DA938FB7FA5609A96FE16FD2E74F4E8349FFF9ECC814325EE5D506F6B9 8B6058716768FA9DE7F172E4E1CAFA98ED651ADE9E6A8D89FC9FDF1EE6F031D3 F87DD7101EC90192B8314025C118CFDF399C7B9BA72344D5FF3C97867DC3A6CA 76ACA42B4DBFC497B7FFF022B9F43A1876BC60172831DA3BFA9A74B85B195BAE 0AF002039C49DCABF89F2A5619F09107349975D8D8AE6A716A3ED406FBE136B3 90D46B10EAB91C83A0C06FD4045E1C16DDF3E0A4F0C24805FA130C4FEADAC556 C7FD67CD11CFE397F006C783462F823C4B66307B1ED99713A1D63004C44AEAE9 2C7D929F2DE483CDD8D0CD5BC1512352867F5C78AD991EAE5E3D5D50B899B272 8C7B34FFB491E3DEEE35213C73A0D0D2D3EBC7FAC5EFDEE670C41EA2B6E60EBF 11189DE0BBA33145D5FAC9BD4A62BEED88C4BFAA296A2D0A68DE5163C64014FE 915B8A5E88C97617EDCDB20723F55C5603E0CE7A2DEA778F4CF09F2B521E5954 1B53966CA35892761B022172B25D45B4796B75A2290A88C39C73FDA467FF0566 9B35FA83FDA4C902F11878244E47E63CBC35359B3482CE71DC061808FFC130DB 27879AF2A32A1C713256C84BA060722570C770CC0BD59A43EC3A7ECEA2295A06 A134E2AC9A3559522691DD29E76B25567EA1DCAF787690872D62E780F5166C3C 4590181B36C40444BAF5C381DEBA692FD3B1AAE99C4306C72B11481502653A71 55A83360304F1C01121CA574AED7EBD9662BC2CC161B4A7BC19143731026E78E 33575784EE8CDBC0BC219542E36A693642E155F57101EBB5AF4A867729ECFE9D 8261F66FED38E6E182213028BBAFDFCBC71F0969AE553240A89BFC72203E07EF A6BA414540B10990770C6BB36F7F55CEE5676F5FEC5AD00C3530974B80BDC135 EF6E8A10F2140AA7823B11D4AC4761D336BF634A24D8E89EE29D52C086FE79CD C870AC65A40713C8C08596FD1AD2AF44C078606A4086F6D41D28C4E5217A27BA 11B172FCC9BD8A160F282A289993707C761CBB9DFA4DD9145CA114D9C0FA2426 9EC80CA0FA4A86CA30E9021BEA3D463E8F058765191CE2539783A420E3B10472 8EB4C904F9CC15E089BC5EAE794B9CBA565E3CC35C56B5A3BD20A54A5E430E43 1029F7BFF82A730956C1D68C8EFB0508CBFAF48631348E8DCFE6479368D3392E FEDF6E69450013499757AEA2E79E9B4BEF03C17160F84A2339E3A80DE8F036C2 68C163A24E6FD8FF75DE695FC17BBF155972D54FA4EF7DBD6EEF74252A02EE6A 6F5DD566CD2ACB6B7474139D8443258BB8EEDE8C2CD08888874F872259CBF660 47A254910600EC40C506243F0492400D897DD57FB4CC256A3408792140FA8138 1A0293EA225BE55F392562FB47E7E243F27B665EABC0025A2E54EAED4D994837 8834E6A97B8DBEAF7A937B593CFAC8EF9A40056DC38F59834E3C2502DDDDF1CB 438D4B1FFA2FACA0F3D09D178C7370258C959AC2E8DA574305825F67739926D0 8AD8949E93B2CFF05C85F56EDEBA1C490DD684F0A9E7C66C20D5B9048C6DBEB1 C75DE78D6AEAB591C550A1ACCB1435DC126DF38D4FD8B168423D4434D126FE13 7A1D5ED73746170D164C250CC197EA25265464844A2A1F49483D3ECCB0EE0D9E 3C578291F27369212C3A659E752458AD0E4D5AC667FB6E762036CE103BFFF9FE E0CC48B5FFA43B59201A7EED5A4EB31749AB153FB776A13D73A39D109E6F8C2E B8F0E5BA5FDC23AADA736E50C291F78ABD0494B0AD6D376590CA339B091F6289 7D2096E68D5858AF2F9BB0B162D752786FE1AE23E542121A74C17681095538BB 9EC57F9E89F3B0CA32649C98597DDCDE2138B61450183A798D31FD3462102078 62C7835F500E7A1FCBC58C37E8DAC9793F584A7F851565C871BDF1042234D3B1 071F30D573FF2398D3438F49588662686A4AAEA60D8E1D961A48AC069431A9EC 1ED3ECDD0DE5BEEB5D6FE035AFFB6BC509833D32508ED2D495472722D68E0A3F 6B4066BE315FF5E7048300D439ACE70463F4BD72547E26225161B1A9B2F15ED4 77673AFD583DADB09FE1AC2AB97537B7AF30051030792B08C4BD0C442FCC215E 0257A366DE8CD6D7F601EAB3DCB0B86436B39364A44624C780A99F9CEB12F8AB 7B2ECE4D34176EACCEAC54BFC3E5C35299E26CD8414BB2BC0ADCD9263447BDDB 3858265428E134820D621E0762237F46C2681C296F36F774E705CED8388E2626 B527ECF6B952B5FB9D151CDE83FEEA36F8C87F0B602975D918BAAB17752C83A2 D8205FE2A2912282FAFEEBC0818B086464C2AD81EE097A492DBF5C1468AA8802 88C454ACDA1E44169335FB0AB2BB0D44B2A4A4386AAAA4CEA2E48DB27BD47700 3FAC7847668891E99EBCA8C5D813378EE7772212101488B4110E92D269A121A9 18901A8EFF7C57F155C827A558A4F1610807A50EDE9C3630C2FB77969863FC6E A3AE9E28F27B301963D3DBE231CDA9BB03B6A29B0AF4042F62FA71E1C8A374DF B34CD305BF9410167948FFB3E8F262BB94AC891068DDB8F66680F5CA9B86000A D4B408C3F9DFE80A21DFFEF20D7C09EA830FF915509943799880B028FECC64D6 6D4F17728A750801197EFB3EF5A697F63C2057D54AD79EDD99D7098B71107141 3BF98DA68572C2EC5407C590CE8A7406239E728DB23304ACB07E1F27E9BC0C10 B249EB1B76F1527459B8F05E5325F2362CE119A155E352459FC1552FFF069D88 82D06CF9DA1676AE53DFA9DB50336CAC9A07083212FC04426842F6D08B89801B E098A9F6318577FCD3DE372FFAB3BB63938F46FDE00158ACB3F536EA91854E5C 2E4B519A78BA54BE9B8E652756D615FB1BBB9F8CC4116A5337D0C82599E76F38 7577664F70E05A2A0A402771A0BC71400E0F27D4C40D40908EFB641C75AA17E4 34E02C02812B86CB7C1843BA074F5D7D21D90D93BB6BAB5ECA4AB1C6F2B2B80E 1D3A8F2160DAD92307E5D3C763B0F63B7FB9135C76FCD7BF8AF9637F178ECDF1 C761F0DDA7281C248711D123FE2FE5BA6408851F72D5061CFE0AF10E1D1EBE11 1B0E4AEDD4946B6528FEA67D448BF9A06114A202E3136A2B7AB1B6ACC256F287 EBF97D532A8FBD15064DC3B9D643402F67EEFF350B0EA3C3BDAFFE07C7CB1557 5910F24C9101BC72440F4A9B8C2B7F48653C13FAE5FC28EB6A6589FDF0DA849C 6569C761BE135F4E10151117FDBC32B94A0E534745B81E424F82EA384389D2A5 795D3EA358DA26944D1F1ED1A48C11F4C444D7E91A6F23F950DD40BC0EB7FC53 3C00D2DFF98EA6BBD13A904782CDC66BE179873E44254FFDC031B68AFFF574AC 702EC8D9C462CA4257120B27AD65400EBBECBA4D32723E0E52AE178ECE376B79 24C7DD2CC62787FC69AD166EC11E4E43D1E3A76175AE4B0282FE62B8EC0D46E7 37C781B65ACD9E98108FFED418C6EB3F3ECE5093D4C4369FAF179A92B289D582 811EFD634111CFACBE83975D9BC28875F2AD667F3DF8C7A3A3F5CC6B3E98F73C 2D7A12214A4E6CB03C2C052885742E7FC5693F854EBFEB4A1711D1CEA7911254 98C51BE323266A08650D51E50967DCC8DA329EAF374F422BE64EC35ABD1D5594 00AFCEC6A82A4DD47271702552458B24C8B6EC0AA1DED3F6EE8D1A65E0AC0123 5E81473A2376F47C06E0CDA141B2A3C056885AA41A10FBC37C374988FF497C81 EE6797CA2C9296A496E6B6C9F56377C3A3C402CA3636372A7910BF35AE2AF3D6 589DF95AF23E4490914ADAF4E4C605BEA4623231C5F1D4579A51F307F9700F39 5402CC9B93E13679B2BE641F229A1E1D83BE1CCFB978FE1E8954FF1CC6007034 B1A2BEAFD7347D8BD97ADCB649F6279E0A0E705C82F27778F7882372B58E00D3 B94AA2A0582BEC08BF9F240FACD2D12B99F46AD52495B2BE5EFFD0B1AC93E726 DD72DF4CA1264F21457672BB2802B7AE9B075795BF8AA9C27F743BD89C3BAE7E C614BCEF16F4A2AEFDF4B72D5CC5DCD7ED751382AB652ED86BEAE2653C384869 D40CF8BD6FCE59F51CEACD343A92CF833754CBC5C0B80E9363899CB158EB3F54 745BCEEBEF2659C69E95CC3820F12C6E51D868AF2FA979BFD0241E39A771747F FD651E157983751D084B16322264BE52D065A3608DBF78E98B416DEE27BD9F2E 8F610100D3C227AFC725139971053273A53E18A6E0D894C932DDF3F432AABDED 39666CAC0E86306384428A81F44006990C25B8144394AE04CF8A1217DE12D046 A160109658102F279C90E0338541FD04AF587B1F88168463D471EF229009DB3D ACA474AFF7CC89492A300BF9574AEA8C5F9A9BA76EF789885EDF37C97B8E2C30 D429111045A9C1490C6F4693B178548CD90BD54D75B6485B8A8186CEE5A86C8B 519DA9B1C577FDC3B317151B3D3D725EB5835860654587A993C717FFA8C7E57E 75D6E0E3E5BC10D241D0763B462F0B4FFA7F2881B92DD101BEDDD83373ACC0A0 CBCF366F10DDA1FB8EB75224CCB6531AEC9E358EA5F0021F7CA6AF2510904AA6 2259E75D10E1E492B6047B116FE904E4C9B832A23E3020485A26CD026F7C89F2 75B8D46C4557C1798DD4BBBD26C814411A7D59D5AEBF6D6B7638F199AFCDD030 2B2985C6E762A002381732BEB2B958B3D6CA4DC93ABFDA5837B89A5B8BD1FC7D 322C540912F0A93B54117EC76B2E623A08673CF8882658241BAD84D1C7EB1148 CE183E32DFB96BE256957E9F730CED521E392E56926CB63B681F5A930F32A9B2 77477908C708D13559F50653DB862F07DCC8F7EE0EA755E728A9FC4A17115418 835009651989B113A8D2DD613764F19C6F152A8DD23B37822465E483F4E746BA CA01DDD1135EBAEAF8792EAF022637287A544923CA6701333DFD39B92FCCBEBF D0ADB4B19A95CC2AFE8CAF3614EEC904602147A72A30DC5D582D147843317226 8FDECF83A19691D5AE6B590E66120D22508CB30713BD2AB286E58A9E2F435C52 D15E12C3E1C939E850135A6E2A897BDAD9F54179F2DBC80CB322E85B28A3C345 3924F7A676B7587BE5CEA130E211B10C9B5C28A616CCB55B206203D05B032084 123EAB7EFF139D5C1EF2FB00E3B328ADE7AE451471BB9E5F75ABDC03948B0664 C4552C99DBE4668C7686485E27041D48C5BD4E4A7424E682FF75CF9DFB3D593C DDB1078AE7B070B1C6BDF8FF5D303B76E8B3B8B41D5958C6CAAC1790A6E40382 89DA5B36509198E0AC7541112BA0ED7875085BFDB5169E01B75AA2EB2F8E0AA4 46D7AACFCABD8F86D6753572872C647FF3A83214A44768B74B523D14C1FB8DCC 764D865C31CC427AC247E7D6A233A7F043585B5B5737FE7837940F70AD3C1D00 E6AB131600166A98DA57FB5A60D6B061971F09B780EE5ECD5F74B93621C54992 A15D96BA8873D230B98CE56FFF6BC59A043D5AFF06A260B8C6DD848614EC3341 21490989AFF9DF6BEA57CC93DE2417D171DAEEBCCA1EFC9164AF4C2E02B34E11 34B7FF1DA19D626114DFA220623A2E667BDB2B79A6C97B8B4AD1793D179C0153 150F91EA174C102B3EA389DEEEADF3672F0B2AF9B3DCD0D2B5B91A0F180C78E6 1E0C7787F029A053686DEFA38CCF0730E7B8DAD8D4670BDCF6F5930C8802C60B E8082320DCE1E5BBE6CDEC6FA39CC6B18F76B56689B4AB685FDD986086BB414F 6F0F2C4B113B6B31536B2C1980D34B4550C57B7EAA9161DD574CACCC82AF26BC 56EECAB8FFD5F50DA8138FAED811DF021FA2C2F4991EB28310CE94BAC3CE70AE D7C36867C52843FE1AB41CA2D6B8EB9ABAB0DA435637C26E4CA60EDBD8BFD748 CA958C5B79C6ED35393A2D4602B478524DF5BADCD692E02DFECABF4B99BB8393 B8D8A2CE41CBB04A3BB9806C9E41A58AEF6E2BF7E7F24778D3042F42DB0FE7DD 522486179BE8D2EB96CABF1EEA0CE577AF846E3CFCDF53CAA22EC3CA04B5D126 CD68AE6F6E40075E559218857EE7FD5B91C426A7982C132B2A23B77D10E627C1 891BBC5F4342982819507770FDC22FC96DC1DDB3069D0E3ABCD309D1BEE3F273 F113EC79AF6FD2A332787E2DF3D9316DEC84DAB94AB9A8B25859BF2553156043 6A5A084CD002662F0A1B1360941CA96B2EDDD12041EF8D49A5C03ED62FA1D50D 4B4E94B30FF78C7E87DBBBDCF100CDD0D1CCEB4546A81129329B961E477E2EBB 3D500F0DA9F684AFA07FDD0930555E1E828B0656854AC9AB8118A4BAD7111B39 5BDE6AC93CC061FE73067D807B454654E3AB7A02A38661862B6811FD9857BBB5 D88AF8BE8EE553D51C871ADD6377FEF4E4AAB4BF0962C377E6526DD3A43C99D3 1200330943334A86A18E00A9C62CFB783688A489ABC093927E742AC44E6C5D68 E381CB0577E36D42324075C70D0210146A46769E4EF4E7212A02BCEF21D39866 45FEA59ACC9D0210DBAAD2D64D2B9C75AC9332DA6ECD127868A2ECA846BDC961 370CDB39A22B63C3E73E1DA43D127232FFD654A37DE3B77E8691DF2000A95E02 755A7DC7CE2D3FFD1D4E7A5A630991A727B889B6E80869FEA450B89D07717463 BE8E7F9F7E7B5E8CDD9EBFBB0B01BF4631C35423EA9A53340BBA9FC493C144D7 AC4EC43D61AEC9B6813803E59AB2F48B6B167C19E5BB64FD46B494ADDE9BE881 DC7F1B9B7351196C77B07E7ADF73BCE7A085EAE92457E0031126878D6F2BB471 FD9B2CB336526BE180479A29D96E5DEFFA21C9368A06964F5D3AF0E14E9137EA D8A102D1D42E096B89C04E6B44C22E38E2880EA9624C7084DFE92C7CEBB1CA87 ED4A6269DFE0BFFC2491A2FCCAB7591D868D12FD15C2FB48077B4425BF9C2FB0 C9CE1C5296278F8A49175A30161ACEEF4411234610C4FE6BFBD2D3AF3B924837 6490F561BE719424B849D0CCA2D4DA51A1F34097BC6C4B81F65E094610363CD5 26FD206621ACB77A02A1FFD70E364E32095A7C0173DAF45388E4F8CF02359389 44180C058889100D5B340919A9EABB32A070AE29D81342D49617F20CB170C67D 3B4A671979ABC06F853D599899A7117571971EFB792229D4D6B051EA3AA66DCC 8D78F3A3FF7B97732E3277314344D32ABFBEB8AC47C4D4DF7F24CF5CCB870672 C106D2CF44ACA8967586FC51354182B066B6EFAE8FFD916257EC30AF1E67B156 89C13F96EDFBCD745965B3DCBF0C70496F81DE237779A24683971CBC5346D8A3 E6BCBB52CDB58E2E2B3C175B7F049357C667D7E5DF9112F6D7787A47679DCCBC 9AD6B4167C0A622AFC2871583D3DFD80A684B10A13D8362F08A39EB211672E8A 8027F3CFA9E5725AFD833DAE86772E528FE5F89CDCED0EF2E2D7B84210BAF4EC F5FC2DA12451A19FB91E72A710AB9C80D9D964E05D4B7DC69DC229C6D4F2027E 98F114ACFB99DF2487C53734D6C245F844F97640A29706BA79C324B2A499A8BA 33D63244A320E9D2BCB43F59FC073BB6CE91F32F449DE3DAE4CE284E0E40EC9A 299F71E1FF08A2783E1B452345F4CFFC1B17E878E6982198C14AF78F429DDA89 99D504B49BD397D45DB265DC4242E51EBC3A4FA1078F62FF96A9956B900B7CAA 64DFF8624A85017B0EA6DD905974F9B1A98A81C8A31E8B7F39C667DB89F88A2C F3E69A662D14C1523CFD64AE198784ADAE2F6524AC51F1DFA7C28653C70BCC7D 974677D88282EB0EA8EF2993DC93EED927A088F00B3F6D45509418105E4EF439 803DA2E82481019BA263C499696C3A8247773BF93CE18CB941F57E1512A918D3 4100E497E31BA32A00B38B9F76B837987C7269CBA3FBA9E8487CCA4E0BF2A154 494B2802E785E80E426C1E9E20A3BCBE1B88D1DF218F8A612237826FCD724236 60CFB08F417238AE9DB5142D00852E4806BD491A18FC7056BBFAE5A97433FC88 36E6B85A46DE24E8416891CF551BF8309FED66F4931B07E90DF9CC062ABC734D 77D69ED92278A16BE66D1A5A1A7A6310BB852682FABA134AF0D55FFB09721DAD 6ECC9D6446A54B158F034DD346793F1121B491C3793279520DC18F6EA12F0D30 9C225BFC2C16B7F7133A282B79C12EC832145F366E800BE79F5E0824AFB0A87D 626DEEFCFF653356F1DC7A02A2ADCC2860E3CC4125BF24ED9270A0EBD9055740 B40D69633885753F33A58F679A7BB37A88311B4B4F1675780F87F88094FC26FA 09BD993760E7C138D219382E7869FD81279DD4C3203990FA0A1E5A76FD2EE408 81021AD0A9A3BDB29136F417A647A4BF701A5DBFA3618E0C5455A95B0CDF969E 56B1D4D1EE29CD494FCA5785B10EC35E64D9D7F81E6DB72555AA1782232681E9 909251570732F104D769D752B09C4ED44D9B00B929CF7C3899A1E4003277000A 50D136D222A38476B166500304AF25D2A691104FEE150C14D6BA805415502752 7959ED64C77B1F493FD142F635DFF5F9C6C96FAA68C418E1FE57C59ED52DF91D 219E20FEDBBF7CFC56ABBE64B41616B74B6A76CD973CD4556F8141E863650CB5 1FF734CEC3107FC337F9338EB688500177095021341B9D9F89BB7BDF5BD20255 DAF041D751FAE3C3265F169800CA76182C63468B2767A0D7AD66A3F4CAC6D230 E4F125E79DAD4FE6BA2DDD4F2246D3E5516DBF4A85CD3C96E17C8CB90DEE6590 FF446FEEFB01EBEBB06578FD85687C27FB1F7E114C59523A7621CB251E73F6E3 9C3B145D3022C716C476E24A4FB28E8D04AAF74372763B244EDA4244B632EA49 F7D3388E1024CFCAAF76FE2E8C024EF779DAE6C93E4D078D8C28925E29F9A454 75A2B6C84EFC80B82870C863ED7F8FBB606DC050C9B48B09B5743A2A459E4137 BAA99EFFE878248247B575E0F51EBEDF5E13FF525F627D917E10192FA3EFA98B E24F413BB8603D044C5D225E0DA3E60DCD153520F317AA0212DAB75E6CCDD402 9BD3C4F14443C20DCE7D75C3DAAC6200B07A86DBAD8150429A28EF82C5E1AA37 DD57E54230D789BF166A074E0745D4A22CC22A2C1B64B2E866B0288ECC3BBA9F 0865C26D28AC2323BEE23A3F8D1F9D2624D8C5CF775DA3D64052C1A6A50BD579 1122C5FB8881CFE27430951C7BBC506AAA1E17F9CBBDF791FDA2A324B5F20C67 1E26175E2DAA58D7B0351250AD53C423B5F6A46D106E6980F7AF95A6819964DC 3939E2C92E76AFA64FCF2CD8AA811EFC9DC06C4BA38BF10A10513F02A8A8F855 B3A04F814708F7D60A0525C3BB1B2DF82047AEFFF231D6B18E51DD38618F3102 23EDF0C61EE36F887D0CF61AC775E044DAD59CDC9C8894EA4D6208A5F63F37DD 1945592CAE3065D50DC35AC0ABF70F22072D046B624EC124BD023C508EE8B805 CA44BF658B8CB36E4CCDB2276AC89912D4203425E64294461A0836BAE2E6039E 5D041CB1CAA1F6D1B2638EE7F296AC96E49BAB1C0160FF773A9DE83D696B0C2E DC034B20387C96D8E5D0D75D3E8BFE12FD2DE65572C01070FE07D96B344638C8 2DEE5D10642FE4329F83542B90F3CCA58EFD89FFCA8D16DAECFF28CAAE5B6CEB 2B2A3C2AFD87F802AC36C3DF24CF6CAF2E8A822F286DFD647E195D3295466C41 6AB850823C2891E8C6B94C9378F6EC868EE1BEC466879AF8425652BBA9F8FADB 782B878D4EE3E9908C8BFBD343E077878499AF806A031B211CF9E43F470A5A8D 8BF646AC3CD251393E3F94FD17151ACDC810D3B21C257A721159A6463DD0C954 D7DBA0CCB7102E4DB5BDB81648520C5D600ADDF06EB808CDEC948AAF188CC6A0 3327074AB44AAA9752283E94DA061191D10968BD8357D35EE2B7CA6BDBBDB595 4F831469187CE69E061147F7C7FCED28824D4141783DD8F99B73F4A52A4A7BF0 E5F7FC1F93B379D7416C816598DE7E660FE2A218653B32A4AE0BE9B5E1CBBE0B 44D40E2CF2BCAC37F7DB2A196BE1B80D22534F8553958874C7BD4E8FE2CBAB87 00101C71123255385BA182E63913F8AAAE986FB763FDAB631265061A17340890 789C1E80E82002A6310AB650589809CF3467C6E12E312EB7BE3084750EF5AB0C 6DE37BE767EA9E5EB4635529BCD8740B0B6E2C842EE6EA02D726CEEA20A23BFD E5DC590FA32502ED1F79941A897F59C3F2FF75324595F0C5753C5E3B65FF95C8 FDCD5B411F86F8840386528CA77518A2765AB3F428937258A0A1210C86FFAC5E 94D5BCF380417DA59075C4351944DE6934DC45B43C6FADC76D12FCB66B4CE9CB 4C1E8FB398D66B5528E5B207A7B8AE34EC403F92729B2737EBD585028926E76D B3CF37CFCEF267B77CA5AA619BD3DF563C8C6AC730CA6486B135E817809B8D30 97028BC290464B283C1AD1D41C59F97A69F06D9D72A0A9B95A45E4972AC4B84D E97C507869E4030BA5AAF4B710DE81A3502A4D7D736D61C668F63FA6D4669D23 FE3F0B09A7F4906E6B31FF161ADD8E1E45EB98099B5BE95B5FDFE3F633447974 CD3A02BE03C555B07CA3BA33F56AD586910707556DD51660D5ED2933858A71F4 4900E8E51019FDF950E594C3FCC854085B0E165CAFA7E902E1C842E17AB654A1 CE63493B07E060AD31814318CCC5B3783FEA5BC65DA2BBD27286F743F48D8246 5E73C07BE09CB22176C40D8F0A55650B2EF6703E5D1325A273417E0CE2E1CF85 6086CDC94AD6FE36C7A52925C91A3769F6771C6F58367C2B2B2456C5A1CDD38D 09CFF9E577D6877563AD4E1EE5975E609DBFEF85225FEEABC2B49900F716D121 D49C56F4EC12E412290BCC89B8862EC78AA095855D4B9DAC33CFFB50E9CFA788 FF7514936A0A284CFC5E790DCB6BB15A49562CE367D96B03C058D63961FD8BDD F4402A58E1171A94B6B94CDC5E60106540E0012542F563CC79DA1055CBE47EDD 98F049E90177DD9DF0E0D038C610568D13A6F8D59CBFBC5ED9D5733A55F21B74 F06DC30D353B69FFA47ABAD4C55A874811DE60C6A2B3673C76105E16A466FA19 20A5780F2E949328E05990573CC3D38CA7A37AD60641DE173893FFFA551AD971 697DA8ED155818AC16E3DEE6968891225D5E0DD0363A941D20B76CFC6A4531D0 2110290578D4D1183475AC1644257BFA84AF546324F3AEA5043D7171D4C251CC 8CFF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.0: CMBX12 003.002 %%Title: CMBX12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMBX12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup /UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX12 def /FontBBox {-53 -251 1139 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 44 /comma put dup 46 /period put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE 0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D 2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C 42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE 78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D 9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC 5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF 9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE 2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE 947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B 0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D 419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B 70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE 0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC 9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D 1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F 3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B 57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC 8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC 21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F 07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E 8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E 8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD 595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB 313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B 82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D 9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A 31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E 5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E 94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE 0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E 7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE 4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F 744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D 67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA 054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA 6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B 8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB 77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B 72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D 99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD 8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C 82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A 59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C 403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E 0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC 9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C 5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D 6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E 1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4 0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61 CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27932ADC486BD9CC130D94BBD05 43872FEBA04FB8866ABCB4D379696E73B84BBE98FBC4A16CFF22F8A7AF754624 2912C228030FF7EF23D51DD61BEB5171AD31E2B630475E16B6E0F3C78D44AC30 712D165DB658FDA800798803C3CD32B841E159AF0F748400314FAF5038EAD574 57D57A34CABDBE4B8D145E439A11585A0CEDB410973892F52DF26E116198F86D FD876B8299BCA27AEFEB72F9E8B4B7DA1110B52A0F96DE59A839E144184B72B6 E45614991F03299BF5D1365EF2E0D68B86CF619AED2B9D37876A796997CBFEB6 451B67B5EAE9120D0F8F9229332F23B6A10837AACB18CE42CA76F50FECE8A7D3 3213106308756303E821161BBA3576A83820B337E6A7E804D8CA26E226068104 0EB7484C4D980D7ABAF644B8B2A1BEC7E6506D965BA155349750E79A0C8A1AA6 5AFC6F9D9C691B47F45AE17E66D1B273AA58D2CBDAC9820F011DD77CB2F40495 540AE5327597D571CA7E202E2870297213BA4673BEA78368EBA8086EB422A59B C1B4B85378F2864B176AE297116D4771A393DA50F6905204CA54E10C929D3478 36DE51581F3D79B158CACE7B22DB5BF4F6B34803DB65FF139F2FE9E789E79035 47E746283E8BAB12A3592CF7AABD8836313D79BE940D246A1FC83026FD63925A 64D9A8E4A799A0706AE085365144A5DB7D4005EB07A1D1EFB18B8AD517FF5500 1597D3CB30D83856E4B83456C246AA8418D2BB350547F627611531515CDDB191 EDD72DBD79FBA622A1F06B48C412E37464B3B5BFD1614F54253D9DA82328E448 11C6A02E6323738819FEF776149B48D52C83CA39036DED2CC3D8C1E36320F674 C9B5D10D2DCA8320A2BAE92C9800FEABB7AFC0ACB2710F61DBAD38E8174FDA0C E8AAFBBE0F602AEA14D675DFB04790905077BB0FEEE4B7DB0A9717D37A627E6E CCDF58565FF1DFA6408CD17F71BA6BAEA2D4D99FF7628166BA93A5CBBEF1A839 2332FB0A14671F510DFAE662325952ACDA24EE9D79EE9402679F5B7FB73372BF 641E2C30C24A861F669FC28A2C1447EBD321E3BA9F29737CD880CE07D2295E72 9D2AB0C24E9A643A1BEB7F32D20A58E6E620C8F1768D3212FFC5ED912CF7C3D8 D507217D20A988699BBDC9D3FE095C8DAF9939B198F0A21DB77CD4C59FB771FA 9DE3286BB0DCEE0DA3782661356BB2691D830C00688D0B29651BBCC437532DAE 815AB03DE8F44AEC6112971E7231B30CC80D04970EC6C1E42A6AA0642BADC0C2 EAD884A4C33B25469B5FF3230ADF4EF607499F1EC3401FF7C6F844B93D95B202 1F661579C30C3E1DA2533836ED3445E59CA532AB1E8613EB4C78536ED00E1EF0 615359AD748D66F7C8A13B807650C963A962B831C55D25B0CF3EE4300F941C5B 61973842957CF64A65255CFCD3666728FD0CDF7B59DC9C2E3959735BA89C9AD4 98E0AB04FF7B07A138E77B97991379C4262C03F36DC55420A1DA7983AC156209 AE245CE6C064071323FEFF68797AD21DAB54A1B8CEF96A787DC9E90CE2DA1C27 08BE7D84C8491B98151D170434B4880F1550D55632ACE592BBC07466FEE6B7BA 3632C750DAB27A2A33C5BFB2C06B5DCB9A6243CBBA1A31C3D7DE7FF6B41F6E82 6A44428053C6C606E951A312495B47A6BBC2FAB44A62FC0D4A50E74D77E0BDD0 206BBE6BC9B1DC7A0FA3CC495CDF1CC5216428CA94D6F6715B920DC818B8463C 9E4120C397B8C9007E04347D305D021D5220E3E98FBC7A30211E6C4B1199488A EFCC8F2DDA888D213228C360FDD2D27A7B8D3578B3F16D9F73AB6D7DF413A84C B0B5FB73A7FEE60E68B98FDD312DFFF653D98FF04DFB4AFED129B33E6148FE7E EFE32787D41E567C0970FD535BBF95FF4C14832FD5181C6AFE9295665C6AFD2B 07DE351D3A9858ACCDA547DA19D30BED27B3A77C01CDDB62EA0C541E26B241AA EB6BB5D533A091A7C5AE32923E931A98B1A378CEDE4394E7615AEAE807C14E8C 818BBCE624387076111D1EDF5C61EA8809948D4906B2C05C01463C4DF4EA3A7D 6A4DFB643EB5AB2E09DCCC51CC16F68CAE87CDFB82F7A39129119C290A21DD0D 3A46F182963E7267C31F20B98914BACC48CCB4E0611C67BC595D00B633E7FFCE 17E311A7F4588FB6AE658377C08A215B79424635331DB4068BE99D308D6BC1FB 2DF73D26E0C6303F06946636B23742D57FB9D9A3BD099093A1C7BB31C02D5423 C7FA77892B3E560A5D115FDD512CB4CE82FE58A7AA72A233B02D6B48B90CF72B 6C9D1E25CE02FD2D8BD99802C12AE644185A5D70D63442C3514746A7222DCDA2 1DBBF4CBCC0B2342CB51BC7FC6423F7E95BC3EB407F0285FD449D8B636642BE6 131E0AE8A0B810C0D8253B249A103DF83004276605A33119A16BED4A7F2F295C 67757411FEBC5AE386358251D1A57A77C11951BB0533EE75223739B27D2C0EDE F12FCC8CEFA983BB6FF34301849D59A0282DB77AEACC51E2350636AB56FEEEEC FDFECCBEFB135A6005DC8D8E21B1484E5345FD64E26B296864D7E8884955679E 35F720AE6E52A89CDA315714FCAE93AAC470D2692650EA28CADDE043534014D5 17507253E7333EB8B44A5486828BCE2850FD95CAD5ACF132DFAA39E0007FFF26 497425189ADDD944FA5423B9305239BB25B4430D6AD6D698F9562B10FD9D75E2 4C7AB5047BE64C912105CD4A4DA988BD5ED3B612FA3D28C805E2A360F464178A 94CF4BA6A9FC5C18E56D8C0890CDEB4D14ED75F494F5D917A57F571760D02147 1D344B0D80E7064DE9D0A5992C3BBE55A7258C3DB693677765B514782170B8FB 6E0F5AFCBAEF7E3D161717D01090EA2316E0633DA73CF10C77C68BBF8123FB74 1945F0EDA652BB4F3693FE0F4FB0F5D5F57A6A1793C0F39ECEDA9079A5C497CF 1519DEDFE0FCF60994038D7A9F5374FAE1F132BECB1DC80EE2D09164C674C6FA D0881743FE49F5727756F05AC1709328C25EE1C4B8AD429CB90EE6023A226709 33C619C97D92A505C9B82B75241F7CA2604B8C65202E5546E9BD5C15394BC9C6 2A848D7141F8F57FC25DD20879EF0E968CE16C31FC537B74C429720B0D83A510 DF7E9C057609E3F35C2DA4EC56CC1C4BE0BD04A4B23AA52FFB3AAF096D6CFC3D 5CAEAF5B4577FAFDBCF41D81148C0226DD29E6D57B8C05E1C141B6D309D7273C 2832AF0AFE91CB8CC9FD1980605C5FE4D8DA726580676FCEB1021121DB2CAFB3 516426D78EE62D95A84B1ED786324569E604FF8D2E9EE071600B4820EF0CDDF2 51EBA811EC9A6A8F7E8533090E7D5FAE3592A6F7BE3C7DBEE4729DF5598EFC57 614441E5AE48AA6B3EF26C78C298B5F0EB05D67213915CBD611298A3492ECC50 3ACFFC5589E5625DC0BA66F06B15F35F73993CD514F8F952B9AB8550BD573B20 699B9CC30851C45EFF549F82433198FC6C217E2C6484DB1B349BE6AA81A32716 DADF7565299A4CCCB83121FD1CDF9E1DF7656273E59B60080928E8CE59184D32 9868A652C2AE09BF15F3DC3AE6AB5436D0CCF0EAB2AEE3A385A6A8A2F2BBFD4B B8EFF2818AF015263AA0A5C8215CEA00C62DF4B00540B091CAA144D6F94C093A 77375E33DF12B1928C9D17E6E3D658B8D26B5F9ECAF863FA7A93A53CB1BA6B9A CB4118471BF92D9DF22C820506CD74492F42CD49903EC50AAB51E9E6115EED20 08D8CEF153409DDBCF0EA91EF2BEDE757361403A94FD680F74E1B96BB88965E9 58F7A517FE9E1C781C3CBE6498E6623042E58762A2407A5FB8D24D89B93BACE2 7D92D50EA78D5BE442D4C49C56F57592C04ED3518C44A4F36B9819C27E93BA1F 2FA7C560668C355AAFB9A9F5BE6388B3E08E2FF8FB820BE492A1B0A067515A1B 5DF479992F4E62D27F713C7EF4B715FB341F35D8C9C4F62834E950C86561591B 8947FADE95A2BED5D595E81B1AAEFA2EC949A6E4610D372C8FFB23E28FC64153 E6A9F95E8C77FA57ACB91B1C7D6EB78EA40357C88754711D61977F8D1D8836C9 1D20A3DD14CDB6B7936233E524A990148D8B797ED4CC4D5BA8EC668DCA7C9C67 413662E9B57DA3233D0DEF0EFBE62B253E56F9FCD5E64B9AD2967BAA036EFD4E 990F9BCFB3113884F87FB79E7BF293FF3A920575795A964C662494B91E934107 D2E02B221294A4776CC9ECBD69A362E6CF668CC22C9F8DCFA29CE30CB8DE13C2 79167C1D4BF0751D491109BA8EE1ACD06DA832F48042BA3700CA0EA193D41AB1 72E1F02AFB3EE2E52A32CF8921A3DE2701541B66325142F9AE079F3A6C21DF90 EBE1EECB900ECF7FB6F001CFE6C0FA8E6413D39B70F8B4D68A5105F509E384B3 842F5753A6D78654BD508FAB1CD7E81FE0CE3527E7163EC56EC8BF3E242FAD38 A600E254EFA5BBD99C48AE102AB2DE4330EE93CE6CA6F61D99406DAD5AFDA2AF 2377B3E1CA0BBB1442DA68C316B0817DECBE32E2A4B7608D3007C740F78905CA EA5EC147472821B886FB1A678756DD584EFEE26C81F3A9545FDA4EFD44E545F1 8F936E4FECA8F5E7D3E68D71D3B8C122ABE07476B492685496588BDD8C639500 DD91F576C77C8C3D4F8E8AC2E6AC308F923BD2F231438AD39AB7FD5FEF428D61 DBBC7803F12DC84A81EA8CD982D6CA26A63C7776ADAC6A5F300656883AE97BBE 217CC1F3220B498527A826C557669132D2F97E20029BCF14A9A896012837CA40 EDBA10810F4E7A0BCB0F7EEB88842AA6C8360FE21247FB0C3BAA86A413DDD20E F5C3E5349A96BC9C7D54AE493AA18763F407040C89464F1F9474CF00DA0A6B49 02604EDA77354E75B67CBAF2051BC92EEFB603D712A8A6DBA63A0A89F37451FA E3E99B5039EC4478106FDE29E4D7BE88537C97A2E03372C07EC4D6EC3E159618 6479EAD51CE224EA90C9C951CBD81E02D30D9DAE9277FAB7533CDB40AF16A1DD 35D5FA847311A5868596C49549BC2CB7FB11334A5DC0235BC107EEDB05B92A85 B198C70DCDE3B70BCF42FBDA810A3DEF5802821B55B42C4653C61DEABDFEB3E0 9A595EB54994A4B866A99F23CC95697F90B0A4B460994016D12B85D2CC92B572 F62B9A1AABF2D9CBDB887D1F58A824E080562A3E4A7C6AA02EAAA47907EE67E5 46169E42148793FEAB87D15B626EAEB86BDEC8CFFA2B84F52BD34A2056765E09 63E0BC58FC24B297D68D8A1D3332792C4DD29EE1728FAB873198F893E21C8AFA D2DEDFB86AA5343984A6E366F837AF76EE986ECC5BDC880F087B6F71CBDBF917 8B38EA2EFFD281B1A8E46666A74F11D849709F871C45DA532D12541BD8F74899 95F4B59B9DFE7F6F5FD49789865298C244D95881D2DB1889D0A41FC7A34777D6 9E6947A3DDE605111352262F0990A9E558274D66601BF2B67D55159C7514F1E1 1A7E5C074DE75B9A612A762C3153B326C6BDDD276C2066F50899A6EC8D4E1DDC 6FE4C7056EC63A2E1F6872D0C74FBA9700C6C4E3689F8ABA302F49A7E3EA2B4B BCFB7FBD3420D588F61AFA044EB78DF7C3881017C753DB1DA3F35933B19656CC 3CED882CE92EC2AD79698EF383D113D85C6F3DCC4B0787F3CA994A0830EE3703 0BA4F77439094180813BD2E230F2010ABD7868EB171307253CE61F9B228C6687 F849FD6EE7BFDCA93B097A1F1DCFA09E351F1713E4E297F10C1CA62A8F461B5D A696C14A1917F2C92B885193465E63F94C151DFF3E463DC3767771BA45DACCFE 9A7C1A408A0BA54170D70A72A936CE4C0D4DC4C185040D5530F02A9443615826 7BF99C96AC1F027CD229A9ED6BEBEFB54752EAD461E112597F63247C83ACDC2D 2F02720E242C0FE40F92ACD4526E93679B6D801A9C6461491A070850CC24B3A8 78D8E1A70440B37FBB23FE8B3F562191F410C6E68E7286BC35423C1821F06304 4F4DF0FD723BC06365B3EB2D0C5C83D219F92688D798FE1555BFC2E3AA8E18F0 58DBDC9827E06520AA3937E0D01E0966FB90C3E32965018AE2B5F2CA42794CE1 2A22A211CE8D96A5FF98BBBC1DDA78BD9EF66F34D74F9D28F7CD1B4891FF2355 D05F8609E03969EE85696CD194287A1A1909C091835BBB4C4FDE8AF355B1EA02 7C3BAF3782E46F2FE41CCA69C346C4F88B640A25C51B85D1535CB65A10316C65 8AA3914E00671E0DDC0C41D560C66E677BE305B1C9A167496E9BC55E3E61FBF0 454ED084CA7B8542D09C19A0414782A2EC87700A7DBCABB76F32D20479CAAF1A B9FE677A9BC68A04FC04211F65CF6B7AE4BCD58D8EDD334101BB4AA9F426404B 73C5E96532F99284B408438EB48650A90FD34A2120977F5F7DD6301E993FD1EF 675A7E6176BF57276D3FAE1380D9B1E4B2CF158046EEA40E87928CE9B19A249C E2C45BBFE7EC8302D794893656C086031AF9578BFAF49E6A866F98D1CC1DE410 C2667F4A82EB71BF6436DF43BE28138EEA6A33A04B0B414450950C40708E2058 2CB26EC69D1645BE59C79BE73F9767C75667463546B650502FC81F21B5C4D406 DBA42CE9F1CF16561266E05874C91490DB83C01EE0339E7A8DCC5AFF63D3FA4B 552926E42DE881BBB4B0D0BB380E0ED76B72A756B4CAEB91722F993A6B4F49AE A404FBBCAF83B786A3D5D0C5AC21D499C743D5A9375DDB1697D28E13F47FA43A FE64426660F078609C14EC6383561C2ED52C3B0F22D404776673B382CC17BBE6 ADCF4A7F3F7D167DE46D8DEBAE03648685FDBB2367F40B6FDC44090F32AF4802 BD5EBADD37B82B429A0E22E9278F2E1C6BCC2D8649A949FA59A8E1CBEBD883A5 430CD0968816244C9D05C948102A9B9D9CF0023B7AB5E3481A1C2EADCB42B6A1 D5891F3115E42F0A18E30735F156160E24E38D358D4376E0BB35EA62F73DADC5 0EAF316D1FEFFCBCC1808EF642F285D3B67E279BB617E29B10E46C92496A7568 900465D114CAFFA796FB47AD526011D42B486078629D6196F9485B66966D0D47 9C6DC7350979D07D8925A1CD3934495B034456D8BA32203DDDC3C545E1FEEB3C 85A12370148A0ED20D56DA8A34409226A4D38D350433B0590B93DBF4EE792A6C 28F5D36D91A0CC9374BFB366B81EE8FC4A29E287B597A845B45C7486E3F76BD1 13418C33B8FCBB118BA3419B55D291BE1D200023002FC6DF412DB7FA559C2CEB 2A4E359CCEEEC0B7709C8D41BF93B42448582C8E8A3E8160BD43186A96C66BBE 591DDE7BAD8CD956DE262047E7CF1F174F462FA6DFDD274772F331F95D6B3557 BB8E02973A3AB6F3B8C0D8BA680777510A0FC83689E15220D618FE48AA0BF540 11AECC854D11EDBAA8B7A8C95D9F4385407F5E8324A2B249A3E50F983445FFBB 3DC77A4A6D7CA7ABA7341501988E6A446B85484641B0ECD10492D6804F0FE1A3 7FD639D14146B5AA2899CB7BBD4537A37B3890CD1C2A3B3147F71A5B974E4750 A0444C4E14BFD00A9A5E7F4E30948CE9FA820D15250A2A1D87E7F1686972D0FE 80DCACE154D3E7AE9D7BB1CF4D2E893B5F010D8B1268116147F6D7328F260BE8 BAC184DFCC2745560910ED3901D4AA5BC1AF68CB14A3BA66E235299024C2BA29 65CBE67B56A6A5FD4B4AB404DDD02E520E2084082A6ABBC6F62F3BD146388B26 A107DB3FFA2DDE3AD94A267D1403E8F0D018948F91349C870AA70AAFBD2CB866 58D40D1439AD4BEFFCDE627E56AB5E78CE0213C214001FBE22809BE3FDA6D380 31EDE1E121168BAF879532F11B02A0EDC08A53AE7B0B27605C4D726816E08CD5 47550ED2014B1062C1F35F3F3A3290018E2B459CEBC43BDFC8AA6B0653A838A1 D832CAA078C802C0E0F4125911CA9118AB0EF5C38EE0EF4E5A898D4E8E81182A B2754E36F9846CA5A95D72AECF41F7E2DAAC726AACA518E585261014859EF503 B0A00369FB384E5321F2EF712053C34B81F235FFB9E95638688FC56360681C19 5E70974D7C64FA3B885D0C435335C62344F3FB675546CF255B3E350095154EDE 7227589C6D73A140E577645D0A6B45ECDF28A5F7FC3E0AC6A893662E66756A22 485E8EED9448335A643E67C2EEF06998083C39DB6024884182436DBBD4FF630F 38CA84DEB883C104C6BA4757A8816160F21AC23067BD91DCF8173361372F1E53 1ACF0FFCEABA31C4E2FD3E5A6E28FF3D480E6062FB210CCBD995BEEC93989852 FF223550E7100E2CDEBD81C548DD3F0B4FB9C694BF14D7C1D842DA4B50647318 45452B2E61CCC0992B66DACBD66664AF8E14BD784C309DAAE8336321C2A40625 94ACC155EAB00D6B5EE04A4A31416B4D1EDD27FF915F43B77DBD567F201F8C12 DF9B272813D89C9F960A9BB37BEE79CE8701E418B03AEF4604C273DFCD380F54 350608AEA632A54BED07DC0690448576C5449AD9465CF06B5611ACEE28C94631 B5CD0E1EE997E23966E494EAC2E397A604AF67D0E55F48B46ACF92DE6E13B8A3 39C0FBF7B87218D04C6614FE336FEA49E26B7045370DB4847F80A86B3A97933F 4F5BDC84B75E7A01B36D1C2D5A0F4F2C873AE44D804732847525C15F900EB9C4 65B90F90F343E0420392AA43A4F9F836ECF2CB9FCF4A7AC4E564F71506C04423 C42CC07FA4F4B4EF5BF5464D4E76976DC5164A0E134329D962EF72E36C2374EC 339DDFEF01B8D43459AFA427B44EA035C41936DB61E512EB99B1B98C94E56775 442484DE5A25E67F347BB5A4F1DC5E3C50901187F6081C2547A71E13B3657243 EBADB0BB43F920C15CE4D4ED45E481A40E6A5EBB944B2D44D7E1CF2D130A7B2C 25AB9A8D48CBD56637B3888CD66135BEB00915550CC2EA18229B068E5091B2BB 0EE55CFEDE2695316911B60C66FAE3A47AF8C778399F1E029C8AC3898602E89A 2E83824A18D289A571B9F14D5113543F14D4C085ECBC20CA010503A068530D54 5966DD29C1E04FC8CC14E684F1D523FF8D5C16E776499A9BCC5546C3019A7363 8AA39908E2AB0F4236C6B453B2BE8046F6D512929283718F8C0EAE110A7E7F3A E649D9C76F21F3C98D274E40D1E7F7E9211F6ADE82BD73353095A862EBF943E2 744D66C11EDD6AB4CA6DFBE231750132A1419F961B75F654957CD33B4D21C038 D88322B91EA35235D83618A10F040FF284674D7AFC91D58B50BD591B870D9B79 F79F5E9BFDDEBB9AE3CA2A17A439082898598ADF8DD54A42F82046299153096E FABA8F1A4FAC50ED0CF9CEA7208B5F39514BD52F4B93BBD32BA4E19A8C02D1BD 764F7CC39729AE94D83620269E1EE32C5E7CB173ED2947580C39F1AF782B1465 F8A4CAD36261FEB051A0677217FCF3017FFD173DB260DC6C66F907C252CAF4D6 1DC423516B3487E74E6108DD038E4CCF7E008C3286A9BE150F46DF0D24AED27A D0AE2B1F60899E9E1872832673EB28E2E465BF0734AC459829D42D7E31EAFDDD DD5F63364872EF24C99EC5A346F60DED135EAAE1CBF8F9D051CA39DAA3F592AB 34193B2AADFAF020FE42293BEC723633B38A2C8C65FAB0CF772209FA8E1E7A82 15316ECD908F1A8355BD409B11EBAB00D80AD389BEBE357D107827D49CE9A014 5A7536AB85AE8206F5F43AC6409F59FFBDACE58AF87D3C4C6EBEACCD801FA923 AA04E542D23E389415F423065111046BE1AABF234AA8156C0F0E05BE139F82F9 489A8766716287088F451179E180572C60478099C6A507D2B8A9D2E330872A83 9A56ABDD97A467F5ADB9E08A9ECD62AB1F600E7A6F4C8905497E7965873448EC C2529C56986FE1E3C48652DD02495A53089569183CF75C89FAF88E38192987BA C061B029A1475CFBD00157F1256365A741144EA2EF4FA2039A2555CCB89734CD A6B4DA0482B2906ADFF83F749C52A1474DF2832A4659B60CE2F203A9B14A8D9A 088B48B32D3D1E13EC4A1587CB18EF1E15933762E7DCEFF2E8671311A092B2C5 9AC2102CF157EE42B88050AF6B9600745BBC7583999F3CA0962F073FBF7279BA D3F16ECF48D5973D3610B8CD7F9FCBB48E5D6F8D8FC4BA703F7C92454DFB2BF9 DE7812C8370F30424E4EEC4C3EA5B1F3137B16E3418A4C73A9EAE3A06E5560E3 494E71B8159D7CB23FC90FD651AEB07867C8A2E656FA36B193AA9261C98D0C45 0735570192FC3EA22DA0A8874ADED40D3AE130C051D266ABB4F65DD7E9A68BFB 097E2A5EFF411D26B9581F0D61753440F91C325699E7CEA90107F55F9BD478D6 F17042E710C9387F975A3BD7654DC113F17182497A4289F3C81A37A48BA8D66D 3DF02BCCAA5C32D71B6E4C7316C9CAFFD1173A352831D6110ACAAADB21C4751D 4F2C35A8490999013485F6AB5E4497880CCBE78CE8ED5BC623BD2F4E230F0DB8 6522E203445073A11C4663E7D0C1724992072519DB39389662F75CAC57FF20CA B4AD604ACDD7D40560125B9A77613FF1C51BBB91C75653A2800C40545D446F56 9663AD7CE3B3E9CC3BA7D907561FF498C1519BE0C9984F7A3A33573F262D9E75 F547366E8EFC46F1F984E2C6841FF9ACEF44D8804A2A567E0A75F842BB57DB2A 7F4DD6738CEF16A4007A3E8FAABBBD19853CBD70AC8CF599C651E27AF4AC2E4D 4A87A9616732B81947B13AE0223BC0DA77C206072C7538574608C8DFB40E407C AF01507296F1FED01FE9DAEC841864D857FAC306EF001053DDA9854EEEF09ADD 0C3221E3F45DAA2C747C468D471DE4DB8C091C9CF7A22043B9D9AF23AD2EE11A 154BF601D6DAB725C5CBD7D23B955ACDCC8DA70D53396C0B0D3CF5D7B110E9FF 17DD2D73BBB99594C2262231BBB56FE443015D813C3323929349D06B51275B40 84A7BD1875411E68FD8FBB062023CB0EC186FF8027AEAC6F35B00EF9669047EB B0E87B06EB40A9968052CEC8E4BC2354A963CB5956CB300624BF3AB78A3D1A63 CA4A40270DBFFFAC07F8EE8019DD1003A07CFCA1635ED2A51428362DD52D7826 DED05A0778ED5024012CC2ECBF1A9914D8F81A02DA5328B2E32BA78FC15CE60C 622021E0CFDE12AF3B284CFCF047867D399A8DD70844D12A34AE7EA5DCAF6CF6 16C62406927FE0CD3A76A5DDCB6035E2A45A0A1EC85CD2AF59E7275322CAF01A D54F3C49382A065D5D4932562F964CBF2174D0FA07A6FC3B0BE43EA1CFDA4B88 BF507F964DD52B6EF9C2844F880271F7639B4C571922A6154AA02FF5D042FEBB 506976CAA4B8DEB70BA2B063E07B874AF5F198D7C45E229AD80D394D7EF7375A A70B62D2719C6598C6124DDC0B562FE0659BCFD22CB3B1AB5D7E2726CDFCF88F B13DE122F2A3DEFDC2E99C902C5761E43C7A1A43F677931AB005746566FE3C2E 962BD9163E099B57E0DAB0DEB69497F6E9B851264EE594FD90A67843AD7E05EE 90119F7D88483955AC3FDB0D32B7B1F1E31B7E572AD62CEDA14028F3EAD01434 9106CD651516E13997EAFA17A8B5026B9506C66151CA9EDAFA128B13C99FF662 CBC821CBD3768C3D4A7C3DFD2A6C27F643D905181E7E088C7B619D118F4B58E7 E1A27289F377B188D374682A266BE157CB0B478484016BF6984013572FB3DCE4 00776B23D3F2DC8DBBAADC2E618AB399061C94FFF2A9A47835AF1E2C92ED0610 5176407975A0345D5371843EEF46D445082B9780ED5D326AD2AA7591AA726BF6 9FA17265E93F600D76FEE14C9106A94DA0DEA690A073ED19888E38BE279F22B0 3651B85A662314C10DF7C74D89848148486C33372D688167F95A956280BD5A83 8C06D67C02A6AA3C55CF799DB8557FF823F062D9150341F98BC2B2BFB84DD14D FCAF2CE7042F7FBA8754A59B1BF1476468EDA717B266D35EEA7C4107D4954757 F762245CCD997C8451E5E9E845A6583D8DCCDD7ACD65136C2F382EF8DFEF4738 3C8CCEA8F8A5DE43BC6E5968E2DCB22E237FB65357383412A9083B7A9BA06B60 669A320D295D41B9CC65A05F1C3CF4C860324E424B74B50E68F67F84C176D7E7 22E2E0E85FA0BEA08476CE11F8930000B6096A512044D54F3FCB7F7BCC719723 7394DCC3B33C292ADAB50AE17C454333D4F93D938F934E0F1AEFC5F2BC488883 44CC90AA3FD17CA3B2117E6E2DC1FED5EDE855A4169F238181C77CE4ACEDE8F5 E77B4A07D17D173C82F0B62D33AAE40213E5BA93C2930DFCFFEB9DAE024BF85A 90BFCCFE3FC5F99D39B2E8D2686AE1417AC1E5BB58D105024703F38AE3D90F30 EE950E8C86ED718598CA966D841BD379C8FCF356CA568F995846CD2F4B0DBA7B 46FBA479EA98E3B92EE5C76B63AFD766CCDF0560148F30A29BE6EFC725EE60F2 F5F7EC808795BB8C59B568CB6B927A2E3F8206180A735B57FAE842082ABCBB2B A65E38BC4E9253D728DA0F8BEA769428F5E8328F4AF412CA14B056B2A8AEA438 B4AE59E74AE6F3432AB8C729045C302EB3EFABD4D14DD542AB22E67A1D4DDA44 8D528DC404FF90FC92B736DDE0C2D4E1D8AAD0C4C285AD83E9E16A2BF5D3643E 5334AC1AC57C48A8B0875E379F4A7EDE97DBD65920EE20C60F16128324B23BFB 369A4F92832E679FC855451BC789F97D1997A73A4DBBDAF68D14C7713A4F1B56 F55CA97A5E120E013FB41A469668B02B3027617FCC9EEA2BC6FBDED8948CB4F6 C76ED2C725B016741936BB7AD5000E89CDFCD7B51A18037B6CB661E95F3E00F2 99FAC8D75C1B8AC2F3BD84DE2417C0D7AA6526DF55DB0560BF4BE43EEFB23ABB 9282709C58B1200CD1C967F06CB311BC3BFC8B651CB0F6B34F6E96ECF5C51649 BD4C142EDF0BCF97AAA83ED6231483539AA4776C92C4A968FEECE297435AD0C1 F27C45798F0671AE7D36862A7C4AAD5523F96698D1BC679103435FDA131ADC34 326BBAA7F7BB7C47A232629435AA4C9DCB6A2E1A0DBA73DC6859FAE5FA6F15DB C38A6DD13B45C55D6EAF468E22A24FE97C854FD8B42B63A456FB62F4B6004A6F 2F81104D3A740690B7896D7140FC5DEE2A803AB13AFF0B26BFD0578B0F2407E4 A5D5FB3128D0BFD6BB49FB727452F84EA5A2AD6792E91D4E6F55462701F85ECD 8611A2FF2F2EA8DC783774F860D01C616E4B37AC8074EE264D5F5448DC91EA2A E7E261C7827787D9F4442B969353A49C948B6BDF7E868C8B9AD10AB31E8C2746 E9AB0ECD16F0AF5BF7DF3570A7663B0E200E26F7745D6CBC1B0E77028A66C6FB 076A779124F2C19E77200F7D74F30CCC8C7574CAC587D7BBB7802AC878AAEA83 C81BC3880512B7612605EA397468A5C43D666D7D9A6E3384500B516E86F14C81 6643E5833A2B0D57AC3A39CDFED704DE32519B62532E6CCB85A37FE6B58D8348 7CA452751F2E75D5287E4DF94C8512014A74977CD682E08D3C884653A495A254 4ADA8E700D0D39D3A122E720EA9CE938C4711D117B5A27C8FA799E402C4B40CF 91AA834656B4064D8B40F620ECFB315EE9C555CCCF8AF57CB5968A37ECF13DB0 EFC479FE9716E6B79C9FDB4E22106802EF1D248D664528F37E2E4446F6B10BD2 A4D5D4179101EAEF55D57898C3784111BF27D744C382058C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMCSC10 %!PS-AdobeFont-1.0: CMCSC10 003.002 %%Title: CMCSC10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMCSC10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup /UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMCSC10 def /FontBBox {14 -250 1077 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMCSC10.) readonly def /FullName (CMCSC10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 97 /a put dup 99 /c put dup 103 /g put dup 105 /i put dup 110 /n put dup 115 /s put dup 117 /u put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2 048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31 CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2 0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3 D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D 567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3 DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF 435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E 2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148 D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1 DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70 8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C 9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E 1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49 59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402 A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA 90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E 3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB 3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41 736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198 E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94 17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E 1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085 35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367 3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1 5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245 658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD 8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9 D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7 606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C 64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8 F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00 C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7 072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3 7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317 1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B 5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3 2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06 491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07 8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F 9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568 4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781 AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E 36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA 88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85 5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3 5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8 AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152 7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0 CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8 E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF 53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9 FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A 94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4 E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC 4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428 F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4 5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460 7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2 361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579 5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7 83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F 8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3 F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327 EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15 B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4 8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE 07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE 8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4 12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207 A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29 0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24 3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128 2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037 215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720 70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5 37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A 0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F 7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8 9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5 28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A 962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3 3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC 3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5 15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8 DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF 72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512 D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588 462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026 465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607 6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7 8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20 53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34 E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605 8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395 CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064 46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7 391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015 55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643 0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1 0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8 3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A 22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384 5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0 20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3 B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B 7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9 B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201 213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B 57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082 9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271 C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F 54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051 1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90 7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287 72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC 5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2 7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901 EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4 62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1 0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A 94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6 5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E 74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88 159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5 2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143 40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977 CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A 1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A 7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5 D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614 37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874 357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68 6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435 6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53 686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8 EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6 3088F8D19CF2364A329162D39E166AC728B267758341630B00398D64538FCC4D E3E6CF103794C29AEF7F7E56970F6B1ABA87DC8D23E280EDC77556593D02DFF3 154883CFE4EF04E07E7539A4750FA1CF1A994E99B656E728D140C83AE1F196AD 9F049188A4184C84556C0476BE46DDA8ED86888DDA3065C5091D99EEEAC43092 40B97AE327215024ACC0134CBE91FD761C26A48EDFF9028DA28222985FAED7B6 A1CC891D07185666E34BEFBBF77C6C32B88FF3F1046E4EB2CD942E70746DDCDE 002E74BA03A2B15E0529E61DCAC207A71F61C89D81B3C53C5B458EAC70ADFC54 810310CB04E1A21FFBC5DE2429EC0989A3F2B6AE4290A005FBE736750956765D 637B7CABF7F9A593D9FF6C322895835C0007A78771D1404671122F9CF898AB24 1A5648EF8C40B27FD537612C4CBC6E584FBD058DBD4F0A00C63A79077826D3F1 859589B221F7F82DBE392601B0A89142648EB40BCD943E382FC7758A10F978FF 6DD9C3C1D284C5642C812DBF29A75A50BF63F788CBEA5883DC1544ABB49289EE 2C99CB03C1BA72C7320904C7EC94736825A793D5629EABFCEFAB8D28B6F23858 89A6967942A943FAB5E5B26B8567CC9606DE60329C6D890843F700FC1F60656A 38164ED7976AD47A8E54940B9E340D61353AAD260C9273D45772AEC8E9F4F045 9CC576D152757AF3B74DFB9B6962001EA9FF7F62C2E36F71D9B76BB99DA7631F 774795B8CD1E08480153496DE5E08A1F4BEA681D0C1D6336A49A222B0537ABD9 75A3A9D27D0B71B8913E9355F8E56C5FB3E14B9D5ACC4F87339FF9D9039ADEEC 660B5CEF75E7C1772D4A3A4D0C8976A165766D9DBD0CA8132D17E5149AE716A9 2E255277FB5294A96194C462C74AAB251A36941768EDB3EC6DC2C481393ABA6C 8BC2F3AB0BF5A6E5619BE16DF43BB090930493E00607B9F8C32D24F07482266E 09ACF6B41349E00C8B421ED5C40D3C40923D21F107185B5A135B36FBADE488C1 8F0C2DEF08A6B185F2D25B8FD8DE7EBC71DD9C15C9F590FCD7B4B8E9690079F5 39D809ABDDD79A632C99FBDFEDE0A89341919C6B397AD1C8FB7F3BF8C52C1B46 7BFA51A4DA496B810689769986D6A625AEA159AB2F6C7EDA6E04F0B2631E5E0F 942624C194230D8A6EF32B3E1B4A5C37C6092246B328CFC926D17AE3B559ECD6 2FA448C0FA94956EFED3BD7920EF42BB3F25907F097FA990FBEB88E78FDC74AF D3D7BC983DE0F33C53780C9A8E98A40C2EFEE93067232133F83C4EB0B2AF0EFE D1B3417DE2966B2BA85FB7A32A1B6B57D0EC8645FE35571746F760EF7ED4B9FC 53857A279CF19C0625D3FA9733C918A74E592DDA7FC1B088A8E323C9845306B2 9C474BF8FC5F285E76B64020C2A377AA104483039805B8963116E882A0ED9417 F56A2B0CC9B0857AB0D1B0FB080AC608952DE7DE07F81AF14AB81F90A76F288F 3B1095F9BD7BF8FAE8294990F0EFA45CDDCE3E24BE64C706C5031856E795A079 C062F5C28B2429CAE52817C005CB1CB8F97FC6DB2E731FF72D8CD75FE7314C11 3C83F93A5D1F5A4D928A8D9CBF8F66980FA36717E2BD4D7B52C7F7931CB91E80 396D5593E022810BA1D5952138AA44DA13E001BE8F854D1AC6773C10F5E8C5E5 FAC9C1C00D691A1D84FA88AB7A972CB521449280428B3B6B62AA1D7586C5016C FD2F558F09577665CB2CA7998B1F54661994EDF2B82229F55A9C657B1E0206FF 4F8D30F309A2C988FE06D7E6A77AE5A44765FB88A4CED66F8DC8FD7469C483E1 9849B7A365121843AA23E554102363A21342EEF1C13688E9FA27ACBC3E479F5B E64E99C1DB82AC245BE81B1898EAF293D9CE70F1E5B2F5052CF248028DE1944F E1416FF897BB9855119C4F5D237A38CAAC27F5E4A9696EDAAA485305A3691ECC C283663B80248DF419E3F267BD10B935E88850FD369A91F34A6F3AA6A11A6254 63FA3BB611268DCD43DAF1F273CFF5AA40177709DD3B5029D6135A47D7E4A76F 03EDD4DBFAD427D55EDB1D318749E5F3D7F3CFF981214960E8AAD77C0B9BBD24 29089C360B059722B67B148CA77CC7BD0A3AD65539A373359FDAEAEAF0FB3455 3D781BB5D8ABE9FCA148C0D612FCB9E33BAD7492CBE37F4ACD720B61B638C141 CF3F06378534263DF7A7016BC0F159120F2B211FC57203652189D3D1F1EB2FBA 73248CEB7DCEF5DCACF8250B1582BDA94E3C2E4565EE0D7450761F0EE8A8B0B9 F62F5D5048E22205C8F61EE206359DFA6318C8F9F67FEA6C0A13A9A4E2F195CF 2E83FD136DF96EAD2F930FEC1461C89B7755EB308D92A51834C0D0868CF34731 4FEBCE3AC5B80C92BC4E3364C61F68C34A146D2901A2E4E2EDD9AAE00D964486 2DD43FAA44163CBDCDD514EC0C9276900A047CB0FB70E21E618AC4B18495D9E2 2D227915E49156E06E3753326CBCFADAE75F6505CB19D1E803BC2A83D5F3B200 E4E8D4BD1CA4A3695FBCD4965AAE58587DC18B677E85E05F80FF870EC8B383C9 21AEF9EF540EB0D7F7F73A56ED422C876FF091DBDCB4B2B7E3A4A25816EB6F8F 719CDE34FA58AA1738EAF33A81CB0F8B4A35804D62EFF869B14C4E275E4899C4 9CF66CAE18DD7E93D4DE571177E8B1E3ADA0C216D2C984B9F2E23E8CEB48228E D76C7CCD00 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.0: CMSY10 003.002 %%Title: CMSY10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSY10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup /UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSY10 def /FontBBox {-29 -960 1116 775 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 13 /circlecopyrt put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A 11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F 10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D 7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B 491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D 9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E 0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD 5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B 5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB 54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD 2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C 16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F 483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA 051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B 8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB 0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD 8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F 153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A 98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B 888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D 052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F 07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D 3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F 849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE 84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA 2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD 2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E 4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB 8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C 4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF 035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B 0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E 2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B 60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E 94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA 343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE 894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F 8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC 4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A 60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E 71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52 9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016 A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44 AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829 F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647 A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822 AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001 EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781 CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628 86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9 AE5400775223E684BFCB 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont TeXDict begin 40258431 52099146 1000 600 600 (history.dvi) @start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 134[41 41 1[41 1[30 30 30 1[43 38 43 4[21 43 38 1[34 43 34 1[38 13[43 10[58 14[38 1[38 5[38 38 48[{}22 74.7198 /CMR9 rf /Fc 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39 2[39 3[39 97[{}13 74.7198 /CMSLTT10 rf /Fd 167[62 3[60 46 2[57 1[62 76 52 1[43 1[62 65 54 1[63 60 67[{}13 83.022 /CMR10 rf /Fe 130[39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 39 1[39 39 39 1[39 2[39 39 39 39 39 1[39 1[39 1[39 2[39 39 39 39 39 39 39 39 39 2[39 39 39 39 39 3[39 1[39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 33[{}77 74.7198 /CMTT9 rf /Ff 134[53 53 72 53 55 39 39 39 53 55 50 55 83 28 2[28 55 50 30 44 55 44 1[50 7[75 4[72 55 73 2[77 75 4[36 75 2[68 3[75 20[28 1[50 29[55 58 11[{}36 99.6264 /CMSL10 rf /Fg 214[35 35 40[{}2 90.9091 /CMSS10 rf /Fh 133[52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 1[52 52 52 52 52 52 52 52 52 1[52 5[52 4[52 52 52 2[52 52 4[52 52 2[52 3[52 22[52 42[{}37 99.6264 /CMTT10 rf /Fi 134[48 48 48 1[48 48 48 48 2[48 48 1[48 2[48 1[48 48 48 48 49[48 48 49[{}17 90.9091 /CMSLTT10 rf /Fj 133[55 65 65 1[65 68 48 48 50 1[68 61 68 102 34 2[34 68 61 37 56 68 55 68 60 9[127 3[68 5[116 74 2[46 96 1[77 81 94 2[93 9[61 61 61 61 61 61 61 2[34 33[68 12[{}41 109.091 /CMBX12 rf /Fk 134[48 48 66 48 51 35 36 36 48 51 45 51 76 25 2[25 51 45 28 40 51 40 51 45 3[25 1[25 40[45 45 6[45 29[51 53 11[{}30 90.9091 /CMSL10 rf /Fl 138[56 1[42 4[56 4[27 1[58 3[54 1[56 97[{}7 90.9091 /CMCSC10 rf /Fm 134[85 85 117 85 90 63 64 66 1[90 81 90 134 45 2[45 90 81 49 74 90 72 90 78 10[122 124 112 3[110 1[126 1[97 2[60 126 127 101 1[124 117 115 122 14[81 81 49[{}38 143.462 /CMBX12 rf /Fn 242[91 13[{}1 90.9091 /CMSY10 rf /Fo 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 2[37 75 67 41 61 75 60 75 65 9[139 102 103 1[75 100 1[92 1[105 128 81 2[50 105 1[85 88 103 97 96 102 6[37 4[67 67 67 67 67 2[37 1[37 44[{}47 119.552 /CMBX12 rf /Fp 129[48 48 48 48 48 48 1[48 48 48 48 48 48 1[48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 1[48 3[48 48 48 48 1[48 48 48 1[48 2[48 48 48 48 48 48 1[48 48 1[48 48 48 48 48 48 7[48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 33[{}72 90.9091 /CMTT10 rf /Fq 131[91 45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 68 5[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35 25 4[45 19[76 51 51 53 11[{}82 90.9091 /CMR10 rf /Fr 134[102 4[75 76 79 2[97 5[54 6[108 94 11[149 6[151 1[116 3[151 152 71[{}13 172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: Letter /setpagedevice where { pop << /PageSize [612 792] >> setpagedevice } { /letter where { pop letter } if } ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fr(GNU)65 b(History)h(Library)p 150 1418 3600 34 v 1920 1515 a Fq(Edition)31 b(8.0,)h(for)e Fp(History)e(Library)h Fq(V)-8 b(ersion)31 b(8.0.)3139 1623 y(No)m(v)m(em)m(b)s(er)g(2018)150 4927 y Fo(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l (ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4413 a Fq(This)44 b(do)s(cumen)m(t)i(describ) s(es)e(the)i(GNU)f(History)h(library)f(\(v)m(ersion)h(8.0,)51 b(30)46 b(No)m(v)m(em)m(b)s(er)g(2018\),)52 b(a)150 4523 y(programming)32 b(to)s(ol)h(that)f(pro)m(vides)g(a)h(consisten)m(t)g (user)e(in)m(terface)j(for)d(recalling)j(lines)e(of)g(previously)150 4633 y(t)m(yp)s(ed)e(input.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 y Fn(\015)g Fq(1988{2016)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f (under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end %%Page: -1 3 TeXDict begin -1 2 bop 3725 -116 a Fq(i)150 299 y Fm(T)-13 b(able)53 b(of)h(Con)l(ten)l(ts)p eop end %%Page: 1 4 TeXDict begin 1 3 bop 3705 -116 a Fq(1)150 299 y Fm(1)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 525 y Fq(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the)f Fl(gnu)h Fq(History)g(Library)e(in)m(teractiv)m(ely)-8 b(,)50 b(from)42 b(a)h(user's)150 634 y(standp)s(oin)m(t.)76 b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76 b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fl(gnu)150 744 y Fq(History)36 b(Library)e(in)h(y)m(our)f(o)m(wn)i(programs,)g (see)f(Chapter)g(2)g([Programming)g(with)g(GNU)h(History],)150 854 y(page)31 b(4.)150 1091 y Fo(1.1)68 b(History)46 b(Expansion)150 1251 y Fq(The)f(History)h(library)e(pro)m(vides)i(a)f (history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g(the)f (history)150 1360 y(expansion)g(pro)m(vided)f(b)m(y)h Fp(csh)p Fq(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h (used)e(to)i(manipulate)f(the)150 1470 y(history)30 b(information.)275 1603 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h (history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150 1712 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150 1822 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g (quic)m(kly)-8 b(.)275 1955 y(History)37 b(expansion)f(tak)m(es)i (place)g(in)e(t)m(w)m(o)i(parts.)59 b(The)36 b(\014rst)g(is)h(to)g (determine)g(whic)m(h)f(line)h(from)150 2064 y(the)42 b(history)f(list)h(should)e(b)s(e)h(used)f(during)g(substitution.)74 b(The)40 b(second)i(is)f(to)h(select)h(p)s(ortions)e(of)150 2174 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f (one.)42 b(The)30 b(line)h(selected)h(from)e(the)h(history)f(is)h (called)h(the)150 2283 y Fk(ev)m(en)m(t)p Fq(,)e(and)c(the)i(p)s (ortions)e(of)i(that)f(line)h(that)g(are)f(acted)i(up)s(on)c(are)j (called)g Fk(w)m(ords)p Fq(.)39 b(V)-8 b(arious)28 b Fk(mo)s(di\014ers)150 2393 y Fq(are)33 b(a)m(v)-5 b(ailable)36 b(to)d(manipulate)h(the)f(selected)h(w)m(ords.)48 b(The)32 b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)150 2503 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g (w)m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m (ord.)150 2612 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m (y)h(the)g(app)s(earance)g(of)g(the)g(history)f(expansion)h(c)m (haracter,)150 2722 y(whic)m(h)30 b(is)h(`)p Fp(!)p Fq(')f(b)m(y)g (default.)275 2855 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m (e)h(quoting)f(con)m(v)m(en)m(tions:)40 b(a)27 b(bac)m(kslash)g(can)f (b)s(e)g(used)f(to)150 2964 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g (handling)g(for)g(the)g(next)g(c)m(haracter;)k(single)d(quotes)g (enclose)g(v)m(erbatim)g(sequences)150 3074 y(of)k(c)m(haracters,)i (and)e(can)g(b)s(e)g(used)f(to)i(inhibit)f(history)g(expansion;)g(and)g (c)m(haracters)i(enclosed)e(within)150 3183 y(double)h(quotes)i(ma)m(y) f(b)s(e)f(sub)5 b(ject)31 b(to)h(history)f(expansion,)g(since)g(bac)m (kslash)g(can)h(escap)s(e)f(the)g(history)150 3293 y(expansion)e(c)m (haracter,)j(but)d(single)h(quotes)g(ma)m(y)h(not,)f(since)g(they)g (are)g(not)f(treated)i(sp)s(ecially)f(within)150 3403 y(double)g(quotes.)150 3599 y Fj(1.1.1)63 b(Ev)m(en)m(t)39 b(Designators)150 3746 y Fq(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g (reference)g(to)h(a)f(command)f(line)h(en)m(try)g(in)g(the)g(history)g (list.)48 b(Unless)33 b(the)150 3855 y(reference)e(is)f(absolute,)i(ev) m(en)m(ts)f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h (in)f(the)h(history)f(list.)150 4011 y Fp(!)432 b Fq(Start)34 b(a)f(history)h(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y) e(a)h(space,)h(tab,)f(the)g(end)f(of)630 4121 y(the)e(line,)g(or)f(`)p Fp(=)p Fq('.)150 4277 y Fp(!)p Fi(n)384 b Fq(Refer)30 b(to)i(command)e(line)g Fk(n)p Fq(.)150 4433 y Fp(!-)p Fi(n)336 b Fq(Refer)30 b(to)i(the)e(command)g Fk(n)g Fq(lines)h(bac)m(k.)150 4589 y Fp(!!)384 b Fq(Refer)30 b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f (for)g(`)p Fp(!-1)p Fq('.)150 4745 y Fp(!)p Fi(string)144 b Fq(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g (the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 4855 y(list)31 b(starting)g(with)f Fk(string)p Fq(.)150 5011 y Fp(!?)p Fi(string)p Fp([?])630 5121 y Fq(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t) g(p)s(osition)g(in)g(the)g(history)630 5230 y(list)32 b(con)m(taining)i Fk(string)p Fq(.)45 b(The)31 b(trailing)i(`)p Fp(?)p Fq(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fk(string)39 b Fq(is)32 b(follo)m(w)m(ed)630 5340 y(immediately)g(b)m(y)e(a)h (newline.)p eop end %%Page: 2 5 TeXDict begin 2 4 bop 150 -116 a Fq(Chapter)30 b(1:)41 b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(2)150 299 y Fp(^)p Fi(string1)p Fp(^)p Fi(string2)p Fp(^)630 408 y Fq(Quic)m(k)32 b(Substitution.)44 b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g Fk(string1)40 b Fq(with)31 b Fk(string2)p Fq(.)630 518 y(Equiv)-5 b(alen)m(t)31 b(to)g Fp(!!:s/)p Fi(string1)p Fp(/)p Fi(string2)p Fp(/)p Fq(.)150 674 y Fp(!#)384 b Fq(The)30 b(en)m(tire)h(command)f(line)h(t)m (yp)s(ed)f(so)h(far.)150 869 y Fj(1.1.2)63 b(W)-10 b(ord)41 b(Designators)150 1016 y Fq(W)-8 b(ord)27 b(designators)h(are)g(used)e (to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27 b(`)p Fp(:)p Fq(')g(separates)h(the)f(ev)m(en)m(t)150 1125 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g (b)s(egins)150 1235 y(with)30 b(a)g(`)p Fp(^)p Fq(',)g(`)p Fp($)p Fq(',)g(`)p Fp(*)p Fq(',)h(`)p Fp(-)p Fq(',)f(or)g(`)p Fp(\045)p Fq('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i (the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150 1345 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).) 41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f (line)g(separated)h(b)m(y)150 1454 y(single)h(spaces.)275 1587 y(F)-8 b(or)31 b(example,)150 1742 y Fp(!!)384 b Fq(designates)37 b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 1852 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 2007 y Fp(!!:$)288 b Fq(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the) h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 2117 y(to)31 b Fp(!$)p Fq(.)150 2273 y Fp(!fi:2)240 b Fq(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f (recen)m(t)i(command)e(starting)h(with)f(the)630 2382 y(letters)j Fp(fi)p Fq(.)275 2538 y(Here)e(are)h(the)g(w)m(ord)f (designators:)150 2693 y Fp(0)g(\(zero\))114 b Fq(The)30 b Fp(0)p Fq(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h (this)e(is)g(the)h(command)f(w)m(ord.)150 2849 y Fi(n)432 b Fq(The)30 b Fk(n)p Fq(th)g(w)m(ord.)150 3004 y Fp(^)432 b Fq(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150 3160 y Fp($)432 b Fq(The)30 b(last)h(argumen)m(t.)150 3315 y Fp(\045)432 b Fq(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h (most)g(recen)m(t)g(`)p Fp(?)p Fi(string)p Fp(?)p Fq(')e(searc)m(h.)150 3471 y Fi(x)p Fp(-)p Fi(y)336 b Fq(A)30 b(range)h(of)g(w)m(ords;)f(`)p Fp(-)p Fi(y)p Fq(')g(abbreviates)h(`)p Fp(0-)p Fi(y)p Fq('.)150 3626 y Fp(*)432 b Fq(All)28 b(of)g(the)g(w)m(ords,)g(except)h (the)e Fp(0)p Fq(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p Fp(1-$)p Fq('.)39 b(It)28 b(is)g(not)g(an)f(error)630 3736 y(to)j(use)g(`)p Fp(*)p Fq(')f(if)h(there)g(is)g(just)f(one)h(w)m (ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h (returned)e(in)630 3845 y(that)j(case.)150 4001 y Fi(x)p Fp(*)384 b Fq(Abbreviates)31 b(`)p Fi(x)p Fp(-$)p Fq(')150 4156 y Fi(x)p Fp(-)384 b Fq(Abbreviates)31 b(`)p Fi(x)p Fp(-$)p Fq(')f(lik)m(e)h(`)p Fi(x)p Fp(*)p Fq(',)g(but)f(omits)h(the)f (last)h(w)m(ord.)275 4312 y(If)i(a)h(w)m(ord)g(designator)g(is)g (supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h(the)e (previous)f(command)150 4422 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150 4617 y Fj(1.1.3)63 b(Mo)s(di\014ers)150 4764 y Fq(After)29 b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g(add)f(a)h (sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)150 4873 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p Fp(:)p Fq('.)150 5029 y Fp(h)432 b Fq(Remo)m(v)m(e)32 b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the) h(head.)150 5184 y Fp(t)432 b Fq(Remo)m(v)m(e)32 b(all)f(leading)h (pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 5340 y Fp(r)432 b Fq(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g (the)h(form)f(`)p Fp(.)p Fi(suffix)p Fq(',)f(lea)m(ving)j(the)f (basename.)p eop end %%Page: 3 6 TeXDict begin 3 5 bop 150 -116 a Fq(Chapter)30 b(1:)41 b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(3)150 299 y Fp(e)432 b Fq(Remo)m(v)m(e)32 b(all)f(but)f(the)h(trailing)g (su\016x.)150 458 y Fp(p)432 b Fq(Prin)m(t)30 b(the)h(new)f(command)g (but)g(do)g(not)g(execute)i(it.)150 618 y Fp(s/)p Fi(old)p Fp(/)p Fi(new)p Fp(/)630 727 y Fq(Substitute)g Fk(new)40 b Fq(for)32 b(the)h(\014rst)f(o)s(ccurrence)h(of)f Fk(old)37 b Fq(in)32 b(the)h(ev)m(en)m(t)h(line.)48 b(An)m(y)32 b(delimiter)630 837 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p Fp(/)p Fq('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s(e)e(quoted)h(in)f Fk(old)29 b Fq(and)24 b Fk(new)32 b Fq(with)25 b(a)630 946 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Fp(&)p Fq(')g(app)s(ears)g(in)f Fk(new)p Fq(,)i(it)f(is)h(replaced)f(b)m(y)g Fk(old)p Fq(.)40 b(A)28 b(single)h(bac)m(kslash)630 1056 y(will)35 b(quote)g(the)g(`)p Fp(&)p Fq('.)54 b(The)34 b(\014nal)g(delimiter)i(is)e(optional)i(if)f(it)g(is)f(the)h(last)h(c)m (haracter)g(on)630 1166 y(the)31 b(input)e(line.)150 1325 y Fp(&)432 b Fq(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 1484 y Fp(g)150 1594 y(a)432 b Fq(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f (applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 b(Used)39 b(in)f(conjunction)630 1704 y(with)30 b(`)p Fp(s)p Fq(',)h(as)f(in)h Fp(gs/)p Fi(old)p Fp(/)p Fi(new)p Fp(/)p Fq(,)c(or)j(with)h(`)p Fp(&)p Fq('.)150 1863 y Fp(G)432 b Fq(Apply)30 b(the)g(follo)m(wing)i(`)p Fp(s)p Fq(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g(the)g(ev)m (en)m(t.)p eop end %%Page: 4 7 TeXDict begin 4 6 bop 3705 -116 a Fq(4)150 299 y Fm(2)80 b(Programming)54 b(with)f(GNU)h(History)150 544 y Fq(This)41 b(c)m(hapter)i(describ)s(es)e(ho)m(w)h(to)h(in)m(terface)g(programs)f (that)g(y)m(ou)h(write)f(with)f(the)i Fl(gnu)e Fq(History)150 654 y(Library)-8 b(.)48 b(It)33 b(should)e(b)s(e)i(considered)f(a)h (tec)m(hnical)i(guide.)48 b(F)-8 b(or)34 b(information)f(on)g(the)g(in) m(teractiv)m(e)i(use)150 763 y(of)c Fl(gnu)f Fq(History)-8 b(,)31 b(see)g(Chapter)f(1)h([Using)g(History)g(In)m(teractiv)m(ely],)i (page)e(1.)150 1010 y Fo(2.1)68 b(In)l(tro)t(duction)45 b(to)g(History)150 1169 y Fq(Man)m(y)31 b(programs)f(read)g(input)g (from)f(the)i(user)f(a)g(line)h(at)g(a)g(time.)41 b(The)30 b Fl(gnu)g Fq(History)h(library)f(is)g(able)150 1279 y(to)f(k)m(eep)h(trac)m(k)g(of)f(those)g(lines,)h(asso)s(ciate)g (arbitrary)f(data)g(with)g(eac)m(h)h(line,)f(and)g(utilize)h (information)150 1388 y(from)g(previous)g(lines)g(in)g(comp)s(osing)h (new)f(ones.)275 1527 y(The)d(programmer)g(using)g(the)g(History)h (library)f(has)h(a)m(v)-5 b(ailable)29 b(functions)e(for)h(remem)m(b)s (ering)f(lines)150 1636 y(on)21 b(a)g(history)f(list,)k(asso)s(ciating) e(arbitrary)e(data)i(with)e(a)h(line,)i(remo)m(ving)f(lines)f(from)f (the)h(list,)i(searc)m(hing)150 1746 y(through)35 b(the)g(list)h(for)f (a)h(line)f(con)m(taining)i(an)e(arbitrary)g(text)h(string,)h(and)e (referencing)g(an)m(y)h(line)f(in)150 1855 y(the)c(list)g(directly)-8 b(.)43 b(In)30 b(addition,)h(a)g(history)g Fk(expansion)g Fq(function)f(is)h(a)m(v)-5 b(ailable)33 b(whic)m(h)d(pro)m(vides)h (for)g(a)150 1965 y(consisten)m(t)h(user)d(in)m(terface)j(across)f (di\013eren)m(t)g(programs.)275 2103 y(The)c(user)g(using)g(programs)h (written)g(with)g(the)g(History)g(library)g(has)f(the)h(b)s(ene\014t)f (of)h(a)h(consisten)m(t)150 2213 y(user)38 b(in)m(terface)j(with)e(a)g (set)g(of)h(w)m(ell-kno)m(wn)f(commands)g(for)g(manipulating)g(the)g (text)h(of)f(previous)150 2323 y(lines)28 b(and)f(using)g(that)h(text)g (in)g(new)f(commands.)39 b(The)27 b(basic)h(history)g(manipulation)f (commands)h(are)150 2432 y(similar)j(to)g(the)f(history)h(substitution) f(pro)m(vided)g(b)m(y)g Fp(csh)p Fq(.)275 2570 y(If)f(the)g(programmer) g(desires,)h(he)g(can)f(use)h(the)f(Readline)i(library)-8 b(,)30 b(whic)m(h)f(includes)g(some)h(history)150 2680 y(manipulation)h(b)m(y)f(default,)h(and)e(has)i(the)f(added)g(adv)-5 b(an)m(tage)32 b(of)f(command)f(line)g(editing.)275 2818 y(Before)39 b(declaring)f(an)m(y)h(functions)e(using)h(an)m(y)g (functionalit)m(y)i(the)e(History)h(library)e(pro)m(vides)h(in)150 2928 y(other)29 b(co)s(de,)g(an)g(application)h(writer)f(should)e (include)i(the)g(\014le)f Fp()23 b Fq(in)29 b(an)m(y)g(\014le)150 3037 y(that)c(uses)e(the)h(History)h (library's)e(features.)39 b(It)24 b(supplies)f(extern)h(declarations)i (for)d(all)i(of)f(the)g(library's)150 3147 y(public)30 b(functions)g(and)f(v)-5 b(ariables,)32 b(and)d(declares)j(all)f(of)f (the)h(public)f(data)h(structures.)150 3393 y Fo(2.2)68 b(History)46 b(Storage)150 3553 y Fq(The)30 b(history)g(list)h(is)g(an) f(arra)m(y)h(of)f(history)h(en)m(tries.)41 b(A)31 b(history)f(en)m(try) h(is)f(declared)h(as)f(follo)m(ws:)390 3691 y Fp(typedef)46 b(void)g(*histdata_t;)390 3910 y(typedef)g(struct)g(_hist_entry)f({)485 4020 y(char)i(*line;)485 4129 y(char)g(*timestamp;)485 4239 y(histdata_t)e(data;)390 4349 y(})i(HIST_ENTRY;)275 4487 y Fq(The)29 b(history)i(list)g(itself)g(migh)m(t)g(therefore)g(b)s (e)f(declared)g(as)390 4625 y Fp(HIST_ENTRY)45 b(**the_history_list;) 275 4763 y Fq(The)29 b(state)j(of)f(the)f(History)h(library)f(is)h (encapsulated)g(in)m(to)g(a)g(single)g(structure:)390 4902 y Fp(/*)438 5011 y(*)47 b(A)h(structure)d(used)i(to)g(pass)f (around)g(the)h(current)f(state)h(of)g(the)g(history.)438 5121 y(*/)390 5230 y(typedef)f(struct)g(_hist_state)f({)485 5340 y(HIST_ENTRY)g(**entries;)g(/*)j(Pointer)d(to)j(the)f(entries)e (themselves.)g(*/)p eop end %%Page: 5 8 TeXDict begin 5 7 bop 150 -116 a Fq(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1780 b(5)485 299 y Fp(int)47 b(offset;)523 b(/*)48 b(The)f(location)e(pointer)h (within)g(this)h(array.)f(*/)485 408 y(int)h(length;)523 b(/*)48 b(Number)e(of)h(elements)e(within)i(this)f(array.)g(*/)485 518 y(int)h(size;)619 b(/*)48 b(Number)e(of)h(slots)f(allocated)g(to)h (this)f(array.)g(*/)485 628 y(int)h(flags;)390 737 y(})g (HISTORY_STATE;)275 890 y Fq(If)29 b(the)i(\015ags)g(mem)m(b)s(er)e (includes)h Fp(HS_STIFLED)p Fq(,)e(the)j(history)f(has)g(b)s(een)g (sti\015ed.)150 1157 y Fo(2.3)68 b(History)46 b(F)-11 b(unctions)150 1317 y Fq(This)33 b(section)j(describ)s(es)d(the)i (calling)g(sequence)g(for)f(the)g(v)-5 b(arious)34 b(functions)g(exp)s (orted)g(b)m(y)g(the)g Fl(gnu)150 1426 y Fq(History)d(library)-8 b(.)150 1644 y Fj(2.3.1)63 b(Initializing)40 b(History)i(and)f(State)f (Managemen)m(t)150 1791 y Fq(This)21 b(section)i(describ)s(es)f (functions)f(used)g(to)i(initialize)h(and)e(manage)h(the)f(state)h(of)g (the)f(History)g(library)150 1900 y(when)29 b(y)m(ou)i(w)m(an)m(t)g(to) g(use)f(the)h(history)f(functions)g(in)g(y)m(our)h(program.)3350 2120 y([F)-8 b(unction])-3599 b Fh(void)54 b(using_history)49 b Fg(\()p Ff(v)m(oid)p Fg(\))390 2230 y Fq(Begin)41 b(a)f(session)g(in) g(whic)m(h)f(the)h(history)g(functions)f(migh)m(t)i(b)s(e)e(used.)69 b(This)39 b(initializes)j(the)390 2339 y(in)m(teractiv)m(e)33 b(v)-5 b(ariables.)3350 2560 y([F)d(unction])-3599 b Fh(HISTORY_STATE)56 b(*)d(history_get_history_st)q(ate)f Fg(\()p Ff(v)m(oid)p Fg(\))390 2669 y Fq(Return)30 b(a)g(structure)g (describing)g(the)h(curren)m(t)f(state)i(of)e(the)h(input)e(history)-8 b(.)3350 2890 y([F)g(unction])-3599 b Fh(void)54 b (history_set_history_stat)q(e)e Fg(\()p Ff(HISTOR)-8 b(Y)p 2262 2890 30 5 v 44 w(ST)g(A)g(TE)32 b(*state)p Fg(\))390 2999 y Fq(Set)f(the)f(state)i(of)e(the)h(history)f(list)h (according)h(to)f Fk(state)p Fq(.)150 3216 y Fj(2.3.2)63 b(History)41 b(List)g(Managemen)m(t)150 3363 y Fq(These)32 b(functions)f(manage)i(individual)f(en)m(tries)g(on)g(the)g(history)g (list,)h(or)f(set)h(parameters)f(managing)150 3473 y(the)f(list)g (itself.)3350 3693 y([F)-8 b(unction])-3599 b Fh(void)54 b(add_history)48 b Fg(\()p Ff(const)34 b(c)m(har)g(*string)p Fg(\))390 3803 y Fq(Place)j Fk(string)44 b Fq(at)37 b(the)g(end)e(of)i (the)f(history)g(list.)59 b(The)36 b(asso)s(ciated)h(data)g(\014eld)f (\(if)g(an)m(y\))h(is)f(set)390 3912 y(to)44 b Fp(NULL)p Fq(.)79 b(If)44 b(the)f(maxim)m(um)h(n)m(um)m(b)s(er)e(of)i(history)f (en)m(tries)i(has)e(b)s(een)g(set)h(using)f Fp(stifle_)390 4022 y(history\(\))p Fq(,)28 b(and)h(the)h(new)f(n)m(um)m(b)s(er)g(of)h (history)g(en)m(tries)h(w)m(ould)e(exceed)i(that)g(maxim)m(um,)f(the) 390 4131 y(oldest)h(history)f(en)m(try)h(is)f(remo)m(v)m(ed.)3350 4352 y([F)-8 b(unction])-3599 b Fh(void)54 b(add_history_time)c Fg(\()p Ff(const)34 b(c)m(har)g(*string)p Fg(\))390 4461 y Fq(Change)c(the)h(time)g(stamp)f(asso)s(ciated)i(with)e(the)h(most)f (recen)m(t)i(history)e(en)m(try)h(to)g Fk(string)p Fq(.)3350 4681 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(remove_history)d Fg(\()p Ff(in)m(t)33 b(whic)m(h)p Fg(\))390 4791 y Fq(Remo)m(v)m(e)47 b(history)f(en)m(try)f(at)i(o\013set)f Fk(whic)m(h)f Fq(from)g(the)h(history)-8 b(.)86 b(The)45 b(remo)m(v)m(ed)i(elemen)m (t)g(is)390 4901 y(returned)29 b(so)i(y)m(ou)g(can)f(free)h(the)f (line,)h(data,)h(and)d(con)m(taining)j(structure.)3350 5121 y([F)-8 b(unction])-3599 b Fh(histdata_t)55 b(free_history_entry)c Fg(\()p Ff(HIST)p 1992 5121 V 44 w(ENTR)-8 b(Y)33 b(*histen)m(t)p Fg(\))390 5230 y Fq(F)-8 b(ree)29 b(the)f(history)g(en)m(try)g Fk(histen)m(t)j Fq(and)c(an)m(y)i(history)e(library)h(priv)-5 b(ate)28 b(data)h(asso)s(ciated)g(with)f(it.)390 5340 y(Returns)h(the)i(application-sp)s(eci\014c)h(data)f(so)g(the)f(caller) i(can)e(disp)s(ose)g(of)h(it.)p eop end %%Page: 6 9 TeXDict begin 6 8 bop 150 -116 a Fq(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1780 b(6)3350 299 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e (replace_history_entry)f Fg(\()p Ff(in)m(t)33 b(whic)m(h,)h(const)g(c)m (har)g(*line,)565 408 y(histdata)p 927 408 30 5 v 44 w(t)f(data)p Fg(\))390 518 y Fq(Mak)m(e)c(the)f(history)f(en)m(try)h (at)h(o\013set)f Fk(whic)m(h)g Fq(ha)m(v)m(e)g Fk(line)33 b Fq(and)27 b Fk(data)p Fq(.)41 b(This)27 b(returns)f(the)i(old)g(en)m (try)390 628 y(so)37 b(the)h(caller)g(can)f(disp)s(ose)g(of)g(an)m(y)g (application-sp)s(eci\014c)i(data.)61 b(In)37 b(the)g(case)h(of)f(an)g (in)m(v)-5 b(alid)390 737 y Fk(whic)m(h)p Fq(,)30 b(a)h Fp(NULL)e Fq(p)s(oin)m(ter)i(is)f(returned.)3350 941 y([F)-8 b(unction])-3599 b Fh(void)54 b(clear_history)49 b Fg(\()p Ff(v)m(oid)p Fg(\))390 1051 y Fq(Clear)31 b(the)f(history)h (list)g(b)m(y)f(deleting)h(all)h(the)e(en)m(tries.)3350 1254 y([F)-8 b(unction])-3599 b Fh(void)54 b(stifle_history)49 b Fg(\()p Ff(in)m(t)34 b(max)p Fg(\))390 1364 y Fq(Sti\015e)j(the)f (history)h(list,)i(remem)m(b)s(ering)d(only)h(the)f(last)i Fk(max)43 b Fq(en)m(tries.)60 b(The)36 b(history)g(list)i(will)390 1473 y(con)m(tain)32 b(only)e Fk(max)37 b Fq(en)m(tries)31 b(at)g(a)g(time.)3350 1677 y([F)-8 b(unction])-3599 b Fh(int)53 b(unstifle_history)e Fg(\()p Ff(v)m(oid)p Fg(\))390 1787 y Fq(Stop)27 b(sti\015ing)h(the)f(history)-8 b(.)40 b(This)27 b(returns)f(the)h(previously-set)h(maxim)m(um)f(n)m(um)m(b)s (er)f(of)i(history)390 1896 y(en)m(tries)g(\(as)f(set)g(b)m(y)g Fp(stifle_history\(\))p Fq(\).)35 b(The)27 b(v)-5 b(alue)27 b(is)g(p)s(ositiv)m(e)g(if)g(the)g(history)g(w)m(as)g(sti\015ed,)390 2006 y(negativ)m(e)33 b(if)d(it)h(w)m(asn't.)3350 2210 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_is_stifled)e Fg(\()p Ff(v)m(oid)p Fg(\))390 2319 y Fq(Returns)29 b(non-zero)i(if)g (the)f(history)h(is)f(sti\015ed,)g(zero)i(if)e(it)h(is)f(not.)150 2528 y Fj(2.3.3)63 b(Information)42 b(Ab)s(out)f(the)g(History)g(List) 150 2675 y Fq(These)30 b(functions)g(return)f(information)i(ab)s(out)f (the)h(en)m(tire)g(history)f(list)h(or)g(individual)e(list)i(en)m (tries.)3350 2879 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(**)e(history_list)c Fg(\()p Ff(v)m(oid)p Fg(\))390 2989 y Fq(Return)30 b(a)h Fp(NULL)e Fq(terminated)i(arra)m(y)g(of)f Fp(HIST_ENTRY)e(*)i Fq(whic)m(h)g(is)h(the)g(curren)m(t)f(input)f (history)-8 b(.)390 3098 y(Elemen)m(t)31 b(0)g(of)g(this)f(list)h(is)f (the)h(b)s(eginning)f(of)g(time.)42 b(If)29 b(there)i(is)f(no)h (history)-8 b(,)31 b(return)e Fp(NULL)p Fq(.)3350 3302 y([F)-8 b(unction])-3599 b Fh(int)53 b(where_history)d Fg(\()p Ff(v)m(oid)p Fg(\))390 3411 y Fq(Returns)29 b(the)i(o\013set)g (of)g(the)g(curren)m(t)f(history)g(elemen)m(t.)3350 3615 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(current_history)d Fg(\()p Ff(v)m(oid)p Fg(\))390 3725 y Fq(Return)24 b(the)h(history)g (en)m(try)g(at)h(the)f(curren)m(t)f(p)s(osition,)j(as)e(determined)f(b) m(y)h Fp(where_history\(\))p Fq(.)390 3834 y(If)30 b(there)g(is)h(no)f (en)m(try)h(there,)g(return)e(a)i Fp(NULL)e Fq(p)s(oin)m(ter.)3350 4038 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(history_get)c Fg(\()p Ff(in)m(t)33 b(o\013set)p Fg(\))390 4148 y Fq(Return)e(the)g (history)h(en)m(try)g(at)g(p)s(osition)g Fk(o\013set)p Fq(.)45 b(The)31 b(range)h(of)g(v)-5 b(alid)31 b(v)-5 b(alues)32 b(of)g Fk(o\013set)j Fq(starts)390 4257 y(at)d Fp(history_base)c Fq(and)i(ends)h(at)g Fk(history)p 1885 4257 28 4 v 40 w(length)h Fq(-)f(1)h(\(see)g(Section)g(2.4)g([History)g (V)-8 b(ariables],)390 4367 y(page)27 b(9\).)40 b(If)26 b(there)g(is)g(no)g(en)m(try)h(there,)g(or)f(if)g Fk(o\013set)j Fq(is)e(outside)f(the)g(v)-5 b(alid)27 b(range,)g(return)f(a)g Fp(NULL)390 4476 y Fq(p)s(oin)m(ter.)3350 4680 y([F)-8 b(unction])-3599 b Fh(time_t)54 b(history_get_time)c Fg(\()p Ff(HIST)p 1678 4680 30 5 v 45 w(ENTR)-8 b(Y)32 b(*en)m(try)p Fg(\))390 4790 y Fq(Return)g(the)i(time)g(stamp)f(asso)s (ciated)h(with)f(the)g(history)g(en)m(try)h Fk(en)m(try)p Fq(.)49 b(If)33 b(the)g(timestamp)h(is)390 4899 y(missing)c(or)h(in)m (v)-5 b(alid,)31 b(return)e(0.)3350 5103 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_total_bytes)e Fg(\()p Ff(v)m(oid)p Fg(\))390 5213 y Fq(Return)27 b(the)h(n)m(um)m(b)s(er)e(of)i(b)m(ytes)g (that)g(the)g(primary)e(history)i(en)m(tries)g(are)g(using.)39 b(This)27 b(function)390 5322 y(returns)i(the)i(sum)e(of)i(the)f (lengths)h(of)f(all)i(the)e(lines)h(in)f(the)g(history)-8 b(.)p eop end %%Page: 7 10 TeXDict begin 7 9 bop 150 -116 a Fq(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1780 b(7)150 299 y Fj(2.3.4)63 b(Mo)m(ving)41 b(Around)h(the)f(History)g(List)150 446 y Fq(These)30 b(functions)g(allo)m(w)i(the)e(curren)m(t)h(index)f (in)m(to)h(the)f(history)h(list)g(to)g(b)s(e)f(set)h(or)f(c)m(hanged.) 3350 624 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_set_pos)d Fg(\()p Ff(in)m(t)34 b(p)s(os)p Fg(\))390 734 y Fq(Set)j(the)g(curren)m (t)f(history)g(o\013set)i(to)f Fk(p)s(os)p Fq(,)h(an)f(absolute)g (index)f(in)m(to)i(the)e(list.)60 b(Returns)36 b(1)h(on)390 844 y(success,)31 b(0)g(if)f Fk(p)s(os)j Fq(is)e(less)f(than)h(zero)g (or)f(greater)i(than)e(the)g(n)m(um)m(b)s(er)f(of)i(history)f(en)m (tries.)3350 1022 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(previous_history)d Fg(\()p Ff(v)m(oid)p Fg(\))390 1132 y Fq(Bac)m(k)30 b(up)e(the)h(curren)m(t)g(history)f(o\013set)i(to) g(the)f(previous)f(history)h(en)m(try)-8 b(,)30 b(and)e(return)g(a)h(p) s(oin)m(ter)390 1241 y(to)i(that)g(en)m(try)-8 b(.)41 b(If)30 b(there)h(is)f(no)h(previous)f(en)m(try)-8 b(,)31 b(return)e(a)i Fp(NULL)e Fq(p)s(oin)m(ter.)3350 1420 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(next_history)c Fg(\()p Ff(v)m(oid)p Fg(\))390 1530 y Fq(If)20 b(the)h(curren)m(t)f (history)h(o\013set)g(refers)g(to)g(a)g(v)-5 b(alid)21 b(history)f(en)m(try)-8 b(,)24 b(incremen)m(t)d(the)g(curren)m(t)f (history)390 1639 y(o\013set.)41 b(If)27 b(the)g(p)s(ossibly-incremen)m (ted)g(history)h(o\013set)g(refers)f(to)h(a)f(v)-5 b(alid)28 b(history)f(en)m(try)-8 b(,)29 b(return)390 1749 y(a)i(p)s(oin)m(ter)f (to)h(that)g(en)m(try;)g(otherwise,)g(return)e(a)i Fp(BNULL)e Fq(p)s(oin)m(ter.)150 1944 y Fj(2.3.5)63 b(Searc)m(hing)40 b(the)h(History)h(List)150 2091 y Fq(These)36 b(functions)g(allo)m(w)i (searc)m(hing)f(of)f(the)h(history)f(list)h(for)f(en)m(tries)h(con)m (taining)h(a)f(sp)s(eci\014c)f(string.)150 2201 y(Searc)m(hing)28 b(ma)m(y)g(b)s(e)f(p)s(erformed)f(b)s(oth)h(forw)m(ard)f(and)h(bac)m (kw)m(ard)h(from)f(the)h(curren)m(t)f(history)h(p)s(osition.)150 2310 y(The)j(searc)m(h)h(ma)m(y)g(b)s(e)e Fk(anc)m(hored)p Fq(,)i(meaning)g(that)g(the)f(string)h(m)m(ust)f(matc)m(h)h(at)g(the)g (b)s(eginning)e(of)i(the)150 2420 y(history)e(en)m(try)-8 b(.)3350 2599 y([F)g(unction])-3599 b Fh(int)53 b(history_search)d Fg(\()p Ff(const)34 b(c)m(har)g(*string,)e(in)m(t)i(direction)p Fg(\))390 2708 y Fq(Searc)m(h)29 b(the)g(history)g(for)g Fk(string)p Fq(,)g(starting)h(at)f(the)g(curren)m(t)g(history)g (o\013set.)41 b(If)28 b Fk(direction)i Fq(is)f(less)390 2818 y(than)40 b(0,)j(then)c(the)h(searc)m(h)h(is)f(through)f(previous) h(en)m(tries,)j(otherwise)d(through)g(subsequen)m(t)390 2927 y(en)m(tries.)i(If)30 b Fk(string)38 b Fq(is)30 b(found,)g(then)g(the)g(curren)m(t)h(history)f(index)g(is)g(set)h(to)h (that)f(history)f(en)m(try)-8 b(,)390 3037 y(and)33 b(the)g(v)-5 b(alue)34 b(returned)e(is)i(the)g(o\013set)g(in)f(the)h(line)f(of)h (the)g(en)m(try)f(where)g Fk(string)41 b Fq(w)m(as)34 b(found.)390 3147 y(Otherwise,)c(nothing)h(is)f(c)m(hanged,)h(and)f(a)h (-1)g(is)f(returned.)3350 3325 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_search_prefix)f Fg(\()p Ff(const)34 b(c)m(har)g(*string,)f(in)m(t)g(direction)p Fg(\))390 3435 y Fq(Searc)m(h)41 b(the)g(history)f(for)g Fk(string)p Fq(,)k(starting)d(at)g(the)g(curren)m(t)f(history)h(o\013set.)72 b(The)40 b(searc)m(h)h(is)390 3544 y(anc)m(hored:)f(matc)m(hing)31 b(lines)f(m)m(ust)f(b)s(egin)g(with)g Fk(string)p Fq(.)40 b(If)29 b Fk(direction)h Fq(is)g(less)f(than)g(0,)i(then)e(the)390 3654 y(searc)m(h)j(is)f(through)g(previous)g(en)m(tries,)h(otherwise)g (through)e(subsequen)m(t)h(en)m(tries.)44 b(If)31 b Fk(string)39 b Fq(is)390 3764 y(found,)33 b(then)f(the)h(curren)m(t)g(history)g (index)g(is)g(set)g(to)h(that)g(en)m(try)-8 b(,)34 b(and)f(the)g (return)f(v)-5 b(alue)33 b(is)g(0.)390 3873 y(Otherwise,)d(nothing)h (is)f(c)m(hanged,)h(and)f(a)h(-1)g(is)f(returned.)3350 4052 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_search_pos)e Fg(\()p Ff(const)34 b(c)m(har)g(*string,)f(in)m(t)g(direction,)g(in)m (t)g(p)s(os)p Fg(\))390 4161 y Fq(Searc)m(h)h(for)g Fk(string)42 b Fq(in)34 b(the)h(history)f(list,)i(starting)f(at)g Fk(p)s(os)p Fq(,)g(an)f(absolute)h(index)e(in)m(to)j(the)e(list.)390 4271 y(If)i Fk(direction)g Fq(is)g(negativ)m(e,)k(the)c(searc)m(h)h (pro)s(ceeds)f(bac)m(kw)m(ard)g(from)g Fk(p)s(os)p Fq(,)h(otherwise)f (forw)m(ard.)390 4381 y(Returns)43 b(the)h(absolute)h(index)f(of)g(the) g(history)g(elemen)m(t)h(where)f Fk(string)52 b Fq(w)m(as)44 b(found,)i(or)e(-1)390 4490 y(otherwise.)150 4686 y Fj(2.3.6)63 b(Managing)41 b(the)g(History)h(File)150 4833 y Fq(The)26 b(History)h(library)f(can)h(read)g(the)f(history)h(from)f(and)g(write)h (it)g(to)g(a)g(\014le.)40 b(This)26 b(section)h(do)s(cumen)m(ts)150 4942 y(the)k(functions)e(for)i(managing)g(a)g(history)f(\014le.)3350 5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(read_history)c Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename)p Fg(\))390 5230 y Fq(Add)29 b(the)h(con)m(ten)m(ts)h(of)f Fk(\014lename)k Fq(to)d(the)f(history)f(list,)i(a)f(line)g(at)g(a)g(time.)41 b(If)29 b Fk(\014lename)35 b Fq(is)30 b Fp(NULL)p Fq(,)390 5340 y(then)g(read)g(from)g Fp(~/.history)p Fq(.)38 b(Returns)30 b(0)g(if)h(successful,)f(or)g Fp(errno)f Fq(if)i(not.)p eop end %%Page: 8 11 TeXDict begin 8 10 bop 150 -116 a Fq(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1780 b(8)3350 299 y([F)-8 b(unction])-3599 b Fh(int)53 b(read_history_range)e Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename,)g(in)m(t)f(from,)g(in)m(t) g(to)p Fg(\))390 408 y Fq(Read)28 b(a)g(range)h(of)f(lines)g(from)f Fk(\014lename)p Fq(,)i(adding)e(them)h(to)h(the)f(history)g(list.)40 b(Start)28 b(reading)g(at)390 518 y(line)f Fk(from)e Fq(and)h(end)f(at)i Fk(to)p Fq(.)41 b(If)25 b Fk(from)h Fq(is)g(zero,)i(start)f(at)g(the)f(b)s(eginning.)39 b(If)26 b Fk(to)31 b Fq(is)c(less)f(than)g Fk(from)p Fq(,)390 628 y(then)33 b(read)g(un)m(til)g(the)g(end)g(of)g(the)g(\014le.)49 b(If)33 b Fk(\014lename)38 b Fq(is)33 b Fp(NULL)p Fq(,)g(then)g(read)g (from)f Fp(~/.history)p Fq(.)390 737 y(Returns)d(0)i(if)g(successful,)f (or)g Fp(errno)f Fq(if)i(not.)3350 898 y([F)-8 b(unction])-3599 b Fh(int)53 b(write_history)d Fg(\()p Ff(const)34 b(c)m(har)g (*\014lename)p Fg(\))390 1007 y Fq(W)-8 b(rite)36 b(the)e(curren)m(t)h (history)f(to)h Fk(\014lename)p Fq(,)h(o)m(v)m(erwriting)g Fk(\014lename)k Fq(if)34 b(necessary)-8 b(.)54 b(If)34 b Fk(\014lename)390 1117 y Fq(is)27 b Fp(NULL)p Fq(,)g(then)g(write)g (the)h(history)f(list)g(to)h Fp(~/.history)p Fq(.)37 b(Returns)26 b(0)i(on)f(success,)h(or)f Fp(errno)f Fq(on)390 1227 y(a)31 b(read)f(or)g(write)h(error.)3350 1387 y([F)-8 b(unction])-3599 b Fh(int)53 b(append_history)d Fg(\()p Ff(in)m(t)33 b(nelemen)m(ts,)i(const)f(c)m(har)f(*\014lename)p Fg(\))390 1497 y Fq(App)s(end)g(the)i(last)g Fk(nelemen)m(ts)k Fq(of)c(the)g(history)f(list)i(to)f Fk(\014lename)p Fq(.)54 b(If)34 b Fk(\014lename)40 b Fq(is)34 b Fp(NULL)p Fq(,)h(then)390 1606 y(app)s(end)29 b(to)i Fp(~/.history)p Fq(.)38 b(Returns)29 b(0)i(on)f(success,)h(or)f Fp(errno)f Fq(on)i(a)f(read)h(or)f(write)h (error.)3350 1767 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_truncate_file)f Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename,) f(in)m(t)h(nlines)p Fg(\))390 1876 y Fq(T)-8 b(runcate)39 b(the)f(history)h(\014le)f Fk(\014lename)p Fq(,)j(lea)m(ving)f(only)f (the)g(last)g Fk(nlines)j Fq(lines.)65 b(If)38 b Fk(\014lename)44 b Fq(is)390 1986 y Fp(NULL)p Fq(,)29 b(then)i Fp(~/.history)c Fq(is)k(truncated.)40 b(Returns)30 b(0)g(on)h(success,)g(or)f Fp(errno)f Fq(on)h(failure.)150 2169 y Fj(2.3.7)63 b(History)41 b(Expansion)150 2316 y Fq(These)30 b(functions)g(implemen)m(t)h (history)f(expansion.)3350 2477 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_expand)d Fg(\()p Ff(c)m(har)34 b(*string,)f(c)m(har)h(**output)p Fg(\))390 2586 y Fq(Expand)f Fk(string)p Fq(,)j(placing)f(the)f(result)h(in)m(to)g Fk(output)p Fq(,)g(a)g(p)s(oin)m(ter)f(to)h(a)g(string)f(\(see)i (Section)f(1.1)390 2696 y([History)c(In)m(teraction],)i(page)e(1\).)41 b(Returns:)390 2839 y Fp(0)432 b Fq(If)37 b(no)g(expansions)g(to)s(ok)i (place)f(\(or,)i(if)d(the)h(only)f(c)m(hange)i(in)e(the)g(text)i(w)m (as)f(the)870 2949 y(remo)m(v)-5 b(al)31 b(of)g(escap)s(e)f(c)m (haracters)i(preceding)e(the)g(history)g(expansion)g(c)m(haracter\);) 390 3093 y Fp(1)432 b Fq(if)30 b(expansions)g(did)g(tak)m(e)i(place;) 390 3236 y Fp(-1)384 b Fq(if)30 b(there)h(w)m(as)g(an)f(error)g(in)g (expansion;)390 3380 y Fp(2)432 b Fq(if)28 b(the)f(returned)g(line)g (should)g(b)s(e)g(displa)m(y)m(ed,)i(but)e(not)h(executed,)h(as)f(with) f(the)h Fp(:p)870 3489 y Fq(mo)s(di\014er)h(\(see)j(Section)f(1.1.3)h ([Mo)s(di\014ers],)e(page)i(2\).)390 3633 y(If)e(an)g(error)g(o)s (ccurred)g(in)g(expansion,)g(then)g Fk(output)i Fq(con)m(tains)g(a)f (descriptiv)m(e)g(error)f(message.)3350 3793 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(get_history_event)f Fg(\()p Ff(const)34 b(c)m(har)g(*string,)e(in)m(t)h(*cindex,)h(in)m(t) 565 3903 y(qc)m(har)p Fg(\))390 4012 y Fq(Returns)45 b(the)g(text)i(of)e(the)h(history)f(ev)m(en)m(t)i(b)s(eginning)e(at)h Fk(string)53 b Fp(+)45 b Fk(*cindex)p Fq(.)87 b Fk(*cindex)52 b Fq(is)390 4122 y(mo)s(di\014ed)28 b(to)i(p)s(oin)m(t)f(to)h(after)g (the)g(ev)m(en)m(t)h(sp)s(eci\014er.)39 b(A)m(t)31 b(function)e(en)m (try)-8 b(,)30 b Fk(cindex)36 b Fq(p)s(oin)m(ts)29 b(to)h(the)390 4232 y(index)35 b(in)m(to)i Fk(string)44 b Fq(where)35 b(the)h(history)g(ev)m(en)m(t)h(sp)s(eci\014cation)g(b)s(egins.)57 b Fk(qc)m(har)42 b Fq(is)36 b(a)g(c)m(haracter)390 4341 y(that)27 b(is)g(allo)m(w)m(ed)i(to)f(end)e(the)h(ev)m(en)m(t)h(sp)s (eci\014cation)g(in)f(addition)g(to)g(the)g(\\normal")h(terminating)390 4451 y(c)m(haracters.)3350 4611 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e(history_tokenize)f Fg(\()p Ff(const)34 b(c)m(har)g(*string)p Fg(\))390 4721 y Fq(Return)c(an)h(arra)m(y)g(of)g (tok)m(ens)h(parsed)e(out)h(of)g Fk(string)p Fq(,)h(m)m(uc)m(h)e(as)i (the)f(shell)g(migh)m(t.)43 b(The)30 b(tok)m(ens)390 4830 y(are)h(split)g(on)f(the)h(c)m(haracters)h(in)e(the)h Fk(history)p 2006 4830 28 4 v 40 w(w)m(ord)p 2241 4830 V 39 w(delimiters)k Fq(v)-5 b(ariable,)32 b(and)e(shell)g(quoting)390 4940 y(con)m(v)m(en)m(tions)i(are)f(ob)s(ey)m(ed)g(as)f(describ)s(ed)g (b)s(elo)m(w.)3350 5101 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(history_arg_extract)f Fg(\()p Ff(in)m(t)34 b(\014rst,)f(in)m(t)g (last,)g(const)h(c)m(har)f(*string)p Fg(\))390 5210 y Fq(Extract)41 b(a)g(string)f(segmen)m(t)i(consisting)f(of)f(the)h Fk(\014rst)g Fq(through)f Fk(last)j Fq(argumen)m(ts)e(presen)m(t)f(in) 390 5320 y Fk(string)p Fq(.)h(Argumen)m(ts)30 b(are)h(split)f(using)g Fp(history_tokenize)p Fq(.)p eop end %%Page: 9 12 TeXDict begin 9 11 bop 150 -116 a Fq(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1780 b(9)150 299 y Fo(2.4)68 b(History)46 b(V)-11 b(ariables)150 458 y Fq(This)26 b(section)i(describ)s(es)e(the)h(externally-visible)i(v)-5 b(ariables)28 b(exp)s(orted)e(b)m(y)h(the)g Fl(gnu)g Fq(History)g(Library)-8 b(.)3371 641 y([V)g(ariable])-3598 b Fh(int)53 b(history_base)390 750 y Fq(The)30 b(logical)j(o\013set)e (of)g(the)f(\014rst)g(en)m(try)g(in)h(the)f(history)g(list.)3371 933 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_length)390 1043 y Fq(The)30 b(n)m(um)m(b)s(er)f(of)h(en)m(tries)i(curren)m(tly)e (stored)h(in)f(the)g(history)g(list.)3371 1225 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_max_entries)390 1335 y Fq(The)45 b(maxim)m(um)h(n)m(um)m(b)s(er)f(of)h(history)g(en)m (tries.)88 b(This)45 b(m)m(ust)h(b)s(e)f(c)m(hanged)i(using)e Fp(stifle_)390 1444 y(history\(\))p Fq(.)3371 1627 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_write_timesta)q(mps)390 1736 y Fq(If)44 b(non-zero,)49 b(timestamps)c(are)g(written)g(to)g(the) g(history)f(\014le,)49 b(so)c(they)f(can)h(b)s(e)f(preserv)m(ed)390 1846 y(b)s(et)m(w)m(een)31 b(sessions.)41 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(0,)h(meaning)g(that)g(timestamps)g(are)g(not)f(sa)m(v) m(ed.)390 1980 y(The)41 b(curren)m(t)g(timestamp)h(format)g(uses)f(the) h(v)-5 b(alue)42 b(of)f Fk(history)p 2697 1980 28 4 v 41 w(commen)m(t)p 3098 1980 V 41 w(c)m(har)48 b Fq(to)42 b(delimit)390 2090 y(timestamp)h(en)m(tries)g(in)f(the)g(history)h (\014le.)76 b(If)42 b(that)h(v)-5 b(ariable)43 b(do)s(es)f(not)g(ha)m (v)m(e)i(a)f(v)-5 b(alue)42 b(\(the)390 2199 y(default\),)31 b(timestamps)g(will)g(not)f(b)s(e)g(written.)3371 2382 y([V)-8 b(ariable])-3598 b Fh(char)54 b(history_expansion_char)390 2491 y Fq(The)35 b(c)m(haracter)i(that)e(in)m(tro)s(duces)g(a)h (history)f(ev)m(en)m(t.)57 b(The)34 b(default)i(is)f(`)p Fp(!)p Fq('.)56 b(Setting)35 b(this)h(to)g(0)390 2601 y(inhibits)30 b(history)g(expansion.)3371 2783 y([V)-8 b(ariable])-3598 b Fh(char)54 b(history_subst_char)390 2893 y Fq(The)40 b(c)m(haracter)i(that)g(in)m(v)m(ok)m(es)g(w)m(ord)f (substitution)f(if)h(found)e(at)i(the)g(start)g(of)g(a)g(line.)72 b(The)390 3003 y(default)31 b(is)f(`)p Fp(^)p Fq('.)3371 3185 y([V)-8 b(ariable])-3598 b Fh(char)54 b(history_comment_char)390 3295 y Fq(During)37 b(tok)m(enization,)43 b(if)38 b(this)f(c)m (haracter)j(is)e(seen)f(as)h(the)g(\014rst)f(c)m(haracter)j(of)e(a)g(w) m(ord,)h(then)390 3404 y(it)44 b(and)e(all)j(subsequen)m(t)d(c)m (haracters)j(up)d(to)i(a)g(newline)f(are)h(ignored,)i(suppressing)c (history)390 3514 y(expansion)30 b(for)g(the)h(remainder)f(of)g(the)h (line.)41 b(This)29 b(is)i(disabled)f(b)m(y)g(default.)3371 3696 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e (history_word_delimiter)q(s)390 3806 y Fq(The)27 b(c)m(haracters)i (that)f(separate)h(tok)m(ens)f(for)f Fp(history_tokenize\(\))p Fq(.)35 b(The)27 b(default)h(v)-5 b(alue)28 b(is)f Fp(")390 3916 y(\\t\\n\(\)<>;&|")p Fq(.)3371 4098 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(history_search_delimit)q(er_)q(cha)q(rs)390 4208 y Fq(The)26 b(list)g(of)g(additional)h(c)m(haracters)h(whic)m(h)e (can)g(delimit)h(a)f(history)g(searc)m(h)h(string,)g(in)f(addition)390 4317 y(to)31 b(space,)g(T)-8 b(AB,)32 b(`)p Fp(:)p Fq(')e(and)g(`)p Fp(?)p Fq(')g(in)g(the)h(case)g(of)g(a)g(substring)e(searc)m(h.)41 b(The)30 b(default)h(is)f(empt)m(y)-8 b(.)3371 4500 y([V)g(ariable]) -3598 b Fh(char)54 b(*)e(history_no_expand_char)q(s)390 4609 y Fq(The)29 b(list)i(of)f(c)m(haracters)h(whic)m(h)e(inhibit)h (history)g(expansion)f(if)h(found)e(immediately)j(follo)m(wing)390 4719 y Fk(history)p 672 4719 V 40 w(expansion)p 1104 4719 V 40 w(c)m(har)p Fq(.)41 b(The)30 b(default)g(is)h(space,)g(tab,)g (newline,)f(carriage)i(return,)e(and)g(`)p Fp(=)p Fq('.)3371 4902 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_quotes_inhibi)q (t_ex)q(pan)q(sio)q(n)390 5011 y Fq(If)33 b(non-zero,)j(the)d(history)h (expansion)f(co)s(de)h(implemen)m(ts)g(shell-lik)m(e)i(quoting:)48 b(single-quoted)390 5121 y(w)m(ords)37 b(are)h(not)g(scanned)f(for)g (the)h(history)f(expansion)g(c)m(haracter)i(or)f(the)f(history)h (commen)m(t)390 5230 y(c)m(haracter,)48 b(and)42 b(double-quoted)h(w)m (ords)g(ma)m(y)g(ha)m(v)m(e)h(history)f(expansion)g(p)s(erformed,)i (since)390 5340 y(single)31 b(quotes)g(are)g(not)f(sp)s(ecial)h(within) f(double)g(quotes.)41 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(0.)p eop end %%Page: 10 13 TeXDict begin 10 12 bop 150 -116 a Fq(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1734 b(10)3371 299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_quoting_state)390 408 y Fq(An)27 b(application)j(ma)m(y)e(set)g(this)g(v)-5 b(ariable)29 b(to)f(indicate)h(that)g(the)f(curren)m(t)f(line)h(b)s (eing)g(expanded)390 518 y(is)e(sub)5 b(ject)26 b(to)h(existing)g (quoting.)40 b(If)26 b(set)g(to)h(`)p Fp(')p Fq(',)g(the)g(history)f (expansion)g(function)g(will)g(assume)390 628 y(that)i(the)f(line)h(is) f(single-quoted)h(and)f(inhibit)f(expansion)h(un)m(til)h(it)g(reads)e (an)i(unquoted)e(closing)390 737 y(single)41 b(quote;)46 b(if)40 b(set)h(to)f(`)p Fp(")p Fq(',)j(history)e(expansion)f(will)g (assume)g(the)g(line)h(is)f(double)g(quoted)390 847 y(un)m(til)26 b(it)g(reads)f(an)g(unquoted)g(closing)h(double)f(quote.)40 b(If)25 b(set)g(to)i(zero,)g(the)f(default,)g(the)g(history)390 956 y(expansion)21 b(function)g(will)g(assume)g(the)g(line)h(is)f(not)g (quoted)g(and)g(treat)h(quote)g(c)m(haracters)g(within)390 1066 y(the)29 b(line)g(as)g(describ)s(ed)f(ab)s(o)m(v)m(e.)42 b(This)28 b(is)h(only)g(e\013ectiv)m(e)i(if)e Fk(history)p 2726 1066 28 4 v 40 w(quotes)p 3021 1066 V 40 w(inhibit)p 3324 1066 V 40 w(expansion)390 1176 y Fq(is)h(set.)3371 1379 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57 b(*)c(history_inhibit_expans)q(ion)q(_fu)q(ncti)q(on)390 1489 y Fq(This)32 b(should)h(b)s(e)f(set)i(to)g(the)g(address)e(of)i(a) f(function)g(that)h(tak)m(es)h(t)m(w)m(o)g(argumen)m(ts:)46 b(a)34 b Fp(char)29 b(*)390 1598 y Fq(\()p Fk(string)8 b Fq(\))27 b(and)f(an)g Fp(int)g Fq(index)g(in)m(to)i(that)f(string)f (\()p Fk(i)5 b Fq(\).)40 b(It)27 b(should)f(return)f(a)i(non-zero)g(v) -5 b(alue)27 b(if)g(the)390 1708 y(history)i(expansion)g(starting)h(at) g Fk(string[i])j Fq(should)28 b(not)i(b)s(e)e(p)s(erformed;)h(zero)h (if)f(the)g(expansion)390 1817 y(should)i(b)s(e)g(done.)45 b(It)32 b(is)g(in)m(tended)g(for)g(use)g(b)m(y)f(applications)i(lik)m (e)h(Bash)e(that)g(use)g(the)g(history)390 1927 y(expansion)e(c)m (haracter)i(for)e(additional)i(purp)s(oses.)39 b(By)30 b(default,)h(this)f(v)-5 b(ariable)31 b(is)g(set)g(to)g Fp(NULL)p Fq(.)150 2182 y Fo(2.5)68 b(History)46 b(Programming)g (Example)150 2342 y Fq(The)30 b(follo)m(wing)i(program)e(demonstrates)h (simple)f(use)g(of)h(the)f Fl(gnu)g Fq(History)h(Library)-8 b(.)390 2463 y Fe(#include)41 b()390 2550 y(#include)g ()390 2725 y(main)f(\(argc,)h(argv\))586 2812 y(int)f(argc;)586 2899 y(char)g(**argv;)390 2986 y({)468 3073 y(char)h(line[1024],)g(*t;)468 3161 y(int)f(len,)g(done)h (=)e(0;)468 3335 y(line[0])i(=)f(0;)468 3509 y(using_history)j(\(\);) 468 3597 y(while)e(\(!done\))547 3684 y({)625 3771 y(printf)g (\("history$)g("\);)625 3858 y(fflush)g(\(stdout\);)625 3945 y(t)f(=)f(fgets)i(\(line,)f(sizeof)h(\(line\))f(-)g(1,)g(stdin\);) 625 4032 y(if)g(\(t)g(&&)f(*t\))704 4120 y({)782 4207 y(len)h(=)g(strlen)g(\(t\);)782 4294 y(if)g(\(t[len)h(-)e(1])h(==)f ('\\n'\))861 4381 y(t[len)h(-)g(1])f(=)h('\\0';)704 4468 y(})625 4643 y(if)g(\(!t\))704 4730 y(strcpy)g(\(line,)h("quit"\);)625 4904 y(if)f(\(line[0]\))704 4991 y({)782 5078 y(char)g(*expansion;)782 5166 y(int)g(result;)782 5340 y(result)h(=)e(history_expand)k(\(line,)d (&expansion\);)p eop end %%Page: 11 14 TeXDict begin 11 13 bop 150 -116 a Fq(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(History)1734 b(11)782 299 y Fe(if)40 b(\(result\))861 386 y(fprintf)h(\(stderr,)g ("\045s\\n",)f(expansion\);)782 560 y(if)g(\(result)h(<)e(0)h(||)f (result)i(==)f(2\))861 648 y({)939 735 y(free)g(\(expansion\);)939 822 y(continue;)861 909 y(})782 1083 y(add_history)i(\(expansion\);)782 1171 y(strncpy)f(\(line,)g(expansion,)g(sizeof)g(\(line\))f(-)g(1\);) 782 1258 y(free)g(\(expansion\);)704 1345 y(})625 1519 y(if)g(\(strcmp)h(\(line,)f("quit"\))h(==)f(0\))704 1606 y(done)g(=)f(1;)625 1694 y(else)h(if)g(\(strcmp)h(\(line,)g("save"\))f (==)g(0\))704 1781 y(write_history)i(\("history_file"\);)625 1868 y(else)e(if)g(\(strcmp)h(\(line,)g("read"\))f(==)g(0\))704 1955 y(read_history)i(\("history_file"\);)625 2042 y(else)e(if)g (\(strcmp)h(\(line,)g("list"\))f(==)g(0\))704 2130 y({)782 2217 y(register)h(HIST_ENTRY)h(**the_list;)782 2304 y(register)f(int)f (i;)782 2478 y(the_list)h(=)f(history_list)i(\(\);)782 2565 y(if)e(\(the_list\))861 2653 y(for)g(\(i)f(=)h(0;)f(the_list[i];)j (i++\))939 2740 y(printf)f(\("\045d:)f(\045s\\n",)h(i)e(+)h (history_base,)i(the_list[i]->line\);)704 2827 y(})625 2914 y(else)e(if)g(\(strncmp)h(\(line,)g("delete",)g(6\))f(==)f(0\))704 3001 y({)782 3088 y(int)h(which;)782 3176 y(if)g(\(\(sscanf)h(\(line)f (+)g(6,)g("\045d",)g(&which\)\))h(==)f(1\))861 3263 y({)939 3350 y(HIST_ENTRY)i(*entry)e(=)g(remove_history)i(\(which\);)939 3437 y(if)e(\(!entry\))1018 3524 y(fprintf)g(\(stderr,)i("No)d(such)i (entry)f(\045d\\n",)h(which\);)939 3611 y(else)1018 3699 y({)1096 3786 y(free)f(\(entry->line\);)1096 3873 y(free)g(\(entry\);) 1018 3960 y(})861 4047 y(})782 4134 y(else)861 4222 y({)939 4309 y(fprintf)h(\(stderr,)g("non-numeric)h(arg)e(given)g(to)g (`delete'\\n"\);)861 4396 y(})704 4483 y(})547 4570 y(})390 4658 y(})p eop end %%Page: 12 15 TeXDict begin 12 14 bop 3659 -116 a Fq(12)150 299 y Fm(App)t(endix)52 b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359 502 y Fq(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fn(\015)e Fq(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 745 y Fp(http://fsf.org/)390 964 y Fq(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f (to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 1074 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f (is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330 1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g (a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 1450 y(useful)29 b(do)s(cumen)m(t)h Fk(free)36 b Fq(in)29 b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j (the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f (redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i (either)f(commercially)h(or)e(non-)330 1669 y(commercially)-8 b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f (the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 1778 y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g (considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 1888 y(made)30 b(b)m(y)h(others.)330 2021 y(This)22 b(License)i(is)f(a) h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 2131 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g (sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 2240 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) e(for)g(free)h(soft)m(w)m(are.)330 2373 y(W)-8 b(e)31 b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h (for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 2483 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) 65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 2592 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g (to)330 2702 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g (for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 b(ject)30 b(matter)i(or)330 2812 y(whether)f(it)h(is)f(published)f(as)i (a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h (License)g(principally)f(for)330 2921 y(w)m(orks)f(whose)h(purp)s(ose)d (is)j(instruction)f(or)g(reference.)199 3054 y(1.)61 b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3187 y(This)39 b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i (in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3297 y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 3407 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f (a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d (in)330 3516 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j (conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 3626 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h (or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g (a)h(licensee,)i(and)330 3735 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 3845 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) m(yrigh)m(t)j(la)m(w.)330 3978 y(A)i(\\Mo)s(di\014ed)f(V)-8 b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f (con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4088 y(a)k(p)s(ortion)f (of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s (di\014cations)f(and/or)h(translated)g(in)m(to)330 4197 y(another)31 b(language.)330 4330 y(A)26 b(\\Secondary)g(Section")h(is) f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f (the)g(Do)s(cumen)m(t)330 4440 y(that)c(deals)g(exclusiv)m(ely)h(with)e (the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f (Do)s(cumen)m(t)330 4549 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m (erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) m(tains)h(nothing)f(that)330 4659 y(could)j(fall)h(directly)g(within)f (that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 4769 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 b(The)330 4878 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e (historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 b(or)g(with)g(related)330 4988 y(matters,)38 b(or)d(of)h(legal,)i (commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s (osition)f(regarding)330 5097 y(them.)330 5230 y(The)25 b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g (Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)p eop end %%Page: 13 16 TeXDict begin 13 15 bop 150 -116 a Fq(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(13)330 299 y(under)26 b(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h (de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) e(In)m(v)-5 b(arian)m(t)330 518 y(Sections.)39 b(If)25 b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) -5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 669 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short) g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 b(ron)m(t-Co)m(v)m(er)330 778 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er) j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f (Do)s(cumen)m(t)h(is)f(released)g(under)330 888 y(this)h(License.)40 b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26 b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m (v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 998 y(b)s(e)k(at)h(most)g(25)g(w)m (ords.)330 1148 y(A)36 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g (the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8 b(,)38 b(represen)m(ted)330 1258 y(in)d(a)h(format)g(whose)g(sp)s (eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g (public,)h(that)f(is)g(suitable)g(for)330 1367 y(revising)c(the)g(do)s (cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors) f(or)f(\(for)h(images)h(com-)330 1477 y(p)s(osed)23 b(of)h(pixels\))g (generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g (widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 1587 y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g (formatters)f(or)g(for)g(automatic)i(translation)f(to)330 1696 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input) g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g (otherwise)330 1806 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g (whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f (arranged)g(to)330 1915 y(th)m(w)m(art)27 b(or)g(discourage)g (subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 b(ransparen)m(t.)39 b(An)27 b(image)330 2025 y(format)35 b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g (substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g (is)330 2134 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i (\\Opaque".)330 2285 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T) -8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fl(asci)r(i)g Fq(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j (LaT)1759 2414 y(E)1810 2395 y(X)e(input)f(format,)j Fd(SGML)f Fq(or)f Fd(XML)g Fq(using)g(a)g(publicly)330 2504 y(a)m(v)-5 b(ailable)42 b Fd(DTD)p Fq(,)h(and)c (standard-conforming)g(simple)h Fd(HTML)p Fq(,)i(P)m(ostScript)e(or)f Fd(PDF)h Fq(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65 b(Examples)38 b(of)h(transparen)m(t)f(image)h(formats)g(include)f Fd(PNG)p Fq(,)i Fd(X)n(CF)330 2724 y Fq(and)e Fd(JPG)p Fq(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that) h(can)g(b)s(e)f(read)h(and)f(edited)330 2833 y(only)54 b(b)m(y)f(proprietary)h(w)m(ord)f(pro)s(cessors,)59 b Fd(SGML)54 b Fq(or)f Fd(XML)h Fq(for)g(whic)m(h)f(the)h Fd(DTD)g Fq(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g (generally)i(a)m(v)-5 b(ailable,)71 b(and)60 b(the)h(mac)m (hine-generated)j Fd(HTML)p Fq(,)330 3052 y(P)m(ostScript)31 b(or)f Fd(PDF)h Fq(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s (cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330 3203 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m(ted)f(b) s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f(follo)m (wing)330 3313 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g(legibly)-8 b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h(app)s(ear)f (in)h(the)330 3422 y(title)g(page.)40 b(F)-8 b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h(an)m(y)e (title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 3532 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s (earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330 3641 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330 3792 y(The)j(\\publisher")g(means)h(an)m(y)f(p)s(erson)g(or)h(en)m(tit) m(y)h(that)f(distributes)f(copies)i(of)e(the)h(Do)s(cumen)m(t)330 3902 y(to)c(the)g(public.)330 4052 y(A)f(section)h(\\En)m(titled)g (XYZ")f(means)f(a)h(named)g(subunit)e(of)h(the)h(Do)s(cumen)m(t)h (whose)e(title)i(either)330 4162 y(is)d(precisely)g(XYZ)g(or)f(con)m (tains)i(XYZ)f(in)f(paren)m(theses)i(follo)m(wing)g(text)g(that)f (translates)h(XYZ)e(in)330 4271 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g(sp)s(eci\014c)g(section)h(name)f (men)m(tioned)h(b)s(elo)m(w,)g(suc)m(h)330 4381 y(as)i(\\Ac)m(kno)m (wledgemen)m(ts",)33 b(\\Dedications",)e(\\Endorsemen)m(ts",)e(or)f (\\History".\))42 b(T)-8 b(o)29 b(\\Preserv)m(e)330 4491 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g(section)g(when)f(y)m(ou)h(mo)s (dify)e(the)i(Do)s(cumen)m(t)h(means)e(that)h(it)g(remains)g(a)330 4600 y(section)e(\\En)m(titled)f(XYZ")g(according)g(to)g(this)g (de\014nition.)330 4751 y(The)c(Do)s(cumen)m(t)i(ma)m(y)f(include)f(W) -8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)g(the)g(notice)h(whic)m (h)e(states)i(that)330 4861 y(this)34 b(License)g(applies)g(to)h(the)f (Do)s(cumen)m(t.)52 b(These)33 b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m (y)g(reference)h(in)g(this)f(License,)j(but)d(only)h(as)g(regards)f (disclaiming)i(w)m(arran)m(ties:)330 5080 y(an)m(y)e(other)g (implication)i(that)e(these)g(W)-8 b(arran)m(t)m(y)39 b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end %%Page: 14 17 TeXDict begin 14 16 bop 150 -116 a Fq(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(14)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h (the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h (or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j (and)42 b(the)h(license)330 518 y(notice)37 b(sa)m(ying)g(this)e (License)i(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e (in)i(all)g(copies,)j(and)330 628 y(that)27 b(y)m(ou)g(add)f(no)h (other)f(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f (License.)40 b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 737 y(tec)m(hnical)35 b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h (the)f(reading)g(or)g(further)e(cop)m(ying)j(of)f(the)g(copies)330 847 y(y)m(ou)25 b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28 b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d (copies.)330 956 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f (n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g (the)f(conditions)330 1066 y(in)e(section)i(3.)330 1200 y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g (conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g (publicly)330 1310 y(displa)m(y)31 b(copies.)199 1443 y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1577 y(If)25 b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g (that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 1687 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f (100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 1797 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i (the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 1906 y(these)j(Co)m(v)m (er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 2016 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f (the)h(publisher)330 2125 y(of)k(these)h(copies.)53 b(The)34 b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i (with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2235 y(equally)e (prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g (other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 2345 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) 330 2454 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d (b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 2564 y(resp)s(ects.)330 2698 y(If)32 b(the)h(required)f(texts)i(for)e (either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g (legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 2807 y(the)h(\014rst)f (ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 2917 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3051 y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f (the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 3160 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g (T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) 330 3270 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h (Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d (whic)m(h)330 3380 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e (has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m (ork)330 3489 y(proto)s(cols)40 b(a)f(complete)h(T)-8 b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g (added)f(material.)67 b(If)330 3599 y(y)m(ou)39 b(use)g(the)g(latter)h (option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e (steps,)k(when)d(y)m(ou)h(b)s(egin)330 3708 y(distribution)f(of)g (Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 3818 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s (cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h (time)330 3927 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i (\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h (of)f(that)330 4037 y(edition)31 b(to)g(the)g(public.)330 4171 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g (con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 4281 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s (er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m (vide)g(y)m(ou)330 4390 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g (the)f(Do)s(cumen)m(t.)199 4524 y(4.)61 b(MODIFICA)-8 b(TIONS)330 4658 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) e(the)h(conditions)330 4768 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f (V)-8 b(ersion)22 b(under)d(precisely)330 4877 y(this)29 b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f (licensing)330 4987 y(distribution)k(and)h(mo)s(di\014cation)g(of)h (the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s (ossesses)f(a)i(cop)m(y)g(of)330 5096 y(it.)41 b(In)30 b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s (di\014ed)e(V)-8 b(ersion:)357 5230 y(A.)60 b(Use)33 b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e (an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the)510 5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)p eop end %%Page: 15 18 TeXDict begin 15 17 bop 150 -116 a Fq(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(15)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 545 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h (one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c (for)510 655 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g (Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h (\014v)m(e)510 765 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s (cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g (few)m(er)510 874 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g (y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1011 y(C.)60 b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g (publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 b(as)f(the)510 1121 y(publisher.)355 1258 y(D.)61 b(Preserv)m(e)31 b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) 363 1395 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i (notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g (other)510 1504 y(cop)m(yrigh)m(t)g(notices.)365 1641 y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g (notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 1751 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g (form)510 1861 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 1998 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f (full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e (required)g(Co)m(v)m(er)510 2107 y(T)-8 b(exts)31 b(giv)m(en)g(in)f (the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2244 y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) 392 2381 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g (\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g (item)510 2491 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d (authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)510 2600 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e (the)g(Do)s(cu-)510 2710 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f (title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s (cumen)m(t)510 2819 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i (then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 b(ersion)37 b(as)510 2929 y(stated)31 b(in)f(the)h(previous)f(sen)m (tence.)378 3066 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s (cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m (t)h(for)g(public)e(access)j(to)510 3176 y(a)e(T)-8 b(ransparen)m(t)30 b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3285 y(the)g(Do)s(cumen)m (t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3395 y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h (published)510 3504 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e (the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) d(of)i(the)510 3614 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s (ermission.)354 3751 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m (titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k (Preserv)m(e)c(the)g(Title)510 3861 y(of)j(the)f(section,)j(and)d (preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) h(of)f(eac)m(h)i(of)f(the)510 3970 y(con)m(tributor)k(ac)m(kno)m (wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 4107 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f (in)f(their)g(text)i(and)510 4217 y(in)f(their)g(titles.)58 b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 4326 y(section)c(titles.)341 4463 y(M.)61 b(Delete)33 b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 4573 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 4710 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f (to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g (in)510 4819 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 b(Section.)354 4956 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g (V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f (app)s(endices)g(that)h(qualify)330 5230 y(as)28 b(Secondary)g (Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h (Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)330 5340 y(y)m(our)k(option)h (designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p eop end %%Page: 16 19 TeXDict begin 16 18 bop 150 -116 a Fq(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(16)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 b(license)g(notice.)57 b(These)330 408 y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g (section)g(titles.)330 551 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section) i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g (nothing)g(but)330 661 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s (di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 b(parties|for)g(example,)g(statemen)m(ts)i(of)330 770 y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro) m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330 880 y(de\014nition)i(of)h(a)f(standard.)330 1022 y(Y)-8 b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m (ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8 b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1132 y(to)g(25)g(w)m(ords)e (as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i (the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s (di\014ed)330 1241 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f (F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m (k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1351 y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\)) g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t) g(already)330 1461 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g (same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m (y)g(arrangemen)m(t)330 1570 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m (y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g (not)f(add)g(another;)j(but)330 1680 y(y)m(ou)c(ma)m(y)h(replace)g(the) f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e (publisher)f(that)330 1789 y(added)e(the)g(old)h(one.)330 1932 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s (cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s (ermission)330 2041 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g (for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g (Mo)s(di\014ed)330 2151 y(V)-8 b(ersion.)199 2293 y(5.)61 b(COMBINING)31 b(DOCUMENTS)330 2436 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m (bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h (released)g(under)f(this)g(License,)330 2545 y(under)f(the)h(terms)g (de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f (v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2655 y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s (cumen)m(ts,)330 2765 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g (as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) g(w)m(ork)f(in)h(its)g(license)330 2874 y(notice,)32 b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 b(arran)m(t)m(y)32 b(Disclaimers.)330 3017 y(The)e(com)m(bined)g(w)m (ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) i(and)d(m)m(ultiple)i(iden)m(tical)330 3126 y(In)m(v)-5 b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h (single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m (v)-5 b(arian)m(t)330 3236 y(Sections)27 b(with)g(the)g(same)g(name)g (but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f (eac)m(h)h(suc)m(h)f(section)330 3345 y(unique)33 b(b)m(y)h(adding)f (at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g (the)g(original)h(author)f(or)330 3455 y(publisher)23 b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m (um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 3565 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h (com)m(bined)330 3674 y(w)m(ork.)330 3817 y(In)41 b(the)g(com)m (bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g (En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 3926 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h (En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 4036 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 b(Y)-8 b(ou)330 4145 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m (titled)f(\\Endorsemen)m(ts.")199 4288 y(6.)61 b(COLLECTIONS)28 b(OF)i(DOCUMENTS)330 4430 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f (collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g (do)s(cumen)m(ts)f(released)330 4540 y(under)41 b(this)h(License,)k (and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f (the)h(v)-5 b(arious)330 4650 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 b(pro)m(vided)42 b(that)i(y)m(ou)330 4759 y(follo)m(w)38 b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g (of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 4869 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h (collection,)i(and)d(distribute)g(it)h(individu-)330 5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g (a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end %%Page: 17 20 TeXDict begin 17 19 bop 150 -116 a Fq(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(17)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h (W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f (its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep) s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h (on)f(a)g(v)m(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g (is)h(called)330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i (resulting)e(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g (the)330 770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e (b)s(ey)m(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g (aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g (other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h (not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h (Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f (these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241 y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f (of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m (er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m (ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h (aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5 b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f (in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f (brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61 b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a) i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e (translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h (terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f (sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i (holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24 b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f (License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the) h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513 y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g (License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f (translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f (License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m (ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28 b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m (kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m (e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61 b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h (Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38 b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g (cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330 3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically) i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330 3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i (of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h (particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h (\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g (cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h (terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8 b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34 b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h (reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288 y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d (license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h (reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h (holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g (reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m (ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f (License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330 4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g (violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h (of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28 b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h (terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38 b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e) 330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end %%Page: 18 21 TeXDict begin 18 20 bop 150 -116 a Fq(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(18)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g (the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to)g(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h(in)g(spirit)330 653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m(y)h(di\013er)f (in)g(detail)h(to)g(address)f(new)g(problems)f(or)i(concerns.)330 762 y(See)c Fp(http://www.gnu.org/copy)o(left)o(/)p Fq(.)330 897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m(en)g(a)g (distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29 b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g (particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g(License)h (\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f(follo)m(wing)i (the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m (ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g (b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s (ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445 y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m (ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46 b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f (can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f (License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen) m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m (tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g (for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330 2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or) e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330 2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m (table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h (facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g (w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i (edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33 b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s (oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330 2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m (orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330 2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m (ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330 2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a) g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330 2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29 b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions) f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g (organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e (or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h (as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330 3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h (licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330 3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h (License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330 3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f (part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts) 330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j (w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s (er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h (Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site) g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end %%Page: 19 22 TeXDict begin 19 21 bop 150 -116 a Fq(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(19)150 299 y Fo(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f (for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fq(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh) m(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468 680 y Fe(Copyright)42 b(\(C\))79 b Fc(year)g(your)40 b(name)p Fe(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h (distribute)g(and/or)g(modify)f(this)g(document)468 854 y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i (License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h (published)h(by)d(the)h(Free)g(Software)h(Foundation;)468 1029 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g (and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f (license)i(is)f(included)h(in)f(the)g(section)g(entitled)h(``GNU)468 1203 y(Free)g(Documentation)h(License''.)275 1337 y Fq(If)d(y)m(ou)h (ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k (T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6 b(.)22 b(.)g(.)12 b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547 1559 y Fe(with)40 b(the)g(Invariant)h(Sections)g(being)g Fc(list)f(their)g(titles)p Fe(,)h(with)547 1646 y(the)f(Front-Cover)i (Texts)e(being)g Fc(list)p Fe(,)h(and)f(with)g(the)g(Back-Cover)h (Texts)547 1733 y(being)f Fc(list)p Fe(.)275 1868 y Fq(If)34 b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f (Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g (of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g (alternativ)m(es)i(to)e(suit)f(the)h(situation.)275 2112 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g (examples)g(of)f(program)f(co)s(de,)j(w)m(e)e(recommend)g(releasing)150 2222 y(these)44 b(examples)f(in)g(parallel)h(under)e(y)m(our)h(c)m (hoice)i(of)e(free)g(soft)m(w)m(are)h(license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s (ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p eop end %%Page: 20 23 TeXDict begin 20 22 bop 150 -116 a Fq(App)s(endix)29 b(B:)i(Concept)f(Index)2391 b(20)150 100 y Fm(App)t(endix)52 b(B)81 b(Concept)51 b(Index)146 434 y Fo(A)150 550 y Fb(anc)n(hored)26 b(searc)n(h)12 b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(7)146 782 y Fo(E)150 898 y Fb(ev)n(en)n(t)e(designators)7 b Fa(:)14 b(:)f(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(1)146 1140 y Fo(H)150 1256 y Fb(history)k(ev)n(en)n(ts)12 b Fa(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(1)150 1344 y(history)f(expansion)18 b Fa(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)34 b Fb(1)150 1431 y(History)26 b(Searc)n(hing)16 b Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(7)p eop end %%Page: 21 24 TeXDict begin 21 23 bop 150 -116 a Fq(App)s(endix)29 b(C:)h(F)-8 b(unction)31 b(and)f(V)-8 b(ariable)32 b(Index)1832 b(21)150 100 y Fm(App)t(endix)52 b(C)81 b(F)-13 b(unction)52 b(and)h(V)-13 b(ariable)53 b(Index)150 400 y Fe(history_base)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)25 b Fb(9)150 487 y Fe(history_comment_char)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(9)150 574 y Fe (history_expansion_char)i Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(9)150 661 y Fe(history_inhibit_expansion_fun)q(ctio)q(n)26 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(10)150 749 y Fe(history_length)25 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)37 b Fb(9)150 836 y Fe(history_max_entries)9 b Fa(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(9)150 923 y Fe(history_no_expand_chars)16 b Fa(:)i(:)c(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(9)150 1010 y Fe(history_quotes_inhibit_expans)q(ion)11 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fb(9)150 1097 y Fe(history_quoting_state)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)33 b Fb(10)150 1184 y Fe (history_search_delimiter_char)q(s)15 b Fa(:)k(:)13 b(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(9)150 1272 y Fe (history_subst_char)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) 27 b Fb(9)150 1359 y Fe(history_word_delimiters)16 b Fa(:)i(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)31 b Fb(9)150 1446 y Fe(history_write_timestamps)13 b Fa(:)19 b(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)28 b Fb(9)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF readline-8.0/doc/readline_3.ps000664 000436 000000 00000276433 13300554224 016355 0ustar00chetwheel000000 000000 %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 %%CreationDate: Mon May 21 10:32:52 2018 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Courier %%DocumentSuppliedResources: procset grops 1.22 3 %%Pages: 17 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait %%EndComments %%BeginDefaults %%PageMedia: Default %%EndDefaults %%BeginProlog %%BeginResource: procset grops 1.22 3 %!PS-Adobe-3.0 Resource-ProcSet /setpacking where{ pop currentpacking true setpacking }if /grops 120 dict dup begin /SC 32 def /A/show load def /B{0 SC 3 -1 roll widthshow}bind def /C{0 exch ashow}bind def /D{0 exch 0 SC 5 2 roll awidthshow}bind def /E{0 rmoveto show}bind def /F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def /G{0 rmoveto 0 exch ashow}bind def /H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /I{0 exch rmoveto show}bind def /J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def /K{0 exch rmoveto 0 exch ashow}bind def /L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /M{rmoveto show}bind def /N{rmoveto 0 SC 3 -1 roll widthshow}bind def /O{rmoveto 0 exch ashow}bind def /P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /Q{moveto show}bind def /R{moveto 0 SC 3 -1 roll widthshow}bind def /S{moveto 0 exch ashow}bind def /T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def /SF{ findfont exch [exch dup 0 exch 0 exch neg 0 0]makefont dup setfont [exch/setfont cvx]cvx bind def }bind def /MF{ findfont [5 2 roll 0 3 1 roll neg 0 0]makefont dup setfont [exch/setfont cvx]cvx bind def }bind def /level0 0 def /RES 0 def /PL 0 def /LS 0 def /MANUAL{ statusdict begin/manualfeed true store end }bind def /PLG{ gsave newpath clippath pathbbox grestore exch pop add exch pop }bind def /BP{ /level0 save def 1 setlinecap 1 setlinejoin DEFS/BPhook known{DEFS begin BPhook end}if 72 RES div dup scale LS{ 90 rotate }{ 0 PL translate }ifelse 1 -1 scale }bind def /EP{ level0 restore showpage }def /DA{ newpath arcn stroke }bind def /SN{ transform .25 sub exch .25 sub exch round .25 add exch round .25 add exch itransform }bind def /DL{ SN moveto SN lineto stroke }bind def /DC{ newpath 0 360 arc closepath }bind def /TM matrix def /DE{ TM currentmatrix pop translate scale newpath 0 0 .5 0 360 arc closepath TM setmatrix }bind def /RC/rcurveto load def /RL/rlineto load def /ST/stroke load def /MT/moveto load def /CL/closepath load def /Fr{ setrgbcolor fill }bind def /setcmykcolor where{ pop /Fk{ setcmykcolor fill }bind def }if /Fg{ setgray fill }bind def /FL/fill load def /LW/setlinewidth load def /Cr/setrgbcolor load def /setcmykcolor where{ pop /Ck/setcmykcolor load def }if /Cg/setgray load def /RE{ findfont dup maxlength 1 index/FontName known not{1 add}if dict begin { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall /Encoding exch def dup/FontName exch def currentdict end definefont pop }bind def /DEFS 0 def /EBEGIN{ moveto DEFS begin }bind def /EEND/end load def /CNT 0 def /level1 0 def /PBEGIN{ /level1 save def translate div 3 1 roll div exch scale neg exch neg exch translate 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit []0 setdash /setstrokeadjust where{ pop false setstrokeadjust }if /setoverprint where{ pop false setoverprint }if newpath /CNT countdictstack def userdict begin /showpage{}def /setpagedevice{}def mark }bind def /PEND{ cleartomark countdictstack CNT sub{end}repeat level1 restore }bind def end def /setpacking where{ pop setpacking }if %%EndResource %%EndProlog %%BeginSetup %%BeginFeature: *PageSize Default << /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice %%EndFeature %%IncludeResource: font Times-Roman %%IncludeResource: font Times-Bold %%IncludeResource: font Times-Italic %%IncludeResource: font Courier grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron /scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent /ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen /period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon /semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O /P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex /underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y /z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft /guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl /endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut /dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash /quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen /brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft /logicalnot/minus/registered/macron/degree/plusminus/twosuperior /threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior /ordmasculine/guilsinglright/onequarter/onehalf/threequarters /questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash /ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def /Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE /Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE %%EndSetup %%Page: 1 1 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0 (readline \255 get a line from a user with editing)108 96 Q F1(SYNOPSIS) 72 112.8 Q/F2 10/Times-Bold@0 SF(#include )108 124.8 Q (#include )-.18 E(#include )-.7 E/F3 10/Times-Italic@0 SF -.15(ch)108 165.6 S(ar *).15 E F2 -.18(re)108 177.6 S(adline).18 E F0 (\()2.5 E F3(const c)A(har *pr)-.15 E(ompt)-.45 E F0(\);)A F1(COPYRIGHT) 72 194.4 Q F0(Readline is Cop)108 206.4 Q (yright \251 1989\2552014 Free Softw)-.1 E(are F)-.1 E(oundation, Inc.) -.15 E F1(DESCRIPTION)72 223.2 Q F2 -.18(re)108 235.2 S(adline).18 E F0 .088(will read a line from the terminal and return it, using)2.588 F F2 (pr)2.587 E(ompt)-.18 E F0 .087(as a prompt.)2.587 F(If)5.087 E F2(pr) 2.587 E(ompt)-.18 E F0(is)2.587 E F2(NULL)2.587 E F0(or)2.587 E .42 (the empty string, no prompt is issued.)108 247.2 R .421 (The line returned is allocated with)5.42 F F3(malloc)2.921 E F0 .421 (\(3\); the caller must free it).31 F(when \214nished.)108 259.2 Q (The line returned has the \214nal ne)5 E(wline remo)-.25 E -.15(ve)-.15 G(d, so only the te).15 E(xt of the line remains.)-.15 E F2 -.18(re)108 276 S(adline).18 E F0(of)3.79 E 1.29 (fers editing capabilities while the user is entering the line.)-.25 F 1.289(By def)6.289 F 1.289(ault, the line editing com-)-.1 F (mands are similar to those of emacs.)108 288 Q 2.5(Av)5 G (i\255style line editing interf)-2.5 E(ace is also a)-.1 E -.25(va)-.2 G (ilable.).25 E .272 (This manual page describes only the most basic use of)108 304.8 R F2 -.18(re)2.772 G(adline).18 E F0 5.272(.M)C .272 (uch more functionality is a)-5.272 F -.25(va)-.2 G .272(ilable; see).25 F F3(The GNU Readline Libr)108 316.8 Q(ary)-.15 E F0(and)2.5 E F3 (The GNU History Libr)2.5 E(ary)-.15 E F0(for additional information.) 2.5 E F1(RETURN V)72 333.6 Q(ALUE)-1.478 E F2 -.18(re)108 345.6 S (adline).18 E F0 1.09(returns the te)3.59 F 1.09(xt of the line read.) -.15 F 3.589(Ab)6.09 G 1.089(lank line returns the empty string.)-3.589 F(If)6.089 E F2(EOF)3.589 E F0 1.089(is encountered)3.589 F .283 (while reading a line, and the line is empty)108 357.6 R(,)-.65 E F2 (NULL)2.783 E F0 .283(is returned.)2.783 F .283(If an)5.283 F F2(EOF) 2.783 E F0 .283(is read with a non\255empty line, it)2.783 F (is treated as a ne)108 369.6 Q(wline.)-.25 E F1(NO)72 386.4 Q -.986(TA) -.438 G(TION)-.054 E F0 .077 (An Emacs-style notation is used to denote k)108 398.4 R -.15(ey)-.1 G (strok).15 E 2.576(es. Control)-.1 F -.1(ke)2.576 G .076 (ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0 2.576(,e)C .076 (.g., C\255n means)-2.576 F 2.582(Control\255N. Similarly)108 410.4 R(,) -.65 E F3(meta)2.962 E F0 -.1(ke)2.842 G .082(ys are denoted by M\255) -.05 F F3 -.1(ke)C(y)-.2 E F0 2.583(,s)C 2.583(oM)-2.583 G .083 (\255x means Meta\255X.)-2.583 F .083(\(On k)5.083 F -.15(ey)-.1 G .083 (boards without a).15 F F3(meta)108.38 422.4 Q F0 -.1(ke)3.472 G 2.012 -.65(y, M)-.05 H.65 E F3(x)A F0 .712(means ESC)3.212 F F3(x)3.212 E F0 3.212(,i)C .712(.e., press the Escape k)-3.212 F 1.011 -.15(ey t)-.1 H .711(hen the).15 F F3(x)3.981 E F0 -.1(ke)3.741 G 4.511 -.65(y. T)-.05 H .711(his mak).65 F .711(es ESC the)-.1 F F3 .711(meta pr)3.211 F (e\214x)-.37 E F0(.)A .48(The combination M\255C\255)108 434.4 R F3(x)A F0 .48(means ESC\255Control\255)2.98 F F3(x)A F0 2.98(,o)C 2.98(rp)-2.98 G .48(ress the Escape k)-2.98 F .78 -.15(ey t)-.1 H .48 (hen hold the Control k).15 F .78 -.15(ey w)-.1 H(hile).15 E (pressing the)108 446.4 Q F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G (\)).65 E .62(Readline commands may be gi)108 463.2 R -.15(ve)-.25 G 3.119(nn).15 G(umeric)-3.119 E F3(ar)3.119 E(guments)-.37 E F0 3.119(,w) .27 G .619(hich normally act as a repeat count.)-3.119 F(Sometimes,) 5.619 E(ho)108 475.2 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti).4 G 3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619 (gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne) .15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619 (ument to a command that).18 F 1.019(acts in the forw)108 487.2 R 1.018 (ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C 1.018(auses that command to act in a backw)-3.518 F 1.018 (ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 499.2 Q (vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo) -.25 E -.65(w.)-.25 G .811(When a command is described as)108 516 R F3 (killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811 (xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .812 (or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F3 (yank-)-3.312 E(ing)108 528 Q F0 2.529(\). The)B .029(killed te)2.529 F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F3 .029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H .029(ills cause the te).15 F .029(xt to be accumulated into one unit,) -.15 F .567(which can be yank)108 540 R .567(ed all at once.)-.1 F .567 (Commands which do not kill te)5.567 F .567 (xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.) 108 552 Q F1(INITIALIZA)72 568.8 Q(TION FILE)-1.04 E F0 .091(Readline i\ s customized by putting commands in an initialization \214le \(the)108 580.8 R F3(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .091 (name of this \214le)2.591 F 1.442(is tak)108 592.8 R 1.443 (en from the v)-.1 F 1.443(alue of the)-.25 F F2(INPUTRC)3.943 E F0(en) 3.943 E 1.443(vironment v)-.4 F 3.943(ariable. If)-.25 F 1.443(that v) 3.943 F 1.443(ariable is unset, the def)-.25 F 1.443(ault is)-.1 F F3 (~/.inputr)108 604.8 Q(c)-.37 E F0 5.058(.I).31 G 2.558(ft)-5.058 G .058 (hat \214le)-2.558 F .058(does not e)5.058 F .058 (xist or cannot be read, the ultimate def)-.15 F .058(ault is)-.1 F F3 (/etc/inputr)2.557 E(c)-.37 E F0 5.057(.W).31 G .057(hen a program) -5.057 F 1.158(which uses the readline library starts up, the init \214\ le is read, and the k)108 616.8 R 1.459 -.15(ey b)-.1 H 1.159 (indings and v).15 F 1.159(ariables are set.)-.25 F .029 (There are only a fe)108 628.8 R 2.529(wb)-.25 G .029 (asic constructs allo)-2.529 F .028(wed in the readline init \214le.) -.25 F .028(Blank lines are ignored.)5.028 F .028(Lines be)5.028 F(gin-) -.15 E .553(ning with a)108 640.8 R F2(#)3.053 E F0 .554(are comments.) 3.053 F .554(Lines be)5.554 F .554(ginning with a)-.15 F F2($)3.054 E F0 .554(indicate conditional constructs.)3.054 F .554(Other lines denote) 5.554 F -.1(ke)108 652.8 S 2.987(yb)-.05 G .487(indings and v)-2.987 F .487(ariable settings.)-.25 F .487 (Each program using this library may add its o)5.487 F .486 (wn commands and bind-)-.25 F(ings.)108 664.8 Q -.15(Fo)108 681.6 S 2.5 (re).15 G(xample, placing)-2.65 E(M\255Control\255u: uni)144 698.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(or)108 710.4 Q (C\255Meta\255u: uni)144 722.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument) -.18 E(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(1)190.955 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E(into the)108 84 Q/F1 10 /Times-Italic@0 SF(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G (cute the readline command).15 E F1(univer)2.5 E(sal\255ar)-.1 E(gument) -.37 E F0(.).68 E 2.795(The follo)108 100.8 R 2.795 (wing symbolic character names are recognized while processing k)-.25 F 3.095 -.15(ey b)-.1 H(indings:).15 E F1(DEL)5.295 E F0(,).53 E F1(ESC) 5.295 E F0(,).72 E F1(ESCAPE)108 112.8 Q F0(,).73 E F1(LFD)2.5 E F0(,) .28 E F1(NEWLINE)2.5 E F0(,).73 E F1(RET)2.5 E F0(,)1.27 E F1(RETURN)2.5 E F0(,)1.1 E F1 -.4(RU)2.5 G(BOUT).4 E F0(,)1.27 E F1(SP)2.5 E -.3(AC) -.9 G(E).3 E F0(,).73 E F1(SPC)2.5 E F0 2.5(,a).72 G(nd)-2.5 E F1 -.5 (TA)2.5 G(B).5 E F0(.).27 E .209 (In addition to command names, readline allo)108 129.6 R .209(ws k)-.25 F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209 (ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i) -.1 H(s).15 E(pressed \(a)108 141.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A/F2 10/Times-Bold@0 SF -.25(Ke)87 158.4 S 2.5(yB).25 G(indings)-2.5 E F0 .366(The syntax for controlling k)108 170.4 R .666 -.15(ey b)-.1 H .366 (indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0 .366 (\214le is simple.)3.176 F .366(All that is required is the name of the) 5.366 F .264(command or the te)108 182.4 R .264(xt of a macro and a k) -.15 F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.) .15 F .263(The name may be speci-)5.264 F .853(\214ed in one of tw)108 194.4 R 3.353(ow)-.1 G .853(ays: as a symbolic k)-3.453 F 1.153 -.15 (ey n)-.1 H .853(ame, possibly with).15 F F1(Meta\255)3.353 E F0(or) 3.353 E F1(Contr)3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853 (es, or as a k)-.15 F -.15(ey)-.1 G 2.919(sequence. The)108 206.4 R .419 (name and k)2.919 F .719 -.15(ey s)-.1 H .419 (equence are separated by a colon.).15 F .419 (There can be no whitespace between the)5.419 F(name and the colon.)108 218.4 Q .361(When using the form)108 235.2 R F2 -.1(ke)2.861 G(yname).1 E F0(:)A F1(function-name).833 E F0(or)2.861 E F1(macr)2.861 E(o)-.45 E F0(,)A F1 -.1(ke)2.861 G(yname)-.2 E F0 .362(is the name of a k)3.042 F .662 -.15(ey s)-.1 H .362(pelled out in Eng-).15 F 2.5(lish. F)108 247.2 R(or e)-.15 E(xample:)-.15 E(Control\255u: uni)144 271.2 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(Meta\255Rubout: backw)144 283.2 Q (ard\255kill\255w)-.1 E(ord)-.1 E(Control\255o: "> output")144 295.2 Q .148(In the abo)108 312 R .448 -.15(ve ex)-.15 H(ample,).15 E F1(C\255u) 2.488 E F0 .148(is bound to the function)2.898 F F2(uni)2.647 E -.1(ve) -.1 G(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M-DEL)3.327 E F0 .147 (is bound to the function)3.177 F F2(backward\255kill\255w)108 324 Q (ord)-.1 E F0 3.835(,a)C(nd)-3.835 E F1(C\255o)3.675 E F0 1.336 (is bound to run the macro e)4.016 F 1.336 (xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 336 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 (into the line\).)2.5 E .056(In the second form,)108 352.8 R F2("k)2.556 E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr) 2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 (fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 (ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284 (denoting an entire k)108 364.8 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ ay be speci\214ed by placing the sequence within double quotes.).15 F (Some)6.284 E .386(GNU Emacs style k)108 376.8 R .686 -.15(ey e)-.1 H .385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385 (xample, b)-.15 F .385(ut the symbolic character names)-.2 F (are not recognized.)108 388.8 Q("\\C\255u": uni)144 412.8 Q -.15(ve) -.25 G(rsal\255ar).15 E(gument)-.18 E ("\\C\255x\\C\255r": re\255read\255init\255\214le)144 424.8 Q ("\\e[11~": "Function K)144 436.8 Q .3 -.15(ey 1)-.25 H(").15 E .198 (In this e)108 453.6 R(xample,)-.15 E F1(C-u)2.538 E F0 .199(is ag)2.949 F .199(ain bound to the function)-.05 F F2(uni)2.699 E -.1(ve)-.1 G (rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .199(C-x C-r)5.039 F F0 .199 (is bound to the function)3.429 F F2 -.18(re)108 465.6 S.18 E (ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1(ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F3(Function Key 1)2.5 E F0(.)A(The full set of GNU Emacs style escape sequences a)108 482.4 Q -.25(va)-.2 G(ilable when specifying k).25 E .3 -.15(ey s)-.1 H (equences is).15 E F2<5c43ad>144 494.4 Q F0(control pre\214x)180 494.4 Q F2<5c4dad>144 506.4 Q F0(meta pre\214x)180 506.4 Q F2(\\e)144 518.4 Q F0 (an escape character)180 518.4 Q F2(\\\\)144 530.4 Q F0(backslash)180 530.4 Q F2(\\")144 542.4 Q F0(literal ", a double quote)180 542.4 Q F2 (\\')144 554.4 Q F0(literal ', a single quote)180 554.4 Q(In addition t\ o the GNU Emacs style escape sequences, a second set of backslash escap\ es is a)108 571.2 Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 583.2 Q F0 (alert \(bell\))180 583.2 Q F2(\\b)144 595.2 Q F0(backspace)180 595.2 Q F2(\\d)144 607.2 Q F0(delete)180 607.2 Q F2(\\f)144 619.2 Q F0 (form feed)180 619.2 Q F2(\\n)144 631.2 Q F0(ne)180 631.2 Q(wline)-.25 E F2(\\r)144 643.2 Q F0(carriage return)180 643.2 Q F2(\\t)144 655.2 Q F0 (horizontal tab)180 655.2 Q F2(\\v)144 667.2 Q F0 -.15(ve)180 667.2 S (rtical tab).15 E F2(\\)144 679.2 Q F1(nnn)A F0 (the eight-bit character whose v)180 679.2 Q(alue is the octal v)-.25 E (alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144 691.2 Q F1(HH)A F0(the eight-bit character whose v)180 691.2 Q (alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0 (\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E .74 (When entering the te)108 708 R .74(xt of a macro, single or double quo\ tes should be used to indicate a macro de\214nition.)-.15 F .089 (Unquoted te)108 720 R .089(xt is assumed to be a function name.)-.15 F .09(In the macro body)5.089 F 2.59(,t)-.65 G .09 (he backslash escapes described abo)-2.59 F -.15(ve)-.15 G (GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(2)190.955 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E(are e)108 84 Q 2.5 (xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G (ther character in the macro te)-2.5 E(xt, including " and '.)-.15 E/F1 10/Times-Bold@0 SF(Bash)108 100.8 Q F0(allo)2.93 E .43 (ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429 (indings to be displayed or modi\214ed with the).15 F F1(bind)2.929 E F0 -.2(bu)2.929 G .429(iltin command.).2 F 1.095 (The editing mode may be switched during interacti)108 112.8 R 1.395 -.15(ve u)-.25 H 1.095(se by using the).15 F F13.595 E F0 1.095 (option to the)3.595 F F1(set)3.595 E F0 -.2(bu)3.595 G 1.095 (iltin com-).2 F 3.076(mand. Other)108 124.8 R .576 (programs using this library pro)3.076 F .575(vide similar mechanisms.) -.15 F(The)5.575 E/F2 10/Times-Italic@0 SF(inputr)3.085 E(c)-.37 E F0 .575(\214le may be edited and)3.385 F(re-read if a program does not pro) 108 136.8 Q(vide an)-.15 E 2.5(yo)-.15 G(ther means to incorporate ne) -2.5 E 2.5(wb)-.25 G(indings.)-2.5 E F1 -.92(Va)87 153.6 S(riables).92 E F0 .043(Readline has v)108 165.6 R .043 (ariables that can be used to further customize its beha)-.25 F(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043(riable may be set in the).25 F F2 (inpu-)2.554 E(tr)108 177.6 Q(c)-.37 E F0 (\214le with a statement of the form)2.81 E F1(set)144 194.4 Q F2 (variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 211.2 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F (alues)-.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79 (\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-) 5.79 E .448(nized v)108 223.2 R .448(ariable names are ignored.)-.25 F .448(When a v)5.448 F .448(ariable v)-.25 F .448 (alue is read, empty or null v)-.25 F .449(alues, "on" \(case-insensi-) -.25 F(ti)108 235.2 Q -.15(ve)-.25 G .468(\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On)2.968 E F0 5.468(.A)C .468 (ll other v)-5.468 F .468(alues are equi)-.25 F -.25(va)-.25 G .468 (lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .467(he v)-5.468 F .467 (ariables and their def)-.25 F(ault)-.1 E -.25(va)108 247.2 S(lues are:) .25 E F1(bell\255style \(audible\))108 264 Q F0 .01 (Controls what happens when readline w)144 276 R .011 (ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none) 2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E .94(rings the bell.)144 288 R .94(If set to)5.94 F F1(visible)3.44 E F0 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va) -.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0(,)A (readline attempts to ring the terminal')144 300 Q 2.5(sb)-.55 G(ell.) -2.5 E F1(bind\255tty\255special\255chars \(On\))108 312 Q F0 .333 (If set to)144 324 R F1(On)2.833 E F0 .334(\(the def)2.833 F .334 (ault\), readline attempts to bind the control characters)-.1 F .334 (treated specially by the)7.834 F -.1(ke)144 336 S(rnel').1 E 2.5(st) -.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G (heir readline equi)-2.5 E -.25(va)-.25 G(lents.).25 E F1 (blink\255matching\255par)108 348 Q(en \(Off\))-.18 E F0 .21(If set to) 144 360 R F1(On)2.71 E F0 2.71(,r)C .21 (eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21 (he cursor to an opening parenthesis when a closing).15 F (parenthesis is inserted.)144 372 Q F1(color)108 384 Q (ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to) 144 396 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\ dline displays the common pre\214x of the set of possible)-3.015 F 2.936 (completions using a dif)144 408 R 2.936(ferent color)-.25 F 7.936(.T) -.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.935 (en from the v)-.1 F 2.935(alue of the)-.25 F F1(LS_COLORS)144 420 Q F0 (en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 432 Q (ed\255stats \(Off\))-.18 E F0 1.579(If set to)144 444 R F1(On)4.079 E F0 4.079(,r)C 1.579(eadline displays possible completions using dif) -4.079 F 1.58(ferent colors to indicate their \214le)-.25 F 2.5 (type. The)144 456 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E (ariable.)-.25 E F1(comment\255begin \(`)108 468 Q(`#')-.63 E('\))-.63 E F0 .062(The string that is inserted in)144 480 R F1(vi)2.562 E F0 .062 (mode when the)2.562 F F1(insert\255comment)2.562 E F0 .062 (command is e)2.562 F -.15(xe)-.15 G 2.562(cuted. This).15 F(com-)2.562 E(mand is bound to)144 492 Q F1(M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0(in vi command mode.)2.5 E F1 (completion\255display\255width \(\2551\))108 504 Q F0 1.453(The number\ of screen columns used to display possible matches when performing com\ pletion.)144 516 R .194(The v)144 528 R .193(alue is ignored if it is l\ ess than 0 or greater than the terminal screen width.)-.25 F 2.693(Av) 5.193 G .193(alue of 0 will)-2.943 F (cause matches to be displayed one per line.)144 540 Q(The def)5 E (ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 552 Q (e\255case \(Off\))-.18 E F0(If set to)144 564 Q F1(On)2.5 E F0 2.5(,r)C (eadline performs \214lename matching and completion in a case\255insen\ siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 (completion\255map\255case \(Off\))108 576 Q F0 .093(If set to)144 588 R F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E (e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093 (yphens \()-.05 F F2A F0 2.593(\)a)C .094(nd underscores)-2.593 F (\()144 600 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G(qui)-2.5 E -.25(va)-.25 G(lent when performing case\255insensiti).25 E .3 -.15(ve \214)-.25 H (lename matching and completion.).15 E F1(completion\255pr)108 612 Q (e\214x\255display\255length \(0\))-.18 E F0 .829(The length in charact\ ers of the common pre\214x of a list of possible completions that is di\ splayed)144 624 R 1.274(without modi\214cation.)144 636 R 1.274 (When set to a v)6.274 F 1.274(alue greater than zero, common pre\214x) -.25 F 1.275(es longer than this)-.15 F -.25(va)144 648 S(lue are repla\ ced with an ellipsis when displaying possible completions.).25 E F1 (completion\255query\255items \(100\))108 660 Q F0 .53 (This determines when the user is queried about vie)144 672 R .529 (wing the number of possible completions gen-)-.25 F .56(erated by the) 144 684 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F .561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v) -.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 696 R .783(If the number of possible completions is greater than or equal to \ the v)5.783 F .782(alue of this)-.25 F -.25(va)144 708 S .237 (riable, the user is ask).25 F .237(ed whether or not he wishes to vie) -.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G .237(re simply listed)-2.737 F(on the terminal.)144 720 Q 2.5(An)5 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve v)-.25 H (alue causes readline to ne)-.1 E -.15(ve)-.25 G 2.5(ra).15 G(sk.)-2.5 E (GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(3)190.955 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF (con)108 84 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)144 96 R F1(On)3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve) -.4 G .613(rt characters with the eighth bit set to an ASCII k).15 F .912 -.15(ey s)-.1 H .612(equence by).15 F 1.315(stripping the eighth b\ it and pre\214xing it with an escape character \(in ef)144 108 R 1.316 (fect, using escape as the)-.25 F/F2 10/Times-Italic@0 SF .503(meta pr) 144 120 R(e\214x)-.37 E F0 3.003(\). The)B(def)3.003 E .503(ault is)-.1 F F2(On)3.003 E F0 3.003(,b)C .503(ut readline will set it to)-3.203 F F2(Of)3.003 E(f)-.18 E F0 .502(if the locale contains eight-bit char) 3.003 F(-)-.2 E(acters.)144 132 Q F1(disable\255completion \(Off\))108 144 Q F0 .038(If set to)144 156 R F1(On)2.538 E F0 2.538(,r)C .038 (eadline will inhibit w)-2.538 F .038(ord completion.)-.1 F .038 (Completion characters will be inserted into the)5.038 F(line as if the) 144 168 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 (.)A F1(echo\255contr)108 180 Q(ol\255characters \(On\))-.18 E F0 1.211 (When set to)144 192 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G 1.211(perating systems that indicate the)-3.711 F 3.711(ys)-.15 G 1.21 (upport it, readline echoes a character)-3.711 F (corresponding to a signal generated from the k)144 204 Q -.15(ey)-.1 G (board.).15 E F1(editing\255mode \(emacs\))108 216 Q F0 .141 (Controls whether readline be)144 228 R .141(gins with a set of k)-.15 F .441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0 (or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0 (can be set to either)144 240 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E F0(.)A F1(emacs\255mode\255string \(@\))108 252 Q F0 .518(If the)144 264 R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G .517(riable is enabled, this string is displayed immediately before the) .25 F .622 (last line of the primary prompt when emacs editing mode is acti)144 276 R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F .622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 288 S 3.34(yb)-.05 G .839(inding, so the standard set of meta- and control pre\214x)-3.34 F .839(es and backslash escape sequences is)-.15 F -.2(av)144 300 S 2.798 (ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298 (gin and end sequences of non-printing characters, which)-.15 F (can be used to embed a terminal control sequence into the mode string.) 144 312 Q F1(enable\255brack)108 324 Q(eted\255paste \(Off\))-.1 E F0 1.222(When set to)144 336 R F1(On)3.721 E F0 3.721(,r)C 1.221 (eadline will con\214gure the terminal in a w)-3.721 F 1.221 (ay that will enable it to insert each)-.1 F .353 (paste into the editing b)144 348 R(uf)-.2 E .353(fer as a single strin\ g of characters, instead of treating each character as if)-.25 F .544 (it had been read from the k)144 360 R -.15(ey)-.1 G 3.043(board. This) .15 F .543(can pre)3.043 F -.15(ve)-.25 G .543 (nt pasted characters from being interpreted as).15 F(editing commands.) 144 372 Q F1(enable\255k)108 384 Q(eypad \(Off\))-.1 E F0 .892 (When set to)144 396 R F1(On)3.393 E F0 3.393(,r)C .893 (eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G .893(pad when it is called.).15 F .893(Some sys-)5.893 F (tems need this to enable the arro)144 408 Q 2.5(wk)-.25 G -.15(ey)-2.6 G(s.).15 E F1(enable\255meta\255k)108 420 Q(ey \(On\))-.1 E F0 .64 (When set to)144 432 R F1(On)3.14 E F0 3.14(,r)C .64 (eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64 (eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64 (he terminal claims to support).15 F(when it is called.)144 444 Q (On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H 2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1 (expand\255tilde \(Off\))108 456 Q F0(If set to)144 468 Q F1(On)2.5 E F0 2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w) -.15 E(ord completion.)-.1 E F1(history\255pr)108 480 Q(eser)-.18 E -.1 (ve)-.1 G(\255point \(Off\)).1 E F0 1.338(If set to)144 492 R F1(On) 3.838 E F0 3.838(,t)C 1.338(he history code attempts to place point at \ the same location on each history line)-3.838 F(retrie)144 504 Q -.15 (ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G (ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1 (history\255size \(unset\))108 516 Q F0 .949 (Set the maximum number of history entries sa)144 528 R -.15(ve)-.2 G 3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .948 (If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 E .482 (history entries are deleted and no ne)144 540 R 2.982(we)-.25 G .483 (ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483(set to a v) 2.983 F .483(alue less than zero, the num-)-.25 F .356 (ber of history entries is not limited.)144 552 R .356(By def)5.356 F .355(ault, the number of history entries is not limited.)-.1 F .355 (If an)5.355 F 1.97(attempt is made to set)144 564 R F2(history\255size) 4.47 E F0 1.97(to a non-numeric v)4.47 F 1.97 (alue, the maximum number of history)-.25 F(entries will be set to 500.) 144 576 Q F1(horizontal\255scr)108 588 Q(oll\255mode \(Off\))-.18 E F0 .449(When set to)144 600 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448 (es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448 (crolling the input horizontally on a)-2.948 F 1.194(single screen line\ when it becomes longer than the screen width rather than wrapping to a\ ne)144 612 R(w)-.25 E(line.)144 624 Q F1(input\255meta \(Off\))108 636 Q F0 .367(If set to)144 648 R F1(On)2.867 E F0 2.867(,r)C .367(eadline \ will enable eight-bit input \(that is, it will not clear the eighth bit\ in the char)-2.867 F(-)-.2 E .956(acters it reads\), re)144 660 R -.05 (ga)-.15 G .956(rdless of what the terminal claims it can support.).05 F .957(The name)5.956 F F1(meta\255\215ag)3.457 E F0 .957(is a)3.457 F (synon)144 672 Q .77(ym for this v)-.15 F 3.27(ariable. The)-.25 F(def) 3.27 E .77(ault is)-.1 F F2(Of)3.27 E(f)-.18 E F0 3.27(,b)C .77 (ut readline will set it to)-3.47 F F2(On)3.27 E F0 .77 (if the locale contains)3.27 F(eight-bit characters.)144 684 Q F1(isear) 108 696 Q(ch\255terminators \(`)-.18 E(`C\255[ C\255J')-.63 E('\))-.63 E F0 .439(The string of characters that should terminate an incremental s\ earch without subsequently e)144 708 R -.15(xe)-.15 G(cut-).15 E .935 (ing the character as a command.)144 720 R .935(If this v)5.935 F .935 (ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934 (alue, the characters)-3.684 F F2(ESC)3.434 E F0(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(4)190.955 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E(and)144 84 Q/F1 10 /Times-Italic@0 SF(C\255J)2.5 E F0 (will terminate an incremental search.)2.5 E/F2 10/Times-Bold@0 SF -.1 (ke)108 96 S(ymap \(emacs\)).1 E F0 2.323(Set the current readline k)144 108 R -.15(ey)-.1 G 4.823(map. The).15 F 2.323(set of le)4.823 F -.05 (ga)-.15 G 4.823(lk).05 G -.15(ey)-4.923 G 2.323(map names is).15 F F1 2.324(emacs, emacs-standar)4.823 F(d,)-.37 E .809 (emacs-meta, emacs-ctlx, vi, vi-mo)144 120 R(ve)-.1 E 3.308(,v)-.1 G (i-command)-3.308 E F0 3.308(,a)C(nd)-3.308 E F1(vi-insert)3.308 E F0(.) .68 E F1(vi)5.808 E F0 .808(is equi)3.308 F -.25(va)-.25 G .808(lent to) .25 F F1(vi-command)3.308 E F0(;)A F1(emacs)144 132 Q F0 .697(is equi) 3.196 F -.25(va)-.25 G .697(lent to).25 F F1(emacs-standar)3.197 E(d) -.37 E F0 5.697(.T)C .697(he def)-5.697 F .697(ault v)-.1 F .697 (alue is)-.25 F F1(emacs)3.197 E F0 5.697(.T).27 G .697(he v)-5.697 F .697(alue of)-.25 F F2(editing\255mode)3.197 E F0(also af)144 144 Q (fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F2 -.1(ke) 108 156 S(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration) 144 168 R F1 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367 (ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s) -.1 H(equence).15 E 1.356(\(one that can form a complete k)144 180 R 1.656 -.15(ey s)-.1 H 1.356(equence using the input read so f).15 F(ar) -.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.356(an tak)-3.856 F 3.856(ea) -.1 G(dditional)-3.856 E .32(input to complete a longer k)144 192 R .62 -.15(ey s)-.1 H 2.82(equence\). If).15 F .32(no input is recei)2.82 F -.15(ve)-.25 G 2.82(dw).15 G .32(ithin the timeout,)-2.82 F F1 -.37(re) 2.82 G(adline).37 E F0(will)2.82 E .906(use the shorter b)144 204 R .907 (ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407(equence. The).15 F -.25 (va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .907 (alue of)-.25 F .05(1000 means that)144 216 R F1 -.37(re)2.55 G(adline) .37 E F0 .05(will w)2.55 F .05(ait one second for additional input.)-.1 F .05(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051 (less than or equal to zero, or to a non-numeric v)144 228 R(alue,)-.25 E F1 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 (ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed) -2.552 E(to decide which k)144 240 Q .3 -.15(ey s)-.1 H (equence to complete.).15 E F2(mark\255dir)108 252 Q(ectories \(On\)) -.18 E F0(If set to)144 264 Q F2(On)2.5 E F0 2.5(,c)C (ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.) .15 E F2(mark\255modi\214ed\255lines \(Off\))108 276 Q F0(If set to)144 288 Q F2(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) -.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F2 (*)A F0(\).)A F2(mark\255symlink)108 300 Q(ed\255dir)-.1 E (ectories \(Off\))-.18 E F0 .175(If set to)144 312 R F2(On)2.675 E F0 2.675(,c)C .175 (ompleted names which are symbolic links to directories ha)-2.675 F .475 -.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 324 Q(alue of)-.25 E F2(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F2 (match\255hidden\255\214les \(On\))108 336 Q F0 .192(This v)144 348 R .192(ariable, when set to)-.25 F F2(On)2.692 E F0 2.692(,c)C .192 (auses readline to match \214les whose names be)-2.692 F .193 (gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457 (\214les\) when performing \214lename completion.)144 360 R .456 (If set to)5.456 F F2(Off)2.956 E F0 2.956(,t)C .456(he leading `.) -2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F (user in the \214lename to be completed.)144 372 Q F2 (menu\255complete\255display\255pr)108 384 Q(e\214x \(Off\))-.18 E F0 1.585(If set to)144 396 R F2(On)4.085 E F0 4.085(,m)C 1.585(enu complet\ ion displays the common pre\214x of the list of possible completions) -4.085 F(\(which may be empty\) before c)144 408 Q (ycling through the list.)-.15 E F2(output\255meta \(Off\))108 420 Q F0 .507(If set to)144 432 R F2(On)3.007 E F0 3.007(,r)C .507(eadline will \ display characters with the eighth bit set directly rather than as a me\ ta-)-3.007 F(pre\214x)144 444 Q .884(ed escape sequence.)-.15 F .884 (The def)5.884 F .884(ault is)-.1 F F1(Of)3.384 E(f)-.18 E F0 3.384(,b)C .884(ut readline will set it to)-3.584 F F1(On)3.384 E F0 .885 (if the locale contains)3.384 F(eight-bit characters.)144 456 Q F2 (page\255completions \(On\))108 468 Q F0 .809(If set to)144 480 R F2(On) 3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F1(mor) 3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 (ager to display a screenful of possible comple-)-3.308 F (tions at a time.)144 492 Q F2 (print\255completions\255horizontally \(Off\))108 504 Q F0 1.318 (If set to)144 516 R F2(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\ play completions with matches sorted horizontally in alphabetical)-3.818 F(order)144 528 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 E F2 -2.29 -.18(re v)108 540 T(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 552 R F2(On)3.199 E F0 3.199(,r)C .699 (eadline will undo all changes to history lines before returning when) -3.199 F F2(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 564 S 2.686(cuted. By).15 F(def)2.686 E .186 (ault, history lines may be modi\214ed and retain indi)-.1 F .186 (vidual undo lists across calls to)-.25 F F2 -.18(re)144 576 S(adline) .18 E F0(.)A F2(sho)108 588 Q(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .304(This alters the def)144 600 R .304(ault beha)-.1 F .304 (vior of the completion functions.)-.2 F .304(If set to)5.304 F F2(On) 2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H (ore).15 E 1.264(than one possible completion cause the matches to be l\ isted immediately instead of ringing the)144 612 R(bell.)144 624 Q F2 (sho)108 636 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 (This alters the def)144 648 R 5.346(ault beha)-.1 F 5.345 (vior of the completion functions in a f)-.2 F 5.345(ashion similar to) -.1 F F2(sho)144 660 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C 4.19(fs)-6.69 G 1.691(et to)-4.19 F F2(On)4.191 E F0 4.191(,w)C 1.691 (ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691 (ore than one possible completion).15 F 1.04(without an)144 672 R 3.54 (yp)-.15 G 1.039 (ossible partial completion \(the possible completions don')-3.54 F 3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\ es to be listed immediately instead of ringing the bell.)144 684 Q F2 (sho)108 696 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021 (If set to)144 708 R F2(On)3.521 E F0 3.521(,a)C 1.022 (dd a string to the be)-3.521 F 1.022 (ginning of the prompt indicating the editing mode: emacs, vi)-.15 F (command, or vi insertion.)144 720 Q(The mode strings are user)5 E (-settable \(e.g.,)-.2 E F1(emacs\255mode\255string)2.5 E F0(\).)A (GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(5)190.955 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF (skip\255completed\255text \(Off\))108 84 Q F0 .095(If set to)144 96 R F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095 (ault completion beha)-.1 F .094 (vior when inserting a single match into the line.)-.2 F(It')144 108 Q 2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046 (hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1 F .046(enabled, readline does not)2.546 F 1.394(insert characters from \ the completion that match characters after point in the w)144 120 R 1.394(ord being com-)-.1 F(pleted, so portions of the w)144 132 Q (ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 (vi\255cmd\255mode\255string \(\(cmd\)\))108 144 Q F0 .517(If the)144 156 R/F2 10/Times-Italic@0 SF(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G .518 (riable is enabled, this string is displayed immediately before the).25 F .475(last line of the primary prompt when vi editing mode is acti)144 168 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475(The v) 5.475 F(alue)-.25 E 1.235(is e)144 180 R 1.235(xpanded lik)-.15 F 3.735 (eak)-.1 G 1.535 -.15(ey b)-3.835 H 1.236 (inding, so the standard set of meta- and control pre\214x).15 F 1.236 (es and backslash)-.15 F .315(escape sequences is a)144 192 R -.25(va) -.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F .314(gin and end sequences of non-print-)-.15 F(ing characters, which c\ an be used to embed a terminal control sequence into the mode string.) 144 204 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 216 Q F0 .517 (If the)144 228 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G .518 (riable is enabled, this string is displayed immediately before the).25 F .186(last line of the primary prompt when vi editing mode is acti)144 240 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v) 5.186 F .186(alue is)-.25 F -.15(ex)144 252 S 1.929(panded lik).15 F 4.429(eak)-.1 G 2.229 -.15(ey b)-4.529 H 1.929 (inding, so the standard set of meta- and control pre\214x).15 F 1.93 (es and backslash)-.15 F .315(escape sequences is a)144 264 R -.25(va) -.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F .314(gin and end sequences of non-print-)-.15 F(ing characters, which c\ an be used to embed a terminal control sequence into the mode string.) 144 276 Q F1(visible\255stats \(Off\))108 288 Q F0 .846(If set to)144 300 R F1(On)3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le') -3.346 F 3.346(st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346 E F0 .846(\(2\) is appended to the \214lename)B (when listing possible completions.)144 312 Q F1(Conditional Constructs) 87 328.8 Q F0 .05(Readline implements a f)108 340.8 R .05(acility simil\ ar in spirit to the conditional compilation features of the C preproces\ sor)-.1 F .096(which allo)108 352.8 R .096(ws k)-.25 F .396 -.15(ey b) -.1 H .096(indings and v).15 F .096 (ariable settings to be performed as the result of tests.)-.25 F .097 (There are four parser)5.096 F(directi)108 364.8 Q -.15(ve)-.25 G 2.5 (su).15 G(sed.)-2.5 E F1($if)108 381.6 Q F0(The)144 381.6 Q F1($if)2.963 E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\ he editing mode, the terminal being used,)-.25 F .961 (or the application using readline.)144 393.6 R .961(The te)5.961 F .961 (xt of the test, after an)-.15 F 3.462(yc)-.15 G .962 (omparison operator)-3.462 F 3.462(,e)-.4 G .962(xtends to)-3.612 F(the\ end of the line; unless otherwise noted, no characters are required to\ isolate it.)144 405.6 Q F1(mode)144 422.4 Q F0(The)180 422.4 Q F1 (mode=)3.712 E F0 1.212(form of the)3.712 F F1($if)3.711 E F0(directi) 3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211 (sed to test whether readline is in emacs or vi)-3.711 F 3.065 (mode. This)180 434.4 R .565(may be used in conjunction with the)3.065 F F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to) 3.065 F .03(set bindings in the)180 446.4 R F2(emacs-standar)2.529 E(d) -.37 E F0(and)2.529 E F2(emacs-ctlx)2.529 E F0 -.1(ke)2.529 G .029 (ymaps only if readline is starting out)-.05 F(in emacs mode.)180 458.4 Q F1(term)144 475.2 Q F0(The)180 475.2 Q F1(term=)3.196 E F0 .696 (form may be used to include terminal-speci\214c k)3.196 F .996 -.15 (ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 487.2 R .954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154 (sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1 (wo)3.154 G .654(rd on the right side of).1 F(the)180 499.2 Q F1(=)3.003 E F0 .503(is tested ag)3.003 F .504(ainst the full name of the terminal\ and the portion of the terminal name)-.05 F(before the \214rst)180 511.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 (to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.5 E F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 528 S(rsion).1 E F0(The) 180 540 Q F1 -.1(ve)3.109 G(rsion).1 E F0 .608 (test may be used to perform comparisons ag)3.109 F .608 (ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 552 Q F1 -.1 (ve)3.928 G(rsion).1 E F0 -.15(ex)3.928 G 1.428 (pands to the current readline v).15 F 3.928(ersion. The)-.15 F 1.429 (set of comparison operators)3.929 F(includes)180 564 Q F1(=)2.606 E F0 2.606(,\()C(and)-2.606 E F1(==)2.606 E F0(\),)A F1(!=)2.606 E F0(,)A F1 (<=)2.606 E F0(,)A F1(>=)2.606 E F0(,)A F1(<)2.606 E F0 2.606(,a)C(nd) -2.606 E F1(>)2.606 E F0 5.106(.T)C .106(he v)-5.106 F .106 (ersion number supplied on the right side)-.15 F 1.471 (of the operator consists of a major v)180 576 R 1.471(ersion number) -.15 F 3.972(,a)-.4 G 3.972(no)-3.972 G 1.472 (ptional decimal point, and an)-3.972 F .767(optional minor v)180 588 R .767(ersion \(e.g.,)-.15 F F1(7.1)3.267 E F0 .766(\). If the minor v)B .766(ersion is omitted, it is assumed to be)-.15 F F1(0)3.266 E F0(.)A 1.755(The operator may be separated from the string)180 600 R F1 -.1(ve) 4.255 G(rsion).1 E F0 1.756(and from the v)4.256 F 1.756(ersion number) -.15 F(ar)180 612 Q(gument by whitespace.)-.18 E F1(application)144 628.8 Q F0(The)180 640.8 Q F1(application)3.003 E F0 .503 (construct is used to include application-speci\214c settings.)3.003 F .503(Each program)5.503 F .114(using the readline library sets the)180 652.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 (nd an initialization \214le can test for a)-2.614 F .501(particular v) 180 664.8 R 3.001(alue. This)-.25 F .501(could be used to bind k)3.001 F .801 -.15(ey s)-.1 H .5(equences to functions useful for a spe-).15 F .396(ci\214c program.)180 676.8 R -.15(Fo)5.396 G 2.896(ri).15 G .396 (nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15 (ey s)-.1 H .397(equence that quotes the).15 F(current or pre)180 688.8 Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 712.8 Q F0 (Bash)2.5 E 2.5(#Q)180 724.8 S(uote the current or pre)-2.5 E(vious w) -.25 E(ord)-.1 E(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(6) 190.955 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E ("\\C-xq": "\\eb\\"\\ef\\"")180 84 Q/F1 10/Times-Bold@0 SF($endif)180 96 Q/F2 10/Times-Italic@0 SF(variable)144 112.8 Q F0(The)180 124.8 Q F2 (variable)3.777 E F0 1.277(construct pro)3.777 F 1.276 (vides simple equality tests for readline v)-.15 F 1.276(ariables and v) -.25 F(alues.)-.25 E .079(The permitted comparison operators are)180 136.8 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2 (!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .08 (ariable name must be sepa-)-.25 F .98(rated from the comparison operat\ or by whitespace; the operator may be separated from)180 148.8 R .129 (the v)180 160.8 R .129(alue on the right hand side by whitespace.)-.25 F .13(Both string and boolean v)5.129 F .13(ariables may be)-.25 F (tested. Boolean v)180 172.8 Q(ariables must be tested ag)-.25 E (ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f) -.18 E F0(.)A F1($endif)108 189.6 Q F0(This command, as seen in the pre) 144 189.6 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0 (command.)2.5 E F1($else)108 206.4 Q F0(Commands in this branch of the) 144 206.4 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 223.2 Q F0 .357(This directi)144 235.2 R .657 -.15(ve t)-.25 H(ak).15 E .357(es a single \214lename as an ar)-.1 F .356 (gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) 144 247.2 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 -.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1 ($include)144 271.2 Q F2(/etc/inputr)5.833 E(c)-.37 E/F3 10.95 /Times-Bold@0 SF(SEARCHING)72 288 Q F0 1.003(Readline pro)108 300 R 1.003(vides commands for searching through the command history for line\ s containing a speci\214ed)-.15 F 2.5(string. There)108 312 R(are tw)2.5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E(emental)-.37 E F0(and) 3.01 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 E .698 (Incremental searches be)108 328.8 R .698 (gin before the user has \214nished typing the search string.)-.15 F .697(As each character of the)5.697 F .112 (search string is typed, readline displays the ne)108 340.8 R .112 (xt entry from the history matching the string typed so f)-.15 F(ar)-.1 E 5.113(.A)-.55 G(n)-5.113 E .545 (incremental search requires only as man)108 352.8 R 3.045(yc)-.15 G .544(haracters as needed to \214nd the desired history entry)-3.045 F 5.544(.T)-.65 G 3.044(os)-6.344 G(earch)-3.044 E(backw)108 364.8 Q .18 (ard in the history for a particular string, type)-.1 F F1(C\255r)2.681 E F0 5.181(.T)C(yping)-5.981 E F1(C\255s)2.681 E F0 .181(searches forw) 2.681 F .181(ard through the history)-.1 F(.)-.65 E .354 (The characters present in the v)108 376.8 R .354(alue of the)-.25 F F1 (isear)2.854 E(ch-terminators)-.18 E F0 -.25(va)2.854 G .354 (riable are used to terminate an incremen-).25 F .6(tal search.)108 388.8 R .6(If that v)5.6 F .6(ariable has not been assigned a v)-.25 F .6(alue the)-.25 F F2(Escape)3.1 E F0(and)3.1 E F1(C\255J)3.1 E F0 .6 (characters will terminate an)3.1 F .123(incremental search.)108 400.8 R F1(C\255G)5.123 E F0 .123 (will abort an incremental search and restore the original line.)2.623 F .122(When the search is)5.122 F(terminated, the history entry containin\ g the search string becomes the current line.)108 412.8 Q 2.406 -.8 (To \214)108 429.6 T .806 (nd other matching entries in the history list, type).8 F F1(C\255s) 3.306 E F0(or)3.306 E F1(C\255r)3.306 E F0 .806(as appropriate.)3.306 F .807(This will search back-)5.806 F -.1(wa)108 441.6 S 1.309(rd or forw) .1 F 1.309(ard in the history for the ne)-.1 F 1.309 (xt line matching the search string typed so f)-.15 F(ar)-.1 E 6.309(.A) -.55 G 1.609 -.15(ny o)-6.309 H 1.308(ther k).15 F -.15(ey)-.1 G .317 (sequence bound to a readline command will terminate the search and e) 108 453.6 R -.15(xe)-.15 G .318(cute that command.).15 F -.15(Fo)5.318 G 2.818(ri).15 G(nstance,)-2.818 E 3.481(an)108 465.6 S -.25(ew)-3.481 G .981(line will terminate the search and accept the line, thereby e).25 F -.15(xe)-.15 G .98(cuting the command from the history).15 F 3.061 (list. A)108 477.6 R(mo)3.061 E -.15(ve)-.15 G .562 (ment command will terminate the search, mak).15 F 3.062(et)-.1 G .562 (he last line found the current line, and be)-3.062 F(gin)-.15 E (editing.)108 489.6 Q .567(Non-incremental searches read the entire sea\ rch string before starting to search for matching history lines.)108 506.4 R(The search string may be typed by the user or be part of the co\ ntents of the current line.)108 518.4 Q F3(EDITING COMMANDS)72 535.2 Q F0 1.391(The follo)108 547.2 R 1.391 (wing is a list of the names of the commands and the def)-.25 F 1.391 (ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F 3.892(ya)-.15 G(re)-3.892 E 2.5(bound. Command)108 559.2 R (names without an accompan)2.5 E(ying k)-.15 E .3 -.15(ey s)-.1 H (equence are unbound by def).15 E(ault.)-.1 E .055(In the follo)108 576 R .055(wing descriptions,)-.25 F F2(point)2.555 E F0 .055 (refers to the current cursor position, and)2.555 F F2(mark)2.555 E F0 .054(refers to a cursor position)2.554 F(sa)108 588 Q -.15(ve)-.2 G 2.5 (db).15 G 2.5(yt)-2.5 G(he)-2.5 E F1(set\255mark)2.5 E F0 2.5 (command. The)2.5 F(te)2.5 E (xt between the point and mark is referred to as the)-.15 E F2 -.37(re) 2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 604.8 Q(or Mo)-.25 E(ving)-.1 E(beginning\255of\255line \(C\255a\))108 616.8 Q F0(Mo)144 628.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1 (end\255of\255line \(C\255e\))108 640.8 Q F0(Mo)144 652.8 Q .3 -.15 (ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 664.8 S(rward\255char \(C\255f\)).25 E F0(Mo)144 676.8 Q .3 -.15(ve f) -.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1 (backward\255char \(C\255b\))108 688.8 Q F0(Mo)144 700.8 Q .3 -.15(ve b) -.15 H(ack a character).15 E(.)-.55 E(GNU Readline 7.0)72 768 Q (2017 December 28)121.245 E(7)190.955 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF -.25(fo)108 84 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 96 Q .822 -.15(ve f)-.15 H(orw).15 E .522(ard to the end of the ne)-.1 F .523 (xt w)-.15 F 3.023(ord. W)-.1 F .523 (ords are composed of alphanumeric characters \(let-)-.8 F (ters and digits\).)144 108 Q F1(backward\255w)108 120 Q(ord \(M\255b\)) -.1 E F0(Mo)144 132 Q 1.71 -.15(ve b)-.15 H 1.41 (ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91 (ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F (characters \(letters and digits\).)144 144 Q F1(pr)108 156 Q -.15(ev) -.18 G(ious\255scr).15 E(een\255line)-.18 E F0 .89(Attempt to mo)144 168 R 1.19 -.15(ve p)-.15 H .89(oint to the same ph).15 F .891 (ysical screen column on the pre)-.05 F .891(vious ph)-.25 F .891 (ysical screen line.)-.05 F .87(This will not ha)144 180 R 1.17 -.15 (ve t)-.2 H .87(he desired ef).15 F .87 (fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G 3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 192 Q(ysical line or if\ point is not greater than the length of the prompt plus the screen wid\ th.)-.05 E F1(next\255scr)108 204 Q(een\255line)-.18 E F0 .637 (Attempt to mo)144 216 R .937 -.15(ve p)-.15 H .637(oint to the same ph) .15 F .638(ysical screen column on the ne)-.05 F .638(xt ph)-.15 F .638 (ysical screen line. This)-.05 F .009(will not ha)144 228 R .309 -.15 (ve t)-.2 H .009(he desired ef).15 F .009 (fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G 2.509(pm)-2.509 G .008(ore than one ph)-2.509 F(ysical)-.05 E .772(line\ or if the length of the current Readline line is not greater than the \ length of the prompt plus)144 240 R(the screen width.)144 252 Q F1 (clear\255scr)108 264 Q(een \(C\255l\))-.18 E F0 .993 (Clear the screen lea)144 276 R .993 (ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G .993(th an ar).4 F .993(gument, refresh the)-.18 F (current line without clearing the screen.)144 288 Q F1 -.18(re)108 300 S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144 312 Q F1(Commands f)87 328.8 Q(or Manipulating the History)-.25 E (accept\255line \(Newline, Retur)108 340.8 Q(n\))-.15 E F0 .364 (Accept the line re)144 352.8 R -.05(ga)-.15 G .364 (rdless of where the cursor is.).05 F .364(If this line is non-empty) 5.364 F 2.864(,i)-.65 G 2.864(tm)-2.864 G .365(ay be added to the)-2.864 F .741(history list for future recall with)144 364.8 R F1 (add_history\(\))3.241 E F0 5.741(.I)C 3.241(ft)-5.741 G .74 (he line is a modi\214ed history line, the history)-3.241 F (line is restored to its original state.)144 376.8 Q F1(pr)108 388.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144 400.8 Q(vious command from the history list, mo)-.25 E (ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 412.8 Q F0(Fetch the ne)144 424.8 Q(xt command from the history list, mo)-.15 E (ving forw)-.15 E(ard in the list.)-.1 E F1 (beginning\255of\255history \(M\255<\))108 436.8 Q F0(Mo)144 448.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.) -.65 E F1(end\255of\255history \(M\255>\))108 460.8 Q F0(Mo)144 472.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5 (,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18 (re v)108 484.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.47(Search backw)144 496.8 R 1.471 (ard starting at the current line and mo)-.1 F 1.471 (ving `up' through the history as necessary)-.15 F(.)-.65 E (This is an incremental search.)144 508.8 Q F1 -.25(fo)108 520.8 S (rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132 (Search forw)144 532.8 R 1.132(ard starting at the current line and mo) -.1 F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary) -.25 F(.)-.65 E(This is an incremental search.)144 544.8 Q F1 (non\255incr)108 556.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H (rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .164(Search backw) 144 568.8 R .164(ard through the history starting at the current line u\ sing a non-incremental search for)-.1 F 2.5(as)144 580.8 S (tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 592.8 Q (emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 604.8 R 1.354(ard through the history using \ a non-incremental search for a string supplied by the)-.1 F(user)144 616.8 Q(.)-.55 E F1(history\255sear)108 628.8 Q(ch\255backward)-.18 E F0 .95(Search backw)144 640.8 R .951(ard through the history for the strin\ g of characters between the start of the current)-.1 F .12 (line and the current cursor position \(the)144 652.8 R/F2 10 /Times-Italic@0 SF(point)2.62 E F0 2.62(\). The)B .12 (search string must match at the be)2.62 F .12(ginning of a)-.15 F (history line.)144 664.8 Q(This is a non-incremental search.)5 E F1 (history\255sear)108 676.8 Q(ch\255f)-.18 E(orward)-.25 E F0 .248 (Search forw)144 688.8 R .249(ard through the history for the string of\ characters between the start of the current line)-.1 F .036 (and the point.)144 700.8 R .036(The search string must match at the be) 5.036 F .035(ginning of a history line.)-.15 F .035 (This is a non-incre-)5.035 F(mental search.)144 712.8 Q (GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(8)190.955 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF (history\255substring\255sear)108 84 Q(ch\255backward)-.18 E F0 .95 (Search backw)144 96 R .951(ard through the history for the string of c\ haracters between the start of the current)-.1 F .007 (line and the current cursor position \(the)144 108 R/F2 10 /Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B .007 (search string may match an)2.507 F .006(ywhere in a history)-.15 F 2.5 (line. This)144 120 R(is a non-incremental search.)2.5 E F1 (history\255substring\255sear)108 132 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 144 R .249(ard through the history for the string \ of characters between the start of the current line)-.1 F .319 (and the point.)144 156 R .319(The search string may match an)5.319 F .319(ywhere in a history line.)-.15 F .318(This is a non-incremental) 5.318 F(search.)144 168 Q F1(yank\255nth\255ar)108 180 Q 2.5(g\()-.1 G <4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 192 R .622 (gument to the pre)-.18 F .622(vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .795(at point.)144 204 R -.4(Wi)5.795 G .794(th an ar).4 F(gument)-.18 E F2(n)3.294 E F0 3.294(,i).24 G .794(nsert the)-3.294 F F2(n)3.294 E F0 .794(th w)B .794 (ord from the pre)-.1 F .794(vious command \(the w)-.25 F .794 (ords in the)-.1 F(pre)144 216 Q .291(vious command be)-.25 F .291 (gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a) -2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291 (ument inserts the).18 F F2(n)2.791 E F0 .291(th w)B .292 (ord from the end of)-.1 F .282(the pre)144 228 R .282(vious command.) -.25 F .282(Once the ar)5.282 F(gument)-.18 E F2(n)2.781 E F0 .281 (is computed, the ar)2.781 F .281(gument is e)-.18 F .281 (xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 240 Q (xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 252 Q 2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307 (Insert the last ar)144 264 R 1.307(gument to the pre)-.18 F 1.307 (vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308 (vious history entry\).)-.25 F -.4(Wi)144 276 S .204(th a numeric ar).4 F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e) -.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi)-5.203 E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar)2.703 E (g)-.1 E F0(mo)144 288 Q .806 -.15(ve b)-.15 H .507 (ack through the history list, inserting the last w).15 F .507 (ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E 1.397(to the \214rst call\) of each line in turn.)144 300 R(An)6.396 E 3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.396 (gument supplied to these successi)-.18 F 1.696 -.15(ve c)-.25 H(alls) .15 E .491(determines the direction to mo)144 312 R .791 -.15(ve t)-.15 H .491(hrough the history).15 F 5.492(.A)-.65 G(ne)-2.5 E -.05(ga)-.15 G (ti).05 E .792 -.15(ve a)-.25 H -.18(rg).15 G .492 (ument switches the direction).18 F .494 (through the history \(back or forw)144 324 R 2.994(ard\). The)-.1 F .494(history e)2.994 F .494(xpansion f)-.15 F .494 (acilities are used to e)-.1 F .494(xtract the last)-.15 F(ar)144 336 Q (gument, as if the "!$" history e)-.18 E(xpansion had been speci\214ed.) -.15 E F1(Commands f)87 352.8 Q(or Changing T)-.25 E(ext)-.92 E F2 (end\255of\255\214le)108 364.8 Q F1(\(usually C\255d\))2.5 E F0 .798 (The character indicating end-of-\214le as set, for e)144 376.8 R .799 (xample, by)-.15 F/F3 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.299 (ft)-5.799 G .799(his character is read when)-3.299 F .592 (there are no characters on the line, and point is at the be)144 388.8 R .592(ginning of the line, Readline interprets it)-.15 F (as the end of input and returns)144 400.8 Q/F4 9/Times-Bold@0 SF(EOF) 2.5 E/F5 9/Times-Roman@0 SF(.)A F1(delete\255char \(C\255d\))108 412.8 Q F0 .441(Delete the character at point.)144 424.8 R .442 (If this function is bound to the same character as the tty)5.441 F F1 (EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 436.8 Q 2.5(,a)-.4 G(s) -2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H (or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) 108 448.8 Q F0 .553(Delete the character behind the cursor)144 460.8 R 5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553 (umeric ar)-3.053 F .552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552 (he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 472.8 Q F1 -.25(fo)108 484.8 S(rward\255backward\255delete\255char).25 E F0 .473 (Delete the character under the cursor)144 496.8 R 2.973(,u)-.4 G .474 (nless the cursor is at the end of the line, in which case the)-2.973 F (character behind the cursor is deleted.)144 508.8 Q F1 (quoted\255insert \(C\255q, C\255v\))108 520.8 Q F0 1.229(Add the ne)144 532.8 R 1.228(xt character that you type to the line v)-.15 F 3.728 (erbatim. This)-.15 F 1.228(is ho)3.728 F 3.728(wt)-.25 G 3.728(oi) -3.728 G 1.228(nsert characters lik)-3.728 F(e)-.1 E F1(C\255q)144 544.8 Q F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F1(tab\255insert \(M-T)108 556.8 Q(AB\))-.9 E F0(Insert a tab character)144 568.8 Q(.)-.55 E F1 (self\255insert \(a, b, A, 1, !, ...\))108 580.8 Q F0 (Insert the character typed.)144 592.8 Q F1 (transpose\255chars \(C\255t\))108 604.8 Q F0 .321 (Drag the character before point forw)144 616.8 R .321(ard o)-.1 F -.15 (ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322 (ving point forw)-.15 F .322(ard as well.)-.1 F 1.182 (If point is at the end of the line, then this transposes the tw)144 628.8 R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 640.8 Q(guments ha)-.18 E .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 (transpose\255w)108 652.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 664.8 R .023(ord before point past the w)-.1 F .023(ord after point, mo) -.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w) -2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F (is at the end of the line, this transposes the last tw)144 676.8 Q 2.5 (ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 688.8 Q (ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 700.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698 (ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 712.8 S(rd, b).1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(9)190.955 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF (do)108 84 Q(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 96 Q 1.647 (wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147 (ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15 (ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre) -.25 F(vious)-.25 E -.1(wo)144 108 S(rd, b).1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 120 Q (ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 132 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga) -.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974 (ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 144 S(rd, b).1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 156 S(rwrite\255mode).1 E F0 -.8(To)144 168 S .437(ggle o).8 F -.15(ve)-.15 G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437 (xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438 (gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4 (Wi)144 180 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 -.15(ve n)-.25 H .781(umeric ar).15 F .781 (gument, switches to insert mode.)-.18 F .78(This command af)5.781 F (fects)-.25 E(only)144 192 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi) 4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15 F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F2 10 /Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895 (starts in insert)4.395 F 3.969(mode. In)144 204 R -.15(ove)3.969 G 1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F .957(pushing the te)144 216 R .957(xt to the right.)-.15 F .958 (Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0 .958(replace the character)3.458 F(before point with a space.)144 228 Q (By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87 244.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 256.8 Q F0 (Kill the te)144 268.8 Q(xt from point to the end of the line.)-.15 E F1 (backward\255kill\255line \(C\255x Rubout\))108 280.8 Q F0(Kill backw) 144 292.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 (unix\255line\255discard \(C\255u\))108 304.8 Q F0(Kill backw)144 316.8 Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E (The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt) -2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 328.8 Q F0 (Kill all characters on the current line, no matter where point is.)144 340.8 Q F1(kill\255w)108 352.8 Q(ord \(M\255d\))-.1 E F0 1.308 (Kill from point the end of the current w)144 364.8 R 1.308 (ord, or if between w)-.1 F 1.308(ords, to the end of the ne)-.1 F 1.307 (xt w)-.15 F(ord.)-.1 E -.8(Wo)144 376.8 S (rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G (rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 388.8 Q (ord \(M\255Rubout\))-.1 E F0(Kill the w)144 400.8 Q(ord behind point.) -.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1 (backward\255w)2.5 E(ord)-.1 E F0(.)A F1(unix\255w)108 412.8 Q (ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 424.8 R .364 (ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1 F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 (ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144 436.8 Q F1(unix\255\214lename\255rubout)108 448.8 Q F0 .167(Kill the w) 144 460.8 R .166 (ord behind point, using white space and the slash character as the w) -.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 472.8 Q (xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.) -2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 484.8 Q F0 (Delete all spaces and tabs around point.)144 496.8 Q F1(kill\255r)108 508.8 Q(egion)-.18 E F0 1.13(Kill the te)144 520.8 R 1.13 (xt between the point and)-.15 F F2(mark)3.63 E F0(\(sa)3.63 E -.15(ve) -.2 G 3.63(dc).15 G 1.13(ursor position\).)-3.63 F 1.13(This te)6.13 F 1.13(xt is referred to as the)-.15 F F2 -.37(re)144 532.8 S(gion)-.03 E F0(.)A F1(copy\255r)108 544.8 Q(egion\255as\255kill)-.18 E F0(Cop)144 556.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E (gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1 (copy\255backward\255w)108 568.8 Q(ord)-.1 E F0(Cop)144 580.8 Q 4.801 (yt)-.1 G 2.301(he w)-4.801 F 2.301(ord before point to the kill b)-.1 F (uf)-.2 E(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.3 (ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 592.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 604.8 Q(orward\255w)-.25 E(ord)-.1 E F0(Cop)144 616.8 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo) -.1 F 2.007(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.008 (.T)-.55 G 2.008(he w)-7.008 F 2.008(ord boundaries are the same as)-.1 F F1 -.25(fo)4.508 G -.37(r-).25 G(ward\255w)144 628.8 Q(ord)-.1 E F0(.) A F1(yank \(C\255y\))108 640.8 Q F0 -1(Ya)144 652.8 S (nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25 E F1(yank\255pop \(M\255y\))108 664.8 Q F0 (Rotate the kill ring, and yank the ne)144 676.8 Q 2.5(wt)-.25 G 2.5 (op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 693.6 Q (guments)-.1 E(digit\255ar)108 705.6 Q (gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367 (Add this digit to the ar)144 717.6 R .367 (gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18 (rg)-2.867 G 2.867(ument. M\255\255).18 F .366(starts a ne)2.867 F -.05 (ga)-.15 G(-).05 E(ti)144 729.6 Q .3 -.15(ve a)-.25 H -.18(rg).15 G (ument.).18 E(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(10) 185.955 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF (uni)108 84 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778 (This is another w)144 96 R .779(ay to specify an ar)-.1 F 3.279 (gument. If)-.18 F .779(this command is follo)3.279 F .779 (wed by one or more digits,)-.25 F 1.376 (optionally with a leading minus sign, those digits de\214ne the ar)144 108 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 120 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) 3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17 (ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other) -.2 F(-)-.2 E .899(wise ignored.)144 132 R .898 (As a special case, if this command is immediately follo)5.899 F .898 (wed by a character that is)-.25 F .243 (neither a digit or minus sign, the ar)144 144 R .243 (gument count for the ne)-.18 F .243(xt command is multiplied by four) -.15 F 5.243(.T)-.55 G(he)-5.243 E(ar)144 156 Q .378 (gument count is initially one, so e)-.18 F -.15(xe)-.15 G .378 (cuting this function the \214rst time mak).15 F .378(es the ar)-.1 F .378(gument count)-.18 F(four)144 168 Q 2.5(,as)-.4 G(econd time mak) -2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1 (Completing)87 184.8 Q(complete \(T)108 196.8 Q(AB\))-.9 E F0 1.908 (Attempt to perform completion on the te)144 208.8 R 1.908 (xt before point.)-.15 F 1.909(The actual completion performed is)6.909 F(application-speci\214c.)144 220.8 Q F1(Bash)5.518 E F0 3.018(,f)C .518 (or instance, attempts completion treating the te)-3.018 F .517 (xt as a v)-.15 F .517(ariable \(if the)-.25 F(te)144 232.8 Q .656 (xt be)-.15 F .656(gins with)-.15 F F1($)3.156 E F0 .656 (\), username \(if the te)B .656(xt be)-.15 F .656(gins with)-.15 F F1 (~)3.156 E F0 .656(\), hostname \(if the te)B .656(xt be)-.15 F .656 (gins with)-.15 F F1(@)3.157 E F0 .657(\), or)B .93 (command \(including aliases and functions\) in turn.)144 244.8 R .929 (If none of these produces a match, \214lename)5.929 F 1.273 (completion is attempted.)144 256.8 R F1(Gdb)6.273 E F0 3.773(,o)C 3.773 (nt)-3.773 G 1.273(he other hand, allo)-3.773 F 1.273 (ws completion of program functions and)-.25 F -.25(va)144 268.8 S(riab\ les, and only attempts \214lename completion under certain circumstance\ s.).25 E F1(possible\255completions \(M\255?\))108 280.8 Q F0 .262 (List the possible completions of the te)144 292.8 R .262 (xt before point.)-.15 F .261 (When displaying completions, readline sets)5.261 F 1.002 (the number of columns used for display to the v)144 304.8 R 1.002 (alue of)-.25 F F1(completion-display-width)3.502 E F0 3.502(,t)C 1.003 (he v)-3.502 F 1.003(alue of)-.25 F(the en)144 316.8 Q(vironment v)-.4 E (ariable)-.25 E/F2 9/Times-Bold@0 SF(COLUMNS)2.5 E/F3 9/Times-Roman@0 SF (,)A F0(or the screen width, in that order)2.25 E(.)-.55 E F1 (insert\255completions \(M\255*\))108 328.8 Q F0 .783 (Insert all completions of the te)144 340.8 R .783 (xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H .783(een generated by).15 F F1(possible\255com-)3.282 E(pletions)144 352.8 Q F0(.)A F1(menu\255complete)108 364.8 Q F0 .928(Similar to)144 376.8 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628 F .929(ord to be completed with a single match from the list of)-.1 F 1.194(possible completions.)144 388.8 R 1.194(Repeated e)6.194 F -.15 (xe)-.15 G 1.194(cution of).15 F F1(menu\255complete)3.694 E F0 1.193 (steps through the list of possible)3.694 F .828 (completions, inserting each match in turn.)144 400.8 R .828 (At the end of the list of completions, the bell is rung)5.828 F .727 (\(subject to the setting of)144 412.8 R F1(bell\255style)3.227 E F0 3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F .727(An ar)5.727 F .727(gument of)-.18 F/F4 10/Times-Italic@0 SF(n)3.227 E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F4(n)3.227 E F0 1.73 (positions forw)144 424.8 R 1.73(ard in the list of matches; a ne)-.1 F -.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73 (ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1 E(through the list.)144 436.8 Q(This command is intended to be bound to) 5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E (ault.)-.1 E F1(menu\255complete\255backward)108 448.8 Q F0 .82 (Identical to)144 460.8 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 (ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 (ard through the list of possible completions, as if)-.1 F F1 (menu\255complete)144 472.8 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 (nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) .15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E F1(delete\255char\255or\255list)108 484.8 Q F0 .373 (Deletes the character under the cursor if not at the be)144 496.8 R .374(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete-char) 2.874 E F0(\).)A(If at the end of the line, beha)144 508.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1(possible-completions)2.5 E F0(.)A F1 -.25(Ke)87 525.6 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr) 108 537.6 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 549.6 Q (gin sa)-.15 E(ving the characters typed into the current k)-.2 E -.15 (ey)-.1 G(board macro.).15 E F1(end\255kbd\255macr)108 561.6 Q 2.5(o\() -.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 573.6 Q (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G (board macro and store the de\214nition.).15 E F1 (call\255last\255kbd\255macr)108 585.6 Q 2.5(o\()-.18 G(C\255x e\))-2.5 E F0(Re-e)144 597.6 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1 G .999(board macro de\214ned, by making the characters in the macro app\ ear as if).15 F(typed at the k)144 609.6 Q -.15(ey)-.1 G(board.).15 E F1 (print\255last\255kbd\255macr)108 621.6 Q 2.5(o\()-.18 G(\))-2.5 E F0 (Print the last k)144 633.6 Q -.15(ey)-.1 G (board macro de\214ned in a format suitable for the).15 E F4(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1(Miscellaneous)87 650.4 Q -.18(re)108 662.4 S.18 E(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776(Read in the contents of the)144 674.4 R F4(inputr)4.276 E(c)-.37 E F0 1.777(\214le, and incorporate an)4.276 F 4.277(yb)-.15 G 1.777 (indings or v)-4.277 F 1.777(ariable assignments)-.25 F(found there.)144 686.4 Q F1(abort \(C\255g\))108 698.4 Q F0 3.249 (Abort the current editing command and ring the terminal')144 710.4 R 5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 (bell\255style)144 722.4 Q F0(\).)A(GNU Readline 7.0)72 768 Q (2017 December 28)121.245 E(11)185.955 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF (do\255lo)108 84 Q(wer)-.1 E(case\255v)-.18 E (ersion \(M\255A, M\255B, M\255)-.1 E/F2 10/Times-Italic@0 SF(x)A F1 2.5 (,.)C(..\))-2.5 E F0 1.738(If the meta\214ed character)144 96 R F2(x) 4.238 E F0 1.739 (is uppercase, run the command that is bound to the corresponding)4.238 F(meta\214ed lo)144 108 Q(wercase character)-.25 E 5(.T)-.55 G(he beha) -5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo)2.5 E (wercase.)-.25 E F1(pr)108 120 Q(e\214x\255meta \(ESC\))-.18 E F0 (Metafy the ne)144 132 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF (ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1 (Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 144 Q F0 (Incremental undo, separately remembered for each line.)144 156 Q F1 -2.29 -.18(re v)108 168 T(ert\255line \(M\255r\)).08 E F0 1.095 (Undo all changes made to this line.)144 180 R 1.095(This is lik)6.095 F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E F0 1.095(command enough times to)3.595 F (return the line to its initial state.)144 192 Q F1 (tilde\255expand \(M\255&\))108 204 Q F0(Perform tilde e)144 216 Q (xpansion on the current w)-.15 E(ord.)-.1 E F1 (set\255mark \(C\255@, M\255\))108 228 Q F0 (Set the mark to the point.)144 240 Q(If a numeric ar)5 E (gument is supplied, the mark is set to that position.)-.18 E F1 (exchange\255point\255and\255mark \(C\255x C\255x\))108 252 Q F0(Sw)144 264 Q .282(ap the point with the mark.)-.1 F .283 (The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G 2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa) 144 276 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 (character\255sear)108 288 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 300 S .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G 3.035(dt) .15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 (xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05 (ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre) 144 312 Q(vious occurrences.)-.25 E F1(character\255sear)108 324 Q (ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 336 S 1.043 (haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G 3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 (vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G (count searches for subsequent occurrences.)144 348 Q F1 (skip\255csi\255sequence)108 360 Q F0 1.827 (Read enough characters to consume a multi-k)144 372 R 2.126 -.15(ey s) -.1 H 1.826(equence such as those de\214ned for k).15 F -.15(ey)-.1 G 4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 384 R .791 (Such sequences be)5.79 F .791 (gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F .332(If this sequence is bound to "\\[", k)144 396 R -.15(ey)-.1 G 2.831 (sp).15 G .331(roducing such sequences will ha)-2.831 F .631 -.15(ve n) -.2 H 2.831(oe).15 G -.25(ff)-2.831 G .331(ect unless e).25 F(xplic-) -.15 E .026(itly bound to a readline command, instead of inserting stra\ y characters into the editing b)144 408 R(uf)-.2 E(fer)-.25 E 5.026(.T) -.55 G(his)-5.026 E(is unbound by def)144 420 Q(ault, b)-.1 E (ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108 432 Q F0 -.4(Wi)144 444 S .481(thout a numeric ar).4 F .481 (gument, the v)-.18 F .481(alue of the readline)-.25 F F1 (comment\255begin)2.981 E F0 -.25(va)2.981 G .48 (riable is inserted at the).25 F(be)144 456 Q .244 (ginning of the current line.)-.15 F .245(If a numeric ar)5.244 F .245 (gument is supplied, this command acts as a toggle: if)-.18 F .322 (the characters at the be)144 468 R .321 (ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1 (comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is) -.25 F 1.013(inserted, otherwise the characters in)144 480 R F1 (comment-begin)3.514 E F0 1.014(are deleted from the be)3.514 F 1.014 (ginning of the line.)-.15 F 1.469 (In either case, the line is accepted as if a ne)144 492 R 1.468 (wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F 1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 504 Q F0(mak) 2.982 E .483(es the current line a shell comment.)-.1 F .483 (If a numeric ar)5.483 F .483(gument causes the comment)-.18 F (character to be remo)144 516 Q -.15(ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G(cuted by the shell.).15 E F1(dump\255functions)108 528 Q F0 .627(Print all of the functions and their k)144 540 R .927 -.15 (ey b)-.1 H .626(indings to the readline output stream.).15 F .626 (If a numeric ar)5.626 F(gu-)-.18 E (ment is supplied, the output is formatted in such a w)144 552 Q (ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0 (\214le.)2.5 E F1(dump\255v)108 564 Q(ariables)-.1 E F0 .283 (Print all of the settable v)144 576 R .283(ariables and their v)-.25 F .283(alues to the readline output stream.)-.25 F .283(If a numeric ar) 5.283 F(gu-)-.18 E (ment is supplied, the output is formatted in such a w)144 588 Q (ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0 (\214le.)2.5 E F1(dump\255macr)108 600 Q(os)-.18 E F0 .593 (Print all of the readline k)144 612 R .893 -.15(ey s)-.1 H .592 (equences bound to macros and the strings the).15 F 3.092(yo)-.15 G 3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 624 Q .528(gument is supplied, the output is formatted in such a w)-.18 F .528 (ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0 (\214le.)144 636 Q F1(emacs\255editing\255mode \(C\255e\))108 648 Q F0 (When in)144 660 Q F1(vi)2.5 E F0(command mode, this causes a switch to) 2.5 E F1(emacs)2.5 E F0(editing mode.)2.5 E F1 (vi\255editing\255mode \(M\255C\255j\))108 672 Q F0(When in)144 684 Q F1 (emacs)2.5 E F0(editing mode, this causes a switch to)2.5 E F1(vi)2.5 E F0(editing mode.)2.5 E/F4 10.95/Times-Bold@0 SF(DEF)72 700.8 Q -.548(AU) -.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F0 .065(The follo) 108 712.8 R .065(wing is a list of the def)-.25 F .065 (ault emacs and vi bindings.)-.1 F .064 (Characters with the eighth bit set are written as)5.064 F .527 (M\255, and are referred to as)108 724.8 R F2(meta\214ed) 3.407 E F0 3.027(characters. The)3.797 F .527 (printable ASCII characters not mentioned)3.027 F(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(12)185.955 E 0 Cg EP %%Page: 13 13 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E 1.116 (in the list of emacs standard bindings are bound to the)108 84 R/F1 10 /Times-Bold@0 SF(self\255insert)3.615 E F0 1.115 (function, which just inserts the gi)3.615 F -.15(ve)-.25 G(n).15 E .945 (character into the input line.)108 96 R .945(In vi insertion mode, all\ characters not speci\214cally mentioned are bound to)5.945 F F1 (self\255insert)108 108 Q F0 5.359(.C)C .359 (haracters assigned to signal generation by)-5.359 F/F2 10 /Times-Italic@0 SF(stty)2.859 E F0 .359(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.159 -.4(r, s).15 H .358(uch as C-Z or C-C,).4 F .187 (retain that function.)108 120 R .187(Upper and lo)5.187 F .188(wer cas\ e meta\214ed characters are bound to the same function in the emacs)-.25 F .305(mode meta k)108 132 R -.15(ey)-.1 G 2.805(map. The).15 F .305(re\ maining characters are unbound, which causes readline to ring the bell \ \(subject)2.805 F(to the setting of the)108 144 Q F1(bell\255style)2.5 E F0 -.25(va)2.5 G(riable\).).25 E F1(Emacs Mode)87 160.8 Q F0 (Emacs Standard bindings)151.2 172.8 Q 2.5("C-@" set-mark)151.2 196.8 R 2.5("C-A" be)151.2 208.8 R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 220.8 R(ard-char)-.1 E 2.5("C-D" delete-char)151.2 232.8 R 2.5 ("C-E" end-of-line)151.2 244.8 R 2.5("C-F" forw)151.2 256.8 R(ard-char) -.1 E 2.5("C-G" abort)151.2 268.8 R 2.5("C-H" backw)151.2 280.8 R (ard-delete-char)-.1 E 2.5("C-I" complete)151.2 292.8 R 2.5 ("C-J" accept-line)151.2 304.8 R 2.5("C-K" kill-line)151.2 316.8 R 2.5 ("C-L" clear)151.2 328.8 R(-screen)-.2 E 2.5("C-M" accept-line)151.2 340.8 R 2.5("C-N" ne)151.2 352.8 R(xt-history)-.15 E 2.5("C-P" pre)151.2 364.8 R(vious-history)-.25 E 2.5("C-Q" quoted-insert)151.2 376.8 R 2.5 ("C-R" re)151.2 388.8 R -.15(ve)-.25 G(rse-search-history).15 E 2.5 ("C-S" forw)151.2 400.8 R(ard-search-history)-.1 E 2.5 ("C-T" transpose-chars)151.2 412.8 R 2.5("C-U" unix-line-discard)151.2 424.8 R 2.5("C-V" quoted-insert)151.2 436.8 R 2.5("C-W" unix-w)151.2 448.8 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 460.8 R 2.5 ("C-]" character)151.2 472.8 R(-search)-.2 E 2.5("C-_" undo)151.2 484.8 R 3.333("")151.2 496.8 S(to "/")-.833 E(self-insert)5 E 2.5("0" to)151.2 508.8 R 2.5("9" self-insert)2.5 F 2.5(":" to)151.2 520.8 R 2.5 ("~" self-insert)2.5 F 2.5("C-?" backw)151.2 532.8 R(ard-delete-char)-.1 E(Emacs Meta bindings)151.2 549.6 Q 2.5("M-C-G" abort)151.2 573.6 R 2.5 ("M-C-H" backw)151.2 585.6 R(ard-kill-w)-.1 E(ord)-.1 E 2.5 ("M-C-I" tab-insert)151.2 597.6 R 2.5("M-C-J" vi-editing-mode)151.2 609.6 R 2.5("M-C-M" vi-editing-mode)151.2 621.6 R 2.5("M-C-R" re)151.2 633.6 R -.15(ve)-.25 G(rt-line).15 E 2.5("M-C-Y" yank-nth-ar)151.2 645.6 R(g)-.18 E 2.5("M-C-[" complete)151.2 657.6 R 2.5("M-C-]" character) 151.2 669.6 R(-search-backw)-.2 E(ard)-.1 E 2.5("M-space" set-mark)151.2 681.6 R 2.5("M-#" insert-comment)151.2 693.6 R 2.5("M-&" tilde-e)151.2 705.6 R(xpand)-.15 E 2.5("M-*" insert-completions)151.2 717.6 R 2.5 ("M--" digit-ar)151.2 729.6 R(gument)-.18 E(GNU Readline 7.0)72 768 Q (2017 December 28)121.245 E(13)185.955 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("M-." yank-last-ar) 151.2 84 R(g)-.18 E 2.5("M-0" digit-ar)151.2 96 R(gument)-.18 E 2.5 ("M-1" digit-ar)151.2 108 R(gument)-.18 E 2.5("M-2" digit-ar)151.2 120 R (gument)-.18 E 2.5("M-3" digit-ar)151.2 132 R(gument)-.18 E 2.5 ("M-4" digit-ar)151.2 144 R(gument)-.18 E 2.5("M-5" digit-ar)151.2 156 R (gument)-.18 E 2.5("M-6" digit-ar)151.2 168 R(gument)-.18 E 2.5 ("M-7" digit-ar)151.2 180 R(gument)-.18 E 2.5("M-8" digit-ar)151.2 192 R (gument)-.18 E 2.5("M-9" digit-ar)151.2 204 R(gument)-.18 E 2.5 ("M-<" be)151.2 216 R(ginning-of-history)-.15 E 2.5 ("M-=" possible-completions)151.2 228 R 2.5("M->" end-of-history)151.2 240 R 2.5("M-?" possible-completions)151.2 252 R 2.5("M-B" backw)151.2 264 R(ard-w)-.1 E(ord)-.1 E 2.5("M-C" capitalize-w)151.2 276 R(ord)-.1 E 2.5("M-D" kill-w)151.2 288 R(ord)-.1 E 2.5("M-F" forw)151.2 300 R(ard-w) -.1 E(ord)-.1 E 2.5("M-L" do)151.2 312 R(wncase-w)-.25 E(ord)-.1 E 2.5 ("M-N" non-incremental-forw)151.2 324 R(ard-search-history)-.1 E 2.5 ("M-P" non-incremental-re)151.2 336 R -.15(ve)-.25 G(rse-search-history) .15 E 2.5("M-R" re)151.2 348 R -.15(ve)-.25 G(rt-line).15 E 2.5 ("M-T" transpose-w)151.2 360 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 372 R (ord)-.1 E 2.5("M-Y" yank-pop)151.2 384 R 2.5 ("M-\\" delete-horizontal-space)151.2 396 R 2.5("M-~" tilde-e)151.2 408 R(xpand)-.15 E 2.5("M-C-?" backw)151.2 420 R(ard-kill-w)-.1 E(ord)-.1 E 2.5("M-_" yank-last-ar)151.2 432 R(g)-.18 E(Emacs Control-X bindings) 151.2 448.8 Q 2.5("C-XC-G" abort)151.2 472.8 R 2.5 ("C-XC-R" re-read-init-\214le)151.2 484.8 R 2.5("C-XC-U" undo)151.2 496.8 R 2.5("C-XC-X" e)151.2 508.8 R(xchange-point-and-mark)-.15 E 2.5 ("C-X\(" start-kbd-macro)151.2 520.8 R 2.5("C-X\)" end-kbd-macro)151.2 532.8 R 2.5("C-XE" call-last-kbd-macro)151.2 544.8 R 2.5("C-XC-?" backw) 151.2 556.8 R(ard-kill-line)-.1 E/F1 10/Times-Bold@0 SF (VI Mode bindings)87 585.6 Q F0(VI Insert Mode functions)151.2 597.6 Q 2.5("C-D" vi-eof-maybe)151.2 621.6 R 2.5("C-H" backw)151.2 633.6 R (ard-delete-char)-.1 E 2.5("C-I" complete)151.2 645.6 R 2.5 ("C-J" accept-line)151.2 657.6 R 2.5("C-M" accept-line)151.2 669.6 R 2.5 ("C-R" re)151.2 681.6 R -.15(ve)-.25 G(rse-search-history).15 E 2.5 ("C-S" forw)151.2 693.6 R(ard-search-history)-.1 E 2.5 ("C-T" transpose-chars)151.2 705.6 R 2.5("C-U" unix-line-discard)151.2 717.6 R 2.5("C-V" quoted-insert)151.2 729.6 R(GNU Readline 7.0)72 768 Q (2017 December 28)121.245 E(14)185.955 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("C-W" unix-w)151.2 84 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 96 R 2.5("C-[" vi-mo)151.2 108 R -.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 120 R 3.333 ("")151.2 132 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw)151.2 144 R(ard-delete-char)-.1 E(VI Command Mode functions)151.2 160.8 Q 2.5 ("C-D" vi-eof-maybe)151.2 184.8 R 2.5("C-E" emacs-editing-mode)151.2 196.8 R 2.5("C-G" abort)151.2 208.8 R 2.5("C-H" backw)151.2 220.8 R (ard-char)-.1 E 2.5("C-J" accept-line)151.2 232.8 R 2.5("C-K" kill-line) 151.2 244.8 R 2.5("C-L" clear)151.2 256.8 R(-screen)-.2 E 2.5 ("C-M" accept-line)151.2 268.8 R 2.5("C-N" ne)151.2 280.8 R(xt-history) -.15 E 2.5("C-P" pre)151.2 292.8 R(vious-history)-.25 E 2.5 ("C-Q" quoted-insert)151.2 304.8 R 2.5("C-R" re)151.2 316.8 R -.15(ve) -.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 328.8 R (ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 340.8 R 2.5 ("C-U" unix-line-discard)151.2 352.8 R 2.5("C-V" quoted-insert)151.2 364.8 R 2.5("C-W" unix-w)151.2 376.8 R(ord-rubout)-.1 E 2.5("C-Y" yank) 151.2 388.8 R 2.5("C-_" vi-undo)151.2 400.8 R -4.166 3.333("" f)151.2 412.8 T(orw)-3.333 E(ard-char)-.1 E 2.5("#" insert-comment)151.2 424.8 R 2.5("$" end-of-line)151.2 436.8 R 2.5("%" vi-match)151.2 448.8 R 2.5 ("&" vi-tilde-e)151.2 460.8 R(xpand)-.15 E 2.5("*" vi-complete)151.2 472.8 R 2.5("+" ne)151.2 484.8 R(xt-history)-.15 E 2.5("," vi-char)151.2 496.8 R(-search)-.2 E 2.5("-" pre)151.2 508.8 R(vious-history)-.25 E 2.5 ("." vi-redo)151.2 520.8 R 2.5("/" vi-search)151.2 532.8 R 2.5("0" be) 151.2 544.8 R(ginning-of-line)-.15 E("1" to "9")151.2 556.8 Q(vi-ar)5 E (g-digit)-.18 E 2.5(";" vi-char)151.2 568.8 R(-search)-.2 E 2.5 ("=" vi-complete)151.2 580.8 R 2.5("?" vi-search)151.2 592.8 R 2.5 ("A" vi-append-eol)151.2 604.8 R 2.5("B" vi-pre)151.2 616.8 R(v-w)-.25 E (ord)-.1 E 2.5("C" vi-change-to)151.2 628.8 R 2.5("D" vi-delete-to)151.2 640.8 R 2.5("E" vi-end-w)151.2 652.8 R(ord)-.1 E 2.5("F" vi-char)151.2 664.8 R(-search)-.2 E 2.5("G" vi-fetch-history)151.2 676.8 R 2.5 ("I" vi-insert-be)151.2 688.8 R(g)-.15 E 2.5("N" vi-search-ag)151.2 700.8 R(ain)-.05 E 2.5("P" vi-put)151.2 712.8 R 2.5("R" vi-replace)151.2 724.8 R(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(15)185.955 E 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("S" vi-subst)151.2 84 R 2.5("T" vi-char)151.2 96 R(-search)-.2 E 2.5("U" re)151.2 108 R -.15(ve)-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2 120 R(xt-w)-.15 E(ord) -.1 E 2.5("X" backw)151.2 132 R(ard-delete-char)-.1 E 2.5 ("Y" vi-yank-to)151.2 144 R 2.5("\\" vi-complete)151.2 156 R 2.5 ("^" vi-\214rst-print)151.2 168 R 2.5("_" vi-yank-ar)151.2 180 R(g)-.18 E 2.5("`" vi-goto-mark)151.2 192 R 2.5("a" vi-append-mode)151.2 204 R 2.5("b" vi-pre)151.2 216 R(v-w)-.25 E(ord)-.1 E 2.5("c" vi-change-to) 151.2 228 R 2.5("d" vi-delete-to)151.2 240 R 2.5("e" vi-end-w)151.2 252 R(ord)-.1 E 2.5("f" vi-char)151.2 264 R(-search)-.2 E 2.5("h" backw) 151.2 276 R(ard-char)-.1 E 2.5("i" vi-insertion-mode)151.2 288 R 2.5 ("j" ne)151.2 300 R(xt-history)-.15 E 2.5("k" pre)151.2 312 R(v-history) -.25 E 2.5("l" forw)151.2 324 R(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 336 R 2.5("n" vi-search-ag)151.2 348 R(ain)-.05 E 2.5("p" vi-put)151.2 360 R 2.5("r" vi-change-char)151.2 372 R 2.5("s" vi-subst)151.2 384 R 2.5("t" vi-char)151.2 396 R(-search)-.2 E 2.5("u" vi-undo)151.2 408 R 2.5("w" vi-ne)151.2 420 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 432 R 2.5("y" vi-yank-to)151.2 444 R 2.5("|" vi-column)151.2 456 R 2.5 ("~" vi-change-case)151.2 468 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72 484.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 496.8 Q(ary) -.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2 (The Gnu History Libr)108 508.8 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E (ox and Chet Rame)-.15 E(y)-.15 E F2(bash)108 520.8 Q F0(\(1\))A F1 (FILES)72 537.6 Q F2(~/.inputr)109.666 549.6 Q(c)-.37 E F0(Indi)144 561.6 Q(vidual)-.25 E/F3 10/Times-Bold@0 SF -.18(re)2.5 G(adline).18 E F0(initialization \214le)2.5 E F1 -.548(AU)72 578.4 S(THORS).548 E F0 (Brian F)108 590.4 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E (bfox@gnu.or)108 602.4 Q(g)-.18 E(Chet Rame)108 619.2 Q 1.3 -.65(y, C) -.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve) -.25 G(rsity).15 E(chet.rame)108 631.2 Q(y@case.edu)-.15 E F1 -.11(BU)72 648 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .69(If you \214nd a b) 108 660 R .69(ug in)-.2 F F3 -.18(re)3.19 G(adline,).18 E F0 .69 (you should report it.)3.19 F .691(But \214rst, you should mak)5.69 F 3.191(es)-.1 G .691(ure that it really is a b)-3.191 F(ug,)-.2 E (and that it appears in the latest v)108 672 Q(ersion of the)-.15 E F3 -.18(re)2.5 G(adline).18 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.) .15 E .705(Once you ha)108 688.8 R 1.005 -.15(ve d)-.2 H .705 (etermined that a b).15 F .704(ug actually e)-.2 F .704(xists, mail a b) -.15 F .704(ug report to)-.2 F F2 -.2(bu)3.204 G(g\255r).2 E(eadline) -.37 E F0(@)A F2(gnu.or)A(g)-.37 E F0 5.704(.I)C 3.204(fy)-5.704 G(ou) -3.204 E(ha)108 700.8 Q 1.809 -.15(ve a \214)-.2 H 1.509 (x, you are welcome to mail that as well!).15 F 1.51 (Suggestions and `philosophical' b)6.51 F 1.51(ug reports may be)-.2 F (mailed to)108 712.8 Q F2 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F2 (gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3 (gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 729.6 Q (ug reports concerning this manual page should be directed to)-.2 E F2 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.).25 E (GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(16)185.955 E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R (Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10.95/Times-Bold@0 SF -.11(BU)72 84 S(GS).11 E F0(It')108 96 Q 2.5(st)-.55 G (oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 7.0)72 768 Q (2017 December 28)121.245 E(17)185.955 E 0 Cg EP %%Trailer end %%EOF readline-8.0/doc/rlman.texi000664 000436 000024 00000004523 12651435335 016013 0ustar00chetstaff000000 000000 \input texinfo @c -*-texinfo-*- @comment %**start of header (This is for running Texinfo on a region.) @setfilename readline.info @settitle GNU Readline Library @include version.texi @comment %**end of header (This is for running Texinfo on a region.) @synindex vr fn @copying This manual describes the GNU Readline Library (version @value{VERSION}, @value{UPDATED}), a library which aids in the consistency of user interface across discrete programs which provide a command line interface. Copyright @copyright{} 1988--2016 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end quotation @end copying @dircategory Libraries @direntry * Readline: (readline). The GNU readline library API. @end direntry @titlepage @title GNU Readline Library @subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}. @subtitle @value{UPDATED-MONTH} @author Chet Ramey, Case Western Reserve University @author Brian Fox, Free Software Foundation @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @ifnottex @node Top @top GNU Readline Library This document describes the GNU Readline Library, a utility which aids in the consistency of user interface across discrete programs which provide a command line interface. The Readline home page is @url{http://www.gnu.org/software/readline/}. @menu * Command Line Editing:: GNU Readline User's Manual. * Programming with GNU Readline:: GNU Readline Programmer's Manual. * GNU Free Documentation License:: License for copying this manual. * Concept Index:: Index of concepts described in this manual. * Function and Variable Index:: Index of externally visible functions and variables. @end menu @end ifnottex @include rluser.texi @include rltech.texi @node GNU Free Documentation License @appendix GNU Free Documentation License @include fdl.texi @node Concept Index @unnumbered Concept Index @printindex cp @node Function and Variable Index @unnumbered Function and Variable Index @printindex fn @bye readline-8.0/doc/texi2html000755 000436 000000 00000424554 11050552171 015646 0ustar00chetwheel000000 000000 #! /usr/bin/perl 'di '; 'ig 00 '; #+############################################################################## # # texi2html: Program to transform Texinfo documents to HTML # # Copyright (C) 1999, 2000 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # #-############################################################################## # This requires perl version 5 or higher require 5.0; #++############################################################################## # # NOTE FOR DEBUGGING THIS SCRIPT: # You can run 'perl texi2html.pl' directly, provided you have # the environment variable T2H_HOME set to the directory containing # the texi2html.init file # #--############################################################################## # CVS version: # $Id: texi2html.pl,v 1.55 2000/07/27 14:39:41 obachman Exp $ # Homepage: $T2H_HOMEPAGE = < (original author) Karl Berry Olaf Bachmann and many others. Maintained by: Olaf Bachmann Send bugs and suggestions to EOT # Version: set in configure.in $THISVERSION = '1.64'; $THISPROG = "texi2html $THISVERSION"; # program name and version # The man page for this program is included at the end of this file and can be # viewed using the command 'nroff -man texi2html'. # Identity: $T2H_TODAY = &pretty_date; # like "20 September 1993" # the eval prevents this from breaking on system which do not have # a proper getpwuid implemented eval { ($T2H_USER = (getpwuid ($<))[6]) =~ s/,.*//;}; # Who am i #+++############################################################################ # # # Initialization # # Pasted content of File $(srcdir)/texi2html.init: Default initializations # # # #---############################################################################ # leave this within comments, and keep the require statement # This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init # exists. # # -*-perl-*- ###################################################################### # File: texi2html.init # # Sets default values for command-line arguments and for various customizable # procedures # # A copy of this file is pasted into the beginning of texi2html by # 'make texi2html' # # Copy this file and make changes to it, if you like. # Afterwards, either, load it with command-line option -init_file # # $Id: texi2html.init,v 1.34 2000/07/27 14:09:02 obachman Exp $ ###################################################################### # stuff which can also be set by command-line options # # # Note: values set here, overwrite values set by the command-line # options before -init_file and might still be overwritten by # command-line arguments following the -init_file option # # T2H_OPTIONS is a hash whose keys are the (long) names of valid # command-line options and whose values are a hash with the following keys: # type ==> one of !|=i|:i|=s|:s (see GetOpt::Long for more info) # linkage ==> ref to scalar, array, or subroutine (see GetOpt::Long for more info) # verbose ==> short description of option (displayed by -h) # noHelp ==> if 1 -> for "not so important options": only print description on -h 1 # 2 -> for obsolete options: only print description on -h 2 $T2H_DEBUG = 0; $T2H_OPTIONS -> {debug} = { type => '=i', linkage => \$main::T2H_DEBUG, verbose => 'output HTML with debuging information', }; $T2H_DOCTYPE = ''; $T2H_OPTIONS -> {doctype} = { type => '=s', linkage => \$main::T2H_DOCTYPE, verbose => 'document type which is output in header of HTML files', noHelp => 1 }; $T2H_CHECK = 0; $T2H_OPTIONS -> {check} = { type => '!', linkage => \$main::T2H_CHECK, verbose => 'if set, only check files and output all things that may be Texinfo commands', noHelp => 1 }; # -expand # if set to "tex" (or, "info") expand @iftex and @tex (or, @ifinfo) sections # else, neither expand @iftex, @tex, nor @ifinfo sections $T2H_EXPAND = "info"; $T2H_OPTIONS -> {expand} = { type => '=s', linkage => \$T2H_EXPAND, verbose => 'Expand info|tex|none section of texinfo source', }; # - glossary #if set, uses section named `Footnotes' for glossary $T2H_USE_GLOSSARY = 0; T2H_OPTIONS -> {glossary} = { type => '!', linkage => \$T2H_USE_GLOSSARY, verbose => "if set, uses section named `Footnotes' for glossary", noHelp => 1, }; # -invisible # $T2H_INVISIBLE_MARK is the text used to create invisible destination # anchors for index links (you can for instance use the invisible.xbm # file shipped with this program). This is a workaround for a known # bug of many WWW browsers, including netscape. # For me, it works fine without it -- on the contrary: if there, it # inserts space between headers and start of text (obachman 3/99) $T2H_INVISIBLE_MARK = ''; # $T2H_INVISIBLE_MARK = ' '; $T2H_OPTIONS -> {invisible} = { type => '=s', linkage => \$T2H_INVISIBLE_MARK, verbose => 'use text in invisble anchot', noHelp => 1, }; # -iso # if set, ISO8879 characters are used for special symbols (like copyright, etc) $T2H_USE_ISO = 0; $T2H_OPTIONS -> {iso} = { type => 'iso', linkage => \$T2H_USE_ISO, verbose => 'if set, ISO8879 characters are used for special symbols (like copyright, etc)', noHelp => 1, }; # -I # list directories where @include files are searched for (besides the # directory of the doc file) additional '-I' args add to this list @T2H_INCLUDE_DIRS = ("."); $T2H_OPTIONS -> {I} = { type => '=s', linkage => \@T2H_INCLUDE_DIRS, verbose => 'append $s to the @include search path', }; # -top_file # uses file of this name for top-level file # extension is manipulated appropriately, if necessary. # If empty, .html is used # Typically, you would set this to "index.html". $T2H_TOP_FILE = ''; $T2H_OPTIONS -> {top_file} = { type => '=s', linkage => \$T2H_TOP_FILE, verbose => 'use $s as top file, instead of .html', }; # -toc_file # uses file of this name for table of contents file # extension is manipulated appropriately, if necessary. # If empty, _toc.html is used $T2H_TOC_FILE = ''; $T2H_OPTIONS -> {toc_file} = { type => '=s', linkage => \$T2H_TOC_FILE, verbose => 'use $s as ToC file, instead of _toc.html', }; # -frames # if set, output two additional files which use HTML 4.0 "frames". $T2H_FRAMES = 0; $T2H_OPTIONS -> {frames} = { type => '!', linkage => \$T2H_FRAMES, verbose => 'output files which use HTML 4.0 frames (experimental)', noHelp => 1, }; # -menu | -nomenu # if set, show the Texinfo menus $T2H_SHOW_MENU = 1; $T2H_OPTIONS -> {menu} = { type => '!', linkage => \$T2H_SHOW_MENU, verbose => 'ouput Texinfo menus', }; # -number | -nonumber # if set, number sections and show section names and numbers in references # and menus $T2H_NUMBER_SECTIONS = 1; $T2H_OPTIONS -> {number} = { type => '!', linkage => \$T2H_NUMBER_SECTIONS, verbose => 'use numbered sections' }; # if set, and T2H_NUMBER_SECTIONS is set, then use node names in menu # entries, instead of section names $T2H_NODE_NAME_IN_MENU = 0; # if set and menu entry equals menu descr, then do not print menu descr. # Likewise, if node name equals entry name, do not print entry name. $T2H_AVOID_MENU_REDUNDANCY = 1; # -split section|chapter|none # if set to 'section' (resp. 'chapter') create one html file per (sub)section # (resp. chapter) and separate pages for Top, ToC, Overview, Index, # Glossary, About. # otherwise, create monolithic html file which contains whole document #$T2H_SPLIT = 'section'; $T2H_SPLIT = ''; $T2H_OPTIONS -> {split} = { type => '=s', linkage => \$T2H_SPLIT, verbose => 'split document on section|chapter else no splitting', }; # -section_navigation|-no-section_navigation # if set, then navigation panels are printed at the beginning of each section # and, possibly at the end (depending on whether or not there were more than # $T2H_WORDS_IN_PAGE words on page # This is most useful if you do not want to have section navigation # on -split chapter $T2H_SECTION_NAVIGATION = 1; $T2H_OPTIONS -> {sec_nav} = { type => '!', linkage => \$T2H_SECTION_NAVIGATION, verbose => 'output navigation panels for each section', }; # -subdir # if set put result files in this directory # if not set result files are put into current directory #$T2H_SUBDIR = 'html'; $T2H_SUBDIR = ''; $T2H_OPTIONS -> {subdir} = { type => '=s', linkage => \$T2H_SUBDIR, verbose => 'put HTML files in directory $s, instead of $cwd', }; # -short_extn # If this is set all HTML file will have extension ".htm" instead of # ".html". This is helpful when shipping the document to PC systems. $T2H_SHORTEXTN = 0; $T2H_OPTIONS -> {short_ext} = { type => '!', linkage => \$T2H_SHORTEXTN, verbose => 'use "htm" extension for output HTML files', }; # -prefix # Set the output file prefix, prepended to all .html, .gif and .pl files. # By default, this is the basename of the document $T2H_PREFIX = ''; $T2H_OPTIONS -> {prefix} = { type => '=s', linkage => \$T2H_PREFIX, verbose => 'use as prefix for output files, instead of ', }; # -o filename # If set, generate monolithic document output html into $filename $T2H_OUT = ''; $T2H_OPTIONS -> {out_file} = { type => '=s', linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';}, verbose => 'if set, all HTML output goes into file $s', }; # -short_ref #if set cross-references are given without section numbers $T2H_SHORT_REF = ''; $T2H_OPTIONS -> {short_ref} = { type => '!', linkage => \$T2H_SHORT_REF, verbose => 'if set, references are without section numbers', }; # -idx_sum # if value is set, then for each @prinindex $what # $docu_name_$what.idx is created which contains lines of the form # $key\t$ref sorted alphabetically (case matters) $T2H_IDX_SUMMARY = 0; $T2H_OPTIONS -> {idx_sum} = { type => '!', linkage => \$T2H_IDX_SUMMARY, verbose => 'if set, also output index summary', noHelp => 1, }; # -verbose # if set, chatter about what we are doing $T2H_VERBOSE = ''; $T2H_OPTIONS -> {Verbose} = { type => '!', linkage => \$T2H_VERBOSE, verbose => 'print progress info to stdout', }; # -lang # For page titles use $T2H_WORDS->{$T2H_LANG}->{...} as title. # To add a new language, supply list of titles (see $T2H_WORDS below). # and use ISO 639 language codes (see e.g. perl module Locale-Codes-1.02 # for definitions) # Default's to 'en' if not set or no @documentlanguage is specified $T2H_LANG = ''; $T2H_OPTIONS -> {lang} = { type => '=s', linkage => sub {SetDocumentLanguage($_[1])}, verbose => 'use $s as document language (ISO 639 encoding)', }; # -l2h # if set, uses latex2html for generation of math content $T2H_L2H = ''; $T2H_OPTIONS -> {l2h} = { type => '!', linkage => \$T2H_L2H, verbose => 'if set, uses latex2html for @math and @tex', }; ###################### # The following options are only relevant if $T2H_L2H is set # # -l2h_l2h # name/location of latex2html progam $T2H_L2H_L2H = "latex2html"; $T2H_OPTIONS -> {l2h_l2h} = { type => '=s', linkage => \$T2H_L2H_L2H, verbose => 'program to use for latex2html translation', noHelp => 1, }; # -l2h_skip # if set, skips actual call to latex2html tries to reuse previously generated # content, instead $T2H_L2H_SKIP = ''; $T2H_OPTIONS -> {l2h_skip} = { type => '!', linkage => \$T2H_L2H_SKIP, verbose => 'if set, tries to reuse previously latex2html output', noHelp => 1, }; # -l2h_tmp # if set, l2h uses this directory for temporarary files. The path # leading to this directory may not contain a dot (i.e., a "."), # otherwise, l2h will fail $T2H_L2H_TMP = ''; $T2H_OPTIONS -> {l2h_tmp} = { type => '=s', linkage => \$T2H_L2H_TMP, verbose => 'if set, uses $s as temporary latex2html directory', noHelp => 1, }; # if set, cleans intermediate files (they all have the prefix $doc_l2h_) # of l2h $T2H_L2H_CLEAN = 1; $T2H_OPTIONS -> {l2h_clean} = { type => '!', linkage => \$T2H_L2H_CLEAN, verbose => 'if set, do not keep intermediate latex2html files for later reuse', noHelp => 1, }; $T2H_OPTIONS -> {D} = { type => '=s', linkage => sub {$main::value{@_[1]} = 1;}, verbose => 'equivalent to Texinfo "@set $s 1"', noHelp => 1, }; $T2H_OPTIONS -> {init_file} = { type => '=s', linkage => \&LoadInitFile, verbose => 'load init file $s' }; ############################################################################## # # The following can only be set in the init file # ############################################################################## # if set, center @image by default # otherwise, do not center by default $T2H_CENTER_IMAGE = 1; # used as identation for block enclosing command @example, etc # If not empty, must be enclosed in $T2H_EXAMPLE_INDENT_CELL = ' '; # same as above, only for @small $T2H_SMALL_EXAMPLE_INDENT_CELL = ' '; # font size for @small $T2H_SMALL_FONT_SIZE = '-1'; # if non-empty, and no @..heading appeared in Top node, then # use this as header for top node/section, otherwise use value of # @settitle or @shorttitle (in that order) $T2H_TOP_HEADING = ''; # if set, use this chapter for 'Index' button, else # use first chapter whose name matches 'index' (case insensitive) $T2H_INDEX_CHAPTER = ''; # if set and $T2H_SPLIT is set, then split index pages at the next letter # after they have more than that many entries $T2H_SPLIT_INDEX = 100; # if set (e.g., to index.html) replace hrefs to this file # (i.e., to index.html) by ./ $T2H_HREF_DIR_INSTEAD_FILE = ''; ######################################################################## # Language dependencies: # To add a new language extend T2H_WORDS hash and create $T2H_<...>_WORDS hash # To redefine one word, simply do: # $T2H_WORDS->{}->{} = 'whatever' in your personal init file. # $T2H_WORDS_EN = { # titles of pages 'ToC_Title' => 'Table of Contents', 'Overview_Title' => 'Short Table of Contents', 'Index_Title' => 'Index', 'About_Title' => 'About this document', 'Footnotes_Title' => 'Footnotes', 'See' => 'See', 'see' => 'see', 'section' => 'section', # If necessary, we could extend this as follows: # # text for buttons # 'Top_Button' => 'Top', # 'ToC_Button' => 'Contents', # 'Overview_Button' => 'Overview', # 'Index_button' => 'Index', # 'Back_Button' => 'Back', # 'FastBack_Button' => 'FastBack', # 'Prev_Button' => 'Prev', # 'Up_Button' => 'Up', # 'Next_Button' => 'Next', # 'Forward_Button' =>'Forward', # 'FastWorward_Button' => 'FastForward', # 'First_Button' => 'First', # 'Last_Button' => 'Last', # 'About_Button' => 'About' }; $T2H_WORD_DE = { 'ToC_Title' => 'Inhaltsverzeichniss', 'Overview_Title' => 'Kurzes Inhaltsverzeichniss', 'Index_Title' => 'Index', 'About_Title' => 'Über dieses Dokument', 'Footnotes_Title' => 'Fußnoten', 'See' => 'Siehe', 'see' => 'siehe', 'section' => 'Abschnitt', }; $T2H_WORD_NL = { 'ToC_Title' => 'Inhoudsopgave', 'Overview_Title' => 'Korte inhoudsopgave', 'Index_Title' => 'Index', #Not sure ;-) 'About_Title' => 'No translation available!', #No translation available! 'Footnotes_Title' => 'No translation available!', #No translation available! 'See' => 'Zie', 'see' => 'zie', 'section' => 'sectie', }; $T2H_WORD_ES = { 'ToC_Title' => 'índice General', 'Overview_Title' => 'Resumen del Contenido', 'Index_Title' => 'Index', #Not sure ;-) 'About_Title' => 'No translation available!', #No translation available! 'Footnotes_Title' => 'Fußnoten', 'See' => 'Véase', 'see' => 'véase', 'section' => 'sección', }; $T2H_WORD_NO = { 'ToC_Title' => 'Innholdsfortegnelse', 'Overview_Title' => 'Kort innholdsfortegnelse', 'Index_Title' => 'Indeks', #Not sure ;-) 'About_Title' => 'No translation available!', #No translation available! 'Footnotes_Title' => 'No translation available!', 'See' => 'Se', 'see' => 'se', 'section' => 'avsnitt', }; $T2H_WORD_PT = { 'ToC_Title' => 'Sumário', 'Overview_Title' => 'Breve Sumário', 'Index_Title' => 'Índice', #Not sure ;-) 'About_Title' => 'No translation available!', #No translation available! 'Footnotes_Title' => 'No translation available!', 'See' => 'Veja', 'see' => 'veja', 'section' => 'Seção', }; $T2H_WORDS = { 'en' => $T2H_WORDS_EN, 'de' => $T2H_WORDS_DE, 'nl' => $T2H_WORDS_NL, 'es' => $T2H_WORDS_ES, 'no' => $T2H_WORDS_NO, 'pt' => $T2H_WORDS_PT }; @MONTH_NAMES_EN = ( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ); @MONTH_NAMES_DE = ( 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' ); @MONTH_NAMES_NL = ( 'Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December' ); @MONTH_NAMES_ES = ( 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre' ); @MONTH_NAMES_NO = ( 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember' ); @MONTH_NAMES_PT = ( 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro' ); $MONTH_NAMES = { 'en' => \@MONTH_NAMES_EN, 'de' => \@MONTH_NAMES_DE, 'es' => \@MONTH_NAMES_ES, 'nl' => \@MONTH_NAMES_NL, 'no' => \@MONTH_NAMES_NO, 'pt' => \@MONTH_NAMES_PT }; ######################################################################## # Control of Page layout: # You can make changes of the Page layout at two levels: # 1.) For small changes, it is often enough to change the value of # some global string/hash/array variables # 2.) For larger changes, reimplement one of the T2H_DEFAULT_* routines, # give them another name, and assign them to the respective # $T2H_ variable. # As a general interface, the hashes T2H_HREF, T2H_NAME, T2H_NODE hold # href, html-name, node-name of # This -- current section (resp. html page) # Top -- top page ($T2H_TOP_FILE) # Contents -- Table of contents # Overview -- Short table of contents # Index -- Index page # About -- page which explain "navigation buttons" # First -- first node # Last -- last node # # Whether or not the following hash values are set, depends on the context # (all values are w.r.t. 'This' section) # Next -- next node of texinfo # Prev -- previous node of texinfo # Up -- up node of texinfo # Forward -- next node in reading order # Back -- previous node in reading order # FastForward -- if leave node, up and next, else next node # FastBackward-- if leave node, up and prev, else prev node # # Furthermore, the following global variabels are set: # $T2H_THISDOC{title} -- title as set by @setttile # $T2H_THISDOC{fulltitle} -- full title as set by @title... # $T2H_THISDOC{subtitle} -- subtitle as set by @subtitle # $T2H_THISDOC{author} -- author as set by @author # # and pointer to arrays of lines which need to be printed by t2h_print_lines # $T2H_OVERVIEW -- lines of short table of contents # $T2H_TOC -- lines of table of contents # $T2H_TOP -- lines of Top texinfo node # $T2H_THIS_SECTION -- lines of 'This' section # # There are the following subs which control the layout: # $T2H_print_section = \&T2H_DEFAULT_print_section; $T2H_print_Top_header = \&T2H_DEFAULT_print_Top_header; $T2H_print_Top_footer = \&T2H_DEFAULT_print_Top_footer; $T2H_print_Top = \&T2H_DEFAULT_print_Top; $T2H_print_Toc = \&T2H_DEFAULT_print_Toc; $T2H_print_Overview = \&T2H_DEFAULT_print_Overview; $T2H_print_Footnotes = \&T2H_DEFAULT_print_Footnotes; $T2H_print_About = \&T2H_DEFAULT_print_About; $T2H_print_misc_header = \&T2H_DEFAULT_print_misc_header; $T2H_print_misc_footer = \&T2H_DEFAULT_print_misc_footer; $T2H_print_misc = \&T2H_DEFAULT_print_misc; $T2H_print_chapter_header = \&T2H_DEFAULT_print_chapter_header; $T2H_print_chapter_footer = \&T2H_DEFAULT_print_chapter_footer; $T2H_print_page_head = \&T2H_DEFAULT_print_page_head; $T2H_print_page_foot = \&T2H_DEFAULT_print_page_foot; $T2H_print_head_navigation = \&T2H_DEFAULT_print_head_navigation; $T2H_print_foot_navigation = \&T2H_DEFAULT_print_foot_navigation; $T2H_button_icon_img = \&T2H_DEFAULT_button_icon_img; $T2H_print_navigation = \&T2H_DEFAULT_print_navigation; $T2H_about_body = \&T2H_DEFAULT_about_body; $T2H_print_frame = \&T2H_DEFAULT_print_frame; $T2H_print_toc_frame = \&T2H_DEFAULT_print_toc_frame; ######################################################################## # Layout for html for every sections # sub T2H_DEFAULT_print_section { my $fh = shift; local $T2H_BUTTONS = \@T2H_SECTION_BUTTONS; &$T2H_print_head_navigation($fh) if $T2H_SECTION_NAVIGATION; my $nw = t2h_print_lines($fh); if ($T2H_SPLIT eq 'section' && $T2H_SECTION_NAVIGATION) { &$T2H_print_foot_navigation($fh, $nw); } else { print $fh '


' . "\n"; } } ################################################################### # Layout of top-page I recommend that you use @ifnothtml, @ifhtml, # @html within the Top texinfo node to specify content of top-level # page. # # If you enclose everything in @ifnothtml, then title, subtitle, # author and overview is printed # T2H_HREF of Next, Prev, Up, Forward, Back are not defined # if $T2H_SPLIT then Top page is in its own html file sub T2H_DEFAULT_print_Top_header { &$T2H_print_page_head(@_) if $T2H_SPLIT; t2h_print_label(@_); # this needs to be called, otherwise no label set &$T2H_print_head_navigation(@_); } sub T2H_DEFAULT_print_Top_footer { &$T2H_print_foot_navigation(@_); &$T2H_print_page_foot(@_) if $T2H_SPLIT; } sub T2H_DEFAULT_print_Top { my $fh = shift; # for redefining navigation buttons use: # local $T2H_BUTTONS = [...]; # as it is, 'Top', 'Contents', 'Index', 'About' are printed local $T2H_BUTTONS = \@T2H_MISC_BUTTONS; &$T2H_print_Top_header($fh); if ($T2H_THIS_SECTION) { # if top-level node has content, then print it with extra header print $fh "

$T2H_NAME{Top}

" unless ($T2H_HAS_TOP_HEADING); t2h_print_lines($fh, $T2H_THIS_SECTION) } else { # top-level node is fully enclosed in @ifnothtml # print fulltitle, subtitle, author, Overview print $fh "
\n

" . join("

\n

", split(/\n/, $T2H_THISDOC{fulltitle})) . "

\n"; print $fh "

$T2H_THISDOC{subtitle}

\n" if $T2H_THISDOC{subtitle}; print $fh "$T2H_THISDOC{author}\n" if $T2H_THISDOC{author}; print $fh <

Overview:

EOT t2h_print_lines($fh, $T2H_OVERVIEW); print $fh "
\n"; } &$T2H_print_Top_footer($fh); } ################################################################### # Layout of Toc, Overview, and Footnotes pages # By default, we use "normal" layout # T2H_HREF of Next, Prev, Up, Forward, Back, etc are not defined # use: local $T2H_BUTTONS = [...] to redefine navigation buttons sub T2H_DEFAULT_print_Toc { return &$T2H_print_misc(@_); } sub T2H_DEFAULT_print_Overview { return &$T2H_print_misc(@_); } sub T2H_DEFAULT_print_Footnotes { return &$T2H_print_misc(@_); } sub T2H_DEFAULT_print_About { return &$T2H_print_misc(@_); } sub T2H_DEFAULT_print_misc_header { &$T2H_print_page_head(@_) if $T2H_SPLIT; # this needs to be called, otherwise, no labels are set t2h_print_label(@_); &$T2H_print_head_navigation(@_); } sub T2H_DEFAULT_print_misc_footer { &$T2H_print_foot_navigation(@_); &$T2H_print_page_foot(@_) if $T2H_SPLIT; } sub T2H_DEFAULT_print_misc { my $fh = shift; local $T2H_BUTTONS = \@T2H_MISC_BUTTONS; &$T2H_print_misc_header($fh); print $fh "

$T2H_NAME{This}

\n"; t2h_print_lines($fh); &$T2H_print_misc_footer($fh); } ################################################################### # chapter_header and chapter_footer are only called if # T2H_SPLIT eq 'chapter' # chapter_header: after print_page_header, before print_section # chapter_footer: after print_section of last section, before print_page_footer # # If you want to get rid of navigation stuff after each section, # redefine print_section such that it does not call print_navigation, # and put print_navigation into print_chapter_header @T2H_CHAPTER_BUTTONS = ( 'FastBack', 'FastForward', ' ', ' ', ' ', ' ', ' ', 'Top', 'Contents', 'Index', 'About', ); sub T2H_DEFAULT_print_chapter_header { # nothing to do there, by default if (! $T2H_SECTION_NAVIGATION) { my $fh = shift; local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS; &$T2H_print_navigation($fh); print $fh "\n
\n"; } } sub T2H_DEFAULT_print_chapter_footer { local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS; &$T2H_print_navigation(@_); } ################################################################### $T2H_TODAY = &pretty_date; # like "20 September 1993" sub pretty_date { local($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst); ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); $year += ($year < 70) ? 2000 : 1900; # obachman: Let's do it as the Americans do return($MONTH_NAMES->{$T2H_LANG}[$mon] . ", " . $mday . " " . $year); } ################################################################### # Layout of standard header and footer # # Set the default body text, inserted between ###$T2H_BODYTEXT = 'LANG="EN" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"'; $T2H_BODYTEXT = 'LANG="' . $T2H_LANG . '" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"'; # text inserted after $T2H_AFTER_BODY_OPEN = ''; #text inserted before $T2H_PRE_BODY_CLOSE = ''; # this is used in footer $T2H_ADDRESS = "by $T2H_USER " if $T2H_USER; $T2H_ADDRESS .= "on $T2H_TODAY"; # this is added inside after and some META NAME stuff # can be used for <style> <script>, <meta> tags $T2H_EXTRA_HEAD = ''; sub T2H_DEFAULT_print_page_head { my $fh = shift; my $longtitle = "$T2H_THISDOC{title}: $T2H_NAME{This}"; print $fh <<EOT; <HTML> $T2H_DOCTYPE <!-- Created on $T2H_TODAY by $THISPROG --> <!-- $T2H_AUTHORS --> <HEAD> <TITLE>$longtitle $T2H_EXTRA_HEAD $T2H_AFTER_BODY_OPEN EOT } sub T2H_DEFAULT_print_page_foot { my $fh = shift; print $fh < This document was generated $T2H_ADDRESS using texi2html $T2H_PRE_BODY_CLOSE EOT } ################################################################### # Layout of navigation panel # if this is set, then a vertical navigation panel is used $T2H_VERTICAL_HEAD_NAVIGATION = 0; sub T2H_DEFAULT_print_head_navigation { my $fh = shift; if ($T2H_VERTICAL_HEAD_NAVIGATION) { print $fh < EOT } &$T2H_print_navigation($fh, $T2H_VERTICAL_HEAD_NAVIGATION); if ($T2H_VERTICAL_HEAD_NAVIGATION) { print $fh < EOT } elsif ($T2H_SPLIT eq 'section') { print $fh "
\n"; } } # Specifies the minimum page length required before a navigation panel # is placed at the bottom of a page (the default is that of latex2html) # T2H_THIS_WORDS_IN_PAGE holds number of words of current page $T2H_WORDS_IN_PAGE = 300; sub T2H_DEFAULT_print_foot_navigation { my $fh = shift; my $nwords = shift; if ($T2H_VERTICAL_HEAD_NAVIGATION) { print $fh < EOT } print $fh "
\n"; &$T2H_print_navigation($fh) if ($nwords >= $T2H_WORDS_IN_PAGE) } ###################################################################### # navigation panel # # specify in this array which "buttons" should appear in which order # in the navigation panel for sections; use ' ' for empty buttons (space) @T2H_SECTION_BUTTONS = ( 'Back', 'Forward', ' ', 'FastBack', 'Up', 'FastForward', ' ', ' ', ' ', ' ', 'Top', 'Contents', 'Index', 'About', ); # buttons for misc stuff @T2H_MISC_BUTTONS = ('Top', 'Contents', 'Index', 'About'); # insert here name of icon images for buttons # Icons are used, if $T2H_ICONS and resp. value are set %T2H_ACTIVE_ICONS = ( 'Top', '', 'Contents', '', 'Overview', '', 'Index', '', 'Back', '', 'FastBack', '', 'Prev', '', 'Up', '', 'Next', '', 'Forward', '', 'FastForward', '', 'About' , '', 'First', '', 'Last', '', ' ', '' ); # insert here name of icon images for these, if button is inactive %T2H_PASSIVE_ICONS = ( 'Top', '', 'Contents', '', 'Overview', '', 'Index', '', 'Back', '', 'FastBack', '', 'Prev', '', 'Up', '', 'Next', '', 'Forward', '', 'FastForward', '', 'About', '', 'First', '', 'Last', '', ); # how to create IMG tag sub T2H_DEFAULT_button_icon_img { my $button = shift; my $icon = shift; my $name = shift; return qq{$button: $name}; } # Names of text as alternative for icons %T2H_NAVIGATION_TEXT = ( 'Top', 'Top', 'Contents', 'Contents', 'Overview', 'Overview', 'Index', 'Index', ' ', '   ', 'Back', ' < ', 'FastBack', ' << ', 'Prev', 'Prev', 'Up', ' Up ', 'Next', 'Next', 'Forward', ' > ', 'FastForward', ' >> ', 'About', ' ? ', 'First', ' |< ', 'Last', ' >| ' ); sub T2H_DEFAULT_print_navigation { my $fh = shift; my $vertical = shift; my $spacing = 1; print $fh "\n"; print $fh "" unless $vertical; for $button (@$T2H_BUTTONS) { print $fh qq{\n} if $vertical; print $fh qq{\n"; print $fh "\n" if $vertical; } print $fh "" unless $vertical; print $fh "
}; if (ref($button) eq 'CODE') { &$button($fh, $vertical); } elsif ($button eq ' ') { # handle space button print $fh $T2H_ICONS && $T2H_ACTIVE_ICONS{' '} ? &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{' '}) : $T2H_NAVIGATION_TEXT{' '}; next; } elsif ($T2H_HREF{$button}) { # button is active print $fh $T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ? # use icon ? t2h_anchor('', $T2H_HREF{$button}, # yes &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{$button}, $T2H_NAME{$button})) : # use text "[" . t2h_anchor('', $T2H_HREF{$button}, $T2H_NAVIGATION_TEXT{$button}) . "]"; } else { # button is passive print $fh $T2H_ICONS && $T2H_PASSIVE_ICONS{$button} ? &$T2H_button_icon_img($button, $T2H_PASSIVE_ICONS{$button}, $T2H_NAME{$button}) : "[" . $T2H_NAVIGATION_TEXT{$button} . "]"; } print $fh "
\n"; } ###################################################################### # Frames: this is from "Richard Y. Kim" # Should be improved to be more conforming to other _print* functions sub T2H_DEFAULT_print_frame { my $fh = shift; print $fh < $T2H_THISDOC{title} EOT } sub T2H_DEFAULT_print_toc_frame { my $fh = shift; &$T2H_print_page_head($fh); print $fh <Content EOT print $fh map {s/HREF=/target=\"main\" HREF=/; $_;} @stoc_lines; print $fh "\n"; } ###################################################################### # About page # # T2H_PRE_ABOUT might be a function $T2H_PRE_ABOUT = <texi2html

EOT $T2H_AFTER_ABOUT = ''; sub T2H_DEFAULT_about_body { my $about; if (ref($T2H_PRE_ABOUT) eq 'CODE') { $about = &$T2H_PRE_ABOUT(); } else { $about = $T2H_PRE_ABOUT; } $about .= <

EOT for $button (@T2H_SECTION_BUTTONS) { next if $button eq ' ' || ref($button) eq 'CODE'; $about .= < EOT } $about .= <

where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:
  • 1. Section One
    • 1.1 Subsection One-One
      • ...
    • 1.2 Subsection One-Two
      • 1.2.1 Subsubsection One-Two-One
      • 1.2.2 Subsubsection One-Two-Two
      • 1.2.3 Subsubsection One-Two-Three     <== Current Position
      • 1.2.4 Subsubsection One-Two-Four
    • 1.3 Subsection One-Three
      • ...
    • 1.4 Subsection One-Four
$T2H_AFTER_ABOUT EOT return $about; } %T2H_BUTTONS_GOTO = ( 'Top', 'cover (top) of document', 'Contents', 'table of contents', 'Overview', 'short table of contents', 'Index', 'concept index', 'Back', 'previous section in reading order', 'FastBack', 'previous or up-and-previous section ', 'Prev', 'previous section same level', 'Up', 'up section', 'Next', 'next section same level', 'Forward', 'next section in reading order', 'FastForward', 'next or up-and-next section', 'About' , 'this page', 'First', 'first section in reading order', 'Last', 'last section in reading order', ); %T2H_BUTTONS_EXAMPLE = ( 'Top', '   ', 'Contents', '   ', 'Overview', '   ', 'Index', '   ', 'Back', '1.2.2', 'FastBack', '1.1', 'Prev', '1.2.2', 'Up', '1.2', 'Next', '1.2.4', 'Forward', '1.2.4', 'FastForward', '1.3', 'About', '   ', 'First', '1.', 'Last', '1.2.4', ); ###################################################################### # from here on, its l2h init stuff # ## initialization for latex2html as for Singular manual generation ## obachman 3/99 # # Options controlling Titles, File-Names, Tracing and Sectioning # $TITLE = ''; $SHORTEXTN = 0; $LONG_TITLES = 0; $DESTDIR = ''; # should be overwritten by cmd-line argument $NO_SUBDIR = 0;# should be overwritten by cmd-line argument $PREFIX = ''; # should be overwritten by cmd-line argument $AUTO_PREFIX = 0; # this is needed, so that prefix settings are used $AUTO_LINK = 0; $SPLIT = 0; $MAX_LINK_DEPTH = 0; $TMP = ''; # should be overwritten by cmd-line argument $DEBUG = 0; $VERBOSE = 1; # # Options controlling Extensions and Special Features # $HTML_VERSION = "3.2"; $TEXDEFS = 1; # we absolutely need that $EXTERNAL_FILE = ''; $SCALABLE_FONTS = 1; $NO_SIMPLE_MATH = 1; $LOCAL_ICONS = 1; $SHORT_INDEX = 0; $NO_FOOTNODE = 1; $ADDRESS = ''; $INFO = ''; # # Switches controlling Image Generation # $ASCII_MODE = 0; $NOLATEX = 0; $EXTERNAL_IMAGES = 0; $PS_IMAGES = 0; $NO_IMAGES = 0; $IMAGES_ONLY = 0; $REUSE = 2; $ANTI_ALIAS = 1; $ANTI_ALIAS_TEXT = 1; # #Switches controlling Navigation Panels # $NO_NAVIGATION = 1; $ADDRESS = ''; $INFO = 0; # 0 = do not make a "About this document..." section # #Switches for Linking to other documents # # actuall -- we don't care $MAX_SPLIT_DEPTH = 0; # Stop making separate files at this depth $MAX_LINK_DEPTH = 0; # Stop showing child nodes at this depth $NOLATEX = 0; # 1 = do not pass unknown environments to Latex $EXTERNAL_IMAGES = 0; # 1 = leave the images outside the document $ASCII_MODE = 0; # 1 = do not use any icons or internal images # 1 = use links to external postscript images rather than inlined bitmap # images. $PS_IMAGES = 0; $SHOW_SECTION_NUMBERS = 0; ### Other global variables ############################################### $CHILDLINE = ""; # This is the line width measured in pixels and it is used to right justify # equations and equation arrays; $LINE_WIDTH = 500; # Used in conjunction with AUTO_NAVIGATION $WORDS_IN_PAGE = 300; # Affects ONLY the way accents are processed $default_language = 'english'; # The value of this variable determines how many words to use in each # title that is added to the navigation panel (see below) # $WORDS_IN_NAVIGATION_PANEL_TITLES = 0; # This number will determine the size of the equations, special characters, # and anything which will be converted into an inlined image # *except* "image generating environments" such as "figure", "table" # or "minipage". # Effective values are those greater than 0. # Sensible values are between 0.1 - 4. $MATH_SCALE_FACTOR = 1.5; # This number will determine the size of # image generating environments such as "figure", "table" or "minipage". # Effective values are those greater than 0. # Sensible values are between 0.1 - 4. $FIGURE_SCALE_FACTOR = 1.6; # If both of the following two variables are set then the "Up" button # of the navigation panel in the first node/page of a converted document # will point to $EXTERNAL_UP_LINK. $EXTERNAL_UP_TITLE should be set # to some text which describes this external link. $EXTERNAL_UP_LINK = ""; $EXTERNAL_UP_TITLE = ""; # If this is set then the resulting HTML will look marginally better if viewed # with Netscape. $NETSCAPE_HTML = 1; # Valid paper sizes are "letter", "legal", "a4","a3","a2" and "a0" # Paper sizes has no effect other than in the time it takes to create inlined # images and in whether large images can be created at all ie # - larger paper sizes *MAY* help with large image problems # - smaller paper sizes are quicker to handle $PAPERSIZE = "a4"; # Replace "english" with another language in order to tell LaTeX2HTML that you # want some generated section titles (eg "Table of Contents" or "References") # to appear in a different language. Currently only "english" and "french" # is supported but it is very easy to add your own. See the example in the # file "latex2html.config" $TITLES_LANGUAGE = "english"; 1; # This must be the last non-comment line # End File texi2html.init ###################################################################### require "$ENV{T2H_HOME}/texi2html.init" if ($0 =~ /\.pl$/ && -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init"); #+++############################################################################ # # # Initialization # # Pasted content of File $(srcdir)/MySimple.pm: Command-line processing # # # #---############################################################################ # leave this within comments, and keep the require statement # This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init # exists. # package Getopt::MySimple; # Name: # Getopt::MySimple. # # Documentation: # POD-style (incomplete) documentation is in file MySimple.pod # # Tabs: # 4 spaces || die. # # Author: # Ron Savage rpsavage@ozemail.com.au. # 1.00 19-Aug-97 Initial version. # 1.10 13-Oct-97 Add arrays of switches (eg '=s@'). # 1.20 3-Dec-97 Add 'Help' on a per-switch basis. # 1.30 11-Dec-97 Change 'Help' to 'verbose'. Make all hash keys lowercase. # 1.40 10-Nov-98 Change width of help report. Restructure tests. # 1-Jul-00 Modifications for Texi2html # -------------------------------------------------------------------------- # Locally modified by obachman (Display type instead of env, order by cmp) # $Id: MySimple.pm,v 1.1 2000/07/03 08:44:13 obachman Exp $ # use strict; # no strict 'refs'; use vars qw(@EXPORT @EXPORT_OK @ISA); use vars qw($fieldWidth $opt $VERSION); use Exporter(); use Getopt::Long; @ISA = qw(Exporter); @EXPORT = qw(); @EXPORT_OK = qw($opt); # An alias for $self -> {'opt'}. # -------------------------------------------------------------------------- $fieldWidth = 20; $VERSION = '1.41'; # -------------------------------------------------------------------------- sub byOrder { my($self) = @_; return uc($a) cmp (uc($b)); } # -------------------------------------------------------------------------- sub dumpOptions { my($self) = @_; print 'Option', ' ' x ($fieldWidth - length('Option') ), "Value\n"; for (sort byOrder keys(%{$self -> {'opt'} }) ) { print "-$_", ' ' x ($fieldWidth - (1 + length) ), "${$self->{'opt'} }{$_}\n"; } print "\n"; } # End of dumpOptions. # -------------------------------------------------------------------------- # Return: # 0 -> Error. # 1 -> Ok. sub getOptions { push(@_, 0) if ($#_ == 2); # Default for $ignoreCase is 0. push(@_, 1) if ($#_ == 3); # Default for $helpThenExit is 1. my($self, $default, $helpText, $versionText, $helpThenExit, $versionThenExit, $ignoreCase) = @_; $helpThenExit = 1 unless (defined($helpThenExit)); $versionThenExit = 1 unless (defined($versionThenExit)); $ignoreCase = 0 unless (defined($ignoreCase)); $self -> {'default'} = $default; $self -> {'helpText'} = $helpText; $self -> {'versionText'} = $versionText; $Getopt::Long::ignorecase = $ignoreCase; unless (defined($self -> {'default'}{'help'})) { $self -> {'default'}{'help'} = { type => ':i', default => '', linkage => sub {$self->helpOptions($_[1]); exit (0) if $helpThenExit;}, verbose => "print help and exit" }; } unless (defined($self -> {'default'}{'version'})) { $self -> {'default'}{'version'} = { type => '', default => '', linkage => sub {print $self->{'versionText'}; exit (0) if versionTheExit;}, verbose => "print version and exit" }; } for (keys(%{$self -> {'default'} }) ) { my $type = ${$self -> {'default'} }{$_}{'type'}; push(@{$self -> {'type'} }, "$_$type"); $self->{'opt'}->{$_} = ${$self -> {'default'} }{$_}{'linkage'} if ${$self -> {'default'} }{$_}{'linkage'}; } my($result) = &GetOptions($self -> {'opt'}, @{$self -> {'type'} }); return $result unless $result; for (keys(%{$self -> {'default'} }) ) { if (! defined(${$self -> {'opt'} }{$_})) #{ { ${$self -> {'opt'} }{$_} = ${$self -> {'default'} }{$_}{'default'}; } } $result; } # End of getOptions. # -------------------------------------------------------------------------- sub helpOptions { my($self) = shift; my($noHelp) = shift; $noHelp = 0 unless $noHelp; my($optwidth, $typewidth, $defaultwidth, $maxlinewidth, $valind, $valwidth) = (10, 5, 9, 78, 4, 11); print "$self->{'helpText'}" if ($self -> {'helpText'}); print ' Option', ' ' x ($optwidth - length('Option') -1 ), 'Type', ' ' x ($typewidth - length('Type') + 1), 'Default', ' ' x ($defaultwidth - length('Default') ), "Description\n"; for (sort byOrder keys(%{$self -> {'default'} }) ) { my($line, $help, $option, $val); $option = $_; next if ${$self->{'default'} }{$_}{'noHelp'} && ${$self->{'default'} }{$_}{'noHelp'} > $noHelp; $line = " -$_ " . ' ' x ($optwidth - (2 + length) ) . "${$self->{'default'} }{$_}{'type'} ". ' ' x ($typewidth - (1+length(${$self -> {'default'} }{$_}{'type'}) )); $val = ${$self->{'default'} }{$_}{'linkage'}; if ($val) { if (ref($val) eq 'SCALAR') { $val = $$val; } else { $val = ''; } } else { $val = ${$self->{'default'} }{$_}{'default'}; } $line .= "$val "; $line .= ' ' x ($optwidth + $typewidth + $defaultwidth + 1 - length($line)); if (defined(${$self -> {'default'} }{$_}{'verbose'}) && ${$self -> {'default'} }{$_}{'verbose'} ne '') { $help = "${$self->{'default'} }{$_}{'verbose'}"; } else { $help = ' '; } if ((length("$line") + length($help)) < $maxlinewidth) { print $line , $help, "\n"; } else { print $line, "\n", ' ' x $valind, $help, "\n"; } for $val (sort byOrder keys(%{${$self->{'default'}}{$option}{'values'}})) { print ' ' x ($valind + 2); print $val, ' ', ' ' x ($valwidth - length($val) - 2); print ${$self->{'default'}}{$option}{'values'}{$val}, "\n"; } } print <| ! no argument: variable is set to 1 on -foo (or, to 0 on -nofoo) =s | :s mandatory (or, optional) string argument =i | :i mandatory (or, optional) integer argument EOT } # End of helpOptions. #------------------------------------------------------------------- sub new { my($class) = @_; my($self) = {}; $self -> {'default'} = {}; $self -> {'helpText'} = ''; $self -> {'opt'} = {}; $opt = $self -> {'opt'}; # An alias for $self -> {'opt'}. $self -> {'type'} = (); return bless $self, $class; } # End of new. # -------------------------------------------------------------------------- 1; # End MySimple.pm require "$ENV{T2H_HOME}/MySimple.pm" if ($0 =~ /\.pl$/ && -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init"); package main; #+++############################################################################ # # # Constants # # # #---############################################################################ $DEBUG_TOC = 1; $DEBUG_INDEX = 2; $DEBUG_BIB = 4; $DEBUG_GLOSS = 8; $DEBUG_DEF = 16; $DEBUG_HTML = 32; $DEBUG_USER = 64; $DEBUG_L2H = 128; $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 $ERROR = "***"; # prefix for errors $WARN = "**"; # prefix for warnings # program home page $PROTECTTAG = "_ThisIsProtected_"; # tag to recognize protected sections $CHAPTEREND = "\n"; # to know where a chpater ends $SECTIONEND = "\n"; # to know where section ends $TOPEND = "\n"; # to know where top ends # # pre-defined indices # $index_properties = { 'c' => { name => 'cp'}, 'f' => { name => 'fn', code => 1}, 'v' => { name => 'vr', code => 1}, 'k' => { name => 'ky', code => 1}, 'p' => { name => 'pg', code => 1}, 't' => { name => 'tp', code => 1} }; %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 "*", "
", # HTML+ " ", " ", "\t", " ", "-", "­", # soft hyphen "\n", "\n", "|", "", 'tab', '<\/TD>
Button Name Go to From 1.2.3 go to
EOT $about .= ($T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ? &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{$button}) : " [" . $T2H_NAVIGATION_TEXT{$button} . "] "); $about .= < $button $T2H_BUTTONS_GOTO{$button} $T2H_BUTTONS_EXAMPLE{$button}
', # spacing commands ":", "", "!", "!", "?", "?", ".", ".", "-", "", ); # # texinfo "things" (@foo{}) to HTML ones # %things_map = ( 'TeX', 'TeX', 'br', '

', # paragraph break 'bullet', '*', 'copyright', '(C)', 'dots', '...<\/small>', 'enddots', '....<\/small>', 'equiv', '==', 'error', 'error-->', 'expansion', '==>', 'minus', '-', 'point', '-!-', 'print', '-|', 'result', '=>', 'today', $T2H_TODAY, 'aa', 'å', 'AA', 'Å', 'ae', 'æ', 'oe', 'œ', 'AE', 'Æ', 'OE', 'Œ', 'o', 'ø', 'O', 'Ø', 'ss', 'ß', 'l', '\/l', 'L', '\/L', 'exclamdown', '¡', 'questiondown', '¿', 'pounds', '£' ); # # texinfo styles (@foo{bar}) to HTML ones # %style_map = ( 'acronym', '&do_acronym', 'asis', '', 'b', 'B', 'cite', 'CITE', 'code', 'CODE', 'command', 'CODE', 'ctrl', '&do_ctrl', # special case 'dfn', 'EM', # DFN tag is illegal in the standard 'dmn', '', # useless 'email', '&do_email', # insert a clickable email address 'emph', 'EM', 'env', 'CODE', 'file', '"TT', # will put quotes, cf. &apply_style 'i', 'I', 'kbd', 'KBD', 'key', 'KBD', 'math', '&do_math', 'option', '"SAMP', # will put quotes, cf. &apply_style 'r', '', # unsupported 'samp', '"SAMP', # will put quotes, cf. &apply_style 'sc', '&do_sc', # special case 'strong', 'STRONG', 't', 'TT', 'titlefont', '', # useless 'uref', '&do_uref', # insert a clickable URL 'url', '&do_url', # insert a clickable URL 'var', 'VAR', 'w', '', # unsupported 'H', '&do_accent', 'dotaccent', '&do_accent', 'ringaccent','&do_accent', 'tieaccent', '&do_accent', 'u','&do_accent', 'ubaraccent','&do_accent', 'udotaccent','&do_accent', 'v', '&do_accent', ',', '&do_accent', 'dotless', '&do_accent' ); # # texinfo format (@foo/@end foo) to HTML ones # %format_map = ( 'quotation', 'BLOCKQUOTE', # lists 'itemize', 'UL', 'enumerate', 'OL', # poorly supported 'flushleft', 'PRE', 'flushright', 'PRE', ); # # an eval of these $complex_format_map->{what}->[0] yields beginning # an eval of these $complex_format_map->{what}->[1] yieleds end $complex_format_map = { example => [ q{"$T2H_EXAMPLE_INDENT_CELL
"},
  q{'
'} ], smallexample => [ q{"$T2H_SMALL_EXAMPLE_INDENT_CELL
"},
  q{'
'} ], display => [ q{"$T2H_EXAMPLE_INDENT_CELL
'},
  q{'
'} ], smalldisplay => [ q{"$T2H_SMALL_EXAMPLE_INDENT_CELL
'},
  q{'
'} ] }; $complex_format_map->{lisp} = $complex_format_map->{example}; $complex_format_map->{smalllisp} = $complex_format_map->{smallexample}; $complex_format_map->{format} = $complex_format_map->{display}; $complex_format_map->{smallformat} = $complex_format_map->{smalldisplay}; # # 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}', 'deftypeivar', 'defcv {Instance Variable}', # NEW: FIXME 'defmethod', 'defop Method', 'deftypemethod', 'defop Method', # NEW:FIXME # 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, 'ifnotinfo', 1, 'ifnottex', 1, 'ifhtml', 1, 'end ifhtml', 1, 'end ifnotinfo', 1, 'end ifnottex', 1, # useless 'detailmenu', 1, 'direntry', 1, '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, 'sp', 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, 'paragraphindent', 1, # unsupported formats 'cartouche', 1, 'end cartouche', 1, 'group', 1, 'end group', 1, ); #+++############################################################################ # # # Argument parsing, initialisation # # # #---############################################################################ # # flush stdout and stderr after every write # select(STDERR); $| = 1; select(STDOUT); $| = 1; %value = (); # hold texinfo variables, see also -D $use_bibliography = 1; $use_acc = 1; # # called on -init-file sub LoadInitFile { my $init_file = shift; # second argument is value of options $init_file = shift; if (-f $init_file) { print "# reading initialization file from $init_file\n" if ($T2H_VERBOSE); require($init_file); } else { print "$ERROR Error: can't read init file $int_file\n"; $init_file = ''; } } # # called on -lang sub SetDocumentLanguage { my $lang = shift; if (! exists($T2H_WORDS->{$lang})) { warn "$ERROR: Language specs for '$lang' do not exists. Reverting to '" . ($T2H_LANG ? T2H_LANG : "en") . "'\n"; } else { print "# using '$lang' as document language\n" if ($T2H_VERBOSE); $T2H_LANG = $lang; } } ## ## obsolete cmd line options ## $T2H_OBSOLETE_OPTIONS -> {'no-section_navigation'} = { type => '!', linkage => sub {$main::T2H_SECTION_NAVIGATION = 0;}, verbose => 'obsolete, use -nosec_nav', noHelp => 2, }; $T2H_OBSOLETE_OPTIONS -> {use_acc} = { type => '!', linkage => \$use_acc, verbose => 'obsolete', noHelp => 2 }; $T2H_OBSOLETE_OPTIONS -> {expandinfo} = { type => '!', linkage => sub {$main::T2H_EXPAND = 'info';}, verbose => 'obsolete, use "-expand info" instead', noHelp => 2, }; $T2H_OBSOLETE_OPTIONS -> {expandtex} = { type => '!', linkage => sub {$main::T2H_EXPAND = 'tex';}, verbose => 'obsolete, use "-expand tex" instead', noHelp => 2, }; $T2H_OBSOLETE_OPTIONS -> {monolithic} = { type => '!', linkage => sub {$main::T2H_SPLIT = '';}, verbose => 'obsolete, use "-split no" instead', noHelp => 2 }; $T2H_OBSOLETE_OPTIONS -> {split_node} = { type => '!', linkage => sub{$main::T2H_SPLIT = 'section';}, verbose => 'obsolete, use "-split section" instead', noHelp => 2, }; $T2H_OBSOLETE_OPTIONS -> {split_chapter} = { type => '!', linkage => sub{$main::T2H_SPLIT = 'chapter';}, verbose => 'obsolete, use "-split chapter" instead', noHelp => 2, }; $T2H_OBSOLETE_OPTIONS -> {no_verbose} = { type => '!', linkage => sub {$main::T2H_VERBOSE = 0;}, verbose => 'obsolete, use -noverbose instead', noHelp => 2, }; $T2H_OBSOLETE_OPTIONS -> {output_file} = { type => '=s', linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';}, verbose => 'obsolete, use -out_file instead', noHelp => 2 }; $T2H_OBSOLETE_OPTIONS -> {section_navigation} = { type => '!', linkage => \$T2H_SECTION_NAVIGATION, verbose => 'obsolete, use -sec_nav instead', noHelp => 2, }; $T2H_OBSOLETE_OPTIONS -> {verbose} = { type => '!', linkage => \$T2H_VERBOSE, verbose => 'obsolete, use -Verbose instead', noHelp => 2 }; # read initialzation from $sysconfdir/texi2htmlrc or $HOME/.texi2htmlrc my $home = $ENV{HOME}; defined($home) or $home = ''; foreach $i ('/usr/local/etc/texi2htmlrc', "$home/.texi2htmlrc") { if (-f $i) { print "# reading initialization file from $i\n" if ($T2H_VERBOSE); require($i); } } #+++############################################################################ # # # parse command-line options # # #---############################################################################ $T2H_USAGE_TEXT = <getOptions($T2H_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n")) { print $Configure_failed if $Configure_failed; die $T2H_FAILURE_TEXT; } if (@ARGV > 1) { eval {Getopt::Long::Configure("no_pass_through");}; if (! $options->getOptions($T2H_OBSOLETE_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n")) { print $Configure_failed if $Configure_failed; die $T2H_FAILURE_TEXT; } } if ($T2H_CHECK) { die "Need file to check\n$T2H_FAILURE_TEXT" unless @ARGV > 0; ✓ exit; } #+++############################################################################ # # # evaluation of cmd line options # # #---############################################################################ if ($T2H_EXPAND eq 'info') { $to_skip{'ifinfo'} = 1; $to_skip{'end ifinfo'} = 1; } elsif ($T2H_EXPAND eq 'tex') { $to_skip{'iftex'} = 1; $to_skip{'end iftex'} = 1; } $T2H_INVISIBLE_MARK = '' if $T2H_INVISIBLE_MARK eq 'xbm'; # # file name buisness # die "Need exactly one file to translate\n$T2H_FAILURE_TEXT" unless @ARGV == 1; $docu = shift(@ARGV); if ($docu =~ /.*\//) { chop($docu_dir = $&); $docu_name = $'; } else { $docu_dir = '.'; $docu_name = $docu; } unshift(@T2H_INCLUDE_DIRS, $docu_dir); $docu_name =~ s/\.te?x(i|info)?$//; # basename of the document $docu_name = $T2H_PREFIX if ($T2H_PREFIX); # subdir if ($T2H_SUBDIR && ! $T2H_OUT) { $T2H_SUBDIR =~ s|/*$||; unless (-d "$T2H_SUBDIR" && -w "$T2H_SUBDIR") { if ( mkdir($T2H_SUBDIR, oct(755))) { print "# created directory $T2H_SUBDIR\n" if ($T2H_VERBOSE); } else { warn "$ERROR can't create directory $T2H_SUBDIR. Put results into current directory\n"; $T2H_SUBDIR = ''; } } } if ($T2H_SUBDIR && ! $T2H_OUT) { $docu_rdir = "$T2H_SUBDIR/"; print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE); } else { if ($T2H_OUT && $T2H_OUT =~ m|(.*)/|) { $docu_rdir = "$1/"; print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE); } else { print "# putting result files into current directory \n" if ($T2H_VERBOSE); $docu_rdir = ''; } } # extension if ($T2H_SHORTEXTN) { $docu_ext = "htm"; } else { $docu_ext = "html"; } if ($T2H_TOP_FILE =~ /\..*$/) { $T2H_TOP_FILE = $`.".$docu_ext"; } # result files if (! $T2H_OUT && ($T2H_SPLIT =~ /section/i || $T2H_SPLIT =~ /node/i)) { $T2H_SPLIT = 'section'; } elsif (! $T2H_OUT && $T2H_SPLIT =~ /chapter/i) { $T2H_SPLIT = 'chapter' } else { undef $T2H_SPLIT; } $docu_doc = "$docu_name.$docu_ext"; # document's contents $docu_doc_file = "$docu_rdir$docu_doc"; if ($T2H_SPLIT) { $docu_toc = $T2H_TOC_FILE || "${docu_name}_toc.$docu_ext"; # document's table of contents $docu_stoc = "${docu_name}_ovr.$docu_ext"; # document's short toc $docu_foot = "${docu_name}_fot.$docu_ext"; # document's footnotes $docu_about = "${docu_name}_abt.$docu_ext"; # about this document $docu_top = $T2H_TOP_FILE || $docu_doc; } else { if ($T2H_OUT) { $docu_doc = $T2H_OUT; $docu_doc =~ s|.*/||; } $docu_toc = $docu_foot = $docu_stoc = $docu_about = $docu_top = $docu_doc; } $docu_toc_file = "$docu_rdir$docu_toc"; $docu_stoc_file = "$docu_rdir$docu_stoc"; $docu_foot_file = "$docu_rdir$docu_foot"; $docu_about_file = "$docu_rdir$docu_about"; $docu_top_file = "$docu_rdir$docu_top"; $docu_frame_file = "$docu_rdir${docu_name}_frame.$docu_ext"; $docu_toc_frame_file = "$docu_rdir${docu_name}_toc_frame.$docu_ext"; # # variables # $value{'html'} = 1; # predefine html (the output format) $value{'texi2html'} = $THISVERSION; # predefine texi2html (the translator) # _foo: internal to track @foo foreach ('_author', '_title', '_subtitle', '_settitle', '_setfilename', '_shorttitle') { $value{$_} = ''; # prevent -w warnings } %node2sec = (); # node to section name %sec2node = (); # section to node name %sec2number = (); # section to number %number2sec = (); # number to section %idx2node = (); # index keys to node %node2href = (); # node to HREF %node2next = (); # node to next %node2prev = (); # node to prev %node2up = (); # node to up %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 ($T2H_USE_ISO) { $things_map{'bullet'} = "•"; $things_map{'copyright'} = "©"; $things_map{'dots'} = "…"; $things_map{'equiv'} = "≡"; $things_map{'expansion'} = "→"; $things_map{'point'} = "∗"; $things_map{'result'} = "⇒"; } # # read texi2html extensions (if any) # $extensions = 'texi2html.ext'; # extensions in working directory if (-f $extensions) { print "# reading extensions from $extensions\n" if $T2H_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 $T2H_VERBOSE; require($extensions); } } print "# reading from $docu\n" if $T2H_VERBOSE; ######################################################################### # # latex2html stuff # # latex2html conversions consist of three stages: # 1) ToLatex: Put "latex" code into a latex file # 2) ToHtml: Use latex2html to generate corresponding html code and images # 3) FromHtml: Extract generated code and images from latex2html run # ########################## # default settings # # defaults for files and names sub l2h_Init { local($root) = @_; return 0 unless ($root); $l2h_name = "${root}_l2h"; $l2h_latex_file = "$docu_rdir${l2h_name}.tex"; $l2h_cache_file = "${docu_rdir}l2h_cache.pm"; $T2H_L2H_L2H = "latex2html" unless ($T2H_L2H_L2H); # destination dir -- generated images are put there, should be the same # as dir of enclosing html document -- $l2h_html_file = "$docu_rdir${l2h_name}.html"; $l2h_prefix = "${l2h_name}_"; return 1; } ########################## # # First stage: Generation of Latex file # Initialize with: l2h_InitToLatex # Add content with: l2h_ToLatex($text) --> HTML placeholder comment # Finish with: l2h_FinishToLatex # $l2h_latex_preample = <$l2h_latex_file")) { warn "$ERROR Error l2h: Can't open latex file '$latex_file' for writing\n"; return 0; } print "# l2h: use ${l2h_latex_file} as latex file\n" if ($T2H_VERBOSE); print L2H_LATEX $l2h_latex_preample; } # open database for caching l2h_InitCache(); $l2h_latex_count = 0; $l2h_to_latex_count = 0; $l2h_cached_count = 0; return 1; } # print text (1st arg) into latex file (if not already there), return # HTML commentary which can be later on replaced by the latex2html # generated text sub l2h_ToLatex { my($text) = @_; my($count); $l2h_to_latex_count++; $text =~ s/(\s*)$//; # try whether we can cache it my $cached_text = l2h_FromCache($text); if ($cached_text) { $l2h_cached_count++; return $cached_text; } # try whether we have text already on things to do unless ($count = $l2h_to_latex{$text}) { $count = $l2h_latex_count; $l2h_latex_count++; $l2h_to_latex{$text} = $count; $l2h_to_latex[$count] = $text; unless ($T2H_L2H_SKIP) { print L2H_LATEX "\\begin{rawhtml}\n"; print L2H_LATEX "\n"; print L2H_LATEX "\\end{rawhtml}\n"; print L2H_LATEX "$text\n"; print L2H_LATEX "\\begin{rawhtml}\n"; print L2H_LATEX "\n"; print L2H_LATEX "\\end{rawhtml}\n"; } } return ""; } # print closing into latex file and close it sub l2h_FinishToLatex { local ($reused); $reused = $l2h_to_latex_count - $l2h_latex_count - $l2h_cached_count; unless ($T2H_L2H_SKIP) { print L2H_LATEX $l2h_latex_closing; close(L2H_LATEX); } print "# l2h: finished to latex ($l2h_cached_count cached, $reused reused, $l2h_latex_count contents)\n" if ($T2H_VERBOSE); unless ($l2h_latex_count) { l2h_Finish(); return 0; } return 1; } ################################### # Second stage: Use latex2html to generate corresponding html code and images # # l2h_ToHtml([$l2h_latex_file, [$l2h_html_dir]]): # Call latex2html on $l2h_latex_file # Put images (prefixed with $l2h_name."_") and html file(s) in $l2h_html_dir # Return 1, on success # 0, otherwise # sub l2h_ToHtml { local($call, $ext, $root, $dotbug); if ($T2H_L2H_SKIP) { print "# l2h: skipping latex2html run\n" if ($T2H_VERBOSE); return 1; } # Check for dot in directory where dvips will work if ($T2H_L2H_TMP) { if ($T2H_L2H_TMP =~ /\./) { warn "$ERROR Warning l2h: l2h_tmp dir contains a dot. Use /tmp, instead\n"; $dotbug = 1; } } else { if (&getcwd =~ /\./) { warn "$ERROR Warning l2h: current dir contains a dot. Use /tmp as l2h_tmp dir \n"; $dotbug = 1; } } # fix it, if necessary and hope that it works $T2H_L2H_TMP = "/tmp" if ($dotbug); $call = $T2H_L2H_L2H; # use init file, if specified $call = $call . " -init_file " . $init_file if ($init_file && -f $init_file); # set output dir $call .= ($docu_rdir ? " -dir $docu_rdir" : " -no_subdir"); # use l2h_tmp, if specified $call = $call . " -tmp $T2H_L2H_TMP" if ($T2H_L2H_TMP); # options we want to be sure of $call = $call ." -address 0 -info 0 -split 0 -no_navigation -no_auto_link"; $call = $call ." -prefix ${l2h_prefix} $l2h_latex_file"; print "# l2h: executing '$call'\n" if ($T2H_VERBOSE); if (system($call)) { warn "l2h ***Error: '${call}' did not succeed\n"; return 0; } else { print "# l2h: latex2html finished successfully\n" if ($T2H_VERBOSE); return 1; } } # this is directly pasted over from latex2html sub getcwd { local($_) = `pwd`; die "'pwd' failed (out of memory?)\n" unless length; chop; $_; } ########################## # Third stage: Extract generated contents from latex2html run # Initialize with: l2h_InitFromHtml # open $l2h_html_file for reading # reads in contents into array indexed by numbers # return 1, on success -- 0, otherwise # Extract Html code with: l2h_FromHtml($text) # replaces in $text all previosuly inserted comments by generated html code # returns (possibly changed) $text # Finish with: l2h_FinishFromHtml # closes $l2h_html_dir/$l2h_name.".$docu_ext" sub l2h_InitFromHtml { local($h_line, $h_content, $count, %l2h_img); if (! open(L2H_HTML, "<${l2h_html_file}")) { print "$ERROR Error l2h: Can't open ${l2h_html_file} for reading\n"; return 0; } print "# l2h: use ${l2h_html_file} as html file\n" if ($T2H_VERBOSE); $l2h_html_count = 0; while ($h_line = ) { if ($h_line =~ /^/) { $count = $1; $h_content = ""; while ($h_line = ) { if ($h_line =~ /^/) { chomp $h_content; chomp $h_content; $l2h_html_count++; $h_content = l2h_ToCache($count, $h_content); $l2h_from_html[$count] = $h_content; $h_content = ''; last; } $h_content = $h_content.$h_line; } if ($hcontent) { print "$ERROR Warning l2h: l2h_end $l2h_name $count not found\n" if ($T2H_VERBOSE); close(L2H_HTML); return 0; } } } print "# l2h: Got $l2h_html_count of $l2h_latex_count html contents\n" if ($T2H_VERBOSE); close(L2H_HTML); return 1; } sub l2h_FromHtml { local($text) = @_; local($done, $to_do, $count); $to_do = $text; while ($to_do =~ /([^\000]*)([^\000]*)/) { $to_do = $1; $count = $2; $done = $3.$done; $done = "".$done if ($T2H_DEBUG & $DEBUG_L2H); $done = &l2h_ExtractFromHtml($count) . $done; $done = "".$done if ($T2H_DEBUG & $DEBUG_L2H); } return $to_do.$done; } sub l2h_ExtractFromHtml { local($count) = @_; return $l2h_from_html[$count] if ($l2h_from_html[$count]); if ($count >= 0 && $count < $l2h_latex_count) { # now we are in trouble local($l_l2h, $_); $l2h_extract_error++; print "$ERROR l2h: can't extract content $count from html\n" if ($T2H_VERBOSE); # try simple (ordinary) substition (without l2h) $l_l2h = $T2H_L2H; $T2H_L2H = 0; $_ = $l2h_to_latex{$count}; $_ = &substitute_style($_); &unprotect_texi; $_ = "" . $_ if ($T2H_DEBUG & $DEBUG_L2H); $T2H_L2H = $l_l2h; return $_; } else { # now we have been incorrectly called $l2h_range_error++; print "$ERROR l2h: Request of $count content which is out of valide range [0,$l2h_latex_count)\n"; return "" if ($T2H_DEBUG & $DEBUG_L2H); return ""; } } sub l2h_FinishFromHtml { if ($T2H_VERBOSE) { if ($l2h_extract_error + $l2h_range_error) { print "# l2h: finished from html ($l2h_extract_error extract and $l2h_range_error errors)\n"; } else { print "# l2h: finished from html (no errors)\n"; } } } sub l2h_Finish { l2h_StoreCache(); if ($T2H_L2H_CLEAN) { print "# l2h: removing temporary files generated by l2h extension\n" if $T2H_VERBOSE; while (<"$docu_rdir$l2h_name"*>) { unlink $_; } } print "# l2h: Finished\n" if $T2H_VERBOSE; return 1; } ############################## # stuff for l2h caching # # I tried doing this with a dbm data base, but it did not store all # keys/values. Hence, I did as latex2html does it sub l2h_InitCache { if (-r "$l2h_cache_file") { my $rdo = do "$l2h_cache_file"; warn("$ERROR l2h Error: could not load $docu_rdir$l2h_cache_file: $@\n") unless ($rdo); } } sub l2h_StoreCache { return unless $l2h_latex_count; my ($key, $value); open(FH, ">$l2h_cache_file") || return warn"$ERROR l2h Error: could not open $docu_rdir$l2h_cache_file for writing: $!\n"; while (($key, $value) = each %l2h_cache) { # escape stuff $key =~ s|/|\\/|g; $key =~ s|\\\\/|\\/|g; # weird, a \ at the end of the key results in an error # maybe this also broke the dbm database stuff $key =~ s|\\$|\\\\|; $value =~ s/\|/\\\|/g; $value =~ s/\\\\\|/\\\|/g; $value =~ s|\\\\|\\\\\\\\|g; print FH "\n\$l2h_cache_key = q/$key/;\n"; print FH "\$l2h_cache{\$l2h_cache_key} = q|$value|;\n"; } print FH "1;"; close(FH); } # return cached html, if it exists for text, and if all pictures # are there, as well sub l2h_FromCache { my $text = shift; my $cached = $l2h_cache{$text}; if ($cached) { while ($cached =~ m/SRC="(.*?)"/g) { unless (-e "$docu_rdir$1") { return undef; } } return $cached; } return undef; } # insert generated html into cache, move away images, # return transformed html $maximage = 1; sub l2h_ToCache { my $count = shift; my $content = shift; my @images = ($content =~ /SRC="(.*?)"/g); my ($src, $dest); for $src (@images) { $dest = $l2h_img{$src}; unless ($dest) { my $ext; if ($src =~ /.*\.(.*)$/ && $1 ne $docu_ext) { $ext = $1; } else { warn "$ERROR: L2h image $src has invalid extension\n"; next; } while (-e "$docu_rdir${docu_name}_$maximage.$ext") { $maximage++;} $dest = "${docu_name}_$maximage.$ext"; system("cp -f $docu_rdir$src $docu_rdir$dest"); $l2h_img{$src} = $dest; unlink "$docu_rdir$src" unless ($DEBUG & DEBUG_L2H); } $content =~ s/$src/$dest/g; } $l2h_cache{$l2h_to_latex[$count]} = $content; return $content; } #+++############################################################################ # # # Pass 1: read source, handle command, variable, simple substitution # # # #---############################################################################ @lines = (); # whole document @toc_lines = (); # table of contents @stoc_lines = (); # table of contents $curlevel = 0; # current level in TOC $node = ''; # current node name $node_next = ''; # current node next name $node_prev = ''; # current node prev name $node_up = ''; # current node up name $in_table = 0; # am I inside a table $table_type = ''; # type of table ('', 'f', 'v', 'multi') @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 $has_top = 0; # did I see a top node? $has_top_command = 0; # did I see @top for automatic pointers? $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 $deferred_ref = ''; # deferred reference for indexes @html_stack = (); # HTML elements stack $html_element = ''; # current HTML element &html_reset; %macros = (); # macros # init l2h $T2H_L2H = &l2h_Init($docu_name) if ($T2H_L2H); $T2H_L2H = &l2h_InitToLatex if ($T2H_L2H); # 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 .= "([a-z])/&\${1}$accent_map{$_};/gi;\n"; } } eval("sub simple_substitutions { $subst_code }"); &init_input; INPUT_LINE: while ($_ = &next_line) { # # remove \input on the first lines only # if ($first_line) { next if /^\\input/; $first_line = 0; } # non-@ substitutions cf. texinfmt.el # # parse texinfo tags # $tag = ''; $end_tag = ''; if (/^\s*\@end\s+(\w+)\b/) { $end_tag = $1; } elsif (/^\s*\@(\w+)\b/) { $tag = $1; } # # handle @html / @end html # if ($in_html) { if ($end_tag eq 'html') { $in_html = 0; } else { $tag2pro{$in_html} .= $_; } next; } elsif ($tag eq 'html') { $in_html = $PROTECTTAG . ++$html_num; push(@lines, $in_html); next; } # # try to remove inlined comments # syntax from tex-mode.el comment-start-skip # s/((^|[^\@])(\@\@)*)\@c(omment | |\{|$).*/$1/; # Sometimes I use @c right at the end of a line ( to suppress the line feed ) # s/((^|[^\@])(\@\@)*)\@c(omment)?$/$1/; # s/((^|[^\@])(\@\@)*)\@c(omment)? .*/$1/; # s/(.*)\@c{.*?}(.*)/$1$2/; # s/(.*)\@comment{.*?}(.*)/$1$2/; # s/^(.*)\@c /$1/; # s/^(.*)\@comment /$1/; ############################################################# # value substitution before macro expansion, so that # it works in macro arguments s/\@value{($VARRE)}/$value{$1}/eg; ############################################################# # macro substitution while (/\@(\w+)/g) { if (exists($macros->{$1})) { my $before = $`; my $name = $1; my $after = $'; my @args; my $args; if ($after =~ /^\s*{(.*?[^\\])}(.*)/) { $args = $1; $after = $2; } elsif (@{$macros->{$name}->{Args}} == 1) { $args = $after; $args =~ s/^\s*//; $args =~ s/\s*$//; $after = ''; } $args =~ s|\\\\|\\|g; $args =~ s|\\{|{|g; $args =~ s|\\}|}|g; if (@{$macros->{$name}->{Args}} > 1) { $args =~ s/(^|[^\\]),/$1$;/g ; $args =~ s|\\,|,|g; @args = split(/$;\s*/, $args) if (@{$macros->{$name}->{Args}} > 1); } else { $args =~ s|\\,|,|g; @args = ($args); } my $macrobody = $macros->{$name}->{Body}; for ($i=0; $i<=$#args; $i++) { $macrobody =~ s|\\$macros->{$name}->{Args}->[$i]\\|$args[$i]|g; } $macrobody =~ s|\\\\|\\|g; $_ = $before . $macrobody . $after; unshift @input_spool, map {$_ = $_."\n"} split(/\n/, $_); next INPUT_LINE; } } # # # try to skip the line # if ($end_tag) { $in_titlepage = 0 if $end_tag eq 'titlepage'; next if $to_skip{"end $end_tag"}; } elsif ($tag) { $in_titlepage = 1 if $tag eq 'titlepage'; next if $to_skip{$tag}; last if $tag eq 'bye'; } if ($in_top) { # parsing the top node if ($tag eq 'node' || ($sec2level{$tag} && $tag !~ /unnumbered/ && $tag !~ /heading/)) { # no more in top $in_top = 0; push(@lines, $TOPEND); } } unless ($in_pre) { 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'; &skip_until($tag), next if $tag eq 'ifnothtml'; if ($tag eq 'ifinfo') { &skip_until($tag), next unless $T2H_EXPAND eq 'info'; } if ($tag eq 'iftex') { &skip_until($tag), next unless $T2H_EXPAND eq 'tex'; } if ($tag eq 'tex') { # add to latex2html file if ($T2H_EXPAND eq 'tex' && $T2H_L2H && ! $in_pre) { # add space to the end -- tex(i2dvi) does this, as well push(@lines, &l2h_ToLatex(&string_until($tag) . " ")); } else { &skip_until($tag); } next; } if ($tag eq 'titlepage') { next; } # handle special tables if ($tag =~ /^(|f|v|multi)table$/) { $table_type = $1; $tag = 'table'; } # special cases if ($tag eq 'top' || ($tag eq 'node' && /^\@node\s+top\s*,/i)) { $in_top = 1; $has_top = 1; $has_top_command = 1 if $tag eq 'top'; @lines = (); # ignore all lines before top (title page garbage) next; } elsif ($tag eq 'node') { if ($in_top) { $in_top = 0; push(@lines, $TOPEND); } warn "$ERROR Bad node line: $_" unless $_ =~ /^\@node\s$NODESRE$/o; # request of "Richard Y. Kim" s/^\@node\s+//; $_ = &protect_html($_); # if node contains '&' for instance ($node, $node_next, $node_prev, $node_up) = split(/,/); &normalise_node($node); &normalise_node($node_next); &normalise_node($node_prev); &normalise_node($node_up); $node =~ /\"/ ? push @lines, &html_debug("\n", __LINE__) : push @lines, &html_debug("\n", __LINE__); next; } elsif ($tag eq 'include') { if (/^\@include\s+($FILERE)\s*$/o) { $file = LocateIncludeFile($1); if ($file && -e $file) { &open($file); print "# including $file\n" if $T2H_VERBOSE; } else { warn "$ERROR Can't find $1, 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 ($T2H_SHOW_MENU) { &skip_until($tag); next; } &html_push_if($tag); push(@lines, &html_debug('', __LINE__)); } elsif ($format_map{$tag}) { $in_pre = 1 if $format_map{$tag} eq 'PRE'; &html_push_if($format_map{$tag}); push(@lines, &html_debug('', __LINE__)); $in_list++ if $format_map{$tag} eq 'UL' || $format_map{$tag} eq 'OL' ; # push(@lines, &debug("

\n", __LINE__)) # if $tag =~ /example/i; # sunshine@sunshineco.com:
bla
looks better than #
\nbla
(at least on NeXTstep browser push(@lines, &debug("<$format_map{$tag}>" . ($in_pre ? '' : "\n"), __LINE__)); next; } elsif (exists $complex_format_map->{$tag}) { my $start = eval $complex_format_map->{$tag}->[0]; if ($@) { print "$ERROR: eval of complex_format_map->{$tag}->[0] $complex_format_map->{$tag}->[0]: $@"; $start = '
'
	  }
	  $in_pre = 1 if $start =~ /
\n", __LINE__));
		    &html_push_if('TABLE');
		} else {
		    push(@lines, &debug("
\n", __LINE__)); &html_push_if('DL'); } push(@lines, &html_debug('', __LINE__)); } else { warn "$ERROR Bad table line: $_"; } next; } elsif ($tag eq 'synindex' || $tag eq 'syncodeindex') { if (/^\@$tag\s+(\w+)\s+(\w+)\s*$/) { my $from = $1; my $to = $2; my $prefix_from = IndexName2Prefix($from); my $prefix_to = IndexName2Prefix($to); warn("$ERROR unknown from index name $from ind syn*index line: $_"), next unless $prefix_from; warn("$ERROR unknown to index name $to ind syn*index line: $_"), next unless $prefix_to; if ($tag eq 'syncodeindex') { $index_properties->{$prefix_to}->{'from_code'}->{$prefix_from} = 1; } else { $index_properties->{$prefix_to}->{'from'}->{$prefix_from} = 1; } } else { warn "$ERROR Bad syn*index line: $_"; } next; } elsif ($tag eq 'defindex' || $tag eq 'defcodeindex') { if (/^\@$tag\s+(\w+)\s*$/) { my $name = $1; $index_properties->{$name}->{name} = $name; $index_properties->{$name}->{code} = 1 if $tag eq 'defcodeindex'; } else { warn "$ERROR Bad defindex line: $_"; } next; } elsif (/^\@printindex/) { push (@lines, "$_"); next; } elsif ($tag eq 'sp') { push(@lines, &debug("

\n", __LINE__)); next; } elsif ($tag eq 'center') { push(@lines, &debug("

\n", __LINE__)); s/\@center//; } 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; $sec2node{$name} = $setref; $node2href{$setref} = "$docu_doc#$docid"; } else { warn "$ERROR Bad setref line: $_"; } next; } elsif ($tag eq 'lowersections') { local ($sec, $level); while (($sec, $level) = each %sec2level) { $sec2level{$sec} = $level + 1; } next; } elsif ($tag eq 'raisesections') { local ($sec, $level); while (($sec, $level) = each %sec2level) { $sec2level{$sec} = $level - 1; } next; } elsif ($tag eq 'macro' || $tag eq 'rmacro') { if (/^\@$tag\s*(\w+)\s*(.*)/) { my $name = $1; my @args; @args = split(/\s*,\s*/ , $1) if ($2 =~ /^\s*{(.*)}\s*/); $macros->{$name}->{Args} = \@args; $macros->{$name}->{Body} = ''; while (($_ = &next_line) && $_ !~ /\@end $tag/) { $macros->{$name}->{Body} .= $_; } die "ERROR: No closing '\@end $tag' found for macro definition of '$name'\n" unless (/\@end $tag/); chomp $macros->{$name}->{Body}; } else { warn "$ERROR: Bad macro defintion $_" } next; } elsif ($tag eq 'unmacro') { delete $macros->{$1} if (/^\@unmacro\s*(\w+)/); next; } elsif ($tag eq 'documentlanguage') { SetDocumentLanguage($1) if (!$T2H_LANG && /documentlanguage\s*(\w+)/); } 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 $T2H_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 $T2H_DEBUG & $DEBUG_DEF; $type .= ':'; # it's nicer like this my $name = shift(@args); $name =~ s/^\{(.*)\}$/$1/; if ($is_extra) { $_ = &debug("
", __LINE__); } else { $_ = &debug("
\n
", __LINE__); } if ($tag eq 'deffn' || $tag eq 'defvr' || $tag eq 'deftp') { $_ .= "$type $name"; $_ .= " @args" if @args; } elsif ($tag eq 'deftypefn' || $tag eq 'deftypevr' || $tag eq 'defcv' || $tag eq 'defop') { $ftype = $name; $name = shift(@args); $name =~ s/^\{(.*)\}$/$1/; $_ .= "$type $ftype $name"; $_ .= " @args" if @args; } else { warn "$ERROR Unknown definition type: $tag\n"; $_ .= "$type $name"; $_ .= " @args" if @args; } $_ .= &debug("\n
", __LINE__); $name = &unprotect_html($name); if ($tag eq 'deffn' || $tag eq 'deftypefn') { EnterIndexEntry('f', $name, $docu_doc, $section, \@lines); # unshift(@input_spool, "\@findex $name\n"); } elsif ($tag eq 'defop') { EnterIndexEntry('f', "$name on $ftype", $docu_doc, $section, \@lines); # unshift(@input_spool, "\@findex $name on $ftype\n"); } elsif ($tag eq 'defvr' || $tag eq 'deftypevr' || $tag eq 'defcv') { EnterIndexEntry('v', $name, $docu_doc, $section, \@lines); # unshift(@input_spool, "\@vindex $name\n"); } else { EnterIndexEntry('t', $name, $docu_doc, $section, \@lines); # 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('P'); &html_pop_if('LI'); &html_pop_if(); push(@lines, &debug("\n", __LINE__)); push(@lines, &html_debug('', __LINE__)); } elsif (exists $complex_format_map->{$end_tag}) { my $end = eval $complex_format_map->{$end_tag}->[1]; if ($@) { print "$ERROR: eval of complex_format_map->{$end_tag}->[1] $complex_format_map->{$end_tag}->[0]: $@"; $end = '
' } $in_pre = 0 if $end =~ m|
|; push(@lines, html_debug($end, __LINE__)); } elsif ($end_tag =~ /^(|f|v|multi)table$/) { unless (@tables) { warn "$ERROR \@end $end_tag without \@*table\n"; next; } &html_pop_if('P'); ($table_type, $in_table) = split($;, shift(@tables)); unless ($1 eq $table_type) { warn "$ERROR \@end $end_tag without matching \@$end_tag\n"; next; } if ($table_type eq "multi") { push(@lines, "
\n"); &html_pop_if('TR'); } else { push(@lines, "\n"); &html_pop_if('DD'); } &html_pop_if(); if (@tables) { ($table_type, $in_table) = split($;, $tables[0]); } else { $in_table = 0; } } elsif (defined($def_map{$end_tag})) { push(@lines, &debug("\n", __LINE__)); } elsif ($end_tag eq 'menu') { &html_pop_if(); push(@lines, $_); # must keep it for pass 2 } next; } ############################################################# # anchor insertion while (/\@anchor\s*\{(.*?)\}/) { $_ = $`.$'; my $anchor = $1; $anchor = &normalise_node($anchor); push @lines, &html_debug("\n"); $node2href{$anchor} = "$docu_doc#$anchor"; next INPUT_LINE if $_ =~ /^\s*$/; } ############################################################# # index entry generation, after value substitutions if (/^\@(\w+?)index\s+/) { EnterIndexEntry($1, $', $docu_doc, $section, \@lines); next; } # # protect texi and HTML things &protect_texi; $_ = &protect_html($_) unless $dont_html; $dont_html = 0; # substitution (unsupported things) s/^\@exdent\s+//g; s/\@noindent\s+//g; s/\@refill\s+//g; # other substitutions &simple_substitutions; 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 = &normalise_node($name); $level = $sec2level{$tag}; # check for index $first_index_chapter = $node if ($level == 1 && !$first_index_chapter && $name =~ /index/i); if ($in_top && /heading/){ $T2H_HAS_TOP_HEADING = 1; $_ = &debug("$name\n", __LINE__); &html_push_if('body'); print "# top heading, section $name, level $level\n" if $T2H_DEBUG & $DEBUG_TOC; } else { unless (/^\@\w*heading/) { unless (/^\@unnumbered/) { my $number = &update_sec_num($tag, $level); $name = $number. ' ' . $name if $T2H_NUMBER_SECTIONS; $sec2number{$name} = $number; $number2sec{$number} = $name; } if (defined($toplevel)) { push @lines, ($level==$toplevel ? $CHAPTEREND : $SECTIONEND); } else { # first time we see a "section" unless ($level == 1) { warn "$WARN The first section found is not of level 1: $_"; } $toplevel = $level; } push(@sections, $name); next_doc() if ($T2H_SPLIT eq 'section' || $T2H_SPLIT && $level == $toplevel); } $sec_num++; $docid = "SEC$sec_num"; $tocid = (/^\@\w*heading/ ? undef : "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) { warn "$ERROR Duplicate node found: $node\n" if ($node2sec{$node}); } else { $name .= ' ' while ($node2sec{$name}); $node = $name; } $name .= ' ' while ($sec2node{$name}); $section = $name; $node2sec{$node} = $name; $sec2node{$name} = $node; $node2href{$node} = "$docu_doc#$docid"; $node2next{$node} = $node_next; $node2prev{$node} = $node_prev; $node2up{$node} = $node_up; print "# node $node, section $name, level $level\n" if $T2H_DEBUG & $DEBUG_TOC; $node = ''; $node_next = ''; $node_prev = ''; $node_next = ''; if ($tocid) { # update TOC while ($level > $curlevel) { $curlevel++; push(@toc_lines, "
    \n"); } while ($level < $curlevel) { $curlevel--; push(@toc_lines, "
\n"); } $_ = &t2h_anchor($tocid, "$docu_doc#$docid", $name, 1); $_ = &substitute_style($_); push(@stoc_lines, "$_
\n") if ($level == 1); if ($T2H_NUMBER_SECTIONS) { push(@toc_lines, $_ . "
\n") } else { push(@toc_lines, "
  • " . $_ ."
  • "); } } else { push(@lines, &html_debug("\n", __LINE__)); } # update DOC push(@lines, &html_debug('', __LINE__)); &html_reset; $_ = " $name \n\n"; $_ = &debug($_, __LINE__); push(@lines, &html_debug('', __LINE__)); } # update DOC foreach $line (split(/\n+/, $_)) { push(@lines, "$line\n"); } next; } else { warn "$ERROR Bad section line: $_"; } } else { # track variables $value{$1} = Unprotect_texi($2), next if /^\@set\s+($VARRE)\s+(.*)$/o; delete $value{$1}, next if /^\@clear\s+($VARRE)\s*$/o; # store things $value{'_shorttitle'} = Unprotect_texi($1), next if /^\@shorttitle\s+(.*)$/; $value{'_setfilename'} = Unprotect_texi($1), next if /^\@setfilename\s+(.*)$/; $value{'_settitle'} = Unprotect_texi($1), next if /^\@settitle\s+(.*)$/; $value{'_author'} .= Unprotect_texi($1)."\n", next if /^\@author\s+(.*)$/; $value{'_subtitle'} .= Unprotect_texi($1)."\n", next if /^\@subtitle\s+(.*)$/; $value{'_title'} .= Unprotect_texi($1)."\n", next if /^\@title\s+(.*)$/; # list item if (/^\s*\@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 $T2H_DEBUG & $DEBUG_BIB; $what = &t2h_anchor($id, '', $what); } } elsif ($in_glossary && $T2H_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 $T2H_DEBUG & $DEBUG_GLOSS; $what = &t2h_anchor($id, '', $what); } elsif ($in_table && ($table_type eq 'f' || $table_type eq 'v')) { EnterIndexEntry($table_type, $what, $docu_doc, $section, \@lines); } &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("
    $things_map{$in_table}\n", __LINE__)); } else { push(@lines, &debug("
    \@$in_table\{$what\}\n", __LINE__)); } push(@lines, "
    "); &html_push('DD') unless $html_element eq 'DD'; if ($table_type) { # add also an index unshift(@input_spool, "\@${table_type}index $what\n"); } } elsif ($html_element eq 'TABLE') { push(@lines, &debug("$what\n", __LINE__)); &html_push('TR'); } elsif ($html_element eq 'TR') { push(@lines, &debug("\n", __LINE__)); push(@lines, &debug("$what\n", __LINE__)); } else { push(@lines, &debug("
  • $what\n", __LINE__)); &html_push('LI') unless $html_element eq 'LI'; } push(@lines, &html_debug('', __LINE__)); if ($deferred_ref) { push(@lines, &debug("$deferred_ref\n", __LINE__)); $deferred_ref = ''; } next; } elsif (/^\@tab\s+(.*)$/) { push(@lines, "$1\n"); next; } } } # paragraph separator if ($_ eq "\n" && ! $in_pre) { next if $#lines >= 0 && $lines[$#lines] eq "\n"; if ($html_element eq 'P') { push (@lines, &debug("

    \n", __LINE__)); } # else # { # push(@lines, "

    \n"); # $_ = &debug("

    \n", __LINE__); # } elsif ($html_element eq 'body' || $html_element eq 'BLOCKQUOTE' || $html_element eq 'DD' || $html_element eq 'LI') { &html_push('P'); push(@lines, &debug("

    \n", __LINE__)); } } # otherwise push(@lines, $_) unless $in_titlepage; push(@lines, &debug("

  • \n", __LINE__)) if ($tag eq 'center'); } # finish TOC $level = 0; while ($level < $curlevel) { $curlevel--; push(@toc_lines, "\n"); } print "# end of pass 1\n" if $T2H_VERBOSE; SetDocumentLanguage('en') unless ($T2H_LANG); #+++############################################################################ # # # Stuff related to Index generation # # # #---############################################################################ sub EnterIndexEntry { my $prefix = shift; my $key = shift; my $docu_doc = shift; my $section = shift; my $lines = shift; local $_; warn "$ERROR Undefined index command: $_", next unless (exists ($index_properties->{$prefix})); $key =~ s/\s+$//; $_ = $key; &protect_texi; $key = $_; $_ = &protect_html($_); my $html_key = substitute_style($_); my $id; $key = remove_style($key); $key = remove_things($key); $_ = $key; &unprotect_texi; $key = $_; while (exists $index->{$prefix}->{$key}) {$key .= ' '}; if ($lines->[$#lines] =~ /^$/) { $id = $1; } else { $id = 'IDX' . ++$idx_num; push(@$lines, &t2h_anchor($id, '', $T2H_INVISIBLE_MARK, !$in_pre)); } $index->{$prefix}->{$key}->{html_key} = $html_key; $index->{$prefix}->{$key}->{section} = $section; $index->{$prefix}->{$key}->{href} = "$docu_doc#$id"; print "# found ${prefix}index for '$key' with id $id\n" if $T2H_DEBUG & $DEBUG_INDEX; } sub IndexName2Prefix { my $name = shift; my $prefix; for $prefix (keys %$index_properties) { return $prefix if ($index_properties->{$prefix}->{name} eq $name); } return undef; } sub GetIndexEntries { my $normal = shift; my $code = shift; my ($entries, $prefix, $key) = ({}); for $prefix (keys %$normal) { for $key (keys %{$index->{$prefix}}) { $entries->{$key} = {%{$index->{$prefix}->{$key}}}; } } if (defined($code)) { for $prefix (keys %$code) { unless (exists $normal->{$keys}) { for $key (keys %{$index->{$prefix}}) { $entries->{$key} = {%{$index->{$prefix}->{$key}}}; $entries->{$key}->{html_key} = "$entries->{$key}->{html_key}"; } } } } return $entries; } sub byAlpha { if ($a =~ /^[A-Za-z]/) { if ($b =~ /^[A-Za-z]/) { return lc($a) cmp lc($b); } else { return 1; } } elsif ($b =~ /^[A-Za-z]/) { return -1; } else { return lc($a) cmp lc($b); } } sub GetIndexPages { my $entries = shift; my (@Letters, $key); my ($EntriesByLetter, $Pages, $page) = ({}, [], {}); my @keys = sort byAlpha keys %$entries; for $key (@keys) { push @{$EntriesByLetter->{uc(substr($key,0, 1))}} , $entries->{$key}; } @Letters = sort byAlpha keys %$EntriesByLetter; $T2H_SPLIT_INDEX = 0 unless ($T2H_SPLIT); unless ($T2H_SPLIT_INDEX) { $page->{First} = $Letters[0]; $page->{Last} = $Letters[$#Letters]; $page->{Letters} = \@Letters; $page->{EntriesByLetter} = $EntriesByLetter; push @$Pages, $page; return $Pages; } if ($T2H_SPLIT_INDEX =~ /^\d+$/) { my $i = 0; my ($prev_letter, $letter); $page->{First} = $Letters[0]; for $letter (@Letters) { if ($i > $T2H_SPLIT_INDEX) { $page->{Last} = $prev_letter; push @$Pages, {%$page}; $page->{Letters} = []; $page->{EntriesByLetter} = {}; $page->{First} = $letter; $i=0; } push @{$page->{Letters}}, $letter; $page->{EntriesByLetter}->{$letter} = [@{$EntriesByLetter->{$letter}}]; $i += scalar(@{$EntriesByLetter->{$letter}}); $prev_letter = $letter; } $page->{Last} = $Letters[$#Letters]; push @$Pages, {%$page}; } return $Pages; } sub GetIndexSummary { my $first_page = shift; my $Pages = shift; my $name = shift; my ($page, $letter, $summary, $i, $l1, $l2, $l); $i = 0; $summary = '
    Jump to:   '; for $page ($first_page, @$Pages) { for $letter (@{$page->{Letters}}) { $l = t2h_anchor('', "$page->{href}#${name}_$letter", "$letter", 0, 'style="text-decoration:none"') . "\n   \n"; if ($letter =~ /^[A-Za-z]/) { $l2 .= $l; } else { $l1 .= $l; } } } $summary .= $l1 . "
    \n" if ($l1); $summary .= $l2 . '

    '; return $summary; } sub PrintIndexPage { my $lines = shift; my $summary = shift; my $page = shift; my $name = shift; push @$lines, $summary; push @$lines , <

    EOT for $letter (@{$page->{Letters}}) { push @$lines, "\n"; for $entry (@{$page->{EntriesByLetter}->{$letter}}) { push @$lines, "\n"; } push @$lines, "\n"; } push @$lines, "
    Index Entry Section

    $letter
    " . t2h_anchor('', $entry->{href}, $entry->{html_key}) . "" . t2h_anchor('', sec_href($entry->{section}), clean_name($entry->{section})) . "

    "; push @$lines, $summary; } sub PrintIndex { my $lines = shift; my $name = shift; my $section = shift; $section = 'Top' unless $section; my $prefix = IndexName2Prefix($name); warn ("$ERROR printindex: bad index name: $name"), return unless $prefix; if ($index_properties->{$prefix}->{code}) { $index_properties->{$prefix}->{from_code}->{$prefix} = 1; } else { $index_properties->{$prefix}->{from}->{$prefix}= 1; } my $Entries = GetIndexEntries($index_properties->{$prefix}->{from}, $index_properties->{$prefix}->{from_code}); return unless %$Entries; if ($T2H_IDX_SUMMARY) { my $key; open(FHIDX, ">$docu_rdir$docu_name" . "_$name.idx") || die "Can't open > $docu_rdir$docu_name" . "_$name.idx for writing: $!\n"; print "# writing $name index summary in $docu_rdir$docu_name" . "_$name.idx...\n" if $T2H_VERBOSE; for $key (sort keys %$Entries) { print FHIDX "$key\t$Entries->{$key}->{href}\n"; } } my $Pages = GetIndexPages($Entries); my $page; my $first_page = shift @$Pages; my $sec_name = $section; # remove section number $sec_name =~ s/.*? // if $sec_name =~ /^([A-Z]|\d+)\./; ($first_page->{href} = sec_href($section)) =~ s/\#.*$//; # Update tree structure of document if (@$Pages) { my $sec; my @after; while (@sections && $sections[$#sections] ne $section) { unshift @after, pop @sections; } for $page (@$Pages) { my $node = ($page->{First} ne $page->{Last} ? "$sec_name: $page->{First} -- $page->{Last}" : "$sec_name: $page->{First}"); push @sections, $node; $node2sec{$node} = $node; $sec2node{$node} = $node; $node2up{$node} = $section; $page->{href} = next_doc(); $page->{name} = $node; $node2href{$node} = $page->{href}; if ($prev_node) { $node2next{$prev_node} = $node; $node2prev{$node} = $prev_node; } $prev_node = $node; } push @sections, @after; } my $summary = GetIndexSummary($first_page, $Pages, $name); PrintIndexPage($lines, $summary, $first_page, $name); for $page (@$Pages) { push @$lines, ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND); push @$lines, "

    $page->{name}

    \n"; PrintIndexPage($lines, $summary, $page, $name); } } #+++############################################################################ # # # 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 # if (/^\@menu\b/) { $in_menu = 1; $in_menu_listing = 1; push(@lines2, &debug("
    \n", __LINE__)); next; } if (/^\@end\s+menu\b/) { if ($in_menu_listing) { push(@lines2, &debug("
    \n", __LINE__)); } else { push(@lines2, &debug("\n", __LINE__)); } $in_menu = 0; $in_menu_listing = 0; next; } if ($in_menu) { my ($node, $name, $descr); if (/^\*\s+($NODERE)::/o) { $node = $1; $descr = $'; } elsif (/^\*\s+(.+):\s+([^\t,\.\n]+)[\t,\.\n]/) { $name = $1; $node = $2; $descr = $'; } elsif (/^\*/) { warn "$ERROR Bad menu line: $_"; } else { if ($in_menu_listing) { $in_menu_listing = 0; push(@lines2, &debug("\n", __LINE__)); } # should be like verbatim -- preseve spaces, etc s/ /\ /g; $_ .= "
    \n"; push(@lines2, $_); } if ($node) { if (! $in_menu_listing) { $in_menu_listing = 1; push(@lines2, &debug("\n", __LINE__)); } # look for continuation while ($lines[0] =~ /^\s+\w+/) { $descr .= shift(@lines); } &menu_entry($node, $name, $descr); } next; } # # printindex # PrintIndex(\@lines2, $2, $1), next if (/^\@printindex\s+(\w+)/); # # simple style substitutions # $_ = &substitute_style($_); # # xref # while (/\@(x|px|info|)ref{([^{}]+)(}?)/) { # 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 = "$T2H_WORDS->{$T2H_LANG}->{'See'} "; } elsif ($type eq 'px') { $type = "$T2H_WORDS->{$T2H_LANG}->{'see'} "; } elsif ($type eq 'info') { $type = "$T2H_WORDS->{$T2H_LANG}->{'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 $node = &normalise_node($node); $sec = $args[2] || $args[1] || $node2sec{$node}; $href = $node2href{$node}; if (@args == 5) { # reference to another manual $sec = $args[2] || $node; $man = $args[4] || $args[3]; $_ = "${before}${type}$T2H_WORDS->{$T2H_LANG}->{'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 && ! $T2H_SHORT_REF) { $_ = "${before}${type}"; $_ .= "$T2H_WORDS->{$T2H_LANG}->{'section'} " if ${type}; $_ .= &t2h_anchor('', $href, $sec) . $after; } elsif ($href) { $_ = "${before}${type} " . &t2h_anchor('', $href, $args[2] || $args[1] || $node) . $after; } else { warn "$ERROR Undefined node ($node): $_"; $_ = "$before$;0xref{$nodes}$after"; } } # replace images s[\@image\s*{(.+?)}] { my @args = split (/\s*,\s*/, $1); my $base = $args[0]; my $image = LocateIncludeFile("$base.png") || LocateIncludeFile("$base.jpg") || LocateIncludeFile("$base.gif"); warn "$ERROR no image file for $base: $_" unless ($image && -e $image); "\"$base\""; ($T2H_CENTER_IMAGE ? "
    \"$base\"
    " : "\"$base\""); }eg; # # try to guess bibliography references or glossary terms # unless (/^/) { $done .= $pre . &t2h_anchor('', $href, $what); } else { $done .= "$pre$what"; } $_ = $post; } $_ = $done . $_; } if ($T2H_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 . &t2h_anchor('', $href, $what); } else { $done .= "$pre$what"; } $_ = $post; } $_ = $done . $_; } } # otherwise push(@lines2, $_); } print "# end of pass 2\n" if $T2H_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 $T2H_VERBOSE; #+++############################################################################ # # # Pass 4: foot notes, final cleanup # # # #---############################################################################ @foot_lines = (); # footnotes @doc_lines = (); # final document $end_of_para = 0; # true if last line is

    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, "

    " . &t2h_anchor($footid, "$d#$docid", $foot) . "

    \n"); $text = "

    $text" unless $text =~ /^\s*

    /; push(@foot_lines, "$text\n"); $_ = $before . &t2h_anchor($docid, "$docu_foot#$footid", $foot) . $after; } } # # remove unnecessary

    # if (/^\s*

    \s*$/) { next if $end_of_para++; } else { $end_of_para = 0; } # otherwise push(@doc_lines, $_); } print "# end of pass 4\n" if $T2H_VERBOSE; #+++############################################################################ # # # Pass 5: print things # # # #---############################################################################ $T2H_L2H = &l2h_FinishToLatex if ($T2H_L2H); $T2H_L2H = &l2h_ToHtml if ($T2H_L2H); $T2H_L2H = &l2h_InitFromHtml if ($T2H_L2H); # fix node2up, node2prev, node2next, if desired if ($has_top_command) { for $section (keys %sec2number) { $node = $sec2node{$section}; $node2up{$node} = Sec2UpNode($section) unless $node2up{$node}; $node2prev{$node} = Sec2PrevNode($section) unless $node2prev{$node}; $node2next{$node} = Sec2NextNode($section) unless $node2next{$node}; } } # prepare %T2H_THISDOC $T2H_THISDOC{fulltitle} = $value{'_title'} || $value{'_settitle'} || "Untitled Document"; $T2H_THISDOC{title} = $value{'_settitle'} || $T2H_THISDOC{fulltitle}; $T2H_THISDOC{author} = $value{'_author'}; $T2H_THISDOC{subtitle} = $value{'_subtitle'}; $T2H_THISDOC{shorttitle} = $value{'_shorttitle'}; for $key (keys %T2H_THISDOC) { $_ = &substitute_style($T2H_THISDOC{$key}); &unprotect_texi; s/\s*$//; $T2H_THISDOC{$key} = $_; } # if no sections, then simply print document as is unless (@sections) { print "# Writing content into $docu_top_file \n" if $T2H_VERBOSE; open(FILE, "> $docu_top_file") || die "$ERROR: Can't open $docu_top_file for writing: $!\n"; &$T2H_print_page_head(\*FILE); $T2H_THIS_SECTION = \@doc_lines; t2h_print_lines(\*FILE); &$T2H_print_foot_navigation(\*FILE); &$T2H_print_page_foot(\*FILE); close(FILE); goto Finish; } # initialize $T2H_HREF, $T2H_NAME %T2H_HREF = ( 'First' , sec_href($sections[0]), 'Last', sec_href($sections[$#sections]), 'About', $docu_about. '#SEC_About', ); # prepare TOC, OVERVIEW, TOP $T2H_TOC = \@toc_lines; $T2H_OVERVIEW = \@stoc_lines; if ($has_top) { while (1) { $_ = shift @doc_lines; last if /$TOPEND/; push @$T2H_TOP, $_; } $T2H_HREF{'Top'} = $docu_top . '#SEC_Top'; } else { $T2H_HREF{'Top'} = $T2H_HREF{First}; } $node2href{Top} = $T2H_HREF{Top}; $T2H_HREF{Contents} = $docu_toc.'#SEC_Contents' if @toc_lines; $T2H_HREF{Overview} = $docu_stoc.'#SEC_OVERVIEW' if @stoc_lines; # settle on index if ($T2H_INDEX_CHAPTER) { $T2H_HREF{Index} = $node2href{normalise_node($T2H_INDEX_CHAPTER)}; warn "$ERROR T2H_INDEX_CHAPTER '$T2H_INDEX_CHAPTER' not found\n" unless $T2H_HREF{Index}; } if (! $T2H_HREF{Index} && $first_index_chapter) { $T2H_INDEX_CHAPTER = $first_index_chapter; $T2H_HREF{Index} = $node2href{$T2H_INDEX_CHAPTER}; } print "# Using '" . clean_name($T2H_INDEX_CHAPTER) . "' as index page\n" if ($T2H_VERBOSE && $T2H_HREF{Index}); %T2H_NAME = ( 'First', clean_name($sec2node{$sections[0]}), 'Last', clean_name($sec2node{$sections[$#sections]}), 'About', $T2H_WORDS->{$T2H_LANG}->{'About_Title'}, 'Contents', $T2H_WORDS->{$T2H_LANG}->{'ToC_Title'}, 'Overview', $T2H_WORDS->{$T2H_LANG}->{'Overview_Title'}, 'Index' , clean_name($T2H_INDEX_CHAPTER), 'Top', clean_name($T2H_TOP_HEADING || $T2H_THISDOC{'title'} || $T2H_THISDOC{'shorttitle'}), ); ############################################################################# # print frame and frame toc file # if ( $T2H_FRAMES ) { open(FILE, "> $docu_frame_file") || die "$ERROR: Can't open $docu_frame_file for writing: $!\n"; print "# Creating frame in $docu_frame_file ...\n" if $T2H_VERBOSE; &$T2H_print_frame(\*FILE); close(FILE); open(FILE, "> $docu_toc_frame_file") || die "$ERROR: Can't open $docu_toc_frame_file for writing: $!\n"; print "# Creating toc frame in $docu_frame_file ...\n" if $T2H_VERBOSE; &$T2H_print_toc_frame(\*FILE); close(FILE); } ############################################################################# # print Top # open(FILE, "> $docu_top_file") || die "$ERROR: Can't open $docu_top_file for writing: $!\n"; &$T2H_print_page_head(\*FILE) unless ($T2H_SPLIT); if ($has_top) { print "# Creating Top in $docu_top_file ...\n" if $T2H_VERBOSE; $T2H_THIS_SECTION = $T2H_TOP; $T2H_HREF{This} = $T2H_HREF{Top}; $T2H_NAME{This} = $T2H_NAME{Top}; &$T2H_print_Top(\*FILE); } close(FILE) if $T2H_SPLIT; ############################################################################# # Print sections # $T2H_NODE{Forward} = $sec2node{$sections[0]}; $T2H_NAME{Forward} = &clean_name($sec2node{$sections[0]}); $T2H_HREF{Forward} = sec_href($sections[0]); $T2H_NODE{This} = 'Top'; $T2H_NAME{This} = $T2H_NAME{Top}; $T2H_HREF{This} = $T2H_HREF{Top}; if ($T2H_SPLIT) { print "# writing " . scalar(@sections) . " sections in $docu_rdir$docu_name"."_[1..$doc_num]" if $T2H_VERBOSE; $previous = ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND); undef $FH; $doc_num = 0; } else { print "# writing " . scalar(@sections) . " sections in $docu_top_file ..." if $T2H_VERBOSE; $FH = \*FILE; $previous = ''; } $counter = 0; # loop through sections while ($section = shift(@sections)) { if ($T2H_SPLIT && ($T2H_SPLIT eq 'section' || $previous eq $CHAPTEREND)) { if ($FH) { #close previous page &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter'; &$T2H_print_page_foot($FH); close($FH); undef $FH; } } $T2H_NAME{Back} = $T2H_NAME{This}; $T2H_HREF{Back} = $T2H_HREF{This}; $T2H_NODE{Back} = $T2H_NODE{This}; $T2H_NAME{This} = $T2H_NAME{Forward}; $T2H_HREF{This} = $T2H_HREF{Forward}; $T2H_NODE{This} = $T2H_NODE{Forward}; if ($sections[0]) { $T2H_NODE{Forward} = $sec2node{$sections[0]}; $T2H_NAME{Forward} = &clean_name($T2H_NODE{Forward}); $T2H_HREF{Forward} = sec_href($sections[0]); } else { undef $T2H_HREF{Forward}, $T2H_NODE{Forward}, $T2H_NAME{Forward}; } $node = $node2up{$T2H_NODE{This}}; $T2H_HREF{Up} = $node2href{$node}; if ($T2H_HREF{Up} eq $T2H_HREF{This} || ! $T2H_HREF{Up}) { $T2H_NAME{Up} = $T2H_NAME{Top}; $T2H_HREF{Up} = $T2H_HREF{Top}; $T2H_NODE{Up} = 'Up'; } else { $T2H_NAME{Up} = &clean_name($node); $T2H_NODE{Up} = $node; } $node = $T2H_NODE{This}; $node = $node2prev{$node}; $T2H_NAME{Prev} = &clean_name($node); $T2H_HREF{Prev} = $node2href{$node}; $T2H_NODE{Prev} = $node; $node = $T2H_NODE{This}; if ($node2up{$node} && $node2up{$node} ne 'Top'&& ($node2prev{$node} eq $T2H_NODE{Back} || ! $node2prev{$node})) { $node = $node2up{$node}; while ($node && $node ne $node2up{$node} && ! $node2prev{$node}) { $node = $node2up{$node}; } $node = $node2prev{$node} unless $node2up{$node} eq 'Top' || ! $node2up{$node}; } else { $node = $node2prev{$node}; } $T2H_NAME{FastBack} = &clean_name($node); $T2H_HREF{FastBack} = $node2href{$node}; $T2H_NODE{FastBack} = $node; $node = $T2H_NODE{This}; $node = $node2next{$node}; $T2H_NAME{Next} = &clean_name($node); $T2H_HREF{Next} = $node2href{$node}; $T2H_NODE{Next} = $node; $node = $T2H_NODE{This}; if ($node2up{$node} && $node2up{$node} ne 'Top'&& ($node2next{$node} eq $T2H_NODE{Forward} || ! $node2next{$node})) { $node = $node2up{$node}; while ($node && $node ne $node2up{$node} && ! $node2next{$node}) { $node = $node2up{$node}; } } $node = $node2next{$node}; $T2H_NAME{FastForward} = &clean_name($node); $T2H_HREF{FastForward} = $node2href{$node}; $T2H_NODE{FastForward} = $node; if (! defined($FH)) { my $file = $T2H_HREF{This}; $file =~ s/\#.*$//; open(FILE, "> $docu_rdir$file") || die "$ERROR: Can't open $docu_rdir$file for writing: $!\n"; $FH = \*FILE; &$T2H_print_page_head($FH); t2h_print_label($FH); &$T2H_print_chapter_header($FH) if $T2H_SPLIT eq 'chapter'; } else { t2h_print_label($FH); } $T2H_THIS_SECTION = []; while (@doc_lines) { $_ = shift(@doc_lines); last if ($_ eq $SECTIONEND || $_ eq $CHAPTEREND); push(@$T2H_THIS_SECTION, $_); } $previous = $_; &$T2H_print_section($FH); if ($T2H_VERBOSE) { $counter++; print "." if $counter =~ /00$/; } } if ($T2H_SPLIT) { &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter'; &$T2H_print_page_foot($FH); close($FH); } print "\n" if $T2H_VERBOSE; ############################################################################# # Print ToC, Overview, Footnotes # undef $T2H_HREF{Prev}; undef $T2H_HREF{Next}; undef $T2H_HREF{Back}; undef $T2H_HREF{Forward}; undef $T2H_HREF{Up}; if (@foot_lines) { print "# writing Footnotes in $docu_foot_file...\n" if $T2H_VERBOSE; open (FILE, "> $docu_foot_file") || die "$ERROR: Can't open $docu_foot_file for writing: $!\n" if $T2H_SPLIT; $T2H_HREF{This} = $docu_foot; $T2H_NAME{This} = $T2H_WORDS->{$T2H_LANG}->{'Footnotes_Title'}; $T2H_THIS_SECTION = \@foot_lines; &$T2H_print_Footnotes(\*FILE); close(FILE) if $T2H_SPLIT; } if (@toc_lines) { print "# writing Toc in $docu_toc_file...\n" if $T2H_VERBOSE; open (FILE, "> $docu_toc_file") || die "$ERROR: Can't open $docu_toc_file for writing: $!\n" if $T2H_SPLIT; $T2H_HREF{This} = $T2H_HREF{Contents}; $T2H_NAME{This} = $T2H_NAME{Contents}; $T2H_THIS_SECTION = \@toc_lines; &$T2H_print_Toc(\*FILE); close(FILE) if $T2H_SPLIT; } if (@stoc_lines) { print "# writing Overview in $docu_stoc_file...\n" if $T2H_VERBOSE; open (FILE, "> $docu_stoc_file") || die "$ERROR: Can't open $docu_stoc_file for writing: $!\n" if $T2H_SPLIT; $T2H_HREF{This} = $T2H_HREF{Overview}; $T2H_NAME{This} = $T2H_NAME{Overview}; $T2H_THIS_SECTION = \@stoc_lines; unshift @$T2H_THIS_SECTION, "

    \n"; push @$T2H_THIS_SECTION, "\n
    \n"; &$T2H_print_Overview(\*FILE); close(FILE) if $T2H_SPLIT; } if ($about_body = &$T2H_about_body()) { print "# writing About in $docu_about_file...\n" if $T2H_VERBOSE; open (FILE, "> $docu_about_file") || die "$ERROR: Can't open $docu_about_file for writing: $!\n" if $T2H_SPLIT; $T2H_HREF{This} = $T2H_HREF{About}; $T2H_NAME{This} = $T2H_NAME{About}; $T2H_THIS_SECTION = [$about_body]; &$T2H_print_About(\*FILE); close(FILE) if $T2H_SPLIT; } unless ($T2H_SPLIT) { &$T2H_print_page_foot(\*FILE); close (FILE); } Finish: &l2h_FinishFromHtml if ($T2H_L2H); &l2h_Finish if($T2H_L2H); print "# that's all folks\n" if $T2H_VERBOSE; exit(0); #+++############################################################################ # # # Low level functions # # # #---############################################################################ sub LocateIncludeFile { my $file = shift; my $dir; return $file if (-e $file && -r $file); foreach $dir (@T2H_INCLUDE_DIRS) { return "$dir/$file" if (-e "$dir/$file" && -r "$dir/$file"); } return undef; } sub clean_name { local ($_); $_ = &remove_style($_[0]); &unprotect_texi; return $_; } sub update_sec_num { local($name, $level) = @_; my $ret; $level--; # here we start at 0 if ($name =~ /^appendix/ || defined(@appendix_sec_num)) { # appendix style if (defined(@appendix_sec_num)) { &incr_sec_num($level, @appendix_sec_num); } else { @appendix_sec_num = ('A', 0, 0, 0); } $ret = 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); } $ret = join('.', @normal_sec_num[0..$level]); } $ret .= "." if $level == 0; return $ret; } sub incr_sec_num { local($level, $l); $level = shift(@_); $_[$level]++; foreach $l ($level+1 .. 3) { $_[$l] = 0; } } sub Sec2UpNode { my $sec = shift; my $num = $sec2number{$sec}; return '' unless $num; return 'Top' unless $num =~ /\.\d+/; $num =~ s/\.[^\.]*$//; $num = $num . '.' unless $num =~ /\./; return $sec2node{$number2sec{$num}}; } sub Sec2PrevNode { my $sec = shift; my $num = $sec2number{$sec}; my ($i, $post); if ($num =~ /(\w+)(\.$|$)/) { $num = $`; $i = $1; $post = $2; if ($i eq 'A') { $i = $normal_sec_num[0]; } elsif ($i ne '1') { # unfortunately, -- operator is not magical $i = chr(ord($i) + 1); } else { return ''; } return $sec2node{$number2sec{$num . $i . $post}} } return ''; } sub Sec2NextNode { my $sec = shift; my $num = $sec2number{$sec}; my $i; if ($num =~ /(\w+)(\.$|$)/) { $num = $`; $i = $1; $post = $2; if ($post eq '.' && $i eq $normal_sec_num[0]) { $i = 'A'; } else { $i++; } return $sec2node{$number2sec{$num . $i . $post}} } return ''; } sub check { local($_, %seen, %context, $before, $match, $after); while (<>) { if (/\@(\*|\.|\:|\@|\{|\})/) { $seen{$&}++; $context{$&} .= "> $_" if $T2H_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 $T2H_VERBOSE; } else { $seen{$match}++; $context{$match} .= "> $_" if $T2H_VERBOSE; } $match =~ s/^\@/X/; $_ = "$before$match$after"; redo; } } foreach (sort(keys(%seen))) { if ($T2H_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]; } # used in pass 1 for l2h use &next_line sub string_until { local($tag) = @_; local($_, $string); while ($_ = &next_line) { return $string if /^\@end\s+$tag\s*$/; # $_ =~ s/hbox/mbox/g; $string = $string.$_; } 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) = @_; if ($T2H_DEBUG & $DEBUG_HTML) { $what = "\n" unless $what; return("$what") } return($what); } # to debug the output... sub debug { local($what, $line) = @_; return("$what") if $T2H_DEBUG & $DEBUG_HTML; return($what); } sub SimpleTexi2Html { local $_ = $_[0]; &protect_texi; &protect_html; $_ = substitute_style($_); $_[0] = $_; } sub normalise_node { local $_ = $_[0]; s/\s+/ /g; s/ $//; s/^ //; &protect_texi; &protect_html; $_ = substitute_style($_); $_[0] = $_; } sub menu_entry { my ($node, $name, $descr) = @_; my ($href, $entry); &normalise_node($node); $href = $node2href{$node}; if ($href) { $descr =~ s/^\s+//; $descr =~ s/\s*$//; $descr = SimpleTexi2Html($descr); if ($T2H_NUMBER_SECTIONS && !$T2H_NODE_NAME_IN_MENU && $node2sec{$node}) { $entry = $node2sec{$node}; $name = ''; } else { &normalise_node($name); $entry = ($name && ($name ne $node || ! $T2H_AVOID_MENU_REDUNDANCY) ? "$name : $node" : $node); } if ($T2H_AVOID_MENU_REDUNDANCY && $descr) { my $clean_entry = $entry; $clean_entry =~ s/^.*? // if ($clean_entry =~ /^([A-Z]|\d+)\.[\d\.]* /); $clean_entry =~ s/[^\w]//g; my $clean_descr = $descr; $clean_descr =~ s/[^\w]//g; $descr = '' if ($clean_entry eq $clean_descr) } push(@lines2,&debug('
    \n", __LINE__)); } elsif ($node =~ /^\(.*\)\w+/) { push(@lines2,&debug('\n", __LINE__)) } else { warn "$ERROR Undefined node of menu_entry ($node): $_"; } } sub do_ctrl { "^$_[0]" } sub do_email { local($addr, $text) = split(/,\s*/, $_[0]); $text = $addr unless $text; &t2h_anchor('', "mailto:$addr", $text); } sub do_sc { # l2h does this much better return &l2h_ToLatex("{\\sc ".&unprotect_html($_[0])."}") if ($T2H_L2H); return "\U$_[0]\E"; } sub do_math { return &l2h_ToLatex("\$".&unprotect_html($_[0])."\$") if ($T2H_L2H); return "".$text.""; } sub do_uref { local($url, $text, $only_text) = split(/,\s*/, $_[0]); $text = $only_text if $only_text; $text = $url unless $text; &t2h_anchor('', $url, $text); } sub do_url { &t2h_anchor('', $_[0], $_[0]) } sub do_acronym { return '' . $_[0] . ''; } sub do_accent { return "&$_[0]acute;" if $_[1] eq 'H'; return "$_[0]." if $_[1] eq 'dotaccent'; return "$_[0]*" if $_[1] eq 'ringaccent'; return "$_[0]".'[' if $_[1] eq 'tieaccent'; return "$_[0]".'(' if $_[1] eq 'u'; return "$_[0]_" if $_[1] eq 'ubaraccent'; return ".$_[0]" if $_[1] eq 'udotaccent'; return "$_[0]<" if $_[1] eq 'v'; return "&$_[0]cedil;" if $_[1] eq ','; return "$_[0]" if $_[1] eq 'dotless'; return undef; } 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, $texi_style); } elsif ($style) { # good style $text = "<$style>$text"; } else { # no style } } else { # unknown style $text = undef; } return($text); } # remove Texinfo styles sub remove_style { local($_) = @_; 1 while(s/\@\w+{([^\{\}]+)}/$1/g); return($_); } sub remove_things { local ($_) = @_; s|\@(\w+)\{\}|$1|g; return $_; } sub substitute_style { local($_) = @_; local($changed, $done, $style, $text); &simple_substitutions; $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 t2h_anchor { local($name, $href, $text, $newline, $extra_attribs) = @_; local($result); $result = " $what =~ s/\&/\&\#38;/g; $what =~ s/\/\&\#62;/g; # restore anything in quotes # this fixes my problem where I had: # < IMG SRC="leftarrow.gif" ALT="<--" > but what if I wanted < in my ALT text ?? # maybe byte stuffing or some other technique should be used. $what =~ s/\"([^\&]+)\&\#60;(.*)\"/"$1<$2"/g; $what =~ s/\"([^\&]+)\&\#62;(.*)\"/"$1>$2"/g; $what =~ s/\"([^\&]+)\&\#38;(.*)\"/"$1&$2"/g; # but recognize some HTML things $what =~ s/\&\#60;\/A\&\#62;/<\/A>/g; # $what =~ s/\&\#60;A ([^\&]+)\&\#62;//g; # $what =~ s/\&\#60;IMG ([^\&]+)\&\#62;//g; # return($what); } sub unprotect_texi { s/$;0/\@/go; s/$;1/\{/go; s/$;2/\}/go; s/$;3/\`/go; s/$;4/\'/go; } sub Unprotect_texi { local $_ = shift; &unprotect_texi; return($_); } sub unprotect_html { local($what) = @_; $what =~ s/\&\#38;/\&/g; $what =~ s/\&\#60;/\/g; return($what); } sub t2h_print_label { my $fh = shift; my $href = shift || $T2H_HREF{This}; $href =~ s/.*#(.*)$/$1/; print $fh qq{\n}; } ############################################################################## # 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 ############ .so /usr/local/man/man1/texi2html.1 readline-8.0/doc/readline.ps000664 000436 000000 00002667030 13406221742 016135 0ustar00chetwheel000000 000000 %!PS-Adobe-2.0 %%Creator: dvips(k) 5.998 Copyright 2018 Radical Eye Software %%Title: readline.dvi %%CreationDate: Tue Dec 18 16:44:18 2018 %%Pages: 81 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10 %%+ CMSLTT10 CMTI10 CMSL10 CMSS10 CMTT9 CMR9 CMMI9 %%DocumentPaperSizes: Letter %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o readline.ps readline.dvi %DVIPSParameters: dpi=600 %DVIPSSource: TeX output 2018.12.18:1144 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat {BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B /M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M} B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{ 0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def end %%EndProcSet %%BeginFont: CMMI9 %!PS-AdobeFont-1.0: CMMI9 003.002 %%Title: CMMI9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup /UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI9 def /FontBBox {-29 -250 1075 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI9.) readonly def /FullName (CMMI9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB 7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67 7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8 BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365 82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74 91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E 540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112 7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8 93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756 972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A 6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149 796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94 DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80 E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D 0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83 F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9 ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97 72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9 4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1 692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109 4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1 CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59 41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A 9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20 5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292 2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5 8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B 33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28 03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1 749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE 3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F 64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F 90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05 DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8 F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D 4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF 49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4 E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117 58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE 88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3 B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE 7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776 01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46 19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41 194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55 53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3 F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4 412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6 C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108 4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831 E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81 AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF 00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91 C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8 2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980 F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50 0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023 28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4 E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42 20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B 7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE 5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4 74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4 90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55 3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621 98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066 54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7 93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC 19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A 9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84 A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB 107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA 5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08 22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95 B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D 403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789 D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6 20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6 943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33 AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70 B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA 2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84 2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F 8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642 87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4 2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842 D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC 512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4 4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559 6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9 9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A 0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040 9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1 430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8 56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE 718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3 F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE 95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE 6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7 6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867 630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111 6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA 89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475 3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2 90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47 38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34 EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9 B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376 9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9 1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF 1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C 62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5 84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2 AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618 D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196 BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6 4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6 531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24 FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2 43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256 D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6 0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4 E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53 DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358 99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD 8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1 8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73 A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5 362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3 C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79 E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2 07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F 0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6 190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4 5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50 005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8 6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9 F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087 F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE 2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752 F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0 0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD 73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2 62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79 5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98 F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F 6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7 DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109 EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222 E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107 536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18 36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3 F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0 431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900 5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C 074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78 E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77 2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600 324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR9 %!PS-AdobeFont-1.0: CMR9 003.002 %%Title: CMR9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup /UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR9 def /FontBBox {-39 -250 1036 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR9.) readonly def /FullName (CMR9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 13 /fl put dup 44 /comma put dup 45 /hyphen put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340 15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4 B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029 85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955 F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D 2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5 B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7 78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7 E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3 41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277 B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072 55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA 700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9 8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4 FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4 3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15 B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2 AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013 461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85 CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C 4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F 291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223 D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181 C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115 D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9 9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405 2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380 A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB 2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E 2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6 AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577 9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67 0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D 9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B 42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0 C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35 623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6 B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4 E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97 CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D 07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7 53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350 EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9 52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88 F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3 81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6 B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A 31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293 846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733 46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E 44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08 A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5 1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4 D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344 6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E 24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E 75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51 C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0 5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034 099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281 7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE 53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84 7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F 7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933 CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD 866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826 ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64 FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B 40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643 D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8 2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787 39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2 1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4 F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9 253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B 14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085 6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B 9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339 FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F 289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3 A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5 5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46 5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652 152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE 67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3 BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59 3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88 713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF 2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5 D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143 6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9 F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95 26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970 350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700 70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5 F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95 F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8 9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2 DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473 F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D 064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF 1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325 A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF 01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C 40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C 72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645 24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1 EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775 D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311 83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483 5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448 1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69 AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC 4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3 7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9 65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063 B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6 FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6 4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490 8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6 1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3 10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4 8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0 7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F 852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C 3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997 648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD 855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE 1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C 1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0 B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7 D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99 24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C 552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733 6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0 800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8 6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659 E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4 5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2 00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4 82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7 6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3 128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D 744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507 84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86 5D2579DAAEE12528C23ED8A1A2F34CAD1CE8BA67D0B660E9281F247EC10F816B FBD6B9E8AAAA1DFCC4C9FF1C6AD05C0D776DBF675838C2629826D5337EED815F 4268604A4EED01A2C7842FCAED2E37F7F39F980866DC5BCACA8616749FFE946C A0AB0475DA734C00D99912C544BD31F8A69367D068F0A18EE79FBD4D5385B8C1 DEB92502ACB3B657A54C9BF786D7DC1ACABDF29591D77ACE1D4FE00E935D2858 3733656C79DD1C174C26DD97D462B4323F33B410DEB64244095927C572FA90C6 4C8B709C5B7E4386AEB936C2656B59AAFB74F9E40E680D890903458CB1B2AB8E 6E629F88B51546877F7799B99DECDC13638E2765343988DE2ED33279DEC3FF0E 2255A734F5925608991F068274CB1E5301C5B8623C5878851857B3E665490A7F FCE5A8DC0FFCF3D56BF55E4AB2ACC6743F52B59C1343A1C25BD46A6A3722957E 24A6F4B970A594F67A09BADB6A7B4BEAD3FF97D0734470750FCE29807D315EFE F93BE16F39C0B59D107D1834FDDFD520D8A429FCDCA408C79DEB580081191B43 20650B5375AECFC2DC500E3CA934AFA3D241FE7988892CEA42C8677DE18C43FA C3094F8DCB1D070DE0D32B69E2E1ECB4A82AD9E38D889D05418DF4E3C398FEA7 BFE9B364A389B13BE713F5B2553ACD16C14AAE521B63E8A7DD0258EFFB95646C 18226B01D916D41DDB322F6E83C3E3717FC113BF7D7AFDA2CC03B8175BD7DCD2 AEC82FB156E051F2D87B9F12F81E1F43E822EE27219758B3E237AD772E7B1DB0 19ABCE7BE6A2FC3C7DA0766FB82CEDBAFC19F7EB19C7448C1719C88FE99BCB73 F7DEA427FBFCDF4F00E0FDACD080AF068F7A1CDE18315BD694C60B1DC71DAF1D 1009AFC847156F96D9CD38A764D0EA70E5E9B6E19A2A0B80ECBB84CA44C137F1 4925EF5766F00C22F967F9F68D7637DF0982785DABB8684A5525C6D23DB05B31 026B49433392C8930BD9661B23C2EC0E0BC4F00FFB2587943DFDB4C6864CF1FC 7152CC20860754204B7D4536F3C11460CD2626DEE88BBFE1CAFB5E62C9BA0C8D 514629E5A25C4FDEDF56FA2CFEE1A648E78803062DAA41E3D2CA4400C74C3C33 B77692A278BCC9B4E4512CFE8D71D53750ED0F7BBBC811EDDDAE0E7049BD916F 8D1819A0AEF50E284BCE7CD48517DACB587D2C48AA89062A791DBA7549C22C0D 2B14B2FFB48A05CEFA73D1F81BECD4BE921AEF860B30CC1FEFA6199BB39A8156 1AC9CE55140BD9EFB3B2BCF6FB6645816F11C172C525D9E623FE2041BE9D41C1 A3338195A24873E110DE875B1E4FFD5CA3CC44FF36163C867855620EA60319B2 27A40368957F81B38F6346C45EEF35636B01923E356F2F4279001DF3FF52BA26 B0C523895515658EE61DCD016A839A71ACB5645B4CEF3035843545920F7F6624 B414350819CFBED577BEC9CAF1465EA75DFD39318F02ABF8697621325964DD46 E8206C04B7C5285DDC91EDBB7F76DF9C9448A778F4D62307B2F042B169053544 B3B19D36FF290B4BD1B807749BBF6077BA682539E07B846C9BEE668BC5DC5DEF CFAC349ECCA59B1A46CF89F2C410C648AB50B63BC616BA3D448B1A08A2C10BB2 CA96A7BB2A498E7F00CFFFAC03C1BFFBA166D4948593ACEFB6E1E6D586D24F58 43A02C59ADDAAC725D06E4C4EC1E1F5B2203289908605D950551C23A71E12403 A443576CA8BF7C365ED9ED2AC7FA6B17A786DFD3731967B43B8715028241DA09 934CD93AFE81013D9642DFBA66EA1C024FC804ED884088FA398F065F2AF53163 6ABC66A18AB971A7B494B6EE78A12FEF18EAB42529A1296D054ACA5BF2C386B3 5DC802B67E362B2FC35633487F2C0FC90333508BA50DCA2EBEE2FB939910E7EC 128B7A7AA0F7A7CA91AF854AD2505F5DA70889940C4945BE229F6C2ECD1A8D5A B35F475DA0D33125009C6C3E7730DACFCF279EDC74DFC88630342D1D81315AEF 884EABB7E785653BA2463C48708ECE70A49503575048CC768BB8F13FAECE7FCF 29FAE1045C5C6E475E634DA1A2128A0D16487BF3D62BBAAFF6ABE72FF971C361 E5B530D6C6977137319321BFDB6A526B7AEA07EB6548F6FACAD54C426D3E5207 0443CA8ED660D368BF42FA1107A9503F5FCC4EB8D4C7D2CE580597E4A84EEA31 135D139540C7D5B0AAE65FFE3475C1F2DA4318DB4204677B4C30652DA10155F9 C1CEE50DA12BF2F08521A17641A2F5541EC84195149392FB34E900EE8C130A72 A06E8D5C1C3012486BCBE6F82A8570054C243ADAB55F1BD0A2AC1D73029F6E0A 91230FC5BD62E7C8179271886FE2A3D0A4D55D26A953064E16B99189D714CE51 6C1ED25B47BBBF5494E1C788038B82BFD0D6CE9DB60E49EAF500DF9ED431BE3B 5C5E93A14078C7962DCCF2A34966BC16EC17989C10D2C74FE0DC9306CEB61DF8 A42FB761999A3EB75E31431F568CDEB0A3CC8C5FB6B76B8768086F20D284D302 A144E5CDDB303676D612FE7D749FAF7E0EEBA5D5FF48E3CBBE5046131A8A00DB 21F4A2C8788781CC2D3ED96148B7C77CAA7278CC32284B2BC83BBF542172F186 677F635F73216E1D41D2CA802498C469234B79AF35BE521DF9E633293B1BAFDD 3A0B043626E3CB0EE9072FE09F90B8ABAB28F60C42CD3F2323B7BA4E4F9FF6C9 BEB3D0E12B74799E2321A65B88840470446AFB66E7B9FD92638947923F8942B8 B9182715510969377DE1362216F2EF6B96D4622ABE65EBBC5F7FC397B50DF682 07EEB73A649383B86EB255B9145916EE2E8C326052ECDE0EB367DCB62F7F88B3 6F9F23853CF377EDF5F4B1F0A6DF99EF29F21452D2628A40F589BBA831118DA9 DDF19BB85E5AF7D79F5DB4015D90F3AF189E7D5E9E3585B9D444218B889366E5 7B4B8EB34F4106ED4E54EF08F08581EB40A5B49E214A86251FEB131BCB071406 B322E962F9B14AEBD38747B44F976B30B184AD7667EB5AE3EBA6744D6C8422D8 F4CB40C3216799F46067651DD21F6F763A59E93B9A67484E6CF9EEE3913B6687 BFE8E68087D287651AA7666BA83B0D271A422E3F0FE0C2942AFA64F71B8237F5 31C7F7D6E5D4903D3CA32C77781BD8C959FD6DD1BE80C113B59B39F1941E8770 BF7F8B7139ADF77E2CCADFD99E2A87A5C10802D2D6CE3D9A3830378BE37D8903 B87B38EF25C49FE93C797FEF7114D4BE3A58555F701CE4D8BC2605CEA9725E08 B2460459E5A4CE44793FDF3C212A6B5909B49A4ECA55F53AA3B9AF63A2DDD339 9023D61FF6C29721EF2B49C89320372059FA33F25CF6BC7F64E3B4EC7D7527F9 62A8FE056259BFC788F24506F8F6E9777B693AA26F646A22F3ABA85A6FEE1B41 373D90C3CB55A474A2E5EF80A129F5628CD064B590DEEE7935DE9AF5D68C622C 814452DB304B52DEF5C9490B1366BA1834AC5B27DFF17CAA5722CF783AC8283D B84A3DD19587B204EF584499E78DB2222DCCD50847959B4820CCDC092F88693E 50B9DA33FFEE72C235520F58332A3725BF62BEB005D36FD3CD1B2310B2982A34 A095ACF013BB5C340A21B4537A7BDCD5161377A4818CC44D8A15BE7CACC03D33 11CDF7811E0CF02F6F3213D3B598713F2EDE54E6857A526879C920D085A01997 8DA06915850E5402A4444AABCB08881EDCA2DD068E1455BF9A155C54EF315FAA 279D726F57FC86300BC4D9DFCD4D44EDFDDD4B00DE34948028C7A9255B931CC2 77A0FF40F7ABEC709B67C6EADAD9D24B014DEB4C342E5F37E1CA26A1999CFDAF 50D8E76F1715FA8EF095B88D9A8DF4325572B26753F763F264DA8887E4E5845E 2A01F86149EBDD9CFC21CF2852CE95386DBB1E4DAA2113AA1E0C53746A3AA5F5 78570500FB89E376549E282E2AE990E72C0E77F701FCC977868ED3FBB7C9CCCF CD28795A80AE8787EF1D0C374297819A324504623E12688B08E4782B18F05C75 2E2CD594D0E6C10B002AD61CE491D4B95244E83DB861E36D293C0F556B295FBB 8F045711CD606D024F0F03603629F3BD495183E821D0A1ACD83F3376B62D278A FFD084EF020A119836EB60D0F8A059BAD8D8CCE26A37182E7C89CFC2AB80C724 275E921332ACC5A6991B36A2C7828B632DDDAF04780086F84E1A122461719992 061E3F597C8E6DD8ECE708251DE0DED5DAF913AD4130ED89DD271B17C556F466 A2587876F7954A9888751460B468313DDD88F267BE6C5FEA492A6CF1365AB8B0 D8E872A625799B9BE1859AEFAD98B6F41AE33D0CC069BD36333819995FD9B510 715BC8AC70443A107EB2E34809771DF24D3AC09D47768D3202D809B023FABA7D C6B8CACBEEC4B47082177995C3C00D08446DA56D527D8857E5D3342EC3C42DFA 7E35C992B8C2A50E7374FE57092086613D5A3B4567A9DA3758F48E6817CA3C2D BC552BF4A17E92DFB106E74A2C53DBEA13481DFB9EB64422F5CE073512B67018 46E902A52D5AC8A943C93B1921ACBA76D6DD2DE9077C280E1E6E43ABB9DD11AF E065D8EB102BB53A37F6B491EE341CC8D4D3AE311F122A28F7FC5481CC80E119 EC3E67AEAC772AB31D41151AD51B88122325456163D1E84EFBC5CB9A55BC4C15 7A2D56ABC55E61A49311ECB2C3267F7EAA3C284A0135985EB5E2D4113BDB8433 123A4A4109F6926D9C38D502B5659AF97969C3160BA5E6E32B95AD5D6855D307 89BDDE727683B2F05D6D9E74813CAF8038C03C574183CA79025D33FEBD68811E 1A3B42236EE1CF60614237538CB2C9567612DE1DAB1C864828B9604A5D4A52DF D5012F80352DB0AF93758E8DD4ACEC077160D74FC723F6878B2556690E9ACC91 5B552329E06B87A06E733270BE98C16A30CAE3A798CA80E7A9C3B8733A9428DE 0F4DAFA656E6D01470FA746BB58E686846C29933F9A48932E6AD3A20C7A0FA91 AA45745AF05ABC50D77498AF81E72D0DBF7D6FAF97E5538673C57A6EE39776EE 06BFD30F67A57AC796036A5394DC9A8C75556144497637C28F3C56DBFB21595A D2A46D6C4A0B63508A238B97ACB24499AB5540851B86E273B7B2DED24B458DB1 5280B3F9040C08672F7DFDC4B69C54B92EE3555902BF55D64CFC95A9DD143C18 FEEDB1BEA96762AECDA9DEE705AF2DD54C619328B9A26D019984DEC1EE34F30E CA4EBD5A4AB2C8547C0EB264D47943AF93E281A9E346B6346B809363CD7D67D9 9A8D6A2B1C109C8F226BE11C405F18E0197A47E44B57C1CBC8CAB957A2F60771 CF8DAD0E361FF6891CACF5672997B0357F9A5D16D424F2B32A0256210106B3B8 160B3CF0FB7D28A84FA861B0210F383466B6E69DA79B59D95AA05D608DAE9D56 7A05E3CBBDFA558C8F3A5D5AD9F70AD60FF059AD26041DE8819EDB2746DAB76A 6600D7C708F08D266FE22609BA7462A9378E691E175230E4D4CF6F1FB40BBCE0 31E34EE09023FB7BEB557267986637DD5D9C70E38C14E485BB6CDFE0826F9DFF F5094AABB6719C11474BD877358C603FE16B3A26B8C3CA026E6B29B1868F2AD6 2960CF99DE7E16B18D3480F52585F39D0B45574D4A0008BCD49C3F2B27930B25 3117251BB7116A23C586F7B0706F7F2BB00611C4FA705CC11783E6A1D868E1E4 5685B46356200BACD8C9851AC613169CDF40BBF1B400E21137D00EBA1E782E97 BD6972E405ECD84202049433393B3C283D44AF4C3BDB3D1B700F43AB576B4C7A 195500FEE676D1DE97C32859987267428884E4E58C2D8FB367810741B0FB7D37 4F185ECAE1AF834069503E8014FA13225152CBEDD5A1CB8895DE03E1B1704892 23D2C13F5EE53AD95EBE5C0AE07FE2DD36209897001FF645DB1276FDA49951B2 D319D63FB045B477BE528C3667F0CCB6853E0D31C77ACFBED46251BFD60C1321 D0FD450193208958E91C05E9518F3E2FB9D4B6AFD5084ED2C13DC3E59F85C853 10AB3B7706863D6056954E6E89A23D22FF9D3A868C7A47FAA92C95A5BCAAD7DA 0D145FDAEC7EF719C077D8FFB191CFE21E87736A98965A4A4AB2447B607D02AE 8995550F0BCEFA8BAB7A197C053F69BBA12CB7C01976219DFC6D2A49D415EFFA 66F17762549A09F43FFEC19B4A6CEE65A6903702F1750B263C342E5CD8D26F9B 363D9AF452BBB2B0D5551D412872AC8F781630B293FA0B96FF49893200BDC53E 32CAEA43D4AC2D01FB9212277ADB59C864CED023A8C30665A2BFD059A1031D86 6410CF5A2716F0927A8F9213C73681278B8EC121E0AC73D46A704D6B28D7B003 FD075F4455CABF65FE19A91768983B2B3FCD40AA0194EDEF3C94C06D2787F469 BB045AF387183D001E980E05859D316821023CBC205C505B11DA011D784B7F3A C47E20AD8F87E499D7D77EF84C75093BC67969E7CA8714F55D7945F799D6A640 E6F00FCFE28DE659F36F947324DFF4E79AEFB61EF14ACB3FC078873A17FCB5E1 D3C40C11B5A4327CF96E07F5CA9D62127553EE94BF3C148D9EB83353E9DBFDFD FF9FACBDC8AED20340D2FCA6F3866DF72EE9CC880E4069DAAA2BA5A845DE7FB6 CF7E686BC5CE9A4B6D37890D902CB7641033A7C1B7F974828F4FC8AF251F7985 E576958972852E144094C10EDA802DEE259F7437CD26A1C9094F87ED0697D713 94BF9E15347EF558B9D40243DDD348C7FDC96A1FB6D362BD9D955BAE3F6A2353 84D89A27BB4DABE3CB58A9334971E39215DE41B4DA77FFD32B088EDE2E23A26B 59273A7DC587D70CCDF43BC64BC3CB11B6EF90042B8193C0C4E66D9C7BC7F459 F8FFA1D733503659A2C2BA42C0A1E262D15E97A55E97D746455266507B4B2913 EAB47632D372206F3F1CA23939A281F2CDF5E2DFF06B94560879BE2080E2CBE7 DC93A7869391B1F44A4466B38B2A4A8A8F8774D76B8F2449435B525F2651791D 890D1078533B845F34713FC87A34153D1175B40B7A46F2C228C6405E4652E635 D9DC320111AB934184B34B30A946D74D30894AA99769BCD213FA3494F8C998D9 BE4501663B8CA4441C8A7A0314BE23D451D19E1ED15831DBB29180E023A989ED 4A4C4C92C65637A9DEB914179A4D3735CABEC726E9F431367994E32CA1C83541 ECCB0D463DB8A0316213A3356D7C654F9F5A4C57260485D0FE8ACFB6FA759A74 BC1C53F32A147A9F0B2264AA8CAC642D6D932E462D76F113ED2BE639DC67F8E9 7CEDAC5FC2ED44E4AF3ABB083F3D103378B784E9B0D88DDC98160629B0731AFD 1502AA443FFF69071A8C6E6EA0A309893DF57E550C270B7BA271234BC69DB3DE 7D7A87D9A8450596960F05942E390BD546A9C10501057B96009548EAA8FA3DD9 DE5BACF5AEDAEABC2998F34BB48497E022CF71C4260537F19A7D38679558E405 EEB015B7BDB6092553644D28857CF4FA28E18040C3E6B8DB88289CFB10FD86E1 99D4DAF86714EFA28E61FBB3010CCFB8EFD7C9B6E2B759F276616DDA9F90335A 388DDAC61C577A057434F28CCFB339902BE256D21F4D52DCD450AA5B747D7471 8098E4B634907BE1DAAA43FFAB7E4AA8705E76E9ED086CAF7D73375E7EC6626C FCAE8CE2AB754C256B795BE48428076BF67D614F3FB28AF32DFCD73F17B13E2B B127E86C5726769BA5A5D2045B839E4FB5D382E93851E839D2C0FF5824B72C84 D1C96EE48AFC44DBE54E1844BF709BD50C0E1D456EF920662D905C823C912A13 018EC340C0F4B508F7D8AEAF895AC0CEE8B15A2620DEAF8B4CDCCDCBF40D626E 43CB4C280366C106F7951D505973018D307D9858D32E7360183E68C226060B32 A342BF4CFFDE1AD9B5111CB80734C1E625343148FF2870D1D87DC70E9264E9E9 BA20D962DA30CB7A2755B510F86899FE1430E46E76672E30A1CED0AAAD9E983D 4E3911BB537D48A168F7B3BD46592FD4B07B9CE043BE9DE2148BE10BF8C30C68 76B76138AB34805C6D8B6454E3D5A830407A51B9E1A71DB17668E7A94BB150E7 BEAC13AE7363DEE94E696FEC3627958DC530490FEE0DBDA1ADA7F00848D3C3EA 683757DCB8AFEEA2C95B7B27D8EEC5956AF8E26BC8CFF14DD8A2E6A638C5D6CF E128C7F8BB3A3F27EC922041E857CB68CA824DE6DBC56F68CBD131AAEBD6B0BF 4189A1AFA1108BC42C2697B3C24AD8587EFF5C8B46A995CD881ED98523FC98CA 6A123D37FC9D79F0E9A6E6D9E783D8826A0A07A9EFCD563286710FA3CA4EF170 1B42B440BEF8ABA94FCCF86F0BA118F36F80F6BFFEA5D13CE0FF328CF428D437 EA9076A01A151C0D6CA5A7B8410815A88DD92BBD2A27EF160F39CAA7E0A27549 EE8E1B301374028A8C30504461A0CE8CF9D1AF3BC27182E4FCADBE153FC3BDCE 04B9EF6B6C383FCEEA6DD9D51CFC360A9DDA8F18F28175B3AC453E4387D9CF90 28B44827AEB043F2971C0E6C852882734C9B790DF14ADD37A55E807068431ACE 0BC67F4D03FBB3C611004D0C1E1B9D5CA572191A13820DE990F029E1EC07866B 9307D5B77304C9AA9D987D8E2CB1C302F4EBE5AE1A18EBE36901C6D94A3B4D48 F31301459C87955B6C24F48A98BE883BFBF526DB1DBFAD1D6B23F29E6C32B3C0 CC56550FB658455B8E3F2A76BCF1EBC9F6AAA1200C428465A22FC1C748CA45D2 7427F87D506B90D3C676AD753DDAE196464C9672614D1FC43F0DB91DD9A00B4E 9D8E31DFADEF3AB6518EA1C7BD9BE20AC8C66D0B1CE9737C338E02794640F7F4 F1F2E04CA39971AEBC9FB699ECA8F07569C8AD9833E69DD9EBAF42376BEA1961 9D3312A8620A66BC68607C0B7D723DEF61764B7CA43EBA27ABA5B0F518F40B01 E713AED7BA6E23BA5D866E10638DA78B9BFA68757921C9E766603F884C18E76F 848CE800A1A1E6FADA9E1BC717AF098446AF80924915D0AB86F4A3615D4FD49A A5A844530155E047DF9A6F878677C12391DC8FEE91C90709E3D06F31D10952A6 5B0D30556D0AA5F59DA5637BB280842DF8720816D67F465B48A063BD606B536D 760A402075ABBD70940DFB7EDA04B55B5E36D2B512A6D01E7E97FC90D708EAB6 0F9A77ADCAD63063C5837DDDF800A4D407601B15895E83B58359821426E93994 019B73A5FD9661550718CC3B2F79E9A6A0E7C4984EC1426C0B8EB86DDEAB3FCD D1B467FF32005EDABE59166D2E0564CCD1AF482301D2BFAF138F88E2FEC6AC7F 060555D402304EDECAD793EF9F779F6AC52B1AF86D714F5CDF3C574592E8C742 23204EC2C4C226968B8633554349A2C0A987E2812B8CA402A0A1BC7A16D452A5 76083FA380D36F227828DF913C468AC69C435B2341A590AEE61A44B1A00D5409 B836D6BD6670D5C02A614241941EFF04BB09366E4CCE644F8A3D2CAD5BF9E445 BA296EF46392ECA30976FC566CCD4354D124DA25D9708578214DA5582122D8F6 8EACCEA4CA8F63F15CAB59FDF29AEA5B4480023D6A61878B43B0F9CF1F4C6792 C9B0726B1D5162E665CE4F89BD724CA7B957DDF865F6833BDA3736310595F2A8 58182EFCF9911455FC934CEBD36C3D6E258D948AB4E28D225BAE6C73D7F96E9B EE7BB7FB24CFE23558DB7050113CF8FAAF62E6DF1B05064FA99C2016537F4A60 0C80147EBBB95DBFD8A03B125C464E5917AE0F11D293CB75C8FF18322D788FF9 61593E2CF4FFBDD2A1169A37CD3483C3125A9669231592B85D80FFC5FAABBB79 3E7F46EA5B3F67B0B5802642CC139D752C8A9FC6687CD6380192BBE2864AD792 F84A826F9052A4970DE4725B125874C162F00453A685A329867D237E3FF253B4 0B05384E0452602C3F021E47F5B2D680A5D120B7A7F4E261B1598DA4B55B3AA3 BE47D2C7FB46780153B3A7E124BEEBF25BA598021BF943DDDC3CAC5CC661FCD7 F78EAB069BDD1531684BADB59CB3DAA544A7F38429104399FFD147B2973E02BA 5D7C964A69650D9C5B1C3806A9B0F33478B9B2D8CB730D4E28BDF9C35A0E015E AEE3110714E6E09D51A47EBE4DD5C1A4A7E608B0C5233B85426B1696C88E4A1C 56210C41D7B778DFDAC0708EEEA185E37CEFDE917728E9E2BC9ACE85CEBFF12F 702AE7B7D0288FD933ADDC3AC849D7352613C41BA4A7988A08D24DDF178E3C48 1C7D348E7F5D67A764FDFBF5FB9A20195F4C806ACB59A47F334CE16B5CE3B8AC FC951D49170D29B662A7A6EBEC46EBA01C96E85F8A4559CBC60D675EB6E1D7B3 84C917104B318B9AD8CBAF12CFA478590690265DDB43198C7B7C1C6D5A23DB30 11C1D6AE610ABB2985CB9D00B91860963C316BC83B9F2747AA99CF8EC08CF47C D599CCA471FBD4C2059F8EF134050CC6247E9E56FD480E9B93DC083B0F16D673 7E0A1096C30E9B8B0501BB25516B18471413428F50217BC2EDFD22EC1135D121 DA739DCD4AB3AFDE2AB9407887D1F23CC5778C90D5C32BAA41A094968BB78F81 FE42DB18820C03641895AF1D998B2A0C5C1543FDF91D6562A7D63C136C47AD42 C1B04F7A70393CE6D13D313B63967BBA42F356AFDC81851BA94ACEA54ECAF0AD 8B6D4BC392CD8B4C71CBCD1B31A4FFC431970C88ED7D003EA9964F8829FA69C8 D7BB49B7AE6571ACC901BAECF22D72CF86CE1AC1D831FC5FB5E6FBAF959CDC2D 900A773752D320C730E4A8D8612CDABAB22B6FE49DCA590A05861E2421541766 3230671D0722C743024A8D143E3CA1DC3658F10B9779F4BB5859BBA03E03EA43 68F9B65C04CD618BF61F0110EFF9DAC63DD889230010AFB6EADC13371A34D3A7 CF3879D64242EB295ACFE2A2A7AA7D5919EBA50C38462BD9AC72160A24CAAA4D F467AF4A4102D2C291E4B80543BC7D72AAF725BE15A1CD8499ECF99B73105E15 53F2E4FCBFE1200A418A2207BF2F9D9BCDDDB62500F8394AA90E615D06A805EF BA1006E2C3638FF8AF1D67D3A02F3E5185394D4D83A8E0502759A14F38DB9523 1059BF230DFA29CF3020F2380406A8DBCABC40B50833E5E5253B524E2A4DE292 49117835FBA70CC6B1A7E662B1FF2A5C96AA9CBCBBA454A623CBD4FB0FE35578 3DC8B468AB579AA8D154035EB6F30F961412B5AFE7074F18AB9019AD2E600DCE 5C8376340B88DDFADCB4B1C46D4F63BBFA3631E11BA5DF550A4381B3DD1F1D11 F47DF28562E706A080E38B2E61E03603694816D50D9AE19079228882B70AB605 D5D4836F29B382A61683318A3442770BB18BC376EBC07BBDE01ECA8677702913 2688777C8CB4E87B6692E5E86A54A220F927C3CBF885A78960D307B572F57650 8D817DFB1124BDF3803A828D64EEE5EDC69D3568EF04D2D8C0285568817FA562 08FDB68E1C0B822668CB706C3700BF0C30D72D048B943D50B00889A33003B446 DD7F3E4B35F257B0537E91ED175FB3A32895457989C018A71A1023E096B539FF 1B09C66F77EF13F874F16E6F7D5BFD6EFF37202730AE5231A29B4F91B868C93B CB3D9F38159EB9CCA2E1B3CBF296E27005DF9884F71C733BD4EE3F144D37E20A 65262030DA75AF8151F141693F97E380C5733B92A5615351E506925301308872 09EAC5535D6185652AED2621F4E0D3224128620FB6D9D0B99C3D31B3E20F980A A43A22BDCF8A2779BE4744B76E908354589E1D69A7691884319FDF889A288E89 696E5FEFA1350410F0411CC4B1FA2E4A767A662606978716754FD44FD7161DD6 7CAEA2734F499316BAF6E665DD6C85980CEC818542DC7460B336097E25C47AAB F26FC408465B034EC7173FC10CC7FCE36A9D74786BF2007D0EA403D3F8E90FB9 852B4D1400ED16A4B945C3426617EF47A8118551D0CF6B5E95C525FB8A896FF7 FD7FABA141B597D27499B7D7D97712248CF0DF7976BED02A5D564D59B23F4B18 9F13FB0DC17334A496FE3C2C84F4CFEEC9F89B14A7482AB324DFB201B6B72295 98EFBE2C8A5A58FB4EEF33F4888773533A9D5D73732662192B72A1D5102E2F5E 247C9282EAF1705B5E96C9EDC36111AD5FC2E1FCC606DB766775AF00834B2631 AB76888E6FF3CD6BA444C804770463EF3F5014DB69D860EE563CBA238F8DC2ED 3B5948A27A0D02033850B4B49E15EFD202B0B3ECE75C407F0843FD84D070344E 01D1462A8F7CD73954D75D7CFE22A8F4B69185A3B3081C1D113D9B2FDA91AB0A 5D3FADD335B480F61C6A5C25496F3FAD35449A156A23CCC9C3D5BFF5F1C1D243 607E05B2F81999337A57A673026E7716ABD0395134BE23DC11484F898D9DC7E9 68CBA68E60DD836462767ADBCAB8F3353778FA7B976E01458064B51B5D2F2B53 4E26AA1EB608D072089F858B1C7A7E1C217C8872E44CC5AABC5DE83E10C3986F E5A484B2EF6D8B05F70C499BAF6054C05C10C1D45C8FEF8D493968F065EC4161 B8B04F8588F208C4902D37520724B2CB0299D8120D11B836F8B301229BC57CE8 3DE15D7DD8D829BA7A7F3E39885771A4469E5E4390A60C295926AB828CD91058 93832AC0A6BDC8A6B7 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSLTT10 %!PS-AdobeFont-1.0: CMSLTT10 003.002 %%Title: CMSLTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSLTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup /UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSLTT10 def /FontBBox {-20 -233 617 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSLTT10.) readonly def /FullName (CMSLTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 39 /quoteright put dup 45 /hyphen put dup 48 /zero put dup 49 /one put dup 67 /C put dup 68 /D put dup 69 /E put dup 72 /H put dup 74 /J put dup 76 /L put dup 77 /M put dup 92 /backslash put dup 95 /underscore put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA 3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC 6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F 3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C 4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90 DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2 753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131 54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D 107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3 7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231 328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9 85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C 2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7 308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450 CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195 739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93 FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6 F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312 3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F 55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB 69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50 82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0 8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8 0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6 0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8 1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1 D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737 170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863 767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3 826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235 8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048 345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE 67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD 802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E 20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127 5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07 0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36 22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC 4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B 4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880 0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5 220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403 7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005 27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300 7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07 A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D 45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10 F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7 C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65 AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012 DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781 FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA 997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4 3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A 2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605 31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22 A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891 43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D 4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5 94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E 425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616 FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5 51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9 859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852 E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F 2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910 82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA 22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D 200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5 892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32 0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140 437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3 BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9 E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402 DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1 CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551 80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA 9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41 031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90 9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3 9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891 4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB 57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B 2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39 0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9 03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067 22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79 06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC 39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163 A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6 9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6 B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F 79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553 2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5 8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA 1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA 0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2 BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3 312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3 B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F 9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16 A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6 91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F 7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D 78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC 7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09 766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11 016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3 8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278 E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC 6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8 B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959 44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE 5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB 42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57 CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009 9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2 82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72 0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5 F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9 EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F 14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8 BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2 9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5 6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A 6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116 4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C 9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780 42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE 7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024 1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D 4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540 CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4 D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81 CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1 0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9 92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0 57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4 5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4 57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158 8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0 C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3 7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7 B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674 EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521 D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9 DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074 F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0 56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8 46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40 52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA 19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D 465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02 0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE 078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339 F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6525 EE62456392E5DCAD0A0157A4A033E440AA014D5682606312F72248E13C43EC3F BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9 50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985 328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD 50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F3693CB8D1F4 7E3376495E6CDA3BD280DEA744D382D720935D605E1E2464A31B86E831A1DB1B BA9185DC43D32993D3B5900F9D5B45EE9D2C607172A670530780EEA08AECBBF7 5F59F645CF7A86ED8CFFAAAE50BEC460C07B11BEAB82765FD18D152AD476B7B6 2D08A8C7B5D8F7B6400C8435E6F08CCDE4234D981D056E7F1B361F478759FFEA 468FDA9D4EE5B8BF0B83506B39C1FD36B16D14D5005202EEA3D9BF656BA60548 A94BAE6159A75BAA549ECB9D5272C475CFF6BC373C60723049295392D4BCA477 3FF6270B7658362D0014743F1686ECB611912E6B82670BCBA93832C4EC9CDD22 BB2FD9FF321840A882A1E2BE9B354E69C9F4C6210564C02DBD96D4BC181B4876 49818380D9DD9424E30DA3E8E3BE7682CE0CDF6CB3F7554ACDAE1812AD3B8AAF F0990BA00B058A1C5CC83A60491B7875821799B231BD9BF1D568ACFAE9E5FE2A 7558D3820A67A6158EA037FDBE8A6EADD8C934380101327B8F1736D996F9699D D64AF938C999C6C93C9DDC7A8F4497FE81DBB787F24EA08ACF82B3C7620088E1 8002FC529C8FAF40A519878DCB79EB5C7C34DD5D6F911D9DA790DAB33E7A8968 A266E95AA808AEC8FD854D1326778821DAAD03ADC0863C83E5D0FE70ABB35619 AB31554DED6142E2E1E26481377AE95C9F32D0EA3DE07F78C6A30FEB98B15F69 296FC94E6DAB5829F1B59672C6A87EE4E2CD3F0D9894D6DC8D7A514B6BABF018 B199CC3A4478821649A7389ED46DBB9AFB7D4FF7696F8DB586830D7F74F0FABD 4BB32F787DFF04CE1E7349704FB5D3154D1BE3CEA0B476C2B787C6E534061EA3 E28F7D8F65EB1FBD8177AA013A6FFC03BAE514112214F67C7957583FA78FA805 29C0AD1C6FF9750CA24D3505C889502833CB71EEAC21B8F2F4D3415372E0FD82 33A937D50F4BC55D381E2E2C831D2CBE4F960978BF7041FBB69C6C9C9246F8DF FA2D5C5875200AE8F9BE1C44F839F446C23E630B74B823FFFC88DC30B931769A 3D5D444376B7138972BE07E5D8215B79288401B0E9E76831250304635714B64B 2BAFC31E2583F26B15B38400125BE793931E7887175D98A1CE1505AD21BD08BA 16BFACB350DB1BB37E647D7A00A48130CA4F7B6FC5CA17FBA73F7737366E906B AA3335A2E51D65DFC79B1D87F109E9CF3F420408BFFC2C399CA6844A3C5D50C2 2B3673FD3A796F654D2624FE5B1E02C1720B91A00B4998F825D9C1EB29885A11 D100A98620A7C186BFAEEC214F0E63A21A28E076D0CFC7DF62A016A21AF198C7 28E5C374A93D0683E91F06858358E1AEFCCAAAF2CDBC382B1C999D489D06AB82 60D4C548B9AA7B011F0382324737A74EF18AE7D5402DB1B8FB15AC162E6E1D2D 371BB20E1F78C962F032B7647A301F771D496B14B11DD63965897BEA60DF1B75 EAED63791A62BA912A8ED5EFD66340D07FD2DD8A9EAA1A98957F8D4B9F0C7142 024FF2918E971B73F5BECDC098C7D011335077F059697C9429CA2E13B03886CA 5D07C7178C2368B4DBA1BE17A074A1565A9DFDEB90F96163829C4F2BE8D537D4 606E7CF1BB667190AEE95B4D68422B7EB84B054D41F6677D840ADA7BED269A8E 8ECEFA88484CDFD6F999D9F51F4431057929706105172AE2635764B326446A07 1BCB5A2277441E0C0C8A6CEDD2D886D794D3495F7CE828E1E9F65C3CB47C2634 1E3BA769EA7DD098296E5CC981916608DC33279BDF53510C8BBA06A0A0E9203C EA569B24DB5EC1DA6254156276944ECB2338CC5679558DFF053863B3E6FDCC2C FAA0D336E9ECA4236917455D8DFA46EAE6ABE8C942E087ADD33E3CE49C2A8C5E 9E4BF0A357D1B9DAD6B2C01D64D65A99EC728DADC5DA83FC279CD60A08971941 638CE3A7E1A298FB9832804EB4752758EE1ED81FA96B60A6AA1004D79AEE456F C3AF0687AD5AA5062DF7F0C8FE7AB78DC6122BD2894DBC59B4126A0D85F34C8D A748048087E7D9E12CF55AA2786E595EF5BEEABD86563204CFD5B1FCE181B2D0 5410E3836E394D0843984362F65D4A55D26C805E15EBF488AEACA766DB081C3E 51267E8BC8B7E4373183CC054B68A4839F842DB22341130D4A1D312DB573060A 7E73FCF514617C3D486651D2C8075E02331EFF65A2CE8B9AB7E35CD969550C2A 89DCE554802F08D5C6163A09E669B7F5C6754138D778CBC5458F40B4B51C9A93 5DD23BEDF12182BD5F1E42B2BFE76F421FD8128DA78F195038907F9EB52268A8 324B1A134148226CD0B235B8A6DBAA8508A7209720E892B910056D55AD5797D4 26ADBC7FC9E6A41F2EFA145DE8707D8AB76970B46D2F2CA4CE11DFB46B9D156A E75210C6F9A2B31DFFB3670CA8E52F322AAD31EB71D3E0C99CA791797650E5F5 FE5EDC86B5B19433B9363A388FBD4C8ECDBDD8281A81AC935371FEAA2B841C98 3E54FCA6C6445C89374981ADF8A974F5D5CACE8E158AAE572AFB2D282E73B1F6 C7150271CDE9FA5E5BB94244F04B0CB671EB2391BB35EC2FFBFC522237F54168 2A4AD8B48C84C4FEAA2602AF9483A1A07570F8E84434F1FD3942A13D3A30C1CA BD7901D49659C85ABFC78124215386C475AA0E229E98A9A2A47E32B46F09AAAD 6C8F0D5FE2E4D4D4BB3B3C3B23EDDAED65004BD410BA829EFFC414DE349F8852 75D4C9567FC887F173EA3E5AB863903C728D65DEAF592F400C803317FF9859E3 1BCB658A0458AA355CE3671C35047760ECFE8AC3A01C3B975F01A02CA21E4CF6 697A9B828DF3FD28BDD625D8502133E85586A0F66386AD428C1E65AF78A65106 188721680B04E7EB756C564859E4F8E16B9DE6B7231F8F8AEC8064CDD8C923AF 7B0888ACFC86AD6E03D83A37C52DFD5BAC714A09727B53ABA05461DA406D894B 81B4B43D3F737939EBB7CEF3C4CA965705411B1EFA1FB6385A6556913A6D32F0 3CDFDC04F88F214763B7E989D288C6B8861504CF5E8A6C67D16FAEE5E6962F6E 0935372016194115F205519805A8FE8EE76676EA3CC75CEF7C7326810BD3BE34 2EC114C3BD2508ABA9206401315D75C4AB6401E9AF3AABA580E47776C6A7D7AA B576D209AF4EF84F37608B2CE84D98008988331C5DEA082E8523E06A7BB59004 CB8C7F4F39B4E83C926CC519163C17FE4CF47F1B66CB444842F494B5C8C1A386 2DD05BED6BF59227A5757410F63CD8BB77AD0AB848E4B8FC85186E222208740C 09B0E47BCCBAC26EDCB9029727EB96521F17A7B32E719001E59C483237D8B9BD 6695799A0C3B80ED9C7D64DC153CBBCEFC22B4B25524BF5B301431F192BC6933 A6DA377691670958B04AA1F7491379CB60C87F3110CF2BEDE95D6611C2A9604E 083B721D51F513E47499871C0E3E504E8EE620CD2E0F450E3035CBCA94242BCB E42CB0E8408A3CCC5575C261F2325EAA2B06D91A65AEC162268D751CBBE9D5DB 469592065418BAFB50E658E286933DC0EDFB9E9F7D82AF9851E71AE9DC4A9DD0 8E01F2533F5C8F83DE9C0D0A49DFC375BA4F32C2BCA5774B702066CAE2647B9F AB7541FEC25269D28A7AB4F1F60F3EEEB5D2EE23408BCC84AE471EB6540A5438 DA807B936F6C27FDC536D2D8471EBE9967B9133A1A5641BE80E64632E61E5E8A 7700465D087E89BFD1C6197B8BA8A41CF2159A0817B5F95351E02E654CAA7978 1FA6571CE47EDE08B7E66A2D0C8EB88AD6E4F287B9809EE5485A94EFFE85A73C 454BF8BAB70BA2000F2B56BB3E0255892C3E4480C147CA11D4C3AB71744BC536 CD21B6DC302B5895BCA9E72285744E93E85D33A86688758A060304E3EF024281 590A765C943980884EAC5298497E7D2460C55EE1BD234C407FC63B9B3029C018 6C86BBBCA5BDCD4300359A40D1281A0211B09B2DF2941EA893F5DB95BDFDD018 6D674A37A25F63722AD62597314CABEC1F3A2460F51E00451D3095DAE1071ABB 17A8DB8BA0E224D420D4A0EFF9EA17FFC7801D36BABADACC27A0AF1879C56628 573059FD22294243357928DB4A835F02B3807067DC963CDE81CF4F69669421B4 88A159B3502CA9619F5B30CD992F3F94EF3868CC695F52C5E0619E88A750D6F4 90DF0CD32D6642A3D19549C733B89391041D0FC126AADC04D882188D9769CAB5 21BCEB131BC5283CE6E9E6F650246B1D59A7A559EB45AADD9A669FC39EDE6CAD FCA20CFE0922C8730D56962F4AD00DDDEE28B1A7C2FA02CC7C59932AC31BD59F E0C837740EA82EE6C804114DE18CA35D8EBDE3F0C16565C2F51A14083F5CDDED C5B7796F9E6717A6A3E963F3DCF7E76DD7F896716193C975F4EA5CC73F6E8C95 C987260A3653AA099EAE36068B7FD793154050D9868D9D30F4E4603AEF7B591E DFD9F478EB30D16AD0496965F5702DCA4BF33541778EA2FAB83C25313F8E694B 43FAD86D47D5E84B51309B3E7991B29E9922E80A34AA1A5B895765ACE2329F92 8A04E9A68A0D9C008EA9E52A114B3F09144C30A00A6E010BEDECB7B955AD1B06 467F156EF79E4AEE257AC357EE49724730D9DE4942E84ECBBFEC6CC7C85CA2B4 3BAE1CBA5ECFEACAA7ADFA4508F1DB7E6C37405439138ED4BF236C1589A319CD 3A5DD32D848C22F07732BCE84FD15F86AF8373AAC85252A8F8EB7F3915B52558 EF02270FFE20521F0347386B3A253A69D9510900F7052A95DE26B29D48D662A9 20A437B9944E0AB22AB623E7C766A752D89A57AE7BA6A64FD96FA05A5FDE6C8E C6084C44FF6732B5B95A844FFBE2BBB234A3A247D4D89B0FECCA87C986912A90 4791231605EE8EFAA7BC7F2FA5551991706DD4A677639A69EC231CEE3B0B05DE AD7C4A221B7B74349DEF428680366F1947D0103D5E4D72AF8579FF824DF89949 6904BD33856ED29B9AB43113DB038902A9DFB2DF3036B99E5508156522E76539 440A83884F8C08F8D8449DE3EBF2E6A775090536040BCB299FDCB7E9AB6AE453 3AD36E109C46221C82265DFA576029157FB1EB3236F1A84FCA1B9B68EA2AE583 6BCFC2D127B1A169A7392AC1AC251A14C32D643D21C5756BB6E39AD478160069 A11B985D9F69B800D339BB0242A9A7199E996B02467F6A1F220A8FC245BF2F45 5AED4D104C5513D3206D57C6DCD93B9428F82CD9938EF6468A165B5A53CF556A 68E702C0A9796DDFC79DFAEB0ED0267BD57D099D407AF32F8F84EECC9C84C57E C34339DD87991056EA0246914D3E2096517B7C0CD1F674CEE593B92129F0BEBC 2ED3DBAF4AA2EC0217DDA3A7265148B433CDBFF63A68C4A33BA2780E99BF8744 D3ECA386BA3872EDA1B99A6191EAA8FE477301A84DDFF5BCA00551286CF62477 10EDF4D58FB980707E202C9C337663C9B16F9283D36D540C75DDCFBD525473BB 027BBA7FD75E952C2ED012B5455FFE95DA7E04C20F8A7D5C11813646516968E4 36259B6A91966E87664978BEA76C2B2E093B2A65591D0EF3D501D91FE135C2BE E97A446B0586BE37201363A10C2F73026DDF0F0B6FCB331272BE349027410D4D 958EC50B66EB7A45A1E818B67ED9A5DCC638D66164772ECEE06A80765C0B259D 1B01A13FA9208182644F5853A8B8C3EBFF7F25C575761E9A49C5275E66B16FC6 625D7E73A657F9B23EF1CECED93FEE2DC83EEF7D695D76D19BA87F83642F6676 C460692CD64AA6FB768DA6008FC1C79E22055261A9A62DD1950F4899A7F6A2E9 21D800038C30183019E084C951394B9F6AA87646410623B996B310E86858BE3E 8C6DA85FEA3D6BCF62D2C3B154104E7CB5FDD42B54F52F8DBBC12087570F4C6E 8173A04835CEA36D2280C5C42B880A498E30C7A77940F28397DD279907693979 077CA5D28515A04B4EFAC1F0C948D69FF108320BF3B5C3C7D642AA0122A49ABA 735B8D950535460E0B2C17475404D8E85DDA4BB68E888250500363648828A193 AEBA46DF8C644FF81A998C5A7E4F9F9435C4F202C3DAF498484A012D4088C4D3 AA9E813A9161BE6F9844167AEB52F29013BFFF51928E5DB7B48BD20D86F317AD 63EDEC755F5A85B2B07C5B0E0A1B7A006D547744462AB0DDDFA9BC20C95DC57A 61D44CB4A45558C68E36DD3F680605C9987B6B6959DE24DD65C874E46D5AE7B0 C54608ACA7D5C7A88FFA06D9F6366E623F036EAF7A9914B0B549747AD58CC031 97036EA1D54D01A736BD6CD796600E5884E90DB6BC5E2CECD68B995D06B26FC5 2B6EBCE4279DA0E33317071FA1801279FB48563890C888BF6F2C1057F9728A95 59D07684FD8997DC446EB635E9A5171C14E2A357C00C30886EF1DFFD229A82B6 42912D02E3AF236F5C773456BDE13F60E8C674B21BD59D4E6444371E28956C23 FCB55999382C3347777CA0CE8BC002CB3DAABC58D52FE542A115FDD96D19061E 1A1DDD098498C9A8E713AFCAF355D2765DAE775FE6F9EA4DE42A066DEE306432 065E7DC31F144697EBD270671A77E6096C0E191C96449F7E94419C752B920EC3 034686DABF9FE674DB5E0744D44A82DE6B3933193F2E91D7A74BD17CA9FCA7AE CF9E5650355DA885806A24A9993F3041038DBB0DA23D74F12B86A329DFAB87CE C06B3F1C7A0D84DEBB870E64E15E251253E82ACEE05186D3ACC88E838F276B99 0729AC02CE325EDFA5BC3F5DA079E55CA302824AD2DA70964AEE86504BBADCAC 44B9244CC456CBEA44517185285515DF5AE0BDD7D98AC8928EAACE6AAE7D93AC E256992BD972DD6E33EF98DE9D9EB30B6D0569DB0B0BB23A1D0F9A6AC788F6AF AF81260D25B767AF16D5F060960E11146384A241CC05185408FE265CFA941DA6 86AC510021788D2767FF5B384A17E60EF2A664207D6344302CA491D7D292D7C5 A6DF93AF2ACDAC6970A16A5D3C78991931163509561A0CF10E7375F7E91F331F B84E8405E9A1881DD4103B575E80F36F7203522282CB5E899DDC42C781963830 BA1051F49DAF440F28847188237492149C74E4A99C3323635BC051B8000986D4 1629B1B7038C98D182481E182D4CA4F1554902D6D88ADEE755E9155861C0D772 CB414808198E4686B722786911914585F81D84501B40684E279C5E6B0B0C2FCA F3538806C4A410EA894CEC8218DE6D2489C6239BA36233871B0F449B4AE9DDC7 F00502EC6E7247BA3A829795C9351B50D312455F1486DECC64D2F159B0003FED E201B29443F8127878BDD436CF7873F22B3FD597EB81F1D630811BE93A51D340 FAB3D607EFF2A65A74E78C792896CCEA1C2F1C36D43F1950453C79A9F0767B08 DA6247B44B703157FDDE2F431089FAA9AF23C786737E921D76BAA2D68C3BC8DB DED8E756624970C823E97C598DEC658E28AE00CB901213CBA0110E625AF40618 D9EA9369F124D089C2CAC832A145474AE476AD16BA5BA3FD9C28122229C3380F AFA46693D5E9A6254C055DAF47FE051751FE7F9284EF39A36C5D25FE6FACB838 17F86520B8F143F8A7DE0615FFE77078603F5CD60DD0DDA9B84F44CA3BDBF2EA 10F6CF79CA3E66EEF95C8E8DF98951933358360BE4A9CA23EDB5F5CD794974F7 1A6708F418D34E6BE5BE645C266229A960C947877EA14415CEA2B238C8191387 100FC1D6A879B129AD2CF7D50EA7FB9E8BF2C80E6609809A0E8CE2A70F2DC54F 3F958E45E63AAF577AC7023F097A77C8412A48A3E608B36F96C39AD6067C60D1 CC7A2E00BEAA799FD75F1F694928003FEB29A8E6EE075C57C789781D3E983115 68AC3B16695D5FF9E2416277288367B040DC47D40D5EE565ED73DC18D23B8EC4 DEC6790571546F0ABCD004B3A6C2360D7BECAD494888E737FD41C0FF1D277891 7DAC83316800F786A16959022C9729ABA334E45E077A69D02EA82FA23086DDC5 BD96F41FE176A7F491EB87181FE64F647980DBA6F210F3260CEAB4E076918F99 D8246512F1BAD74D3C15EC69ED19346B60E59D8A9DC26D00B47741F103DCAE31 A2CB69D1BF659C091044AE0E2796F13C9FB5CEDC3527F90D035EF785A0655296 0C979C70AF9637D7C6E3DDAB3A9E17594FAC3DEA75 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.0: CMR10 003.002 %%Title: CMR10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup /UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR10 def /FontBBox {-40 -250 1009 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 34 /quotedblright put dup 36 /dollar put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 64 /at put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /endash put dup 124 /emdash put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A 2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E 3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B 03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A 8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E 94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C 8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A 64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B 07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC 1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A 5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE 0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D 38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C 0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D 4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F 3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE 15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF 7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA 4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B 3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED 49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B 8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B 5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC 17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D 364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F 7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F 26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD 8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A 65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A 5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C 9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B 72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB 3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF 2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF 9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A 2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED 6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B 7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A 8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC 41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F 4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF 9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E 61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6 652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA 07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11 6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2 BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77 2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84 246AB18279A2B24E5B50A2FF6337B7B1039FFDD4B00ED3667B5F2F7BC2786D2F 525A0E82234B30711AA835EAEAC2E404915FC7EC0081B194765032708B5E11CE EF68682FBA16ECD75C6A6CAF0F577583B72C77BF328E68308B929229A0930D9C 61CEFDC57E376B63ACB4F3DB9B5C602C248B4CA233E2C25E16314CC878BC1B88 6C0706423F71514CC2DBF0D259D87DF704CB718A866DBAAE005180435034AF3D 5EFA02237755986AC73CDEB3B4766710B762312D5F48C59537B158DCEC084C96 19F1F37CD1CFB61C63F6D05F59B2E47137A433DEAA34823395727B67CBC15B6A 857627BBD49BE34F5C7B2EA6C0ADEC83FD5E10907355E926ADFAA74C6CBBFB41 1E37968BC3BD7F665AFE2CF6740125D751CA66148781310C76FD92731C0513A2 0ED792B34207ACE82F3E84425756F6205E70E1BDE989DA786C6234FB98DB8195 737FFB8086D05B4D5C88D80B7DCE555AB3882DA305ED26351BD26ADDA377EAB5 0618D08F7EDFE61938ED5CF78A4BE43408C7C2889C8E81CE04A4C20BDDF31A5D 31BA15A2BE1CFE0AB51E539CE09DFE33808277D947D083C066478F23A4D524A0 D89553E24ADE78EAEB4ACFD51EA3D2E1D5C84024D893F050DAE5314C91EFD93C 91D81F3591168B4EE3B01ED80CDDDAE0FBAB3936EEF02462A6A2895E22D24FDC F93DA61C36998E2297B512FAB1FD39409175426A8A7A56EEA4FA8B0D525E849E 27AB6622A3BE999A30A415B7C8A317D3802BC0B8FA6F89712D9F38D9366BC724 8060287F1B859F13CF627ADBC25002D1610DBCEB93C866520FD018715FCA7ECC 853869B7F55FD5649526F9355BBEFB83E9DA1E05406F8E32C1E112BB9207637E 8B976EC8B51F0D45F717C6BF4BD2B352FD491822DDC1FD074A4DAEC4AD128A62 475A39455847C265210B5B4CC476930162CEE809E3E4DC76250CDBE461FEC4C0 0C40D656D905D6AFB4390B62DD21887206733520E4C95FD857BF38350B03F2AA BD0AD9A87F485E0DB510F8216107EB7B31F81CF5DE76386D475A4CA18133BD84 74E1CC1A9F2BB4013E570EF03C0F93AFF4095EED8F861BA5DB1D28EBEFBBBA0A AD9FA3BCA136A0EACE7D66B63728374A3A5A198D2348E8FB33DCF83C12C77A43 01C57D222B4FD5C3A9B8BBBFAB1A04BE0C1DB269D7C7DFDDF849C849F5592390 32023ADE6B8F65BC17C850FFE3F7154D6ABD89B1EED4ADF354A071B0DF8B22E6 CC94F1660E4C0F9E6E22EB77ED0EE9E3E10459B9AA355E912CE927A429B02152 56CFF25F22E753393188F7B79B49C0F44512626F2BE1339F28FEABCA02052072 2A4B1FDF77C3C092EA151A6F3762571629775247A6AC65DEFBCBC464A5EB0BB4 F2C8AE029BD1172B430088B5786E7CA468E96E826FAB1D8A48A3700F8EF65B63 C6F0EDE8519C256C46808B033DC9FAB61B1D49C8AE59C69176AF3AC875F86A64 6F149241EF5610992222B79B859135D0DA31C438D26A3C8CF43B1D23ED27C852 E8668043F8279A423942A5070D136425ACABEE43E4A45B846F4E7F7DB374E0E3 D066CBF83AC321D26021738105BCED4081EE6AA264737F6862385FF9F3691197 1D924EC2D0DC8019350CD7ECBE9814BD19184BACC9DA9A3A433F950E8B3400C9 84EA3D3DCF2CF050DC3435E1294136E6998104B897A5ED4709B6DC996527A8E1 AAB1B3DA5285EB8AEE64A2D47D29F09004DC142553CE14262D2AE3774A65EB9D 4782B048008979779F56C8D8BAB280B043B49F5AC33462CC5A1157DE60AB3347 831ACEE9CBC3B88AF70F6AFA0C191867F2DF1CA821C6596552C7066932979570 ECDC82CC1A565E4DDC16373B2B976B99BA5F0B92E0FDFD5C0D7DE2197E5C91C7 9EBD346C4643295F769C4B2C15D2429FADBAE9F8DF0B80063F9A3B214535951F A61DDC0F82F21CD0C6E779EBDDF5F660E8262CD10AA422586EED7BA629AA87DE 796AF15A95E1E579AF686729C69646AFA2DF78BC053A65AE1FF65945FBA879B4 A21449B2F252C9601A3E54D1247C5B102D138C0D2CF15616A3E3ED3802608BE5 4BD40194D3526B2F54E7F73D3C0DD86A64D1EAA8A23EA4719AE3E9694C8ECCAE 5CA73829CEE0B8F18CC386797D2A696F3666950E1E9804B899AFDB003C38EDB7 AA93BB2FA9F447DC37AAABB9140A382AD6E69933724EDC6375C6305BCCFD126A 1E962DD9769EFAEA41D4F64FF7818DFFE7ED253836BA51AF3554AF92E3AC3145 990C8FB0867DE7CA55C54D3CE900AD4492B2D3B50907E6B3DE62FC41CBE8C737 760EE51E5C6D9F1CC15CFF852770A3991F86CDD3C188F08FF2AA1CF66D3ED8A4 96C04CD3BC8E97C820FF51DBAC94109C9ACA1C8DEE7E6D43B55A3F3ACADBA997 39FDD65E250335E05CDD9563F70AF53CE842BD51BF75777F269D3895E82A5F20 CFCD667AB094E7DDE057203E2634DCB355054F9DD8A2DD1EF927B0154E7603E1 76D2167B8CF3794CC8977E665AAE5D703AFB18A9C1B94B2EAC6162C36681AF82 E3D62B671C8C274AA208813E57FC625E63296E325E2C31ED632C3136F0919FB6 A34D452892690811A376BF8342F01CACB948360AD003609F3509EE55639B904E CF801A157CA626EC056A683D84AC9D95E327411C7646269A27E297D0C1616947 BCA4D4E4C32BF7A49FBB7ADE2766785B6939FB94029B2880BAC407F736E15B3D 6C2416C48002740A4E6663380089C45FEBC743CD82E6891224A561C003D1F65B B01AECDE888B9DA271C80796B4693072DD1BF68182687CF10C1B4F0FE15EBC6A 695647F5B0C1D1B57FAD61FB1E348C8BBD3B7031A0DC7F7DB374E0E3D066C91A C339E16323C7E4428D2EE11C1079BA8DDD66CC775FE43E1C7D9A454DA6434341 2AD0E5836244D8F9B99F349B12BB4EC608FD760951981D9D7D67FBA77BA1637A 2C1D282B90601F9493B789F09B70B52F2EF2825DED6AFC88E7BF74241D7DEDFD CE064578CE287B1AFB246DA586223BB4D80AB9A542D62A2CC807FFFFC7383921 09C105D198B7D05743D1779154CFF12DC90FC2DDAE7318A9065A81A757C2255E 5832AE7DC10658AE2B5647CB5CD00E4C86AC8DE6E61B7C251F1F52A905F45745 03F255C15ADF31815753145F3F9F1A71382A2996AD2955DD8B1A35CFB2ED77A4 04F9DF20CA177A8A0C4863CA54B6B646828364824C7D41C3B93E473AEE9243F0 A89C4DF01C4322AF90578A9A290C1AB64B77EAA019B739C465BDA098161F8256 9CB8746FDA4FBD95600E6C1AA356F3A2E5DF49312C7AC27D9204EEBDF1A271A3 AACED2042AFB7CBEA4BBBBDB159784008721738BDC79B89E7F5226092A0FEF60 DC87CE9EFC97DA5698D5B4BFEB8F379BD02D7F1A024EF4D10D85AA4E8A0E38EA 1974B3FF78F01CAE5274C223DF459A776B4B31492C4D6F555DAC9A6DE72D42F7 7C28B735E62DA5413F00525CD590107C9D39B41E36C19D316C38A8F29E2D6E5C BA9F47D561E741B96947C368084A78375398EDD47BCA95DA3913705D4DE85882 61BD9681B2FC75CAD1888311CA11322DFCDDC15804BD0C789D1D29562CBA2001 A7B127F68F2914EEB96FBA5169B7ED30FCFA1023FACAA27B9AA8DC42C2C8BBC0 B9AE6327E705B50995BA6ED0B538A693C74CCB6C250F2E2080660A2634D67D1C 2D928502D4D5D5C9C68C0A289DF434CC3B75118690B10738560610DD15BFC537 55B548B55DFE2D08B3682AEA2E22CF0CC35C26E8322378374BA80FF2185C146C 3B2548A38A09796D087F33932C5ED4D513A1C8AB31058AC27B6BF81522692A15 12DEA25281CE4DDC009ECA8ECC714D2066C9BAD6DD7D4244A3C3B1586B501DC0 4A43DF7A21C7DE55DC385B2EA52E96A8182486574857DBA1C7DD7BE38C7F6605 8EB798D6FE20324315A736793F0C6BEE522AD3E582E965ACC07C1F78C784982D BC451B029ED37E2F8492A9770813DF2B1B539C5AECCF93BCCF128F3455C30B45 D7FBEDCC43893291BD3270368500D3BE66EFE9702411375EFE3E10F0AD8E5906 3A70BB8298517DE21FCEF75496E0782BDC1E924E1C6F28D619F5047592830AC5 E06EFC6525E06B7607D65B2927946E73FE9C8CAE65FF1D9E321779E94CDE9085 4C7BAA86BBA2C4A53F0DC10ED188DE1574088A2141DE6FF48450144607B4C1DA C8EDC64EF6246E40CC20CDE7A22F892629475D4DA16DC62C42462393779609F1 B479EFC7EA8C20CDE04DD0F6B6175E997D2ADF32CCC0D351B3D4A5F8E0274D1A 3EEE83F04EB815896C3C727D60E3B85E655186F7A7BB423D1A7CD19296DAA015 204FCF401E9A56F64C697497C61662AA7F4097C0721822BEDD824426324A70BC EE6757B6DD103C370796839A4E76C039B9B5B316FA8F6565B7CDDE544D0991E0 302D896C0885A3542B3B7216F6156BF5554DA7E0129935C31A2154C7110E6061 26B6C1102DFA3512AD1ADB0720992481EA7EFCF4DFC6FFC2605FCC550AE5ADDC E021A7C84541C48A0856E1F2BDB47560AEF2ED181B2F9E9D1B466FD9EABA1D02 8F0D2989D62E03727346FBB96694AA60DB90075A1E4671888FAAC0F5CFCA3FA2 55E024E0A3565639CBD91D4798A4735506E6A03C7A805C5AA651DFD7BFC5FC1E D85DBF025D98281323C7EB5A6AD56C22C139B13F4BB5346A5BFE8DA3DA8F9B40 7ACEF81F3B6D2915E16B56BAD8F23C2B4685B19BE4DE5E0DCA120EB161E620DE FC3691FA087DED6F4ECDBA980E7B3E30BB3383E0FBB3BBB70194162DAB70D516 659E682FEF8B291493F99D78494432E4D68A7212A4F363441C51E317A1C2F60D 2A8CA4321599EBF483D155D14C173AE29B7DFBAB79E26B963EE984CA5D467FE1 AAF9D1AAC02D00DE91D177DDDB891B6C515C8199F29C473CF4618655F70C53E4 CA3A87DADFAB36E523AE2D91B7B8A768679DB1C90077BE6E3D7A2C72B6449348 29F5FC9F6D2799DCB69845958006A46F7EF86830D372AEB56ADD69E33A096411 80D9271F61CA7A28B8073D6E194F6C9BE8E93479E8E64223CE98C31A011E4BD1 9A5746408154A365470CA46C5413C4D55B69328F13C9DA2D22EAD288E2993073 00F51CDE2C443A4ED60821065D493C5D0F2BA5816DD57E86CEB90046E66EED20 CF52F00A23FCC18279248872C297FBE6727A45B4EFF0199C9CE54A8FC5DC2EDC 75CF68CE217318DFDBA3896AA6805CA4F9BE4E7E3A3A2772CFD39365F192F884 13DF92FC39FCE3A1F9D9513BA7161088AEDDD4F8BDD9D414963BF54725802983 64B5306599724F40C2D146F9F9EB50B9C65A211F0E9992C4E2DC925C44BCF9DE A619A551090A28275303FF0D0ACA6B4D00354DD874E53B167BD81B58BA6AA4DF 3DD703EB95199BD02DA951336995D273A6B8A1345A76F043007017B077CA5127 2CFA3215CAB06F857B22C1E1DBD335629B037482372E6CA2EF5E176F66255509 80D0ECD3E933D029C567C4628D8938F576B16835EC112C3F3DC4AA74E8AC43FA 6FA6F42F618B958CC83980D86567FA17E7B821FEBA4888DA6C964F2A7F9E6CE5 04531D53DCD037FBA89A7F840DCE36E251D3896D4735394497035E96D3DA12A7 6AC5A61146701BDA722955BB8EE66E838CB128284158E9CCCB5DF51DA6036CD0 D4029141D01EBC90E0DDD8FB1C884D7243782F62FF196C942212E4D2F7C65788 E8B5C79962FA1941C3F0731D16403412C3FF79C08ACF03034169E676AA39F9ED 4BCE98694FB1A9EEFF44E40267921733AEF80C73743C20C99F49A7323EA27E15 6D5F2C3EC4F7896EC28E3630F66741B723A7860EA5FB584185D77ACF418B79DD 8C8E9B6DE87D17BBEDD558E350F4CE69488A995189CD56AF75677C31897C62CB 07BFA36265AE30FD06D55F59ADF2CDB21E7E13BC9E88EFEEF3F9ABFADFF2B6C8 5275F80D7D4BE9976DF0476D070B9625E7AFB99E6CA526FBCB61554B87F8B1BF 320F79BE2695E7DB5E6E2BA3276275C82A53BC3DDFF0F2979F8C4E5752D130C7 8C9F7CF16E436B823B1A2FD914700A263D3F3DE48BABC99FA90E0316AAB12D95 8C59195EF634E8B29F9CCA10677E46730E1AF19F046BC5239B7C1F430955F158 6E3F0BB2151E5D05C35F4C3E2205440C44B8EB2ABF0612EC6B413FC233126D16 55AAA85F5DDEC3C008C5B559CB9C37B78512FD9FC93A435B68871DDD1D5FFD3B C0045588F0CA5442D7984C1F782E109653AFE579756584D216275663B2B9890F EB3F11B17A58EE8F5A92410DE390807D2E03B522CD0B2DEBD381270710DDC6A7 9F1B8F8E669E65E1354D5ED7953EDF0AEC9119A162B2D1CF3039AD0EFA9DBBCA 9446EC4819D07FA893A019A38E2189F5DE84DB0E4DA2F0C169D25A636DB7D8DA 33BAB84A4331DDE5E29362F174D5618DAC5E1B830E0F464B7B8007A4283E48D8 95DD3F13982278B538767816C211AAF263F1D40DA68AEE2FC007CB4093E14DFB 042AF398DC5029B701DD13AB11473ABEE8EC65D76591C485681529863B61B321 3D9C04C6FC4FAFA0FBAE2252012201C55E0C03F532D68854124B117B2F350654 E000EC5844A178DE9709C32B751EECD46C0713B7989B1835F7F50F64A6147C9F F219283A82E3B86F6F6D29DC37B8A0C9FA4D4D41920C25D3DF33AD39ED08C289 856FEA05AAB6D69577B0D8A5476169ECB15CA63F670F8D1B9C2E820697278597 6BAC78708D8176B3B1576865D0280DC3588E8293A1CC7EF5FC59D9980BAA08EA B093970E06743EA33350BCAF0933D2B009740F9495D7B24B88F46271CF23AEF9 273E1F6F5F1F371508FE264100A16EB6F3F97A66D718166592239AC3009D8812 65A495A9DC01F527B189190A79DEBCFB7FDE92FF64C77BD545EADCCA35076238 C3000C2E27445209E8B4965B25D707B51AFB11B6D80B36FAC32657A2CBD51A82 8A159B3A433760AD4558221A09E94011B682EE29AB16E9234C0AA1834A5AEBDB 957108C46AEE9AE963716EE61BAF4BE54C1A2224A3DB7E3C30DF9D07D652AA43 1AB19D826F7DB18BCA8DD4806DEF031CF933406E38ECED77C7F1229C0A3CF129 AB12BAFD207C68737198A64B573B6A11F3F287A48C92FEEA8306D1DEC14A91E6 4CEB56C3EE69C5C36F68D96A88AF8B1289E41B3410BF2DF7C9A2BD5B9139121F 7AFD6E7DB302E9AC30AE901D4AFB90B05E614BCCAEC67E8F57CA0F4A0B780EBD 55D9239ED6F716F3CB0B3191AE1A4BDC6BCD82AFF7821C120A553E454D00B679 BDC33B347F2E9B4D15223A4C7AB0D321F277E0623550917980B5BBC0607AF56C F10C29146DBE2F6BF9FD8E4879F6FCF8199B446C25E4E65B6214FEA3EC34E4F7 8CBFE934045822A6C961620D2BB3A4B36825E4D8E5BEA28E55868D30B02BF507 F6FAABE950F17B4C4130D9252701F08014068E33A4F20C83CC54FD940C92318D CF76AE0F4522A50DE7C14352EB7C94F746A7F73942129D6BD12A8C843DA6CF89 A6E58575036DC8AED79C892E1AD7AA11EDBF43FA64D625556AEE04D3CD4DDA31 CCCEEE3E3153FCAB30BA65A3A34AECC7663D745DA62838BEDFEAF4F167B0BBA7 222BF55A9626B85DCAD9AAD5FC333A85950710749D55F7C12369941E8AB8DD41 FAD6502A069EA1490B953694860AF8AB930DD5EC009FDBCEFECEAFE298E33727 70ECC760BB8156DE8FC2F2B5A1E03B0F3FC8F7448AF02EEF97FE5A94BB0801AD E83DF738A4D5131E16CA198DEEAB023E253227DF06A26950327409A9722101E3 79D57BC5106B6EC703320192D7DEB89BEFD19000E2E6E43C10FE960551B81D78 50EFE679BE528666AE7CC2FD9826AA224A009C7387A542AADB9403C24F8AE183 3A40BA685BBA9F8DFB6717E1C247C52773DDBAD04D2EFC606C55E4EF7B292595 F03D82D3FFFACB5AB2BDE9406AB2354675CC29FD01D8A625FB22BAF3602A5C08 663A212E29617C2CFE55AD4E251A2F864AFC683984B4D72843B24D321EB85835 00719B26365E467D664A654C692476F0FC1BE27302FB3959D722C3613F846923 FED287F447F5DE22DBB6771FFF56E746DAA399DF493CDCF95B96CC809CEE835C F8D827B1B1F7EF28AB0D91F6224E5C6DA4CFE20F7ADEE7EB834CD7C54447F49F 9B353F9BCE262CACF2867E6F462CB21044202B554CD8C1EF87FB0A863A8CDDED 59D32030EFB62C81136175EB9874B7C627ED7E63AC77F78FBEF2D2E5C2149360 0C8C8278529A79E42FCD4B4551F2593E96F36D15CDB56CF8D6D65357CFA98663 600732BA9F1CE83E0D47647F02FE3EC8443E81B3A7B55E80F3216252AAD626C3 030A9E420221DA91E57CF1B3ECECB36FFD21EAD729CDB7B3C6F35168BEA82F36 E52D0CD46B0A3D962E8CC48B3F35C049FF18AF0E271BF7B03429FD90EA4C68BE 41014CE3A859D138B3D51F53790DE3E7F4BBFF2997FFCB2C189056091633A2A1 03E88A3CF49967B712991DCC769501523EAF0D70895A45DB09A40DB1DB221E79 A1869BFAEE115B3970D0696EE1EEA3F29AFFD16D6FEF99F6EEA625AAADE8EAF9 C23187CC5CD5A9CC9D0A3E76AC308694FA802DA1F900A1D324CB0E622F192647 FE0CDE1A22585CF4FACBBF456AE5AA5F01D255F4B9A4163891DA74E4364625FE 30EB70BFFD698B6B27BF55FACE80B4A55F8370FCD74FD0B29FF8B3EE6F4DE577 3F842ACD7F112C9AA9597AAAADC5C746AB7AF8B97B906B56B3607C72D988831B B5202C6F76BFA5DA8101971CABB1E24D305460305FF0C9C0BA75BF2FE7692F3D DA6971F3F63C81842428B93585E7C2413206969587A556B6E36AC4453394CA18 777FC5D838D4EBFFDEFA1BCDD4064964421E862699C2E2B4BCB800D22EBEAE14 A97744D1EBED19B62EA117EF78B59EDB5DF17647C34BFBD9FCAA296D9E3BEBB6 ED05FFFBE063EF811B18D104AE7B8B4C386164C9B5CF1EB30247AFD937CE04E7 6A35FF92CB0B8DD9239AD1DC8E8608AA924CAB7361D5F48192D24FB92B6D21EF 9D83CB3E13967E2250B32410B86EC6BF4722D31239891479B0C65DE3A5A43E0D A0192649B5F44902FB67DD68A9609B8FB578174D970CB01B9F86248DF15A769A 0B0EF0C116A96A4D2D0A9380137270CBED1CA8C19C486E22E13E1BCAAA65F157 E82A6AFA76530DAA8B27BD83ECAB41121AF2C764CCED122B94FEC74719D22D98 C6981745F42ABD6C0476776584BE443655ACA39F0BE0AAE445C96325F5A69D08 41AB9B0ABD19ED358BEEE6DB94724900250B795404243489FB69928CEA6126A8 2036010760904A7DC8F15D9B05DF3779D1C657FD5162B801996F1F7572BCE8B6 89DB7020F784D2F750BDCFCAF1E66E5D1CF8206D33D104AE44659298387CD149 4E2A992E1548A37C0587752D46EF35357BBCD8DDA9BBFB616898AA1BEAE18180 7AAABCDF3B9D51351EE5CDC490CC365FBCC2325076F696E9C731250A014F635A E0EE366E3515066E0735430AF23D407FC997EB489BECFDFBD65872788AF7E13A 5A216C115DDD2F8FAE684B0F17EC9B53EE00E5966BED1FD155F32B3744F02FC8 592F8C5B7044F0CD6C23BD26FA11C128CF92E1EAED0DECAE1B3CA64EB558A6F0 415DFCBFEC7339822CC12F95F0E151ECDCEDD36CCE14AD2D4F57C9932E2F9FA7 00FB8D7B2C97EE4BFC16F650D0FCFEB70DAB22318CB400BDBCFDB79529F11403 026348DEC4AB352296519895E23B3305A44887739E906DEF031B92A0F41A4411 09BDAECAD78E6A853C0A1973657BAC3A58A4EEDF99C0EBDD974EE2E9D2DE83A4 181A7E72C8CD49EF58369C674D6B7EFC24120A0F245523E85C6E91083F131CC0 B91CC5DB16712011C2AD2DDBF6D7AECF5BDC2E09ECBD88797912330CE1FAF21C D2754C8B16797C577A376B452E96DA49624F063653FDB04098EF11CF1EB5B602 DD7E66675AA3EC317152ABBD1FABC470A4841B347D80E6021D4E290512F91D53 6DBE98C25A17631B93544297FF7CA950B903494DA2F686857C118BE4F2D2F5B4 D63F931457D1507F13FAAF06881670C1F46A11339169B6E859D2F75F9401F5B1 0F6BBF066B6410C522D3647DF86FEB25C1ACB394F2EE034B6FBA1E1F0C166CAC 23AD89FD97B43C63867C86FD5609496B8B58F9E10CD24141A110530EC24ADE79 3A9CAF5E07793AC8B0F9E560649F589FB4312CF3B61FCFAF08B8B62C185A442E 5EA71733D96F429DA0E2343910D9FBB4225C1B6710721B89316B3F12E3A2E39B 4B139D9805B64E831BB2D4D1885094552900CB91275C8052B93B59730F1162B8 76DC1B604C73145C7B9CD5B8B352F3012D8FA03BE0C48998A45C9CE392047BEE 81E8FA2AF78903D4A55CC2F8CE39C3582FFA7C010D879967F28A1FE3D21416C7 30F381F99B01020FE3F35340A770629C16333805AE2830BECF5C40EECFCFE629 67FF0A3A9AF794C5FDD669A18FA5EB93244E6C54843B3868C28D66902429854C E3B70B242CF8652F910465050775B542AF7FE158DE22027F228C48F8D137E1EA E734DA62FC34B5CC44C9ACD3A078C7D4FCA262EE953EC784B134F40CFF645045 71B9E302A1B579793BCCD8ADD3FC027EC85A5770A26A1F71C545784E1998E396 A6E567E1F605A1E89826D328ECF772FB1902F0A05F08F3F7C1DE5A0B1BA02A99 0348A28AED186D63857976EC0B837EA34AE4D781CCB5B07F39C9E788DD15D549 BFA3984DD591CA27AD98FD841C57ACF08A0F62287531043EA497D6F48613133F BD84A9EA1F660F26660147B4C62EC20648FD4D079BCFEDCE8B96A32FAE2B53CE 62557A1C739805245755ABF416A368D238FA86EF6C904EA55516A25F4A8DC805 C9095D78D07E2F79A6C5FC0D4DE4F5A7B14C9809E1141C78705FD9B25A482E44 D994E5718640CC735DE0412DDE3DBD6BC724446933E83655AF78F08094D074D8 6890E72F22E5C1228E8D21444669C7BDF8FBE16454610FABF167A63B62C46673 6CB69B77FB6F0D144CF7B7968668069C819F7D4DEB00343F0AD05B99E8F40DA8 A3608556D5F823F4FE26B10C1A135161F7684FA93A64EC896097D65DAACC6830 EE3ED51E612B7D60C85D0C035BE59D78DAAAB868561015257361686D668FB635 6A4F1B01317B6A07BA91FA9DE649B378CF0C7A37E4BA8FBE74DF0C907DA0047D 2014ACB6F7DE1698A8E689E23355F9A56E5B36F0A5220D010DB6CC174A78BA9F FC79C6ADF5E5FE639264BFAAC91F253876AF829D4A6F59EBB89FA5B00EBB3049 78FAEAD988E030CC48D18FACB55D4683A5F4DCDEBD347C64CFF09E7AF1FAFAB3 750A2C59C2FE52A678AEF44E4D72836F7EFB4DEE537F3FCB1B5F2F46EF3835AD A4725EE1695F778527E6BFB0D9C1574822D31DFD5B47219954E006F5CE225B7D 6957FF7C3400031C01DD55BBE7CA2701D3D38E7B0ACE3F14B57876D9A66BD8B5 42DD5654030E04F002139350208DCA6D83BA9DE34F437E85D5BECDD5E26FCCEC 892C4AE075F7824261A87484135FD125C430448F2FD46C3C3C70B0AF9AC6C683 E22995E1A8BEA75475A817C1B399D6C5D673ABAC95BE3DD7837397C609303655 52442881BE93455BAE061A9A4BFD2824076AAE70418A52FCB61BDDE7B9EFB935 0DFDDB6160FEC9A4409A4A8BBDC5AEECCA8A4978BA93A63270F06D8D08137C8D 87D80FDEE637B74C9F26E0AAF1A42111D751877DF17302D3A09EADDB12B787F6 15FAB9D634DCF45FF7D84597813143C6AA252DD2585BE200F4C0F25C17EE82CD 564F0044838462C828EA8CDC0B4F7D995527A5425ED593FBADD183A1F488AB67 1E9AD1A1041E867D2B988F300D87ACA7F675DC85CFA8A478CF2B8C4F1571CB64 EE2A4F693BA8A7D6F7D0406A4157CA86BA4C64B285186AFAB6387B3D540CC02A 01900D447BDBB936BC0F94EC4EFA96DC2D09FA22440376C718DC6742D24128E4 581C8143652E5E07736BCC0A6E5A1C31A1B8E137A9914EA8A38EC38515582A2A 5F21B9814F1B95A3A231501353800B112149C71F5CFD2E3A55B6179442A55EF9 24834308DDB593652CB134C208A7F84A4E9FCF7D580FCE2AC4AADF08DB7A7EE7 86B8079082EC5A1FF3D45B561B69B9F56C2698EB54888531D945421ADDF26BB4 E4A5AD30D1DFEA597292757F308971BFDED158EC1A793462CFF812E6A809A388 24795AA06078601971152F7EDC2973374DCF2C2D3945CB839E8CB7702F6E435A 0E79F28BCDA3D3AA18B9B9C97673B75DF095B22D658C90D163F8DF0CA86214C0 3D165234B14E373B20F8913638FF228FEFEF111DD0F930968F17EFDD8B87C05E 0A3A895C202389DD7F5EA6855E2841E6DC01323992E8DD4516199CEF2EDD87C9 5C1C8F4085C9B85ACF85316E22EE715FA188632115F151BCEE512805990FF3AB D8F4927DE10EACD49B720FD17EB260CB9F2BE96D7B50EF189E5579166A7DF683 EDB55429F1A54AE9DDE34B4A9AA8DF685F8567967C263E2153458BF1E654E2FE C19BBBBE7409AF5DDFBF32F26D50EFDD0BB09A1D1106D9B963296034E7D6997F 9BD4C3478CCA3549D3086930C6F9DF60D1DC3ABA1A289982699ACD964112E30E A1C568A53D701642DB80E2B2C0B6084B29F6FB73B0A9FCCD3ABEBAD6B3D58FD4 1C5C45606AAF806333B354D19F58467B3C315D65B9A9109708966FB7F498A999 CB0C7DAAC86F9A0F1488D9235A07D6D524BC88C8C212D80143EFFF603406BE2C C3108EF1CEE6F6DCF9A3C3CED684800E0E186EE7435A20F54DF2CA4F5539A6C5 9A5907AEF0DB6AD436FCEF56C198768FAEAEC2D886DD94F7091C44621EED8DC3 5737DD96B7B2860DC4EF1E0A2B7A963CF707C2C29DF918B7D3066652D6CFE261 5D381B08F5711C594C03BC72875C384BC01556D907B0641DCE086EA20C621354 1A2FF32AE1EC09D3F39A11D0FF0A710F4F9E0E7507B6951F96F8FE1E1CA43FDD 34A511B7AE7D87FB7239CD88D1C0E203A6B9AE1AE673AE441352112FC8728874 D6585EDEED161FE8303725036402609F36A62E1EF8C3014C4B67A986C741B5FA 260A32768B2D1F7B23C4BFAE60AF5353AD6C300928427A5A6E942BA44A9BE95A E1D5EA5E14F4FE92129D28F01A3B61E49FC01FEC7367DA93FF88DE296A22D62C B464A027D7F151FCD84811B26FC115932A86F16EBB16EE974B39AAC5643E6EBA 5383F1B29C499B66C09FBE07663CF953FBDFF9AB4F50C2DB63498CB80444A58D 9A91332C23586D1735220BDE76CDE790E86C518C07DC1597ED533CFC62467BE0 9EC9C70EC2A095F634DB70D5D7DF3D45F66318FBF8FB8316538DDEB13136AFE4 84B5151453FC9400CF33D0DE81B429FA70449542CDEF957A23643B31ACC5D310 07BEEA3E2964B17FD1BD27A18D4240C1F445E3B0C177611963A32249F614E521 1C465B1870EDB7B3EA4B003F113776A8D9EBD060201A0EA68C0D1EAF6B414BAC D2CF83F811F5921C0BE37730D093F78B1B58F3E566690BAF966F573370B47AF9 575EB124495710B9DA2F16EB1E33BEF989B63DD525F57B134D15D083326329BC 64CCFC0688BFF7A8D56FC1A6A042A4C5BCA5FBB6CE393B990C33EDED14450F24 1BBC77354E1B4C88A4E7928890379BB6A3083E3E2D29EBA2125F993A97462F01 B8C47D06845FAEA3FB523C5CE5761050F4D7BE3C07EF80FC8A2D96FE16DA2F52 2B50F6518446BF64A0717824F7F8BE9E4734BD4737DB4B613E7E3ED9395672EF E7F61A887996E5B8B44C94EF7D5800D04353C739043E5BE9F2B93AEB49180390 BEA7B15653E02A52C70FFA11E3D6ADF017EECA77E97BA1D5DA509A251D585225 E7FBB89E38482514CCFAE1B3871B36ED6421014B9BC9854247ED67F962F8582B A4471805054B1A62A064E1CDB4CDE6CEADA8C63E5013C99E5F35611C23F93A17 5A39EAC64AC8CBB76B19F15C3E71AFE68FA93AD903E7D2C1CC094AEAADA2EA6C C639BFD4842A2B7C9ACE44433CC181EA2FF9BCDC47FEFFEC9CC0737B7088AF78 29557E8C1F7A825AB31A7E64522EA9F2F3983C1EB14048B4FA453FC04879FB27 A38584B80E4923D449D4C9171936934F8605FDA9905A5FD87CA1C44A31920C26 E1EDEB80B835D8E7A647AE842792BAD46DC5F4E277E534D7641AD2FA14FF177A 0802F81CDE37059B4568A8B06649D7950471FDA7056B675A90FC1FD4B8D380B7 6BE5958AD92772AEB05010F911CC8FE665F72CF3B8174F7558ED94A3297AE918 91512710D7F85D5892572B15A933E98E4498882A26EEB6FCFA55D90D48F4D84C 55E3D32F5F8CD1827A5B5A3DD8B8322EC61558D1BC1E0432D9396F508B5E2B21 4705FA448A68E087CB39A7A3A184A098EA095301A064638156CAF3A2AB163551 3FBA7DA70C080D6F90A2F0F2EC614ADBFDF2CC0FA7A2FD8359014F3189765B48 4EBF26C3B384108AF709CACE708076A951E1336FDB85F6D65CF93A5FCB00E81A AEFD1AC063CF370A5019183C85111E7C94F0B00E84E3B5A1A844FCB9FB350253 59CC1D705A644E174B3132B017E6CF0690FB041A3598E43C5A7379E74A68AF3C 91030D7E1AC1150B848BA3679B9FD4C389B1A5EED00B807798928A080FB8E2D3 9E942BA6DC13C68EA2AEB352854A3DE429010E542C59D89FE3B5F3A2FD4A7CC7 486ADFDC50AA172E0E199B31012D4D6F088082D695410566026F6A3E20F381F0 03B53A3B6478F821E351F8BD8EF78F793DE6AE2C326308AAD96BCF38D0429D2D 849E05706752C6407CBF8E174648D96EB30E797B7C8B4F95495D9B7D0EF1CA0B C228CABA268389ACF9581CD0F51DDB8CE99FD508AFC4A38DCF717734CC076A24 6B28248F8529207CA64F929329B012A25BB61AAC60215C6F1E736F9CA55E80E7 2E9DAAB650FBB96212005B08D389B6DC61EDF075B734DE09B98DF4129F9EC36E 6596E2AC6418DB0C32138AB85430005710C758D7448DF224734D2E3923259B0D FC6B7065C867CA4AA8199093264518584E1AA9FAAE36087116086A2E9AC10CF4 09D3EF67012D1593BB50C9BFC3B59C3600ED250D5C70251E978313933C3C9F59 891C46B03F7A7091E77C557E7053D3812D7D693CB6C7DA4E0F489B207738D7F3 3759FFEEC013B1691AF0C60798CAC322685D26060C9CE6EBF066D53F30F11D25 894358D31207551EB0AFAF3AE1D1B66A6675EBF44C467C6758594A4D01DB0912 EAC8754AE29E0B3C4D99AE6CF89BF5692934E7A07B0177F919FCCA9EBD323E15 374291E778B3FE8A8A6CB9A69858F3278D8419AEBADA50B248D2D8C96EB63884 0C27CB385767F01AD1AEAE9C6406EEBF21B2DFE26C759E2D955A74A28F06F0B9 45E678A9D7813522CAD3A0A91DA860A6C7EF9AEDF3423FDD5558F1CF976280D9 E85944B29D1050C2482B9D97A9357C0B3853F98BF7CE394C71A92FC724AD68AF 6A9918F688DD40C917FA4AB39C175B185896FDA430AA88A9ED2516E8EA77BA83 E45319F24D5E82DC9762FBA0B801B8D0E4F7DE641D4695A9F0A1212F53964508 5A9C4113B36A9605092435B16E6F765DD95A1DDBD7B8697C94A943623025C291 04B695920CF1B9C5554F9DAE95F05DF8B61B73A45FA4D65B8450CBD46BEB6AC9 8CEB6211F698E70F355770ABBEB1951B89FA09CD5E71138F93E2CF3285A28E2A F075019DB6E974A032F5137B07B6A4C63DCA29E3D60137399A43D7FDA58DBC9B 4EAC070EA82F1BF66D7FA3B06E721048AE9B31B7D5A3327AD85A866358D3AF40 F062B1372AEBCB11CA70420FD18657C8687EFDFDD545ECEAA2F2BE2F34A05AC7 7919093131B5849BEDBE80429648434A0302DAA9993A83316718E48CF96BCCFA F7A1D7E186DCF349C7070F7385E8AA028223DDBFF26F66CF215F61F28A6457DD 1DCE4EA972AF73F231900E0A524ECEBCEB05BC23C5B7407643F8AB7D23423C82 0A2534D9F582280D0D2445D3EBC42B471C2458E6FBABA52D938A0EC7876A2304 9D8B04ADCBA20D1101284D4858F97AC95D6DC0111D1573CAFAE8F6F8446C43F1 D3BC51596AD3C2FB6C69F2A9570795CACB459EDC78C52ADFB76E6784DA1B5FEB 3F305ADDE49ADABEB42C5C01EA61946012C921133742255494D32060EE4A2455 5BFDDC076F26692597EBDDEF9EC84E253A3B4219F3F13E6C94E3280E8D28BCA4 E076025C91CC07A384B9962CFE482B734D545E0CFF7B941FA601C10B3E9C2518 BAE689B889CD18AEB0220CCE3617E63906B7D8CFC26F95B5AE3564B4E9EA384D 3BDF74E8436805ABFAADD9CB40A59095F3FCE96C07DE973CA7958B01D74F5046 B942EDD853FEE099584E9D2E935C7745B7FF6BEA18DC184ECEF507D14276C680 E6F07604A1ACA225A52E1C45DC5864068A90B65B98F78357240FB76F991F9364 F00E4602A8701E1025B16B7F1A97F594B6FBD2A321B042DB35AA44F47D2D049B BF97DCB804CE4EE2EDA3C5D6BAFD1B214E35D23ED4F216961419152CC037D1B0 2CA38A5111946C23CFE641DA07FD378590CA88F7743CA51DC77923CA75B681D6 DC69B139588E6560692E351B2ACDAB8CC26A6341CFAFB2C3486DD98915BE765F 4CD20807C525A85B515C0C16621D90623EC943B55F0771FE3737866867A47060 CFAA4542902BE0677A53B77544E2CEFA3C04E2008598250F28688CAA37953C71 6C190F7D4D7C4C63BB198454EBF42AB7EF205BC46C94890A7F694DEB313157D3 53D9CC57F45C8B4B45205B34E3BC4E6E7ABB1637BF2FE53CBDA4DB86D96883DB 13C3E0DAC10A36BBCD0EB98943C82C3D4EC140BFADACE3CA5837657905013F19 5D656E299E99857911C105038B940013CF7120AD119DB6387FB82673C7425E41 3EBD4C898BB6C4CA79327C5C8224755C09F406E7ADC5312F268D28113245C5A4 1FD5187376C43B631A46606B5E4DD342EC3794ADB2668384C6074CD62C8B3FD3 0E250A6010DC25AB2D9C2130372A7ABA5D99A55FFD5C2BFB361B6641950273B3 DAEC41E29B5F4E4BE6C47B6F8B07BA114715715ED44A7EC9E5E02143E9158FEB D74AEC18677F3289490ED44AE41E5E644A88A2608259FD8289F70382ACF1FB65 DFFB6068CB49E42D2BD143E716B2552F79AA583492AD1B0101FD8BCEE7408A15 EC0F74F86AD1E5960B644CB98A0D7EF61BEB88CF986591C7CA593D4C335C2242 FA9BDEC9EF27F959874CB790433050010B76C5C4E8E52F6081FE12B43B68511A F8E44C320C77ADF8BE420B49D01A35B2196D311C54746A890E309014B28AAB43 5494C69A64116E35286FA70DEC52AAF6F01B279BF7C3EEC83C5F83A7E06B86C6 C87AAC3F48CA4A46497A678D42D7F6E5B75EE084986050C72D2AE7403918FA52 9448E84F0C13ED2E05C5046A86B785D6B28FC837CA0679AF787FC6B9E0BB6694 6D9E6D362C0E5D2286AE2C5108059A6F1062FE5BF325ED0AD064CF9ED457D201 920AD9DDC276D4AAE77F4FFFED8C3CDD938EF957C720CDB03ADC8D5802852EE0 3889A623D3CBFE97DEA0AFB94E3E8E4D46A3C58327FE6F23958DF08B80D5F764 08F1EFDF674493B0FDBEB2B19805DED353D9995ADC3DF804E574CAB0E954E3BA 9C76607F322D2155D8473107715EF96A06A85A765F594814198083CF841C120C E1DDF6EB226382EBEC5547CC40BFCF24DA3383BB8CBB1C4E5C71AA04A49A32DB B08E650951358951785012DD855EB6F7BE2606215B61715CDFA9E3B7F74AE31E 19814B61AD49AF25C42C298F52D4F4B1F0D72CA53CD511BF16D59F2E3F7FF3A3 0228445FA2267D52A1049CC43EAC74C474E19CD574DECCDAC37366BA1C533BF2 3590EB9E6E4E402D6B331BA57C25A9DE9CAA3551C2EA3B3B48D1193C811E94E6 477C451A23203C0F901D5DF77A2BC15A54D0289D7E1D5F051DCBB6F97A2C0007 64F1FDE12220479919B1AD7EDE462A28BDF5625FD11BCE29DC73B0F130D7B73E F1C956F0EB7D355530E80263FF95A3FD86C5BF5A8F9280A302EF55B50246177B FCBD3C8B4F29887FE682524ADED4B3EDBE4FE9C3174C072E24631D919E297DA9 785E4CB724A606B8E056E3C12081ABC5E3CA9DF754330539089AF63B85F05938 D871A58BC53C5ACA3A057302E0E5EC036145465AB04210B257753DFA9D75BE9D B57AAE25F11331C4E19B210B39ED8AC74C2A45640C7F914B56CA1D85DDD83ED5 40D1E4370D44FC03C5DE5384AEF8B63BAF7BC7FC32349CB6611FDCC82B91D2C4 BA111BEA7545081D250895C8E5BABE45DCE4FE11BA87E728E08FEB146281A44D 00012518E56AC86BCA87308C247A99C14559D383B85F045BD99EC6EC40C4D2F0 65701599595737E17FF4707E938D4163DC5C5DB95E2F4D4AD8E437F66A3C36A4 C792D1687679DE42FFAB0BC754E5B1E43508C21FBB1A3DC304485C415A686657 EA1A0E90C7322A364B8AE93425E044661F6556651D3F9873A102E87B0B68D8E5 D468CE2F02359FF20CCE5CF53A22D19250A7ECB6940A98CBF7C3E2A664D1861F 86EAACD43BCBBB0D888BAF4B5E90E90D32CA53BCD5660FC10866B9CA92E43DB4 569CEEAE4CFD211763AD75B885B9C65A8AC553E5CBB5F2C4496DFDDEF46C0115 0AE64EE489283932D13FC4DE2ABCA4795F3668C63416EB357062394DA0A826C1 7E6B05CEA77CC0CB3322700F3E1ABF1E6CCF7BAB83B6B4026F03F1BBAD0A10C5 5E8D9828C10AA29C5A2EA82730561D4019A0C6D131B433B9DD9BE471F66C15CA 384266E8C1714EA8585BF507366B7FC0F0F797F40CF4A613FD15F033F88BB3A9 9D5B2654E591B634D49253B2706A31E2F0B2A1C699D0890BC8FD4B25FCCFFF92 809336ADA46928D535ECB86D167A081FCF19AE7BC30E56225E040AD75FB5DE61 52C32A4649F2ECF10D3438E80A50F56FA3A43009C5C845838563EA25421030FA F79825592A51030E21F9BBC1536F33D2CBCFC1C22499C0F80503FCBE9BAF8BAD D35DF34D2875D4E6E83EDE725C829D4A53083484351BF341A8DF8004E20DEDAB 607D9328425085A8F3E757917EBB775ABB9EB9969093AA44B58E092975ED4966 5495E0E7E602F0D3194CD7672495CA11BFB1E80231258EFB746275FFEFCEB535 A718A12D58827F2EB225400C6881451A4BBFDD4B46114779926BD485EFC8DE44 D6DB332605AAA5A7FC1DE0B4C222E49A33C821426D8E368B931D0402AA1B839F 1C5FE1C77C329F8DAC88B72EED01779E9C18ECB4369240460980C264FFE5ED13 5897ABB3A748D0F855EB83796DBBC99917F6FE0C9CDF733AE4CF9A05CB96E88D B81C17897EA2B714F9B83342CA33D092C148EBFE2F5341CCF2CE1E4E1E5CF89C 5AFBD1B998C0806AA39D7BBF68DB42F013A8E1328F1F32542D5636ED8EEA525F 33F5E1204CAA6E8498CBA5F4B4C970F31F0E9D59ECA534D6B886BDE7B5617B46 D0B6E8796F51A4CB169C64A2D5A4D04E53B46373A7824E35CD6BFE1017F733E3 239A0B21E556C96D64CCA81665CEA5A1EFA5B91FEC17BB99DB9B16838A615890 F6A235A1FD3E7746681EED1A73D9C0BA3F5F229B7C4F8BCE672F8535A6332894 8C788FC18113BB20EB0C802995E333737D6EAAFDFFBEC04DA500B28E3B1B9CF9 8A74D155FB6560060F9E8CF4E1EBB3B47043CEC18BF2B764EA71A7F7FABB50FF DE301187D740865EC7CA01A58A315D9E31D38476FC8F20FBC23F3A6658001088 B9FD73F5164E3689210E6C88A83C1894AE8CDBB53E10EDA5C88839D7AFDC3910 66B88A12BABC981BA4099C05EB047042785ECB701932C9CC4F96E8F5A2D20B11 E908D9C619F1D579ECD5ED7998EEE848EE23066FA80292CCF13B0B33B15EFAF5 5878F3CA17A08440DA18802A5C6E212BC7E3B8555E9DF231C1F9571D77E2C8F0 81AF6E1B91E53C1B630BC5A149F863290A8A596F6D4C5205A6149C9E356ECA6A B827C7417010AB2750F020E0BECF6F40A3D356C708FFED6CCF928911AEA0D6C4 A96F2C1F794C9F6B208646C25A60C65B00F7E0A3321F21B25D1064FAA29113B4 8F3D1DD8A9F67AAE5200858A7A4EADAB2326FC8DC5069225F464B34A0E6DBC92 7E960DBC2BE9E03657BF54552699CA523BAEA23D8B0FF3DB605B6802DBDA6421 88D4B5950ADB9DCBF1CD9C6BA643463B09C725460A9B5CED29ABDB2813613A3E 9546615A0E247A13FE0843433BB13DA9F53ECFF4661DED22C2E33542DB518D09 BFDB906B8952BB029BE10DDB9DC059B59E4EC6E7BD2889F2ACC74402D9F96DC7 7D8125154FA2407151A926147689035FC32C0AD2A606A9FE3107B5EE501280D6 C75236BCFD6C422C1216ABDA87DD13B045E541F88D566214E579F8D3E6C8B68D 0BFDBD1715628FF84A2F8778384F9E7B796F299AA3CB76B10C82F9D5CD7B0242 3CF6091D12DE398C69F29F1DD5F11BD467995E35F6E296D48CA8EB7D4671575F 4A53CB37F995A33A39AC6241B7FCAD9C1A8C23E14A9CCC0E233DB1C4888FE4CC 709DDA2563CE6F834131994CEFF5692B0E4945A2CA672913FD17E2A5C58D0EFA 268AFA4A39E948D2084F0AC14F1F59A0AABEED9322A1BEE00959499A657EB681 A32E13A6BFA469078B6E752C48EEBD614A48B8238105D61EC32FCA6D27C0F914 E665E9D87C5EA62B53F1E7C4CE2E7CBF07319ED1608C9E9E3F1258C463C1C100 2554DD5265D35A13B3CD9304BBFF08096EA237C9178F88BAC17EE12E2AA7CD29 CCD7E976F6A102DF7EF4947846F415DED6E60D180B22EC9E91C81227CD167583 BADFA76080A434CA059E64BADA0BEB2B0E91AE2013BA5D23D3FC1ED9519027CF D3E3E2482786E08B3B35D2B6E14BAD2E24C6F437BFE4CCAC08C67F2D61971C9D D30381D9CC8882FB245FD0BBA73EE79C1C5EA7892239B54198CA4F2DB0D77267 38CFA22A1D8A53030602FF834C0717B3E372559D9347215675DA86CBCF01DFF9 C46451FA26844D4B3864D9C6879F3062F8F851B552876BD15CC84504EE8D5B25 E981F9AD4FDCE79FF59366236C19D41126BE0003908E91DFF2A3CE3A42A9ED9F FA8272446D31ACF35067CFA838C0D1D023C7F99F45194550851B4A11584F1EB9 9C0E3967867C92A260D815A28CAA5CC842F313BCF1140C5C2146F2FD25A46243 320A1C5A27725472E5640211DB0F01EA82640C880EB557298E54B1CC27CBDF6E C2AF67684B23B6822210207E45E302AEF4F9DC2F2A3B9B7F321243057D881DFF 5DA582555915ADF2297C99CC0561B26C194B764B7FA2B1837B6C5F087FCB9CF7 D718DD816FDDBC26012531473A1521E63A724D95C73D29987105C38AE741D75F 76B95C4CEAE23A6D1D29B494D089F9B1750243E6C2443C37484721BBAA145979 0B65E86F97F81D1A44D9AFAF762604FA442B33E0B985F8414AC699284C05FA83 802D0ABCB947971C2DCB161661D1F38F96081E974504C00DB0D89D8BE113493A 1A248CE00F8A54DD352BBC2728F509853EE05A1C6FF40C6DF5CD7B2968344F1F 2350E9B88FF8415CE0E113D22DCC6E5980E5FCE557A3BC64E141B4458150347B 168E35237A245A1D1532A7C1E8AA487271BB4DC122C0C75E47AD7E7A1C35BAF1 BB797EA981CC72DC550BFEDAEE0DC722AD62AE9554FE9E822D2BEF7E9EC838C4 4995143A593CF33BD92E37B12D3A8F29DE6EDD8B98401AD25FE73F3505F18369 5A5DF007C4ABA613145AF6A8B7B06F1FDEBAE506DFE8585265ABFE2D662F1ACF BDFADA70EF86FDC577EFAC8B24C7C399CD098E1A0DEB65E8C95C2C773D2B1092 1A39F5AD71DFB6EF8192FA1DA31156D08205792B948D26FA1FA3BC6F5F3275FC BADD90204837A228544B30AE0B0F8470DE34B9C928A980958FF01C481BA1480D 998D4A6D648B97C060EE44AF668BC1546F7309E685C1A00D8227B4B7C5F17E78 A89809823590469C0343177A54DEECC1BCEC612AE333F34981A28F78A0FCAA78 116FD3C17B19EED4E55C01ADF0F8895EEA12D45B4F3A25AB605A263DE932276D 16B9B72BEDEA2FFA8F493D119B2721F72DD3CE0F1DC7365386B63CAFD774D142 388527F0A02394F0C5502E3768ABAB2C080FBE5A832EA82D6FF99C5A65AF5D33 F667F0225B9F319F054C475780DDA9C6F1C8F0FD0505AE8AAEF27D0D1CC330A6 410825436D6CC0842D91EEE3B5F198AD84CD3423177602D521570365078AE6C8 8079A4A0D87E599C0876AED67FFB3FD13886CB536EA2F022326A00A121CAB893 01CD94FFAACCCFEE2B2167FBBC4A62F6B40BEA1AAF1EAC43AFFBD70E53B80039 6CFA90D932D1E597C040D98BDA0B019D36ADFAE872EC1BD91ED628994D071EBC F62659CBDF3EF702D0FA67EB9F95E2BA245F1957EC8BF8D5D1F7271CF8CF3837 A07B3367ACCF0B4C4CFD30A374FA5C9156FEA1F05AD54FEB2C377AAA7911C614 582AEDC105D97B86408C005F597F861D8FED1F401D3AFB853AADA4E81C57D744 227F9ED2E1FA8A46C68679A5561CC83BEBCCC2B432EDC0FBEF5BA4B925B6BA76 965CD982D5CD469FA31C5BB567171AD4D79B62894ADC3BC94749B4FC2D137759 2892026E16A0F372EA323AB51E23C114F30BE247CB5F2BB4E3656F660A8F0C31 25C43E7F0DD10669E2B0819D62A402AC1F403B3B3E42181207A8FD19EC9C9EA2 00CEBB75DB7B7D1969CD18DDEF18B7A20B0D3F702455B4CB9705BDCA36B09397 B76D7ADBB40E2037288F57C2CA99EABB9870E1D1CD7F3F2DDBA010D641BFDBD4 321CC05839ADC1D3ADCA67B2FDD3C5A3B4D703ACE6EF665F7293162B39051CEB 4CEAD2CFDE2AD38C1DEF0076325E869CC4279164A66D8922957AFDA10DDE38BA C8237AFCE135D3EDD082B4E3FCEF82E6402E44F4511F823AECED2B222DB97856 26E846408D556491567CC4259FFC7BD9C0838652714B3CFC61F44C9BEBA4485E 53718997739101069F14B2A1900FA728515D0BA26FAE48BDE871091AB3B6EA90 8C2D42858E8DAD44FD2DDEE93C0785EF10A4EB9185C429750820DEFF528796FF 1F668B63762870C23768712FD62382311C8C4737065E8FFDEF70B3DBACDFF083 49DB6627FA66567048891BA794EDDDC9C5A1C47F60EC1E0B5744C26B4B110900 04FEDC8143AF0DC2B02F29342CE024D6D5876E5DB59D7323A28B265FE2578FB6 2BF0EA9F0D85987E3C7B9C4B8E491D9193D40A5E0BCCCB3E9D9428386881A3F0 CC586A6A6C1B256976F03A0BA5028ACE4E5AFCEC7CA47FAD65FEB559B3F7B0B4 A24316CDABCD387BE5E241A11BA2D3F48A9951FDCBEB6DDB9227B78CACA27A75 371A9CBC4F2BE12D139E79ACBBE5760A3A0A044583B334FF524BB1D5F0FA54AA 6ADBCAC4D6F6C01213D0C6B54BA8554B49765ECFCF8456014B7179876B88FD81 0725C7106266B3B9241E6EE12535771864EFD3C31EA57772239B7DA8B9139C5A 2E3AD47B2A27E560CFD6DA87776E3D66D19A9351B1E352E829A7127BCB0F9713 83E3E5FF6301535F372C38DFB8310CDE0FF24806A4B97B608C8B249EA1D60E76 AACBBE28B7C4A3581F977680F67C5C3A5FB412E481AE7A11417DBB7D8B2ED528 658E92B8B0B1FEDFB8F4DEF05D2CCC42F6B57703A33EDBB4852BE8E975E4C6CF 1085908476EC40C50CA746BD761318481936B71639B24011BF652347BEE3FDA2 FEC5BEBA0F5A5609F5B834DB04746D4395B08B1AD4CC45B7D24099259DE86DE0 F5C0638881A9C92C09B14B24AE8230E47E53B4785B52989911C164A58FDCB167 2B0390701EC7B6287D9C942BD519449A4754C9AC7C0A22BB500B2A32A55208CC 2DE0E516483DE632789471B8D46260290AC32C26FE2E31389A604490A087D0DB 81937C0F9C0B15714F2410133CCCFDB6F0B0FCF95897DA3E0AFD783FD9AD2BE4 6D21A6BE877592E404475471648F8205483B894BE866799E772533AA33728D4E F54C1354822020AFBBFA7B4BEC6F3FD9B26D6EF307618DA000C56ABC87D98643 D543A519FC8D61A2B86C7E18364EAB4D31A48EDC70869DEB8044A17FA8B2CBA5 224851AFB9FE49CD5219376D6EE66772EE27FF6419557E845C2B0426D793CC2A 3165B3EEA6A1A13F421C8CA3E47C93106B0B6202D86C5A31C1122AA3F17A86BD 065EA5A687EA3B1ED324A9F36246919BA50117492866DD545E42A1186979FC71 DDFC98C8A6FDD649B17DEE9FF4AFD78920A75FF69ADEF128077DCB3F5FF601C8 96599F8C9168D7229BE969E5AE9A08166EC40E890D1DD8B62E29AFD2E3B406A8 73396BABAAFC158C6A92390B33598F8C643DD4FBDB760D2D202815DE41E8A471 039F8D61F8033532CD100F07D726D0D92E68338C014C88B274357D554EBCC802 265288D9E554ADA4CB6D1431D0CD94CB3D1A26675EFD6D036BC583D242710A8F 19751007530B1CB76025D04432FBB38D7468FD4203D9A47F7E67C636ACA10E19 A9FA72D3DF82FB37474966A58AA01C5F7568DC7D4668ADE721BA5219CEAAFD3C AE372963DF037ED7574AA890AD12463C5109B5CF23E54DE574CCA937D5C49BF1 F763F6380300887970BB22246FCF5B2B2EB69942748A30BCF9A003BC6FBCA2C7 325284834812EAB44F42921A116B12D184F9EBCDD8B782933A1BA9ED1F33F97B 548D72EDE27B24A0A8714E6A847254763CA5AF040D304D75E376A43F9CF839ED 1D9E2BEDD3C0BB55E19B8C5FD48CD785AAF3FD381CD301C75B6BCD63CDC52D0E 3DB72DFD034AFCBD61DE9C83AB58A593D727B6EAB8217CC38FD5AB57FF1DBF78 01B4CB52D6E888339B00FF527F839026787F743EC13446C2B9BC6C73E24C5E75 29AE3FD77A54E341F0D40DE696FB0C11E12252BE4B039A80618E1B9C824744C6 E918CA1230C1A1B389AE706AC4E4974A204854CF371E655A80CADBB400DD8F8D A6C3C168A237B5DD57E69FFFF2D670268242A54A2A30DF8EE3D6802EB60B8568 F101F3B8081563E133B5589666278217DE793AEDA75F72A50A558EF3C4E2DFB7 6CAEF16C7FC19C7C2EF3A1288E1B77064CC245CB799CA5DE7D709C1DA186AF22 1453CB15AED504F92D27201EB935E397D85983135B606265449423D878AD8B0D C53B9461A91F46AD34F5CB1A3A0264B6305C01273C84CBA9761260A30C36BCA2 F9CF25CB60710671DC2EA7D9D48444E53DB4F4FC0803BF617632C87EB04D54EC B729E72DCCE2B88CF6A4FCBE878615FC4A1728D456E911F904965FF49CF1CE7D 69B4EC40857946FD8A761310B2D2AB5B753D6A47C11C789D682A23E7F80416DF 4834804F7E600AD21CC2930429D479319E970CE129AEC7AEEDB3CBCFCB311693 FA4F4C645405B6C9A6C5DD437F6D8D320C36DB8C34C8883218B913C3B9F3787C DE794BDCF63BE1BE6AD878880243BB1F5DB700A5FEBEB48E8778827FC428A1D5 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT9 %!PS-AdobeFont-1.0: CMTT9 003.002 %%Title: CMTT9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup /UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT9 def /FontBBox {-6 -233 542 698 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def /FullName (CMTT9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 33 /exclam put dup 34 /quotedbl put dup 35 /numbersign put dup 37 /percent put dup 38 /ampersand put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 54 /six put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 64 /at put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 91 /bracketleft put dup 92 /backslash put dup 93 /bracketright put dup 95 /underscore put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /braceleft put dup 124 /bar put dup 125 /braceright put dup 126 /asciitilde put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0 42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259 4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457 689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521 0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA 610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8 3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735 C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933 995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723 2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0 4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014 D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE 510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5 BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF 93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385 45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757 4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47 088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8 9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A 09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988 E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C 0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C 94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741 03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF 409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71 45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95 39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971 58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85 84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A 0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B 3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B 7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D 8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737 712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3 E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC 2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467 757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C 54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981 DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9 08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD 6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2 A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5 336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB 3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627 1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903 FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72 A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6 465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0 3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32 CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF 573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA 9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D 15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5 15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1 64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789 D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8 576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540 ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135 EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC 9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099 3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A 1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598 C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA 4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0 CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7 3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9 BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6 1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D 4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442 C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D 80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6 59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647 3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6 14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59 B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34 F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8 54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588 34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191 825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439 BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54 4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F 66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E 2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A 1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416 37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6 741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1 39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC 887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49 B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD 15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526 5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1 80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839 A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404 BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048 2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598 F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B 9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483 CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91 DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62 6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B 7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7 D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B 9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9 EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12 0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2 1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10 85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0 EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518 E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0 88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842 E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8 01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68 54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A 97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78 B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2 D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9 18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13 1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62 31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5 408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF 1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E 29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33 BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8 0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D 99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE 480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481 FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB 587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51 A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4 48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367 385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56 8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38 4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C 839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C 320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63 7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F 461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449 1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A 3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500 0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77 EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8 F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4 097C4995B2C3BAB2DD04B1A7097DE16DFDD76465E79ADEEBA90489ADD0914EBA 53E11A43ECB11D072C68D2131BE1C7C43CB9DD5FBA0A67BA43D6851AD4CD3BC7 39AE2E22CCC183A56CEB71D4F9F578518E376426E42B6390426A8434B5A83E78 77A5B9963BAECD5FA5521C2A29418764E4EC1A72462B04957F823E2817A7F8D0 1512919889500024B1C42EC107E8B8533C0B314EE4E23313A4C1BDB009A2073F 9BAB479A3F9DA76CCD65629CCEF78015ADBC2D0D124B3BB2D322FC4D209E417D 84BC3C758B6AB64A01E25C9C7B71D741AF90A19A339F99A0BE9FC39622F04C6F 737474CFEC19C890A657BCE192B9DCD8F273CDC5294875DD4507DC572551C934 9C362FD595A429FDA2D815959461B0CC2A804C1142BD91C7567082699B8E274C 6A22806D6C51B7DA809BE9F612EC537D4FF3122644AE0718BBDC6ADEFE7EDBCB 8C8A76CBB280E70ADFE563C01CB9EB828ECFCD365825941C8B7E1B1401AF773E 0D3E8A6F2D62624F8F5FD1EC3CC76254E4CCB4D8E4DF0D5E6DE10BC1FD8BC325 05E773E0925B6838E0D7ACF12AE32E572F6642EA587806FD2805C9147B873194 788B8162F3C20C915E4909B72D0A62D4A2B63B3825F96C42625DA10FC0E9ADCD 77F50821EC585193A56698ABDF8822AD65F853F06E4171E1A1AC06E5C57691D5 90523A7F03DC50F41C46D72151717149566C2D356C1A75FE76619AE45B9CD605 D3A0B33690F9431CE242042149A2E42BC6A9356F786ED9B7674C243C8AED9D77 636564B36A52EAC1EE25999127F925F8755EA21272E3AFC856EA92F1B1E130A6 9486E1DBE81C78914A157EEF0414901AC8BF313A9F444FB2844405C263105609 9E302C68BACCE64BB7945535F2F9C2872DBA3A602BFDDC2C6438B302B8D96DE5 F537A714B7D2BF4C8B6915011D38800C0922B7089E1F58A5A6DF1D426261FFD3 8496FC59ABEF5653D244E51DC18D750C61F4AFE49961F461F60F05664DF2395B 7CF8112611AD3C6BE0D64AD95CD956DA57C6E641EA2DFB4F84B441D627E68C6A ED7CD840D1B199AD4B428C6FCC8E0E4CE294433A4C8A4F1E498B5ADC74B75490 60C206487C101F03F8704FAD6B22DF1BE74DBB61631B2426EAECE3BC8120EABC A4B87B7D1C47DC03DC1F132E4A4671129F793002C5163D5A341BF2339A0DE9EA F6CE84D02DFA57BBB021EF5B165E47F01EFD7441F57D5072F4649F2C6A9271EC 6333129DC28B1DF6641E7BDE87E27B19D474DA41A43A6F985CFBABDA93BD0C9E 4552DDE651D58874023F062CEF99CCB280E75E6ACD9170013E67ABCFB7765B63 8D5778C5B9294A5F9EB8165B534CCF2345373D744D46DCABB2386EACF24FBFDC 945B43021D51381512993D0CCE214FDF11143F608964E2E4458BC307618FB066 D0A09A1D3986B9B2BEBEF6CCB56B060D92488CED8F8657B779DCD06FAE5DDEA9 AF3DEE61771BEB0106B8446FFF798BDA4522241ED5A3C2201B859CF99E487A9D 6D09F1F4E15771BD8B827C0C6FAC0C68CA005767EEA79C653D10B357B2F35AB8 E27E9A9E1647B8B0695D9B3361D5C4DD1C8502307AB8D589E8E7730CF4E79138 DC663A160F8B48A09E2463A3884F7110DA86DBAC85BCDF0F2FB642D3A32079BF 3EA12A6EC68F1B16886B92C447C6C671D056C625D983A59AFDEDDB11F5CA4607 849A561FF10F2D8AC4C7A07FE97CD0D40EF2FA3C70CBA1003A32B6F1E6AF34CB 297A8161614ECF7582E57A0C28073664DACE0B1F5975CA309A313954912428F3 EB1FD70B512C6BA2807E7DE61C4DEA4AF0F975BD0813D74C3E7DC9B0FC48B19F 8AE1D32B736870819CA75057B963C1AFB107309889506B0905CA55B6F3021515 B0B6A1C0F298421CD24784B89EA18251ECB9E9F76C0A61CB6B61CE4FC18E84D4 C7ED481808433D1AD785D0E66ACC21F5DD37CFE2DAB64F3D23E0BED8A8E21058 94802B93AB33E5B66B126C818CCE25F58852380D0A46A10BAFFA90979FE3C5D6 C1A41AB044D3A12D258AA40B505A7E167FB20697D5607D83C90F512DFBF4B8FB F0AEA744390E9D06FBED2D1D5708EDE5C4365CADB27F9126DE2D0D91448776A0 1CB4091C21D62A253B12FE336DF35BD4B322890B0AAAFE6B917E584156632567 136AB50A591298F50D9B7756AE5B9DC1CA48C08E564BFD1AB5AACA99027E5950 E12037FA2BB52BC7F430096C7CCC2E6E49036B2EDC04602B42047659ED14B344 996D0819CB04E198855E16E34FAB061B23CAB292B6A3A33A692ED38128193D37 C8CC57648A3E641593A39E464E46D260B38391EC6C54A5866E555F46AB175457 7EF1CF14F518D86A975E0741C75816DEABB25DCD1BF501F3F7FDBE8940DD1256 8386A7D8FF00994FD669D6377A279C6833A2D4AFA5BA3B02925B1D4C8547268F 408B524D3F9CEEA491A0A7D81843317C001EBF830C369B61205CF76201FCE5A3 B2A5A6D96F9F22212CEE6D220337B2F0799EA3BC4AE337CB463AAA21C79C57DA 02A2E0A60931AD78E20D5471DA17C2480346818533D131A62C5630ECA98D24FA 03612960B26BEF1FC3A01B45348CF695D4A2C2B69B15EEEEE49B7DB78B03F39D A6694E0E1CDCF75945810A6388412487107C38BC9632D637FA26ADE3EA61F5D6 3D48E4873A03C7DA132CCA34530F27504B51DD425A3E74DFCC5BB227F63B82BB 6C854F5447F3517A794A78753775ACC29A61DD380CBA00EB25730E613C11899D B5542B8F0F4C80FD9ED2073D9A5EFD3D4126F64CCD5B3626B6B8C0014C31C9AF E638C4E9381415F903DE7B554B1BC135138F12926805CA71A11D6551078FA370 08AB0C884EB5EDD95994D4D1C5D8DB1412DF91DDBC521339479DD06F5CDC1A20 0E35304ABAC27079C48B688B3E138026764E6F579503D13E2A87C11903360655 2E3EE587F8DF681F6514BC853425BE7178778B0B95A9107FEB58A69CFC9CC845 D13AA5DA512CCD45886411C0809CCDA5B28F54E5C1EF261C280E0B218F6E28BA 2D97F92962D962F48F753A61FA204411DB939E77120B8069155754B663029E00 D7397C001E098A45D84FC93AA3407F8BE54CF5052FFBD2780E3A78CC0F6292E5 17A6DDB977B817CD9EE2FF76EB1ECD06A7E36D256BA05DC8E523B63FF807E1C4 198E61EF3537B05706F8B58286DB806A9F4380AA85982EF8A053F52E26D28D4E 5EE719E725A624A024AD029984C35E6502FF21CFA2EB865D910F667F810F4A19 855F8051CBBAB71EED5F57ACDF4718EAC86910C8B38FD1EE596E98A0F95BE413 885D92B2412DB15C27E8A88C7DC20781CB6D9197F6063554777A3E2AB59A3369 916C3554B025B6EC0792F09D0396F6AE8CBAAF647CBC58FDA759A4AE2BBA8F01 C9DD5208A58C25210A8F6B8EE44C2E83FB0C5819ACE93D946A822FC5D1A5B329 8B7883E0DA2555B6905EB07D3EFE3A5F5354B7A6DA5FE2FAF2A8DD8ED3A095C3 7D7EE87ED1947EFA55EECB85E9944C9B3D9DB1B2B46A88D2B4F0276188C758DB A7A9B5F9EC59C67A553831CDB326C1C6D38528911BBE5C9CAA2A845B6D34AA1D 4876501B96E9E4515DA1242E6FCA80EDDEA1E3D2DE9C549844D239A9CFB3905E 984FD2AE71E9D356077A261EC502B8D8BAD6C5CE9C1711D65CCECB52D69BBA9C B2A5BF994B7405D09AD22C54D1A8D4893FC7DAAE7D9CAB00AB3FB61F7F56A88E A6146C98CDDA05078DC0387E8B35C5D460D21E19372E6056E5E4B23A2F2FB3EF 1DDB4E5312E0B2A4631C546A7CB1CA2A3EE23795BBFD061A44CA4A2F6F5A5E0C 4560FFCD520E8F235D6B768D119B83163CC1B13547DC447575DFCFFE1E06DDE6 4A0F0AD5C08BBE48432B15FC9D144E6ED679107C81D1117E7A7ADDD5723F4EF5 235E44730BA14F7AA0737B933590C453162240A1E712FF1436BF8CC9312ADD0C 2825E46187ABD85D9661B7A84F57BD78A35E7684F6F9E6ED1B1552D2DE55119A 0C1CE4CD1712EC5A318CF4B9A389C8120F332043129F24E341BA41D5C1FDFEDB B3777549F7ED355DCECBB56EE36622E0F2D22B3F37B0DB808920807577ED7230 35DA36AB230E3D914E653D94859F257149E617D82F5EA6E6D1B6C17C96008260 3730E3370F9F979A98CF71F9E38D592992251AD5B1DFB03FC466DBC7485D641C 97E5FA71484745A41CD87B4C1AB959A4B7E1404E30E8133E5707258A0236461F 58C7F5FB1F0CBDADC204311590FCE4C7B0165690CC869F221EE486217770B65A 980677F4B80A045587EF3F0C71E90DF404BA8F1BD7A3DCAE406A9EBDB2CC2E8D E4D25A8ABF1B4F67D5A1DA34C6F67AD574F71E894A52DA063FBDC6A5F35E2385 14809CDE8D4C549DA24DBD6B41359F474C0ADAB4B17F5FCA1DB304C685687DA8 510292B17FDBA634EAC57DCEF505025DD1BB9AC7D186AB560A57871840FCBA7B 7FC606D2643015E570A3917F89A7586D71AF8CA24D56E71284C979F37F59C921 7E7F33B1F62A556CAD6F0F43B0D31BDC3FC92082C3216A3B4960086D578BB797 0ADDC78CFAE010530E09A86F950BA7DF855D0CF9EEE48E726D32DDBF97469277 0856D2C19F819DD0086BB19C9A445F76C4745E3EEAEF48A86FC7F62EAFBD0D3E E5FE58DA688C278CE3C4806230C33DE2E6927D1A0621910C75FB0F6BBF85FEFE 8F6E8B55E2CC59E2E33F1CE139E08C3195F0BB3653A45434BAF26A3D8D150CEF 52C48C478E651A5F413E89DC60A7A16D7B73F7F90B070AF22F560A7CD2EDE5DF D3136617AA3CBDA07AD5BAE734E54A99C00EA3B4B46511C93D5ECC962E96A35A EB39D6DEEFB06D6E2E4C027A47E8EA8EC2FF0F4A9C84E5D3CF4273E50DFA722B 5D60C918C6981B8627F1B4F4BCC31426317D3EBC95C25B53255557AF2DF70199 1974A9F67FA7E7F545081C54F3103E4A45FE2C439368DA42D72FF4ACBFB14B5A 73597AB5E1EDC92A3A0BF4FFC68E9E74D0244573145959130142D903015C8D82 F0558015D3FD56C45472D1346AD727639D26DD574C9DE0A4FFF51498B78C9653 05CFC327139DE48316D7790E8CD1A9D0D5606ABFAB745F17C5E90244A209CE56 298384344A2A216EDFE7D5E7906BA6E7E03EEC80B10E2F3ADD160ED4A21E5E0B B64BB6FCC7893D6074E8884BAD38B4DFB61F429CE906062D8C37488433BA7FCF F305D8C59C900C6F36BD72C2F48344C6C8B69DDD304212B539C950B9C40ECDF8 01134774881EFFC2E7BBB8465311A852099D9379C7522BF903496DEAAD12D7E8 C662DA12A6DA3E3A99D7DDC0DC81221BFB27F1CF2FC6CC1679F09B89FBF66130 4CD106B99AAEA0AAB0FB6C3C43C2405FB979459C27CFA6CAC2A453157AA7712C E4C4EB0D03E6F4DB648CB2FF46A7BCBCCA740AF8D03F4E032BC1F07B58A28C7F 20C67A9F5DB3036769493076258B474F7F2B11F78E1600A1AD228963B37E86A6 20440597F89F67A08C07AF0CF3E3628C9698B4103B7E296FD5D78491695958CB 4F61366EEBA51C3A7F22D7DFA81FAC74483D6BD1E17718D8608D728D45FFFF41 AA925D4FB248EBA78A31BC2E4EDA9B4BDECF75E69C1572B02724AE0E88A47C2C 2606B0D5A952E0705AC500DDFDBD9653D4CA984EF9CCC2DB8F0E70853D172D61 8510F07D0CEB47AF4BC8EEC06D2AABA4125CE96FD28D9CEFCF6201A70C139900 1AF6D4CF7DC807FD1A8202AB8B0C005067BCD3AEBB482BA2F8B8FA44D3DC7338 CAAA8D46A5EA05B8B1A868493F8B503393678AB75C5F7649332BEFC624F1693A 3E34ECDE22A60891F423950A854F3BB1F6B4959AB0EABFA8955D67F42734C8C6 23F6FC71518A86FF0E1804E7CC09CAA830479D9CC01CD03EDE50DADEDB16FAE7 9CA4ACEC7AAA5E704290A2F7527DEBA2CDC1444F027EC86C81367F54516C1654 5E11FEE3F10FFCA2D74206F365D53655BD8FA76BAA8F8C78696D47591BCE88DC B12AB8176EB03BC115F99B7D88C56F2A3400040637386FB86D093CFC38814F2A F1616AD54EC908AB3AEB11C61E3AE380D99FEA37B1D594559A904278CF2425A6 012729A40062BB0AB84A0FCB86A3F5D04561B93A77CF011F4DE3ECFF5E0B004B 933084F930F0AF3437D59447EEA731352339492A0685B45101CBFB5B8259E6A6 3583582DFF0529E4AA5806AC2F6C9C448B0422C8125CF30259325E05B0A85EFF C20FFAF525F73604DD2CEC421190B3A47875BAD36104DA1D80283DF395B6B87C 961E613CE164B60DC343D3AA6D7065149B412C3CC3FC1BFF415652F99F698B52 31FE11816B341B2E2BEA3F7D7732B5C9E0C754027486D56B1D2268B981B81C30 9FE2AC2F949990068F30403E3243CB7E4A448A4CB05CCC59B9C19CCACD03E428 E423CEAC7B976B59ACEDB3FF08B094AC3E969C99AAF5EA974F3FF61C5C663B53 8878F3885945B1A3299C219976D2842AA5DEBB5428E1A0864CF48BE957C7BE41 66861F3B4BA7CBCEF06B80137F83E351D8CA3D5051BBB3D2E1EFCA8905061D14 643A240BEA6AEFD788B00A807FBCCD4557E191A51D62D9729C98D1FC4BDB776C 781E824E0FB8B5900C41ACCE7831C4F6AB814BC7CB47ED8031DF80F517AA5E44 45046B25AC5F3474135E429142E5BC33D924CBA166596FAF5D25E732C79C2AE5 F3095A5D565B855E15A585FE57EC321B7D904BFB9EA2D724A085F298888EF252 938DFA23FFCFF6A1A1AB9436CC63DA9B560B074BBFD39E552DBB8D174ECDF5A0 FD92ECCD75EF488732377DBF97C7069851AC0EBFC3AC4226A534FDE26B47527B 0DA64B77BA16385223580B784D1E74DE433186809AFE97A7B51514E4F665D14C D1968CDCFBD8E50ACE4D76442D68FF726EB83685DD0FC3B14DAFAAE06A894CB2 D2CDA2C50FFBA709023472951955D39E7467E978DEA8371A935390407C01FD50 C8B393DDF202F0BB76B7572FCAEE5FD588C6F01AAAD38C99B277C501DF5C25B8 56F5BBEB4FD1BB379563093D54247A365CC66E04A09EEB1702FF946B2DA1247E 15D82AD0078AE820CB71AE2481C3B23EB86A5295CA58E00BC638EF541D4644A2 748E7AD3212B1E297F583AC4EEDB93641F2B7C0817245326322B0AF2C2028EBD 6EEA236F8E774B379AA00D7BF9B9AA8D9978649FD1CC8DFD7C145F36E2CAE63D 157480ADE56A69DCA2BA077F8AFCBA252DF716D99442EE7286DC74CEF7F539E4 11EBE1B2914351CF6D12FBD2658285129176D0566F2104CF95589AF2CEFB1DF7 CBA05FDAD557F3279007CF49BB3783470BC974F47408BE287877ADDDC30DB1D1 1ECF880973C5ABEC997DC089A91EC2781B77D4B1BB436C785B9EFDAD04FD6B17 22B53DE2A271A527E2A4A98875A041F5E1DA7BBB96BB550DD32ADEB761B561C6 71266E345FE58024F192ED4D918892CF596AA20791D196AF8034F94F8EC9AB76 625595C86424B94BA9143E035ABB4405A6CD2240CA82A6F38ECFC0629C877482 AC4DB88AFB832A4659B60CE2F2781BA482C8CD801D55C165055B404F1DC8D6F9 7748CAD55829445A5985D4DA6F0B2BAD86A6435CBA6D314712C260C4DA58CD29 BDE901ADAEA60C3AE82F9D52CEB3E29AFDC1E03B4CB387987BE958F3DC449A5C ABA0F3E720378B1FDD5D4B6F8F96432380A83E0664AFD7C9D8F85A0034403E2F 8CBE7840B219589C7E7D7E20A12684F0D01239D1D41CEA6B48361C390BAED783 DC6692FE202F3C7146F8C4B799A4ED5D6558DCF34793CFE86D7AAD1B27CDD541 293E1DFE875F5F397349FFBA48015435855269CE3E82E320EDBF3DBD81243C85 E7235E75A98EE2F7A8F5B2C90E2C213B13B9CB1776B8AF2D5F4753A812B2EFEA E9BEB45F4B3CC3C35DB9526E3B2AE4C1AEA573970E588FFD894EEA7F4F29DF14 61AC620D18337395F04E2F05D2CA8280BFFEC6F56E1862D19E891D753DE8114C 76CB8C88429A0706B68B2FB53D73D80DA80A88519174D0993427FC39CF7CC668 F2FB56CFB3F26F9E2F35743AA8BC2530930EE7B330314BE7A4AB21882FC84522 4AAF8A9B58AB8CA2E316B29EDAEE4A140FBBB591398A86BBB933AC07B0931CA2 086842ED8B3CBA0EA117C5B0FEF0DC8D4293435CF92998916C53346435048556 A36B15C19BE595C8055959299645BE7B56E3A3353F443E90E0A9540E8F5433B8 FCA78FBD369DCFCA049E4EA27E890FE125DAB0AB6DEF649E23F34F2FA46BB1EB CC1A041CF273F94DBAC2ABAD5E225DD6046B03CEDC518E8A13DA56E4AD6E36A4 BB319081EC89978E4215940DD715795D07A61221705ADC30DD8D6343BB3427D4 DB7B910D256F65B9BB9202C482B190C7FEB04EDBF80EF23EB3C17DB117B501BA 3CB89B34300BDB9A0B97ECAC87536EC94FE2D74B48CE2A14C0AB0F50F54E6D7A 88DBC59FF9D3C33D8AD4D3F1CD47F3A4E7E181500A4A96EE73A2954DF83F1D64 9C1257D65FDCD057BFBFC9A18534B5BEE8902ACCA38D313F992FFAAB300FAE74 5D7FE062C4C1AF0EA71A1F4C2D34313BE0F6DB1CA515A9F10DB27560D24B6D0A 6090E9099E59F59C0AD9FF714967B00A741B691A5D11B6042402C5584E487295 F4DCE8FACE662E1FCAF88601F9C076AF879790F742B4B1C00A15642E3ECD4661 995F0151413F513C28A365634A73596D5DFDC010D53C07AE9052A8F9E3C5C557 D5434ECA23B77A3DAF392919FD782EAADDC4D121F91EF04666444661D94783BB 240252B7C302AD0D5DA1994246D768424B449A3D1B160210C0F3296D34D63290 D40FC924B1956C2F21EAEFDBCD302C1DF97ADA7748EF8BE4D9C746706DA02399 04FEB35B54B61AE0131EAFFF5F410E586948EED156937E836A5DEC3204DD8C8E E556B8EDA52064864FB9776CC1E05E6181C549C10F09296924E6FD7BA07CA23E 783F7EFC19B869E903640009A37AB5A47A3F394FAD97F7EF0A1DBEF5C74BB515 70016BE28E8FA12F9A10E15C1EE3B31E4CEFEDEB385FD9B5019A5BD57681F9B1 C05AFD6B83A1FDEF4E4789245BED5F4CBCFC4838A89491FE93FBC5773A89737D 35588EF3CD0C9ECD89FFD27A7FF414A9B7CB89FAD15E692E509C65F3AF36A346 6C8AEFF5AC7CC50262B24F75CFD7C44A977D9A34F89ABAB25A957B3657C76D31 0F02B398202E98A8C65742FF5BB296BA192D3FA12B617A0F3EF5FA1502B4D519 9D2301D2089CB47A16606CA16BED608743AEF37E9DD4BE4B6E90AAD8D12B27CD DD26A6B8B67277DFCC46855EB23EE26492311CF9A8DC0C39241284284DEEA02F 4F358E3A47A2D5A7B349A22E46BFF61BADBE1C86E111B50E7297459F0F18FA3D CE461031BAC0D1DA78AC387DE0EA454005598217978529D5089EACB059D99642 5DF928E23215B6E5DAA35DAEC505AE112EB1F8E127898FBEE7C8A54EDD0C2ED8 C75AE6DA5BDC0BB86086AB7E64DE8EF6A1495D81ED8DE1A59796769164CD417B 46C45C9A3686C7A8FCCAD6F7BEBBCE514655FFFA6228A8312A5BC50538DC2CCD 3E59DD99D6E4147DE8F3983B031C03D07125107E20604545A43BD7880D3423C3 5E0261158F004423D18607C2BF0A39BCB65A685BCF2A391FBA8844C3ACC37067 64B2803C5FDC03D43668E31489BA7004B06E7C4C874834586ECF7B00035DB428 E4421E6A6651393FCA5057DD05AF837AC75AFA4106B354F3026710B5E101CE9D 830602A5D6704780155DE76792D9A3F2EAEE4734B3E1E87C85801C50834DFBC1 DB501193CFA6763795F2387BE9218F33072ACF3DDEB08946119F3C9B71AB2F1F D1FA74C1AABC8668A8770B120DC488F988F68F08FBF4DD6B44104673D927A39F 27E00683A10FA6322F30244431EC032DE80300F6E55414BAF8BE15C308F95A89 E3665655592F74B91FD7F71B7638CA14E0E1C273FAD0B9F84BE5FCF3533DEE1C 9E8E5A654EC3ED9693A38BF2617C0367229D6FDA89B2288827B98A8917C65D11 5F47124E457C20FAFABA69E18044169FEFEAF870ABEBBF08BCE5F3C7E1EF8970 66B5B5AB84F3AC7EB3E55C9546DD38C096F7221AC728ABA58FE76FF090164587 45C0C6C83A858307703AF33E31ECBD76350C9408454F90C04E9F106B659DD02D 5824BAC124F4547215C3A1CC3D38CCB90765731744736903F24271B9D8D3BE66 5790DEA93EBF0C8E5EC7F70721C00205BAF4C7BB4B6637F5C4CB0F2858A7E1F8 93F56B29E08B5CB9185433A3CD281F9AC60576DD1BC993C08D61111347350861 783244234AB06A2B5F94134721164E3F09296B2CC51D09C1CF55211160A43837 3210EFC0B9892BFFC4BA6F4B37F9084382E4C8329C564DC321A88A4AEEE84812 2863DF387D3FD8F5752305598E941412CFC362BD40C1B3F30B42BE007C52DEF6 0570FAEB855BD314989DA4590AD1D4A89BE78DAF819D776F9ECA616B88FFB866 7A0E1F09D20849ACAA5D08DF3C31ACCCB086F55B75310685D4E3ACAED8B1A467 706F72366FE39727DEDC6DBA504D24D9736EAE848E97C61131FABF70740BA88D 50125D6E12D3AF5644475779C0EF186EFC4A63FACA5D8A2A40BBC627FB743DF8 6B2E912FE4499B9D5FB2A75DD37A900A01FAC066796BDBA13C9E32B86F5C272B 4B0480D4FFF49C5097C7590BEEB0224C91ABBCCCFF307BDEFA90E08446BBCA0D 3AE04D1B6B27D672617C8F9F88083E172CA368109A7C982B5B696F74FC9AA09F E1C83A6ADF5A458985D9521953259835D0AE78E1E5F46F4A22F4CC5766EC5220 CD8E11FB08D53D5F37AEB5E88E48D20BF8CC58E870A59B125059639581432D34 99943D762D20ABC4D1D3DB1E97744753DF3B3C975952D6FBF22C0A2BE79551EB 3F63FB6F3F4D95BE06A9C776E7F1FDCE2318EBAF88D9F39CD438EFF576D905E6 EB8984AFB3975CBF69A86E7D7585BC830EF5E23E069147106302D1EE530340F8 347DB627B7A0BA0A446225E964EFE1727EF63CDF7D015C3874D92B642CA3A4C2 BC20830B3475098718D29588F44504B7BBA9B3114A312EACFFE8087F1CAA7273 7C85F63CB022B89433E2FD51F24F08F0026CC3718CFB2E80D116EE6F2F970918 B40D5CD8FAFD1B3521C30FBA07E165F6EFF498A37E458C3C2748F8B76FB6DEC0 E544DDE2A0EB0E8E13FE9F6BFE93419830E428C5D359470838FB7C28317488B4 531ADE2C830507F77705AD6891DD9A9FB229D08EF1AD6320CBFD44AEDF48F270 A5E44BC0FD3AAF090D3AC47AF8E60C24F39E1AA2187387CB1E2E95AFF46D6035 AF7305F28FF3FF34232E62610F4A042BEA25E6DB4C13311FB2373405683C31EC AF28B816DC2DE3A755FA83BA05B76F3A9FFC64402CB2B1FD8DDE4503FB0FAA6C 487A0E98B5FA21D2D0E0C08E95D4853C6B94FA64420B4156F604EC2904AF7517 D37608E12E15E4A0694B6D156D042DCF390D2FBA766FEAC58202134C2D830D5B 6C73AA9ACCEACC970166FFDBCDE630296CD3B2EA3E358F2B664CE2C483157344 22E31B86E17E87BE0D226E3CAC1E28FCA18E0BDDAAA4911B4B0CFC1611DE0D36 9476DA0B14A81808160D1AF72B3596CD9D52F422E49ADB32631337F434445CCE 79AC26BEE9593567E6D3EF1C34F0EB319113EB747A222A9BF802502AB151E8D4 F7D855C4722B69A5C273C55BEBE22C6EFDF368E7A8C96CF52633BFC5D8DFBFB8 4D1869FCF68D5F12805505EF0AFD01C3363A2761E074C8F1B65CFCC31676E8CF 49DAADA1DC8A4083EDAA612B511D11EBB48C8AA68B46C9BE82F02111BCE83751 4B898EF55DEB2B08C623F6BE1116532AD67AEFE0AC912B6B6A0CD5DF0AE34305 3E0A6399F9583688D9A6CC489D3A78C6E91E231AB397870A35772B4B3E2A21B6 323D8D4C0EA2E90AF4F1733AE639682987390BA69229A5B1250C707D7968C24E FD0A41618549071E30C3B9D52726B19169E57944B1B308DCC548D33C37112BD7 F40D3E924A44344EE55DABFDB38BD54527D69F0143F1531CAC341E2F6DD01E1C 2ADF7600DA63A36382CF208CC0A66BAE48C602264F24E531A15167B91BB7AF0E 1C26FFBD08B83BA63CB1AA44C10EFB8BA65C69B6E7D1F9E31E59FA199DE21D04 214497337A255731A41A1007A9467588B8970A4DBA19A82B5AB3F1A625F41986 F30D0FF266F1B01E6C7122CFE08644615006345390CDDC83DC092E21BCA8A10C FC90B8BD2840189AED7E8454F2892A27A5F1EDAF3DCFBBD0B6B70E0D9382005A 453216284D819AE346D6625BBA0649CB036993C81BC8DE47DC0E7A842229D11E CFCF6B6529AFB2982269BD9749D705DA9C50EEED1E170DCEA5FD8911DFACF3EC B611B64A8E5F0E6C832442937EEC88C846E5D1FF75F727D46A06985171BB644F CC176EF60C923F702D7DB188BE640A0576235B348185B1FE7BD4ADCD3672D721 27D2C69A59DBB5DAE9B8D0D4FF08307C836C96966BC34AB4B86291E5128293C1 BCEE06A9753BD16B7A46BD446B44A0D13DC6430C035812F0F7DA4AFD0D28F149 CA679E12FD6B84FADDA55BEE84925D5C31AB08AFC3CB7405AAF3401BAABAA91E DCF901F1C02D33C3067F2C70A7ACFC4C64D6028079AA8E034EF5A5827DA7BC27 EFCCC8D9BC327FC1C7A28391DBC107055EB1E72AF7D7C5B2A0FF5FE8B87FC6EE E8719B150520D46D80A7D04129A78B5D4352885EC2F0F00571842ED025FBCA12 CECDD3C8872BE5A946C227D13DE562E04B14B0E8662A86E99FD207F7CC7C03A9 10E7D4BCF20403E31BA872D19D919A2E62878D85A722A7FDF6C9647077560503 80E15736CC7A15C036E0E393D40EB0869E04875142A7A785270E445ED15A0D31 79682041D4E06BD186ADA99B1114D20BC49EAAB01165403C71FE0753F1DAF1BB CCEEE569B7F35D05AD3A350914F18543F58B4217653FC1DC4E11B6B4F551F3C3 EE7B4E155E96360ECCE1725A52E092247A7122D2CEB207C4515E161C6C7DF458 4CDB8A7D169013D0B88DEA979C0FC29B0823BC382FE5A0A652ADC92C205B2BE1 E56E7F8A6C2CA338DAB9207C4B34D6BFA688651F33A4AC17B9E4E233677ACC38 819100D84A65658C0D534EFA1E4CD6711BF1FD9A3D8ECE96330E30D98D1DCDB6 9ECB183FC19F36D5557E8CDE45A7DEA5F2DBB7B39FB12655900B54383E159B38 BA15EE7BDE96EE0FCA3826ECED79205EF09EC5D22B45E9ADFD8BD63A930BD880 A257596D32D565B22EA79873AFE995AE22D80CFBD17493103EC15203DD451D77 9E5FF077766122DFA39C19A75F725249C5FD6F6172DAB38104C8D9EF17C59976 2608766EEA72D15D016A14B61224D3B7E036BAD6DF9303C09D0303F938190A9D 896E2C51DA6F4BAB7E4125FDD6BD7F9E8F53A7B2BF06767D34539156BAD603B8 0FC62ABC3AE2E2F87FC4A2A02493840EF44EEEE69B4CDBAF94E5F47469A788B2 7DD2B0F561FEE6AF0B9A3A32B4398EF8385B45D44B093E507054F87483CC7A65 54DE0F2D372E93AD7767460E35450ADAA100B66A55774D603E80E977F2CBDAFF 48D50247FCD4A9745C549BDEA2A3A484970AB11C148047C070A67766ADDAA645 A0E69F0A798522A9DBC96C5A3DD2095ADE685AD822A19904F07BC9F124303FDD 2AB94120A04B8451843E2E17D77AB45AA4CC5EB54D656D04EB50408019EB5823 B09E7E03A1FC293CDCFFE0AE30AE4F10A674FA76B89F1C77E0F1D1BE8D7D6340 7D2B3B34817F51067AA93013B2807465E774D3684CBE3461EA7077CB7D3098ED B90F319B4245D49EA0C0E941180CD5DD6E5C7EA09FCEA5BEABCBE65F172EB8CA FD3ECA8939644924DDFF6563CDE2104B71321DB5621BE2BB04A47C9AE0B4C089 1CDEA1F22ACA1AC6D51E2BFDE746AC5AAAF50E6EA8AF1A8511F3174561C72D77 3E31FD25760D29E06BFC439EFD31742A1CA3D80286BEE71D52541FDF1A4562DA 086C6E8FCE2144148757F04199D70F1F5C815167086A7D2425ADF1B847669F22 70D989E9FF76C9B8A78E83359924C0A0B71C0839D813FCF5AE63F122A4B29460 354A69963C86F84B2C45271FD4A55D17EC3AAF29CC912F17BAA000B6AC6C1F8C 16F49AD587D291B5FAE5CFA1C14248CF27C26D7041C10BB062153AB19C533A7D 36DD9F4FAEC118D7F6BE81AC93E5DB9D518D363D2EC9CCA6680DE4CAA10E0853 8AF5620B8126F7CED1C74902DBDD7C57FC66FFC8D9161D81B4D8ED83396CB0B6 969124F5DEB10BB2CF08941FD99C12730F943A156ABD9474E00CF928EF98A85D 4A54CB66168C6353F8AA45E91E303EA35F9A2F9ED1934F01044E8AFF92F6FC5E 23234178CED72963406AB794EF3EF1CC77065B0C34B61ED9B8FB9E012B932B1E C571D76EDAAC5F5D1824D33F3B1870ACE8511C58380CB1EC520251FCE68CF0CA CA867B41EA77DC779335472A31CA940D5AF95226E6DB5CAD012718519743F5CC 953F4C54096155E5208D976A95F949ECD1F60CED24153087E43B5C9852705C63 48A34256DE0CB89A7D3D8672975F67115106B253ED23F3F047F58B28FFB51C95 FA8DC5EE05936CE3FA9DA0FCB262B1352559BA47A777CF7FE5203ED95715BB7C CCAA97D93652BD828F28E0121EEE2636559DBEAC5C1232C9328E59D95F7860D4 E41D8A0CBF0DACD52496D758AEBFBD49FC98786A65FFB437F8F771A68AC6ED14 6ECBADA8180624157386803078C0ECB02BB7B932C39F6DC6E8AAC9332564795F 5230E53F828495C18360B7B3EC221247BEB7442A5EDF74227BAE75A00C20FAF8 573E01A5877EB85DE496E36AB3794AD3515D2AC9E13A955FE19B1F3DEC1E4455 D5ADC17D98EC3C2A9EB4551DD05C6397F9B929DA17A93CDA0960657C6F86118F 393755BFD5E968BE8D0C2ABA8CFABA4FF46921C939C3FBB3B32E00F768796DA9 35B2042C3A83A5FC05ADBBC1A9867CC706272F852B26733ED874A8DE1548B87D 9D603FD4CF61EB969433D53A0066F12EC6B931383A848AB71DF468E6A1C34FDF 72321140796702414E04E0ABD984300B9F9D22F16E401892E6184A67B9434AD1 23C83EDBE48F392B49251F6206E84CE8360F241D651A7F9B62B5DCB8F0DF22F0 AD6ABD8F2B9E908367FEE467160E89680B9378F57D243DA04C1434FFED253524 D0F308D1F311F33DCF829E3B5BA0F07C3EB16C2DB9CE9FAA111C0DC01AEEF1CD FC2A587D9A041DCEEAECB101F1D597CD36FBF647C015B062DE5858F96DC10F74 1021A06EB06F283820B5C0E62DE4671F72985444AE2C17AC2232E6E49B9BA13E 2DFAB0EB4B2B24EFF70A777E892F5B7B7C44153BA6C7AA19FC1315A857F1E564 93990DDDC452691ACC8A681EB658AC0B7C823B7D3A8CB995B30CA3C44C352D0D C4E253B3B694EBB74568E08479B87FDFC05F239297733C494FF8C3BB84558666 316BB7B1969B523A58AB2FF029F806A05B72F6CE07083F9555D982058E10DA3D ED21DA3E40F1E9CA9B6428984A7DFACBD366591AABB0DA6E17F401BF99E2829E C89A71F2AFAD41C3EF856A40473E9C463FD6896C5D2148029F4FAC4C14C92E13 A8FA2A50EF4C33EE9E1BD5C61083DE92CB45F426BC5A58CEAE29E823A8652F19 CF88A03CAF9D697FBDBD8CBA47402061EDC788BF7A89521C86128CE4B4CD0D13 4C7B36766649B401B0D10B686F04711890C1AC5997F2B2D2E0F3D2C8D7DBB266 BBC730A2502FFB7E922F57CF8F52B3583873440D139B22FAF276FEB94F75D912 EF6CFAF3C580F26DB6FBEFCF66A1D4016608E387F69B424D841E4A2DFC840FF4 6497E03BDEE98DB3D397146532B82B54549CDC76D79B8A1CF1B492207AA39B5C C68A13CBDC69BAFAB217AC5A76CF46F20E2903EBD232639EA413005776B1CDB6 76EB3E52310A2D99A5CBCEC16209F5218D91DE873B767DF5A35819F00B3CDAD0 548FBA1EA519D97B3D2A9F09330376D70E07C8FA0E38254EC50DD93473F86E99 AC7021540D5CDF0AA97F7417B80E238C1AECC55286582FA4388218AB1FDFB4D2 61B982926FD6CA5E1F3750C7DFCDD5715869092DBDE4DB0164E551567DC87E7B 003A41EAF47463A0F677BBD3ADCF4709E08ACA108BD076CE993068A6431ED97A 4181BEA89CCFD7BDBBFC892C0F4D15A75FE208DDFFFDB1544062658D9A587ED6 E000F66A1F17080D187A6D8E6527B89E10551AF1F8FEA3AA87384AF4664BE52D 13FCA2C0081613F0CD796CEEB06D03C2BCC2E42C8C1B4D7B23DA0DFA7C84997D 5556977DF44F7224D82CA9DEFFA4A27569C6ACC8AD127D4A39AC6684040E6799 1EFB7A0F795F7AB18C9702D352A5A9BA8D7FE7CA709DFAB6DB9155D2D1368A12 90145D1809E05625C37C0D71E23D0561D47195232FAA5970265F588C82A6DA50 26A66D7CA3ABABA6B937C469583B7B1237AE6DA66DBE7E91B4E80AC1FF8F6945 4FF694AA6D9C3B25029FBDBE37453274D6BE1A7914C8EB57EFDA0C92559F3FEC 72F8E3CE874AFD49FB15BA8E522D8CFDE1C69A840BF0D7E45784642F6680C1BA 894BFD16D7DF40FBD111DB9DF3AACD08AA4EB01BE973C98F6F3AF457AE31C452 0008841418CDBCC2C21339EE42E41ADB6C62ECDEA8BEF8A483402CD363454F66 BBBE0C2DECDC90307A59EF912EC8E4CA6C14993FD67D33954F623BEDDBBFED3F 09C23C55596B72BD878BF68B557A25A25AFEE1A3C605DE39DCA0D586A081E263 4FE2F07228ACC92DE650259A2DE812D1FA36527BECF5DE7AE586123DFFB29942 0E931039D95774E0E961732ACCF261193350DC60116E8C469BC5482B51E717B0 730A03A27EC79ECDD9306DEA21534D2804C745F45CE4B113F20D1CBF8458684A 3462795E7901BCFAD90E2812654EA2966C9064FA05DC20151EB8971CDB9291FE CB6F8A18F05E30EB7BBCC169205D5FF17DC78FF18324EF97E647F64D73F0263A 69C2D2D49119E36D310749ACCEC23F2F435B967598FB71D4AE7465AE82F9C4BB F5C980CBB9C08C9E867073726625B84569ACF09E2D4B7A62E3C824631BEFE27D 54C2D8E5B8511F987E96279EC67672ADAC8A55FD95346A89A5E98273E6805C84 94BAB7BFD758AB05D898EB55947C52B6888D6B16FF3C4F4EBAB8D03BFF4773CE 85A1C9C1FFEA6736CD22E099515496C142D4841450C6493C39308469BB4CD63F CADD4660AF12E09176818321D89D6250962D0ADD925E6360A12E4459F8A35FAE 4B2E60ACA34F95BC7D9F51EAEF17E005D85ACA444093DF4CB08976421B9D41C9 0DD437FEF4E85C68CEEE5C0DBEB7BE7750075ADADD6F53A7D44C3E4457AAE62E C917BD7DFC8E76A0520AC474570DDA5D3B816720DC627DFEE065BF1007129438 875D9ABD264033847491D43C9A9711714AD90BC5FF3CB9D32D14C143991C090D 0E8430AD22ED7992451FDA1E5179FE72472FEB568C83138A47F0277C81857F8D F44A93B07ABC2E874AF2E8ECECBDB9FE26164CE6A7A5DE4DF18648447751EA97 AE6F927FE9090BD42FB13C65ADA216AB7D33C6BCC127F42503E6E90C17653751 79D3FD5583E815AE0440DE02F41042D91FBAF80F7289E7E4F4959EE4E7C6222B 6D23CD8C79736E8325A50A4C9FE3A35CEE9BAF5F51C02932F8FEC830B38F0240 B502334C036F4E1BA4367161E7AB3D4E36F4A2BC9C8B5D37F4527AB9BBBDB585 F8A078 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSL10 %!PS-AdobeFont-1.0: CMSL10 003.002 %%Title: CMSL10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSL10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup /UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSL10 def /FontBBox {-62 -250 1123 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL10.) readonly def /FullName (CMSL10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 42 /asterisk put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 48 /zero put dup 49 /one put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 72 /H put dup 73 /I put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 87 /W put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384 7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0 C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814 25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5 7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581 299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8 80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB 5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584 8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894 5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B 966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5 9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4 A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD 94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669 E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929 5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23 8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5 155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E 4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038 44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D 8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0 04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07 111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344 8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C 567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728 C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214 C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094 51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01 66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58 9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6 2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4 4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7 5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256 0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9 233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF 62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086 B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88 DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0 C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC 38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24 303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2 8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1 8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2 C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53 9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363 4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29 03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212 93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8 91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0 FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27 06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179 95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954 9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2 7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972 6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31 5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262 3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91 CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1 797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0 DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112 CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19 8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51 04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757 78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE 730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F 021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79 CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57 90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD 97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0 F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9 4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394 40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7 3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B 362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7 DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136 7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233 04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8 DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049 B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F 9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229 3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2 B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571 74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A 44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5 A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8 3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1 BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64 01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4 6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C 683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D 87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF 550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6 2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB 17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB 3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B 1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514 61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7 124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2 ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746 0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246 D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933 F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2 BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003 75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A 8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3 B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E 7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7 322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E 523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017 6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77 66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633 B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182 5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1 093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838 B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72 6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394 EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966 8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE 144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0 7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F 172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9 254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6 5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71 011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460 B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC 0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E 3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E 993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E 0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9 18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0 ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228 1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3 A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A 6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20 DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323 1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761 93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082 E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62 4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 AB7916D44EC2210CB941B1422DEB13896DD78CB7B7F400EA5A6CD639D9CC828F 52311A11F2A84E566DE98826F1E28D55FB08ED70950205DE52C207CF14238446 084FB4DCE04C781858BB4E0744C023EB0B563769751AF1D807EED20E4AFFDC46 3C1510C782FD92902761F7557FEF701AA67B20A9B019C760B2BBA8A048BA3681 35DB440925CABA05B8A13B2D30D14FA875D3E200A018C78BE2E930457BC33AD2 FE3610314A268E9A30EB41F7C771758410E7D1179567B22CFEB5163F7CADBC40 4D40860E83BD5DF2BAB4822B55B863D0793D3B60F0DDDB6DB993711C4C7C2F39 31D02C7D8EE36FFF8FF2179534EE4F2DF388C96C9AF6978D929610EBAA615EE2 FA163D8C52E5810E94456BE63570A6878E791DF4958E60C057FAE0FFA4C2B7F6 192AF8786E14A6C6379C6E13A9C528A198B8EC8654AD69CCB5C209964A2B26E4 E636DDD749286B80A5C22474B49FC5C093A8215D49B30ADA383485030AEE93AF BABB827D996E563D1681528F54353D1245ED78D1915CFBB5595E3B9272ACF503 8FEE0B65C4CD9D5783F948ECAB51BA25F77DFA440C1D8B636FF6A15E6BB0800B AD6C7A22C4F0BF6C9A19F0E696B103D8150AAA337C303ABE10C87D87549D150C 2D9665F99AADD64CF8FB790966D2E63B22CBF1B1F1DBA95E3E233469085EC593 0061E1CCC33F1B16293CC11C0B056473F6C8F7949142314CC2B8CA8582DAF280 9A41AB9C8FEA6088FD3044FA72A6A754D4E46610BE64E308209D819B23894C90 085143D0997EF4DAFC31A250BE0C3A45109E895B0612BC18513B71507D0CE5F5 052E003166D1B15238ABF9942D4FEE2451DDC06CB4101F11D261B9318D0BF6E5 C467A31637743F2DAA90E874E79C2E402EC53CFA9A5F4546BE39A838B5572D1D 1B5732C3B25713C60BA9DE651D74163A0F9B5710261E0D8980D1C8249CAD7F6E FE7ECAC7BD98B3D195DACD921E686C510E89FE720C180F04C9BC350E6569D98F A47AF940C5AAEFC1126AF1B85C57E2210E5354A5219CA51A3BBAE42C02B584AF FF81BAC8673F4A37A22C8BF682898DCA81288AE3E8B243375A5BF77526B5AA60 1549E16B2D8D9B5151D27055E5702D895FB238EF2A533E1A8C85E565F2D5D0EB BD23CE36C8DAE8ACC54D6F30F68A4C513404B11D78A2F5F19836DEFCA67D2A21 B75599819E576001830F03E7056E5E485F336EC4A4BE51FD2D46064A8D37F346 A24BF0E1A977FF91DA4A22C604D1F6080524BB3B040FE0A359E15F6ACCF22CCF FE1A903559F0DE0DC0E96EB5D0D11BFA464635982378D6A160599702C98D8F2A E6E104974C94798F458F5E74A628723172377477D4E5E2694083BE189224B59D A1DCE9671EB9E5DF532ADF8AC863018D7E8C602F9A6E698D3A353DF3F70CE34B 5193795E0B96A2F3B4D964924BF553FE384A914D58E5395E288FA82B71D64DF5 CE4873425BBD32BC37404F494778872BE88203C113A12496B7C0A8331F58A592 3376B02CE5CFCDE0E48ED0FBBA4C257CD7EE90C3EC862EF8175698926DE0B68E 462B317EC6A1148DBF9BBCCDA4BD4CB905C7BCCE2915E89FB30FD70DC83CE40B A698FECF8278CEDD28309C5B1A639F987830B5ACAD2D66305FC2D866D0A74288 A49CA23BA8857DF6F63DCF7C1A425C48A8D36D4D65CA427754C951776EEBD9D6 6A18FAE4237B87CC59D2A1CD47BB12A877F00FE69838FB242978FA21ED6CA2AB 76492465AA22220F58A181D7A6FFEEDEBC8FBE966A2353247EC3D8330E9CB18C EF1D61D9909CECDB6B943673C127AF7CDB6B249F9E202A4C9B110423B9F7C782 66357A31DCAE814615A5A319182B42A3582872E8DE39FC9C6579C64AC8F443E4 97840C614357A81758DA9F7FE5593160A2C5EA3BD9F7250F65E00A127A35D0F2 91F02F2B7CB13D558D362004ED8B7126005C308E9CEE7796682A323B2AE86A30 9E23684DF6FBE6BA8616419D6419B1830FED91B1933EC68B290840B300B10370 B58EB5E097B674B5C3E7509174EAB21C7452FF9B52C2980CFFB1230B55348BE7 4D9BD6B7AE5E1B1CF2F1C95BBEB0A6CED99260EBC0B344D036D1BCEA9FEDC85D 9EC1F2C9B6F2FE607E2D24F771C23E03C9BA75D8C8799094DF3C4E0304BBCF3F 25E0C964294228B1C7AAB6BC474449FD8E699B65D311A3CFBA80F6ABB9CE5926 497FFF0CCA03755C4C20CDE7FF1B317E71412DD8E82B08AFEDA6E1CF6FE6DC8C 4E38B7416EB6373345C36E9CD7089B0E054A6594D8B0AB88AE4DAFD9BF6AB83E 32EE0923D01E66D56E0684FA96D3D3325492FE933F0E1D3A7C74BAB6AB15BB0A 3512EA91A63ADF032B278E3A13F71BA8DA4E0CA6112BBFC2D15237FFE47BBB49 3EFCAA4139E445306633370700E381E1C001337F82009014A092E52B491061AB 7F8019D9C7CE4B358E5E8E9BD41BF9B50ED6C2D79FD73B716334E51297085657 40B6428AD16333CC0108DEC3E57CF0E7EE528663707187A44DD55954AC5CEDF1 B451688321E2E825A259FBB7D26DC8BFBADBAD045C0077E5BE68B818ECD13765 8C636EDDC2B6433BCA62599EC4B2593D7BEF1355D549C5383ED246AB2C3E6FAE 5AC81CACB0C3A84895847407DAB75B5786B364B13FE0F246BBF6869BDB3117BD B0B85BBF14F699A315DB6BE54552D0C9CD10BACAFD6A91280F4AE599F2BC79E7 6FC2289A136E1A07D38376C2D3173EF851A097CC87101F638F27F7EDAB572B81 6C02CE27E16F5A58A120D3F57CAA19090C95AEB29CAD81F7451C9D23BCE1F3F4 90813DFEC50B2A82CB907AE154A161A711C039FC174E1E35BAFAAC8F23EE8542 1B29DFD1272E1DF5FD019AF2A477264829B8A1CAD37BC8EFBE06105E74DEB850 32D99CB23B7C73C4588DBD5082A81757A29661FD48C26E5F912C8FE91A8B4F34 D824965E08E9F09F07566E0B150C472FFAE787983834A7DD0A107CDB74E88971 C070FB0E9CAA2C89F38438F7A03FE86FDD1952A3297832BF47482ED86A1F7C3D 417A40F376FDAA0C5C2B4ABBBF81B7A7F98FC188DB9D3F24105A5C46F8E95190 1A7D3FB0AE4239F449D511BD67956B1EC1F525FB18D59DB64E85130B5A0AACB8 49F428C3E0C6D49F427F9D8F46C8215AFEB1DC8E7826FDC15743BBED087943A5 03268D2111B030FB2AF950FB31DC9A586A9AE5885611A41D472847A793024FA6 1231C822056A467806328FA7E5377ED793B35F63573F732F37E2CB77542F5202 971DB462A9BC62FB026804113A5D5302D425F0F0010FF5FEC527D6B186DF1472 C26CFB745BB58EDB9E4BB82ED93F79C14B02F024EB4A5B201150FE555974275A A7EC7B3A43D51CC07E2B500C58CB1A3D3053E8EEEEDB175B34E07F8AA5870B92 C2B83FD176DDD5759AEB0B2E830E322B79C1594DAB6F1A480947039960E7C336 3806AD208BD519261EC06BCEBF9644C4E393C341AD01975BBA98EE091729FB6B 65525C29EF52AE7E192A157B14E9A966AE44F754BCB8921A41A254FE73004558 C24C0104B05BB03F2D728036478234EDA8BFC50EB7AF9E3DE533FBCF4218ADE0 CCBAEC68D1E58D193C5C8E44E09048ABB8A424BF47095C3026213A737D21811C ED6D5FB33558AC6DE47E36F895AA3F28BB8D2D95F47760464FA43F651C8D1AF7 8FDA203C85FF5E528DE450A45381F6E4EC602D60163FB6A37C5DCB71BBEFA92D F92FCF38A84961D4ABC19697A787FA9821B2413A442358E1E7055B60958A8441 141F65BEB4FCF018BB5A03AE7CA3DBCC895EFF8603A58D1F1E4A5738087D1F6F 658E8473D006D46182C7765010DED78D28FF964BC738EE4511836BA8E37F476E CCD904515D8AF4F4D55EDE81CD9A7D0E4882A1B1230D3C3B2054ED59CDB47824 6237B62DDAB266F6182FA0DE3C6A6CC8140FFC9CA0D1AFDE2D392F9ED900AE6D D306E0269C8392A77262AB2BAB9622A78B581D6B5B25135A45C86E4FC44E1859 8E7299ABFF56499E0D80036F1898C33D11E086D5109165D0A65763B58784E4DF A19184B3CE380708B9F8064BE7A284BECC8A7E05A7E80EAFE929077887FC5485 979A21EA5C3464B0245EA502125F58D12109F004B9E10EB64FC70AACDE12D286 3866345A485C6014B1AFC036EF065ECABF161963CBE455FBF38FE747AF3D87D3 9B879F6601C8EA1E53A47FE615E3D2449674B731FD77F7FF7558E353D85927B1 24C2791F1D7BE9077673ED97E09E9CEF3F1CFEFFE483A4C85FC66942107B83C0 08B334BA91782F11887BB695F8085949039303FC16E7BBE6702D86DC4AD3F016 721E0727FB713005968432C736C922F28479C4B79D47BD822F9EF2C32B53258B CC9F638CC7463F17C87D714EA9FE17CB12C9D52991498A99BBC00FEAA9459D3B 0C46C260B3C26A235674A22FABB22342B1B826D55F26D6FFC7C8B25BB1AC8D4F C5DA87FA9725BC2CAE75C46BAAC2497A7B82AC0A5493BBBEFBC8F4C20454CE54 047BCC7D34652F3A313241A2DFB5C0D5D2044FCB9BCD362B782ED0C0C1C5DD8D 644A84F13EFC98BD46B9D6D49BC1893C05E74A51F920B4CD231216524A833C18 C0C67EA86C86F556F84D15E829275BF4727A1090822CB62FF416BAD2DF0C18C7 045120FA62D43C8F1577E599E5C76CC674742E7C4BEFE404C8648DF0A9817FF8 DB061845085EF12F5DEB46ECBD3FC434A4F28104D1C96147BF965C89C87598B9 E08B55487D12A8BA75494EA42D647BC8B1BFEEA70115EA418B1D76BE05EDC032 BE66EAF3E08361D0CB03AE9F87AE76FD60D22FD28B6355742159334EA6C06555 377F938C762AF675FC18593FF5917EBF6F9BECCDC4F1E4B844E5632F8722B459 F3F62EF90B2EBC752093FFAF98578152000F2EBFD23B8D811C811AEB1B7BB623 692DAC3C3797214E2E50302CAE5A55A1A81ACAF8C2B93722857441653DFE9B5A B22A0BCC5CCBA2193DE5EE973F47B09D9DDF8BFEA812308A500966411E4C9813 C4128790573AE6E8BEEC11F442AC98EE1DF17600D80281A3DC33ACA9A92ED59C AEDC5005BC9D0D4BDB75FC84F23977D5265BA8D5C40267A5FB948D5E914B2090 A8CE7735EC55A70FFB7FC6BB6C40667D9DB75152746C5B1E04F44EC49EFC78E8 7511FFE34892778437B27045839303B9BCEF1C6266C4FF22FC7C0719D5FECD7A EA23D1ED55B7D774B8A235D811FAD3BEC77D0D0BF0889D3830D3000AC07E2BB0 49568B90D869CC9F6E9C2A4803B410E33A464EC7048D27526E3EC5BA95949A3D 3FE96D48DB7243324A5181DF197181F193FEE8691C04E919E8884F77CD1AE088 8D4777228CA4C9758D346DABF4BB658B44B66AB7D02B2FCF07A9A70683E8D03F F421D37C558BABDF1389102B2E4427448CF9D3EC745F87C6B970C7AA2A0D0373 AFD00324D47487B33E335ED4A850D4195FD05FEC6E864BA4E9C72CEDE18207E3 597838606BEBB1150637FC79798BD2CD18F7FE5FA60F8FEFF89AE6B0FA468BB9 C38089C05B49BA1CDBDDB40715BB20F659A8553D4FE63F2CD5A4C3C627CE252A 9058EEB29BA9F90E69727ACC6CB705F3A51D1D1B4A3A4D7CBC53FB9916CC1FFA 2DCCA0E1BB275480F173E9E565D5B3581F2CD148A2D7AC0F072B0DEDD92E2320 0D48A2D1A21F00D8EC27B2840BFF210DCBFB89B0E7A6ACAD1FB9F73ACDE3037E CDBB9B62A0B1CB500417F36A8A70B309281CC592B689114E06896536E79CA043 213962462A6E79BA5AE61D82EEE6CDE9A7878F8AAF84588727538A70E346B80A 24A4C5EFE6342C38C335FE9B46A7F7DDFE091477F0C020B40D2352D7F50AB515 795E60906ADA155CFEA213D90C11DCDE1C9A8DBAFF45E562C9929DFCD863FA47 0937D34E73B01868A0F6772F7E0353026097B916A2D952A0289B7007E32C074F CAA9B38B81EFC7B1313C5D00F88C5F068A02224AA46903836B20C5241C3266C7 F18C157ECFC0EDF5C1A835DFB194C2C1112E02AF28F500FE4C680F39042E880E FBB55CB05298E82E7EBA0A69CAED282D56098212F8B73801D42FE9505AAD177D 3422E7AD6EAE8E97512926073E2940F9C9AC2F48CE3B13497843AF201D6B6B64 32238DC319F66C3E7E2118CAB1110F5DDF17B5A0ECCD97FFB1CEDA94FDDC8040 52FD1C57F7E66BE37F1A33D440BF2F4AFBBCB38797E32D9ED00CB78D9FCDA9C3 4B3E98B085C9BE53FDD4241324181A62493942C21F78C88A7D8D2345382517E4 42F191649B1A74C5D7C2B43164666282BE2956CB777A838B879F044CA1D1CD78 C2BDAB54A72511C29CB289655E41843869013840A68027DAF0C549CA3760B60C B8E0819AC2B88F09F3C6D31EC3CBB473363EA397BDB78E912D724C9E3E419E73 94EA9BF281C2BF8F00CA535B079C7DEBEB727E5E7D0E0204870F92D71DE705E1 1846972B3D45EB1487A77C218AB7852D683730B5CA16F599E00DE83226D80516 5176621A65E12D48284DD265D56FC330D9290066454370198D9770FE4E10DC7A EFAD00E7717CAF5931D1BB8307D587B89B535EAEECD6DE63AFDD6D61B013202E CBCF3337F7E982EA2F32BEF54F522F9F1867DD30B628861D15539359AEBDC060 A756F4E6B5867259933D91215DC32B2CBCD08335A3A2F5C501AF422A961EB188 76622B3ECCABCBF3276CCF83B07D20444DDCBCD728784649170B7CF1E13CAE2E DB4423DB8A6AD7ACC12CC0EAA93B48F0A82C45E14D6DB4D88ECE6724E1D3512D 7570ECE04BB2DA767401E742205B4962677B0F04DA96EC4143917AA9C3C7F832 0CE3E99FB8980962968C8D8C77E40EFB211029C725A872AB549C0E44CAB2D033 08BCE7D54F951917881E289D411B7F9CF62E850D979CA9A9B4F1B993AEB8E40A 45A6F7E178DBC7DDEF689DCB3716668FE53809996A636B187B0E5136BFA883CE F2FECF459920E58D453937FEE8DC4A562E1747531860F1DEDCFA8022B40ECC6E 0651E6E710337D5C340C1B5E7315B6C788A2D7B2A1A2E17AE2EC1F9A19137D85 6B97EF446C16B33F2EB9B5E5BA62C9ACCE5A56880D3C052B40A5B4F6DF4BA7AF 63675AFE59D925C328E85956F5E873B3199D1587EB3786ED7C223AE9CC580377 F9312B24BBC20C89AB5894D807D2ACA57AB522F65BF8C2ED5FA0394761BCE8A8 EFD4DD67954EA00127D6DCDC1F34BCF10A05D699658DCC4BA2002623E9488AAE 037E2BCF2872BD4757BCC1EABB3AC5BD53997109155647E74606E36BC01B777E B5DF4290548694898999E0D010E21B15A9F9952644DEE4BFE4BC9144302F8CA6 0ECA6DB2CB809729B51AF8AA5EE0718CF5B888D26D968D0C6859C513009D06A6 A752724C7DBDBC0E44A1519A4FBF3751D45674E1A48BBF77511F10916C0B64F7 56A6397A6F87470433B5D6B4BCA543AC09BC6EBC2AAEE66366CF2D712AC54A9C 22C8EB38DD43A3A9259E65AFBB66BBE006C91BF3A33F5C96140EA1909664A52D 1DD8AC38E0874DD82C3C1DA26F174862691D6FF3A184ED4CBE325FF0009F3DF3 58063B1B87DC2082BF928B86631C8AE7B6E5E6F740A22CDFDE990B85C8C95661 46E1C9AF820165F23F79CE75BE8BEACE1A93BB99F090D77A5001DF044E8250AC 50D1132E13C5DA0E3AB87B8032DEBD4172AE3C1450773CDB95778C038029D7CC B9617DF174352590FA1A5D59A6409FFEC99BF0262E2C9CA86E3FAB1D7B3E2B5C ED9A12D619817A979A37E8A795E65A2C597A5FFB20639E02162CF3C89002C9ED 79357F3C287213C2331681A5A83B19562A7AE8C7F145ABCC8064F754348836E4 A9149FF7D6C902698914027F26270BA0B900DCA5B54A7149946F450C3F099A0D D7BA65F2A63F85B2F0AA00C1317B18A981C62FDA579BF9D4AFF8935EE4FDB17D 86566BE4FBB131807B983D7E435331853B0E37C1F081864BDF90E616CB6C6225 7743C718EEA4427EA841C2B18CD64FE10A97C4F0F312270CD53B107047194E94 5F68F13D1B7A709240DDE46B5CD930179CFA9FB55FCBFB6735E7424DD1DA7389 87B3CC0556367AE585BEA4794B973B299BD3EE4D9FA80833042297973210041A 97D389C51C7715FE143F36F0600682A0B2D9FF2A32752F385AA6431DEEA4F4F7 727834A01CB8FB8521238AAB2840E0C0B8D8E9EA78671AD5FDE58A29C3984917 92674B76312846AA81ABCD41AE8FA2E606D014E0B809F1392E77286995D05DB0 0B6707915FBA9CBD725428E6BAAA754DC45499A430CE931EA84A432C88003580 42ADD71F3290FD1E099F3542C1C0058A88CBBF059DEA3DCC463CD567231CAFC5 6C6918ABB202A048B710C2762E6BE6EABDE006A2557CF525831C42F6119FC97C BC5362C9D26C535CC109345F27C1EFEFD7BB6C851B94FA8F041A7DF0647C4189 2F36858579E3A8117C8D166DA1203E956BEF76B53A96229D17B9A0AC825D0D8C 985F5CD86C6BC4410FA3FD976128C2FB3C11D28C42BF48C412CBEF8DC43A3E82 8ADE7AB8FEFBC97A7C56A87AD689899B3E5D425178BA486D128A441701812B2E 155D773C36EFC26E895B1E42C266C0A42FFB9843B1543D612AE11A9BB79F667C BC1EB4B71F90EAA3F76E7A74E14C67A702DDFA7D47527DA34075E55513DF8CBE 9805495F6D9465C9E6C125578FF2FAD484A20D1236ACA83CB397F36758EF29E3 008B29781C8AE84EF10271631A505802A815EA85DCF750C94CBC7078FECF2633 461CB3786651E2D9A1D5843E346360BA511DA13FA80C38AAF32FC71F83760C17 2BAD518FE7D7F3BC4D519D00242DBED65B9DBE9CE156DFF29A8BE5509A999044 E7C773C7FCBC7DE8E39CCD8A2AD23847A5375C668426024577B92BAF13737982 D0F4FEBFC0B737ABAABC60413DA58E484ACF4CFC5D000AA7F716D73CEAE4EF7D D0583E039FC5581D45B20BC7E997BA580900C317209B3438693B81FE56A089E9 2B45DA8FE45ED4B4495EB7B7DFAF908498EB1E083FFD92F6BBAA81152F2182FD 38633737BE1A8F1306C28BE15EB1A9C62E34695EBC19FBA95616C5EE9011C793 44451F7EB64694A13BBACF00BD13CD1A53723145B924A7816B8BB903AF48269A 5A2C190F02C5796FC21DCCE0E5E8ABFEAED20AD3AF2986E166079D6E4E724B6D 295FD7A137DC0827C7E7BC12EB5E852EDB1D8196141F5DCF225D797EC491BD58 B40F99AD789075C138C7111C0CD94916861E1635B28A56E7AB874EC147A9B520 D2747FF57C462C505031BF269CC8B8944179F52BD89309B0EF555BEACE3EE882 DA6D5B23900D951B52DBBF6D599A456E1C26A764881E4CF9B6441E614DBC6FF0 22E41E54FDDC9261BD091C14DD2CEB08E465664D9641B90D514D890952625E89 C8FE9D3683FC9555D345994554DDB1AA757554EB7213ACB5E23F2EC9E0B366CC 3918AB38BE0CF3142B017B1D6A82930035B8DBA75E4C82B3F05C471C16A39F58 5BE508CD96725D68622D374B2D9DF5E20AB55211C688D82241AEC10C5F34524C 713F440298F0C972EE583D7DAD6DF8A4ECA94D74E386580FD6F17EF1C500407F 93B2289EA48CBECEFDEF0FE42468B8F995DCE0E0EBC3331030F9E643DEC6FA43 B217D08818769349B66F543DD4D615BC7422811B515DBFE38C7BCDF873CCAA9B 229E05B247B5E1CDA8ECC2B2DD9EAFE1ECB46A9984720984ADE2F7CAC17F29F2 AEC25F3569706327C9B1874AE5CA3D9EED82789A97E5E472D29B44AD4F067205 57713A251B3E0189DC75DDA15AB7AB5C8BD70408AAEFB7C2D64567AFD28D2441 C87B3A24F95BD0EFFDCD4AC40AA1654869FC996DFB4BF398A3BE1615B42A5BF3 51CA13D3EB4DD8DF09E042254EA1014128C8F3A16DDCFB327D1EEAE7FBD60210 52896DEAE39BA93CDF5EA4CF44B5606C894327FB1384F1631A13A40DB6C9A171 FE440F2703849E0BA34FE0CA0D4C1FC9325096107F7E0DAE33972DD7EA56B64C 1143A671EFA91DA6164FAA378BB47717AFD582FBBFCC5079179A014B09BA5E4F 1921B31139230E21CD4F51B8ACF4B124FC627EFB24C59D537584D2E0176EDE3D F28018366A9DC6D32A524ADC1AC95FECAE94F6BCFC34BD966830F89DDD183027 81DEB19FB81642C2248BDAFE1E76AF63E2E5D7B877A35E0EFA8B31560281EF50 C7E30E6D51DEC5815FF32C8D77E4998A9371B77A8E0011BC5E11491CFFC0B194 82454CAE336A9D3B86CFA3A511BDBDF5A9FA1BB86BBCCAAC317B20ED0CF5B808 8120204E23A07F6C0E13446D6FAE7C5F1A72C2A205FF0D805A63A7040CEED398 22969E4915A3B9FDE22FF9B51DCD706F80D1D6B564EE47F6564EC8684BEE04DE 7A737A2AA16D61CFC9F1FC46679D110666B558C597C25808CCD4E792B357FAE2 48E81C572A431F77168F45B478C45AE1F8D941972BCF70322EA91042A3F2C2CF 25F90D648F6DFF6BF44DDDCFE538195FF0509A630C430315D82C6B6AC0FE40C8 D6326397CC9710B327289ABF1E7A9ADA9F96A0EF63BC555BD3EA6BBE56C8E8E0 A5B3D5C2A3242F825F865C87A9958509460EBAB50FCBE4018297038650A0A988 4503FEA808399FDBDDFBD0448A26AC3CC0738301BAC87757F68455764C04FB46 DA8ED6DA80738F50D45D1D2BB96B2ED4427C8D115534C849AB959E0ACA334ADB C1213FE6A99BD6647FD6EC8EC55B41D0FFFC677D913D48FAA4F2203F43458736 71B4C678BE42D124DAA986A6E0BC1A634308AA35AA5B1BEA20AE164CD35F6343 E2E21E4F339D471D227E25AAB6DE30F8715C8C1F62A66160833E07A78036AC10 6B3F0B6E559E6049F6C65E25547E8270CB82864B0EC463621CCA7D76EEBC9361 5F56E1E22C476241F9D804997C5353AD62715113DA0AC722B990527E4BF6D172 4BBFA0A0AA0C5CA8008FC177A05F7908111D61865E8737DBDAF30E92164B39E6 58583B4A0583EBA4203AB1532DF32BFA8A72A48FB4B585F9DD9ECF88622EEBFF EDE453A1C00148A6B718D7CADE28C2DF77B7EA48C81491E94852D326738E92AE 29ED6ADD34C78190593E83404AD4BCCBB6CDFEAE9D4F177F71103206CA4B2D30 E4DA7DCBF952616648EB555A445739868AA4A14A75B05DB425937450222F9BBF 64F7C19BE2D5DA4EF552F40503BD7F3EA50E8C2A162AA8A844F0922DE1E577D8 770FAAB2541F2212D61622683CBF025160174F914B098283646B37DADE179CDD 50609510739EB25E11388DEE403D1B9CF2D5ED8F472AC9413069CDCBBBADFF24 6BAA20942B7F8374DEE26ACD9411DBF4706C4B892A9DD5817FCE01C0494CC23C 047EDECA0BB875FD5244550DD25E62EF09299F74205A66978C912C5A53C6B4E8 D08E5A1939955FD15E8E5100DC6EDED963DB99B422CE461EDECB09BAB62CF8C8 0F1A5EA6C6CDF8CB80FD3C042CAF38404C1C316B9FFCF8B52E4683B33EA525B6 7103B83C2B7B2538FF157C564876BE135246768C9FC7ED67EC6AFB708870AC09 911E384A83B35E00B44A3A4BD1DD43153F2CFD11E72695CAC8AFD5F3803A9435 51BFFC367448EB7FE9D193C58661E3954E42EB60F72CE9D30182144F78B9B127 B7305C61B97638530B15715670AA4946FBDF19865FFB380C1CF5E814E27D8C27 9112A309A85846044215AD34ABD5DBB9A6CD61A02507B4D6BFA05995BB8871EA 8E9695A147EE66A210F1E217A2E52B345BE95891AC31C6B3E95876DAC5891FAC 5CCF1A6C451D59491398614DF4166041B9C0CA71F52FCF46D85F080185E5020B 995458A641715B12387001934B33354349522715A6B6AF9510AB8E9DCE3890F1 7310B5F8024E0B402B34B4F152BF4696D8A77614D3279ED6AAFFF6FB8DBF2052 5AC7675F7EE907A6A9E24F69643A17D96284FB2ACAEF0327833B91E74562841B 9647D4E45365EB5F143C068B560BC54627D2B4AC3E0CD6574BEF0A6D8707FD89 182B8613E9E0C43CD6CA97538CFD387DB8BCEA74F30A1234363407A511DC27B7 5F32A3C8ACA1F86D2E9043880EE84275E68419E79D161A0013E0A109EA37BD68 6B1E1AD4D5B50FFCEDE468DBB54D8CD564A02699FA10C65D87E5D8D28E391A5C C3BC6AE2E18F71DAC5EA7F271B6C6832FDBF0D8D25104CF52BD93912398F6751 04F081F02D01ADC4F8845493EB11C5EC45C3673C2A785F70E3E3C696200C54D0 B35553C773F42057F10A7977FAF61697CE1D1E66AFC9ED7FC59C31ED12814343 2DC663B506C6AAA7F416065EF6830C21739FAB9FBEF85236D165F8FDB3ECBFE7 A15CFF27A4D6011C2C300A813C00524CE6C54EDC08920659EEBC434CF13294CE 6D31A137A49FAAFE7ACE6A13029A3F1258C1F00C296BF9838984F0AEC83848E1 90616090EB1CB156E5416B06F57135FBA8513565364070A315EB58874FB05E18 6EA1B28F4218F4BCEB6FD1308175FF6C279BA6E003E984B6701BB4E1FDB3524D DE45A62C8B6CD6D076263BDC8E2DAF770ABC416980141AF61E93F104FF825EEE 38C47092D068E8A387CFC722271EEB54977366BAE5B59A28E2907B2FABF4BE0E 3B213D8BFB40EB63F6985405D1322FDB941168A14D5908847351C613DC9AB450 F30F2FA3E7E587CF0BF5C212958396DB53559E255813B1A3230847383DE89757 F8D5DB7B2A40ED6B17851CB4F16C6B92E36D56AA8879D35FA42741E56F8BB482 5CDE18EC31720C3A4ED4E1D9B0DA78F33BC3766310EADBC2E62EEFA37E5B6F5D 548954B8BCF32391084B7624F90CDC81BA7C859B328FFD4CCB10037B74B6AA2E 3490B6792BF8AE8BD32484BE3BBC6CF4AA9520A5453DC57B84C0191593463399 3E0DBA9A650C7C4E1EA4B89C92EE2969FC3DECFA3476857AB671A7C448E9E34A ECA841CFFA739F5AFC35E6D79874BD3E2EA8D296AAE4CA5B6638B42B4532D73F 9A827505C2FF61C679FEDEDF42A89238EFF0ED6262CCCF1C83D7C853582CECD6 ACAA428D727EB24C7D73BD180BB4656BB86C4FD851E0B4630BEC3A26E8E8AA35 EF46DA4ED0DC5265BECEF32EC4276B232028C0F838AD7ED8302840D0028C8D09 E6339EDC71B1296946153D0CF942074774A641BEC0EBA5F8E1339057F5894EDC 71C129E2A6FA176658ED2ACD7624CD0A1C097B1D2D473C2BC3B6AA57FE523C7F 8C8E440D35DC20742596B4CB3BDAFE616CB5E62AE65D31591D86404824AE822C 11A005FF2126019C235F46E97017EB522D9607EBE470A7829E7C26644E8FF329 14D99E34D496CD5BF856DC28DFB0D444F1645B91A66BFFC2E8BE1E16FFF6C014 531CF12A160AB4A04C60AA8128FD963C41BACCB964DA973BEF5E9A24135D97F3 F5366C576598570701B017D6B926CC26EF1B5D542CE5E1F70F6D1E87503BA8B4 03B6FF8B89FBC69CE1CE1D4350D9FBCB4F82911F1703EBA205FA9334D610AD4D 7A1CC4D1E6C1F4CEA2B44EACCFDAF8E03380D28601CC1D9348C97D8F9CE57EEA E47FBBDD1380BE9DE4EDB9DAB33DE3902C0A21658FDECC414EC3B3A0EED730FC C48AD1E41183A824E52F97BD1A2A2064A57465AD4C43BDE090AECFD9D6367BDB 12BBB6A243D46477EE41DFDFDB2B117932EC0D031D72A308FC31A15F849FCE51 8DBC93E3E0CA7616450E70FD78608545568E5D6A48671984C2DDC3E1E1D9F1A9 85D99FC7B17BDC29A205DDF584A84547DCA587C2A954DF22D576850847B52D68 BA8030B7931FBAF0AB8D08A765E24DE5F0D8B221BD705E2003502134DEC27581 18E341F63C4E112C22870E7BF587D2886C42E16F206900F3667B3D3383E1304F DBD345CFB73716CA68ACA9791DF448074464F4B50CCEEC86E21E3C3A914AB2E2 42336C063BB1236E0D4D48C957B4B6C9ECBFE9A96494FFD42DAEE4536A1FF654 A9C7C34B296FD670C6C1C6BF3B6FA4C24EE3758C588A47D94E96FBDC5FF9BECD A8BBCB4BA781008B6A5CC88493CBE3F6D74E67E5CD30BC3872077D886AAC9F9C C070D36E84E752A2A636CF68F451FBC903450B9FD36792C1CF9E49CC98B4890A B65231EAF73628ECC8B3C318901FF387326E2CC40A3218A79071ACF1A225CB0C FC850EF019A47820388A26586AB2979166B97F1E167A64426E08C03B4EA97213 61F08047F258694E32087F982EE546B9B5A5BA3E8CD96377A0B5690C5F0020A7 96FB7829996F9D25D67EE802E05AA9A40290FAB56CE8F8D1447216BB83AE7B63 B96722E3E9466215BF614F1D8AFC25E59C2EB9C2C7D13F5B9D00D18A998D618F BE7ADB4129B33A71C35B11E2E9DE1961E623A39AA6276FF6E4ECC389360D6075 554162F67D69D66D5FB21359E375E528E1E14D7CB385C3E8476F900207C7E8AA 9474F526899E8EC5027BE24D551E74C8C99B39160551F7B7BE2003F8D9343939 49305B8D3522FEAB0D0C413FBDE5F6397618C5E7DA59ED5BC3FA4CD95CFC98CC ACB69A0A7803ECEABDA3FB3589EAB7551D7E1E3D0DFA60D4F1FDCECCC2BD79FA C806C2CCE4DF768D8454893403B10BB44A2D23629372B018D10F184614DC9C59 F10DEC6D77AB55A710C807E7D555995673508F2228F427A37855549508A6F41F 880D9E983C9FFA5E0B1E8829525804536BCF213CB21E7D0A94F2C13E1599B2EB 135464B3B6CA16D1A3E5424CA492C77963C098F398B61CA9D713E0D86C7F223E CA4C83F02025A632339487C7CB700CE2B648A84B8A96D405E93F686066EFE7F9 3601B8A93E1E17B4EA42FE70D24C7E18CDA5CC7CE64B6B5C96888935DF566C84 99AA5688329E1DAA4073F7EC4FFB0DDD5D3E430D2ED49E31D611F97984AB0D7E 7E151E6B18DCD4DCFF6F0952EDC070C71798CFE7F458A3533D7608C131265743 B34354738E20F027AC853F5FE6BFBE06A9431C7BC6E86B9F74EA06843E71E749 8471F0F91BF4C9EB8AEAFE5C7DA3B6317266AE50991E4F658CB22077273441AC D8788536F218BEB4F32A95F802755A902AAF18FED775CB55BE2301E115BF3834 DBD7D9A09E6031E8D366B7B1F5B2F6143406372388354E221E736BAF04DB167E 423AB83D3FB3416F3FAB96FCFFA567CE33E5C684EB6A5FAE0106EDE8E26D86C3 916B4BFEFCBB239A592E0610F5B879CBC0CFFFC5C6F1C1D60DAB644ED9671882 89787E9AAE0779271A5E608103DD84A19D22651FAD3F47E1C71A0A429B751F25 405C770D8F1F014892446E7ABB968D5F30AB29EF6C00F45723E03C9C33FCEFE3 778CCC1769123D59372C1260DA94D75D1FEA47B8860A6674522C415EAF1372E5 A2F0299CC85619A331EB47B492AB04C22D02977D239697703ECB8FF91FCE19DB 33EECA83DA27D6C99679801EEB419803F8C78EA9AC14B7FA77B4334D09C56980 BAAC8CEB54DB7363EC708ECDF3A858996BF50D9BC98E8825E3D0731387EA967F B16E477EAEE8486B8B428C497004A16777B440C1BE6B194DAFE214C8512085F8 45AFD6AD0202D937F11EF41C09B62A76C4729C4720916EAFA5CF0F2B536337B7 38167F80AB0393FCF141E31CF356199858645544DF50965FBB2AD9738E22FB25 7CF67EE01BD054345DF144731D396FC10418ADF0AB6D860358AC0ECD35576567 F427153D2EAA47A94FA141D9A90D5B06AC547F873647CA5DB91FB5EFE02D764E 3F5A7D7B1B79A48B876B9B1131FF3B7E3DC14D3CA47C9914277CD8AFB4D8DFD8 3FAA28D06D9C98CA4F72B6FA1A3DCF8B62559584932A9E7000EBA74B76304119 1CEC18643B0C195D48E6AB0596FE33C56265F76F580BB4AEEF851BFE33A0386A A986B0963ACFCE2954D72840F6C47A20A842F4030C7E7CB22453957F4510F279 BD8378CEFF2CFCFC864A53299D02EE336E820566272A7FBD161969DFCBBCF3A1 FADE251D3A1CE607A21CF3A07E1B40F4D303E8000C3AF67612D7D1040EBB4008 4DCB1AC2E82E0F96795ED044FCEB28DAA619F2499A80430D74A3DF6FE928726B 0902342AE27753E36AF2CD68DA7A39641D76EAF425E6079D0B01DA2B0033B22D 9E28588F45E886A3BB1CD5DA3194F07670BABC5FFD5F430D3B5BB616A809ED06 EA2F183D9D6A672A93E92A36CA61A235901597DE9812713A118A51107EBC1A25 7A6CB70D73ED31318A7314A3C3D0C35C9BDB25155878F4AAB36ED33D8DC1294D 84EA63B78170786493CB3CA7EA7A3DF8844758229829AEADDD93203B38B2085B 81FE224939B203E64E400BC0D7EED4DC438E0942928E89DCF80F7C510A2B1F87 97D83BCE1F0AE770D59E03498868A302E40147792168A9C07A60BF308F2F689B 5FB4E9BC9F7DBA4068C52A25CB31F180DECF0C5D80292D89B5F61FFC3846AE9C F0D774B011044C43F547BC1E6B8A0D32E5B25D12803EE8F260D2F8A956A5B46F 6B795EC9E40D1458E7C2D416DE04456EF0624DFA0E8F4279C50B3DFEFA57E3B4 7EED73A53F4635ACA9CA58899427418741803A65BEF5C12B58221E6C685C4B04 04AA4391E8B16C9E7D044902F38929BAE586471ADD2C42F58BC7F126A3BE43F3 736935703A2593B6909A9075582D57731EB5E73A8CD2568620A99017A021FD0D 0F346DBB9DFBEC179B3070968000112ACD77FBF93F9882CC6D171CF9F3CF19FC F87F9312E9A30ED4245588A00DE6FC587EC478361CECB9FFCDF1A47A662DCADC 218BCDE6C92E1633F01A1C5665FE00F722A48AF55A373A4349C35D866BC4AF64 429E0BF610943FFF401A8EB08A0E6674E171D994BB79E2FEAE8ADFFBC4A2FA4F FB80E16038BB2D7EA409374AA194754B711868431B3ED8EAD9D7B14616AC5C98 0F2FC106F7C6A78B838D788497F0BC2A7D4598B5F11380385E17D9786D5AEB00 ED987B1047EE244A645F458C8785D372D90E71F89F73B97A4CA9B34535A29136 9F97926F249DE89A572AB57A4E5D82C484CCDAA5DB645DAEE36231C7472F2BA5 29F46FFE55CEC8F4770031564696B5DB9102C854E9EC60C5BCD6E1EBC8623DBF 891C89C4BFB53A6A2C7B9A7004A58D0A1B7E65C39361B88D41E392938F09B48D 7B82E3C8BF0129EC393F1F4A78B0FF832CA1A7A702C7FCB85A7FBFE1A9CA2403 F0AEBBBDB6D490F6A65504B5A1F8CEEF14BF73D7BE2FFAA3665A7ADE79B73085 D4AF6BE52B26E45F1368F929AE47A25AD81E36FFF85B048878BA7E500D22BDAF 3D3C08BC57D7B546F54060C1F42C5A13064DB85A3EE7ECFAE562B1D8F759555D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSS10 %!PS-AdobeFont-1.0: CMSS10 003.002 %%Title: CMSS10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSS10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup /UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSS10 def /FontBBox {-61 -250 999 759 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSS10.) readonly def /FullName (CMSS10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 40 /parenleft put dup 41 /parenright put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48 63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3 274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F 388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4 154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B 4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200 29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5 CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5 C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16 131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682 302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575 F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378 AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49 28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18 121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D 8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7 69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7 BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960 C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92 B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8 8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01 161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565 F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14 0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674 D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169 B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434 DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5 261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2 64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038 F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29 AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3 CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF 5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091 73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5 A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F 1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6 D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C 13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7 C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8 08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220 B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3 23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA 56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788 2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE 3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D 5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D 9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5 2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7 F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB 73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5 B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007 11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7 03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7 5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1 60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7 622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5 C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16 8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474 1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647 F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE 257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA 7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315 611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4 246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97 E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698 AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1 EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68 0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A 94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120 73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680 AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443 8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070 5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE 6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28 B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378 129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB 8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6 753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4 93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE 207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433 3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26 7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80 D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825 09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C 5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105 B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29 E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26 C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90 F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9 7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989 99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A 96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982 1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B 48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F 4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A 45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3 D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81 838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794 5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200 DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240 5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5 46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D 491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318 F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B 0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287 EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298 E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0 0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D 8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C 8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741 A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447 4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1 AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C 2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780 14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A 647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E 6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6 4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36 D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD 60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627 4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289 BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0 1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194 6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE 65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7 6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9 85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC 7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853 BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4 9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440 6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3 2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A 374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336 39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6 AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F 1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8 E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6 AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684 CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF 9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3 DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441 670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD 99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B 8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900 E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1 DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2 99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF 51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A 40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5 AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977 DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093 8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2 BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49 BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E096517A 0CEDD60F43DDB684BC6E4C3F6F3D70BD58AAB5052936EC4ED7140EDE795223D0 4E3B95161D16B0402EB45FE97ADAFA0433FCAF55E22BD7E4AD2030D9DC86F55A 8D7EA00901EB1351EE8A0F1BFE75CE46DA4165D78043F8F0741D4D9DE0CCA00E 5F7D89A849AD0F0CEBBCB948613028CFC39617FE9184753372C375A9896F5F1C 7E24255FD49D2109CFF9ADD9A118CA47CF58975A9CD3A960A8A08A078B98A50E 4DE619C8B2D3E15938C879D785539445AC468AABD6A6576AF0E8ED368A9350EC 717B7D3BB55AF58941B47FF639CA2946028CDDFDB84FF0060D330DCDEDF13BE1 FB1F743317C15C7A9F34408F5FF7CD9745217D9B809DACDDF7DAF9D821C06B37 25738F0D20F4A86A079EDF71583A9640173B3EC529B98899601F0EBDFE45BEF0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT10 %!PS-AdobeFont-1.0: CMTT10 003.002 %%Title: CMTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup /UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT10 def /FontBBox {-4 -233 537 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 33 /exclam put dup 34 /quotedbl put dup 35 /numbersign put dup 36 /dollar put dup 37 /percent put dup 38 /ampersand put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 55 /seven put dup 56 /eight put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 64 /at put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /backslash put dup 93 /bracketright put dup 94 /asciicircum put dup 95 /underscore put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /braceleft put dup 124 /bar put dup 125 /braceright put dup 126 /asciitilde put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB 556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F 8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC 56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F 15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD 04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA 4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D 69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A 0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C 550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A 9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F 7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A 2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE 49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE 484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C 6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F 5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C 1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F 52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B 0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC 2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F 0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D 67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC 60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F 1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D 55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C 7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E 75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB 8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA 6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD 4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD 2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE 97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF 639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A 5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE 5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A 288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E 7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F 759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E 03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A 6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D 906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE 251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6 46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33 DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813 F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025 46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49 2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23 CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176 57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6 788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C C63B5B76ADB05A2BF747D5699036377F1A645372E5CF6497D8D4465492780B56 0D7A64F4AACF00DD611A0D4AA2A1B4ABBCE41B0BF87A7351F26E125166E2E07E 2E64639C4DC21B996EB744C784A145F80D07676331178ECAA4967195803AE02D 1A6A04B38D721323251A1B1F656498F5FF255E4F1632DEE1A8C2B197CD7BD5FE 3819B1998273EA5EF8EE032E0638F6DCE419852021D098A19CBA9A2B675BEDDA B6513BFA1F239FFC92CEC9ECC612072E87FBEF1ABEDF6804E605AC8979E970E1 3EB524894E3949BF090C1BB477C45FC0054DFB6B6816C5B0312BB9FA09EA87A0 9A18B9B5E0DA687BAB199267EC6668094D1FA853632DE7124CEAB78BC994D6BF FD8BB4B920B89A68DC0D60BB73AFED84D38925B4E8C4D4E239080FB47F44979B 7660A9C57F1CBCE1AD69AE3E7782796EE69BC910251DF8406ACF78CDED5224AA B13F1E17BB454BD4B5AAAF0143570E5FB2236DD096A2607B8D24EE238110486A 0759B4AA276E3B5AE6BCCD2299EF7EC5C0ADB9E3A838DF0A0541FC56F62684E2 F165BDE1EEC719A7DD44D7251B0D28C63304BA3758C76B1FACD54A4E73C9B32E A49366083906EF8927B6463215012B3927CB643C0292688601AF2348D62292CD 5E20110FDD05739D7EC6A3BD1B166DCC421ABA7901FB926025EF88A54B0E695C 38E9C894A2EF7F33E5D0304268849FC3D2F972148ED6C631EA375D67DEA1F8C3 C44173E5FAD943C81B72D818D7202AB20B77EA0299D4FF7FBCFCD7BDB0C9655A B02646E5BA32F6A7033BEA306BE69EDF532347B24DC7E6BA226C6005EBF841E4 16430F8B4405B2ED05003F10080C12CC74EB07708FDBADB821BFE0DE6C8A3278 C2349EB88B977D15639695B35C35235E00862E70D7E9BF6632E0F2E342FCEE2F 16880A993EA9BF5FE7C0220D844C5920A2C334ED030FE2D062F8549508589F66 66B2E4F66E249A01BE6CC56E73AB21117213B7502DAE7A2CDC2D8788C24F8F40 74B96C17464510BE4F2543E536BB32E943522E9113DFBB56096A34BCF507E7A1 B17451E6AF90ECD2A3E0234FF01F93BF0BF1300FAC48AFAA064419428256019A A55C94130C7A4AF9ED17AF615FFC9C10517B0D210C464C8C0E2B344B31D33886 5264577F17CD7137CCED2612E1B01DBC93A98CDCC6C83A858307703AE11DF924 BABC5FDE240C80CB0B4DE1672AD86C9BC4773E95182C70A6E809D336B71E25E5 17C60BC4C8182FC222EFE5419EEAAB8CB1C04750631F7B4846D75651244286A3 3F87AC81C3DE5937D4545937DF166D02B0505EEF1F744A2A955DBA5AE1FD8453 8E3AC7E38B333C7A741A58472B543C870CD2885E812FC88DC0E3A56D3340144C B6EF013F04707315145E4B41142BB00A2BE5F6D17EDD30DFCBEA3F099010C431 E2D5BD261DCE594B5E0FF7F1E836E88494B7489BABC9A230A7324E122F40DA62 08922179B7EDF55176E4D11F985E6F3CE8B6695BBCCFF8AD96CCE92C0CE3E8D9 C27F103747346DE482B3A922A19BFC5E18C3556B48BF53EDCE941744C43EF096 E36866CF42D145087DE6A41F205D04A802E2E26EBA56BE4BE182B460E8A7DF98 8C160EEF6FFA866EE54AA2541B1595F5B1D0104BCB313E5C886A0519311E2413 CC40CF96EF3E05CCAF796A3FD36BEE034878238A40C77C6205904A9ABC8CCC9C 7E1AA1FEAE4732BE0FCB9BFF9044486A232D39745885AF66470F281F7CD076F3 B11CEB70BC1215D944D65357D0967F83E13EBBABB3576B89AB755A14A4A8D292 5FAE31DDBE3999E4EAE54E5892C6087C4B6436DEE581FAFD1F33A8DB8000B5F0 F644C655674DEF2BAB3105EA12B5550286FC001F5BA1A63F46E30A2EE663C24C F5390CF05D72727D7AF09433ED15A112E199447E0C516C8D2E535D38F5EFF96C 763F51F7A8656D90DA6AD7199EC102AFC5D65DFC505E51E7EEA199D39C2CDF80 B2CE3E35B688B79D566F1737C588D9CBBAD02F9782C7DB3439DD85BEAD21C70C 5628EA55B38F9D2BEFA897974E09C2413E9C51A2400BB2364D650BF71637E7E2 99DF9E4BC127FB7367DD9F74FEC16E339B19FB70A20A4A2E4874E110880294CA C90712CF08AD98C8532E3B730962F63C8F8D3DA209A0E23FA25DD02421B4D4B1 DFAF5D3548FE36B0A1637ADE5CCD1672FBD40A3D1CDBB9499B4C660A27F619AB C06F37FD8EBE08C838060031735E43E74F649456956B785270C84C96EFA7C5FE 2404D77480F5FEE892AF6534497C7AF401A5C9AD95B4B4D186076AB0A32315E4 E6D7185675405E6E483571A3CBA6EF76403567F282B2AA8FFE99D988D612DEBF 7ABD96797B6404CB5CD95D39464213DF90944C3ED33778F3EE4FCBB1A5F961E7 9714553A81472BFF2052561C22720C0C8493D1B2FE75019255AA8014F437FFBF 380BD498D02D7FA6904B4BC147C8D75C4863DCEAD5EA7E6FF41C609583BB7E99 03ECAE65264FD63E13191FBC5B26E034651B737000E6B894C373B58DF4002F04 E2F7ED898A9B029B671A19934263D92A0B8E3F7594FC90F62F937842E614689A 238062D2BFB7C44482AF7C1556760125086F34A76C83B27717F322D190D30308 EBD2A7BAC65B74105193942208DD78056DD569B2BA9FD4066A78DFB0316C1DDF C1B960A6AE6BFD9F7136870100916A9F8598C1647E1A9F86A26A83111433584C D0F4804BA5C3754AA9C93A9054C4591D38CC05AD1433EE5318458AEBD77ACA20 5B1FC97F62B5A90E3B75C7A15FBF4EA4B0A8D1134E117D38C82781A68A3EE04B 80DB2BE38196EFB1CFD47A5DC9874A15F21D156A23DAF2C7D31147D76599F8FD 4A575532AD29F7203964BE4C153AC914516D33A54F97B9BA83562DB89D40DBF3 4AA7BE547EEF84D1917B9620FCE9E5FC8771BA045C6BA72DC3CEA88BC85FCE2C BD04E17AE45A9D871930CC49F4F93447F43312888794162962428B915A6DF5EE 0758D1D24AEB9792A9AED3489EA635140874BA43FD7FCD56103FECC4F4306C09 8F06A031F5C639184AFB5C97A5ED69D6A974D6BA2144B4ADCE8F1285ECE7AA41 BE46EB5473C5E6327ED45E1BD5D2721856E2751E85112A44A04F54556B41DBBC 224A1C1C434FC53BFE371231544C64E64BEF27AC008BD468B51708C46ADA959D 68C73A16515F09230DEAA0408245960D54D12C1E3AA868E5DDD8ABCAC5363927 4C6EBFAE8F7B31C89BB7E1196C4C9FC9AF846006E838F7245B134766D83698D0 85E95121BFAF5669E54B918FB792E8F7EAD1FD1EFAEB2AC98A1144F4A2081500 2FE1E7CD3E1FFF00BD79CCEBC18EB0552EA5776E6A52E1AA30E3CA1FCBEF057D EFE38381A5E9A53B3ED386008C162188E393E81EEFCE3D59300CB1E5845150C9 35D129A662146D504FC1DC23DB26E958D628DD312A2682654356C3F3221269FA A8725F1D52B5CFD7ED9FCBD8F4D2CF53CD7FF2BF435E75732BD9868155B6A9FD 4511BEB18944423CAF5B2FE4EE6AB1CCE21927537FF3ACFE2D3344A471FEFB32 D3E944E0DF6115BA76E5FD1C6141FE96C397B59F7D3270A605727DCAF2BC0D4A AE8D84FDEA284931A6DD9AFF9CA3AF16D21187533B45F77515F6FA432FCF53C7 DCFE593148D2286D448A5922B774F0200EE756E982B3B4F8050D93E031488398 8BF46569A6B233A0B2AC6DF78385C9A649DE07BE3CCF13DF7DDFE5F163D523AE 46077B52147BC1C7BA80BA33607004F0B289CAB47DCADC7466F743973A546CEC 939AB3A938BB362C529C4F71232FB9341EFF9A7CDDFB740BEB573F009E19E9AB 79AFECE39A6D28F0A70937175399A045C2C1AB3DCA0ECB1F7167D07440F53910 B8123E6C1E5EF4F5A1FDDF00D1AADBBA2182D35624A8170D346E40B117781931 C79988553558F7696EFF44C0A4FBE8058D7A94F0E7C8C8B584E6790D59CDAEBA 5B634EBB57DEF241E9823194818E6DE24985F2AE341E878C9665827155CC918D 7C3CF4E508303382907BAE5DBFF39C75A49103AC5E604FF20C2649C30A70BC1A 63B54D38C541D76E7616B6132C94D9366ABECB27D33CEE252FD573BE533721BB 4311CB5557376E17EC4952692396BA291A5E593396441707B48037A84F515C13 C58D372418B8DA762B731A8B15BA74837F2A6A1A1446289B247E7A6F05081B32 E928FA2A972826D39C4A2CBB68274054BD284EC26411D07CE7BC2D06D64E2690 C724C07CD5BC7F2DE4859F83F548DC0CCA56B9FE4E1DDC62E4B943B9F395508F F98E980279D2E7C13DE18A22A76CFF59814F2FFCE93978552A0F4E01D78B3C01 B45A9CF8FDEB42A166A0E7678201526CF4773259EAED7B4099865DB5AB295C98 FCBB1521D8624B87EE1CAC6B9B460E76D4B4E4D0A4BD69CA06A02D9AE0DC14D5 55C47B7FA78A0BC299545C89FCD1A5449D45FAC62E38A42319DC318AC386563E 4CFA1E3E137ABEF3EA7D9DCBC7BCE914902EC7D7B1AE6C9E19E739EBF1BCBDB9 983829702832E22044F9A5B475718374F1A60FA48508D815F6810008C1299759 EC776C0E70ACE3F719FE1E9DD554CABCE3937F54F38D5CC3C1392070A07964F4 26B7CB30915F7586B31C04BAA3CA5EF956DA352C6A8A2A1356924727A8EB829A 48C9A8894D29C2C196C0B731B6724BBBD84FBB94AC9B9DC80C435C5387D625AB 6538076BECB3C21D19FAB3551075687E1C43CDD9BE49CC506D3423B5C2A6754D 87CA10D3686A4FCA91AE60466045A328F996EDDD3918E2F56C029D1992A2A1A2 78B2E95B99C822822F3630378ABECE2C2318010BDD2A492E112602BA2E092693 54DBFD0367AF9552B11E043BB544644B079ACEA1BA6123CAB40F9E7B2ABF6969 A8BFED3FA9C3CD76CE6DA595C63956DD27A87F256A7801330F603F21DC8195DE 04BE9EA43F308B2888F5EC1D51DD43C6B44363FD277DB689FA2FED1D4B587210 3F2B7305713987C9FB5B6992F23646F5AA9DFC71C0B3B411CBF369315255C1DC BE9357E76156A356902148517DC6EEE64AABAFBF106ECF4E55485756C801AD0E 81961033CFA0B2DE0B96B88B38DB562AC046F65F058682E139C0F882CD795096 9557336AC81FB537E37CDBBEC64975FF3BFA899236778283770D540257D3524F 8B5ABC38B9DD4A240502ED8AF2A7496295A793CA1D6CBA7C2C50E60880B73E96 84E0E5C85B07EDA8DD48A8249D6EE25273D3510333287C71DD0ED8032EE04848 0410C1E0785B071430F4053AEB3042D5B9C3E34E4B854D42EE5044DE5941DFE1 AB6DE585C02B5FEC52F0C565E6A5635C377AA57607723A9D246639CF06A2F4EC 90CEE93C2EA2C419F3AD9CAFEAA6B2ED3F2D4F9F6330FAC9972903786AC09B7B DD51932A1378BED9BD5434078442B9C13CF156FCB4060CF81F98D5EB8011DDBC 049806FAEC29F3841CF0BAD050713FF0CA75F4058F86C388E179710300A21312 72915D0C9DAE32B1D6C092A9E5990178E8A11C6A2B525E0D9E006C135D1BF185 FC7A58576F23CDE582A0512E54798B634B2E5A06F4A107D2685EC1578583515D 19230589279FB9BA66E6DFE827387C5FB1E491CE19739A4532C5CBE869174A29 F1E27164210F9D924B835E9CFD9356643C3DFEFDD21D733DEAADE25DDF15EF88 17A9360BB2281613734FF66126A90DB9AE008F6DAFAF9DCA23A882A38A0F478A E6465F8391002417637A87303A9168632C68A031EE4DEAB32D7E6FCA721FA484 3D01D2877B2CE55A8F3665388FD2791200FE69D692EE6C266DCD65014A9BB1E9 27C1F5E6857D5923F56D3AA916E50802FFBD561FB9894C1A75022818A6CD8EC7 06DA976DD2609CF7023B0D2258311F321E064D956CB8D55C1A4CEE12254DD6EC 68680A52FCD777EF99456BA60807741E0845C47E4F8A93E11F4CDBA611DC4B50 3B5F83C5475663090CF0450893E076132C6D25147C260D4D731A03C715BB80DF 727864AEA432A5C95E688313C1C62C95E154E00E5F00713D2B27E2F64F7200F2 C52B3C95376242DB2233B50B988214FD47A88F3C4F15001EBBF541BE75CDC0E0 D4087F5DCF70B0814207C43690D2D9A2AF382423515B7277E4D3A990D4CD0F25 9BDBB2350A8ECDE52D641B901E94E524E9FE6612037EB6EAD9C3A887B45F3B02 2F60C45F88E147512CD1D4A967AD6FFE126F3C4E92FE3117E38FB2A662D90B1E 12C80B32C9C547C7EB719063E25157F726885481D0B2EC9472A0108693BE337C 2D7EFFD1285B4F507316529357529D3245AE2D18A4DDAE37225D682D8D20574B 0DAA73817D1B70CD37B2501CFD087C0DBD704C544DEDFE282788DE15703E9D81 F5A1AE011E6DDAE53728D2FAF938EAB8ACAC0D07F32CE8E8C8E8C0262A76D9DE B533DA266E44B2A36DB0E19710EC9B9E99E9C1DB500D0D8A293EEC71628E9842 A8CA8C99F9CC5B6B26E4C96F7D840C84D827299489D0F9C7E952A91F78EDFFDB 83554679AD863C2C64DC49A33E74AA4F58DDEBC9807A92372E227EC0CACCA61C 629C34C083A21F278CBD8747BBD7D00AFC2BB546FEE02DE9892EF88FAC0EADD0 4EE10387D6386E77C462864180AC2F655ACA5903C751F060835DBC1F72AACF0B F4F48B83FC85E9A3EC662222907A796938C8CBB946801696FFD8630E897170A4 759BC269834173D8EBDC70CB16EC918CC68DBC61D8A53EC5F6F63732FD4D7EC6 234CFC1408CEE045CD2739C71BBD175368731CDF9CC19DB87B7B974FEE39BC9A 80948277A9676968840537A4DAA22EA9D970FC096ADB6172577DC54FD7B57BA8 7925FADBA77E5707C51B8EC45FE227B13966B45C39DCF0F315EB7A6149134803 E18FB6CB61F252E09A7720804C6941615CD2B01FC5F8B8E12D3DD1D4984D0E16 0E4E3342253C6CCF6EF407DF245C19FB550CAABF4A4F6B0E251D2EF04F18BFAB A10FFF86ED39BDDC366595AA6D4B1DABA39FBAD8620E7638FBF54E34A26487D6 2EA281D9D2251055C510A401023A14F3B97193C2B038FFD1C728AD75A186721D 23CE5865389B0E47DB6F3DCA265B878950B567895A10EDB5A6B3F3FCD30FAB63 C6D09D90D2FB1C05D8839D0B4EC950006F996447840C8DC888EA71794A23C27D D77453DD43121B9B78FE67913896A0B65033060072CBE1992DCA145C1C88A88B B516B239797B9B709045266E742BF9907803FD36953C9299BF788D3BF01E9134 9FEAE5F30EE1A8E7449093FDB9992D74493DAB0BA265D3974992F5D4ED79D6BF 99EAAA95DFC89ECB4799BAEFC10012A5610194CA9DDDCDB009BD6436BF30B1B4 401B2E4B6FC0EDF60FB188878A822073165F0E0399ACBC7E72770F960AC46061 F89852A0205A8A7813450A60A16014AD433C45388A3166C15D900597B37DB638 9DB6D76BFC3395CE83ABE084B5DF3E616D5E13CA29C7BC6C19737C4CFA04B514 7727C2383D4DC36CFF04142A1425D1A420DAD27EC6A779FE4FA9E8E44B0A71AA 2DB0DD4C5A4AD2EA39F0FCDBC0CFA81644CD6F86683FDB5D97E7FB3B4C5C9BF0 C3F0E49BB2031EFCC6770FF520FC24631DF7DB8D2B5A7E672F6352ED95C3EF41 80B53CB4780B779A2C870E935E1F774C2B83299A9FDD5447EE674A157B7B51A9 DB721193CA4545B4EF0D312DF015F1491AAF251B16872B689C2938053BD3843C 9E4B4DA7B1A9ED3DE85A2D848C5DD26F4B3D6CD96835915EE86169803C6ABA5D BC878F9502190EED465E574E5730EDCCA3B4D5FE7B1BFE3F5AF5FBB466475A0D E6D2724FB9C11AC63B3424F422DFFD3B72A168522CD943D7EF214A36B19F3C1F 8FCD50591ACD2E4525078561EA379982D47A010D6B7C325E8566BB370E6188F9 40F7934B2DCA11D58A5EA2A42FA79F8F5A69E4C8313E2ED201C6AA5E7FD5BA87 3F819A807799AC8084E2FAE69516236284A571A5A3CEB8CD0A73AB1D67EDE888 1A69184D68842D02BACC239C898DC171A8EA05B8D2811A865BFE2AFB428AB6FD 012B295903DE73A0D3A393E0D9D766FF470401C335AD8623A5EDB7B0F35332AF CAD6E222B741973EB894361A862317BE692CD4B855E4042F7228A83C14CA28DB 926EC8CC9BFFE3BF98AE8923E6B6BCB248663774FC2DA52C5FDD448A5B85BD76 6493998AE13C84B4D8C1CA3FF66982244E7197928E8CB91C71D60CCF1F6BFF74 1FBE8FC9E0285ED3AB5610393B7D11301D8945C71B3AD01F1E7F97E9BB9D8737 C4D113FF9B84E8D84CF3D04C01AD7E9F586FCF5B20FC9662A5D6440478134FAC BC580FF2FDBCF7A494AD744A9289B8358D2A14F6DC4ADC0A343D857D2EDB65F3 4D97B49CC92601B90D63C5650F895A2485A18617B7BC02EA2A9FF1E0D777F393 D7A6DD6AE36E73BFCB74560E398583E0B716650B24FF5F54AA73346A01D76967 97E8E1C8B6DB6B4BCB511EFF3237A40960F3EE230EA142EAED3F73CD0B13F23D A1D51F490DB90D37ECCEE52B9EC135E26F36E509535752FF6F9135A1DAC1AC81 3701EE34956ED7BAD6C8CF1D70B9CAEE2644F94B10935F9DD1B03C5D356AC0AD 0B6F327DA139D31FF65498675D193540EAEFC3FB8A119ADC74536C152DA82D2C 0B523263DDC88E048ACC64DB32B259989488476CB0D351243A09A2BA6697D0B0 6C8D52A51C0F631E9EEFEF3A2042A2EEBE5046FB670C75B4157F7B5AB507FD34 6F52BCBA13FCDF4C923DDF9908ABBB26521FE2A7F9A0BAEB7EF7E82830E596BD 6CB249A0F61C0FAAECEEBCF556846411E352F468F7F6B404B3BD3B92712D362C 4A84545661FEE4B5FA52A7A7C461B9F7ACC3E8321B30068F609DA42857078152 1A00EC0B51CDC27C8B505B00E49BD1439EF1C861173182EA5BC4CBEE7CF73255 57E6AD9AEE58B43D54F6E22DB3B8F5F9D58EEB756B672547B521CB7D82E78B26 32C27B3F93E5122482F87852C2F357E666AEEDDC369BB5DEA3E02EF8CC69DC4E 31F677ADE63DE168D6A500055E06FF746F5FE59864319FB3E49DE62F5E2D7005 596F22D88796164AD412D3B254E8D5F7E7CAE3EF1D35D67733BA291BADDE92CF 70BADEBB6169228447DB4A99473D865A7E105DC43421491AB8563C62C215EBF1 564E27BB8C008B2617DB934E0665D7208C441321AB5EFE9FF1743C357A9C2E5C 4AF4039F16367C6B9837A08924300E6ABD2AB033C146DE6B2821DD9172E5D7F1 53785578BB227092E8ED1BBB8E0CB70C2E23E640AF20828C09FDC2421ADA6DC8 2D117F0E3DF208E70F00C9C410E8F77FB1221D1C07F6C25C1930D0F2DC601025 EE0B877941CC9F82621D4712CB9DE0BAFFCCA38DB1CE1896D6A5FB876CE944CE 97A297BF3468B264B32B7C8BDF5777F197F64EE9BD2C6676BA50752CFB9F5051 3C14D6D0658F7D4841B9F3C47B9522E1696F32838ADB3E877FDF5339F6721A8C 7F39D070D9912AAE0A69B6E1E27F4727513D78AD9F1128079E3100D0B559B179 FBF88885A0681A7847F26D70D8F7A3286E4958DD615CED53147A5A50D06D55F6 45808222273C6F6A972D49873290654057517F1E067197C5A863324BAE696A25 F250DC419B5428EA0655E118F77B1545494C94EFA32D34434C0916BD6C62F9C1 2506EC7CEE3456B012DEF7C87D19DCD3F197047F3C57B2391A238839884A3F19 CC0B1814255F4DD8977E61513F7FADF4BB98315C72F84B4792243022B827DDA7 FEF9E1434C631FBBD0CE34CCCF4CFC655D0F9BF1E22B91FA21D95C6AD6B0C098 E987D92C862954B2CFD8E8CC0132432A40ADC155F8A0F97FC03B38B9738B4317 CBDBB8E7B4BB929F6D39338AA69A5A11BE27316BE370800C82706772CE33E367 29A80B24D41F520D993098C4B04F0F62F9C74679BC076706F0969545AD65D6B0 44900379A36E940359B6BCDD0F3F5FB0A8F30BD5456EED4DF5CE72F7A7B93858 14BE51729E4F8AA97DD6D134279E88C3EF28D61D7937837DF831BC8A314F2D3C 1353E96806AE841A57EFAD644C8D884758880415F91E7683A88CA150493EC28D 6C7272E3465DFC48645B2F722ABFC1943CEA4B5ABCF8D76C3D032F1B3264E7E5 06690EFDEBE83EBF967085035A199297BBF94EB3D884AD4C0DFB476B85E6BFBF F69BCB9E57ED6753285C36AB62CB8C98E676D4D23C44416DFDA957CB93EF7E78 8379C6328FD6711EB9B45D10681B56591EA22DB43DDEAFA65FFCFDA65075C6F1 FF96A492130ECBCF265425FABDE849C62767F6B36895CCB19CF177B8BA4C7163 D9DF847A42072F60B3911D8DA23A30D63C7FEE986F939CB35F7C47298D6596F8 9BD7354FC35915C0CA8CF2A60F2DE21F355C74E605DBECE35A70FA12BDD3D915 729B3D75FC8CEB2BF67DAC531BFD24A2E975375F85D7AC7CACCFBC62FE51F11F F877377CAA80F8FD8DEB1B1FA7C1ABC73B88D4ADEF4D045708657864418FB434 7DAEE52F2E2AD61680B4E5E229C12EEAFCEF8184B3B03D16BCCFF6E0EACDE3D8 CDC8D9185DC2672784EABC5E55C8F45AE77BD18C9FDC3189D24E3C93CA20A916 1750AFEEB67F95016FCEE6BF60016FE2097AB01CA18B0EE0CEB254976858635D 13D51A80F202A59A66B54E81972AB98BF9BC188EB653F43FD0EE5E7740487B5A 6102C31D939943905FCCB91C95F54E69CEBB4F4A66027B2D03AE23F09D91B676 4EAF654BBCB61F084EB153BFB0839D882ECDA35D1AC2C1863A3C5F0523FFB7A1 A707C2D48E8B2F421A192E898960D888212D488816628740CD9F9FB6EE1DC21B 82725168913244FE38347B234317F127026147CDB4BBF8BA9274C987193DBA07 0DE6596DE26FAB1618D77E552AC34F71D0B77AD262314963C69EC171C1EA0706 905BD2BAE70C9806CC263DC44FEFD2E7742538B2C62D782D6FE9AFB6464BD9F7 7C537D1CB46E93F998D0AC153BFF65D71F72DD0FBC30E427C94BEA08A51FEDD0 E9BC9C656715B761EED9E0DF6F1430BBC2F5FD6F2D5A31FEA89F7D3B8ACB3524 56D36998729CB9EB6C464A709387869BB5D9062A5798B9C3F6906CA8E9C1A53C BAB4CFB6D6CBAFB766754CA2D15E927872427EDD9E73BD16C3BF4DCC479B7550 1623FB8E04B11986EF4A3916248BA3328BBC2DF30E994B20ACD597FF14B91032 274884EFFF7E94BDE8963D41E9CE9F192C84AA7B2FD2F6242B9828F54759ADBA 352CECEE86152B06D785DF2781CB339BB1B1571FB31D18C3CC831B15736FB91B 3C95834BF98DC3B42C9D32804F0E1B0418C30E944E103B1B381FA9B54CC41994 78B4BFFE0445D1499C19B4577513B2324B7A3A752047C36449C2EAB3506DD87A A5A7FAE639C0A70E71A32DB71FF4D8C741A8FCA4A26C886DBB89AB5ED74F7B53 025F00F3E5832CAD54696CEA99BF7D37950143F74A1A31B139374778438D0DCB 75D125317E14B837147FAE2B7DC6BBDE62AEA6D74C7D8B2EACDEFFB5A61763E8 5CD01EAB644B4FE0CE573B681C201BE621EF353ACB26BBC14DB249CFB079F488 1ADF1C4E19CF04159792E40A5E63EB9DCFECFF901DE04D02604C195C315AC187 34DB4F6C850E9BD424D3971CC3091A41D5B8F5020B3C79E72B99A1CAE66C959F 55E4C6C1C1C34DCEB68E8806967C638D01E8103A6E886609E5276FC013ADB053 AE2806AFD0E6CDAFF0D97E75AFF72A027F2817FEB32964ACD45FEA9534996A50 53ABD80249F5890C69BA0D650BB7F0AEC076CC809EDA4BCD8265F334DB581361 329C2530144ED7073D99EE1959AB477C6149B3A6547F024AF983BE69BDB9BF4D 827728F2423F648185B1FC0AC9C7ACC727AD43FDB6B0D433C8172EB74B8B8AB1 8C0C2C0357458E197A842358705883EC22E7162967172C0519820D5994DF9D7F D50B52AAE696F603985E3504742D31C0B69D77552E9396F18C71DEDA17BFFE67 E1415DD4BD373819A33CBE990992973DA11CEFBE7B81DC910273B315B82B8861 63B2E66BFC29A213D5526427B723B4856DFCF3559FD701F77857812B0C6C0FDC 4AFFAC54B1CDF29E882BC2E2E9BA0319BB084DA04A82539AEABE7FB793B7AB28 E755B8B1CB2F0EA0329B29816B127EEAB2E16B99B9FB1BCDC5ED2A5322F3A271 99A1981B3212711FE1DCB32D0638EF932D00B3C04F896BF7DC7F67EF8F3DB82B 0536D186F24BF7ED544AE148F24F6CD5D81059F55AB8E24128F755991F89CBFE 75DB53CAD6129E392EDF60FAB2C90396568683A0C996C46358975676C6A8E3CE 131C90FA98570DB4E576B4F669CDE352F19DF7652C97F2357C4C8F0716E5C290 1354DBE5105A874C105F541DBFD7E6A63B1231BDB998EDC392678D1EF93183FB 0815568798BDF68665F37205546A6528225B3B91B3A80C0F433C8888B45BFF9E A972D7C29B2647DF29806C4113613512C117061E7DE70F763D097A7CF236F371 4BB3BFDE60B73EC884BDAD2E7864F24BED01210DA9F229F7A87D3CC0B3AEF75D D8B763EF2B7591B8D2CC201A635C82B771BFDB42FA533E321B587735AECDB3DB 071FAEBC9ECB06F06A0EB364ED723D12EB6E7BB479AB013624ABD11060CFFFF3 5FE5CC50E86F9224466913EC8167158FDFD81438BC1522685CDE8A038F0C8A35 8AA1FA8E38ACEB99E18B55075D594DF39FF874DE7E7E6C95C677F35B2DF0F203 B78369144DD99484A35F26414874463458FE0F6D2C63481260398F5FD319DED2 19C9DE91CE63155DF12CE842E67B8DF8E61149FC4563C4ADC280E564505F0F80 2B6CD6BCDEC7AC194C372BE1A4FBB457739A8AFC4A7727E37E2D3E5AA30E7461 FD43AA99CF8EC08CF47CD67B820899D75935C6DFD775619CA2D52E4FE3A5B0E5 3D1231BC641544611EB461A1991FC02E040C574272D428419F6D0AEF4285DD7E 4731CBF498243B66ED76F66CE3F33DC996BD10334741D351DE2294D268EF045E CB360B89A5E9690FF21C91E396E686C67B5570A1FE2182A5E78DA735C70162F8 E978C1E449853FA9B6494F2C38F5FF2A27F8E9DA96EFC069145C844402B0223C CAC1AAF9E74C8576E524A2E5F072DA0297AF5AE4F1B0F1E3BF24989DD836C057 D18E755B8296E8402CEDD8F34A258ACC0D34D341ECA9889F4B2A06FB778D591B 157DDC8D7F54A289F918E980C367E46575F05CB8C847000C6CFCC939867C78AF 8A0980B0352250C063F3960D06E88A86694879A6DB159C2C5CF831ABD393A174 C9BAB470B7EF87F10A5C3EBA5716279D525D51323BA98E262B1EAEC96A61163A 44F84EEBD3CDE74822FC6ED53FA7C30A4167B1BF8BB9D3347665A33DCA967641 E4739C8A7ADC90369E7C236D812BD03144A282176D5E906B55D1274AD6B5ED2D CBC01CAC7B92D8D919D25D80F0E0CD744B33F303C43E0D9F1F0E778056C43E1B 5A300D823B0070C69DDC9CEF534DA19FFEA924A6D20D50D3CEAB46949288EA59 8428450CE0960400BA1EF843C4D538C6A2087D3E1DB7AD847898602ED66F9366 3F8E07233BE8331D36C159E8602B8193A5534030BEB136E24B24886D063694C6 4A86C6F0B74CBAD19B83C2637AE35A07221F79860B87754A8042CB7489B0648F 50BD0B93ABE34188C91AE0846406F063DE6FC2FF17D3E39B758A9182F258E2F2 8FAD163152FFDBBC23B122523A2BC4421B025B0D8E876F80F12977AD02F2C393 F8DBA9B7DE3D98B21C2FD1BFC42AFB3A6B0C303E94EDEE21B704737CA349ED48 8332A075AB14489FBA412E4950BAC4F79BA0DC7EB6AFD1D43311E04F7047C851 02612F1BDF9549A1C5A4E096C7946749A9E6FD356FAEEEE03C196042B6689913 2912AF6EAE06BDA5E9F7A85CC503E22008CDFDB0F51DAB9C7821BDB79D1E7477 16E244E95AAA34AD1B2084506F7C22CE2EC64C2EA5E2E2424E265173B01CAC83 5A14B1FA3CA554535FB71CFD640E6F04917771589AFD81CDF19B80F2338A462C A7931133B7609357EBBCD05DC82B6909139C5D9ECC63511CC7FF28601260C7E9 B3253E2B8655135DF5AC5EA5F037233C61495895D1499C5A00B13A90B8B3A886 42F3F12F7A902F5520AE4F8E5AD9380EB5063BB93D98476969FA47F2BF6EB1A3 94D15CB620277C1D586661CE897F3526DC5B52C447FAEB44FD3377DCD023293C CD7A75809CE202165BBDD0311E1E793B9E44C747FBCF9AB319C9F3BCA0F65881 D85A2549005C27CD2A477C5DEBE1BCA541DFD153BD6357215CB195A53CB1AA0A 636FA25E28420EDCB036BDC3AE3D522E912C00EA6061E8EFC7176DB1D106BCC9 F7420AA98E67899D2AB3B63A14B966D06BB785067DE6EDFAEA7567367DF1B9AB 24C2194360006894B979EC31B09E92440945036AFB89155DA483FD44C1F9515B 4B576CD51A079C22C668B72EA35E21930B701E7AEC08100BFCE2891AEC0CAFD4 A71401645287CE15CE5C4A94409B207D1A8B13DC9D1CE2CF6E09696E7793BC1D 8766A4FEFD11FB4A3B13B32A5E994D010370A0890D85A500FAB60F60D8EC607D CD3B7657B32A4B99C89BCDB0162BDAEE9CCEF0B52C54C8EB5CF320DCD9803405 10B060667538413E9BB43F15C72510A68AB688C9512FE05E87AF5CD4C2717FBF F0B5E605CE4360D89C7BA422C2A867710CF0668BB684E83FCD47888C92216068 B03655C718AB989492A6D432275B1F64005849A85ED0D167C121134A59996BB3 8029B44938C401192B96DFECFC6C7EA90EEC009AE79F2D94926581B2073B81F1 E995224D452AA32115134F7C8B0AFCBAFAD316F2DED91212E5E2715A9A0F59BA 787C811A7CE37859B9BFD4B6648010C449AB624401ABBAD5D22623A05B127FD5 F6C3FDE7966A3AFEB0BB98B38E8DAA05643EF7A9242F48837F2552AA6E449594 9BE7E93EAA719FEB29077A5B86C14B5F47B1B86D9F1EE50A9BEF6F6FB2DCC4C7 D3EDA4FA1744310A2C5BD39E8EFF9831D2E91698BCE0D2E9769525F934D7F08A FB4DF1732A46D4CD48BF73322E25BDDA632CBCD9F0571779CA52A60775ECAAF0 04A6ED054E9527CC85F67D2C480D6BA074A3D73D5386C7D3B06AFA386C931512 AA015585BFE18F6B5B79140570B655295A0C56F6D3FFB790185D4F1A10F0AD18 C143DE30A7FAAF80239CAFA2DF1CEB743341B05E8FE1D90FE3C0F75398B6FB76 28FDF55AF051AAD341AF59A6FDAE8B1BC878A52E5FC2B504D4C113979D7E7524 F44C86A5C12F5546024D792A0E4FF98AC19EC3850D88DBE34B4C2BBBBDD77E62 67219B59243B4DDDBB88AB7AFEEE234F08DCA63F51508BEB43BDC3B00A3A6F9A B4EB5EBB12D928D2E1901A0D9799F82676F6E158A6E521D11EADC606176809CB 82687208E6F491C6B92901015A67A67508A68FD8F910A41FCE333AC61A17F772 13FBB7DDCA5C17263946D38738E019B016BBC294F89083A2E8AA6A9433272CEA 42C8A243DF05FE3AB837F0793AE36FB9B1378B7DF1D50CB48DAE3F9CECEFEE6B 7E372802B2A19C7C1BBB14D3B061C5DC6FB29EAAC558386C58D87E1CBBA07AE8 B66DE0AC1AAD4D714C00B528E0A10D54AD7D99A3F5459BCBD196C0A86DA69508 C4C780D2000407BCF22ECA07C1FA37DA0E05CD0D1A78AA64AA9F4682F2F2F05F 0D219E2D4A1B55D836B36397586C46E54F7E7B56B969EEF401B7BA9AB3B71491 0B33E2694C3B10AE3702DFA3EBA9A42888E2FA495B521FB5B860EBECD878EE73 720ACF8DB674DB5C4A3418E5C4B1B93E8BD5FD6FCB334BF3C93D6825201A02F8 A8BD1F64CEF4D6E8BC96948226D8E0C34A7C65978BC66563B39BB41098EA4DBD DA6D7CB34A411B9A789775C2559A9F90B7F643551156FDA8B8C3B368E666A546 0D9458F1BF0649BBAFCB8A2B0B35633A873D5F9B0E55A1A1EBA070DB4636B725 BAD1250138E0A08B59DDC3BAC64DBA14313B8937275F8E8A506F6D6EA691FA5A D37453B2619C027CC5E6DEDF6C6EB248F182A7349A21CE744152BED4F91508AF AEC8563F1894734EC9BEEE05A1CA429BA1A134CFB7D7D533595CEBEA887EFE8E 8D41BB1711FD033A6D6707CDCD2F1F3D02DDAAB98311AD5BA5DA9EDF971FBDD4 BB4EF7EB3641CDEF6CC694948ADB8D94D39106C7D4E8E788627991A6AE33D7DA 81FF3259C745D3C3F53FF8CC0FDE715D61801FE115F534FF3FB04CF5324979D7 2AE393F01B9B84992F16390825059AE1560CA637AE72CA56D3CA686CE9514E1F CE1859CFCEABB3DF9FBD8F0E3A1E8B1ECF291081A63A86128BDF2DB251287810 DEE008FD4F5ED49D0BAB3E7638B975CF6C8528B9B8BBF490F9632F83A060AF42 1469997731E304C44B80503B391B9632C15D209556CD5FB94EC7CF4C98B51C7F 284ABF771FB70ED5F1CCBF4AA789AA9CF8C9EAF42F9C9725D87820C10282679C DA104A08E1AE5F01DD4399211C62C5F3370C9D159923447D15C2056A0F840203 62903BE8B5B1994C9D7C6052077E5446D54444628AE19229209F815677ECC5D6 45E6E1CDC2FF1AC81EFB1D73ABAEEFE54E185E3A817C0506CD754393CAA3D30A B2F401490D83B72BD07B4BF1D1ACE8AE0AF145A3CEA0E05439EA8EDE1C4597AE B5E866BFC94E30C9E8D8884DC900862E23767B9F8781F5623B4F5F74592F11E2 DD253253D176019798665BE833997D2ED432380DDB144EAB37C7756C6F729B0B D13D8D02951BF2C016DA02873E4B589EDA8021397BDE47000E0BBDD2AD8D5160 C7E9F69831FAEF84C27C7342C8CE4092278F767ABD3C7220870D40EF9AC505AC FB5F3E1BD3F0905F71AE8751C4E6BE02B392874356C7F25B37B16D7E8848A9C5 08FDC51948C71D3031BA695B44891D7C56F5A06113C1DF9E7A5B2306053AB76C 18B3BFED61C8E196494FCB0408DCA9389D6DE9611CB19B793D286011E9AD6E78 CFD74396029C4ABF7075143A71D14EF93B2053A0E8C8789E176D500DA7945DD4 B7F805169681F4033DA8A2941F8BAB7E4A1A0971E017FECCD8738DA3186B0DB8 8C63476272C63364DF6C3CA5D9847A6D81736F0BE388AF95A7F9B5663F55E3DF 1C740E4358B349DE17A63CA2282B03065A66D9FE3D6BDCEF932193E5F2E2D150 47984A57B31A7AEB54A101DF328A74040317529842B4A5A20E3448077C331626 9A5EA78E5EBFB81778BD4C9B392186E3C811EE82CFDD6A57E050DA15478791A9 65CAAEE28B55362594BB58EDC4D01FD54CA7EC5C4D2A3FBC6F399D5F35EC2256 EA0B1472A99F3349DD62F3931F193C322608E6452472E00EC22BC13E2E17949F 9F00E979D5D5E38CE6C6EB9CFD7B05E724CB49EFCBB211953A36EBB3A3E18498 8CC2B96F8FDE18C678282C0A707ACF03CC41F735E5A4173B45A9312944D69B2D 4D448C4914D987DE531C6D3EADE9C94F9E6F978AF50F6C25CF8586185FB7CAA8 5C428C606709C5FA5ED63CE6C0456664A552BD6B6AC8A321A97807279CCDD27A EA484CFEAE6FC10413A373A9E041D3CC05B48BDDE5DC89F1B9D140F95C9370F7 1126CAF6256DDC8081BB304F294398A5B5994800684B097444BB35D4D293E782 F61C8EA1AB2886CB6911B260127D8A2D116C3AB62F07920E37E0405F516F47D4 C4E865E9606301B86A9013E5244E1C145D515251089F62C780C17B1C2A605DA6 4E8F113081631041C38512469AAFFBA750A16A4921C2B809CAFD80F17DEE5BBC 6A00C67E59A4C3B1C34DA41EF7D4CC836CBA67ACD86822FBCD160ADC54D10A5C CD5A1C1D01AABBB900776AFF0BE76CCC484037C34D348A7BE0B15109BB114DD6 F0EACCA18800AEA8692D875F761C574B90F586ECB60183D3DD81C3B1C0EF1822 3FA0688E244FAD05F5AA4490DC6E0F515E174DFC2F26821E9C4B189830EE8D14 56BD9EE6BE690E62E2688D180B231704148F643873BAEF2466099D01E98D0A22 8CAD70DF0140C21585651CF257F62248FE2418DE3087907355F88886BE1DAD3F 043C30DF1CAA28F327A71B8EDFB5470F64298B899596DD2236B23058E3339E8B 82A8B27BD3ED46D1B5F2CBC333B4AB6C8314B26320134D8B8479F2824DD9AF44 D5F10F431F64B832D1881F59E8832C8935765E9C1ED9768EB864E3847F4F4928 71D2CBB138BCA7085D5E619C17BD6513F53293A9F419A74077EE0F97BDFFE479 CD960D5603C2CF26A3B4B3A6372F954041FEB600A528FEC76BF86420CB8FE902 C978E8D7A3D317683FAA98F299611F900FC0C38E267B9D2295AB317A0C65CDEE 214DE4298121B7385D9AC35D23ED48BC980D8BDF0ED1B3DF469E74B2FEB07B5C F26F8C6A61D4B1EF1F95EC93F618CACF0674C625BD9E960299A92E12BA082080 7DDB8D06817185AE7FB28174B530DD2EE84660606AABF27A171C33BD15173A09 69DDAAAE380C89FBB4FDDF271D3FB5CD0A2D62A1F1BF8EEF00A9FE22FDEA08B5 32E6995008D17A9B885BFCBB80E9AE1E3A4E75A8820AE2A7845D366F29CAE72A 9D41A40B32DB7F477E218C646A28FFDA6E58EA290AF7E19DCB764FFFFF8248E5 179AED3D8F1B91480B3729C79B3C96B3AEF105E11E370AC65F47F58917FC5EEF 68C5F518D1079ED2182CA6B149F76312133A4BAABC1E1862CBAE7AF59AADF2C8 FE748103948695737AD7BEBC52DF8C4BEE11C346D0E9B07338A1E82B86B8AF42 88A49CA23BA88579F911319AA8B7DEA4CCA6387BA33B217D02D121FD38FBD51B C100B95B21D41606B40B9A11CC731F10A8F4B86C572FD9AADCAB4CAF8F27353A C05EE5A9F372B1FD74B71522A6F9248F838630A8DE2429CFC5B34161E83B0B38 9713AFB911C246E5ECC6AB86CFC463B46D0358841EC85787E055ED7C5513B0E7 960D05F0BDCD5DEF56CDB808B755396E2F16F43B6D58BD13DB0A6B9FCA646521 5B114C3DE7253500A6D89A0DAC7F9EBD1E14D7EEBF8EAC1ADC5EA574781EC870 7C820F1ACBA1986CC55F78DB10F9F76E9392FC9265F3B370988CC56BAA379B46 E5DBF4FC5C1A5EBFC1DEE04AD79977B8B9213DB98649B6F9AC0F99F53A449CA9 FA33BED4F5EDE8D1B53EEDCACB0A883976C98DD719BE5C2A0A948535BE0B324D 4CD123FD9E346FB8E5C5AB593049CD5330D34DEB46C4AD0D21BF6E5D715B8A62 40E0BDA591D2727E4245B29089FCE0A2238B7AB0798FED91B6F8CDD6C2FCA085 3993743912D66BC8049C30643F9362D510575CE4926D53858A1BD2B8309CA46F F93B3941D0822B182AE4DCDAAEF090AB4DCDBF403E4BED69B62ED62530AC3A6C EDCCE216FFD057C8A388145720BED9D31A89D149E9A26AA4DDFE8EE93924FEB7 97A0DCDEFC84F9266A86D2B88495F4A9B1D33248BB0861BC4D38825D1EE3C930 11077737AC6E307B12ECEE27F82B554F40053CA24D2520DDAC7F547407A77196 41E85341D1D1C10411003E66708BC4FF4F31AF6E689321788C59D63DF263FE23 71FF6C27BA99A5D9C16E08CECE622CDB8517D14644BD03A5E7DFA8DF8AED725B F6AB8971EC1AD359AA0290B31A2DC818DD2BF80EDB07EB81F7787965ACBDEEFC 05337DFFABD0786D1C71B192B04618A00E90E0BB3BB704D1AA86E1FE5AE09B9B 256B82ABFCE181CC45745A0B2E51B1B780A91FB2387EFF75ACDAA8AC13B1F44B 81AB96DF1D9CF587DC8B9F926D02F81C8BABA56DFC79E25883453E84E22CADAA ADB64593275CCFFF770B53ED4F4F1B0A76DF0D5AD96FEA25AC42B8C350061A2D 1C97513C9F7F921ED913F321CFF95EF57FA1E19A9D3F3C927568888E1E7DFAA2 D12525815F2C65B72737B4AD9BD64F922526C3527693B552ADFA10C281F99A79 26513709301215BEEA51BAB631ADD6DB698BD96006913FBE8AAF394A051ABA45 D4C7F093DAC9707CF64509D64A39EFA0207910A575932F928CE105E6A2745088 4D23F6EBEBDD583037106433728693D9D24462F3E75DAB68059ABCB05B2B5633 D46ECEB9E1A9CD67317F5D1197DED31050A102F739792CE307D6928681542F39 954589A5187E9FF713B1D0A3E5515C5C0F935B7921E4B37E12F0638352EA1447 7C5BB21D4CB3181B1C056A3B4D98396DF351BA384FF61A170C1FABB51B025E1A 206FB57FCA26D929BB232A9CC3249C1A0400FC039D3EBB543812C5918D6219D0 882DD96CFA770A03BE1D0494C090D5F5EECEB305435FFD740824EB85E59CCCB4 AA411710DC67EA2489430D8C08423F00C499323ED1BAA4EB1B5089424F898D86 BDF5CE56C028B107B8972433EDA77EE397A193B1793BE61F8DCC0273A0FCED9F 8A98FE8D1A49469C3A4ADEF38888A1199DBAB63DE30E56B82E55C6B31D70FB4C 5F9514DF02B648CD3FD6860E426DB1D853910F1F96EA328759229347ABF6C503 A7B6A63D729001711890C1AC5997F2F352F3130C760F49D0510DEC22B51A7FB9 F2A7EC4939171B82F24440AA058C5522681A0A97BDE06B15B88DB1F1246A095A E89230E74BB7B404806FD2FE9F698C167954184129B40CFCD711D69D7C1B4F8A 7D2A8D496A7EA0FDA901AD9D79D067614D868290F804649280671903D1085A1C E2E3C0ECEC635D975D66CDC5312568AC5C85F87804BE7E60EF787F5B97DB71C9 4DB5F1AB7069B1B411319D3D70E1554D56120E2E5C9D474DAA7C93D5371A9DF6 10A823F3105FF629CB8A2D564545638B9203283F6D70E4CD 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.0: CMBX12 003.002 %%Title: CMBX12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMBX12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup /UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX12 def /FontBBox {-53 -251 1139 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 44 /comma put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 89 /Y put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE 0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D 2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C 42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE 78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D 9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC 5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF 9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE 2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE 947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B 0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D 419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B 70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE 0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC 9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D 1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F 3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B 57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC 8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC 21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F 07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E 8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E 8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD 595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB 313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B 82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D 9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A 31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E 5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E 94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE 0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E 7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE 4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F 744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D 67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA 054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA 6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B 8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB 77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B 72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D 99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD 8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C 82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A 59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C 403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E 0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC 9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C 5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D 6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E 1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4 0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61 CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27932ADC486BD9CC130D94BBD05 43872FEBA04FB8866ABCB4D379696E73B84BBE98FBC4A16CFF22F8A7AF754624 2912C228030FF7EF23D51DD61BEB5171AD31E2B630475E16B6E0F3C78D44AC30 712D165DB5ADED89056FBDA355CE0DE5DDF2A52DB851879E39085EE9D44EF757 9B4BEE1ACDB865002ED4C5A98683AC13D9E1F818EE88E0A0408E13888A023B87 31F35E750C4DE7EE68DFCC0211A2860C0988F6E682EF84373DB982BA28162A69 64E9CFC6ACE0A25114F95EB7FAA7E99A68533FC4888AE57C5C104B219CFCB938 DA518553B57BB2D9E462A5A68F1E8E0044F1FBC52560D53A6C2EB0393AF5CBB1 55D81F9DC2C643F2E2DD0129C306FA3A787149550BF32119399076BC885D150C B3584CB2DD79AA0B27FF0D59D7CBC477D5A29F789E37CF19F32D9D3F6914961E AADE5423667209A686D8BB6F2293659E91D09CFE321C53B34D830CF72F00D3E5 FCD3B6479BD4C862429A52E964B3BF8B81906F32517E927023C2AB14AAE1BC5B 6B0B906F420772505D76FFF558C9D3BC3E980A1FCC61E9AF4B9A9843EC4787D7 C41C6DEC165A5299444976F34F301F2950FAF95C529BF7A74514AF883C50B4AB C21227588FF0A57D1CCD8A91EED659F63BCE43D5ADD1F3CEDD661CA2B68654B7 01E17109377F92C75135E060CD805F98FF47DE13FEB6C7FEAC15DBF630016448 6C7F12BBDDF1C248C3B8FCDB8DF5F93357AF164A7114606087697E5021AFED3C 0F775E02982C4599496B71E4B6F3271396CB9B581F70DCBB0435F111D2216D73 0C78C0A5C2AA5D2A40758BC181BAEAF2641B439D4FA6EB46D03338BD95820ED2 D57CB7AEE41EEDD77FA59FFD1DD7B805B567A1164AE77D8DB5F49E8779938D9C 875AABA87925BBA4B374E59AE9780D231EC4D1B192E7CCFC31D87F5378200532 F64EFA6055C148898D5E67ACE7363D8AC3CA2050EE8C47DD1EE29FDB882A31B5 E8116DCBA78D5B9329DF559EE4F7855222AA01E676A7CEE978D9881121BBB96E DEA72B73FDB70E170B93BE01C4159319F4FAE38ACA41966CCF60A8F9424C098E 69210A0ADB89D2CECD169D5448BB34DEE20D9905BAE45DE37F41259185F8B175 B8EB2AAC102E05940B494BCB1F3B79458F0086AF241B063D7EDDE676BEA3055D E3D18A35A848A22F9B4B79DEBAF97466F8158D8E782331B673D4FF9C12177DD0 CD62BCF177DDD0F950A8652AEF529AEE43BD52DD513F8D6585B85F4896B45B58 6F0FC7FFD12BAE6B0E477C9D6510F6E87E3B4D75C9DED5592CE95B6E8ED406AD D71F59197A116377319BA68A214FF237B591757AE362289F2782350C12666847 91F72F0A88E56827097522C55B3F44D76ED3EAB90B7ED0ECC3FEF34DC3C0D391 6E06E03715926E3AA986E3C5DC076EF9CC0F5B71FFD3F02ED339B1CAFBCB04B3 D7B17B617003BE14730CA3341A003EFBCDC8A176BF4467440389BFDB7D331823 CB278DBE285E6732477E017A2A9B1AEC5C113A491EEC6141D7B9C435091FAC4B 6C393AC995DC79F0046B3CB03CC01F714A30BFA08052C0BC7C888B1E615AF648 256AB8F551EFB544240131B54C3415265C6716F9E852DC4973525332CD5B181B A4DE4E041BFCD79E978E572C2A53A7395F23977E60B61057111B47AD35A580A8 769AF52AA9067CBE946298D77FACCF06BCEF0514943EE8AABD1C54B9378F0BDC CFE0D81EB1BF9D0082FBF97648C763009B41E8610D6904DBDD4F1C5D82E6A663 2F6F7C4F99B83C0A327A90E16092E7963848B243A7E718E078A209B1A830D978 73588ACBD3E1F872900D4C3879524F139FFCA71066C96424771C19E5FFA0285A D0E051214F11F4D7557C8B376B7E6DABD206AE08307F20F12755B39306B35011 E5EEF050AF9118DCE00ACA6B266E66C0C63D579D7D90134D82268773D570B7CC 5E4C183ABB09646D3B9E70D06E2CDCB9EA0B108A6DA4E3AEC5733CCC0A14EB34 1D39DC8EF3308FF55CCF1F736B2DCBCC90207D6D484216A28C5BC32775C91D2E 78A63A01BB22EC15E69860AF1EBA0D74EA154F044CA403E210291D18489EB661 40786D375568D52BE04A49C51F2E294329192552E084BE826B25EC6A254D891F 6C34A8B08ADD1BFB2FEE17B28CEA54E4FD352E2A01C649D05BA5E72722D42F5F A2C90C27FECEA6E5C21B0DF46E6571358C04287147DB535DC397A958A90F9A64 6A60053642B8607ABC3EBD65B1A46F4B22017F945D059975D7A2A465E13651D1 96D111DCA6B3AEFD4F3B5C0B51E968F9C6E1C365A390850BBEE64AF381E7929C 9EE72908432B77B9D58B0DEADA36802520B699766400B2B04AC92014D99C669F FFC0E2127416F71925E7579213FA266F9803C197F2F0722B37C78C03A505C76A D86B400C039466E4D2E2DC5CEE614932A0B8600811EE809E21446D12A4A30D8D 32C6AB1BDD383C05897CB4A08F719102D38ECD71359273F623865600455A040E EBE2FE4D6D031A0F96FBD7CD0EDF88C6D092755EE07DBDD793FFF279D1C5BFC5 4DB4D3E4BFA1A8850A608BD6F635A7AD717C45407607FEF9E14576EAFFCB5EFB 2B8C1B12CB88CD3D70FDD0458443046F85CE4DAA12FA4BAF6FB1673A1D3C48CF 2F891D1BF832037885457B4E46A2D2418AEE1B46C30EE4E524723B7842C9DFD2 60A72B6AA65B88031BD577A546CB320EF9E2B980DB8E85BA6652FD2BF20BB637 2753016E7800E540154727C01E6ADEB5422B91D5C20F9E8B2B2AB9109EF13F05 15DA2ED05ACAF566A51BED58221EB434CBB6EC3CC34C083DCFA54694A1E9FD7D 2FA520B3DA37095B92844CCB2958E86484759AF1657B5B6966E70E21F720B0DB 51F4C3D14EF63A60A5383CD166AC41860949F52A9EDEEBE352C64DE286D9FA70 7030FA4357196B56E8FF52E2264DD8DB2AC5057E448DAB1B828DAA153393C805 A57328D0583339DD7AFBD7A9A5B0D67FA92C62046F8F9B2FD8FB424EC1165936 486A469AAB12FF9490BA39D4AF4EB41D682F278423016AA6C173A2ADA81AB2A6 919412F56463799ABD6DBCC68A96C67C18E793A4B84027DD9CC233310E84E4A3 1941DA5DBBBD462F7C7605ECBB28F46E6089E9B911CBE04C207C579BD999ACDA F9A39FFA4C396166DBA3A7286D8A6830B975CFBB9CB99DCF36A3057015218BC9 C05CCB01B514AF78D5E3F6DCEDE6816E64719DB53CBDADDC52C3E05E2075813A 9238E39CE61E0C17DBCC3D5A321950FDFA8F7DA670821C1F37032E6C52EC0BD5 81F698295732C4248C634449F3F8DD016D07583818161066DA6D1F8F97F09423 E887B17579B2B6AF2F4D18DA593C0A0E7DCD4A21AB3D7E657D12E07FD63F5B23 2F362D1664E293E7D85957D450C025C5B9B2E8889283D8C8D395B135AA50942B AE668712615EDC2100EB5EA761360E565F06A23BFD436DBFFAAFAF6E583E84B1 AB02C5418E41B8CDEEF026EE19139441F33DA61F28E6218B0F2C7FC79D2A3AAE 5C7270F0032E465BAB57AD5323F4851D4C231A66D4038562DCE696F2DCFB0F7C B85AA1DF6068D85C017C5C95064FD4F0C3EA966E1E94CA3C9C9A76AF0B5E981F 4CC71CC9C686EA4ED348CE57AA6BD30A16F7111E092D81B6675F7EFDB30E4411 C0CC449A53D60F13BB248ABFE7DEDD56A03A675707AF1B1F13829E41C9226504 FBF20B944E575731B7FD1D1D16B18275E7AC756800BEA08B3DB6F505127B6BB1 2E49246603B265FEC2DCF02330C86FBCF9C9F83D335E363744CD49AA4CADCC4C EA2D570C6B130166F100436E50118D56630E2B596F44D37275D61DCC9C9D365C DD280B1E3C50F7CA3CF3A7AE08FD2451ECAC08092472D660BF787D04D3C3B936 7292F46A57441B15E7398C7A2E139DE61729D049484B9E9E29632795AF3C198E E450BD4E843FFC0B8EB45D3F0BCD408A33F6B9E6B83E19317183654B196D9FC2 BF327E50BF4F5CC83989D88683FAA8851FD91BCC64C797370809623DEA519BC0 0F6637F304BE66317FBF98F8C700D28D74B643FCE8517454412D0F56D4DA901A 8C8890F98BDCC83B836F806A4BE2349868E7722D6D8A260FC3FCFD39AA2DE620 E8F5EB6FD9466F7135C436F9E86937631BA472EA77E9FD4BB9E5772AF4E19232 712783E10A83A065E1DBE7F3DC45CE16D1BB35113470C88FD7BACCCEE874208A 43D915B0B6D0A497D55D5D4ECA65FBBE334EA902D71766F00B1D950FE2F1EC77 E4ED0E969DCC78C7F04BFE7D03F1113DD85A47FDD921E4714A59EFD829D62F1C 98876969C68FBA644BFF55B3FEF54D99E081FB6CBDA470A2952E29F52FBB59FF 778B2A9327D0E12964F34E1537E81251B2C910E6F75497A01EF0F24A3C85B421 AAEB193514A26869B53A9C7974CCAD5FA2CD9E3598353D755B04597048C5F740 81CB4F80AF5EC07078B84458A0EDFD58301CF24967ABDC5CE8B6A9737748C494 0F16EFF7D430328DC9B04E0770C70E68BA005506E86737776B763EB88E64C5A6 F5EAD4C4356F4A196900B9D3878A0DFB898496EB0C85EE207C50C868909D0847 87E9D16DB5DDA440CAE1D609EDAC8D96E0E83BB67C74AD1271559593CB4733C3 58D54577B35CB1CF9B954A9C422482682732835019D1FE22D6A0A6EA8950D25C E30AD2985C44267209498029F8FE133A435BD5009CB0A8A1099E95B34BBAD9E1 8FB64C79F6E1D8C09553B35A952ECEE66360621077435F8E6E64C1C6D7713BC0 91DB1434B9CF86CBF48B2FEAA908AED5691CC81C09D87EFC6FBFFC2D1F79EE9A 836F333D6B473375BC8F6E8102B0C24700FF38BFD7025963C86218DC1E077559 D4B80B68208E317E47E4B6816F04775C64DFBF621883955BF81D0DD586B4AD09 CC10EDCB8A82C0B6D4A7056BA14A113DF3B35C7300D43772EEC5C0309A741CD1 1A26C2C80D520DBD1EF1256B746BDA0D34DEBA442BCD33FFB6F103EABC60C585 D885AAC3E1B6452B48A66C83F918E918EFA6034829C898440E436AF1A3D81AE6 E74AF9E8F505D5DBD7BB58432C5AFF73C5406D78C8BD85181E5345803B2D1F98 0C81540F82A04C357AC31E9AED37BD4E8D5FDD95B058AF5AAC0E1D35A7D11095 31D1F8AFD1DA22506B8E1B9D72D91BC9F19D308C7FE6B85C2B8D5109276092FC 718C3892052A890B3F785E57F91E83FDCCF702117E5E81A123C53218F4B74355 65BD683FB87D87527BEFCAEFDC83C019E7FF741486E3CC1597B6A2E493D35603 92B57EF508876C54193887DAEED97A41B66FB83412239066EA2E1C0617FF7B10 8BDA62531DA6C6F8F06B7F150DFB3F6905A2B7076442F7C4780A41F6628E3207 1D1FB86627C40A84D9894B73FFF000CDBBE088CFBBB241FF16C982353936EB17 743EE092F93894D92E9BFD73E382FA5E618B21AFE8E593B35EDC97D82D5FF8BF 485605DBEF4C1C533AF217EB31852B6D05ABE12BB50F307C0F59500B5F89CA28 D7FAB89BBFE04B93474B3E6E863F5BD37222A6EDFE81FC5AEDDFD128DBDC1ABC EDF98F9D5AC4888493B4208D2B7C937BED3A271F4C0DAF78D3F5809B3697E28F 8C8C00C6AE930844D3B54C6C52E0F48DD76BF562C67D4B035AF36201AB990445 6DDEE6DF82A8E4242787B565E8DCEF69D54DE590019CD5189053A04342E2515A CCD0D4F3DBC7ED1FFC82F35407DB1D4D5A322B7957A40C30B3DAF4CF44CD096B B8C19BE6005DB525A0462BB49665589DBBDB111CD21AC2F7B6AF3F61D6A97FEE 5103DBE08AF0826660BCCA78410A361CA68950DD6A0AE6408C5964CC8C73741E 4ABABF4EB49D61BE53561577CCF022347C3DFE48F5913E45F1C7E39A1747A0FD E41B5800AD5FFCC50DA109F2B38743A9566FE6098A85D27C1E3C069FACD059A4 7E4A706761CEDADAE28FAFD44A8C3F9CAD93CA94FAB838D8053CE56E0B0A4AF8 CEC76D72955D888BAB4ED03271BFEB2A41EBD7F7CE463286D25F49894E8E6BEC 18346F4AAE8B7C2524D586C937020B6FEA4A69562275E28C1CCC37987E6CB9E4 27F47C1B45D60889D8C40A5E3CAF5E67DDDFB2EC9C87142074CDBE0FB508EE5D 7F9ED4996F009B94E0FCBC38938DA56EF7E86ACF4ADC049CB2CFC6B9E2B4CA10 699D52B2ECA9AB025A104109637D50744B218924373D1D0CD1138D516408B64A DF3E3A16F462AF6BE00DCA51EC0DFBB796313B65D01E6CE4160E071B17979990 D6337DB92F3F112025DFB0DDD1E1EC1108F55EAE8F96788A1894F59B525F9935 CE8818B66542CD18D019EF18D77DB8FA541BB47445DCDDA30156033BC031C191 5039096D293D1A34FA2EF1551E243E1D88A55EE6E2736DD1A725A06F6A78A520 BCAD87F68AFC45540ADA3D8DE97841178A7FCC969C159FD2B6F5153F4912198A A555B9250AA73454E9DED6FE1060661BEA6283FFDACABCB0207B3A48E036C39F 731833C66AE165844344678A3D9A70AA3910473EE01100585DC37E364C3DCE0C E81306C3DF3C6EFAA67A8DA1F07B0D7B0E919F4C6E7897A4B3AE49A29ED10788 83FAE69A32A97E36A29BF854831F84534C1F36D962AB49551028505A5FB3B84F 6F0D66A06D333596DFA8F3384D6C74022523B58F1E96BA619278F79B6D24C63E 138E241ED8ABB23DFEEE6B7B2B7E16568AAD039DFD22E5B42AB5B458FB8E7239 57282147B69E6E3A3C5C70BCA065826FAACC8552FC0DEE5560FBC1084255DAA7 2E8D48ACFB4C3AA1C28F0A6F7D0A6AC1293AFA503A96B664169944D0F31B4618 C09B8D108D0F77B9485D1ED26C487FBB8B47F83F782A0206B625A4A81A350D75 A1DDB921F0610A4DEFB93C2288CEAEBE0AC68F757D11D49F3052946BBF4B11CA 2B9171A4A18D8C5C095703ED5F10D93C6EA3B4E46E0C9E9BFF3AC1CBDEB4E019 123CF2099D469FEFD70066B214C0C76C0B2E0F4110DCF2FC8E8619707E025927 8D5E5CD3C4950A055ED20CF299DC3127B7FA0AD747533CE11921DC4F110B6ED9 21B9BA08CC207FE021DE4CC5285829F47A92636B0DB68ABFE8E26A50E36BFD2D C2641EFD86B588DF3AA72309788AE3ECFE10347F41F051BF51F54F05007C21B2 8B4F64329200E21994516DF419BB3E10224A92D7E5B7682D0FB7097EC5672780 77DE4BC4B1A343611F79CCF778793766CC0E01795A83B3171421F40A144966CD 41A188F56F3D54E6578732D53E21156993E78B903572BC184C87DB3FAE64D5E8 597D06D882D5C0DA5F8F8AB03014C5886E836F601A0C4ACFF9EF81B986E9D053 55BA66A303FDD1AEC853A9E30DC0C1F42E850C02FE9216A86E9527C1BED627D1 6554C85BA07015A2A7A7F00FB51C14CC19DDB920C41DBF56DA249930D58C034C BDBF98F17F143EE5C635BBFDD3BC81E4A1805085AE6CC28FE3EB47C2818C35BC ADF57AC82D142E1AFB16106AB08A3DFE989519E5C5903F2D8C42B13FB114857D 35B75B239DEDC70163B181AA43D7F9B964EEF1E43CCC9959AADE728DA6D08463 854EC66A8F2114A2200EAD92D5003C357C0B42C113A0CF1095D6375B613FD68A ED6048680853B5621B55CA62EECF5C4F77F909D7BF361C53F8B90D853930267C A79CC67A446B0087B2B4FE074C242C8F3D8F203E73B1FFDB2433010E00AE80B5 27709B16EEF0EF42DDD56B46D1C0BFEB89B5194A2285C9C2F9B62541C0F86BE7 ED1903968B13FDDE177F877EC6B9ED63DFB5DC4D26385BD85E27B86B5AAF00C4 427FF5CCD7D539D7912CB8E0FEDFCD4641CFE9922C4A3A67A72C363A18E2BAF1 15B2C145CA6A6C07461E113517D6383A03120286883493139D48E18DCBA93714 A936C2232F79E6482E870BCC7E1C22355316A34D521EF8405E91BDC56C0F6DDD FC53DD99D9837771A89B5B8CC3F176A2A9815AC1B6D2E43C394C43ADC530C84A 763886ED0DFB2AC863D8EAA55572732446A31953620D920AFF34E2590F1B29C8 EF50348330B6C718E8C23165CD739392185CFB2970BC2148CDE2D7D3C1A244BF AAD43899E41254AB30FEB10016E5F11AC0185761F73ED6285E041132B9F094D5 FFCFB4C932DE1CB65666A1B7BCF0A610BBA9578B8414B90FE0F6D5E83C8B9335 D487A8380FBE1570A01B995284559454E89DB607E434BEA9582AF8900C1CAFA5 9411C8BD17F37969432F7CA0E7C676D77511DC2037FA3461C763809022E1A8D8 6646FC08A21541654A5735BFEA2FA68D9995AE458C11C41D563418A13D5FEFE8 E7E3E3A601A362CA2422A749AA1B226D35110B03270B6C620F851A3F50D34707 08FB5DCDB10D33AAD6728B0E76AAA7E98767D997F144ACAE9884F8DE2B3FBCEF DE7463CED6C95DBCEA9AE9EA9E666B366C5FE334D03B0097EE7148A3DF2978B6 FED5E4C262DB969A775F941AA6653FFDB7066A24FC6E19EA0868AC065D5863DA 0BACA600CA715BC1A23AB469530F4D7730131556FA1B3CF3C78F2B37EBBB801E F108203B858D2CE1E432E9319BF6CF57137216505A8DF7F307E70DE9A2387853 7C028D25FEA6C83C2558AACA0B903E4DE917B872C8226FA349F587E482ACC697 2F8726CAD12A19032AB62E3814AC6D2C3B36C09DD4E4D8B518DFE2C21306FCDE 0F030AB52B41116486DB9E5BECACCCF97C0CE60CA33F5E81E2B1E118F79F07F8 51F02CB58E8F9C63A81D61D6AE819C82E5F473C9AB135AFA3495C8363A3555B8 7EF46153D5D277B5759558BB7FA70D96D2B0F26EC3C984DF063A14463DF7BEA6 398F4CC4E105522C359F8352D6A858A7AABA0FBB87168C7D00D96E1B3F15AA2F 19F1838AA08018509DF7443DF50AF59511119F193D4F5B3EE8AC9B2FB7D19240 CE2F356E4BD77087232CD182E5ABAE8F6E5C47B5F26F4EB75052CBB82F3A9AC8 FCC913DABB75A51F49247BBE4369FC52A6A24344DF6926F3DEF4D4A2847A583D FCEFA3EEFDB13FF245D6A0B0D1B17BB4A1C4D6E94D577F9936B1079766C46960 29B365FA82CAD68EC00CA7A4B89B4F06BD1B0790B22C5067B2D26AA3F178C749 A146A1651DD02F0397673C670E06E6BF5EA920FCE3FD23BE3DC25D9BE67A168F 07B8D5EE0A2A97DDEDED6A2707CC2BBB455A07FC27258E85A640C51802B19ED9 E9F43E95A190486D28B70FFDF5D89E3326F9F8E223470849C3070250A94F854D 871A511960C2B4C857AB6B83C6F56E99146C9B1A4FC2D3D192EE0AD1B448F573 7BDE711B9E3C47EA284063F1F8490A6DAEBF52677F8C20EB7D6A9086084296E2 AC144156509A91CCA3DE861398DEFF7E74C844A3ACAA79B860579AB910E5E1A3 4C5A81109B1BBF9DA1C2C81928353A443031AF58B5E1A545EDC5613CB726B3E4 169FCE4503C5FF09A1F402F99D4EBF27B3D8DCB127D6BD615584C311E3C1FE4E B288205B3E9281BDBC52A949E8DAAFF4FE860943E7810B65B4B000A5D42A6F01 10626E1596DF0C854CE2F3407FE0E864EF4138422F16CFE2C65525E3972E42C9 A27BA1895C8F2C386FB300CD73EC7DC03EA0846E3DC5B843C1FFAC25BA59F47E AC3787E294EF256061CB16EE09FC5295F5803BD3F24F6C4188E206EEFFD2580D 94BCE1E6F9C606698BDB3218301D3765973C2B75AA913443CE6B1D7438F805E2 5D5ACC016A8DD0B71E5D7EE45E019C0B7BA0C149B9158021B6F472426C655275 C645CF768BAB03DC70A9488A06BF62BA784F44A74CAA79E4332DD8BC1FDD95DC 3736404A100258673E4895B8E22B1A123E0919D5CC599CDFCE0BD96C10BFE421 0CB3A7F194A2442E2AE8153C0B531D05F1704C4C63F8CA19990EE5A7D08176B2 38839E6BBE2CA42F629F7EF5163B64DE09462BE9C202455EB083C529F48AA41B 7E0342F4C28AD3DBDDBA75880CD30B272A212B5C3987D27EA1726956CBA39A5E 4C83EC82BBDE3103C0BC11B5E03D951DD80D863D6AB24F1412B31EB47A1C92E0 038E8796D09C6F32FE27EF73BAA5718CC8D84178C53313D4FA7720E706AB0B16 8D264C86CE1CEA0DA942FBC8DF04241F2F84BD46A97FA6CA390A8A791FA8CA47 085D532C8B72D9AC204A8F2711CECC595AB286C4608FBD36C82A2FF545602010 41B69445CEA932843CD24B22261E1532E848148BEA74579989C0F3450468BDB2 11E0247514C2C2ADC66820A65FB9C7683D50D5961C2122CAFCAB27AE613DBA6C 911BCBEEA62D981B55615D47FF6E49C7348A680BFFE06EF9DE6E19DAD5424965 DCDA1B655D803CE8581BA0AB7EAD32B7EC4C9CBE0BCC74DF132F5EDC9D50B438 D87A96B3FF181058A150FBA16390766BFC98CE986C3875D8C6F15F78D88268E2 42ADD540D06525B10F6E80F114E8DAF907F31B639FC62E1B824F3B245083F708 C50D9CBD333CD4BB33F0AD549BC51BB611DDA9CB4520ABA377847C5F4C7644DE A3AAE8A48CFA03011ECA539AE646F47988982E09DFCDDB5E25DDC32772885AAB BF9555F6FF946A53E9656D625DF441C32CC63137FE4AFF164836EFC6718A8DB7 B4D81E86F3D4D1A0DF6DD22ACBC23A2ED878B9BD43617DF539EB4431E7E49CED 22EB650937C1188C750CA36E20C8F374DE68B7C79007729BE085772F7A3A8DBC 9BF36220846630924F317CA350E9173D618F81DADACFFDE09E710299BF6001FE B5CF89F66F623A5F7CED70EE024B8ACEAD657F63F7CAA773B59B5620E72FC26B 4678042E0BA4F75F5596600CCDFD7972806E1F3CF64C7EF3D88240C4A2A8E81B 07B93F8060719905C7F7E877C4FCA35F46ACF97F7128EA1FDAB570ACC9B8CA88 957A8F91D301336210FD59D3C5F365E822B90076231477F49C3CB4EC2792024D 6864AD523326123254C7AE2D9C11D30A4ADD2CB8D8CA14CCFEE0FEDC8C49D2F4 99C69EA518C7EE58E94403C4C20DB99DE800588BBF79C27C3A6F03D653F3C15C 8238B0E8E607D425028405BE81042E33EC2B5595677AB24EBD08BF1858CBC0B0 154D1E3CAFD2780D6A73BF7D8DBC5B800D4328E4F14955F6D86A2F5934A4EC50 B2D7ADF53A532D6484677807839039F9BD047FDB0680C50BF89D3924716F80DD 0B421DFBCD32F4A7C454B4B91C6C8639BAB5598951DAC178E2320BE563AE0F14 B96CCB98F51AEE99B83098EF77FAC10D8B88FB29B839C094785F46A377BD655A 68787E5A6DBFE78ED1F304AFCFBDBD481348A65D004646E03B5AAB0EDA67A779 B9014D14750AA488D8DF9C9DD347AE5B68DCB3C28986D9F09C48612B8795BA3B 702415A816258790947FBEFBE2B85BA0913BFF1C4F35C7464DCD0EAF8397A769 8677C8DA5F89253B1C3AB2F41C3C5448F17C5DCCB18DE110CB9020B9E26F0BD5 E0806485FDA93F3B54AA9B9D445090A23123BB399318B4771EC426CDDBAB6BEF 8E24B165DEFDAEAB660649754283A4A3BEA95522F058D118C7892EAACF376CAC 877028063F1C0429B5AACC47CA6874B8A83C75B78A64D21CD14214EEAB0F4FB4 D26FBEEB479ACBF5740230C9943EF7B6983AFB683855A877CDB8238CCECD8156 DF9271A64D6148560A81EB5DE5F20564E2EA814A974DAA436AC36F107B289E90 111B28D488CDED75CF61C3FAC18581D21E7B517271FE4284CFD0865A6FCEFA3D E26B649A2F392FF3A6A0A781E090FF5A98594BF0341D065E8E68B0A0969DF7A5 71356D718C2933003D218218BDB35BF0AC541180635FC8CA3C777008B09FBCF8 8BAAE9D764AC5A8CA2E88E11247E8512B6FED52E7C2339CED4E4F82BE578E342 6DE6129998C520F77AA5032191A68F101D9451651C003B33D9A0DA25E241ABA3 A29AAAF4B3C81DEF8C36A52C0D8A42999B63199295BB479F171599CC952C7F59 B18BDA62685B45AE1CE46CCE2311789C46E155ACD5A8838C6E392F5CC2551401 399F83BCBD4DB6BD9DF2EF4676D900EE843BD07D9CACDBAA05855AE2F7993A7A 2FB0937F06186306D7C788FB26B536C1915E570863E5FB2D91C63E6FDEBA34D6 A2D27DE682224614ACB3A799B3604026FF9F9EE56ED3A9380E1BA58057A036C5 5550170FFA61924C47BED31688796BEB3927C3CBDC9CBCAA0BE5D685D7DE241B 24C6EABDAA52B245BBA14D214CB61FF044B0EC7CB8731958F61D65D7268C7FAA B5BEAE3192ED338920EBDE9B6F625E10CA87520C72223FDE13C7BD49FFE99DC8 5DB87EA56CD6C06C8C7AC6C193340E9F913C83B62CD5BD580F5CC6B6D8C1470E BD09AE843D9EF28CDEA143B7206DBAC3B896CA9D6169DD634B30C41D73310BE2 DABB707A86A5FFE942BCC7A75FB92EAE77EBCDF26DA07B07D8ACE98C3277995D B7B1198233DC78136FBE39D3DE9B6F1F62BBB311D451B46D7AE0FB28A3EE7AD9 323547D3399AA95E95811CBB50C5EF6680363FC8F7C7E5230B9DB9815F8697FD 047161AC68896D17821504A87A73775544F932495C55174EF14A8350BC2C055F E095F53B4955170A06721543827E3F1C90CF48866685B359147BDDF8FC42C423 3A6ECC23FB9353B3B6B90C3E8CA4E4E930AB97B2A5B8E348F9242F479FB85CF6 C67ABD6A09ECF1CFB93CAB1960FDBFDFE108570395385765077565E82107CCF4 95612493959FEA678C601C03115D6947A0B14492B04053FBC7CCDBC058DA2D32 44E1CB3FF3B4F3582002245707F20494E04D681627A2D084AFC1B8144F5A21A5 088FDCA63E160ED588C28FCFC523623415D2632F2104245379D9BC5E067E63DA 3A320036E60A2A65F56997572166E8E6DD4AFDB39F1F84AFF1D5E05366F0E2D9 0FF1BDD6A98C9405CFB576E4C96F747E4BBE12569018B5123CD9EB8A5C0CABF4 63833B489B792596B97231202AE359E0D9648F7A350EA0304B7AEF575212C851 788EFD372B9A3220E6C647A317FD31663D1F6E6B0F14F7A8EC8E7A7C291792C8 A9EFD4191C8381B62E8BCC7B14C8755FE1613758E94FBA6EE7F9DEAB356EFFFA 20D359112A8CF8AA6EB2990DBD57020993A4C0D3BACD910A25F318009C253F49 CF460E81F4B942F009BE7909AC9EF593E7050DA6F7E0588F7D70B7E5E3982855 29752C3FED27CC39C420E8A1A27CC22335798C214CFF18359B85F84CAB375769 035A617724D498437B8AC8E7C3DB12389DA206D271D4406913F37EB48C820E07 245E5E87E4F2CF38FA332B539A8FC1F5A2162A1353DC27C2064FBDDFE12FF7E3 9A6A7690B8E0730C0F9B78F275DF43F5F5FEB0360C0DF657152846DD8AF2186E FF6E19B7E53E8F992451E1CD7E888417D3168D1299CA31BA75DC2EEC6DD751FC FFF946411A8C48E3A5C98535A58FA490DE9F0C5ACBB228A5255C48BA98736095 7CE11E73BF3C403915FA14A4A8144BD6AD1D79843688BD5BAC427FF96B6C17E6 82266F1204D00801F0274E8C05587957458527D7EADE10A03C301578C8BC4111 334DE9BB4B78FEFB8154CE0ACBB95316CF7B5A1BB4547722DDF513E013A23B3B 3899293091E25619C0ADB9B66E3C54DE2A257A5BE8CFCAA337DB1D7A01383F99 F5457952EDA9C68E89BDF8E7B3F557DD20834C428A4DFA5B957A0BE481889125 02751A25A687F5CC5E679329CF50F644BDDF436E1E3178CE27E0B87115FB5A98 23065CEE85BE84BD37DBC82D94ECFD6FF88284F98848C73E5155D425609CA6D6 ECC71922CAC6F81B37D3A0BED469A5A879673F4D7E623D77F2C9533417FFCBD2 BB09CEDA826AD2945904619620E7A759BD3BB2E799ECF66FF19194510973CABD 46EE7FF5B8609B79469720FC8F934AB53A4A39E583EE43E1E3568CCB96A7877A 923F66B2F7EBA572ADB047DD9D9F25E01F7681A4B06C05FDB062FD346DC244FA B3A054BD47B48626907A7CF81674F3535DAB490E275E776154471A5F8BBC9F8D D811CCD6B26E085A660AB44533C4A3FE8B1511595399832368D022623D945C09 B65F2E7B404E11A0BB3AE589BA84520F06EED018D09245CE627E358E24FB4690 A617620ACBBEC71D374AC3C96D7ED04DC0893C1034226AC9D70FFA094491B64A 2EE7DACACD7B4712B218AED6786E85A97A0662C261E99FDD6322998B1F95E08E D035A977C2DB94793DA2D90F3A14D4EC9A879CD3DDE7B874872E117ABB74A699 16BE210CE77A1F4BA087E7E5E6F0666CA396FA06E9D7582105FA8E9B702B5654 7323554BEC4DC645EF7259FAD81D36725394F94C1F1B0DDCB992F4F6692C879D D8DF61F743B5BFAECCCDC1C7A16925D8E99D7D1BCA04A6ABA8E8327063B97FC3 095EC36F6062A93AA99E39DEECFCB507BD677899A2F170F612785DE13B89C7FA B32BAE429661C35EC5CA6F6916F6FAE1B03BCD6D1EB88DC99656BBC40DACBBEA C5CBEA244B3A44EAD417B65554C8CCFD173CB9ADA94F5D55E802E032BE53F6AE 4C024EB9D647CBCD0D05F4CB0E49C7D1E9F573129B46E1168DA84DF1F7E9E657 A1C37AD37489AA8509AE5B71C4183A5BC9726687C167702EAA26DC959B3553D0 FEF8B04A46FEA60A7B66F83246725DB510C0D7F9A4C274BDF5BCB8EB9EB0A5A4 52D7E328AE40F0E80F7C388EE93E434F2B6ECE185FE729F5C25F4169043CEC9A 42B0D432D25F97A3F4F2849F5E11B0F2D7AE49F4FE5C59C4181664F8938F9B7C 6DDF4EF92EA98AE49948AC5A70AAE737835C9DC33973AB817E1AD6C5DDF42BDD 5F5CE7EB9570DCBA106D45D2B31876F1C5BC94D2733E603D7DDC1AB7332E66BB EA9A3A8E95B7372BCA6F841B22C2B6C914710373CC20009E07E417F709A540AC 78D58511DFB85F629AF125DB14480979C68AE774184EE8759064288C0E794D76 E6F80729725D0A6ADC875D58D6657F0ABFCA16FD200C48A45028B4283E3008D2 244706006EE511A84882C5CA0E307ED3A9A4F50450900684A655918269F1D146 86656A3600C0391A4C6857F24B3ACCEE4E782FBDC0EB487A85A2B575364C905A 40E70F0866ACF299D231D624949692ABA887D56A0D94065A3FD6FB30E9EBC027 755DC262C0912EAE5D330614DFC41F66B3B00461682C16EE71FFB95AC0670259 8C58380A0ABB59BD43798091F979D6800E92EFE12F50B499589267198C9E6602 5B4B6EBD6461F78D7F24E647F4FE4E4844460ADF4CFB5CF60B1FA0D42D02B836 3615E35FD7E0E6866206485BE7C4BC920431799F14C89C17D4F82E7ACF1C012F 40BA05E3337D56EB9B56CF8444402109A9E3DF297369C6B9CFBBC781E17DEA3B 68886370468B45066C6D6158E16924079282177EF599F66ECA50BBC316E9935C 7C8047EB708F831FCD7EC7BAC3CFF9DF196CA7CD583F9F69A65676A69D957C31 B98C1512D62AD24A9A860C34B9B5699BDBCFF4FAF504F3A6EE72F75F0AD14BEA 716C41BDC36A7B8213E98A57D120D5CD3E1009BC546EFFF690D73E026E7F32FD D60ABD6DC5057B11 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTI10 %!PS-AdobeFont-1.0: CMTI10 003.002 %%Title: CMTI10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTI10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup /UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTI10 def /FontBBox {-35 -250 1124 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTI10.) readonly def /FullName (CMTI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 97 /a put dup 99 /c put dup 100 /d put dup 101 /e put dup 103 /g put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E 2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD 8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2 7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC 32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09 482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF 118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381 1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA 8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4 61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20 C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504 3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70 9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0 125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8 34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A 30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9 39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49 9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184 2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF 0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348 3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D 9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757 802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28 FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0 98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9 5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93 5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815 DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37 4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC 8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362 E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F 42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96 3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59 A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F 7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4 49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428 D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C 0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955 CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485 1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB 8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388 6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468 83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29 60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284 42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2 1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A 21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA 206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9 D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7 7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B 55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4 6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762 4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392 871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E 9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645 DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5 41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8 2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F 220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001 A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D 981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F 337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8 139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B 1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC 100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A 1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905 F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB 72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7 A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D 310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928 7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989 1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2 8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33 80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610 3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996 4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB 865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B 301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48 3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9 1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29 0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0 30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E 2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0 C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89 14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A 44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654 DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34 9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87 4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3 2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676 21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26 47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4 F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9 D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F 03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5 886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8 352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD 9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0 9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3 92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F 821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93 3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0 47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0 F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B 9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1 AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71 C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978 B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E 81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038 970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C 6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7 97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668 A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594 971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96 514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7 8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C 392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170 3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F 464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053 911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6 261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA 147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516 C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB 61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3 F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C 2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C 7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193 11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C 9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66 C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3 1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692 5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5 6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0 EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23 AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D 8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94 376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6 B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B 02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56 4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF 9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD 751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198 3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A 40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962 2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360 D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A 0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E 8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946 AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510 6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D 098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337 900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B 41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149 7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA 2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC A91885E7410F56F60C29AB8B417E2D6092F8BB70A2DD5DEDD4BA1077D7CC62FD EA43428C6F79C332342E15F75B08A1ED360B3511F823E75AD49BA7AE63B19238 2AFE8FAC2715E2FDC895E95036D23127557837506A3B542B0E4651CE2B89C252 31EE8ADC26E2C04E8E30A9CA12F066CE01953BE7867171FF6C7E834742C36C3B 58E74E4B482CB85FD4D24DB03D753F260A585D552CDC9E1941446F2F5B45FF24 2DA4932B973139F328E7E92828B900BFD398B6F41DAA0D6861C66AA7F5E3299C 87A5925CE0E0F9E09AAE0792954A1F2C0AAA8288DEEFFE579E38A3CE8A943EB4 55322A87C1634074EBEC25F724DC1BCC1BC10458CA6C4395659B0DB6B612C151 557CC669D8DC37769E59A5AC6BF061C79FEE265DBB59520EB8FFEA273601D1E8 2984B8AE31AE343F37D03E2BF97DC48AFE50BB6138C7B9F9B5E28672A37BD8F5 8F8C98DC43DB22C6537028798198E2D3B0453ED72487267D653DD50F1BBBDA92 833A987A95FC1F275B90B581B4BB62B6863A4CFAE37F715EDF3EA5A33679FEB6 4847ABB4B3D170C275B9F1AC3156D731198DACE0B051674E85B758500AC9FBEE ECC75EBBD85F8D62AAA328FB09C6526F853077AEF7EFBFC2B6A29D6D508B1E19 EAFA4C67EEE44045B9F15B9762B3DDF5CE5C18B23A5C2F73A1F6DF7F8679AB78 843AA41FD2A7DC02B45B729EB76C66A89F5F76E5C4A0C0563B1EC5E75D72EE35 A7F1FC89216B60D82F6F2B8DBE85E4FF4D63712C689E696F60B52AB622C2A4F9 37C380775EDB72638D3F81F61D8D74C76D813DDFFF35ABD9A502F2BC7FF65754 2A8660A5A53E0CDC2E8A95B6E33CA153EB711DC796D313C8183D707D3F0E3EE8 BA65E0FCE3F1C07F3D93F77056688B5496AE35A6BA0B59619DE78640A8C3F7D9 7DC5E94894E1E63A7D80600B945B1CCA50F1B85F57673C6CE09EFC4E229D4635 48AB466118D273BAF7C1B52A067A88C00EBFA7FCB378F1575BC0145F294E6F7F 8007602C6560476FA20BDB91831B22404DB1C4C167594B1216C25226D262FEC6 F5D0DBAC4B8D743C669CFF2068CB9BCD2DAE8CD6EE1B33BBF7514C4941AFCDD6 89B75F67339B25AB6E267BCCC5E2118879AACCECB5CC2865802BDB4D7581F5A0 E81AB0F7AA143FDBE743E16D028E46BDA94AC2CBA77DBEFBFA32E462EBCDBDC5 B86B63333A0C05C65D4B351948D03668F7A86A8A1388C4604675EA7384F3398E 49404AFCE19832C975A668FBDC29D06268085022982F01A2DA1DA8B8DD5F4584 75F98D7606BD6A45A403CC026A4BD1AFA63E1BC1034C1F617E14A1EE9543BF7E 1ADB8019F7AFE089150EBFC613C414955363C43E0D82ACBB01251C070E7F1040 602A58B2BF55094DF2BCD2689320899F987472681D0933A4BE78C2ED69D76E60 2C437D4D3EA9C8D25588F1689224D92CDC65AC636325718AF7EA47946CFF07C2 DC0FF0BE3642ABB0CC38BEB60E00B41D45DCEE44A71F11B99CC4CC22C5A0C62C 074F3C2FB093560B7FE9B3AAEAF3B563D1D646046174516991A196A915CE6918 CEBF16946487E546C6E433A5C5B9FB7D5B97F2B4B202F892CF5121199EB48642 4448B45EDB617EDB931969D53B9C200E954B4A6DA6617E3A56D72EF332FB941F 4694BAF21CAF8473EE2767CB5434E955C5A08DB04F67508AA1F5CFAE25FBC9B3 9FA855CBF2DFBD04C656532230B8A2A0B33C7EC74BF3EB2877DA369035C976C2 F3227355AE2E740152A344AC5E0CB3D04A1D4273A54A35BF8B1F24797246B5E1 CFD5D260F4D5E5131120AEE3B3BF1308B9E55026C969C5451EDA76E0F06E75F2 6DCC258952B63FE0B7B99B39D5563AB4F7CDE57AA7490C71E3CD9EB563E0A9C0 8C54E64E3B537A901395E33847C6FF75C2B6FC3536E8F990C18A6623A00AB558 272AE4D142503BF0B82A13EB6088D27E0D8B319D6BCF1E0E8EE94C9ADD6D4645 A5B0FBD17AF7CB1E1ADDD2D822A76F6B9338B6B459D4A67631292AA028A8B976 8F9771C890FFDF7751F3079E36D8F92AFB62BBB960A45891B5FABC8E5BDA1348 5AC23D29879FA27A392E3DE732D78EFF7168F2FB7B0841C8B3729FFA2B515885 C699663626473D04C1421BE24259C91B9FE8F63DC99929D9741F37E67CF70E38 3C489E823CF0F62B020CF576753734C989AA1A360A21A137DFD644ED2197032C 3DEAB8E7A1306D8DF7E36DDD52A895488E63701D6A69E634EC862DFCDAC01BA2 56DE73FC77027F65B89BF3188686026D0C2A2F22DA92B8DA0F6476F6252D8066 D9F0AEAC5E6F09120646EF77CC81FEDB1BC8E3197E9CCA12C941152387E71286 E00B8ED61DBA85D2EF5550663A1D2C7233D6FDEDBE947241585C4B9580E7A700 5081C957D863FD2DBDBF56CE8DA67E3D6A8A47C3BF38478D3D4D72A803DEC0D5 797CC1ED5B005CFE4A46CF549FEE756419351B89B8DDF13BC2EC18939901BA5D 37ED1DBCE8DA072938DFA9585444FA6F09CC32C7098E2ACCEEEDF7D117235385 BD95CE9C7C997491613FA253743E7D0B03348072F516B7436A78435B19C828FB 1712254A679503CE81FF1761ACA3C3BEC0C1E2736A2908C7A8D6F30D86F7DD00 1BA2200908FA4180273E50863CA552868F1EE5EC1D8D47AE159B4A42C65F3D7A 73332A618CEA966BFA32B9AEFCE9C7CD4678B2301FC1DB91964486B62E28DD60 11D123711C6A2D190F6FB97ECE36679247507514606287D049455AB9CCF928CE CB2C62D55BBC4DFB1F8A033B7D42D8D1119D71F616205A91B48C7C83CB2D0B39 15824D6F324A9CB64E6C09D65C478F8753905E1A0B094D310123FBB7CBC4CF71 08D6381228C2B6C393E8055AF7D226FFBD9CF19379B4E7F75938D5A39E3410D5 4E2BB197AD202DB623844B156AD0FD80AE4CB0E8B7831CECF25E15753FE27E19 A8CF57C78C6D1CD021C6FED91E81AE1F09F1F9CE7D8CB480EB559729BAFB507D B99DE23E7D3A9FD04345DDC7E8E498F2229CC33A991418E69A9366ECB375C42E 69E1B73DC94401E5E7AD9CFE8086432F8026224CD42D9A1EFDB1B3B0D5BE74A9 186F30C774BAF35F25D4B0B1C9C791CAA87015D3A7519184FCE9DB2439A98A49 0DA01A0A9ED463382DAAA05555106902836A46E3651871D20B65879902C0D93E C8C3358A8F64CD0CA264614EBE741ABEC13F29CAC4625A1A7301889D9A994416 24BC8C7816579FB7D7AF946DBB3D911457CB2D0CE74BD645CE388BEDA28CA1F6 EF4DD197628362D38ED6499657B1E45D1DDE460ABE0EC838DF3BBD2B90FD2245 6DC211B771E1ECC3E294F1B767BA0F3D041BF4DB159EF01C3AC7C00281A675A7 BECDF043A5EB64CB6D99FC8E7876EA1216F005A7A63EBA79549D5B6C33FA47BE 38466B6D62D3D00C52D9BB7AB23DD4A4C896D3A5890E8C57B7ED5A627CC7EA4C 0BE63CAA285E1A35808FEE0ADB1FF9EA3B18EC1040560B1FD950D7EF32F7F958 5ECEFC1C01A98E4DCB69934F9314316D3CBC0AD4A1F68346CD40AE6E3A804EA5 7286646FB2A7ABFE62B300F72A0484CC51D34D3FA2B292D308D605576D56EFAD DB68453A08E5B45720C99964B02A5F517A7CA00F6976CF1F6CAEBCDC1772568D 14129CB82DDE0705F45EABE56EA4DC5AC1656105957F509F2E8AA72FE5C2F830 38F2BB415C413D54F348903AA6B614A3AE99EC4B800D4AA2677BC588B5813A94 F5C2FC3F8B09E58B00DA92C2946D5B9FD8DECF4E0B49BF16A81A6F19EA1FBA6A 41FA0D679E6CA980C541395DD15AA0C203335ADF3B0D48D519816D46681993D4 A857426475A068E6C30E75E1201524D6B5EEA7BFCAA429AD5DA4504B245B23D1 9E5E2498B1F63A7E2B7CC42C3E5B75F075006FC833724FC05AE4157F640E7D1F 48C35EC8DF3DDD461EA211E48B2B3E628BE4A523680BC78FAC41FA1FCBC6FE81 17AC84A895CB2CC9CAE4D77FE1ADC8C8A4797A3F1D00E090282FE2116D5848BD 1E61B36613A89BECE27188CBE9E0C7ED75385BDC63BBC9C55E2191F1186917F8 423A10D8326896DF44D7B2A5AC320B1818771EFCC9C20D7E5BD5291ABE762A50 5148AE49289CF337FE6F2B6A369C557D6AA731ACF3BB97E38306F77A94C6EB2B B7846ABC4F32E886B0C66A806C27B4EE3CE94297C19714C889943921426433BF 19002E5C083BA89BF31D8F5A2602BF058A8C5C78DA421DA74A4E2DCE034D6510 C4720403654A84BD4000C074522F9D2D7ED733AC6B46232C69E21496575EFA86 D24B2A8DC064071F35AA926565BF09130B4F96A8150A2E3EB36355535D866B67 17B9F62C47A065E28261990D79E64DE2E4C5CA8E3B6D215925200D982510F150 8B0562589AA66EC47508F0A5AC15B06078A83B911C15232963F6B59BEDF57A57 1322DB18C44E6CA9154AF9084CC02095987FA65AFB0D896551415EC9D45BE803 BD428A107A492BBA8AD075A89112B3FE451399E061AFB98FBDDDEC71DA7BCFB5 2833E5299591FC86BF14F7B324F7F3EBAD36DDFB77313F1ACC40D0E4805D5B04 FB965C08CEC682A07412118A17C4549C0A96F397C3FB466C6D888F5A407D43B7 761962E8CBC5C7E27AD0A3605336CA17DB4CC1593C64E66285117EF7CCFE1A17 203C9F1ED41FB4FADFF14DE66F78E87A9028C853A757204F81CC7F425FC7F8A2 509611BDE84D0F549F5614C814C3E88851F9FE74506EB52C5BCEE4F21DB52BBF 31940BC2156EF38908869732038D1EA6E39B5417E547DC412CDB0B1F1DA09E65 07B13C1C9C962D1A9F7A0EE6187B92874964B3C5E20AFAE716E33C3E999A4FC9 462899118EA9CC961A7D704FE46A872BCF77491F70DEE94E1335196FD787579E 30A01C29CBCA08F301889C27910B03E20B4DA1363F6F5896007F71CA90E1DC57 9C6BE8898B3E2AC201895AB1223CEC56C003299D9C0947320DA9D9DA474D59F8 1EF5F4720AE0FCA1A8E55A2B9CD79801FECDABE6E5FDDDA140226714304D6EC0 AE2BDDDD1A02E3C01D6A46682D801A7BD61C1737358EDAD7D993D9006B56BC43 2467A2A0B58C33FE4BCFD8DAE939184D45DFC23F5B597D788F14319EB52B1FCE DF8C405005CEFF39D4167B66082A38209A7A8E1D5E73D87CE049BDA2FFDD49C6 3DA02E5D6405E2F54C921F6E2CF9F1E18268DCE0D0C960D477C8525CE5FEE998 82ACB08902CF6FF1E437468C519FDD447A2661C381A999E8724AACE9F461E629 998539472CC9355A9E55989EB7CE1FEC9D313A160294AA55910F4F8E55BFB917 BC77A51055CCC1772D0021AFBC1E79B289B539ADC3E99D9632919F8BD17A1B91 BA25661178C5EE19D4CEC42744B52F04FFC27A2E3C044BAEDCBFE020A896BA3E 79A6451ADECB932F183CD599F694DC8393E1F878737113E3DCBA11F22D46F028 6FA7CF148F2CFEB03F61D40D6A0D30451723E7C91D4BE58E6976FBDB89D50F4B 6EE65D2DB6465545038E094E333A015E79737CEDA211F913D831E78032B2626B 0FB1E7E20CAD4E01BF398E9C4965BF91136D4AE83029E5F3A6339CE3C8FB64DF E5925D739FD720AE38EFBA0E32E74317DD35363F19EEC4806EA840F2A77AAE2C 8752B4B786378B134F5A376A1F0BDF8FE6F0B247D4A28248D0693988D696E7B3 4B937A41277C56A182BC2BE08D57939398C3CC125A74905ABE953028EB2A8A0B 9BEB795D484BC979809506C8FA55AD6135FA66A0FAEC7EF53F5F91B37D8515DB C93CD4EF0A12CF0F9C3CD06C57FC9646A15810910EACA53BCBAEFF4AC568CD8D 13DE144FF06FB3F1A6CE76ACC351297DE4D7E755561C1EEBBD39F1351D1731C2 16AAFFB586C680F588B62AEC37650017928769C53E032EEADAE9E5361F28F78E 1841C1419290D1A453C63EBEFD3C99B5F8A72548393E2C6B1C95A43CB19EC099 4DA22BC088E6E95FC177B3D00DB7B3652D8C5DF1682DE9C3D22796AF78149E7E A951D0A46EB6EFDA46594BF4D608E3C4BF9406EC7A09D3A8D6623D79FB609222 C8B1257CAB63C810A5C6983BD16FE6322E5CACDF56B91FDD46AA8B292210D3D4 B59BE801C1B5A425CF5F5774968D510C017C3EA4D7B86C8555A96D4F0163DD8D F1FD9DA5D9D15999E626DB68763C5CD22EF18C747BCA003DA4354FD484A56552 D0A96B7FF1958035AE04025DF7F67EB52B468D63D735CC8EA34484B7E18136F9 9D4C0966C79990ED629A87C033A52F4C96295E3D3CCD4B476188101B94E214B0 7B4C4463CEB3C81E8838D0FFC9BA36CB0A39173105C90BF8A6FE12A0B3749045 7CA9DB29EE500088F3FFD13BAC41782854B25955B23118FF880BF20D66E30C4F 164FD408E5E5636976D9D2686192BE5AE7B2C96A911C290B749344C0B630DF9F B3FD98F2E62707541A128058A5F22E05922103A39A95C1B7F6F807A5F3A21A25 50EBF0F5950A45C9B864D2785C24F30108BB15A3E5468902D83B5F3CFBE1E359 BD129E494D769A371B26967AC8D715BB742EA20B414D5ACBB4B25A5770A80E7F B315EC73D3AD78C7BEC227661C2EFDCED86C4240D38267BF1EE26C506CF00382 8E7F86509AFABDA5ABA519C6CDA52703B40DB3502D72E8308725E660F107F4A9 026DFE14CF4BCFD2F4832F6AD1550CDBDB5644CA52899F4641C5897D4F907931 185D13C33184D78EAE54BCC164076DB74D99F52C064216C7FAAC977CFB69B150 A78A2052E4EE7090A7465324648976E1C3F19F146328BA460DADED492AA74BFD 04AE08FD24AC871D21CF7CC808495ECA5E73B26D97EAE5F9BC435D53BF2C1BD9 0A9004BFC44EBBF6683D52781943814C3C942BDD9BF95F1661761119B49AED7B D9376B6124A4DC87B9D7DDB2386974A6E02B29AC5A994617F3F988B692EDC47E 6C948C5071CFE0D680E018950F545831B5EBE3C19BF384A51DF56F3CC7757B8D 037FDB95F4D1878C407B8C1DF1CA9E9236C468E9B8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMCSC10 %!PS-AdobeFont-1.0: CMCSC10 003.002 %%Title: CMCSC10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMCSC10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup /UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMCSC10 def /FontBBox {14 -250 1077 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMCSC10.) readonly def /FullName (CMCSC10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 97 /a put dup 99 /c put dup 101 /e put dup 102 /f put dup 103 /g put dup 105 /i put dup 110 /n put dup 111 /o put dup 112 /p put dup 115 /s put dup 117 /u put dup 120 /x put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2 048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31 CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2 0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3 D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D 567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3 DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF 435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E 2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148 D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1 DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70 8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C 9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E 1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49 59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402 A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA 90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E 3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB 3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41 736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198 E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94 17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E 1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085 35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367 3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1 5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245 658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD 8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9 D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7 606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C 64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8 F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00 C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7 072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3 7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317 1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B 5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3 2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06 491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07 8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F 9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568 4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781 AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E 36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA 88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85 5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3 5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8 AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152 7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0 CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8 E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF 53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9 FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A 94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4 E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC 4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428 F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4 5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460 7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2 361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579 5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7 83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F 8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3 F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327 EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15 B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4 8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE 07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE 8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4 12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207 A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29 0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24 3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128 2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037 215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720 70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5 37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A 0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F 7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8 9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5 28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A 962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3 3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC 3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5 15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8 DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF 72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512 D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588 462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026 465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607 6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7 8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20 53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34 E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605 8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395 CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064 46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7 391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015 55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643 0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1 0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8 3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A 22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384 5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0 20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3 B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B 7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9 B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201 213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B 57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082 9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271 C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F 54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051 1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90 7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287 72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC 5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2 7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901 EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4 62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1 0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A 94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6 5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E 74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88 159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5 2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143 40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977 CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A 1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A 7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5 D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614 37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874 357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68 6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435 6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53 686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8 EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6 3088F8D19CF2364A329162D39E166AC728B267758341630B00398D64538FCC4D E3E6CF103794C29AEF7F7E56970F6B1ABA87DC8D23E280EDC77556593D02DFF3 154883CFE4EF04E07E7539A4750FA1CF1A994E99B656E728D140C83AE1F196AD 9F049188A4184C84556C0476BE46DDA8ED86888DDA3065C5091D99EEEAC43092 40B97AE327215024ACC0134CBE91FD761C26A48EDFF9028DA28222985FAED7B6 A1CC891D07185666E34BEFBBF77C6C32B88FF3F1046E4EB2CD942E70746DDCDE 002E74BA03A2B15E0529E61DCAC207A71F61C89D81B3C53C5B458EAC70ADFC54 810310CB04E1A21FFBC5DE2429EC0989A3F2B6AE4290A005FBE736750956765D 637B7CABF7F9A593D9FF6C322895835C0007A78771D1404671122F9CF898AB24 1A5648EF8C40B27FD537612C4CBC6E584FBD058DBD4F0A00C63A79077826D3F1 859589B221F7F82DBE392601B0A89142648EB40BCD943E382FC7758A10F978FF 6DD9C3C1D284C5642C812DBF29A75A50BF63F788CBEA5883DC1544ABB49289EE 2C99CB03C1BA72C7320904C7EC94736825A793D5629EABFCEFAB8D28B6F23858 89A6967942A943FAB5E5B26B8567CC9606DE60329C6D890843F700FC1F60656A 38164ED7976AD47A8E54940B9E340D61353AAD260C9273D45772AEC8E9F4F045 9CC576D152757AF3B74DFB9B6962001EA9FF7F62C2E36F71D9B76BB99DA7631F 774795B8CD1E08480153496DE5E08A1F4BEA681D0C1D6336A49A222B0537ABD9 75A3A9D27D0B71B8913E9355F8E56C5FB3E14B9D5ACC4F87339FF9D9039ADEEC 660B5CEF75E7C1772D4A3A4D0C8976A165766D9DBD0CA8132D17E5149AE716A9 2E255277FB5294A96194C462C74AAB251A36941768EDB3EC6DC2C481393ABA6C 8BC2F3AB0BF5A6E5619BE16DF43BB099C6CEA5044ABACC419174664232E97B29 ED32362D219AF109E5D8CA751EB1F9F31BDD08C93AE018E5269AC327FEC67D99 588CA80F068AEB94A7B943BAD5EC8D89C0B8D153B4345E77A5AD9B4522208A33 DA92CDF765B44123C6EBAA06D629EB9E8D0FDD29BFD60EB582CB369474767FE4 C0947F27DCFE0C8BD3CF5131E706E02ED136DBCE6363CB5CA637E08C3D832037 5AAA88B746B6D915EE72D7B458C55598DA6284F362D2DBF06C51DB50A9FFFB5E EBFD69D8D06AB0A6DF2D03F6E14FF290B1A1531109E43892B82B29395910021F A6EA74B8420A14FC189741ECF67F81686BD3C5559DAF75DF9FEF3346CCC35AC5 37A1E30C2602945974A2359EE3183A1AA568978F7732C35BE2B9224C27161748 515E5899B0387F0640DE1D712F390A8A026FC5C5A893E98F46B418B7B32BEF07 AD0EEA87737D929180B2BE697D0DFD46CF307E4FF76BC03492E66633F1357848 AA5A594EB8CC5913E76602C9CF8B7428F67965D5BAAA29BD6C978EF6B22B0BEF 4203B223443554971EFE558FD2F51D01B35D2194A1F6820293385CF12DC1ED73 79EA6082A30796D5EB72A67C5DB42A01F18CCBFEBE2F10B091C43C2CBACD8914 D665B340281C1EBF92249FBDAA577CB7769974B669DA0B74E822EE5DCF3A32D8 9C6714D8C82CE9BF3F16E6336094BC55381E73A96D45B7A70AE00F9CB8348E08 2A64E4B40B3BD0A653B423C5D3C1ECB62F5E05393FB8C9B0C44AB26F6BF796BF 5B51601913014ED708B97731A5642351ECD0F6CA9C06832E0BCD0055E9BA51CB 7242CD34AF0B75F3594AF9235C42B974074665C5B6C934B08E5C7F55638E7DB5 312BC541A8000E69A92ED6C63AA6485A50DFAA1DCF9B0DDAD23C43DF22F3000C 0CBF6F8F64F37BDF8F8DF321FD8F42C3FF774A388F9C033572B177A493814ECC BE19595AD285F11763857603EAE0D6AED509225CACBC49351E6BF1457BD11490 EDA1C3DD6DE8C7036464CF80FE562CDA51ED2EB92BBC79252FA79EAFE5E6BD4F DC16AB83B2C902A9027BA4AE30ABADFF6D513BEA850FF35416E76FE62D8E88DC 69F0C60921B33BA59FA3EDC8F532B47FF2A5E5680BEFCDAEA4474DFA2F8FD68F 74B5837A22984A7534A5321B83459E436AE4C498702EA14A77D3F78DAEA47BA0 1BE6CFAD95132683BCE0601F3EDDEFF5207FD5FF3CC9093ABD946CC7C1076DB9 4DAF08C682269CEE980159541D92FFE484B7440E5AC58D7707BAE579605D1EB6 42C396807AA13B3ACEDBF3A465CBD56F076FA9319E43907B6522904F92483537 6102700CEAA52EE916B80AA4C5F8C98C9AC9557F97784F075D37A83649D632F5 82A519507162012A671F3B4DBAC454D920606E9C87CADCAA1172A04E445A28A7 0FA9545E5FFD15302664B5C2C4F479C8C760C2A015F5F5CB51EC6C0260154D37 4A65B01E58B458ED0FEBBE74884C9DF7D50770153FB498E94F65475A5EA6A687 543DEA3156D3E5CEE23923120DF4D561D2C082F1F3BFC5039A1DFC1C9C3A328E 6F879AB979F2C177FBA357FD63F8CC21E8AF632D6B01A3AC3EA7DE91C17B8120 42E78A1AA2E04581B1C434A8147DBE81A87C73782DAF4BD5F309280FEA22DBAF 586AF386182364E45D7DEAFFA74E338E875B64B13CFC909B30E074D777D347ED 3A58A82D5F6A6E913054F9FABFDD9ABD8BBF54DC3480F3A90965A0081092714B D77604CC7275050DBCCC800BCD8E2BA540B18CB07AF27D66F8887A571685600F 3FF8C7A4966A8CF8CB25DE0495CD4E048999ECE6579AFA82D1644FE160E2D3F0 EE7CE89045332B172425D7D1443E8DD9043A12042ADD7EC106CB4DAAEAB310E5 85F93869A1C519DC0E3CF8F4C05030F0BF7054C5859A74ECE7D6FC5644C5B84A F3EDF0C4B2DCDD0D193599CB3CA00464A90AB55674F884001EC896726A9B374B 3A73AECDCBE06895E87FCE6267091C6CED0E779DEC36D8CC35184E00247AB90C 37161FFEE7CABFD7499859042093BCAE22D6B811FD16EFBC8AAE6283881C12CA 98E0792640063169F76B18EF543AFE7951E82EDB1DB9597F2F9C959B69943379 CC7F5BDBD1BAFF7C77AD8D504D5F17E1B7DFFC515AC237748D33FB6B9D7DD903 2F3E9768290A90A5FC5EA516A94C1885B17676D33CE4124CED1359E473305B02 03C28731C0FC52B18FC14360C9494FF2A86AEE929E4022ACB78C02ADD6174FD0 D35105BB00643F6560A9CCBB3E5CE2F79F0EB9BA774D27DC476867C991598380 F77CC0444500CF43DAB8D729B31EA5A3184F178F82622A8B711A9CA6A770971C 521C44969E814B44D8E1927C283E6A38B78D7C258630730EA463FEEEAB263838 2A517BA176D1C137AAE7430532FFB0FFCA8BF110DECB42B1A7A9457A9ECCABFA D6CC11CD925518857AAA8498CEF35377CF92FEA77C09E6AE25DB2D09F1E355BD 7F7F5C72A76315F3C2B6BEA1AF7BA5D0E8000778A0FB2C60FF677ADBA9156A11 A5B0B7AE92DB368571C040FD7A29C3DF384CCC29A0E9F40FA385630D23AC1E97 C15C06848761CC7D19D208BC115A6A2933056BCEB3717CE2488E86D0B0D6D276 22B2FF1E77FA719372BE62A5B6E10D3DFCA57DE70AE16C57718B86C58B6A7F3D C6DD45D7559F9A0ED8889E707FE7622997F2D573F7688621245E0FB3D34A08C6 40B72F4BDA0394CBF90735B9E6B3928AD56F50FEF9A5DA8B195008164EC03424 7F5317FB8157C33F6903FD6D4B4728F82F1B02046DA16F4285DF088E08A136FD 1366494E3F5AEBED4B48B3B9072BC811A700940FF4B2A51C0434ABF225B37BBF E4AB11F394332D66393420D4B843CAB6AAD9C32418CFE6A2A1260BF430E61176 4B1762E3C9F1727BA47AAE4C7589E7099A56F5E1CB6BD64C0C8D026ED60EAFBC BAD1476E98F5F12ED94BDB1E4B0D8FE9E36CF40DA6F5B2E1BC41EF5F7CB49825 EA5058FF7C49C5FA11F9F9F575AB4D8237FFC2573F94B695CBE9BC44A1BB26DD C6E55627BA16E5197CADA519CC7302DBE77F1FE4CF68C558D8F6E264 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI10 %!PS-AdobeFont-1.0: CMMI10 003.002 %%Title: CMMI10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup /UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI10 def /FontBBox {-32 -250 1048 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2 1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C 7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B 0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085 EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37 404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133 78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE 88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4 C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88 98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760 E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44 143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3 981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490 88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285 4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683 FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F 347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04 B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733 F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA 29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66 36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12 048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0 80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C 9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B 75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E 4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC 74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355 E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097 EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D 543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883 710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6 EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F 7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93 03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2 01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89 500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208 AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE 1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915 85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C 4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1 6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F 55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18 085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02 BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951 2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1 991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125 6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754 E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80 E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1 B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3 4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65 1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7 8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6 AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051 E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD 38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3 7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751 2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27 DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D 22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6 8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB 44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90 D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A 42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E 0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE 66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6 E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1 6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E 1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10 B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B 897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40 A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3 F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126 2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6 51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3 598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F 87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE 178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6 4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78 7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6 AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6 3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379 337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547 C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5 DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA 7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD 6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC 98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355 821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4 C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886 7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6 B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16 A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325 23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3 969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10 3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B 9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725 1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239 B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966 95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7 FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE 44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986 FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4 E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA 633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D 6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD 375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2 6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7 EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156 DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891 D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538 D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4 9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B 9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6 B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0 D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF 8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93 FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26 B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F 00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50 909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49 5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF 7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0 C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1 BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37 BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D 4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075 94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1 F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9 E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA 92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0 63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271 B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9 5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E 86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0 AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180 3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC 35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD 155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580 AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255 E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F 226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496 9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B 8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B 919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7 9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0 523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7 88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D 2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66 B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22 CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744 3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8 404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84 262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953 084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341 E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI12 %!PS-AdobeFont-1.0: CMMI12 003.002 %%Title: CMMI12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup /UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI12 def /FontBBox {-31 -250 1026 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI12.) readonly def /FullName (CMMI12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE 882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3 2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A 7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541 0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69 987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7 609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC 182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A 1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D 3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6 D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200 761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24 8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F 68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D 10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4 262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6 922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16 56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26 32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA 7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460 7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A 46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD 754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF 88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A 7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760 8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0 BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25 8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300 135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812 1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86 07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39 14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D 7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D 2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D 639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3 D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F 90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948 10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E 1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E 8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9 1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33 9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875 EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3 60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8 FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D 203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608 FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09 DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F 2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D 244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077 31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B 724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8 F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7 D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907 CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF 01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA 287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605 8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9 9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1 6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5 7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C 192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4 A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9 50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67 A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912 3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6 5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96 8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE 084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7 92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2 AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27 97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF 92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5 7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824 5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199 13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76 6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1 5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5 6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83 F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4 7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A 9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817 E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962 AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8 0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003 1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31 7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E 38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8 5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F 3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85 15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674 6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6 CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322 EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82 A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D 806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4 461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1 4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361 9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C 172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6 69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690 356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0 E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78 7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A 31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7 98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30 C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61 AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208 E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900 76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40 8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573 CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7 761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A 2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138 89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60 D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485 D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8 B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39 AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3 866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD 207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73 756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7 60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A 1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4 A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048 C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3 03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321 1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B 97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8 4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF 94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97 201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7 9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000 CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7 29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939 4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED 66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31 14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53 84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74 6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12 49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C 224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5 5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4 A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498 1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D 5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6 40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D 2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE 710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45 FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8 FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736 5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.0: CMSY10 003.002 %%Title: CMSY10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSY10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup /UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSY10 def /FontBBox {-29 -960 1116 775 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 13 /circlecopyrt put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A 11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F 10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D 7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B 491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D 9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E 0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD 5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B 5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB 54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD 2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C 16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F 483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA 051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B 8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB 0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD 8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F 153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A 98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B 888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D 052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F 07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D 3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F 849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE 84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA 2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD 2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E 4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB 8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C 4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF 035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B 0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E 2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B 60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E 94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA 343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE 894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F 8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC 4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A 60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E 71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52 9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016 A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44 AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829 F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647 A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822 AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001 EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781 CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628 86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9 AE5400775223E684BFCB 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont TeXDict begin 40258431 52099146 1000 600 600 (readline.dvi) @start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 133[34 41 41 55 41 43 30 30 30 41 43 38 43 64 21 41 1[21 43 38 23 34 43 34 43 38 39[38 38 38 38 38 38 38 38 38 38 2[26 21 30[43 43 12[{}39 74.7198 /CMR9 rf /Fc 134[39 39 2[39 39 39 39 2[39 39 39 39 2[39 39 1[39 39 39 2[39 19[39 27[39 39 2[39 45[{}20 74.7198 /CMSLTT10 rf /Fd 167[62 3[60 46 2[57 1[62 76 52 1[43 1[62 65 54 1[63 60 67[{}13 83.022 /CMR10 rf /Fe 129[39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 1[39 39 39 1[39 39 39 39 39 39 39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 3[39 1[39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 1[39 39 39 33[{}86 74.7198 /CMTT9 rf /Ff 133[44 53 53 72 53 55 39 39 39 53 55 50 55 83 28 53 1[28 55 50 30 44 55 44 55 50 20[62 77 1[36 2[65 68 22[28 1[28 1[50 28[55 55 12[{}35 99.6264 /CMSL10 rf /Fg 214[35 35 40[{}2 90.9091 /CMSS10 rf /Fh 133[52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 1[52 52 52 52 52 52 52 52 52 1[52 18[52 52 1[52 2[52 52 9[52 16[52 42[{}33 99.6264 /CMTT10 rf /Fi 134[65 65 89 65 68 48 48 50 1[68 61 68 102 34 65 1[34 68 61 37 56 68 55 68 60 7[93 1[127 93 94 85 68 92 3[96 116 74 96 1[46 96 1[77 81 1[89 87 93 7[61 61 61 61 61 61 61 61 61 61 1[34 46[{}52 109.091 /CMBX12 rf /Fj 133[40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 1[25 51 45 28 40 51 40 51 45 9[93 1[68 66 51 67 1[62 71 68 83 57 71 1[33 68 1[59 62 69 66 64 68 15[45 45 2[30 31[51 51 53 11[{}50 90.9091 /CMSL10 rf /Fk 134[44 1[60 42 49 30 37 38 1[46 46 51 74 23 2[28 1[42 1[42 46 42 1[46 84[51 12[{}19 90.9091 /CMTI10 rf /Fl 134[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 1[48 2[48 14[48 48 1[48 1[48 2[48 48 48 17[48 48 2[48 5[48 39[{}37 90.9091 /CMSLTT10 rf /Fm 135[56 2[56 1[42 2[51 58 56 4[27 1[58 49 51 1[54 1[56 97[{}12 90.9091 /CMCSC10 rf /Fn 197[25 58[{}1 90.9091 /CMMI10 rf /Fo 197[33 58[{}1 119.552 /CMMI12 rf /Fp 135[85 117 1[90 63 64 66 1[90 81 90 134 45 2[45 90 81 49 74 90 72 90 78 10[122 124 112 1[120 1[110 1[126 1[97 2[60 1[127 101 106 124 117 1[122 14[81 81 49[{}36 143.462 /CMBX12 rf /Fq 242[91 13[{}1 90.9091 /CMSY10 rf /Fr 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 2[37 75 67 41 61 75 60 75 65 7[102 1[139 102 103 94 75 100 101 92 101 105 128 81 105 1[50 105 106 85 88 103 97 96 102 6[37 2[67 67 67 67 67 67 67 2[37 1[37 44[{}55 119.552 /CMBX12 rf /Fs 129[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}91 90.9091 /CMTT10 rf /Ft 131[91 45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 68 71 4[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35 25 2[45 1[45 19[76 51 51 53 11[{}84 90.9091 /CMR10 rf /Fu 134[102 6[79 3[108 1[54 2[54 3[88 108 1[108 94 11[149 2[144 3[151 1[116 4[152 71[{}14 172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: Letter /setpagedevice where { pop << /PageSize [612 792] >> setpagedevice } { /letter where { pop letter } if } ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fu(GNU)65 b(Readline)g(Library)p 150 1418 3600 34 v 1873 1515 a Ft(Edition)30 b(8.0,)i(for)e Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(8.0.)3139 1623 y(No)m(v)m(em)m(b)s(er)g(2018)150 4927 y Fr(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l (ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4413 a Ft(This)22 b(man)m(ual)h(describ)s(es) g(the)g(GNU)g(Readline)h(Library)e(\(v)m(ersion)i(8.0,)h(30)f(No)m(v)m (em)m(b)s(er)g(2018\),)j(a)c(library)150 4523 y(whic)m(h)39 b(aids)g(in)g(the)g(consistency)h(of)g(user)e(in)m(terface)j(across)f (discrete)g(programs)e(whic)m(h)h(pro)m(vide)h(a)150 4633 y(command)30 b(line)h(in)m(terface.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 y Fq(\015)f Ft(1988{2016)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f (under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end %%Page: -1 3 TeXDict begin -1 2 bop 3725 -116 a Ft(i)150 299 y Fp(T)-13 b(able)53 b(of)h(Con)l(ten)l(ts)150 649 y Fr(1)135 b(Command)45 b(Line)g(Editing)26 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)39 b Fr(1)275 786 y Ft(1.1)92 b(In)m(tro)s(duction)30 b(to)h(Line)f (Editing)17 b Fn(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)31 b Ft(1)275 896 y(1.2)92 b(Readline)31 b(In)m(teraction)19 b Fn(:)e(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Ft(1)399 1005 y(1.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)18 b Fn(:)e(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)31 b Ft(1)399 1115 y(1.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i (Commands)18 b Fn(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)32 b Ft(2)399 1225 y(1.2.3)93 b(Readline)31 b(Killing)g(Commands)10 b Fn(:)k(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23 b Ft(2)399 1334 y(1.2.4)93 b(Readline)31 b(Argumen)m(ts)22 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)36 b Ft(3)399 1444 y(1.2.5)93 b(Searc)m(hing)31 b(for)f(Commands)f(in)h(the)h(History)20 b Fn(:)c(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33 b Ft(3)275 1553 y(1.3)92 b(Readline)31 b(Init)f(File)13 b Fn(:)k(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27 b Ft(4)399 1663 y(1.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) 39 b Ft(4)399 1773 y(1.3.2)93 b(Conditional)31 b(Init)f(Constructs)16 b Fn(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Ft(12)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22 b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Ft(13)275 1992 y(1.4)92 b(Bindable)30 b(Readline)h(Commands)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(16)399 2101 y(1.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)18 b Fn(:)f(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)31 b Ft(16)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f(History)f Fn(:)15 b(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Ft(17)399 2320 y(1.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 b(ext)12 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)25 b Ft(18)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8 b(anking)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Ft(19)399 2540 y(1.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)e Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Ft(20)399 2649 y(1.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8 b(or)31 b(Y)-8 b(ou)22 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Ft(21)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Ft(21)399 2868 y(1.4.8)93 b(Some)30 b(Miscellaneous)j(Commands)16 b Fn(:)e(:)h(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)29 b Ft(22)275 2978 y(1.5)92 b(Readline)31 b(vi)f(Mo)s(de)10 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23 b Ft(23)150 3229 y Fr(2)135 b(Programming)46 b(with)f(GNU)g(Readline)37 b Fo(:)19 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)48 b Fr(24)275 3366 y Ft(2.1)92 b(Basic)31 b(Beha)m(vior)23 b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)36 b Ft(24)275 3475 y(2.2)92 b(Custom)29 b(F)-8 b(unctions)19 b Fn(:)d(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)32 b Ft(25)399 3585 y(2.2.1)93 b(Readline)31 b(T)m(yp)s(edefs)17 b Fn(:)e(:)g(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)30 b Ft(26)399 3694 y(2.2.2)93 b(W)-8 b(riting)31 b(a)g(New)g(F)-8 b(unction)24 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)37 b Ft(26)275 3804 y(2.3)92 b(Readline)31 b(V)-8 b(ariables)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)24 b Ft(27)275 3914 y(2.4)92 b(Readline)31 b(Con)m(v)m(enience)g(F)-8 b(unctions)22 b Fn(:)16 b(:)g(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(32)399 4023 y(2.4.1)93 b(Naming)31 b(a)g(F)-8 b(unction)21 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)34 b Ft(32)399 4133 y(2.4.2)93 b(Selecting)32 b(a)e(Keymap)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)22 b Ft(33)399 4242 y(2.4.3)93 b(Binding)30 b(Keys)15 b Fn(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Ft(34)399 4352 y(2.4.4)93 b(Asso)s(ciating)32 b(F)-8 b(unction)31 b(Names)g(and)e(Bindings)d Fn(:)16 b(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Ft(35)399 4462 y(2.4.5)93 b(Allo)m(wing)32 b(Undoing)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)40 b Ft(36)399 4571 y(2.4.6)93 b(Redispla)m(y)10 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)23 b Ft(37)399 4681 y(2.4.7)93 b(Mo)s(difying)30 b(T)-8 b(ext)16 b Fn(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28 b Ft(39)399 4790 y(2.4.8)93 b(Character)31 b(Input)22 b Fn(:)13 b(:)j(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)35 b Ft(39)399 4900 y(2.4.9)93 b(T)-8 b(erminal)30 b(Managemen)m(t)17 b Fn(:)h(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)30 b Ft(40)399 5010 y(2.4.10)93 b(Utilit)m(y)33 b(F)-8 b(unctions)24 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Ft(40)399 5119 y(2.4.11)93 b(Miscellaneous)33 b(F)-8 b(unctions)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)36 b Ft(42)399 5229 y(2.4.12)93 b(Alternate)32 b(In)m(terface)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Ft(43)399 5338 y(2.4.13)93 b(A)31 b(Readline)g(Example)12 b Fn(:)j(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Ft(43)p eop end %%Page: -2 4 TeXDict begin -2 3 bop 3699 -116 a Ft(ii)399 83 y(2.4.14)93 b(Alternate)32 b(In)m(terface)g(Example)18 b Fn(:)e(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)31 b Ft(45)275 193 y(2.5)92 b(Readline)31 b(Signal)f(Handling)18 b Fn(:)e(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31 b Ft(47)275 302 y(2.6)92 b(Custom)29 b(Completers)e Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)40 b Ft(50)399 412 y(2.6.1)93 b(Ho)m(w)31 b(Completing)g(W)-8 b(orks)11 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)24 b Ft(50)399 521 y(2.6.2)93 b(Completion)31 b(F)-8 b(unctions)28 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b Ft(51)399 631 y(2.6.3)93 b(Completion)31 b(V)-8 b(ariables)18 b Fn(:)e(:)g(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Ft(52)399 741 y(2.6.4)93 b(A)30 b(Short)g(Completion)h(Example)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28 b Ft(57)150 991 y Fr(App)t(endix)44 b(A)119 b(GNU)39 b(F)-11 b(ree)38 b(Do)t(cumen)l(tation)i(License)25 b Fo(:)20 b(:)32 b Fr(66)150 1269 y(Concept)45 b(Index)36 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) h(:)49 b Fr(74)150 1548 y(F)-11 b(unction)44 b(and)h(V)-11 b(ariable)45 b(Index)20 b Fo(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fr(75)p eop end %%Page: 1 5 TeXDict begin 1 4 bop 3705 -116 a Ft(1)150 299 y Fp(1)80 b(Command)54 b(Line)f(Editing)150 527 y Ft(This)30 b(c)m(hapter)h (describ)s(es)e(the)i(basic)g(features)f(of)h(the)f Fm(gnu)g Ft(command)h(line)f(editing)h(in)m(terface.)150 766 y Fr(1.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150 925 y Ft(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h (notation)g(used)f(to)h(represen)m(t)f(k)m(eystrok)m(es.)275 1058 y(The)35 b(text)i Fl(C-k)f Ft(is)g(read)g(as)h(`Con)m(trol-K')g (and)f(describ)s(es)f(the)h(c)m(haracter)i(pro)s(duced)d(when)g(the)h Fs(k)150 1168 y Ft(k)m(ey)31 b(is)g(pressed)e(while)h(the)h(Con)m(trol) g(k)m(ey)g(is)g(depressed.)275 1301 y(The)g(text)i Fl(M-k)e Ft(is)h(read)f(as)i(`Meta-K')g(and)f(describ)s(es)f(the)h(c)m(haracter) h(pro)s(duced)e(when)f(the)i(Meta)150 1411 y(k)m(ey)i(\(if)f(y)m(ou)h (ha)m(v)m(e)g(one\))g(is)f(depressed,)g(and)f(the)h Fs(k)g Ft(k)m(ey)h(is)f(pressed.)48 b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s (eled)f Fs(ALT)150 1521 y Ft(on)c(man)m(y)h(k)m(eyb)s(oards.)40 b(On)29 b(k)m(eyb)s(oards)g(with)h(t)m(w)m(o)h(k)m(eys)f(lab)s(eled)g Fs(ALT)e Ft(\(usually)i(to)g(either)g(side)g(of)g(the)150 1630 y(space)h(bar\),)f(the)g Fs(ALT)f Ft(on)h(the)g(left)h(side)f(is)g (generally)h(set)f(to)h(w)m(ork)f(as)g(a)h(Meta)g(k)m(ey)-8 b(.)42 b(The)29 b Fs(ALT)g Ft(k)m(ey)i(on)150 1740 y(the)c(righ)m(t)h (ma)m(y)g(also)g(b)s(e)f(con\014gured)f(to)i(w)m(ork)f(as)h(a)f(Meta)i (k)m(ey)f(or)f(ma)m(y)h(b)s(e)e(con\014gured)h(as)g(some)h(other)150 1849 y(mo)s(di\014er,)i(suc)m(h)g(as)g(a)h(Comp)s(ose)f(k)m(ey)h(for)f (t)m(yping)h(accen)m(ted)h(c)m(haracters.)275 1983 y(If)23 b(y)m(ou)i(do)f(not)h(ha)m(v)m(e)h(a)f(Meta)g(or)g Fs(ALT)e Ft(k)m(ey)-8 b(,)27 b(or)e(another)f(k)m(ey)i(w)m(orking)e(as)h(a)g (Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 2092 y(k)m(eystrok)m(e)30 b(can)f(b)s(e)f(generated)h(b)m(y)g(t)m(yping)g Fs(ESC)e Fk(\014rst)p Ft(,)j(and)e(then)g(t)m(yping)h Fs(k)p Ft(.)40 b(Either)28 b(pro)s(cess)g(is)g(kno)m(wn)150 2202 y(as)j Fj(metafying)39 b Ft(the)30 b Fs(k)g Ft(k)m(ey)-8 b(.)275 2335 y(The)39 b(text)j Fl(M-C-k)d Ft(is)h(read)g(as)h (`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g(c)m(haracter)i (pro)s(duced)d(b)m(y)150 2445 y Fj(metafying)g Fl(C-k)p Ft(.)275 2578 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g (their)f(o)m(wn)g(names.)58 b(Sp)s(eci\014cally)-8 b(,)38 b Fs(DEL)p Ft(,)f Fs(ESC)p Ft(,)g Fs(LFD)p Ft(,)g Fs(SPC)p Ft(,)g Fs(RET)p Ft(,)150 2688 y(and)d Fs(TAB)f Ft(all)j(stand)e(for)g (themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init) h(\014le)f(\(see)i(Section)f(1.3)150 2797 y([Readline)c(Init)e(File],)j (page)e(4\).)41 b(If)29 b(y)m(our)h(k)m(eyb)s(oard)f(lac)m(ks)i(a)f Fs(LFD)f Ft(k)m(ey)-8 b(,)31 b(t)m(yping)g Fs(C-j)d Ft(will)i(pro)s (duce)f(the)150 2907 y(desired)h(c)m(haracter.)42 b(The)30 b Fs(RET)g Ft(k)m(ey)h(ma)m(y)g(b)s(e)e(lab)s(eled)i Fs(Return)e Ft(or)h Fs(Enter)f Ft(on)h(some)h(k)m(eyb)s(oards.)150 3145 y Fr(1.2)68 b(Readline)47 b(In)l(teraction)150 3305 y Ft(Often)32 b(during)g(an)g(in)m(teractiv)m(e)j(session)e(y)m(ou)g(t) m(yp)s(e)g(in)f(a)h(long)g(line)g(of)f(text,)j(only)d(to)i(notice)g (that)f(the)150 3414 y(\014rst)f(w)m(ord)g(on)g(the)g(line)h(is)g (missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g (a)g(set)g(of)f(commands)g(for)150 3524 y(manipulating)e(the)g(text)h (as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h (just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150 3634 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29 b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m (ou)h(mo)m(v)m(e)g(the)g(cursor)150 3743 y(to)35 b(the)f(place)i(that)e (needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g (the)f(corrections.)54 b(Then,)150 3853 y(when)24 b(y)m(ou)h(are)g (satis\014ed)g(with)g(the)g(line,)i(y)m(ou)e(simply)f(press)g Fs(RET)p Ft(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e (at)h(the)h(end)150 3962 y(of)33 b(the)h(line)g(to)g(press)e Fs(RET)p Ft(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g (of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 4072 y(within)c(the)g(line.)150 4269 y Fi(1.2.1)63 b(Readline)40 b(Bare)h(Essen)m(tials)150 4416 y Ft(In)31 b(order)h(to)h(en)m(ter)g(c) m(haracters)g(in)m(to)g(the)g(line,)g(simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i(app)s(ears)150 4525 y(where)e(the)h(cursor)e(w)m(as,)j(and)e(then)g(the)h(cursor)e(mo) m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47 b(If)32 b(y)m(ou)h(mist)m(yp)s(e)g(a)150 4635 y(c)m(haracter,)f(y)m(ou)f(can)g (use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)f (delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 4768 y(Sometimes)i(y)m(ou)g(ma)m(y)h(mist)m(yp)s(e)e(a)i(c)m(haracter,)g (and)e(not)i(notice)g(the)f(error)f(un)m(til)h(y)m(ou)g(ha)m(v)m(e)h(t) m(yp)s(ed)150 4878 y(sev)m(eral)e(other)f(c)m(haracters.)42 b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h Fl(C-b)d Ft(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150 4987 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31 b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g (with)f Fl(C-f)p Ft(.)275 5121 y(When)i(y)m(ou)h(add)f(text)h(in)f(the) h(middle)f(of)h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m (haracters)h(to)g(the)e(righ)m(t)150 5230 y(of)d(the)g(cursor)f(are)h (`pushed)e(o)m(v)m(er')j(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h (that)f(y)m(ou)g(ha)m(v)m(e)h(inserted.)40 b(Lik)m(ewise,)150 5340 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m (haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled)p eop end %%Page: 2 6 TeXDict begin 2 5 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(2)150 299 y(bac)m(k')24 b(to)f(\014ll)g(in)f(the)h(blank)f(space)i(created)f(b)m(y)g(the)g (remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39 b(A)23 b(list)g(of)g(the)g (bare)f(essen)m(tials)150 408 y(for)30 b(editing)h(the)g(text)g(of)g (an)f(input)f(line)i(follo)m(ws.)150 571 y Fl(C-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m(haracter.)150 732 y Fl(C-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(one)h(c)m(haracter.) 150 893 y Fs(DEL)e Ft(or)i Fs(Backspace)630 1003 y Ft(Delete)i(the)d(c) m(haracter)i(to)f(the)g(left)g(of)f(the)h(cursor.)150 1164 y Fl(C-d)336 b Ft(Delete)33 b(the)d(c)m(haracter)i(underneath)d (the)i(cursor.)150 1325 y(Prin)m(ting)g(c)m(haracters)630 1435 y(Insert)f(the)g(c)m(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g (cursor.)150 1596 y Fl(C-_)e Ft(or)i Fl(C-x)e(C-u)630 1706 y Ft(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8 b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g (empt)m(y)630 1815 y(line.)150 1977 y(\(Dep)s(ending)29 b(on)h(y)m(our)f(con\014guration,)i(the)e Fs(Backspace)e Ft(k)m(ey)k(b)s(e)d(set)j(to)f(delete)h(the)e(c)m(haracter)i(to)g(the) 150 2087 y(left)37 b(of)f(the)h(cursor)e(and)h(the)g Fs(DEL)g Ft(k)m(ey)h(set)f(to)h(delete)h(the)e(c)m(haracter)i (underneath)d(the)h(cursor,)i(lik)m(e)150 2196 y Fl(C-d)p Ft(,)30 b(rather)g(than)g(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g (the)f(cursor.\))150 2398 y Fi(1.2.2)63 b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)150 2545 y Ft(The)27 b(ab)s(o)m(v)m(e)i (table)g(describ)s(es)e(the)g(most)i(basic)f(k)m(eystrok)m(es)h(that)f (y)m(ou)g(need)g(in)f(order)g(to)i(do)e(editing)i(of)150 2654 y(the)k(input)f(line.)49 b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m (enience,)j(man)m(y)d(other)g(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g (in)h(addition)150 2764 y(to)j Fl(C-b)p Ft(,)f Fl(C-f)p Ft(,)g Fl(C-d)p Ft(,)h(and)e Fs(DEL)p Ft(.)54 b(Here)35 b(are)g(some)h(commands)e(for)h(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h (the)150 2873 y(line.)150 3035 y Fl(C-a)336 b Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(line.)150 3197 y Fl(C-e)336 b Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 3358 y Fl(M-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f (where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.) 150 3519 y Fl(M-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m (ord.)150 3680 y Fl(C-l)336 b Ft(Clear)31 b(the)f(screen,)h(reprin)m (ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 3843 y(Notice)c(ho)m(w)f Fl(C-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m (haracter,)j(while)d Fl(M-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m (ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 3952 y(con)m(v)m(en)m(tion)32 b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 4062 y(w)m(ords.)150 4263 y Fi(1.2.3)63 b(Readline)40 b(Killing)i(Commands)150 4410 y Fj(Killing)35 b Ft(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i(but)e(to)h (sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f(usually)150 4519 y(b)m(y)g Fj(y)m(anking)35 b Ft(\(re-inserting\))28 b(it)g(bac)m(k)f(in)m(to)h(the)f(line.)40 b(\(`Cut')27 b(and)g(`paste')h(are)f(more)g(recen)m(t)h(jargon)f(for)150 4629 y(`kill')32 b(and)d(`y)m(ank'.\))275 4765 y(If)g(the)i (description)f(for)g(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g (text,)h(then)e(y)m(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150 4875 y(can)g(get)g(the)g(text)g(bac)m(k)g(in)f(a)h(di\013eren)m(t)g (\(or)g(the)f(same\))h(place)h(later.)275 5011 y(When)23 b(y)m(ou)g(use)g(a)h(kill)g(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i (in)e(a)g Fj(kill-ring)p Ft(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h (consecutiv)m(e)150 5121 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g (killed)h(text)g(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f (bac)m(k,)h(y)m(ou)g(get)g(it)f(all.)43 b(The)150 5230 y(kill)33 b(ring)f(is)g(not)h(line)g(sp)s(eci\014c;)g(the)g(text)g (that)g(y)m(ou)g(killed)f(on)h(a)f(previously)g(t)m(yp)s(ed)h(line)f (is)h(a)m(v)-5 b(ailable)150 5340 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac) m(k)g(later,)h(when)d(y)m(ou)i(are)g(t)m(yping)f(another)h(line.)p eop end %%Page: 3 7 TeXDict begin 3 6 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(3)275 299 y(Here)30 b(is)h(the)f(list)h(of)g(commands)f(for)g(killing)h(text.)150 456 y Fl(C-k)336 b Ft(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g (cursor)g(p)s(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150 614 y Fl(M-d)336 b Ft(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g (of)h(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m (ords,)g(to)g(the)630 723 y(end)j(of)g(the)h(next)f(w)m(ord.)41 b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used) f(b)m(y)g Fl(M-f)p Ft(.)150 881 y Fl(M-DEL)240 b Ft(Kill)31 b(from)f(the)h(cursor)f(the)g(start)h(of)g(the)g(curren)m(t)f(w)m(ord,) h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)i(the)630 991 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64 b(W)-8 b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)g(b)m (y)630 1100 y Fl(M-b)p Ft(.)150 1258 y Fl(C-w)336 b Ft(Kill)35 b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)55 b(This)34 b(is)h(di\013eren)m(t)h(than)e Fl(M-DEL)630 1367 y Ft(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275 1525 y(Here)42 b(is)f(ho)m(w)h(to)g Fj(y)m(ank)47 b Ft(the)42 b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43 b(means)e(to)h(cop)m(y)h(the)e(most-)150 1634 y(recen)m(tly-killed)33 b(text)e(from)f(the)g(kill)i(bu\013er.)150 1792 y Fl(C-y)336 b Ft(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h(killed)f(text)g(bac)m (k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f(cursor.)150 1949 y Fl(M-y)336 b Ft(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h (the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h (the)g(prior)630 2059 y(command)30 b(is)h Fl(C-y)e Ft(or)h Fl(M-y)p Ft(.)150 2256 y Fi(1.2.4)63 b(Readline)40 b(Argumen)m(ts)150 2403 y Ft(Y)-8 b(ou)40 b(can)f(pass)g(n)m(umeric)f(argumen)m(ts)i(to)f (Readline)h(commands.)67 b(Sometimes)39 b(the)g(argumen)m(t)h(acts)150 2513 y(as)g(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g Fk(sign)47 b Ft(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m (t.)71 b(If)40 b(y)m(ou)150 2622 y(pass)33 b(a)h(negativ)m(e)i(argumen) m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m (ard)f(direction,)i(that)150 2732 y(command)g(will)h(act)g(in)f(a)h (bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g (text)g(bac)m(k)g(to)g(the)g(start)g(of)150 2842 y(the)31 b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Fs(M--)f(C-k)p Ft('.)275 2975 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g (argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i (digits)e(b)s(efore)150 3085 y(the)j(command.)42 b(If)30 b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h (\(`)p Fs(-)p Ft('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150 3194 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m (e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h (started,)i(y)m(ou)150 3304 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f (of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40 b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fl(C-d)150 3414 y Ft(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f (t)m(yp)s(e)h(`)p Fs(M-1)29 b(0)h(C-d)p Ft(',)39 b(whic)m(h)e(will)h (delete)h(the)e(next)h(ten)150 3523 y(c)m(haracters)32 b(on)e(the)h(input)e(line.)150 3720 y Fi(1.2.5)63 b(Searc)m(hing)40 b(for)i(Commands)g(in)f(the)g(History)150 3867 y Ft(Readline)22 b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)f(the)g (command)h(history)f(for)g(lines)g(con)m(taining)150 3977 y(a)31 b(sp)s(eci\014ed)e(string.)41 b(There)30 b(are)h(t)m(w)m(o)g(searc)m(h)g(mo)s(des:)41 b Fj(incremen)m(tal)35 b Ft(and)30 b Fj(non-incremen)m(tal)p Ft(.)275 4111 y(Incremen)m(tal)c (searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e (t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150 4220 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s (ed,)g(Readline)g(displa)m(ys)g(the)f(next)h(en)m(try)g(from)e(the)i (history)150 4330 y(matc)m(hing)25 b(the)f(string)g(t)m(yp)s(ed)g(so)g (far.)39 b(An)23 b(incremen)m(tal)j(searc)m(h)e(requires)g(only)g(as)g (man)m(y)g(c)m(haracters)i(as)150 4439 y(needed)i(to)i(\014nd)d(the)i (desired)f(history)h(en)m(try)-8 b(.)41 b(T)-8 b(o)29 b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history)g(for)f(a)i (particular)150 4549 y(string,)g(t)m(yp)s(e)f Fl(C-r)p Ft(.)40 b(T)m(yping)29 b Fl(C-s)g Ft(searc)m(hes)h(forw)m(ard)f (through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m (t)150 4658 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g Fs(isearch-terminators)33 b Ft(v)-5 b(ariable)39 b(are)f(used)f(to)i (terminate)g(an)f(incremen)m(tal)150 4768 y(searc)m(h.)71 b(If)40 b(that)h(v)-5 b(ariable)41 b(has)f(not)h(b)s(een)e(assigned)i (a)f(v)-5 b(alue,)44 b(the)c Fs(ESC)g Ft(and)f Fl(C-J)h Ft(c)m(haracters)i(will)150 4878 y(terminate)h(an)g(incremen)m(tal)g (searc)m(h.)78 b Fl(C-g)41 b Ft(will)i(ab)s(ort)f(an)g(incremen)m(tal)i (searc)m(h)f(and)f(restore)h(the)150 4987 y(original)30 b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f(terminated,)h(the)f (history)g(en)m(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150 5097 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 5230 y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e(the)h (history)g(list,)h(t)m(yp)s(e)g Fl(C-r)e Ft(or)h Fl(C-s)f Ft(as)h(appropriate.)43 b(This)150 5340 y(will)26 b(searc)m(h)h(bac)m (kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f(for)g(the)g(next)g (en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string)p eop end %%Page: 4 8 TeXDict begin 4 7 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(4)150 299 y(t)m(yp)s(ed)37 b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i(sequence)f(b)s(ound)e(to) i(a)g(Readline)h(command)e(will)h(terminate)h(the)150 408 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39 b(F)-8 b(or)26 b(instance,)h(a)f Fs(RET)f Ft(will)g(terminate)i(the)f (searc)m(h)g(and)e(accept)150 518 y(the)30 b(line,)g(thereb)m(y)f (executing)i(the)e(command)g(from)g(the)h(history)f(list.)41 b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 628 y(terminate)i(the)g (searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g(found)e(the)i(curren)m(t)f (line,)h(and)f(b)s(egin)g(editing.)275 777 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g(searc)m(h)f(string.) 54 b(If)34 b(t)m(w)m(o)j Fl(C-r)p Ft(s)c(are)i(t)m(yp)s(ed)g(without) 150 886 y(an)m(y)i(in)m(terv)m(ening)g(c)m(haracters)h(de\014ning)e(a)h (new)f(searc)m(h)h(string,)h(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i (string)g(is)150 996 y(used.)275 1145 y(Non-incremen)m(tal)48 b(searc)m(hes)g(read)e(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s (efore)f(starting)h(to)h(searc)m(h)f(for)150 1255 y(matc)m(hing)d (history)e(lines.)78 b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f (t)m(yp)s(ed)g(b)m(y)g(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 1364 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150 1627 y Fr(1.3)68 b(Readline)47 b(Init)e(File)150 1786 y Ft(Although)f(the)g(Readline)g(library)f(comes)i(with)e(a)h(set)h(of) f(Emacs-lik)m(e)h(k)m(eybindings)f(installed)g(b)m(y)150 1896 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren) m(t)f(set)g(of)g(k)m(eybindings.)38 b(An)m(y)25 b(user)f(can)h (customize)h(programs)150 2005 y(that)45 b(use)f(Readline)h(b)m(y)f (putting)g(commands)g(in)g(an)g Fj(inputrc)49 b Ft(\014le,)g(con)m(v)m (en)m(tionally)e(in)d(his)g(home)150 2115 y(directory)-8 b(.)39 b(The)23 b(name)h(of)f(this)h(\014le)f(is)g(tak)m(en)i(from)e (the)g(v)-5 b(alue)24 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)25 b Fs(INPUTRC)p Ft(.)150 2224 y(If)30 b(that)g(v)-5 b(ariable)31 b(is)f(unset,)g(the)h(default)f(is)g Fs(~/.inputrc)p Ft(.)38 b(If)30 b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h (b)s(e)150 2334 y(read,)g(the)f(ultimate)i(default)e(is)h Fs(/etc/inputrc)p Ft(.)275 2483 y(When)e(a)h(program)f(whic)m(h)h(uses) f(the)h(Readline)g(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h (read,)g(and)f(the)150 2593 y(k)m(ey)i(bindings)e(are)i(set.)275 2742 y(In)26 b(addition,)i(the)f Fs(C-x)i(C-r)d Ft(command)h(re-reads)g (this)f(init)h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m (hanges)150 2851 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g (it.)150 3065 y Fi(1.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150 3212 y Ft(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w) m(ed)h(in)d(the)h(Readline)h(init)f(\014le.)73 b(Blank)41 b(lines)h(are)150 3322 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h (a)g(`)p Fs(#)p Ft(')g(are)h(commen)m(ts.)73 b(Lines)41 b(b)s(eginning)f(with)g(a)i(`)p Fs($)p Ft(')f(indicate)150 3431 y(conditional)i(constructs)e(\(see)i(Section)f(1.3.2)h ([Conditional)f(Init)f(Constructs],)j(page)f(12\).)74 b(Other)150 3541 y(lines)31 b(denote)g(v)-5 b(ariable)31 b(settings)g(and)f(k)m(ey)h(bindings.)150 3722 y(V)-8 b(ariable)32 b(Settings)630 3832 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e (the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h (the)g(v)-5 b(alues)41 b(of)630 3941 y(v)-5 b(ariables)34 b(in)f(Readline)i(using)e(the)g Fs(set)g Ft(command)g(within)g(the)h (init)g(\014le.)50 b(The)33 b(syn)m(tax)630 4051 y(is)d(simple:)870 4193 y Fs(set)47 b Fl(variable)e(value)630 4335 y Ft(Here,)29 b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default) h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 4444 y(use)k Fs(vi)g Ft(line)h(editing)g(commands:)870 4586 y Fs(set)47 b(editing-mode)d(vi)630 4728 y Ft(V)-8 b(ariable)36 b(names)f(and)g(v) -5 b(alues,)36 b(where)f(appropriate,)h(are)g(recognized)g(without)f (regard)630 4837 y(to)c(case.)42 b(Unrecognized)31 b(v)-5 b(ariable)31 b(names)g(are)f(ignored.)630 4979 y(Bo)s(olean)c(v)-5 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f(set)i(to)g(on)f(or)g (o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the)g(v)-5 b(alue)26 b(is)630 5089 y(n)m(ull)e(or)g(empt)m(y)-8 b(,)27 b Fj(on)d Ft(\(case-insensitiv)m(e\),)29 b(or)24 b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) -5 b(ariable)630 5198 y(b)s(eing)30 b(set)h(to)g(o\013.)630 5340 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m (hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)p eop end %%Page: 5 9 TeXDict begin 5 8 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y Fs(bell-style)1110 408 y Ft(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an) m(ts)f(to)h(ring)e(the)h(termi-)1110 518 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p Fs(none)p Ft(',)g(Readline)g(nev)m(er)g(rings) e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 628 y(`)p Fs(visible)p Ft(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g (one)g(is)g(a)m(v)-5 b(ailable.)51 b(If)33 b(set)g(to)1110 737 y(`)p Fs(audible)p Ft(')j(\(the)i(default\),)i(Readline)e(attempts) g(to)h(ring)e(the)g(terminal's)1110 847 y(b)s(ell.)630 1005 y Fs(bind-tty-special-chars)1110 1115 y Ft(If)e(set)g(to)h(`)p Fs(on)p Ft(')f(\(the)g(default\),)i(Readline)f(attempts)g(to)g(bind)d (the)i(con)m(trol)1110 1224 y(c)m(haracters)30 b(treated)g(sp)s (ecially)g(b)m(y)f(the)g(k)m(ernel's)h(terminal)f(driv)m(er)g(to)h (their)1110 1334 y(Readline)h(equiv)-5 b(alen)m(ts.)630 1492 y Fs(blink-matching-paren)1110 1602 y Ft(If)36 b(set)g(to)h(`)p Fs(on)p Ft(',)h(Readline)f(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j (the)f(cursor)e(to)i(an)1110 1711 y(op)s(ening)k(paren)m(thesis)h(when) f(a)h(closing)h(paren)m(thesis)e(is)h(inserted.)74 b(The)1110 1821 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 1979 y Fs(colored-completion-prefi)o(x)1110 2089 y Ft(If)f(set)h(to)g(`)p Fs(on)p Ft(',)g(when)e(listing)i(completions,)h(Readline)f(displa)m(ys) g(the)f(com-)1110 2198 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s (ossible)f(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110 2308 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g (v)-5 b(alue)40 b(of)g(the)g Fs(LS_COLORS)1110 2418 y Ft(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 2576 y Fs(colored-stats)1110 2685 y Ft(If)c(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(displa)m(ys)g (p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 2795 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67 b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110 2905 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fs(LS_COLORS)d Ft(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110 3014 y(is)30 b(`)p Fs(off)p Ft('.)630 3173 y Fs(comment-begin)1110 3282 y Ft(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) h(the)h(line)f(when)g(the)1110 3392 y Fs(insert-comment)26 b Ft(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f Fs("#")p Ft(.)630 3550 y Fs(completion-display-width) 1110 3660 y Ft(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 3769 y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5 b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110 3879 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39 b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110 3988 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e (line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630 4147 y Fs(completion-ignore-case)1110 4256 y Ft(If)d(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i (and)e(completion)1110 4366 y(in)j(a)h(case-insensitiv)m(e)i(fashion.) 40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Fs(off)p Ft('.)630 4524 y Fs(completion-map-case)1110 4634 y Ft(If)22 b(set)g(to)h(`)p Fs(on)p Ft(',)h(and)e Fj(completion-ignore-case)31 b Ft(is)22 b(enabled,)i(Readline)f(treats)1110 4743 y(h)m(yphens)29 b(\(`)p Fs(-)p Ft('\))j(and)e(underscores)g(\(`)p Fs(_)p Ft('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110 4853 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f (completion.)85 b(The)44 b(default)1110 4963 y(v)-5 b(alue)31 b(is)f(`)p Fs(off)p Ft('.)630 5121 y Fs(completion-prefix-displa)o (y-le)o(ngth)1110 5230 y Ft(The)h(length)g(in)g(c)m(haracters)i(of)f (the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 5340 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s (di\014cation.)41 b(When)29 b(set)h(to)h(a)p eop end %%Page: 6 10 TeXDict begin 6 9 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(6)1110 299 y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e(longer)j (than)e(this)g(v)-5 b(alue)27 b(are)1110 408 y(replaced)k(with)f(an)g (ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)f(completions.)630 565 y Fs(completion-query-items)1110 675 y Ft(The)c(n)m(um)m(b)s(er)f (of)h(p)s(ossible)g(completions)h(that)g(determines)f(when)f(the)i (user)1110 784 y(is)i(ask)m(ed)h(whether)f(the)h(list)g(of)f(p)s (ossibilities)h(should)e(b)s(e)h(displa)m(y)m(ed.)41 b(If)29 b(the)1110 894 y(n)m(um)m(b)s(er)d(of)h(p)s(ossible)f (completions)i(is)f(greater)h(than)e(this)h(v)-5 b(alue,)28 b(Readline)1110 1003 y(will)f(ask)g(the)f(user)g(whether)g(or)g(not)h (he)f(wishes)g(to)i(view)e(them;)i(otherwise,)1110 1113 y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5 b(ariable)25 b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m(teger)g(v)-5 b(alue)1110 1223 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40 b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i(should)1110 1332 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g Fs(100)p Ft(.)630 1489 y Fs(convert-meta)1110 1598 y Ft(If)22 b(set)g(to)h(`)p Fs(on)p Ft(',)h(Readline)f(will)f(con)m(v)m (ert)i(c)m(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110 1708 y(to)33 b(an)e Fm(asci)r(i)h Ft(k)m(ey)h(sequence)f(b)m(y)g (stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110 1817 y(an)24 b Fs(ESC)g Ft(c)m(haracter,)j(con)m(v)m(erting)f(them)f (to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 1927 y(The)i(default)h(v)-5 b(alue)28 b(is)f(`)p Fs(on)p Ft(',)i(but)d(will) i(b)s(e)f(set)h(to)g(`)p Fs(off)p Ft(')g(if)f(the)h(lo)s(cale)h(is)f (one)1110 2037 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630 2193 y Fs(disable-completion)1110 2303 y Ft(If)k(set)h(to)h(`)p Fs(On)p Ft(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60 b(Completion)1110 2412 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h (in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110 2522 y(to)31 b Fs(self-insert)p Ft(.)38 b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 2679 y Fs(echo-control-characters)1110 2788 y Ft(When)f(set)h(to)g(`)p Fs(on)p Ft(',)f(on)g(op)s(erating)h (systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 2898 y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d (to)j(a)f(signal)g(generated)1110 3007 y(from)e(the)g(k)m(eyb)s(oard.) 41 b(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 3164 y Fs(editing-mode)1110 3273 y Ft(The)d Fs(editing-mode)e Ft(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k) m(ey)i(bind-)1110 3383 y(ings)25 b(is)g(used.)38 b(By)26 b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,) 1110 3493 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110 3602 y(b)s(e)g(set)h(to)g(either)g(`)p Fs(emacs)p Ft(')e(or)h(`)p Fs(vi)p Ft('.)630 3759 y Fs(emacs-mode-string)1110 3868 y Ft(If)j(the)h Fj(sho)m(w-mo)s(de-in-prompt)h Ft(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 3978 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f (of)h(the)f(primary)f(prompt)g(when)1110 4088 y(emacs)g(editing)h(mo)s (de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f (lik)m(e)h(a)h(k)m(ey)f(bind-)1110 4197 y(ing,)27 b(so)f(the)f (standard)g(set)h(of)f(meta-)i(and)e(con)m(trol)i(pre\014xes)d(and)h (bac)m(kslash)1110 4307 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 b(ailable.)41 b(Use)25 b(the)f(`)p Fs(\\1)p Ft(')f(and)h(`)p Fs(\\2)p Ft(')g(escap)s(es)g(to)g(b)s(egin)1110 4416 y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m(haracters,)j (whic)m(h)c(can)h(b)s(e)f(used)1110 4526 y(to)h(em)m(b)s(ed)f(a)g (terminal)h(con)m(trol)h(sequence)f(in)m(to)g(the)f(mo)s(de)g(string.) 61 b(The)1110 4635 y(default)31 b(is)f(`)p Fs(@)p Ft('.)630 4792 y Fs(enable-bracketed-paste)1110 4902 y Ft(When)24 b(set)h(to)h(`)p Fs(On)p Ft(',)g(Readline)f(will)g(con\014gure)f(the)h (terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 5011 y(will)k(enable)f(it)h (to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e (as)i(a)f(single)1110 5121 y(string)33 b(of)f(c)m(haracters,)j(instead) e(of)g(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110 5230 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49 b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110 5340 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41 b(The)29 b(default)i(is)f(`)p Fs(off)p Ft('.)p eop end %%Page: 7 11 TeXDict begin 7 10 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fs(enable-keypad)1110 408 y Ft(When)23 b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(will)g (try)f(to)h(enable)g(the)f(application)i(k)m(eypad)1110 518 y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f (to)h(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 628 y(The)j(default)g(is) h(`)p Fs(off)p Ft('.)630 800 y Fs(enable-meta-key)1110 909 y Ft(When)40 b(set)g(to)g(`)p Fs(on)p Ft(',)j(Readline)d(will)g (try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 1019 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h (is)g(called.)76 b(On)41 b(man)m(y)1110 1129 y(terminals,)c(the)e(meta) h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56 b(The)1110 1238 y(default)31 b(is)f(`)p Fs(on)p Ft('.)630 1410 y Fs(expand-tilde)1110 1520 y Ft(If)d(set)h(to)h(`)p Fs(on)p Ft(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h (Readline)h(attempts)1110 1630 y(w)m(ord)i(completion.)42 b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 1802 y Fs(history-preserve-point)1110 1911 y Ft(If)41 b(set)h(to)h(`)p Fs(on)p Ft(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f (p)s(oin)m(t)f(\(the)1110 2021 y(curren)m(t)35 b(cursor)g(p)s (osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g (line)1110 2131 y(retriev)m(ed)h(with)f Fs(previous-history)c Ft(or)37 b Fs(next-history)p Ft(.)55 b(The)36 b(default)1110 2240 y(is)30 b(`)p Fs(off)p Ft('.)630 2412 y Fs(history-size)1110 2522 y Ft(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g (en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 2632 y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f (en)m(tries)g(are)g(deleted)h(and)e(no)1110 2741 y(new)e(en)m(tries)i (are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5 b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110 2851 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110 2960 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) f(made)g(to)h(set)f Fj(history-size)39 b Ft(to)1110 3070 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m (b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 3180 y(b)s(e)c(set)h(to)g(500.)630 3352 y Fs(horizontal-scroll-mode)1110 3461 y Ft(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f (`)p Fs(on)p Ft(')g(or)g(`)p Fs(off)p Ft('.)57 b(Setting)36 b(it)g(to)h(`)p Fs(on)p Ft(')1110 3571 y(means)26 b(that)h(the)f(text)h (of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m (tally)1110 3680 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i (are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 3790 y(screen,)27 b(instead)g(of)f(wrapping)f(on)m(to)i(a)f(new)g(screen)g (line.)39 b(By)27 b(default,)g(this)1110 3900 y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Fs(off)p Ft('.)630 4072 y Fs(input-meta)1110 4181 y Ft(If)f(set)g(to)h(`)p Fs(on)p Ft(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it) i(will)f(not)h(clear)1110 4291 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h (c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110 4401 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Fs(off)p Ft(',)j(but)1110 4510 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p Fs(on)p Ft(')e(if)h(the)g(lo)s(cale)i(con)m(tains)f(eigh)m(t-bit)g(c)m (haracters.)1110 4620 y(The)30 b(name)g Fs(meta-flag)e Ft(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5 b(ariable.)630 4792 y Fs(isearch-terminators)1110 4902 y Ft(The)51 b(string)h(of)g(c)m (haracters)h(that)f(should)e(terminate)j(an)f(incremen)m(tal)1110 5011 y(searc)m(h)25 b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m (haracter)h(as)f(a)g(command)1110 5121 y(\(see)45 b(Section)h(1.2.5)g ([Searc)m(hing],)j(page)d(3\).)84 b(If)44 b(this)g(v)-5 b(ariable)45 b(has)g(not)1110 5230 y(b)s(een)35 b(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h Fs(ESC)d Ft(and)h Fl(C-J)g Ft(will)h(terminate)g(an)1110 5340 y(incremen)m(tal)c(searc)m (h.)p eop end %%Page: 8 12 TeXDict begin 8 11 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fs(keymap)192 b Ft(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h (for)f(k)m(ey)h(binding)1110 408 y(commands.)71 b(Built-in)41 b Fs(keymap)e Ft(names)h(are)h Fs(emacs)p Ft(,)h Fs(emacs-standard)p Ft(,)1110 518 y Fs(emacs-meta)p Ft(,)99 b Fs(emacs-ctlx)p Ft(,)f Fs(vi)p Ft(,)j Fs(vi-move)p Ft(,)f Fs(vi-command)p Ft(,)f(and)1110 628 y Fs(vi-insert)p Ft(.)81 b Fs(vi)44 b Ft(is)h(equiv)-5 b(alen)m(t)46 b(to)g Fs(vi-command)c Ft(\()p Fs(vi-move)h Ft(is)i(also)h(a)1110 737 y(synon)m(ym\);)41 b Fs(emacs)c Ft(is)h(equiv)-5 b(alen)m(t)39 b(to)f Fs(emacs-standard)p Ft(.)59 b(Applications)1110 847 y(ma)m(y)32 b(add)e(additional)i (names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f Fs(emacs)p Ft(.)41 b(The)30 b(v)-5 b(alue)1110 956 y(of)31 b(the)f Fs(editing-mode)d Ft(v)-5 b(ariable)31 b(also)h(a\013ects)f (the)g(default)g(k)m(eymap.)630 1113 y Fs(keyseq-timeout)1110 1223 y Ft(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m (ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 1332 y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f (form)g(a)g(complete)h(k)m(ey)1110 1442 y(sequence)j(using)e(the)i (input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input) 1110 1551 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110 1661 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) g(but)f(complete)j(k)m(ey)e(se-)1110 1771 y(quence.)c(Readline)26 b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h (input)1110 1880 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m (t)f(input)g(source)h(\()p Fs(rl_instream)d Ft(b)m(y)i(default\).)1110 1990 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h (milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that) 1110 2099 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g (additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23 b(is)1110 2209 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f (equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5 b(alue,)1110 2318 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h (k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110 2428 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 b(alue)31 b(is)g Fs(500)p Ft(.)630 2585 y Fs(mark-directories)1110 2694 y Ft(If)38 b(set)g(to)h(`)p Fs(on)p Ft(',)i(completed)e(directory) f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 2804 y(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 2960 y Fs(mark-modified-lines)1110 3070 y Ft(This)k(v)-5 b(ariable,)38 b(when)d(set)h(to)h(`)p Fs(on)p Ft(',)g(causes)g (Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3180 y(terisk)f(\(`)p Fs(*)p Ft('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f (ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3289 y(This)d(v)-5 b(ariable)31 b(is)f(`)p Fs(off)p Ft(')g(b)m(y)g(default.)630 3446 y Fs(mark-symlinked-directori)o(es)1110 3555 y Ft(If)59 b(set)h(to)g(`)p Fs(on)p Ft(',)67 b(completed)60 b(names)f(whic)m(h)g (are)h(sym)m(b)s(olic)g(links)f(to)1110 3665 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70 b(to)g(the)g(v)-5 b(alue)70 b(of)1110 3774 y Fs(mark-directories)p Ft(\).)37 b(The)30 b(default)g(is)g(`)p Fs(off)p Ft('.)630 3931 y Fs(match-hidden-files)1110 4041 y Ft(This)21 b(v)-5 b(ariable,)25 b(when)d(set)g(to)h(`)p Fs(on)p Ft(',)h(causes)f (Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 4150 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Fs(.)p Ft(')g(\(hidden)f (\014les\))i(when)e(p)s(erforming)g(\014lename)1110 4260 y(completion.)75 b(If)41 b(set)g(to)h(`)p Fs(off)p Ft(',)i(the)e (leading)g(`)p Fs(.)p Ft(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)1110 4369 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.) 53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Fs(on)p Ft(')g(b)m(y)1110 4479 y(default.)630 4635 y Fs(menu-complete-display-pr)o(efix)1110 4745 y Ft(If)f(set)h(to)g(`)p Fs(on)p Ft(',)h(men)m(u)e(completion)i (displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110 4855 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b) s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 4964 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Fs(off)p Ft('.)630 5121 y Fs(output-meta)1110 5230 y Ft(If)35 b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(will)g(displa)m(y)f(c)m (haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 5340 y(set)h(directly)g (rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59 b(The)p eop end %%Page: 9 13 TeXDict begin 9 12 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(9)1110 299 y(default)26 b(is)f(`)p Fs(off)p Ft(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p Fs(on)p Ft(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110 408 y(eigh)m(t-bit)k(c)m(haracters.)630 581 y Fs(page-completions)1110 690 y Ft(If)h(set)i(to)f(`)p Fs(on)p Ft(',)h(Readline)g(uses)e(an)h(in) m(ternal)h Fs(more)p Ft(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 800 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) 47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fs(on)p Ft(')1110 909 y(b)m(y)e(default.)630 1082 y Fs(print-completions-horizo)o(ntal)o (ly)1110 1191 y Ft(If)23 b(set)i(to)g(`)p Fs(on)p Ft(',)g(Readline)g (will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110 1301 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c (than)g(do)m(wn)g(the)h(screen.)1110 1410 y(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 1583 y Fs(revert-all-at-newline)1110 1692 y Ft(If)e(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)g(will)g(undo)f (all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 1802 y(returning)f(when)f Fs(accept-line)f Ft(is)j(executed.)41 b(By)29 b(default,)g(history)g(lines)1110 1911 y(ma)m(y)42 b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h (across)g(calls)h(to)1110 2021 y Fs(readline)p Ft(.)38 b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 2193 y Fs(show-all-if-ambiguous)1110 2303 y Ft(This)f(alters)i(the)f (default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40 b(If)29 b(set)1110 2412 y(to)f(`)p Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h) g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause) 1110 2522 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i (instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 2632 y(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Fs(off)p Ft('.)630 2804 y Fs(show-all-if-unmodified)1110 2913 y Ft(This)38 b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h (functions)e(in)h(a)1110 3023 y(fashion)25 b(similar)h(to)g Fj(sho)m(w-all-if-am)m(biguous)p Ft(.)41 b(If)25 b(set)h(to)h(`)p Fs(on)p Ft(',)f(w)m(ords)f(whic)m(h)1110 3133 y(ha)m(v)m(e)32 b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s (ossible)f(par-)1110 3242 y(tial)43 b(completion)h(\(the)f(p)s(ossible) f(completions)h(don't)f(share)g(a)h(common)1110 3352 y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g (immediately)i(instead)e(of)h(ring-)1110 3461 y(ing)g(the)f(b)s(ell.)41 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fs(off)p Ft('.)630 3634 y Fs(show-mode-in-prompt)1110 3743 y Ft(If)24 b(set)h(to)g(`)p Fs(on)p Ft(',)g(add)f(a)h(string)f(to)h(the)f(b)s (eginning)g(of)g(the)h(prompt)e(indicating)1110 3853 y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi) h(insertion.)49 b(The)32 b(mo)s(de)1110 3962 y(strings)45 b(are)h(user-settable)g(\(e.g.,)51 b Fj(emacs-mo)s(de-string)8 b Ft(\).)87 b(The)45 b(default)1110 4072 y(v)-5 b(alue)31 b(is)f(`)p Fs(off)p Ft('.)630 4244 y Fs(skip-completed-text)1110 4354 y Ft(If)i(set)i(to)f(`)p Fs(on)p Ft(',)h(this)f(alters)g(the)g (default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110 4463 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110 4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)1110 4682 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g (c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f (b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110 4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110 5011 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g (after)h(the)g(`)p Fs(e)p Ft(')f(in)1110 5121 y(`)p Fs(Makefile)p Ft(')c(will)i(result)f(in)g(`)p Fs(Makefile)p Ft(')f(rather)h(than)h(`) p Fs(Makefilefile)p Ft(',)1110 5230 y(assuming)d(there)g(is)h(a)f (single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5 b(alue)1110 5340 y(is)30 b(`)p Fs(off)p Ft('.)p eop end %%Page: 10 14 TeXDict begin 10 13 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(10)630 299 y Fs (vi-cmd-mode-string)1110 408 y Ft(If)33 b(the)h Fj(sho)m(w-mo)s (de-in-prompt)h Ft(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f (is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g (last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110 628 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)g (mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110 737 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f (standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110 847 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)g (a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Fs(\\1)p Ft(')1110 956 y(and)23 b(`)p Fs(\\2)p Ft(')h(escap)s(es)h(to)f(b)s (egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 1066 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a) h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 1176 y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p Fs(\(cmd\))p Ft('.)630 1340 y Fs(vi-ins-mode-string)1110 1450 y Ft(If)j(the)h Fj(sho)m(w-mo)s(de-in-prompt)h Ft(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 1559 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f (of)h(the)f(primary)f(prompt)g(when)1110 1669 y(vi)35 b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.) 54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 1778 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g (meta-)h(and)e(con)m(trol)1110 1888 y(pre\014xes)34 b(and)g(bac)m (kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Fs(\\1)p Ft(')1110 1998 y(and)23 b(`)p Fs(\\2)p Ft(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g (sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 2107 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h (terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2217 y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p Fs(\(ins\))p Ft('.)630 2381 y Fs(visible-stats)1110 2491 y Ft(If)h(set)i(to)f(`)p Fs(on)p Ft(',)h(a)f(c)m(haracter)i(denoting)e (a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110 2600 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)150 2765 y(Key)f(Bindings)630 2874 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h (k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630 2984 y(need)27 b(to)i(\014nd)d(the)i(name)f(of) h(the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)630 3093 y(sections)37 b(con)m(tain)g(tables)g (of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an) m(y)-8 b(,)630 3203 y(and)30 b(a)h(short)f(description)g(of)h(what)f (the)g(command)h(do)s(es.)630 3340 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g (name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g (the)g(init)630 3450 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m (ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then) 630 3559 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g (and)630 3669 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m (terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72 b(The)40 b(name)h(of)630 3778 y(the)35 b(k)m(ey)g(can)g(b)s(e)f (expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h (what)h(y)m(ou)g(\014nd)e(most)630 3888 y(comfortable.)630 4025 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h (k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630 4134 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g (\(a)h Fj(macro)5 b Ft(\).)630 4299 y Fj(k)m(eyname)g Ft(:)42 b Fj(function-name)35 b Ft(or)c Fj(macro)1110 4408 y(k)m(eyname)k Ft(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s (elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350 4545 y Fs(Control-u:)45 b(universal-argument)1350 4655 y(Meta-Rubout:)f(backward-kill-word)1350 4765 y(Control-o:)h(">)i (output")1110 4902 y Ft(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112 b Fl(C-u)94 b Ft(is)g(b)s(ound)f(to)i(the)f(function)1110 5011 y Fs(universal-argument)p Ft(,)124 b Fl(M-DEL)107 b Ft(is)i(b)s(ound)e(to)j(the)f(function)1110 5121 y Fs(backward-kill-word)p Ft(,)75 b(and)69 b Fl(C-o)g Ft(is)h(b)s(ound)e (to)j(run)d(the)i(macro)1110 5230 y(expressed)45 b(on)h(the)g(righ)m(t) g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p Fs(>)1110 5340 y(output)p Ft(')29 b(in)m(to)i(the)g(line\).)p eop end %%Page: 11 15 TeXDict begin 11 14 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(11)1110 299 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g(names)f(are)g (recognized)h(while)1110 408 y(pro)s(cessing)40 b(this)f(k)m(ey)i (binding)e(syn)m(tax:)60 b Fj(DEL)p Ft(,)42 b Fj(ESC)p Ft(,)g Fj(ESCAPE)p Ft(,)f Fj(LFD)p Ft(,)1110 518 y Fj(NEWLINE)p Ft(,)31 b Fj(RET)p Ft(,)f Fj(RETURN)p Ft(,)g Fj(R)m(UBOUT)p Ft(,)h Fj(SP)-8 b(A)m(CE)p Ft(,)31 b Fj(SPC)p Ft(,)e(and)h Fj(T)-8 b(AB)p Ft(.)630 677 y Fs(")p Fj(k)m(eyseq)r Fs(")p Ft(:)41 b Fj(function-name)36 b Ft(or)30 b Fj(macro)1110 787 y(k)m(eyseq)k Ft(di\013ers)d(from)f Fj(k)m(eyname)37 b Ft(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110 896 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m(y) f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 1006 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h Ft(Emacs)f(st)m(yle)i(k)m(ey)f(escap) s(es)g(can)g(b)s(e)f(used,)g(as)1110 1115 y(in)k(the)h(follo)m(wing)i (example,)f(but)e(the)h(sp)s(ecial)h(c)m(haracter)g(names)f(are)g(not) 1110 1225 y(recognized.)1350 1359 y Fs("\\C-u":)46 b (universal-argument)1350 1469 y("\\C-x\\C-r":)f(re-read-init-file)1350 1578 y("\\e[11~":)g("Function)h(Key)g(1")1110 1713 y Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fl(C-u)64 b Ft(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 1822 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g (the)f(\014rst)g(example\),)49 b(`)p Fl(C-x)1110 1932 y(C-r)p Ft(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f Fs(re-read-init-file)p Ft(,)c(and)j(`)p Fs(ESC)h([)g(1)g(1)1110 2041 y(~)p Ft(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p Fs(Function)e(Key)g(1)p Ft('.)630 2200 y(The)g(follo)m(wing)i Fm(gnu)f Ft(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 b(ailable)32 b(when)d(sp)s(ecifying)630 2310 y(k)m(ey)i(sequences:)630 2469 y Fl(\\C-)336 b Ft(con)m(trol)32 b(pre\014x)630 2628 y Fl(\\M-)336 b Ft(meta)31 b(pre\014x)630 2787 y Fl(\\e)384 b Ft(an)30 b(escap)s(e)h(c)m(haracter)630 2945 y Fl(\\\\)384 b Ft(bac)m(kslash)630 3104 y Fl(\\)p Fs(")g(")p Ft(,)30 b(a)h(double)f(quotation)i(mark)630 3263 y Fl(\\')384 b Fs(')p Ft(,)30 b(a)h(single)g(quote)g(or)f(ap)s (ostrophe)630 3422 y(In)d(addition)h(to)g(the)g Fm(gnu)f Ft(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g (bac)m(kslash)630 3532 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 3691 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 3850 y Fs(\\b)384 b Ft(bac)m(kspace)630 4008 y Fs(\\d)g Ft(delete)630 4167 y Fs(\\f)g Ft(form)30 b(feed)630 4326 y Fs(\\n)384 b Ft(newline)630 4485 y Fs(\\r)g Ft(carriage)32 b(return)630 4644 y Fs(\\t)384 b Ft(horizon)m(tal)32 b(tab)630 4803 y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 4962 y Fs(\\)p Fl(nnn)288 b Ft(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fj(nnn)e Ft(\(one)i(to)1110 5071 y(three)c(digits\))630 5230 y Fs(\\x)p Fl(HH)288 b Ft(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e (v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 b Fj(HH)1110 5340 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))p eop end %%Page: 12 16 TeXDict begin 12 15 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(12)630 299 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e(or)f(double)g (quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 408 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g (to)h(b)s(e)f(a)h(function)f(name.)38 b(In)630 518 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g (describ)s(ed)e(ab)s(o)m(v)m(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 628 y(will)j(quote)h(an)m(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f (text,)k(including)39 b(`)p Fs(")p Ft(')h(and)g(`)p Fs(')p Ft('.)69 b(F)-8 b(or)630 737 y(example,)28 b(the)e(follo)m(wing)h (binding)d(will)i(mak)m(e)h(`)p Fl(C-x)j Fs(\\)p Ft(')c(insert)f(a)h (single)h(`)p Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870 873 y Fs("\\C-x\\\\":)45 b("\\\\")150 1073 y Fi(1.3.2)63 b(Conditional)41 b(Init)g(Constructs)150 1220 y Ft(Readline)c(implemen) m(ts)g(a)h(facilit)m(y)g(similar)f(in)g(spirit)f(to)i(the)f (conditional)h(compilation)g(features)f(of)150 1330 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g(bindings)d(and) h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s(erformed)f(as)i(the) 150 1440 y(result)f(of)h(tests.)41 b(There)30 b(are)h(four)f(parser)f (directiv)m(es)j(used.)150 1601 y Fs($if)336 b Ft(The)31 b Fs($if)f Ft(construct)i(allo)m(ws)h(bindings)d(to)i(b)s(e)e(made)i (based)f(on)g(the)g(editing)h(mo)s(de,)g(the)630 1711 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h(application)g(using)f (Readline.)59 b(The)36 b(text)h(of)f(the)h(test,)630 1821 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f(to)h (the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630 1930 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i (it.)630 2091 y Fs(mode)288 b Ft(The)30 b Fs(mode=)e Ft(form)i(of)g(the)h Fs($if)e Ft(directiv)m(e)j(is)e(used)f(to)i(test)g (whether)e(Read-)1110 2201 y(line)44 b(is)f(in)g Fs(emacs)f Ft(or)h Fs(vi)g Ft(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g (conjunction)1110 2311 y(with)c(the)h(`)p Fs(set)29 b(keymap)p Ft(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110 2420 y(the)32 b Fs(emacs-standard)c Ft(and)j Fs(emacs-ctlx)d Ft(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 2530 y(starting)f(out)g (in)f Fs(emacs)f Ft(mo)s(de.)630 2691 y Fs(term)288 b Ft(The)26 b Fs(term=)g Ft(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f (terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 2800 y(ings,)38 b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g (the)g(terminal's)1110 2910 y(function)24 b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p Fs(=)p Ft(')g(is)g(tested)h(against)1110 3020 y(b)s(oth)k(the)h(full)g (name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g (terminal)1110 3129 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p Fs(-)p Ft('.)50 b(This)33 b(allo)m(ws)i Fs(sun)e Ft(to)h(matc)m(h)g(b)s (oth)f Fs(sun)g Ft(and)1110 3239 y Fs(sun-cmd)p Ft(,)c(for)h(instance.) 630 3400 y Fs(version)144 b Ft(The)44 b Fs(version)f Ft(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i (against)1110 3509 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74 b(The)42 b Fs(version)d Ft(expands)i(to)h(the)g(curren)m(t)1110 3619 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h (op)s(erators)f(includes)f(`)p Fs(=)p Ft(')h(\(and)1110 3729 y(`)p Fs(==)p Ft('\),)33 b(`)p Fs(!=)p Ft(',)f(`)p Fs(<=)p Ft(',)h(`)p Fs(>=)p Ft(',)f(`)p Fs(<)p Ft(',)h(and)e(`)p Fs(>)p Ft('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h (on)1110 3838 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g (consists)h(of)f(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110 3948 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44 b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 4057 y(`)p Fs(7.1)p Ft('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g (omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Fs(0)p Ft('.)40 b(The)1110 4167 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated) g(from)g(the)h(string)f Fs(version)f Ft(and)h(from)g(the)1110 4276 y(v)m(ersion)39 b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f (whitespace.)67 b(The)38 b(follo)m(wing)i(example)1110 4386 y(sets)31 b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m (ersion)f(b)s(eing)g(used)g(is)g(7.0)i(or)e(new)m(er:)1350 4521 y Fs($if)47 b(version)f(>=)h(7.0)1350 4631 y(set)g (show-mode-in-prompt)42 b(on)1350 4741 y($endif)630 4902 y(application)1110 5011 y Ft(The)21 b Fj(application)j Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h (set-)1110 5121 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h (Readline)g(library)g(sets)g(the)g Fj(application)1110 5230 y(name)p Ft(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h (v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 5340 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h (a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)p eop end %%Page: 13 17 TeXDict begin 13 16 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(13)1110 299 y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f(sequence)h(that)f (quotes)1110 408 y(the)e(curren)m(t)f(or)g(previous)g(w)m(ord)g(in)g (Bash:)1350 543 y Fs($if)47 b(Bash)1350 653 y(#)g(Quote)g(the)g (current)f(or)h(previous)e(word)1350 762 y("\\C-xq":)h ("\\eb\\"\\ef\\"")1350 872 y($endif)630 1031 y(variable)96 b Ft(The)33 b Fj(v)-5 b(ariable)39 b Ft(construct)33 b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g(Readline)1110 1141 y(v)-5 b(ariables)32 b(and)f(v)-5 b(alues.)45 b(The)32 b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i(`)p Fs(=)p Ft(',)1110 1250 y(`)p Fs(==)p Ft(',)49 b(and)44 b(`)p Fs(!=)p Ft('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g (b)s(e)g(separated)g(from)g(the)1110 1360 y(comparison)25 b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s (e)f(separated)1110 1469 y(from)33 b(the)h(v)-5 b(alue)35 b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52 b(Both)35 b(string)1110 1579 y(and)i(b)s(o)s(olean)g(v)-5 b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39 b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 1689 y(tested)46 b(against)g(the)f(v)-5 b(alues)46 b Fj(on)f Ft(and)f Fj(o\013)p Ft(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110 1798 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Fs(mode=emacs)e Ft(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 1933 y Fs($if)47 b(editing-mode)d(==)k(emacs)1350 2042 y(set)f (show-mode-in-prompt)42 b(on)1350 2152 y($endif)150 2311 y($endif)192 b Ft(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous) g(example,)h(terminates)g(an)g Fs($if)e Ft(command.)150 2471 y Fs($else)240 b Ft(Commands)29 b(in)h(this)h(branc)m(h)e(of)i (the)f Fs($if)g Ft(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g (fails.)150 2630 y Fs($include)96 b Ft(This)43 b(directiv)m(e)i(tak)m (es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g (commands)630 2740 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e (from)630 2849 y Fs(/etc/inputrc)p Ft(:)870 2984 y Fs($include)46 b(/etc/inputrc)150 3183 y Fi(1.3.3)63 b(Sample)41 b(Init)g(File)150 3330 y Ft(Here)27 b(is)f(an)h(example)g(of)f(an)h Fj(inputrc)k Ft(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150 3440 y(conditional)j(syn)m (tax.)p eop end %%Page: 14 18 TeXDict begin 14 17 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(14)390 408 y Fs(#)47 b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h (editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g (re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390 956 y(#)g(Lines)g(beginning)e(with)i('#')g(are)g(comments.)390 1066 y(#)390 1176 y(#)g(First,)g(include)e(any)i(system-wide)e (bindings)h(and)g(variable)390 1285 y(#)h(assignments)e(from)i (/etc/Inputrc)390 1395 y($include)f(/etc/Inputrc)390 1614 y(#)390 1724 y(#)h(Set)g(various)f(bindings)g(for)h(emacs)f(mode.) 390 1943 y(set)h(editing-mode)d(emacs)390 2162 y($if)j(mode=emacs)390 2381 y(Meta-Control-h:)91 b(backward-kill-word)43 b(Text)k(after)f(the) h(function)f(name)g(is)h(ignored)p 3970 2401 42 76 v 390 2600 a(#)390 2710 y(#)g(Arrow)g(keys)f(in)i(keypad)e(mode)390 2819 y(#)390 2929 y(#"\\M-OD":)379 b(backward-char)390 3039 y(#"\\M-OC":)g(forward-char)390 3148 y(#"\\M-OA":)g (previous-history)390 3258 y(#"\\M-OB":)g(next-history)390 3367 y(#)390 3477 y(#)47 b(Arrow)g(keys)f(in)i(ANSI)e(mode)390 3587 y(#)390 3696 y("\\M-[D":)380 b(backward-char)390 3806 y("\\M-[C":)g(forward-char)390 3915 y("\\M-[A":)g (previous-history)390 4025 y("\\M-[B":)g(next-history)390 4134 y(#)390 4244 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode) 390 4354 y(#)390 4463 y(#"\\M-\\C-OD":)331 b(backward-char)390 4573 y(#"\\M-\\C-OC":)g(forward-char)390 4682 y(#"\\M-\\C-OA":)g (previous-history)390 4792 y(#"\\M-\\C-OB":)g(next-history)390 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode) 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end %%Page: 15 19 TeXDict begin 15 18 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(15)390 299 y Fs(#"\\M-\\C-[A":)331 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390 628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066 y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the) g(default.)390 1176 y(TAB:)g(complete)390 1395 y(#)g(Macros)g(that)f (are)h(convenient)e(for)i(shell)f(interaction)390 1504 y($if)h(Bash)390 1614 y(#)g(edit)g(the)g(path)390 1724 y("\\C-xp":)f("PATH=${PATH}\\e\\C-e\\C-a)o(\\ef)o(\\C-f)o(")390 1833 y(#)h(prepare)f(to)h(type)g(a)h(quoted)e(word)g(--)390 1943 y(#)h(insert)g(open)f(and)h(close)f(double)h(quotes)390 2052 y(#)g(and)g(move)g(to)g(just)g(after)f(the)h(open)g(quote)390 2162 y("\\C-x\\"":)e("\\"\\"\\C-b")390 2271 y(#)i(insert)g(a)g (backslash)e(\(testing)h(backslash)f(escapes)390 2381 y(#)i(in)h(sequences)d(and)i(macros\))390 2491 y("\\C-x\\\\":)e("\\\\") 390 2600 y(#)i(Quote)g(the)g(current)f(or)h(previous)e(word)390 2710 y("\\C-xq":)h("\\eb\\"\\ef\\"")390 2819 y(#)h(Add)g(a)h(binding)e (to)h(refresh)f(the)h(line,)f(which)g(is)h(unbound)390 2929 y("\\C-xr":)f(redraw-current-line)390 3039 y(#)h(Edit)g(variable)f (on)h(current)f(line.)390 3148 y("\\M-\\C-v":)f ("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-)o(a\\C-)o(y=")390 3258 y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h (available)390 3587 y(set)f(bell-style)e(visible)390 3806 y(#)i(don't)g(strip)f(characters)f(to)i(7)h(bits)e(when)h(reading) 390 3915 y(set)g(input-meta)e(on)390 4134 y(#)i(allow)g(iso-latin1)e (characters)g(to)i(be)g(inserted)f(rather)390 4244 y(#)h(than)g (converted)e(to)j(prefix-meta)c(sequences)390 4354 y(set)j (convert-meta)d(off)390 4573 y(#)j(display)f(characters)f(with)i(the)g (eighth)f(bit)h(set)g(directly)390 4682 y(#)g(rather)g(than)f(as)h (meta-prefixed)e(characters)390 4792 y(set)i(output-meta)e(on)390 5011 y(#)i(if)h(there)e(are)h(more)g(than)f(150)h(possible)f (completions)e(for)390 5121 y(#)j(a)h(word,)e(ask)h(the)g(user)g(if)g (he)g(wants)f(to)i(see)f(all)f(of)i(them)390 5230 y(set)f (completion-query-items)42 b(150)p eop end %%Page: 16 20 TeXDict begin 16 19 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(16)390 299 y Fs(#)47 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 847 y($endif)150 1089 y Fr(1.4)68 b(Bindable)45 b(Readline)i(Commands) 150 1248 y Ft(This)25 b(section)i(describ)s(es)d(Readline)j(commands)e (that)h(ma)m(y)g(b)s(e)f(b)s(ound)f(to)i(k)m(ey)h(sequences.)39 b(Command)150 1358 y(names)30 b(without)h(an)f(accompan)m(ying)i(k)m (ey)f(sequence)g(are)g(un)m(b)s(ound)c(b)m(y)k(default.)275 1493 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fj(p)s(oin)m(t)h Ft(refers)e(to)h(the)f(curren)m(t)g(cursor)g(p)s(osition,)h(and)f Fj(mark)31 b Ft(refers)150 1603 y(to)40 b(a)f(cursor)f(p)s(osition)h (sa)m(v)m(ed)h(b)m(y)f(the)g Fs(set-mark)d Ft(command.)66 b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f(p)s(oin)m(t)g(and)150 1713 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f Fj(region)p Ft(.)150 1913 y Fi(1.4.1)63 b(Commands)42 b(F)-10 b(or)41 b(Mo)m(ving)150 2085 y Fs(beginning-of-line)26 b(\(C-a\))630 2195 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(curren)m(t)g (line.)150 2355 y Fs(end-of-line)d(\(C-e\))630 2464 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 2625 y Fs(forward-char)c(\(C-f\))630 2734 y Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(c)m(haracter.)150 2895 y Fs(backward-char)c(\(C-b\)) 630 3004 y Ft(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 3165 y Fs(forward-word)d(\(M-f\))630 3274 y Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41 b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630 3384 y(digits.)150 3544 y Fs(backward-word)27 b(\(M-b\))630 3654 y Ft(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g (curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34 b(are)g(comp)s(osed)630 3763 y(of)d(letters)g(and)f(digits.)150 3923 y Fs(previous-screen-line)25 b(\(\))630 4033 y Ft(A)m(ttempt)41 b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e(to)h(the)f(same)h(ph)m(ysical)g (screen)f(column)g(on)g(the)g(previous)630 4143 y(ph)m(ysical)26 b(screen)f(line.)39 b(This)24 b(will)i(not)f(ha)m(v)m(e)h(the)f (desired)g(e\013ect)h(if)f(the)h(curren)m(t)e(Readline)630 4252 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d(more)i(than)f(one)g(ph)m (ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f(not)h(greater)g(than)630 4362 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i(screen)f(width.) 150 4522 y Fs(next-screen-line)c(\(\))630 4632 y Ft(A)m(ttempt)g(to)f (mo)m(v)m(e)i(p)s(oin)m(t)d(to)i(the)e(same)i(ph)m(ysical)f(screen)g (column)f(on)h(the)f(next)h(ph)m(ysical)630 4741 y(screen)e(line.)39 b(This)23 b(will)g(not)h(ha)m(v)m(e)h(the)e(desired)g(e\013ect)i(if)e (the)g(curren)m(t)h(Readline)g(line)f(do)s(es)630 4851 y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m(ysical)h(line)g(or)f (if)g(the)h(length)f(of)h(the)f(curren)m(t)g(Readline)630 4960 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g(of)f(the)h (prompt)e(plus)h(the)g(screen)h(width.)150 5121 y Fs(clear-screen)c (\(C-l\))630 5230 y Ft(Clear)g(the)g(screen)f(and)h(redra)m(w)f(the)h (curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)g(line)g(at)g(the)g (top)630 5340 y(of)k(the)f(screen.)p eop end %%Page: 17 21 TeXDict begin 17 20 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fs (redraw-current-line)25 b(\(\))630 408 y Ft(Refresh)30 b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s (ound.)150 596 y Fi(1.4.2)63 b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150 761 y Fs(accept-line)27 b(\(Newline)h(or)i(Return\))630 871 y Ft(Accept)36 b(the)g(line)f (regardless)h(of)f(where)g(the)g(cursor)g(is.)55 b(If)34 b(this)h(line)h(is)f(non-empt)m(y)-8 b(,)37 b(it)630 981 y(ma)m(y)32 b(b)s(e)g(added)f(to)h(the)g(history)g(list)h(for)e (future)g(recall)j(with)d Fs(add_history\(\))p Ft(.)42 b(If)31 b(this)630 1090 y(line)g(is)f(a)h(mo)s(di\014ed)e(history)h (line,)h(the)g(history)f(line)h(is)f(restored)h(to)g(its)g(original)g (state.)150 1237 y Fs(previous-history)26 b(\(C-p\))630 1347 y Ft(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g (fetc)m(hing)g(the)g(previous)f(command.)150 1494 y Fs(next-history)d (\(C-n\))630 1604 y Ft(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i (history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150 1751 y Fs(beginning-of-history)25 b(\(M-<\))630 1861 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8 b(.)150 2008 y Fs(end-of-history)26 b(\(M->\))630 2117 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8 b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150 2265 y Fs(reverse-search-history)24 b(\(C-r\))630 2374 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g (line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630 2484 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 b(is)i(an)f(incremen)m (tal)i(searc)m(h.)150 2631 y Fs(forward-search-history)24 b(\(C-s\))630 2741 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h (the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) 630 2850 y(history)30 b(as)h(necessary)-8 b(.)41 b(This)30 b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 2998 y Fs (non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 b(\(M-p\))630 3107 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g (the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g (his-)630 3217 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m (tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630 3326 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m (ywhere)g(in)f(a)h(history)f(line.)150 3474 y Fs (non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 b(\(M-n\))630 3583 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h (the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) 630 3693 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m (tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630 3802 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an) m(ywhere)g(in)f(a)h(history)f(line.)150 3950 y Fs (history-search-forward)24 b(\(\))630 4059 y Ft(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g(the)h(string)f(of)h(c)m (haracters)h(b)s(et)m(w)m(een)f(the)630 4169 y(start)36 b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630 4278 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 b(By)33 b(default,)g(this)630 4388 y(command)d(is)h(un)m(b)s(ound.)150 4535 y Fs(history-search-backward)24 b(\(\))630 4645 y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g (the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630 4754 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.) 58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630 4864 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 b(By)33 b(default,)g(this)630 4974 y(command)d(is)h(un)m(b)s(ound.)150 5121 y Fs(history-substring-search)o(-for)o(ward)24 b(\(\))630 5230 y Ft(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g (the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f(the)630 5340 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m (t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere) p eop end %%Page: 18 22 TeXDict begin 18 21 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(18)630 299 y(in)32 b(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h (searc)m(h.)47 b(By)33 b(default,)h(this)e(command)630 408 y(is)e(un)m(b)s(ound.)150 573 y Fs(history-substring-search)o(-bac) o(kwar)o(d)24 b(\(\))630 683 y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g (through)f(the)h(history)g(for)g(the)f(string)h(of)g(c)m(haracters)h(b) s(et)m(w)m(een)g(the)630 793 y(start)29 b(of)g(the)g(curren)m(t)g(line) g(and)f(the)h(p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g (matc)m(h)h(an)m(ywhere)630 902 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e(command)630 1012 y(is)e(un)m(b)s(ound.)150 1177 y Fs(yank-nth-arg)d(\(M-C-y\))630 1286 y Ft(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h (\(usually)g(the)g(second)g(w)m(ord)630 1396 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32 b(an)g(argumen)m(t)g Fj(n)p Ft(,)g(insert)g(the)g Fj(n)p Ft(th)f(w)m(ord)g(from)630 1506 y(the)k(previous)f(command)h(\(the)g(w) m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630 1615 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f Fj(n)p Ft(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630 1725 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fj(n)e Ft(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630 1834 y(the)e(`)p Fs(!)p Fl(n)p Ft(')f(history)g(expansion)g(had)g(b)s (een)g(sp)s(eci\014ed.)150 1999 y Fs(yank-last-arg)d(\(M-.)i(or)h (M-_\))630 2109 y Ft(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous) f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 2218 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m (t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Fs(yank-nth-arg)p Ft(.)630 2328 y(Successiv)m(e)26 b(calls)g(to)f Fs(yank-last-arg)c Ft(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i (inserting)630 2438 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i (of)f(eac)m(h)h(line)630 2547 y(in)36 b(turn.)58 b(An)m(y)36 b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g (calls)h(determines)630 2657 y(the)d(direction)g(to)h(mo)m(v)m(e)g (through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e (switc)m(hes)h(the)630 2766 y(direction)23 b(through)g(the)g(history)f (\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g (facilities)630 2876 y(are)28 b(used)f(to)h(extract)h(the)f(last)g (argumen)m(t,)h(as)e(if)h(the)g(`)p Fs(!$)p Ft(')f(history)g(expansion) h(had)f(b)s(een)630 2986 y(sp)s(eci\014ed.)150 3190 y Fi(1.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 b(ext)150 3365 y Fl(end-of-file)27 b Fs(\(usually)h(C-d\))630 3475 y Ft(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g (for)f(example,)i(b)m(y)e Fs(stty)p Ft(.)39 b(If)25 b(this)h(c)m (harac-)630 3584 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m (haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s (eginning)630 3694 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g (it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p Ft(.)150 3859 y Fs(delete-char)e(\(C-d\))630 3968 y Ft(Delete)35 b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g (is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 4078 y(as)e(the)f(tt)m(y)i Fm(eof)d Ft(c)m(haracter,)j(as)f Fl(C-d)e Ft(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g (e\013ects.)150 4243 y Fs(backward-delete-char)25 b(\(Rubout\))630 4353 y Ft(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 4462 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 4627 y Fs(forward-backward-delete-)o(char)24 b(\(\))630 4737 y Ft(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h (unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630 4846 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s (ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 4956 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 5121 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 5230 y Ft(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h (v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630 5340 y(sequences)d(lik)m(e)g Fl(C-q)p Ft(,)f(for)g(example.)p eop end %%Page: 19 23 TeXDict begin 19 22 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fs(tab-insert)28 b(\(M-TAB\))630 408 y Ft(Insert)i(a)h(tab)f(c)m(haracter.)150 573 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 683 y Ft(Insert)g(y)m(ourself.)150 848 y Fs(bracketed-paste-begin)25 b(\(\))630 957 y Ft(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e (b)s(ound)f(to)i(the)g Fs(")p Ft(brac)m(k)m(eted)h(paste)p Fs(")f Ft(escap)s(e)h(sequence)630 1067 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i (assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630 1177 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g (single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630 1286 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630 1396 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j Fs(self-insert)c Ft(instead)j(of)h(executing)g(an)m(y)f(editing)630 1505 y(commands.)150 1670 y Fs(transpose-chars)26 b(\(C-t\))630 1780 y Ft(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)g(cursor)f (forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g(cursor,)630 1889 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)g(of)h (the)630 1999 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h(last)h (t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 b(Negativ)m(e)25 b(argumen)m(ts)630 2109 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150 2273 y Fs(transpose-words)c(\(M-t\))630 2383 y Ft(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f (after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630 2493 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m (t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g (the)630 2602 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150 2767 y Fs(upcase-word)c(\(M-u\))630 2877 y Ft(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630 2986 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h (the)e(cursor.)150 3151 y Fs(downcase-word)d(\(M-l\))630 3261 y Ft(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i (w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m (ercase)630 3370 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m (v)m(e)i(the)f(cursor.)150 3535 y Fs(capitalize-word)26 b(\(M-c\))630 3645 y Ft(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m (wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h (capitalize)630 3754 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f (mo)m(v)m(e)i(the)f(cursor.)150 3919 y Fs(overwrite-mode)26 b(\(\))630 4029 y Ft(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) h(switc)m(hes)630 4138 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m (t,)i(switc)m(hes)e(to)630 4248 y(insert)30 b(mo)s(de.)41 b(This)30 b(command)h(a\013ects)h(only)e Fs(emacs)f Ft(mo)s(de;)i Fs(vi)f Ft(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 4357 y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f Fs(readline\(\))c Ft(starts)k(in)f(insert)g(mo)s(de.)630 4495 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s (ound)c(to)j Fs(self-insert)c Ft(replace)k(the)g(text)g(at)630 4604 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h (the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 4714 y Fs(backward-delete-char)25 b Ft(replace)31 b(the)g(c)m(haracter) h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 4851 y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150 5056 y Fi(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 5230 y Fs(kill-line)28 b(\(C-k\))630 5340 y Ft(Kill)j(the)f(text)i (from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)p eop end %%Page: 20 24 TeXDict begin 20 23 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(20)150 299 y Fs (backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 408 y Ft(Kill)h(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s (eginning)g(of)h(the)f(curren)m(t)g(line.)150 566 y Fs (unix-line-discard)c(\(C-u\))630 675 y Ft(Kill)31 b(bac)m(kw)m(ard)g (from)e(the)i(cursor)f(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t) g(line.)150 832 y Fs(kill-whole-line)c(\(\))630 942 y Ft(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f (matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630 1052 y(this)30 b(is)h(un)m(b)s(ound.)150 1209 y Fs(kill-word)d(\(M-d\)) 630 1318 y Ft(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f (curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h (the)g(end)630 1428 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Fs(forward-word)p Ft(.)150 1585 y Fs(backward-kill-word)25 b(\(M-DEL\))630 1695 y Ft(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g Fs(backward-word)p Ft(.)150 1852 y Fs(unix-word-rubout)d(\(C-w\))630 1961 y Ft(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m(t,)i(using)f (white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 b(.)43 b(The)31 b(killed)630 2071 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f (kill-ring.)150 2228 y Fs(unix-filename-rubout)25 b(\(\))630 2338 y Ft(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e (white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630 2447 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g (sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 2605 y Fs (delete-horizontal-space)24 b(\(\))630 2714 y Ft(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41 b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 2871 y Fs(kill-region)d(\(\))630 2981 y Ft(Kill)k(the)f(text)i(in)e(the)g (curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un) m(b)s(ound.)150 3138 y Fs(copy-region-as-kill)25 b(\(\))630 3248 y Ft(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f (kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f (a)m(w)m(a)m(y)-8 b(.)630 3357 y(By)31 b(default,)f(this)h(command)f (is)g(un)m(b)s(ound.)150 3514 y Fs(copy-backward-word)25 b(\(\))630 3624 y Ft(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m (t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries) f(are)i(the)630 3734 y(same)31 b(as)f Fs(backward-word)p Ft(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 3891 y Fs(copy-forward-word)26 b(\(\))630 4000 y Ft(Cop)m(y)31 b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h (bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630 4110 y(same)f(as)f Fs(forward-word)p Ft(.)38 b(By)30 b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 4267 y Fs(yank)f(\(C-y\))630 4377 y Ft(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h (p)s(oin)m(t.)150 4534 y Fs(yank-pop)d(\(M-y\))630 4643 y Ft(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 4753 y(command)30 b(is)h Fs(yank)e Ft(or)h Fs(yank-pop)p Ft(.)150 4950 y Fi(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m (ts)150 5121 y Fs(digit-argument)26 b(\()p Fl(M-0)p Fs(,)j Fl(M-1)p Fs(,)h(...)f Fl(M--)p Fs(\))630 5230 y Ft(Add)d(this)h(digit)g (to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f (new)f(argumen)m(t.)630 5340 y Fl(M--)j Ft(starts)i(a)g(negativ)m(e)i (argumen)m(t.)p eop end %%Page: 21 25 TeXDict begin 21 24 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fs (universal-argument)25 b(\(\))630 408 y Ft(This)g(is)g(another)h(w)m(a) m(y)g(to)h(sp)s(ecify)e(an)g(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m(y)f(one)630 518 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h(leading)h(min)m(us) e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 628 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)m(y)f (digits,)i(executing)f Fs(universal-argument)630 737 y Ft(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h (otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630 847 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)d (a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630 956 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f (the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630 1066 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h (one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630 1176 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h (second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 1285 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g (not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 1498 y Fi(1.4.6)63 b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42 b(Y)-10 b(ou)150 1676 y Fs(complete)28 b(\(TAB\))630 1785 y Ft(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g (b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630 1895 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42 b(The)30 b(default)h(is)f(\014lename)h(completion.)150 2068 y Fs(possible-completions)25 b(\(M-?\))630 2177 y Ft(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s (efore)e(p)s(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 2287 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i (columns)f(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 b(alue)33 b(of)630 2396 y Fs(completion-display-width)o Ft(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)38 b Fs(COLUMNS)p Ft(,)630 2506 y(or)30 b(the)h(screen)f (width,)g(in)g(that)h(order.)150 2678 y Fs(insert-completions)25 b(\(M-*\))630 2788 y Ft(Insert)30 b(all)h(completions)h(of)f(the)g (text)g(b)s(efore)f(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s (een)e(generated)630 2898 y(b)m(y)g Fs(possible-completions)p Ft(.)150 3070 y Fs(menu-complete)d(\(\))630 3180 y Ft(Similar)d(to)g Fs(complete)p Ft(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f (completed)i(with)e(a)i(single)f(matc)m(h)630 3289 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39 b(execution)g(of)f Fs(menu-complete)630 3399 y Ft(steps)i(through)g (the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i (matc)m(h)f(in)f(turn.)630 3508 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g (of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5 b(ject)36 b(to)i(the)f(setting)630 3618 y(of)f Fs(bell-style)p Ft(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57 b(An)36 b(argumen)m(t)h(of)f Fj(n)f Ft(mo)m(v)m(es)i Fj(n)630 3728 y Ft(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e (matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f (used)g(to)630 3837 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g (list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s (ound)e(to)630 3947 y Fs(TAB)p Ft(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m (y)i(default.)150 4119 y Fs(menu-complete-backward)24 b(\(\))630 4229 y Ft(Iden)m(tical)36 b(to)g Fs(menu-complete)p Ft(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g (p)s(ossible)630 4338 y(completions,)d(as)e(if)h Fs(menu-complete)26 b Ft(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150 4511 y Fs(delete-char-or-list)25 b(\(\))630 4620 y Ft(Deletes)41 b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s (eginning)e(or)h(end)f(of)h(the)630 4730 y(line)50 b(\(lik)m(e)h Fs(delete-char)p Ft(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,) 55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 4840 y Fs(possible-completions)p Ft(.)35 b(This)30 b(command)g(is)g(un)m(b)s (ound)e(b)m(y)i(default.)150 5052 y Fi(1.4.7)63 b(Keyb)s(oard)41 b(Macros)150 5230 y Fs(start-kbd-macro)26 b(\(C-x)j(\(\))630 5340 y Ft(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m (to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)p eop end %%Page: 22 26 TeXDict begin 22 25 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fs(end-kbd-macro)27 b(\(C-x)i(\)\))630 408 y Ft(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t) m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f (sa)m(v)m(e)i(the)630 518 y(de\014nition.)150 671 y Fs (call-last-kbd-macro)c(\(C-x)k(e\))630 780 y Ft(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h(de\014ned,)f(b)m(y)h(making)f (the)g(c)m(haracters)i(in)e(the)630 890 y(macro)c(app)s(ear)f(as)g(if)h (t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s(oard.)150 1042 y Fs(print-last-kbd-macro)25 b(\(\))630 1152 y Ft(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)e(in)i(a)f(format)h (suitable)g(for)f(the)h Fj(inputrc)k Ft(\014le.)150 1344 y Fi(1.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150 1513 y Fs(re-read-init-file)26 b(\(C-x)j(C-r\))630 1622 y Ft(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g Fj(inputrc)27 b Ft(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d (or)i(v)-5 b(ariable)630 1732 y(assignmen)m(ts)31 b(found)e(there.)150 1885 y Fs(abort)g(\(C-g\))630 1994 y Ft(Ab)s(ort)d(the)h(curren)m(t)f (editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5 b(ject)26 b(to)i(the)630 2104 y(setting)j(of)g Fs(bell-style)p Ft(\).)150 2256 y Fs(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p Fl(x)p Fs(,)g(...)o(\))630 2366 y Ft(If)35 b(the)g(meta\014ed)g(c)m (haracter)i Fj(x)k Ft(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g (that)g(is)g(b)s(ound)e(to)630 2476 y(the)g(corresp)s(onding)f (meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32 b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 2585 y Fj(x)37 b Ft(is)30 b(already)h(lo)m(w)m(er)h(case.)150 2738 y Fs(prefix-meta)27 b(\(ESC\))630 2847 y Ft(Metafy)39 b(the)e(next)h(c)m (haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f (without)g(a)h(meta)g(k)m(ey)-8 b(.)630 2957 y(T)m(yping)30 b(`)p Fs(ESC)g(f)p Ft(')g(is)h(equiv)-5 b(alen)m(t)31 b(to)g(t)m(yping)g Fl(M-f)p Ft(.)150 3109 y Fs(undo)e(\(C-_)g(or)h(C-x) g(C-u\))630 3219 y Ft(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s (ered)f(for)g(eac)m(h)i(line.)150 3372 y Fs(revert-line)27 b(\(M-r\))630 3481 y Ft(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f (line.)49 b(This)32 b(is)h(lik)m(e)i(executing)f(the)f Fs(undo)f Ft(command)630 3591 y(enough)e(times)h(to)g(get)h(bac)m(k)f (to)g(the)f(b)s(eginning.)150 3743 y Fs(tilde-expand)d(\(M-~\))630 3853 y Ft(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m (ord.)150 4006 y Fs(set-mark)d(\(C-@\))630 4115 y Ft(Set)33 b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g (argumen)m(t)g(is)g(supplied,)f(the)h(mark)g(is)f(set)630 4225 y(to)f(that)g(p)s(osition.)150 4377 y Fs(exchange-point-and-mark) 24 b(\(C-x)29 b(C-x\))630 4487 y Ft(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with) g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f (set)h(to)f(the)h(sa)m(v)m(ed)630 4596 y(p)s(osition,)f(and)e(the)i (old)g(cursor)e(p)s(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 4749 y Fs(character-search)26 b(\(C-]\))630 4859 y Ft(A)f(c)m(haracter) h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g (o)s(ccurrence)g(of)g(that)g(c)m(haracter.)630 4968 y(A)30 b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s (ccurrences.)150 5121 y Fs(character-search-backwar)o(d)24 b(\(M-C-]\))630 5230 y Ft(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s (oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of) g(that)630 5340 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f (searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)p eop end %%Page: 23 27 TeXDict begin 23 26 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fs(skip-csi-sequence) 26 b(\(\))630 408 y Ft(Read)i(enough)f(c)m(haracters)h(to)g(consume)f (a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f(as)g(those)h(de\014ned)630 518 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m(trol)g(Sequence) 630 628 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Fs("\\)p Ft(e[)p Fs(")p Ft(,)g(k)m(eys)f(pro-)630 737 y(ducing)31 b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e (explicitly)j(b)s(ound)c(to)i(a)h(readline)630 847 y(command,)f (instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f (editing)h(bu\013er.)44 b(This)31 b(is)630 956 y(un)m(b)s(ound)d(b)m(y) i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150 1116 y Fs(insert-comment)26 b(\(M-#\))630 1225 y Ft(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36 b(of)g(the)g Fs(comment-begin)c Ft(v)-5 b(ariable)36 b(is)g(in-)630 1335 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f (curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g (supplied,)630 1444 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g (line)630 1554 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f Fs(comment-begin)p Ft(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 1664 y(c)m(haracters)42 b(in)d Fs(comment-begin)e Ft(are)j(deleted)h(from)f (the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 1773 y(either)31 b(case,)h(the)e(line)h(is)f(accepted)i(as)f(if)f(a)h (newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 1932 y Fs(dump-functions)d (\(\))630 2042 y Ft(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g (their)g(k)m(ey)h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630 2151 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h (output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 2261 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fj(inputrc)k Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k (default.)150 2420 y Fs(dump-variables)26 b(\(\))630 2530 y Ft(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h (output)f(stream.)630 2639 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is) g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a) m(y)g(that)630 2749 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fj(inputrc)k Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c (b)m(y)k(default.)150 2908 y Fs(dump-macros)c(\(\))630 3018 y Ft(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences) f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 3127 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e (supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630 3237 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e Fj(inputrc)35 b Ft(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) d(b)m(y)630 3346 y(default.)150 3506 y Fs(emacs-editing-mode)e(\(C-e\)) 630 3615 y Ft(When)30 b(in)g Fs(vi)g Ft(command)g(mo)s(de,)g(this)h (causes)f(a)h(switc)m(h)g(to)g Fs(emacs)e Ft(editing)i(mo)s(de.)150 3774 y Fs(vi-editing-mode)26 b(\(M-C-j\))630 3884 y Ft(When)k(in)g Fs(emacs)f Ft(editing)i(mo)s(de,)f(this)h(causes)f(a)h(switc)m(h)g(to)g Fs(vi)f Ft(editing)h(mo)s(de.)150 4124 y Fr(1.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 4284 y Ft(While)32 b(the)g(Readline)g(library)f(do)s (es)g(not)h(ha)m(v)m(e)h(a)f(full)f(set)h(of)g Fs(vi)f Ft(editing)h(functions,)f(it)h(do)s(es)g(con)m(tain)150 4393 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52 b(The)34 b(Readline)g Fs(vi)g Ft(mo)s(de)f(b)s(eha)m(v)m(es)i(as)f(sp)s (eci\014ed)f(in)150 4503 y(the)e Fm(posix)e Ft(standard.)275 4637 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m (een)d Fs(emacs)f Ft(and)g Fs(vi)h Ft(editing)g(mo)s(des,)g(use)g(the)g (command)150 4747 y Fl(M-C-j)36 b Ft(\(b)s(ound)h(to)h (emacs-editing-mo)s(de)i(when)d(in)g Fs(vi)h Ft(mo)s(de)f(and)g(to)i (vi-editing-mo)s(de)g(in)e Fs(emacs)150 4857 y Ft(mo)s(de\).)k(The)30 b(Readline)h(default)f(is)g Fs(emacs)f Ft(mo)s(de.)275 4991 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fs(vi)f Ft(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s (de,)g(as)h(if)f(y)m(ou)150 5101 y(had)f(t)m(yp)s(ed)g(an)g(`)p Fs(i)p Ft('.)41 b(Pressing)29 b Fs(ESC)f Ft(switc)m(hes)i(y)m(ou)g(in)m (to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150 5210 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f Fs(vi)g Ft(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g (history)f(lines)h(with)150 5320 y(`)p Fs(k)p Ft(')d(and)e(subsequen)m (t)h(lines)h(with)f(`)p Fs(j)p Ft(',)g(and)g(so)h(forth.)p eop end %%Page: 24 28 TeXDict begin 24 27 bop 3659 -116 a Ft(24)150 299 y Fp(2)80 b(Programming)54 b(with)f(GNU)h(Readline)150 543 y Ft(This)24 b(c)m(hapter)i(describ)s(es)e(the)h(in)m(terface)h(b)s(et)m(w)m(een)g (the)f Fm(gnu)f Ft(Readline)i(Library)e(and)g(other)h(programs.)150 652 y(If)k(y)m(ou)g(are)g(a)h(programmer,)f(and)f(y)m(ou)i(wish)e(to)i (include)f(the)g(features)g(found)f(in)h Fm(gnu)g Ft(Readline)g(suc)m (h)150 762 y(as)c(completion,)j(line)d(editing,)i(and)d(in)m(teractiv)m (e)k(history)d(manipulation)g(in)f(y)m(our)h(o)m(wn)g(programs,)h(this) 150 871 y(section)32 b(is)e(for)g(y)m(ou.)150 1117 y Fr(2.1)68 b(Basic)45 b(Beha)l(vior)150 1276 y Ft(Man)m(y)39 b(programs)e(pro)m(vide)h(a)h(command)f(line)g(in)m(terface,)k(suc)m(h) 37 b(as)i Fs(mail)p Ft(,)g Fs(ftp)p Ft(,)g(and)e Fs(sh)p Ft(.)63 b(F)-8 b(or)39 b(suc)m(h)150 1386 y(programs,)29 b(the)f(default)h(b)s(eha)m(viour)f(of)h(Readline)g(is)g(su\016cien)m (t.)40 b(This)28 b(section)i(describ)s(es)d(ho)m(w)i(to)g(use)150 1496 y(Readline)35 b(in)f(the)h(simplest)f(w)m(a)m(y)h(p)s(ossible,)h (p)s(erhaps)c(to)j(replace)h(calls)f(in)f(y)m(our)h(co)s(de)f(to)h Fs(gets\(\))e Ft(or)150 1605 y Fs(fgets\(\))p Ft(.)275 1743 y(The)f(function)g Fs(readline\(\))e Ft(prin)m(ts)i(a)g(prompt)g Fj(prompt)i Ft(and)e(then)g(reads)g(and)g(returns)f(a)i(single)150 1852 y(line)g(of)g(text)h(from)e(the)h(user.)47 b(If)32 b Fj(prompt)i Ft(is)e Fs(NULL)g Ft(or)h(the)f(empt)m(y)i(string,)f(no)g (prompt)e(is)i(displa)m(y)m(ed.)150 1962 y(The)k(line)g Fs(readline)e Ft(returns)h(is)h(allo)s(cated)i(with)e Fs(malloc\(\))p Ft(;)h(the)f(caller)i(should)d Fs(free\(\))f Ft(the)j(line)150 2072 y(when)29 b(it)i(has)f(\014nished)f(with)h(it.) 42 b(The)29 b(declaration)j(for)f Fs(readline)d Ft(in)i(ANSI)g(C)g(is) 390 2209 y Fs(char)47 b(*readline)e(\(const)h(char)h(*)p Fl(prompt)p Fs(\);)150 2347 y Ft(So,)31 b(one)f(migh)m(t)h(sa)m(y)390 2485 y Fs(char)47 b(*line)f(=)h(readline)f(\("Enter)g(a)h(line:)g("\);) 150 2623 y Ft(in)23 b(order)f(to)h(read)g(a)g(line)h(of)f(text)h(from)e (the)h(user.)38 b(The)22 b(line)h(returned)f(has)g(the)h(\014nal)g (newline)g(remo)m(v)m(ed,)150 2732 y(so)31 b(only)f(the)h(text)g (remains.)275 2870 y(If)40 b Fs(readline)e Ft(encoun)m(ters)j(an)f Fs(EOF)f Ft(while)i(reading)f(the)h(line,)j(and)39 b(the)i(line)g(is)f (empt)m(y)h(at)g(that)150 2979 y(p)s(oin)m(t,)30 b(then)f Fs(\(char)g(*\)NULL)e Ft(is)j(returned.)39 b(Otherwise,)30 b(the)f(line)h(is)f(ended)g(just)g(as)g(if)h(a)f(newline)h(had)150 3089 y(b)s(een)g(t)m(yp)s(ed.)275 3227 y(Readline)22 b(p)s(erforms)e(some)j(expansion)e(on)h(the)g Fj(prompt)h Ft(b)s(efore)f(it)g(is)g(displa)m(y)m(ed)h(on)f(the)g(screen.)38 b(See)150 3336 y(the)27 b(description)g(of)h Fs(rl_expand_prompt)22 b Ft(\(see)28 b(Section)g(2.4.6)h([Redispla)m(y],)g(page)f(37\))g(for)f (additional)150 3446 y(details,)41 b(esp)s(ecially)f(if)e Fj(prompt)i Ft(will)e(con)m(tain)i(c)m(haracters)f(that)g(do)f(not)h (consume)f(ph)m(ysical)h(screen)150 3556 y(space)31 b(when)e(displa)m (y)m(ed.)275 3693 y(If)d(y)m(ou)h(w)m(an)m(t)h(the)f(user)g(to)g(b)s(e) g(able)g(to)h(get)g(at)g(the)f(line)g(later,)i(\(with)e Fs(C-p)f Ft(for)h(example\),)i(y)m(ou)e(m)m(ust)150 3803 y(call)32 b Fs(add_history\(\))26 b Ft(to)32 b(sa)m(v)m(e)f(the)g(line) g(a)m(w)m(a)m(y)h(in)e(a)h Fj(history)38 b Ft(list)31 b(of)g(suc)m(h)f(lines.)390 3941 y Fs(add_history)45 b(\(line\);)150 4078 y Ft(F)-8 b(or)31 b(full)f(details)i(on)e(the)g (GNU)h(History)g(Library)-8 b(,)31 b(see)g(the)f(asso)s(ciated)i(man)m (ual.)275 4216 y(It)f(is)g(preferable)g(to)i(a)m(v)m(oid)f(sa)m(ving)h (empt)m(y)e(lines)h(on)f(the)h(history)f(list,)h(since)g(users)e (rarely)i(ha)m(v)m(e)h(a)150 4326 y(burning)28 b(need)h(to)i(reuse)e(a) h(blank)g(line.)40 b(Here)31 b(is)e(a)h(function)g(whic)m(h)f(usefully) g(replaces)i(the)f(standard)150 4435 y Fs(gets\(\))f Ft(library)h(function,)g(and)g(has)g(the)g(adv)-5 b(an)m(tage)33 b(of)d(no)g(static)i(bu\013er)e(to)h(o)m(v)m(er\015o)m(w:)390 4573 y Fs(/*)47 b(A)h(static)e(variable)f(for)i(holding)f(the)h(line.)f (*/)390 4682 y(static)g(char)h(*line_read)e(=)i(\(char)g(*\)NULL;)390 4902 y(/*)g(Read)g(a)g(string,)f(and)h(return)f(a)i(pointer)d(to)j(it.) 533 5011 y(Returns)e(NULL)h(on)g(EOF.)f(*/)390 5121 y(char)h(*)390 5230 y(rl_gets)f(\(\))390 5340 y({)p eop end %%Page: 25 29 TeXDict begin 25 28 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(25)485 299 y Fs(/*)48 b(If)f(the)g(buffer)f(has)h(already)f(been)g(allocated,) 629 408 y(return)g(the)h(memory)f(to)h(the)g(free)f(pool.)h(*/)485 518 y(if)h(\(line_read\))581 628 y({)676 737 y(free)f(\(line_read\);) 676 847 y(line_read)f(=)h(\(char)f(*\)NULL;)581 956 y(})485 1176 y(/*)i(Get)f(a)g(line)g(from)f(the)h(user.)g(*/)485 1285 y(line_read)f(=)h(readline)f(\(""\);)485 1504 y(/*)i(If)f(the)g (line)f(has)h(any)g(text)g(in)g(it,)629 1614 y(save)f(it)h(on)h(the)f (history.)e(*/)485 1724 y(if)j(\(line_read)d(&&)i(*line_read\))581 1833 y(add_history)e(\(line_read\);)485 2052 y(return)i(\(line_read\);) 390 2162 y(})275 2303 y Ft(This)27 b(function)h(giv)m(es)h(the)f(user)g (the)g(default)g(b)s(eha)m(viour)g(of)g Fs(TAB)g Ft(completion:)40 b(completion)30 b(on)e(\014le)150 2412 y(names.)41 b(If)31 b(y)m(ou)g(do)f(not)h(w)m(an)m(t)g(Readline)h(to)f(complete)h(on)f (\014lenames,)g(y)m(ou)g(can)f(c)m(hange)i(the)f(binding)150 2522 y(of)g(the)f Fs(TAB)g Ft(k)m(ey)h(with)f Fs(rl_bind_key\(\))p Ft(.)390 2662 y Fs(int)47 b(rl_bind_key)e(\(int)h Fl(key)p Fs(,)h(rl_command_func_t)c(*)p Fl(function)p Fs(\);)275 2803 y(rl_bind_key\(\))29 b Ft(tak)m(es)35 b(t)m(w)m(o)g(argumen)m(ts:) 47 b Fj(k)m(ey)c Ft(is)33 b(the)h(c)m(haracter)h(that)f(y)m(ou)g(w)m (an)m(t)g(to)g(bind,)g(and)150 2912 y Fj(function)39 b Ft(is)f(the)h(address)f(of)h(the)g(function)g(to)g(call)i(when)c Fj(k)m(ey)48 b Ft(is)39 b(pressed.)65 b(Binding)38 b Fs(TAB)g Ft(to)i Fs(rl_)150 3022 y(insert\(\))c Ft(mak)m(es)k Fs(TAB)e Ft(insert)g(itself.)67 b Fs(rl_bind_key\(\))35 b Ft(returns)j(non-zero)h(if)g Fj(k)m(ey)47 b Ft(is)39 b(not)g(a)g(v)-5 b(alid)150 3132 y(ASCI)s(I)29 b(c)m(haracter)j(co)s (de)e(\(b)s(et)m(w)m(een)i(0)f(and)e(255\).)275 3272 y(Th)m(us,)g(to)i(disable)g(the)f(default)h Fs(TAB)e Ft(b)s(eha)m(vior,)i(the)g(follo)m(wing)g(su\016ces:)390 3413 y Fs(rl_bind_key)45 b(\('\\t',)h(rl_insert\);)275 3554 y Ft(This)25 b(co)s(de)i(should)e(b)s(e)h(executed)h(once)g(at)g (the)g(start)g(of)f(y)m(our)h(program;)g(y)m(ou)g(migh)m(t)g(write)g(a) g(func-)150 3663 y(tion)33 b(called)h Fs(initialize_readline\(\))27 b Ft(whic)m(h)33 b(p)s(erforms)e(this)h(and)h(other)g(desired)f (initializations,)150 3773 y(suc)m(h)e(as)h(installing)g(custom)g (completers)g(\(see)g(Section)h(2.6)f([Custom)f(Completers],)h(page)g (50\).)150 4023 y Fr(2.2)68 b(Custom)45 b(F)-11 b(unctions)150 4182 y Ft(Readline)28 b(pro)m(vides)f(man)m(y)g(functions)g(for)g (manipulating)h(the)f(text)h(of)g(the)f(line,)i(but)d(it)i(isn't)f(p)s (ossible)150 4292 y(to)37 b(an)m(ticipate)i(the)e(needs)f(of)h(all)g (programs.)59 b(This)36 b(section)h(describ)s(es)f(the)h(v)-5 b(arious)36 b(functions)h(and)150 4401 y(v)-5 b(ariables)27 b(de\014ned)e(within)g(the)h(Readline)h(library)f(whic)m(h)g(allo)m(w)h (a)g(user)e(program)h(to)h(add)e(customized)150 4511 y(functionalit)m(y)32 b(to)f(Readline.)275 4651 y(Before)37 b(declaring)g(an)m(y)g(functions)f(that)h(customize)h(Readline's)f(b)s (eha)m(vior,)h(or)f(using)f(an)m(y)h(func-)150 4761 y(tionalit)m(y)48 b(Readline)e(pro)m(vides)f(in)g(other)h(co)s(de,)k(an)45 b(application)i(writer)e(should)g(include)g(the)h(\014le)150 4871 y Fs()28 b Ft(in)33 b(an)m(y)h(\014le)f(that) h(uses)f(Readline's)h(features.)51 b(Since)33 b(some)h(of)g(the)f (de\014-)150 4980 y(nitions)e(in)g Fs(readline.h)d Ft(use)j(the)h Fs(stdio)d Ft(library)-8 b(,)32 b(the)f(\014le)h Fs()c Ft(should)i(b)s(e)h(included)f(b)s(efore)150 5090 y Fs(readline.h)p Ft(.)275 5230 y Fs(readline.h)d Ft(de\014nes)j(a)h(C)f(prepro)s(cessor) g(v)-5 b(ariable)31 b(that)g(should)f(b)s(e)g(treated)h(as)g(an)g(in)m (teger,)h Fs(RL_)150 5340 y(READLINE_VERSION)p Ft(,)20 b(whic)m(h)h(ma)m(y)i(b)s(e)f(used)f(to)i(conditionally)h(compile)f (application)g(co)s(de)f(dep)s(ending)p eop end %%Page: 26 30 TeXDict begin 26 29 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(26)150 299 y(on)35 b(the)g(installed)h(Readline)f(v)m(ersion.)56 b(The)34 b(v)-5 b(alue)35 b(is)h(a)f(hexadecimal)h(enco)s(ding)f(of)g (the)h(ma)5 b(jor)35 b(and)150 408 y(minor)f(v)m(ersion)g(n)m(um)m(b)s (ers)f(of)h(the)h(library)-8 b(,)35 b(of)f(the)h(form)e(0x)p Fj(MMmm)p Ft(.)53 b Fj(MM)45 b Ft(is)34 b(the)g(t)m(w)m(o-digit)j(ma)5 b(jor)150 518 y(v)m(ersion)29 b(n)m(um)m(b)s(er;)g Fj(mm)f Ft(is)h(the)g(t)m(w)m(o-digit)j(minor)c(v)m(ersion)i(n)m(um)m(b)s(er.) 38 b(F)-8 b(or)30 b(Readline)g(4.2,)g(for)f(example,)150 628 y(the)i(v)-5 b(alue)30 b(of)h Fs(RL_READLINE_VERSION)25 b Ft(w)m(ould)30 b(b)s(e)g Fs(0x0402)p Ft(.)150 837 y Fi(2.2.1)63 b(Readline)40 b(T)m(yp)s(edefs)150 984 y Ft(F)-8 b(or)31 b(readabilit)m(y)-8 b(,)33 b(w)m(e)d(declare)i(a)f(n)m (um)m(b)s(er)e(of)h(new)g(ob)5 b(ject)31 b(t)m(yp)s(es,)g(all)g(p)s (oin)m(ters)f(to)i(functions.)275 1128 y(The)j(reason)h(for)f (declaring)h(these)h(new)e(t)m(yp)s(es)g(is)h(to)h(mak)m(e)f(it)g (easier)h(to)f(write)g(co)s(de)g(describing)150 1238 y(p)s(oin)m(ters)30 b(to)h(C)f(functions)g(with)g(appropriately)h (protot)m(yp)s(ed)f(argumen)m(ts)h(and)f(return)f(v)-5 b(alues.)275 1382 y(F)d(or)37 b(instance,)j(sa)m(y)d(w)m(e)g(w)m(an)m (t)h(to)g(declare)f(a)h(v)-5 b(ariable)37 b Fj(func)42 b Ft(as)37 b(a)g(p)s(oin)m(ter)g(to)g(a)h(function)e(whic)m(h)150 1492 y(tak)m(es)27 b(t)m(w)m(o)g Fs(int)e Ft(argumen)m(ts)h(and)f (returns)f(an)i Fs(int)f Ft(\(this)h(is)f(the)h(t)m(yp)s(e)g(of)g(all)h (of)e(the)h(Readline)h(bindable)150 1601 y(functions\).)41 b(Instead)30 b(of)g(the)h(classic)h(C)e(declaration)275 1746 y Fs(int)f(\(*func\)\(\);)150 1890 y Ft(or)h(the)h(ANSI-C)f(st)m (yle)i(declaration)275 2035 y Fs(int)d(\(*func\)\(int,)e(int\);)150 2179 y Ft(w)m(e)k(ma)m(y)g(write)275 2324 y Fs(rl_command_func_t)25 b(*func;)275 2468 y Ft(The)k(full)h(list)i(of)e(function)g(p)s(oin)m (ter)g(t)m(yp)s(es)h(a)m(v)-5 b(ailable)33 b(is)150 2643 y Fs(typedef)28 b(int)i(rl_command_func_t)c(\(int,)i(int\);)150 2752 y(typedef)g(char)i(*rl_compentry_func_t)24 b(\(const)29 b(char)g(*,)h(int\);)150 2862 y(typedef)e(char)i (**rl_completion_func_t)24 b(\(const)29 b(char)g(*,)h(int,)f(int\);)150 2971 y(typedef)f(char)i(*rl_quote_func_t)c(\(char)i(*,)i(int,)f(char)h (*\);)150 3081 y(typedef)e(char)i(*rl_dequote_func_t)25 b(\(char)k(*,)h(int\);)150 3191 y(typedef)e(int)i(rl_compignore_func_t) 25 b(\(char)k(**\);)150 3300 y(typedef)f(void)i(rl_compdisp_func_t)25 b(\(char)k(**,)g(int,)h(int\);)150 3410 y(typedef)e(int)i (rl_hook_func_t)c(\(void\);)150 3519 y(typedef)i(int)i(rl_getc_func_t)c (\(FILE)j(*\);)150 3629 y(typedef)f(int)i(rl_linebuf_func_t)c(\(char)i (*,)i(int\);)150 3738 y(typedef)e(int)i(rl_intfunc_t)d(\(int\);)150 3848 y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)150 3958 y(typedef)h(int)i(rl_icpfunc_t)d(\(char)i(*\);)150 4067 y(typedef)f(int)i(rl_icppfunc_t)d(\(char)i(**\);)150 4177 y(typedef)f(void)i(rl_voidfunc_t)c(\(void\);)150 4286 y(typedef)i(void)i(rl_vintfunc_t)c(\(int\);)150 4396 y(typedef)i(void)i(rl_vcpfunc_t)d(\(char)i(*\);)150 4506 y(typedef)f(void)i(rl_vcppfunc_t)c(\(char)j(**\);)150 4685 y Fi(2.2.2)63 b(W)-10 b(riting)41 b(a)f(New)h(F)-10 b(unction)150 4832 y Ft(In)30 b(order)h(to)h(write)f(new)g(functions)f (for)h(Readline,)h(y)m(ou)g(need)e(to)i(kno)m(w)f(the)g(calling)i(con)m (v)m(en)m(tions)g(for)150 4941 y(k)m(eyb)s(oard-in)m(v)m(ok)m(ed)f (functions,)d(and)h(the)g(names)g(of)g(the)g(v)-5 b(ariables)31 b(that)f(describ)s(e)g(the)g(curren)m(t)g(state)150 5051 y(of)h(the)f(line)h(read)f(so)h(far.)275 5196 y(The)e(calling)j (sequence)f(for)f(a)h(command)f Fs(foo)g Ft(lo)s(oks)g(lik)m(e)390 5340 y Fs(int)47 b(foo)g(\(int)f(count,)h(int)f(key\))p eop end %%Page: 27 31 TeXDict begin 27 30 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(27)150 299 y(where)35 b Fj(coun)m(t)k Ft(is)d(the)g(n)m(umeric)g(argumen)m(t)g (\(or)g(1)g(if)g(defaulted\))h(and)e Fj(k)m(ey)44 b Ft(is)36 b(the)g(k)m(ey)h(that)f(in)m(v)m(ok)m(ed)150 408 y(this)30 b(function.)275 551 y(It)23 b(is)g(completely)h(up)e(to)i(the)f (function)g(as)g(to)h(what)f(should)f(b)s(e)h(done)f(with)h(the)g(n)m (umeric)g(argumen)m(t.)150 661 y(Some)40 b(functions)g(use)f(it)i(as)f (a)g(rep)s(eat)h(coun)m(t,)i(some)d(as)h(a)f(\015ag,)j(and)c(others)h (to)h(c)m(ho)s(ose)g(alternate)150 770 y(b)s(eha)m(vior)i(\(refreshing) g(the)h(curren)m(t)f(line)h(as)f(opp)s(osed)g(to)h(refreshing)e(the)i (screen,)j(for)c(example\).)150 880 y(Some)33 b(c)m(ho)s(ose)h(to)g (ignore)g(it.)50 b(In)32 b(general,)j(if)f(a)f(function)g(uses)g(the)g (n)m(umeric)g(argumen)m(t)h(as)f(a)h(rep)s(eat)150 989 y(coun)m(t,)29 b(it)g(should)e(b)s(e)g(able)h(to)h(do)f(something)g (useful)f(with)h(b)s(oth)f(negativ)m(e)j(and)d(p)s(ositiv)m(e)i (argumen)m(ts.)150 1099 y(A)m(t)i(the)g(v)m(ery)g(least,)h(it)e(should) g(b)s(e)g(a)m(w)m(are)h(that)g(it)g(can)g(b)s(e)f(passed)g(a)g(negativ) m(e)j(argumen)m(t.)275 1242 y(A)38 b(command)f(function)h(should)f (return)g(0)h(if)g(its)h(action)g(completes)g(successfully)-8 b(,)41 b(and)c(a)h(v)-5 b(alue)150 1351 y(greater)34 b(than)f(zero)g(if)g(some)h(error)e(o)s(ccurs.)48 b(This)32 b(is)h(the)g(con)m(v)m(en)m(tion)i(ob)s(ey)m(ed)f(b)m(y)e(all)i(of)f (the)g(builtin)150 1461 y(Readline)e(bindable)f(command)g(functions.) 150 1714 y Fr(2.3)68 b(Readline)47 b(V)-11 b(ariables)150 1873 y Ft(These)30 b(v)-5 b(ariables)31 b(are)g(a)m(v)-5 b(ailable)33 b(to)e(function)f(writers.)3371 2074 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_line_buffer)390 2183 y Ft(This)30 b(is)i(the)f(line)g(gathered)h(so)f(far.)43 b(Y)-8 b(ou)32 b(are)f(w)m(elcome)i(to)f(mo)s(dify)f(the)g(con)m(ten)m (ts)i(of)e(the)g(line,)390 2293 y(but)k(see)h(Section)g(2.4.5)h([Allo)m (wing)h(Undoing],)f(page)f(36.)57 b(The)35 b(function)g Fs(rl_extend_line_)390 2402 y(buffer)29 b Ft(is)h(a)m(v)-5 b(ailable)33 b(to)e(increase)g(the)g(memory)f(allo)s(cated)i(to)f Fs(rl_line_buffer)p Ft(.)3371 2603 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_point)390 2712 y Ft(The)30 b(o\013set)h(of)g(the)f (curren)m(t)h(cursor)e(p)s(osition)i(in)f Fs(rl_line_buffer)c Ft(\(the)31 b Fk(p)-5 b(oint)9 b Ft(\).)3371 2913 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_end)390 3022 y Ft(The)27 b(n)m(um)m(b)s(er)g(of)h(c)m(haracters)h(presen)m(t)f(in)g Fs(rl_line_buffer)p Ft(.)36 b(When)27 b Fs(rl_point)f Ft(is)i(at)h(the)f(end)390 3132 y(of)j(the)f(line,)h Fs(rl_point)d Ft(and)i Fs(rl_end)f Ft(are)h(equal.)3371 3333 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_mark)390 3442 y Ft(The)36 b Fj(mark)42 b Ft(\(sa)m(v)m(ed)d(p)s(osition\))e(in)g (the)g(curren)m(t)f(line.)61 b(If)36 b(set,)k(the)d(mark)f(and)h(p)s (oin)m(t)f(de\014ne)h(a)390 3552 y Fk(r)-5 b(e)g(gion)p Ft(.)3371 3752 y([V)d(ariable])-3598 b Fh(int)53 b(rl_done)390 3862 y Ft(Setting)22 b(this)g(to)g(a)g(non-zero)g(v)-5 b(alue)23 b(causes)f(Readline)g(to)g(return)f(the)h(curren)m(t)f(line)h (immediately)-8 b(.)3371 4062 y([V)g(ariable])-3598 b Fh(int)53 b(rl_num_chars_to_read)390 4172 y Ft(Setting)34 b(this)e(to)i(a)f(p)s(ositiv)m(e)h(v)-5 b(alue)34 b(b)s(efore)e (calling)i Fs(readline\(\))d Ft(causes)i(Readline)g(to)h(return)390 4281 y(after)i(accepting)h(that)g(man)m(y)e(c)m(haracters,)k(rather)d (than)f(reading)h(up)e(to)j(a)f(c)m(haracter)h(b)s(ound)390 4391 y(to)31 b Fs(accept-line)p Ft(.)3371 4592 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_pending_input)390 4701 y Ft(Setting)26 b(this)f(to)h(a)f(v)-5 b(alue)26 b(mak)m(es)g(it)g(the) f(next)g(k)m(eystrok)m(e)i(read.)39 b(This)24 b(is)i(a)f(w)m(a)m(y)h (to)g(stu\013)f(a)g(single)390 4811 y(c)m(haracter)32 b(in)m(to)f(the)g(input)e(stream.)3371 5011 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_dispatching)390 5121 y Ft(Set)24 b(to)h(a)g(non-zero)g (v)-5 b(alue)24 b(if)h(a)f(function)g(is)g(b)s(eing)g(called)i(from)d (a)i(k)m(ey)g(binding;)g(zero)g(otherwise.)390 5230 y(Application)37 b(functions)e(can)h(test)h(this)e(to)i(disco)m(v)m(er)g(whether)e(they) h(w)m(ere)g(called)h(directly)f(or)390 5340 y(b)m(y)30 b(Readline's)h(dispatc)m(hing)g(mec)m(hanism.)p eop end %%Page: 28 32 TeXDict begin 28 31 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(28)3371 299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_erase_empty_line)390 408 y Ft(Setting)47 b(this)e(to)i(a)f(non-zero)h(v)-5 b(alue)46 b(causes)h(Readline)f(to)h(completely)g(erase)g(the)f(curren) m(t)390 518 y(line,)f(including)c(an)m(y)g(prompt,)j(an)m(y)d(time)h(a) g(newline)f(is)h(t)m(yp)s(ed)f(as)g(the)h(only)f(c)m(haracter)i(on)390 628 y(an)36 b(otherwise-empt)m(y)i(line.)58 b(The)36 b(cursor)g(is)g(mo)m(v)m(ed)h(to)g(the)g(b)s(eginning)e(of)i(the)f (newly-blank)390 737 y(line.)3371 913 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_prompt)390 1022 y Ft(The)26 b(prompt)f(Readline)i (uses.)38 b(This)26 b(is)g(set)h(from)e(the)i(argumen)m(t)f(to)h Fs(readline\(\))p Ft(,)d(and)i(should)390 1132 y(not)h(b)s(e)f (assigned)h(to)h(directly)-8 b(.)41 b(The)26 b Fs(rl_set_prompt\(\))d Ft(function)j(\(see)i(Section)g(2.4.6)h([Redis-)390 1241 y(pla)m(y],)i(page)h(37\))f(ma)m(y)g(b)s(e)f(used)f(to)j(mo)s(dify)d (the)i(prompt)e(string)h(after)h(calling)h Fs(readline\(\))p Ft(.)3371 1417 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_display_prompt)390 1526 y Ft(The)31 b(string)h(displa)m(y)m (ed)g(as)g(the)g(prompt.)44 b(This)31 b(is)h(usually)f(iden)m(tical)j (to)e Fj(rl)p 3031 1526 28 4 v 40 w(prompt)p Ft(,)f(but)g(ma)m(y)390 1636 y(b)s(e)j(c)m(hanged)g(temp)s(orarily)h(b)m(y)f(functions)g(that)g (use)g(the)h(prompt)e(string)h(as)h(a)f(message)i(area,)390 1745 y(suc)m(h)30 b(as)h(incremen)m(tal)g(searc)m(h.)3371 1921 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_already_prompted)390 2030 y Ft(If)36 b(an)g(application)i(wishes)d(to)i(displa)m(y)g(the)f (prompt)g(itself,)i(rather)f(than)f(ha)m(v)m(e)h(Readline)g(do)390 2140 y(it)c(the)g(\014rst)f(time)i Fs(readline\(\))c Ft(is)i(called,)j(it)e(should)f(set)h(this)g(v)-5 b(ariable)34 b(to)f(a)g(non-zero)g(v)-5 b(alue)390 2250 y(after)38 b(displa)m(ying)h(the)f(prompt.)63 b(The)37 b(prompt)g(m)m(ust)h(also)h (b)s(e)e(passed)g(as)i(the)f(argumen)m(t)g(to)390 2359 y Fs(readline\(\))30 b Ft(so)j(the)h(redispla)m(y)f(functions)f(can)i (up)s(date)e(the)h(displa)m(y)g(prop)s(erly)-8 b(.)48 b(The)32 b(calling)390 2469 y(application)g(is)e(resp)s(onsible)g(for)g (managing)h(the)f(v)-5 b(alue;)31 b(Readline)g(nev)m(er)g(sets)g(it.) 3371 2644 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g (rl_library_version)390 2754 y Ft(The)30 b(v)m(ersion)h(n)m(um)m(b)s (er)e(of)h(this)h(revision)f(of)h(the)f(library)-8 b(.)3371 2929 y([V)g(ariable])-3598 b Fh(int)53 b(rl_readline_version)390 3039 y Ft(An)34 b(in)m(teger)h(enco)s(ding)f(the)g(curren)m(t)g(v)m (ersion)h(of)f(the)g(library)-8 b(.)52 b(The)34 b(enco)s(ding)g(is)g (of)g(the)g(form)390 3148 y(0x)p Fj(MMmm)p Ft(,)39 b(where)d Fj(MM)47 b Ft(is)36 b(the)h(t)m(w)m(o-digit)i(ma)5 b(jor)36 b(v)m(ersion)h(n)m(um)m(b)s(er,)g(and)f Fj(mm)g Ft(is)h(the)f(t)m(w)m (o-)390 3258 y(digit)i(minor)f(v)m(ersion)h(n)m(um)m(b)s(er.)60 b(F)-8 b(or)38 b(example,)i(for)d(Readline-4.2,)k Fs (rl_readline_version)390 3367 y Ft(w)m(ould)30 b(ha)m(v)m(e)i(the)e(v) -5 b(alue)31 b(0x0402.)3371 3543 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_gnu_readline_p)390 3652 y Ft(Alw)m(a)m(ys)32 b(set)f(to)g(1,)g(denoting)f(that)h(this)g(is)f Fm(gnu)g Ft(readline)h(rather)f(than)g(some)h(em)m(ulation.)3371 3828 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g (rl_terminal_name)390 3937 y Ft(The)28 b(terminal)g(t)m(yp)s(e,)h(used) e(for)h(initialization.)43 b(If)28 b(not)g(set)h(b)m(y)e(the)i (application,)h(Readline)f(sets)390 4047 y(this)h(to)h(the)g(v)-5 b(alue)31 b(of)f(the)h Fs(TERM)e Ft(en)m(vironmen)m(t)i(v)-5 b(ariable)31 b(the)g(\014rst)e(time)j(it)e(is)h(called.)3371 4222 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g (rl_readline_name)390 4332 y Ft(This)30 b(v)-5 b(ariable)32 b(is)g(set)f(to)h(a)g(unique)e(name)h(b)m(y)g(eac)m(h)i(application)f (using)f(Readline.)44 b(The)30 b(v)-5 b(alue)390 4441 y(allo)m(ws)29 b(conditional)h(parsing)d(of)h(the)h(inputrc)e(\014le)h (\(see)h(Section)g(1.3.2)g([Conditional)g(Init)f(Con-)390 4551 y(structs],)j(page)g(12\).)3371 4726 y([V)-8 b(ariable])-3598 b Fh(FILE)54 b(*)e(rl_instream)390 4836 y Ft(The)40 b(stdio)i(stream)f (from)g(whic)m(h)f(Readline)i(reads)f(input.)71 b(If)41 b Fs(NULL)p Ft(,)i(Readline)e(defaults)g(to)390 4945 y Fj(stdin)p Ft(.)3371 5121 y([V)-8 b(ariable])-3598 b Fh(FILE)54 b(*)e(rl_outstream)390 5230 y Ft(The)34 b(stdio)h(stream)f(to)i(whic)m(h)e(Readline)h(p)s(erforms)e(output.)52 b(If)34 b Fs(NULL)p Ft(,)h(Readline)g(defaults)f(to)390 5340 y Fj(stdout)p Ft(.)p eop end %%Page: 29 33 TeXDict begin 29 32 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(29)3371 299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_prefer_env_winsize)390 408 y Ft(If)28 b(non-zero,)h(Readline)g(giv)m(es)h(v)-5 b(alues)29 b(found)e(in)h(the)g Fs(LINES)f Ft(and)h Fs(COLUMNS)e Ft(en)m(vironmen)m(t)j(v)-5 b(ari-)390 518 y(ables)41 b(greater)h(precedence)g(than)e(v)-5 b(alues)41 b(fetc)m(hed)h(from)e (the)h(k)m(ernel)h(when)e(computing)h(the)390 628 y(screen)30 b(dimensions.)3371 847 y([V)-8 b(ariable])-3598 b Fh(rl_command_func_t) 57 b(*)c(rl_last_func)390 956 y Ft(The)34 b(address)g(of)h(the)g(last)h (command)e(function)g(Readline)i(executed.)55 b(Ma)m(y)35 b(b)s(e)g(used)f(to)h(test)390 1066 y(whether)30 b(or)g(not)h(a)f (function)h(is)f(b)s(eing)g(executed)h(t)m(wice)h(in)e(succession,)h (for)f(example.)3371 1285 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52 b(rl_startup_hook)390 1395 y Ft(If)34 b(non-zero,)i(this)e(is)h(the)f(address)f(of)i(a)g(function) f(to)h(call)g(just)f(b)s(efore)g Fs(readline)e Ft(prin)m(ts)i(the)390 1504 y(\014rst)c(prompt.)3371 1724 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52 b(rl_pre_input_hook)390 1833 y Ft(If)35 b(non-zero,)j(this)d(is)g(the)h(address)f(of)g(a)h (function)f(to)i(call)f(after)g(the)g(\014rst)f(prompt)f(has)i(b)s(een) 390 1943 y(prin)m(ted)30 b(and)g(just)f(b)s(efore)h Fs(readline)f Ft(starts)h(reading)h(input)e(c)m(haracters.)3371 2162 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52 b(rl_event_hook)390 2271 y Ft(If)40 b(non-zero,)k(this)d(is)f(the)h (address)f(of)h(a)g(function)f(to)h(call)h(p)s(erio)s(dically)f(when)f (Readline)h(is)390 2381 y(w)m(aiting)30 b(for)f(terminal)h(input.)39 b(By)30 b(default,)g(this)f(will)g(b)s(e)g(called)h(at)g(most)f(ten)h (times)f(a)h(second)390 2491 y(if)g(there)h(is)f(no)h(k)m(eyb)s(oard)f (input.)3371 2710 y([V)-8 b(ariable])-3598 b Fh(rl_getc_func_t)57 b(*)52 b(rl_getc_function)390 2819 y Ft(If)30 b(non-zero,)h(Readline)g (will)g(call)h(indirectly)e(through)g(this)h(p)s(oin)m(ter)f(to)h(get)h (a)e(c)m(haracter)i(from)390 2929 y(the)21 b(input)g(stream.)38 b(By)21 b(default,)j(it)e(is)f(set)h(to)g Fs(rl_getc)p Ft(,)f(the)h(default)f(Readline)h(c)m(haracter)h(input)390 3039 y(function)f(\(see)i(Section)g(2.4.8)g([Character)g(Input],)f (page)h(39\).)39 b(In)22 b(general,)k(an)c(application)i(that)390 3148 y(sets)31 b Fj(rl)p 635 3148 28 4 v 40 w(getc)p 835 3148 V 41 w(function)f Ft(should)g(consider)g(setting)h Fj(rl)p 2234 3148 V 40 w(input)p 2487 3148 V 39 w(a)m(v)-5 b(ailable)p 2867 3148 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371 3367 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52 b(rl_signal_event_hook)390 3477 y Ft(If)27 b(non-zero,)h(this)f (is)g(the)g(address)f(of)i(a)f(function)g(to)g(call)i(if)e(a)g(read)g (system)g(call)h(is)g(in)m(terrupted)390 3587 y(when)h(Readline)i(is)g (reading)f(terminal)h(input.)3371 3806 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52 b(rl_input_available_ho)q(ok)390 3915 y Ft(If)28 b(non-zero,)j(Readline)e(will)g(use)g(this)g (function's)g(return)f(v)-5 b(alue)29 b(when)f(it)i(needs)e(to)i (determine)390 4025 y(whether)42 b(or)g(not)h(there)f(is)h(a)m(v)-5 b(ailable)45 b(input)c(on)i(the)f(curren)m(t)g(input)g(source.)77 b(The)42 b(default)390 4134 y(ho)s(ok)25 b(c)m(hec)m(ks)i Fs(rl_instream)p Ft(;)d(if)i(an)f(application)i(is)e(using)g(a)h (di\013eren)m(t)g(input)e(source,)j(it)f(should)390 4244 y(set)34 b(the)f(ho)s(ok)h(appropriately)-8 b(.)50 b(Readline)34 b(queries)f(for)h(a)m(v)-5 b(ailable)35 b(input)e(when)f(implemen)m (ting)390 4354 y(in)m(tra-k)m(ey-sequence)f(timeouts)e(during)e(input)g (and)h(incremen)m(tal)h(searc)m(hes.)41 b(This)27 b(ma)m(y)i(use)f(an) 390 4463 y(application-sp)s(eci\014c)22 b(timeout)g(b)s(efore)f (returning)f(a)h(v)-5 b(alue;)25 b(Readline)c(uses)f(the)i(v)-5 b(alue)21 b(passed)f(to)390 4573 y Fs(rl_set_keyboard_input_ti)o(meou)o (t\(\))e Ft(or)24 b(the)g(v)-5 b(alue)25 b(of)g(the)f(user-settable)i Fj(k)m(eyseq-timeout)390 4682 y Ft(v)-5 b(ariable.)48 b(This)31 b(is)i(designed)f(for)g(use)g(b)m(y)g(applications)i(using)e (Readline's)h(callbac)m(k)h(in)m(terface)390 4792 y(\(see)d(Section)f (2.4.12)i([Alternate)f(In)m(terface],)h(page)e(43\),)i(whic)m(h)d(ma)m (y)h(not)g(use)g(the)g(traditional)390 4902 y Fs(read\(2\))39 b Ft(and)g(\014le)i(descriptor)f(in)m(terface,)45 b(or)c(other)f (applications)i(using)e(a)h(di\013eren)m(t)g(input)390 5011 y(mec)m(hanism.)k(If)31 b(an)g(application)i(uses)e(an)h(input)e (mec)m(hanism)i(or)g(ho)s(ok)f(that)h(can)g(p)s(oten)m(tially)390 5121 y(exceed)38 b(the)e(v)-5 b(alue)37 b(of)g Fj(k)m(eyseq-timeout)p Ft(,)k(it)c(should)e(increase)j(the)e(timeout)i(or)f(set)g(this)f(ho)s (ok)390 5230 y(appropriately)d(ev)m(en)g(when)e(not)h(using)g(the)h (callbac)m(k)h(in)m(terface.)48 b(In)31 b(general,)j(an)f(application) 390 5340 y(that)e(sets)g Fj(rl)p 832 5340 V 40 w(getc)p 1032 5340 V 41 w(function)f Ft(should)g(consider)g(setting)h Fj(rl)p 2431 5340 V 40 w(input)p 2684 5340 V 39 w(a)m(v)-5 b(ailable)p 3064 5340 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)p eop end %%Page: 30 34 TeXDict begin 30 33 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(30)3371 299 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d (rl_redisplay_function)390 408 y Ft(If)36 b(non-zero,)i(Readline)e (will)h(call)g(indirectly)f(through)g(this)g(p)s(oin)m(ter)g(to)g(up)s (date)g(the)g(displa)m(y)390 518 y(with)27 b(the)g(curren)m(t)g(con)m (ten)m(ts)h(of)f(the)h(editing)f(bu\013er.)39 b(By)27 b(default,)h(it)g(is)f(set)g(to)h Fs(rl_redisplay)p Ft(,)390 628 y(the)j(default)f(Readline)h(redispla)m(y)g(function)f(\(see)h (Section)g(2.4.6)h([Redispla)m(y],)g(page)f(37\).)3371 817 y([V)-8 b(ariable])-3598 b Fh(rl_vintfunc_t)56 b(*)d (rl_prep_term_function)390 927 y Ft(If)24 b(non-zero,)i(Readline)e (will)h(call)g(indirectly)g(through)e(this)h(p)s(oin)m(ter)g(to)h (initialize)h(the)e(terminal.)390 1036 y(The)37 b(function)f(tak)m(es)j (a)e(single)h(argumen)m(t,)i(an)d Fs(int)f Ft(\015ag)h(that)h(sa)m(ys)g (whether)e(or)h(not)g(to)h(use)390 1146 y(eigh)m(t-bit)e(c)m (haracters.)53 b(By)35 b(default,)g(this)f(is)g(set)h(to)g Fs(rl_prep_terminal)29 b Ft(\(see)35 b(Section)g(2.4.9)390 1255 y([T)-8 b(erminal)31 b(Managemen)m(t],)i(page)e(40\).)3371 1445 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d (rl_deprep_term_functio)q(n)390 1554 y Ft(If)36 b(non-zero,)j(Readline) e(will)g(call)h(indirectly)f(through)f(this)g(p)s(oin)m(ter)h(to)g (reset)g(the)g(terminal.)390 1664 y(This)d(function)h(should)f(undo)g (the)h(e\013ects)h(of)f Fs(rl_prep_term_function)p Ft(.)49 b(By)35 b(default,)i(this)390 1774 y(is)30 b(set)h(to)g Fs(rl_deprep_terminal)26 b Ft(\(see)31 b(Section)g(2.4.9)i([T)-8 b(erminal)30 b(Managemen)m(t],)j(page)e(40\).)3371 1963 y([V)-8 b(ariable])-3598 b Fh(Keymap)54 b(rl_executing_keymap)390 2073 y Ft(This)35 b(v)-5 b(ariable)37 b(is)f(set)g(to)h(the)f(k)m (eymap)h(\(see)g(Section)f(2.4.2)i([Keymaps],)g(page)e(33\))i(in)d (whic)m(h)390 2182 y(the)c(curren)m(tly)f(executing)i(readline)e (function)g(w)m(as)h(found.)3371 2372 y([V)-8 b(ariable])-3598 b Fh(Keymap)54 b(rl_binding_keymap)390 2481 y Ft(This)35 b(v)-5 b(ariable)37 b(is)f(set)g(to)h(the)f(k)m(eymap)h(\(see)g (Section)f(2.4.2)i([Keymaps],)g(page)e(33\))i(in)d(whic)m(h)390 2591 y(the)c(last)g(k)m(ey)g(binding)e(o)s(ccurred.)3371 2780 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_macro)390 2890 y Ft(This)30 b(v)-5 b(ariable)31 b(is)f(set)h(to)g(the)g(text)g (of)g(an)m(y)f(curren)m(tly-executing)i(macro.)3371 3079 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_executing_key)390 3189 y Ft(The)30 b(k)m(ey)h(that)g(caused)f(the)h(dispatc)m(h)g(to)g (the)f(curren)m(tly-executing)i(Readline)f(function.)3371 3378 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_keyseq) 390 3488 y Ft(The)35 b(full)g(k)m(ey)h(sequence)g(that)g(caused)g(the)g (dispatc)m(h)f(to)i(the)e(curren)m(tly-executing)i(Readline)390 3597 y(function.)3371 3787 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_key_sequence_lengt)q(h)390 3896 y Ft(The)30 b(n)m(um)m(b)s(er)f(of)h(c)m(haracters)i(in)e Fj(rl)p 1617 3896 28 4 v 40 w(executing)p 2032 3896 V 41 w(k)m(eyseq)p Ft(.)3371 4086 y([V)-8 b(ariable])-3598 b Fh(int)53 b (rl_readline_state)390 4195 y Ft(A)35 b(v)-5 b(ariable)35 b(with)f(bit)g(v)-5 b(alues)35 b(that)g(encapsulate)h(the)e(curren)m(t) h(Readline)g(state.)54 b(A)34 b(bit)h(is)f(set)390 4305 y(with)k(the)g Fs(RL_SETSTATE)c Ft(macro,)41 b(and)c(unset)h(with)f (the)h Fs(RL_UNSETSTATE)d Ft(macro.)63 b(Use)39 b(the)390 4414 y Fs(RL_ISSTATE)34 b Ft(macro)k(to)g(test)g(whether)f(a)h (particular)f(state)i(bit)e(is)g(set.)62 b(Curren)m(t)36 b(state)j(bits)390 4524 y(include:)390 4687 y Fs(RL_STATE_NONE)870 4797 y Ft(Readline)31 b(has)f(not)h(y)m(et)g(b)s(een)f(called,)i(nor)e (has)g(it)h(b)s(egun)e(to)i(initialize.)390 4959 y Fs (RL_STATE_INITIALIZING)870 5068 y Ft(Readline)g(is)f(initializing)j (its)e(in)m(ternal)g(data)g(structures.)390 5230 y Fs (RL_STATE_INITIALIZED)870 5340 y Ft(Readline)g(has)f(completed)h(its)g (initialization.)p eop end %%Page: 31 35 TeXDict begin 31 34 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(31)390 299 y Fs(RL_STATE_TERMPREPPED)870 408 y Ft(Readline)29 b(has)g(mo)s(di\014ed)e(the)i(terminal)g(mo)s(des)f(to)i(do)e(its)i(o)m (wn)e(input)g(and)g(redis-)870 518 y(pla)m(y)-8 b(.)390 679 y Fs(RL_STATE_READCMD)870 789 y Ft(Readline)31 b(is)f(reading)h(a)g (command)f(from)g(the)g(k)m(eyb)s(oard.)390 950 y Fs(RL_STATE_METANEXT) 870 1060 y Ft(Readline)h(is)f(reading)h(more)f(input)g(after)h(reading) f(the)h(meta-pre\014x)f(c)m(haracter.)390 1221 y Fs (RL_STATE_DISPATCHING)870 1330 y Ft(Readline)h(is)f(dispatc)m(hing)h (to)g(a)g(command.)390 1491 y Fs(RL_STATE_MOREINPUT)870 1601 y Ft(Readline)g(is)f(reading)h(more)f(input)g(while)g(executing)i (an)e(editing)h(command.)390 1762 y Fs(RL_STATE_ISEARCH)870 1872 y Ft(Readline)g(is)f(p)s(erforming)g(an)g(incremen)m(tal)i (history)e(searc)m(h.)390 2033 y Fs(RL_STATE_NSEARCH)870 2143 y Ft(Readline)h(is)f(p)s(erforming)g(a)g(non-incremen)m(tal)i (history)e(searc)m(h.)390 2304 y Fs(RL_STATE_SEARCH)870 2413 y Ft(Readline)21 b(is)f(searc)m(hing)i(bac)m(kw)m(ard)e(or)h(forw) m(ard)e(through)h(the)h(history)f(for)g(a)h(string.)390 2574 y Fs(RL_STATE_NUMERICARG)870 2684 y Ft(Readline)31 b(is)f(reading)h(a)g(n)m(umeric)f(argumen)m(t.)390 2845 y Fs(RL_STATE_MACROINPUT)870 2955 y Ft(Readline)25 b(is)f(curren)m(tly) g(getting)i(its)f(input)e(from)h(a)g(previously-de\014ned)f(k)m(eyb)s (oard)870 3064 y(macro.)390 3226 y Fs(RL_STATE_MACRODEF)870 3335 y Ft(Readline)31 b(is)f(curren)m(tly)h(reading)f(c)m(haracters)i (de\014ning)e(a)g(k)m(eyb)s(oard)h(macro.)390 3496 y Fs(RL_STATE_OVERWRITE)870 3606 y Ft(Readline)g(is)f(in)g(o)m(v)m (erwrite)i(mo)s(de.)390 3767 y Fs(RL_STATE_COMPLETING)870 3877 y Ft(Readline)f(is)f(p)s(erforming)g(w)m(ord)g(completion.)390 4038 y Fs(RL_STATE_SIGHANDLER)870 4147 y Ft(Readline)h(is)f(curren)m (tly)h(executing)g(the)g(readline)g(signal)g(handler.)390 4309 y Fs(RL_STATE_UNDOING)870 4418 y Ft(Readline)g(is)f(p)s(erforming) g(an)g(undo.)390 4579 y Fs(RL_STATE_INPUTPENDING)870 4689 y Ft(Readline)h(has)f(input)g(p)s(ending)f(due)g(to)i(a)g(call)h (to)f Fs(rl_execute_next\(\))p Ft(.)390 4850 y Fs(RL_STATE_TTYCSAVED) 870 4960 y Ft(Readline)g(has)f(sa)m(v)m(ed)i(the)e(v)-5 b(alues)31 b(of)f(the)h(terminal's)g(sp)s(ecial)g(c)m(haracters.)390 5121 y Fs(RL_STATE_CALLBACK)870 5230 y Ft(Readline)44 b(is)f(curren)m(tly)g(using)f(the)h(alternate)i(\(callbac)m(k\))h(in)m (terface)e(\(see)g(Sec-)870 5340 y(tion)31 b(2.4.12)h([Alternate)h(In)m (terface],)f(page)f(43\).)p eop end %%Page: 32 36 TeXDict begin 32 35 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(32)390 299 y Fs(RL_STATE_VIMOTION)870 408 y Ft(Readline)31 b(is)f(reading)h (the)f(argumen)m(t)h(to)g(a)g(vi-mo)s(de)g Fs(")p Ft(motion)p Fs(")f Ft(command.)390 589 y Fs(RL_STATE_MULTIKEY)870 699 y Ft(Readline)h(is)f(reading)h(a)g(m)m(ultiple-k)m(eystrok)m(e)i (command.)390 879 y Fs(RL_STATE_VICMDONCE)870 989 y Ft(Readline)40 b(has)f(en)m(tered)g(vi)g(command)g(\(mo)m(v)m(emen)m(t\))j(mo)s(de)d (at)h(least)g(one)f(time)870 1098 y(during)29 b(the)i(curren)m(t)f (call)i(to)f Fs(readline\(\))p Ft(.)390 1279 y Fs(RL_STATE_DONE)870 1389 y Ft(Readline)d(has)g(read)f(a)i(k)m(ey)f(sequence)g(b)s(ound)e (to)i Fs(accept-line)d Ft(and)i(is)h(ab)s(out)f(to)870 1498 y(return)i(the)i(line)g(to)g(the)f(caller.)3371 1725 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_explicit_arg)390 1834 y Ft(Set)39 b(to)g(a)h(non-zero)f(v)-5 b(alue)39 b(if)g(an)g(explicit)h(n)m(umeric)e(argumen)m(t)i(w)m(as)f(sp)s (eci\014ed)f(b)m(y)g(the)h(user.)390 1944 y(Only)30 b(v)-5 b(alid)30 b(in)h(a)f(bindable)g(command)g(function.)3371 2171 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_numeric_arg)390 2280 y Ft(Set)45 b(to)h(the)g(v)-5 b(alue)46 b(of)f(an)m(y)h(n)m (umeric)f(argumen)m(t)h(explicitly)h(sp)s(eci\014ed)d(b)m(y)h(the)h (user)e(b)s(efore)390 2390 y(executing)27 b(the)f(curren)m(t)g (Readline)h(function.)38 b(Only)26 b(v)-5 b(alid)26 b(in)g(a)g (bindable)f(command)h(function.)3371 2617 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_editing_mode)390 2726 y Ft(Set)25 b(to)h(a)g(v)-5 b(alue)25 b(denoting)h(Readline's)f(curren)m(t)g(editing)h(mo)s(de.)39 b(A)25 b(v)-5 b(alue)25 b(of)h Fj(1)32 b Ft(means)25 b(Readline)390 2836 y(is)30 b(curren)m(tly)h(in)f(emacs)h(mo)s(de;)f Fj(0)38 b Ft(means)31 b(that)f(vi)h(mo)s(de)f(is)g(activ)m(e.)150 3108 y Fr(2.4)68 b(Readline)47 b(Con)l(v)l(enience)f(F)-11 b(unctions)150 3332 y Fi(2.4.1)63 b(Naming)41 b(a)g(F)-10 b(unction)150 3479 y Ft(The)24 b(user)h(can)g(dynamically)g(c)m(hange)h (the)f(bindings)f(of)h(k)m(eys)h(while)e(using)h(Readline.)39 b(This)24 b(is)h(done)g(b)m(y)150 3589 y(represen)m(ting)30 b(the)h(function)f(with)g(a)g(descriptiv)m(e)h(name.)41 b(The)30 b(user)f(is)i(able)f(to)h(t)m(yp)s(e)g(the)f(descriptiv)m(e) 150 3699 y(name)g(when)g(referring)g(to)h(the)f(function.)41 b(Th)m(us,)29 b(in)h(an)h(init)f(\014le,)h(one)g(migh)m(t)g(\014nd)390 3854 y Fs(Meta-Rubout:)92 b(backward-kill-word)275 4010 y Ft(This)84 b(binds)h(the)g(k)m(eystrok)m(e)j Fs(Meta-Rubout)82 b Ft(to)87 b(the)e(function)h Fk(descriptively)94 b Ft(named)150 4120 y Fs(backward-kill-word)p Ft(.)63 b(Y)-8 b(ou,)43 b(as)d(the)g(programmer,)i(should)c(bind)g(the)i(functions)f(y)m(ou)h (write)g(to)150 4229 y(descriptiv)m(e)31 b(names)g(as)f(w)m(ell.)42 b(Readline)31 b(pro)m(vides)f(a)h(function)f(for)g(doing)h(that:)3350 4456 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_defun)c Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f(rl)p 1964 4456 30 5 v 43 w(command)p 2427 4456 V 45 w(func)p 2656 4456 V 45 w(t)g(*function,)565 4565 y(in)m(t)g(k)m(ey)p Fg(\))390 4675 y Ft(Add)h Fj(name)41 b Ft(to)36 b(the)f(list)h(of)g(named)e (functions.)55 b(Mak)m(e)37 b Fj(function)e Ft(b)s(e)g(the)g(function)g (that)h(gets)390 4785 y(called.)42 b(If)30 b Fj(k)m(ey)39 b Ft(is)30 b(not)h(-1,)g(then)f(bind)f(it)i(to)g Fj(function)f Ft(using)g Fs(rl_bind_key\(\))p Ft(.)275 5011 y(Using)g(this)g (function)g(alone)h(is)f(su\016cien)m(t)g(for)g(most)h(applications.)42 b(It)30 b(is)g(the)g(recommended)g(w)m(a)m(y)150 5121 y(to)e(add)e(a)h(few)g(functions)g(to)g(the)g(default)h(functions)e (that)i(Readline)f(has)g(built)g(in.)39 b(If)26 b(y)m(ou)i(need)e(to)i (do)150 5230 y(something)34 b(other)g(than)f(adding)h(a)g(function)f (to)h(Readline,)i(y)m(ou)e(ma)m(y)g(need)f(to)i(use)e(the)h(underlying) 150 5340 y(functions)c(describ)s(ed)f(b)s(elo)m(w.)p eop end %%Page: 33 37 TeXDict begin 33 36 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(33)150 299 y Fi(2.4.2)63 b(Selecting)41 b(a)f(Keymap)150 446 y Ft(Key)f(bindings)e(tak)m(e)j(place)g(on)f(a)g Fj(k)m(eymap)p Ft(.)66 b(The)38 b(k)m(eymap)h(is)g(the)g(asso)s(ciation)h(b)s(et)m(w)m (een)f(the)g(k)m(eys)150 555 y(that)29 b(the)g(user)e(t)m(yp)s(es)i (and)f(the)g(functions)g(that)h(get)h(run.)39 b(Y)-8 b(ou)29 b(can)f(mak)m(e)i(y)m(our)e(o)m(wn)h(k)m(eymaps,)g(cop)m(y)150 665 y(existing)i(k)m(eymaps,)g(and)f(tell)i(Readline)f(whic)m(h)f(k)m (eymap)h(to)g(use.)3350 854 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_make_bare_keymap)d Fg(\()p Ff(v)m(oid)p Fg(\))390 963 y Ft(Returns)23 b(a)i(new,)g(empt)m(y)f(k)m(eymap.)40 b(The)23 b(space)i(for)f(the)g(k)m(eymap)h(is)f(allo)s(cated)i(with)e Fs(malloc\(\))p Ft(;)390 1073 y(the)31 b(caller)g(should)f(free)g(it)h (b)m(y)f(calling)i Fs(rl_free_keymap\(\))26 b Ft(when)j(done.)3350 1262 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_copy_keymap)c Fg(\()p Ff(Keymap)34 b(map)p Fg(\))390 1371 y Ft(Return)c(a)g(new)g(k)m (eymap)h(whic)m(h)f(is)h(a)f(cop)m(y)h(of)g Fj(map)p Ft(.)3350 1560 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_make_keymap)c Fg(\()p Ff(v)m(oid)p Fg(\))390 1669 y Ft(Return)31 b(a)g(new)g(k)m(eymap)h(with)f(the)h(prin)m(ting)f(c)m (haracters)i(b)s(ound)c(to)j(rl)p 2909 1669 28 4 v 40 w(insert,)g(the)g(lo)m(w)m(ercase)390 1779 y(Meta)24 b(c)m(haracters)g(b)s(ound)d(to)i(run)e(their)i(equiv)-5 b(alen)m(ts,)25 b(and)d(the)h(Meta)h(digits)f(b)s(ound)e(to)i(pro)s (duce)390 1889 y(n)m(umeric)30 b(argumen)m(ts.)3350 2077 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_discard_keymap)c Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 2187 y Ft(F)-8 b(ree)30 b(the)g(storage)h(asso)s(ciated)g(with)e(the)g(data)h(in)f Fj(k)m(eymap)p Ft(.)41 b(The)29 b(caller)h(should)f(free)g Fj(k)m(eymap)p Ft(.)3350 2375 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_free_keymap)49 b Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 2485 y Ft(F)-8 b(ree)32 b(all)g(storage)g(asso) s(ciated)g(with)f Fj(k)m(eymap)p Ft(.)42 b(This)30 b(calls)i Fs(rl_discard_keymap)26 b Ft(to)32 b(free)f(sub-)390 2595 y(ordindate)f(k)m(eymaps)h(and)f(macros.)3350 2783 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_empty_keymap)d Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 2893 y Ft(Return)c (non-zero)h(if)g(there)g(are)g(no)f(k)m(eys)i(b)s(ound)c(to)k (functions)e(in)g Fj(k)m(eymap)s Ft(;)i(zero)f(if)g(there)g(are)390 3002 y(an)m(y)g(k)m(eys)g(b)s(ound.)275 3191 y(Readline)45 b(has)g(sev)m(eral)i(in)m(ternal)f(k)m(eymaps.)86 b(These)45 b(functions)g(allo)m(w)h(y)m(ou)g(to)g(c)m(hange)g(whic)m(h)150 3301 y(k)m(eymap)31 b(is)f(activ)m(e.)3350 3489 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap)c Fg(\()p Ff(v)m(oid)p Fg(\))390 3599 y Ft(Returns)29 b(the)i(curren)m(tly)f (activ)m(e)j(k)m(eymap.)3350 3788 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_set_keymap)49 b Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 3897 y Ft(Mak)m(es)e Fj(k)m(eymap)h Ft(the)e(curren)m(tly)f(activ)m(e)j(k)m(eymap.)3350 4086 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap_by_name)e Fg(\()p Ff(const)34 b(c)m(har)g(*name)p Fg(\))390 4196 y Ft(Return)e(the)i(k)m(eymap)f(matc)m(hing)i Fj(name)p Ft(.)49 b Fj(name)38 b Ft(is)c(one)f(whic)m(h)g(w)m(ould)g(b)s(e)f (supplied)g(in)h(a)h Fs(set)390 4305 y(keymap)29 b Ft(inputrc)g(line)i (\(see)g(Section)g(1.3)h([Readline)f(Init)f(File],)i(page)f(4\).)3350 4494 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_keymap_name)f Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 4603 y Ft(Return)e(the)i (name)f(matc)m(hing)h Fj(k)m(eymap)p Ft(.)50 b Fj(name)38 b Ft(is)c(one)f(whic)m(h)g(w)m(ould)g(b)s(e)f(supplied)g(in)h(a)h Fs(set)390 4713 y(keymap)29 b Ft(inputrc)g(line)i(\(see)g(Section)g (1.3)h([Readline)f(Init)f(File],)i(page)f(4\).)3350 4902 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_keymap_name)e Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f(Keymap)h(k)m(eymap)p Fg(\))390 5011 y Ft(Set)g(the)f(name)h(of)g Fj(k)m(eymap)p Ft(.)50 b(This)33 b(name)h(will)f(then)h(b)s(e)e Fs(")p Ft(registered)p Fs(")i Ft(and)f(a)m(v)-5 b(ailable)36 b(for)d(use)390 5121 y(in)i(a)g Fs(set)29 b(keymap)k Ft(inputrc)h(directiv)m(e)j(see)e(Section)h(1.3)g([Readline)g(Init)e (File],)k(page)e(4\).)54 b(The)390 5230 y Fj(name)27 b Ft(ma)m(y)c(not)g(b)s(e)e(one)i(of)f(Readline's)h(builtin)f(k)m (eymap)g(names;)j(y)m(ou)e(ma)m(y)g(not)f(add)g(a)g(di\013eren)m(t)390 5340 y(name)36 b(for)g(one)g(of)g(Readline's)h(builtin)e(k)m(eymaps.)58 b(Y)-8 b(ou)37 b(ma)m(y)f(replace)h(the)f(name)g(asso)s(ciated)p eop end %%Page: 34 38 TeXDict begin 34 37 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(34)390 299 y(with)31 b(a)g(giv)m(en)h(k)m(eymap)g(b)m(y)f(calling)h(this)f (function)g(more)h(than)e(once)i(with)f(the)g(same)h Fj(k)m(eymap)390 408 y Ft(argumen)m(t.)50 b(Y)-8 b(ou)34 b(ma)m(y)h(asso)s(ciate)g(a)f(registered)g Fj(name)39 b Ft(with)33 b(a)h(new)f(k)m(eymap)h(b)m(y)f(calling)i(this)390 518 y(function)c(more)h(than)f(once)i(with)e(the)h(same)g Fj(name)k Ft(argumen)m(t.)45 b(There)31 b(is)h(no)g(w)m(a)m(y)g(to)g (remo)m(v)m(e)390 628 y(a)k(named)e(k)m(eymap)i(once)g(the)f(name)g (has)g(b)s(een)g(registered.)56 b(Readline)36 b(will)f(mak)m(e)h(a)g (cop)m(y)g(of)390 737 y Fj(name)p Ft(.)41 b(The)30 b(return)f(v)-5 b(alue)31 b(is)g(greater)g(than)g(zero)g(unless)f Fj(name)35 b Ft(is)c(one)g(of)f(Readline's)h(builtin)390 847 y(k)m(eymap)g(names)f (or)h Fj(k)m(eymap)i Ft(is)e(one)f(of)h(Readline's)g(builtin)f(k)m (eymaps.)150 1056 y Fi(2.4.3)63 b(Binding)42 b(Keys)150 1203 y Ft(Key)34 b(sequences)g(are)h(asso)s(ciate)h(with)e(functions)f (through)h(the)g(k)m(eymap.)52 b(Readline)35 b(has)f(sev)m(eral)h(in-) 150 1313 y(ternal)30 b(k)m(eymaps:)40 b Fs(emacs_standard_keymap)p Ft(,)24 b Fs(emacs_meta_keymap)p Ft(,)h Fs(emacs_ctlx_keymap)p Ft(,)g Fs(vi_)150 1423 y(movement_keymap)p Ft(,)41 b(and)h Fs(vi_insertion_keymap)p Ft(.)71 b Fs(emacs_standard_keymap)37 b Ft(is)42 b(the)g(default,)150 1532 y(and)30 b(the)g(examples)h(in)f (this)h(man)m(ual)f(assume)g(that.)275 1677 y(Since)d Fs(readline\(\))e Ft(installs)j(a)g(set)g(of)g(default)g(k)m(ey)g (bindings)f(the)h(\014rst)e(time)j(it)f(is)f(called,)j(there)e(is)150 1787 y(alw)m(a)m(ys)34 b(the)f(danger)f(that)i(a)f(custom)g(binding)e (installed)j(b)s(efore)e(the)h(\014rst)e(call)j(to)g Fs(readline\(\))c Ft(will)150 1896 y(b)s(e)25 b(o)m(v)m(erridden.)39 b(An)26 b(alternate)h(mec)m(hanism)f(is)g(to)g(install)h(custom)f(k)m (ey)g(bindings)f(in)g(an)h(initialization)150 2006 y(function)37 b(assigned)g(to)h(the)f Fs(rl_startup_hook)c Ft(v)-5 b(ariable)38 b(\(see)g(Section)g(2.3)g([Readline)g(V)-8 b(ariables],)150 2115 y(page)31 b(27\).)275 2260 y(These)f(functions)g (manage)h(k)m(ey)g(bindings.)3350 2465 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_key)c Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 1441 2465 30 5 v 43 w(command)p 1904 2465 V 45 w(func)p 2133 2465 V 45 w(t)h(*function)p Fg(\))390 2575 y Ft(Binds)f Fj(k)m(ey)42 b Ft(to)34 b Fj(function)e Ft(in)h(the)g(curren)m(tly)g(activ)m(e)i(k)m(eymap.)49 b(Returns)32 b(non-zero)i(in)f(the)g(case)390 2685 y(of)e(an)f(in)m(v) -5 b(alid)31 b Fj(k)m(ey)p Ft(.)3350 2890 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_key_in_map)e Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 1807 2890 V 43 w(command)p 2270 2890 V 45 w(func)p 2499 2890 V 45 w(t)h(*function,)565 2999 y(Keymap)h(map)p Fg(\))390 3109 y Ft(Bind)c Fj(k)m(ey)39 b Ft(to)31 b Fj(function)f Ft(in)g Fj(map)p Ft(.)40 b(Returns)30 b(non-zero)h(in)f(the)h(case)g(of)f(an)h(in)m(v)-5 b(alid)31 b Fj(k)m(ey)p Ft(.)3350 3314 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_key_if_unboun)q(d)e Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 2016 3314 V 44 w(command)p 2480 3314 V 44 w(func)p 2708 3314 V 45 w(t)565 3424 y(*function)p Fg(\))390 3533 y Ft(Binds)43 b Fj(k)m(ey)53 b Ft(to)45 b Fj(function)e Ft(if)h(it)h(is)f(not)g(already)g(b)s(ound)e(in)i(the)g (curren)m(tly)g(activ)m(e)i(k)m(eymap.)390 3643 y(Returns)29 b(non-zero)i(in)f(the)h(case)g(of)g(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(ey)39 b Ft(or)30 b(if)h Fj(k)m(ey)39 b Ft(is)30 b(already)h(b)s(ound.)3350 3848 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_key_if_unboun)q(d_in)q(_ma)q(p)e Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 2382 3848 V 44 w(command)p 2846 3848 V 44 w(func)p 3074 3848 V 46 w(t)565 3958 y(*function,)i(Keymap)g(map)p Fg(\))390 4067 y Ft(Binds)27 b Fj(k)m(ey)36 b Ft(to)28 b Fj(function)f Ft(if)g(it)h(is)f(not)h(already)g(b)s(ound)d(in)i Fj(map)p Ft(.)39 b(Returns)27 b(non-zero)g(in)g(the)h(case)390 4177 y(of)j(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(ey)39 b Ft(or)30 b(if)g Fj(k)m(ey)39 b Ft(is)31 b(already)g(b)s(ound.)3350 4382 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_key)d Fg(\()p Ff(in)m(t)33 b(k)m(ey)p Fg(\))390 4491 y Ft(Bind)j Fj(k)m(ey)45 b Ft(to)37 b(the)f(n)m(ull)g(function)g(in)g(the)h(curren) m(tly)f(activ)m(e)i(k)m(eymap.)59 b(Returns)35 b(non-zero)i(in)390 4601 y(case)31 b(of)g(error.)3350 4806 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_key_in_map)f Fg(\()p Ff(in)m(t)33 b(k)m(ey)-8 b(,)33 b(Keymap)g(map)p Fg(\))390 4916 y Ft(Bind)d Fj(k)m(ey)39 b Ft(to)31 b(the)g(n)m(ull)f(function)g(in)g Fj(map)p Ft(.)40 b(Returns)30 b(non-zero)h(in)f(case)h(of)g(error.)3350 5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_function_in)q (_map)f Fg(\()p Ff(rl)p 1821 5121 V 44 w(command)p 2285 5121 V 45 w(func)p 2514 5121 V 45 w(t)33 b(*function,)565 5230 y(Keymap)h(map)p Fg(\))390 5340 y Ft(Un)m(bind)29 b(all)i(k)m(eys)g(that)g(execute)h Fj(function)e Ft(in)g Fj(map)p Ft(.)p eop end %%Page: 35 39 TeXDict begin 35 38 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(35)3350 299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_command_in_)q(map) f Fg(\()p Ff(const)34 b(c)m(har)g(*command,)f(Keymap)565 408 y(map)p Fg(\))390 518 y Ft(Un)m(bind)c(all)i(k)m(eys)g(that)g(are)g (b)s(ound)e(to)i Fj(command)i Ft(in)d Fj(map)p Ft(.)3350 707 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_keyseq)d Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(rl)p 2119 707 30 5 v 44 w(command)p 2583 707 V 44 w(func)p 2811 707 V 46 w(t)565 817 y(*function)p Fg(\))390 927 y Ft(Bind)43 b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g(the)g(string)g Fj(k)m(eyseq)j Ft(to)e(the)f(function)g Fj(function)p Ft(,)390 1036 y(b)s(eginning)27 b(in)h(the)h(curren)m(t)f(k)m(eymap.)40 b(This)28 b(mak)m(es)h(new)e(k)m(eymaps)i(as)f(necessary)-8 b(.)41 b(The)28 b(return)390 1146 y(v)-5 b(alue)31 b(is)f(non-zero)h (if)g Fj(k)m(eyseq)i Ft(is)d(in)m(v)-5 b(alid.)3350 1335 y([F)d(unction])-3599 b Fh(int)53 b(rl_bind_keyseq_in_map)f Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 1445 y(rl)p 639 1445 V 44 w(command)p 1103 1445 V 44 w(func)p 1331 1445 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390 1554 y Ft(Bind)25 b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g (the)g(string)g Fj(k)m(eyseq)j Ft(to)e(the)f(function)g Fj(function)p Ft(.)39 b(This)390 1664 y(mak)m(es)30 b(new)f(k)m(eymaps) g(as)g(necessary)-8 b(.)42 b(Initial)30 b(bindings)d(are)j(p)s (erformed)e(in)g Fj(map)p Ft(.)40 b(The)29 b(return)390 1773 y(v)-5 b(alue)31 b(is)f(non-zero)h(if)g Fj(k)m(eyseq)i Ft(is)d(in)m(v)-5 b(alid.)3350 1963 y([F)d(unction])-3599 b Fh(int)53 b(rl_set_key)c Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,) e(rl)p 1910 1963 V 44 w(command)p 2374 1963 V 44 w(func)p 2602 1963 V 45 w(t)h(*function,)565 2072 y(Keymap)h(map)p Fg(\))390 2182 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g Fs (rl_bind_keyseq_in_map)p Ft(.)3350 2371 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_keyseq_if_unb)q(ound)f Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 2481 y(rl)p 639 2481 V 44 w(command)p 1103 2481 V 44 w(func)p 1331 2481 V 45 w(t)f(*function)p Fg(\))390 2590 y Ft(Binds)i Fj(k)m(eyseq)k Ft(to)d Fj(function)f Ft(if)g(it)h(is)g(not)g(already)g(b)s(ound)d(in)i (the)h(curren)m(tly)f(activ)m(e)j(k)m(eymap.)390 2700 y(Returns)29 b(non-zero)i(in)f(the)h(case)g(of)g(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(eyseq)j Ft(or)c(if)g Fj(k)m(eyseq)k Ft(is)c(already)h(b)s(ound.)3350 2889 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_keyseq_if_unb)q(ound)q(_in)q(_ma)q(p)e Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 2999 y(rl)p 639 2999 V 44 w(command)p 1103 2999 V 44 w(func)p 1331 2999 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390 3108 y Ft(Binds)d Fj(k)m(eyseq)k Ft(to)e Fj(function)f Ft(if)g(it)g(is)g(not)g(already)h(b)s(ound)d(in)h Fj(map)p Ft(.)46 b(Returns)31 b(non-zero)h(in)g(the)390 3218 y(case)f(of)g(an)f (in)m(v)-5 b(alid)31 b Fj(k)m(eyseq)j Ft(or)c(if)g Fj(k)m(eyseq)k Ft(is)c(already)h(b)s(ound.)3350 3407 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_generic_bind)d Fg(\()p Ff(in)m(t)34 b(t)m(yp)s(e,)f(const)g(c)m(har)h(*k)m(eyseq,)f(c)m(har)h(*data,)565 3517 y(Keymap)g(map)p Fg(\))390 3626 y Ft(Bind)27 b(the)g(k)m(ey)h (sequence)f(represen)m(ted)g(b)m(y)g(the)g(string)g Fj(k)m(eyseq)j Ft(to)e(the)f(arbitrary)g(p)s(oin)m(ter)g Fj(data)p Ft(.)390 3736 y Fj(t)m(yp)s(e)34 b Ft(sa)m(ys)29 b(what)f(kind)g(of)g(data)h(is) g(p)s(oin)m(ted)f(to)h(b)m(y)g Fj(data)p Ft(;)h(this)e(can)h(b)s(e)f(a) g(function)g(\()p Fs(ISFUNC)p Ft(\),)h(a)390 3846 y(macro)h(\()p Fs(ISMACR)p Ft(\),)f(or)g(a)h(k)m(eymap)g(\()p Fs(ISKMAP)p Ft(\).)40 b(This)28 b(mak)m(es)j(new)e(k)m(eymaps)g(as)h(necessary)-8 b(.)41 b(The)390 3955 y(initial)32 b(k)m(eymap)e(in)h(whic)m(h)f(to)h (do)f(bindings)f(is)i Fj(map)p Ft(.)3350 4144 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_parse_and_bind)e Fg(\()p Ff(c)m(har)34 b(*line)p Fg(\))390 4254 y Ft(P)m(arse)c Fj(line)35 b Ft(as)29 b(if)h(it)g(had)e(b)s(een)h(read)g(from)g(the)h Fs(inputrc)d Ft(\014le)j(and)e(p)s(erform)g(an)m(y)i(k)m(ey)g(bindings) 390 4364 y(and)g(v)-5 b(ariable)31 b(assignmen)m(ts)g(found)e(\(see)i (Section)h(1.3)f([Readline)g(Init)f(File],)j(page)e(4\).)3350 4553 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_read_init_file)e Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename)p Fg(\))390 4663 y Ft(Read)e(k)m(eybindings)f(and)g(v)-5 b(ariable)32 b(assignmen)m(ts)g(from)f Fj(\014lename)37 b Ft(\(see)32 b(Section)g(1.3)h([Readline)390 4772 y(Init)d(File],)i(page)f(4\).)150 4974 y Fi(2.4.4)63 b(Asso)s(ciating)41 b(F)-10 b(unction)42 b(Names)f(and)g(Bindings)150 5121 y Ft(These)30 b(functions)g(allo)m(w) h(y)m(ou)g(to)f(\014nd)f(out)h(what)g(k)m(eys)h(in)m(v)m(ok)m(e)h (named)e(functions)g(and)f(the)h(functions)150 5230 y(in)m(v)m(ok)m(ed) f(b)m(y)e(a)h(particular)g(k)m(ey)g(sequence.)40 b(Y)-8 b(ou)28 b(ma)m(y)g(also)h(asso)s(ciate)g(a)f(new)f(function)g(name)h (with)f(an)150 5340 y(arbitrary)j(function.)p eop end %%Page: 36 40 TeXDict begin 36 39 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(36)3350 299 y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57 b(*)c(rl_named_function)e Fg(\()p Ff(const)34 b(c)m(har)g(*name)p Fg(\))390 408 y Ft(Return)c(the)g(function)g(with)g(name)h Fj(name)p Ft(.)3350 607 y([F)-8 b(unction])-3599 b Fh (rl_command_func_t)57 b(*)c(rl_function_of_keyseq)f Fg(\()p Ff(const)34 b(c)m(har)565 716 y(*k)m(eyseq,)f(Keymap)g(map,)g(in)m(t)h (*t)m(yp)s(e)p Fg(\))390 826 y Ft(Return)e(the)g(function)h(in)m(v)m (ok)m(ed)h(b)m(y)e Fj(k)m(eyseq)k Ft(in)c(k)m(eymap)h Fj(map)p Ft(.)47 b(If)32 b Fj(map)j Ft(is)d Fs(NULL)p Ft(,)g(the)h(curren)m(t)390 936 y(k)m(eymap)k(is)g(used.)60 b(If)37 b Fj(t)m(yp)s(e)42 b Ft(is)37 b(not)g Fs(NULL)p Ft(,)h(the)f(t)m(yp)s(e)g(of)g(the)g(ob)5 b(ject)38 b(is)f(returned)f (in)h(the)g Fs(int)390 1045 y Ft(v)-5 b(ariable)30 b(it)g(p)s(oin)m(ts) g(to)g(\(one)g(of)g Fs(ISFUNC)p Ft(,)e Fs(ISKMAP)p Ft(,)g(or)i Fs(ISMACR)p Ft(\).)39 b(It)30 b(tak)m(es)h(a)f Fs(")p Ft(translated)p Fs(")f Ft(k)m(ey)390 1155 y(sequence)i(and)f(should)f (not)i(b)s(e)e(used)h(if)g(the)h(k)m(ey)g(sequence)g(can)f(include)g (NUL.)3350 1353 y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57 b(*)c(rl_function_of_keyseq_)q(len)f Fg(\()p Ff(const)34 b(c)m(har)565 1463 y(*k)m(eyseq,)f(size)p 1121 1463 30 5 v 44 w(t)g(len,)g(Keymap)h(map,)f(in)m(t)g(*t)m(yp)s(e)p Fg(\))390 1572 y Ft(Return)20 b(the)h(function)g(in)m(v)m(ok)m(ed)i(b)m (y)e Fj(k)m(eyseq)j Ft(of)d(length)g Fj(len)h Ft(in)e(k)m(eymap)i Fj(map)p Ft(.)37 b(Equiv)-5 b(alen)m(t)22 b(to)g Fs(rl_)390 1682 y(function_of_keyseq)g Ft(with)28 b(the)f(addition)h(of)f(the)h Fj(len)f Ft(parameter.)41 b(It)27 b(tak)m(es)i(a)f Fs(")p Ft(translated)p Fs(")390 1792 y Ft(k)m(ey)j(sequence)g(and)f(should)f (b)s(e)h(used)f(if)i(the)f(k)m(ey)h(sequence)g(can)g(include)f(NUL.) 3350 1990 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e (rl_invoking_keyseqs)g Fg(\()p Ff(rl)p 1717 1990 V 44 w(command)p 2181 1990 V 44 w(func)p 2409 1990 V 45 w(t)33 b(*function)p Fg(\))390 2100 y Ft(Return)d(an)i(arra)m(y)f(of)h (strings)f(represen)m(ting)g(the)g(k)m(ey)h(sequences)g(used)e(to)i(in) m(v)m(ok)m(e)h Fj(function)e Ft(in)390 2209 y(the)g(curren)m(t)f(k)m (eymap.)3350 2408 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e(rl_invoking_keyseqs_i)q(n_m)q(ap)g Fg(\()p Ff(rl)p 2083 2408 V 44 w(command)p 2547 2408 V 44 w(func)p 2775 2408 V 45 w(t)565 2517 y(*function,)34 b(Keymap)g(map)p Fg(\))390 2627 y Ft(Return)c(an)i(arra)m(y)f(of)h(strings)f(represen)m (ting)g(the)g(k)m(ey)h(sequences)g(used)e(to)i(in)m(v)m(ok)m(e)h Fj(function)e Ft(in)390 2736 y(the)g(k)m(eymap)f Fj(map)p Ft(.)3350 2935 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_function_dumper)c Fg(\()p Ff(in)m(t)34 b(readable)p Fg(\))390 3044 y Ft(Prin)m(t)29 b(the)h(readline)f(function)g(names)g (and)g(the)g(k)m(ey)h(sequences)g(curren)m(tly)f(b)s(ound)e(to)j(them)f (to)390 3154 y Fs(rl_outstream)p Ft(.)36 b(If)27 b Fj(readable)33 b Ft(is)28 b(non-zero,)h(the)e(list)i(is)e(formatted)h(in)f(suc)m(h)g (a)h(w)m(a)m(y)h(that)f(it)g(can)390 3264 y(b)s(e)i(made)g(part)g(of)h (an)f Fs(inputrc)f Ft(\014le)h(and)g(re-read.)3350 3462 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_list_funmap_names)d Fg(\()p Ff(v)m(oid)p Fg(\))390 3572 y Ft(Prin)m(t)30 b(the)h(names)f(of)h(all)g(bindable)f(Readline)h(functions)f(to)h Fs(rl_outstream)p Ft(.)3350 3770 y([F)-8 b(unction])-3599 b Fh(const)54 b(char)f(**)g(rl_funmap_names)d Fg(\()p Ff(v)m(oid)p Fg(\))390 3880 y Ft(Return)25 b(a)i(NULL)f(terminated)g (arra)m(y)h(of)f(kno)m(wn)f(function)h(names.)39 b(The)26 b(arra)m(y)g(is)g(sorted.)39 b(The)390 3989 y(arra)m(y)28 b(itself)h(is)f(allo)s(cated,)j(but)c(not)h(the)h(strings)e(inside.)40 b(Y)-8 b(ou)29 b(should)e(free)h(the)g(arra)m(y)-8 b(,)29 b(but)f(not)390 4099 y(the)j(p)s(oin)m(ters,)f(using)g Fs(free)f Ft(or)i Fs(rl_free)d Ft(when)h(y)m(ou)i(are)g(done.)3350 4297 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_funmap_entry)e Fg(\()p Ff(const)34 b(c)m(har)g(*name,)g(rl)p 2331 4297 V 43 w(command)p 2794 4297 V 45 w(func)p 3023 4297 V 45 w(t)565 4407 y(*function)p Fg(\))390 4516 y Ft(Add)e Fj(name)38 b Ft(to)33 b(the)g(list)h(of)f(bindable)f(Readline)h (command)g(names,)g(and)f(mak)m(e)i Fj(function)f Ft(the)390 4626 y(function)d(to)h(b)s(e)f(called)h(when)f Fj(name)35 b Ft(is)c(in)m(v)m(ok)m(ed.)150 4832 y Fi(2.4.5)63 b(Allo)m(wing)41 b(Undoing)150 4979 y Ft(Supp)s(orting)34 b(the)i(undo)e(command)i(is)g (a)g(painless)g(thing,)h(and)e(mak)m(es)i(y)m(our)f(functions)f(m)m(uc) m(h)h(more)150 5089 y(useful.)k(It)30 b(is)h(certainly)g(easy)g(to)g (try)g(something)g(if)f(y)m(ou)h(kno)m(w)f(y)m(ou)h(can)f(undo)g(it.) 275 5230 y(If)40 b(y)m(our)h(function)f(simply)g(inserts)h(text)h (once,)i(or)d(deletes)h(text)g(once,)i(and)c(uses)h Fs(rl_insert_)150 5340 y(text\(\))26 b Ft(or)i Fs(rl_delete_text\(\))23 b Ft(to)29 b(do)f(it,)h(then)f(undoing)f(is)g(already)i(done)f(for)f(y) m(ou)h(automatically)-8 b(.)p eop end %%Page: 37 41 TeXDict begin 37 40 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(37)275 299 y(If)20 b(y)m(ou)g(do)h(m)m(ultiple)g(insertions)f(or)h(m)m (ultiple)g(deletions,)j(or)c(an)m(y)h(com)m(bination)h(of)e(these)h(op) s(erations,)150 408 y(y)m(ou)38 b(should)f(group)h(them)g(together)h (in)m(to)g(one)f(op)s(eration.)64 b(This)37 b(is)h(done)g(with)g Fs(rl_begin_undo_)150 518 y(group\(\))28 b Ft(and)i Fs (rl_end_undo_group\(\))p Ft(.)275 649 y(The)f(t)m(yp)s(es)i(of)f(ev)m (en)m(ts)i(that)f(can)g(b)s(e)e(undone)h(are:)390 757 y Fe(enum)40 b(undo_code)h({)f(UNDO_DELETE,)i(UNDO_INSERT,)g (UNDO_BEGIN,)g(UNDO_END)f(};)275 887 y Ft(Notice)32 b(that)f Fs(UNDO_DELETE)c Ft(means)j(to)h(insert)f(some)h(text,)h(and)d Fs(UNDO_INSERT)e Ft(means)k(to)g(delete)150 997 y(some)d(text.)41 b(That)27 b(is,)i(the)e(undo)g(co)s(de)h(tells)g(what)g(to)g(undo,)f (not)h(ho)m(w)g(to)g(undo)e(it.)41 b Fs(UNDO_BEGIN)25 b Ft(and)150 1106 y Fs(UNDO_END)j Ft(are)j(tags)g(added)f(b)m(y)g Fs(rl_begin_undo_group\(\))25 b Ft(and)30 b Fs(rl_end_undo_group\(\))p Ft(.)3350 1279 y([F)-8 b(unction])-3599 b Fh(int)53 b (rl_begin_undo_group)e Fg(\()p Ff(v)m(oid)p Fg(\))390 1388 y Ft(Begins)32 b(sa)m(ving)g(undo)d(information)j(in)e(a)i(group)e (construct.)43 b(The)30 b(undo)g(information)h(usually)390 1498 y(comes)42 b(from)f(calls)i(to)f Fs(rl_insert_text\(\))37 b Ft(and)k Fs(rl_delete_text\(\))p Ft(,)f(but)h(could)h(b)s(e)f(the)390 1608 y(result)30 b(of)h(calls)g(to)g Fs(rl_add_undo\(\))p Ft(.)3350 1780 y([F)-8 b(unction])-3599 b Fh(int)53 b (rl_end_undo_group)e Fg(\()p Ff(v)m(oid)p Fg(\))390 1890 y Ft(Closes)29 b(the)h(curren)m(t)e(undo)g(group)h(started)g(with)g Fs(rl_begin_undo_group)c(\(\))p Ft(.)39 b(There)29 b(should)390 1999 y(b)s(e)h(one)g(call)i(to)f Fs(rl_end_undo_group\(\))25 b Ft(for)30 b(eac)m(h)i(call)g(to)f Fs(rl_begin_undo_group\(\))p Ft(.)3350 2172 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_add_undo)48 b Fg(\()p Ff(en)m(um)35 b(undo)p 1558 2172 30 5 v 45 w(co)s(de)e(what,)g(in)m(t)g(start,)g(in)m(t)g(end,)h(c) m(har)565 2281 y(*text)p Fg(\))390 2391 y Ft(Remem)m(b)s(er)g(ho)m(w)g (to)h(undo)d(an)i(ev)m(en)m(t)i(\(according)f(to)g Fj(what)r Ft(\).)52 b(The)33 b(a\013ected)j(text)f(runs)d(from)390 2500 y Fj(start)h Ft(to)e Fj(end)p Ft(,)f(and)g(encompasses)h Fj(text)p Ft(.)3350 2673 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_free_undo_list)c Fg(\()p Ff(v)m(oid)p Fg(\))390 2783 y Ft(F)-8 b(ree)31 b(the)g(existing)g(undo)f(list.)3350 2955 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_do_undo)c Fg(\()p Ff(v)m(oid)p Fg(\))390 3065 y Ft(Undo)22 b(the)h(\014rst)g (thing)f(on)h(the)g(undo)f(list.)39 b(Returns)22 b Fs(0)g Ft(if)h(there)g(w)m(as)g(nothing)g(to)h(undo,)f(non-zero)390 3174 y(if)30 b(something)h(w)m(as)g(undone.)275 3347 y(Finally)-8 b(,)32 b(if)f(y)m(ou)h(neither)f(insert)g(nor)f(delete)j (text,)f(but)f(directly)g(mo)s(dify)g(the)g(existing)h(text)g(\(e.g.,) 150 3456 y(c)m(hange)40 b(its)f(case\),)j(call)e Fs(rl_modifying\(\))35 b Ft(once,)42 b(just)c(b)s(efore)g(y)m(ou)h(mo)s(dify)f(the)h(text.)67 b(Y)-8 b(ou)39 b(m)m(ust)150 3566 y(supply)29 b(the)h(indices)h(of)f (the)h(text)g(range)g(that)g(y)m(ou)g(are)g(going)g(to)g(mo)s(dify)-8 b(.)3350 3738 y([F)g(unction])-3599 b Fh(int)53 b(rl_modifying)c Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)i(end)p Fg(\))390 3848 y Ft(T)-8 b(ell)41 b(Readline)g(to)g(sa)m(v)m(e)g(the)g(text)g(b)s (et)m(w)m(een)g Fj(start)i Ft(and)c Fj(end)k Ft(as)e(a)f(single)h(undo) e(unit.)70 b(It)40 b(is)390 3957 y(assumed)30 b(that)h(y)m(ou)f(will)h (subsequen)m(tly)f(mo)s(dify)f(that)i(text.)150 4149 y Fi(2.4.6)63 b(Redispla)m(y)3350 4338 y Ft([F)-8 b(unction])-3599 b Fh(void)54 b(rl_redisplay)49 b Fg(\()p Ff(v)m(oid)p Fg(\))390 4447 y Ft(Change)38 b(what's)f(displa)m(y)m(ed)i(on)e(the)h (screen)g(to)h(re\015ect)f(the)g(curren)m(t)g(con)m(ten)m(ts)h(of)f Fs(rl_line_)390 4557 y(buffer)p Ft(.)3350 4729 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_forced_update_disp)q(lay)f Fg(\()p Ff(v)m(oid)p Fg(\))390 4839 y Ft(F)-8 b(orce)41 b(the)f(line)g(to)h(b)s(e)e(up)s(dated)f(and)h(redispla)m(y)m(ed,)k (whether)c(or)g(not)h(Readline)h(thinks)e(the)390 4948 y(screen)30 b(displa)m(y)h(is)f(correct.)3350 5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_on_new_line)d Fg(\()p Ff(v)m(oid)p Fg(\))390 5230 y Ft(T)-8 b(ell)31 b(the)f(up)s(date)f (functions)g(that)i(w)m(e)f(ha)m(v)m(e)h(mo)m(v)m(ed)g(on)m(to)g(a)f (new)f(\(empt)m(y\))i(line,)g(usually)e(after)390 5340 y(outputting)i(a)f(newline.)p eop end %%Page: 38 42 TeXDict begin 38 41 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(38)3350 299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_on_new_line_with_p)q (romp)q(t)f Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(T)-8 b(ell)25 b(the)f(up)s(date)f(functions)h(that)h(w)m(e)f(ha)m(v)m(e)h (mo)m(v)m(ed)g(on)m(to)h(a)e(new)g(line,)i(with)d Fj(rl)p 3106 408 28 4 v 40 w(prompt)i Ft(already)390 518 y(displa)m(y)m(ed.)41 b(This)28 b(could)g(b)s(e)g(used)g(b)m(y)g(applications)i(that)f(w)m (an)m(t)h(to)f(output)f(the)h(prompt)f(string)390 628 y(themselv)m(es,)h(but)e(still)h(need)g(Readline)g(to)g(kno)m(w)f(the)h (prompt)e(string)h(length)h(for)f(redispla)m(y)-8 b(.)41 b(It)390 737 y(should)29 b(b)s(e)h(used)g(after)h(setting)g Fj(rl)p 1590 737 V 40 w(already)p 1920 737 V 41 w(prompted)p Ft(.)3350 920 y([F)-8 b(unction])-3599 b Fh(int)53 b (rl_clear_visible_line)f Fg(\()p Ff(v)m(oid)p Fg(\))390 1029 y Ft(Clear)31 b(the)f(screen)h(lines)f(corresp)s(onding)g(to)h (the)f(curren)m(t)g(line's)h(con)m(ten)m(ts.)3350 1212 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_reset_line_state)e Fg(\()p Ff(v)m(oid)p Fg(\))390 1322 y Ft(Reset)36 b(the)e(displa)m(y)h (state)h(to)g(a)f(clean)g(state)h(and)e(redispla)m(y)h(the)g(curren)m (t)g(line)g(starting)g(on)g(a)390 1431 y(new)30 b(line.)3350 1614 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_crlf)48 b Fg(\()p Ff(v)m(oid)p Fg(\))390 1724 y Ft(Mo)m(v)m(e)32 b(the)f(cursor)f(to)h(the)f(start)h(of)g(the)f(next)h(screen)f(line.) 3350 1906 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_show_char)c Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 2016 y Ft(Displa)m(y)g(c)m (haracter)g Fj(c)k Ft(on)32 b Fs(rl_outstream)p Ft(.)44 b(If)32 b(Readline)h(has)g(not)f(b)s(een)g(set)h(to)g(displa)m(y)g (meta)390 2125 y(c)m(haracters)27 b(directly)-8 b(,)29 b(this)c(will)i(con)m(v)m(ert)g(meta)g(c)m(haracters)h(to)e(a)h (meta-pre\014xed)f(k)m(ey)g(sequence.)390 2235 y(This)k(is)g(in)m (tended)g(for)g(use)g(b)m(y)h(applications)g(whic)m(h)f(wish)g(to)h(do) f(their)h(o)m(wn)f(redispla)m(y)-8 b(.)3350 2418 y([F)g(unction])-3599 b Fh(int)53 b(rl_message)c Fg(\()p Ff(const)34 b(c)m(har)g(*,)k(.)24 b(.)g(.)12 b Fg(\))390 2527 y Ft(The)20 b(argumen)m(ts)h(are)g(a)g (format)g(string)g(as)f(w)m(ould)h(b)s(e)f(supplied)f(to)j Fs(printf)p Ft(,)f(p)s(ossibly)e(con)m(taining)390 2637 y(con)m(v)m(ersion)45 b(sp)s(eci\014cations)g(suc)m(h)f(as)g(`)p Fs(\045d)p Ft(',)k(and)c(an)m(y)g(additional)h(argumen)m(ts)g (necessary)f(to)390 2746 y(satisfy)e(the)f(con)m(v)m(ersion)i(sp)s (eci\014cations.)74 b(The)41 b(resulting)h(string)f(is)g(displa)m(y)m (ed)h(in)f(the)h Fj(ec)m(ho)390 2856 y(area)p Ft(.)63 b(The)37 b(ec)m(ho)i(area)f(is)g(also)g(used)f(to)h(displa)m(y)g(n)m (umeric)f(argumen)m(ts)h(and)f(searc)m(h)h(strings.)390 2966 y(Y)-8 b(ou)34 b(should)e(call)j Fs(rl_save_prompt)29 b Ft(to)34 b(sa)m(v)m(e)h(the)f(prompt)e(information)i(b)s(efore)f (calling)i(this)390 3075 y(function.)3350 3258 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_clear_message)e Fg(\()p Ff(v)m(oid)p Fg(\))390 3367 y Ft(Clear)29 b(the)g(message)h(in)f(the)g (ec)m(ho)h(area.)41 b(If)29 b(the)g(prompt)f(w)m(as)h(sa)m(v)m(ed)h (with)f(a)g(call)i(to)e Fs(rl_save_)390 3477 y(prompt)38 b Ft(b)s(efore)h(the)g(last)h(call)h(to)f Fs(rl_message)p Ft(,)f(call)i Fs(rl_restore_prompt)34 b Ft(b)s(efore)39 b(calling)390 3587 y(this)30 b(function.)3350 3769 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_save_prompt)49 b Fg(\()p Ff(v)m(oid)p Fg(\))390 3879 y Ft(Sa)m(v)m(e)44 b(the)f(lo)s(cal)i (Readline)e(prompt)f(displa)m(y)i(state)g(in)f(preparation)g(for)g (displa)m(ying)g(a)g(new)390 3988 y(message)31 b(in)g(the)f(message)i (area)f(with)f Fs(rl_message\(\))p Ft(.)3350 4171 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_restore_prompt)c Fg(\()p Ff(v)m(oid)p Fg(\))390 4281 y Ft(Restore)44 b(the)e(lo)s(cal)i (Readline)g(prompt)d(displa)m(y)i(state)h(sa)m(v)m(ed)g(b)m(y)f(the)f (most)h(recen)m(t)h(call)g(to)390 4390 y Fs(rl_save_prompt)p Ft(.)69 b(if)41 b Fs(rl_save_prompt)d Ft(w)m(as)j(called)i(to)f(sa)m(v) m(e)h(the)e(prompt)f(b)s(efore)h(a)h(call)390 4500 y(to)37 b Fs(rl_message)p Ft(,)f(this)h(function)f(should)g(b)s(e)g(called)i(b) s(efore)f(the)g(corresp)s(onding)e(call)j(to)g Fs(rl_)390 4609 y(clear_message)p Ft(.)3350 4792 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_expand_prompt)e Fg(\()p Ff(c)m(har)34 b(*prompt)p Fg(\))390 4902 y Ft(Expand)41 b(an)m(y)j(sp)s(ecial)f(c)m (haracter)h(sequences)f(in)g Fj(prompt)g Ft(and)f(set)i(up)d(the)i(lo)s (cal)h(Readline)390 5011 y(prompt)35 b(redispla)m(y)h(v)-5 b(ariables.)57 b(This)35 b(function)h(is)g(called)h(b)m(y)e Fs(readline\(\))p Ft(.)55 b(It)35 b(ma)m(y)i(also)g(b)s(e)390 5121 y(called)22 b(to)g(expand)f(the)g(primary)f(prompt)g(if)i(the)f Fs(rl_on_new_line_with_prom)o(pt\()o(\))15 b Ft(function)390 5230 y(or)25 b Fs(rl_already_prompted)c Ft(v)-5 b(ariable)26 b(is)f(used.)39 b(It)25 b(returns)f(the)i(n)m(um)m(b)s(er)e(of)i (visible)f(c)m(haracters)390 5340 y(on)34 b(the)g(last)g(line)g(of)g (the)g(\(p)s(ossibly)f(m)m(ulti-line\))j(prompt.)50 b(Applications)34 b(ma)m(y)h(indicate)f(that)p eop end %%Page: 39 43 TeXDict begin 39 42 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(39)390 299 y(the)28 b(prompt)f(con)m(tains)i(c)m(haracters)g(that)g(tak)m(e)g (up)e(no)h(ph)m(ysical)g(screen)g(space)g(when)f(displa)m(y)m(ed)390 408 y(b)m(y)41 b(brac)m(k)m(eting)i(a)e(sequence)g(of)g(suc)m(h)g(c)m (haracters)h(with)f(the)g(sp)s(ecial)h(mark)m(ers)f Fs(RL_PROMPT_)390 518 y(START_IGNORE)29 b Ft(and)j Fs(RL_PROMPT_END_IGNORE)26 b Ft(\(declared)33 b(in)f Fs(readline.h)p Ft(\).)44 b(This)32 b(ma)m(y)h(b)s(e)390 628 y(used)d(to)h(em)m(b)s(ed)f(terminal-sp)s (eci\014c)h(escap)s(e)f(sequences)h(in)f(prompts.)3350 824 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_prompt)d Fg(\()p Ff(const)34 b(c)m(har)g(*prompt)p Fg(\))390 934 y Ft(Mak)m(e)28 b(Readline)g(use)f Fj(prompt)h Ft(for)e(subsequen)m(t)h (redispla)m(y)-8 b(.)40 b(This)26 b(calls)i Fs(rl_expand_prompt\(\))390 1043 y Ft(to)j(expand)f(the)g(prompt)g(and)g(sets)g Fs(rl_prompt)e Ft(to)j(the)g(result.)150 1249 y Fi(2.4.7)63 b(Mo)s(difying)43 b(T)-10 b(ext)3350 1452 y Ft([F)i(unction])-3599 b Fh(int)53 b(rl_insert_text)d Fg(\()p Ff(const)34 b(c)m(har)g(*text)p Fg(\))390 1561 y Ft(Insert)d Fj(text)k Ft(in)m(to)d(the)g(line)g(at)g (the)g(curren)m(t)f(cursor)g(p)s(osition.)45 b(Returns)30 b(the)i(n)m(um)m(b)s(er)f(of)g(c)m(har-)390 1671 y(acters)g(inserted.) 3350 1867 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_delete_text)d Fg(\()p Ff(in)m(t)33 b(start,)g(in)m(t)g(end)p Fg(\))390 1977 y Ft(Delete)40 b(the)e(text)h(b)s(et)m(w)m(een)f Fj(start)i Ft(and)d Fj(end)k Ft(in)c(the)h(curren)m(t)g(line.)63 b(Returns)36 b(the)i(n)m(um)m(b)s(er)f(of)390 2086 y(c)m(haracters)32 b(deleted.)3350 2283 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_copy_text)d Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)h(end)p Fg(\))390 2392 y Ft(Return)d(a)g(cop)m(y)h(of)g(the)g(text)g(b)s(et)m (w)m(een)g Fj(start)i Ft(and)d Fj(end)j Ft(in)d(the)h(curren)m(t)f (line.)3350 2589 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_kill_text)c Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)i(end)p Fg(\))390 2698 y Ft(Cop)m(y)g(the)g(text)i(b)s(et)m(w)m(een)e Fj(start)j Ft(and)d Fj(end)j Ft(in)d(the)g(curren)m(t)g(line)g(to)h (the)f(kill)h(ring,)g(app)s(ending)390 2808 y(or)f(prep)s(ending)e(to)j (the)f(last)h(kill)f(if)g(the)g(last)h(command)f(w)m(as)g(a)h(kill)f (command.)51 b(The)34 b(text)h(is)390 2918 y(deleted.)51 b(If)33 b Fj(start)j Ft(is)e(less)g(than)f Fj(end)p Ft(,)h(the)g(text)g (is)g(app)s(ended,)f(otherwise)h(prep)s(ended.)48 b(If)33 b(the)390 3027 y(last)e(command)f(w)m(as)h(not)g(a)f(kill,)i(a)f(new)e (kill)i(ring)g(slot)g(is)f(used.)3350 3224 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_push_macro_input)e Fg(\()p Ff(c)m(har)35 b(*macro)p Fg(\))390 3333 y Ft(Cause)28 b Fj(macro)33 b Ft(to)c(b)s(e)f(inserted)g(in)m(to)h(the)g(line,)g(as)f(if)h(it)f (had)g(b)s(een)g(in)m(v)m(ok)m(ed)h(b)m(y)f(a)h(k)m(ey)g(b)s(ound)d(to) 390 3443 y(a)31 b(macro.)41 b(Not)31 b(esp)s(ecially)h(useful;)e(use)g Fs(rl_insert_text\(\))c Ft(instead.)150 3648 y Fi(2.4.8)63 b(Character)39 b(Input)3350 3851 y Ft([F)-8 b(unction])-3599 b Fh(int)53 b(rl_read_key)c Fg(\()p Ff(v)m(oid)p Fg(\))390 3961 y Ft(Return)29 b(the)g(next)h(c)m(haracter)h(a)m(v)-5 b(ailable)32 b(from)d(Readline's)h(curren)m(t)f(input)g(stream.)41 b(This)28 b(han-)390 4070 y(dles)e(input)g(inserted)g(in)m(to)i(the)e (input)g(stream)h(via)g Fj(rl)p 2226 4070 28 4 v 40 w(p)s(ending)p 2583 4070 V 38 w(input)h Ft(\(see)f(Section)h(2.3)f([Read-)390 4180 y(line)40 b(V)-8 b(ariables],)43 b(page)d(27\))g(and)f Fs(rl_stuff_char\(\))p Ft(,)f(macros,)k(and)d(c)m(haracters)h(read)f (from)390 4289 y(the)34 b(k)m(eyb)s(oard.)52 b(While)35 b(w)m(aiting)g(for)f(input,)g(this)g(function)g(will)g(call)i(an)m(y)e (function)g(assigned)390 4399 y(to)d(the)g Fs(rl_event_hook)26 b Ft(v)-5 b(ariable.)3350 4596 y([F)d(unction])-3599 b Fh(int)53 b(rl_getc)48 b Fg(\()p Ff(FILE)33 b(*stream)p Fg(\))390 4705 y Ft(Return)20 b(the)i(next)f(c)m(haracter)i(a)m(v)-5 b(ailable)24 b(from)c Fj(stream)p Ft(,)k(whic)m(h)d(is)g(assumed)g(to)h (b)s(e)e(the)i(k)m(eyb)s(oard.)3350 4902 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_stuff_char)d Fg(\()p Ff(in)m(t)33 b(c)p Fg(\))390 5011 y Ft(Insert)f Fj(c)39 b Ft(in)m(to)34 b(the)f(Readline)g(input)f(stream.)49 b(It)33 b(will)g(b)s(e)f Fs(")p Ft(read)p Fs(")g Ft(b)s(efore)h(Readline)g(attempts)390 5121 y(to)27 b(read)g(c)m(haracters)h(from)f(the)g(terminal)g(with)f Fs(rl_read_key\(\))p Ft(.)36 b(Up)27 b(to)g(512)h(c)m(haracters)g(ma)m (y)390 5230 y(b)s(e)i(pushed)f(bac)m(k.)42 b Fs(rl_stuff_char)27 b Ft(returns)i(1)i(if)f(the)h(c)m(haracter)h(w)m(as)f(successfully)g (inserted;)390 5340 y(0)g(otherwise.)p eop end %%Page: 40 44 TeXDict begin 40 43 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(40)3350 299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_execute_next)d Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 408 y Ft(Mak)m(e)j Fj(c)42 b Ft(b)s(e)35 b(the)h(next)f(command)h(to)g(b)s(e)f(executed)i (when)d Fs(rl_read_key\(\))e Ft(is)k(called.)58 b(This)390 518 y(sets)31 b Fj(rl)p 635 518 28 4 v 40 w(p)s(ending)p 992 518 V 38 w(input)p Ft(.)3350 680 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_clear_pending_inpu)q(t)e Fg(\()p Ff(v)m(oid)p Fg(\))390 789 y Ft(Unset)42 b Fj(rl)p 729 789 V 40 w(p)s(ending)p 1086 789 V 38 w(input)p Ft(,)i(e\013ectiv)m(ely)h(negating)e(the)f (e\013ect)h(of)f(an)m(y)g(previous)f(call)i(to)g Fs(rl_)390 899 y(execute_next\(\))p Ft(.)59 b(This)36 b(w)m(orks)i(only)g(if)f (the)h(p)s(ending)e(input)h(has)g(not)h(already)g(b)s(een)f(read)390 1008 y(with)30 b Fs(rl_read_key\(\))p Ft(.)3350 1170 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_keyboard_input)q(_tim)q (eou)q(t)e Fg(\()p Ff(in)m(t)34 b(u)p Fg(\))390 1280 y Ft(While)41 b(w)m(aiting)g(for)f(k)m(eyb)s(oard)g(input)f(in)h Fs(rl_read_key\(\))p Ft(,)f(Readline)i(will)f(w)m(ait)h(for)f Fj(u)g Ft(mi-)390 1389 y(croseconds)31 b(for)g(input)f(b)s(efore)g (calling)j(an)m(y)e(function)f(assigned)i(to)f Fs(rl_event_hook)p Ft(.)39 b Fj(u)30 b Ft(m)m(ust)390 1499 y(b)s(e)h(greater)i(than)f(or)g (equal)g(to)h(zero)f(\(a)h(zero-length)g(timeout)g(is)f(equiv)-5 b(alen)m(t)33 b(to)g(a)f(p)s(oll\).)45 b(The)390 1608 y(default)31 b(w)m(aiting)g(p)s(erio)s(d)e(is)i(one-ten)m(th)g(of)g(a)g (second.)40 b(Returns)30 b(the)g(old)h(timeout)g(v)-5 b(alue.)150 1793 y Fi(2.4.9)63 b(T)-10 b(erminal)41 b(Managemen)m(t) 3350 1974 y Ft([F)-8 b(unction])-3599 b Fh(void)54 b(rl_prep_terminal)c Fg(\()p Ff(in)m(t)33 b(meta)p 1704 1974 30 5 v 44 w(\015ag)p Fg(\))390 2084 y Ft(Mo)s(dify)42 b(the)h(terminal)g(settings)g(for)f (Readline's)i(use,)h(so)e Fs(readline\(\))c Ft(can)k(read)f(a)h(single) 390 2193 y(c)m(haracter)32 b(at)g(a)f(time)h(from)e(the)h(k)m(eyb)s (oard.)43 b(The)30 b Fj(meta)p 2376 2193 28 4 v 41 w(\015ag)39 b Ft(argumen)m(t)31 b(should)f(b)s(e)g(non-zero)390 2303 y(if)g(Readline)h(should)f(read)g(eigh)m(t-bit)i(input.)3350 2465 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_deprep_terminal)c Fg(\()p Ff(v)m(oid)p Fg(\))390 2574 y Ft(Undo)31 b(the)h(e\013ects)h (of)f Fs(rl_prep_terminal\(\))p Ft(,)27 b(lea)m(ving)33 b(the)f(terminal)g(in)f(the)h(state)h(in)e(whic)m(h)390 2684 y(it)g(w)m(as)g(b)s(efore)f(the)g(most)h(recen)m(t)g(call)h(to)f Fs(rl_prep_terminal\(\))p Ft(.)3350 2845 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_tty_set_default_bindi)q(ngs)e Fg(\()p Ff(Keymap)34 b(kmap)p Fg(\))390 2955 y Ft(Read)j(the)g(op)s(erating)h (system's)f(terminal)g(editing)h(c)m(haracters)g(\(as)g(w)m(ould)e(b)s (e)h(displa)m(y)m(ed)g(b)m(y)390 3065 y Fs(stty)p Ft(\))30 b(to)h(their)f(Readline)h(equiv)-5 b(alen)m(ts.)42 b(The)30 b(bindings)f(are)i(p)s(erformed)e(in)h Fj(kmap)p Ft(.)3350 3226 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_tty_unset_default_bin)q (din)q(gs)e Fg(\()p Ff(Keymap)34 b(kmap)p Fg(\))390 3336 y Ft(Reset)f(the)f(bindings)e(manipulated)i(b)m(y)g Fs (rl_tty_set_default_bind)o(ing)o(s)26 b Ft(so)32 b(that)g(the)g(ter-) 390 3445 y(minal)40 b(editing)g(c)m(haracters)h(are)f(b)s(ound)e(to)i Fs(rl_insert)p Ft(.)66 b(The)39 b(bindings)f(are)i(p)s(erformed)e(in) 390 3555 y Fj(kmap)p Ft(.)3350 3717 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_tty_set_echoing)e Fg(\()p Ff(in)m(t)34 b(v)-6 b(alue)p Fg(\))390 3826 y Ft(Set)48 b(Readline's)g(idea)g(of)g (whether)f(or)g(not)h(it)g(is)f(ec)m(hoing)i(output)e(to)i(its)e (output)h(stream)390 3936 y(\()p Fj(rl)p 492 3936 V 40 w(outstream)p Ft(\).)j(If)32 b Fj(v)-5 b(alue)39 b Ft(is)34 b(0,)g(Readline)g(do)s(es)f(not)h(displa)m(y)f(output)g(to)h Fj(rl)p 3115 3936 V 40 w(outstream)p Ft(;)i(an)m(y)390 4045 y(other)43 b(v)-5 b(alue)43 b(enables)h(output.)77 b(The)43 b(initial)h(v)-5 b(alue)43 b(is)g(set)g(when)f(Readline)i (initializes)h(the)390 4155 y(terminal)31 b(settings.)42 b(This)29 b(function)h(returns)f(the)i(previous)f(v)-5 b(alue.)3350 4317 y([F)d(unction])-3599 b Fh(int)53 b (rl_reset_terminal)e Fg(\()p Ff(const)34 b(c)m(har)g(*terminal)p 2232 4317 30 5 v 43 w(name)p Fg(\))390 4426 y Ft(Reinitialize)26 b(Readline's)f(idea)f(of)g(the)g(terminal)h(settings)f(using)g Fj(terminal)p 2977 4426 28 4 v 40 w(name)29 b Ft(as)24 b(the)g(termi-)390 4536 y(nal)32 b(t)m(yp)s(e)g(\(e.g.,)i Fs(vt100)p Ft(\).)44 b(If)31 b Fj(terminal)p 1753 4536 V 41 w(name)37 b Ft(is)31 b Fs(NULL)p Ft(,)h(the)g(v)-5 b(alue)32 b(of)g(the)g Fs(TERM)e Ft(en)m(vironmen)m(t)390 4645 y(v)-5 b(ariable)31 b(is)g(used.)150 4830 y Fi(2.4.10)63 b(Utilit)m(y)40 b(F)-10 b(unctions)3350 5011 y Ft([F)i(unction])-3599 b Fh(int)53 b(rl_save_state)d Fg(\()p Ff(struct)34 b(readline)p 1759 5011 30 5 v 44 w(state)f(*sp)p Fg(\))390 5121 y Ft(Sa)m(v)m(e)d(a)f(snapshot)e(of)i(Readline's)g(in)m(ternal)g(state)h (to)f Fj(sp)p Ft(.)40 b(The)28 b(con)m(ten)m(ts)i(of)e(the)h Fj(readline)p 3518 5121 28 4 v 40 w(state)390 5230 y Ft(structure)g(are)g(do)s(cumen)m(ted)g(in)g Fs(readline.h)p Ft(.)38 b(The)28 b(caller)j(is)e(resp)s(onsible)f(for)h(allo)s(cating)j (the)390 5340 y(structure.)p eop end %%Page: 41 45 TeXDict begin 41 44 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(41)3350 299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_restore_state)e Fg(\()p Ff(struct)34 b(readline)p 1916 299 30 5 v 44 w(state)f(*sp)p Fg(\))390 408 y Ft(Restore)23 b(Readline's)g(in)m (ternal)g(state)g(to)g(that)g(stored)f(in)g Fj(sp)p Ft(,)i(whic)m(h)d (m)m(ust)h(ha)m(v)m(e)i(b)s(een)d(sa)m(v)m(ed)i(b)m(y)g(a)390 518 y(call)30 b(to)g Fs(rl_save_state)p Ft(.)37 b(The)28 b(con)m(ten)m(ts)j(of)e(the)g Fj(readline)p 2470 518 28 4 v 41 w(state)35 b Ft(structure)29 b(are)g(do)s(cumen)m(ted)390 628 y(in)h Fs(readline.h)p Ft(.)38 b(The)30 b(caller)i(is)e(resp)s (onsible)f(for)i(freeing)f(the)h(structure.)3350 810 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_free)47 b Fg(\()p Ff(v)m(oid)33 b(*mem)p Fg(\))390 920 y Ft(Deallo)s(cate)25 b(the)c(memory)g(p)s(oin)m(ted)g(to)h(b)m(y)f Fj(mem)p Ft(.)38 b Fj(mem)21 b Ft(m)m(ust)g(ha)m(v)m(e)i(b)s(een)d(allo)s(cated) j(b)m(y)e Fs(malloc)p Ft(.)3350 1103 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_replace_line)c Fg(\()p Ff(const)34 b(c)m(har)f(*text,)g(in)m(t)g(clear)p 2406 1103 30 5 v 44 w(undo)p Fg(\))390 1212 y Ft(Replace)41 b(the)e(con)m(ten)m(ts)i (of)f Fs(rl_line_buffer)35 b Ft(with)k Fj(text)p Ft(.)69 b(The)39 b(p)s(oin)m(t)h(and)e(mark)h(are)h(pre-)390 1322 y(serv)m(ed,)27 b(if)e(p)s(ossible.)39 b(If)25 b Fj(clear)p 1422 1322 28 4 v 41 w(undo)k Ft(is)d(non-zero,)h(the)f(undo) e(list)i(asso)s(ciated)h(with)e(the)h(curren)m(t)390 1431 y(line)31 b(is)f(cleared.)3350 1614 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_extend_line_buffer)d Fg(\()p Ff(in)m(t)34 b(len)p Fg(\))390 1724 y Ft(Ensure)29 b(that)h Fs(rl_line_buffer)d Ft(has)j(enough)f(space)i(to)g(hold)f Fj(len)g Ft(c)m(haracters,)i(p)s (ossibly)d(real-)390 1833 y(lo)s(cating)j(it)f(if)f(necessary)-8 b(.)3350 2016 y([F)g(unction])-3599 b Fh(int)53 b(rl_initialize)d Fg(\()p Ff(v)m(oid)p Fg(\))390 2125 y Ft(Initialize)39 b(or)e(re-initialize)i(Readline's)f(in)m(ternal)f(state.)62 b(It's)37 b(not)g(strictly)h(necessary)f(to)h(call)390 2235 y(this;)31 b Fs(readline\(\))c Ft(calls)32 b(it)f(b)s(efore)f (reading)g(an)m(y)h(input.)3350 2418 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_ding)48 b Fg(\()p Ff(v)m(oid)p Fg(\))390 2527 y Ft(Ring)30 b(the)h(terminal)g(b)s(ell,)f(ob)s(eying)h(the)f (setting)i(of)e Fs(bell-style)p Ft(.)3350 2710 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_alphabetic)d Fg(\()p Ff(in)m(t)33 b(c)p Fg(\))390 2819 y Ft(Return)d(1)g(if)h Fj(c)36 b Ft(is)30 b(an)h(alphab)s(etic)g(c)m(haracter.)3350 3002 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_display_match_list)d Fg(\()p Ff(c)m(har)35 b(**matc)m(hes,)e(in)m(t)g(len,)h(in)m(t)f(max)p Fg(\))390 3112 y Ft(A)i(con)m(v)m(enience)h(function)e(for)g(displa)m (ying)h(a)g(list)g(of)g(strings)f(in)g(columnar)g(format)h(on)f(Read-) 390 3221 y(line's)g(output)f(stream.)51 b Fs(matches)31 b Ft(is)j(the)f(list)i(of)e(strings,)i(in)e(argv)h(format,)h(suc)m(h)e (as)h(a)g(list)g(of)390 3331 y(completion)26 b(matc)m(hes.)39 b Fs(len)24 b Ft(is)g(the)g(n)m(um)m(b)s(er)f(of)i(strings)f(in)g Fs(matches)p Ft(,)f(and)h Fs(max)f Ft(is)i(the)f(length)h(of)390 3440 y(the)h(longest)i(string)e(in)g Fs(matches)p Ft(.)37 b(This)25 b(function)h(uses)g(the)g(setting)i(of)e Fs (print-completions-)390 3550 y(horizontally)33 b Ft(to)k(select)h(ho)m (w)e(the)g(matc)m(hes)i(are)e(displa)m(y)m(ed)h(\(see)g(Section)g (1.3.1)h([Readline)390 3660 y(Init)30 b(File)h(Syn)m(tax],)g(page)g (4\).)42 b(When)29 b(displa)m(ying)i(completions,)h(this)e(function)g (sets)g(the)g(n)m(um-)390 3769 y(b)s(er)23 b(of)g(columns)g(used)g(for) h(displa)m(y)f(to)i(the)e(v)-5 b(alue)24 b(of)g Fs (completion-display-width)p Ft(,)19 b(the)k(v)-5 b(alue)390 3879 y(of)31 b(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)31 b Fs(COLUMNS)p Ft(,)e(or)h(the)h(screen)f(width,)g(in)g(that)h(order.) 275 4061 y(The)g(follo)m(wing)j(are)e(implemen)m(ted)h(as)f(macros,)h (de\014ned)e(in)h Fs(chardefs.h)p Ft(.)43 b(Applications)33 b(should)150 4171 y(refrain)d(from)g(using)g(them.)3350 4354 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_uppercase_p)d Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 4463 y Ft(Return)c(1)g(if)h Fj(c)36 b Ft(is)30 b(an)h(upp)s(ercase)e(alphab)s(etic)i(c)m(haracter.) 3350 4646 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_lowercase_p)d Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 4756 y Ft(Return)c(1)g(if)h Fj(c)36 b Ft(is)30 b(a)h(lo)m(w)m(ercase)i(alphab)s(etic)e(c)m (haracter.)3350 4938 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_digit_p)c Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 5048 y Ft(Return)c(1)g(if)h Fj(c)36 b Ft(is)30 b(a)h(n)m(umeric)f(c)m (haracter.)3350 5230 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_to_upper)c Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 5340 y Ft(If)23 b Fj(c)30 b Ft(is)24 b(a)g(lo)m(w)m(ercase)i(alphab)s (etic)e(c)m(haracter,)j(return)c(the)h(corresp)s(onding)e(upp)s(ercase) h(c)m(haracter.)p eop end %%Page: 42 46 TeXDict begin 42 45 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(42)3350 299 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_to_lower)c Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 408 y Ft(If)28 b Fj(c)35 b Ft(is)29 b(an)g(upp)s(ercase)f(alphab)s(etic)h(c)m(haracter,) i(return)d(the)h(corresp)s(onding)f(lo)m(w)m(ercase)j(c)m(harac-)390 518 y(ter.)3350 712 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_digit_value)d Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 821 y Ft(If)c Fj(c)36 b Ft(is)31 b(a)f(n)m(um)m(b)s(er,)g(return)f(the) h(v)-5 b(alue)31 b(it)g(represen)m(ts.)150 1025 y Fi(2.4.11)63 b(Miscellaneous)42 b(F)-10 b(unctions)3350 1227 y Ft([F)i(unction]) -3599 b Fh(int)53 b(rl_macro_bind)d Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(const)i(c)m(har)g(*macro,)565 1336 y(Keymap)g(map)p Fg(\))390 1446 y Ft(Bind)23 b(the)g(k)m(ey)h (sequence)g Fj(k)m(eyseq)i Ft(to)e(in)m(v)m(ok)m(e)h(the)f(macro)f Fj(macro)p Ft(.)39 b(The)23 b(binding)f(is)i(p)s(erformed)d(in)390 1556 y Fj(map)p Ft(.)39 b(When)28 b Fj(k)m(eyseq)i Ft(is)e(in)m(v)m(ok) m(ed,)i(the)d Fj(macro)33 b Ft(will)28 b(b)s(e)f(inserted)g(in)m(to)i (the)e(line.)41 b(This)26 b(function)390 1665 y(is)k(deprecated;)i(use) e Fs(rl_generic_bind\(\))25 b Ft(instead.)3350 1859 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_macro_dumper)c Fg(\()p Ff(in)m(t)33 b(readable)p Fg(\))390 1968 y Ft(Prin)m(t)27 b(the)g(k)m(ey)h(sequences)g(b)s(ound)d(to)j(macros)f(and)g(their)g(v) -5 b(alues,)28 b(using)f(the)g(curren)m(t)g(k)m(eymap,)390 2078 y(to)32 b Fs(rl_outstream)p Ft(.)40 b(If)31 b Fj(readable)36 b Ft(is)c(non-zero,)g(the)f(list)h(is)f(formatted)h(in)f(suc)m(h)g(a)g (w)m(a)m(y)i(that)e(it)390 2188 y(can)g(b)s(e)e(made)i(part)f(of)h(an)f Fs(inputrc)e Ft(\014le)j(and)e(re-read.)3350 2381 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_variable_bind)e Fg(\()p Ff(const)34 b(c)m(har)f(*v)-6 b(ariable,)33 b(const)h(c)m(har)f(*v)-6 b(alue)p Fg(\))390 2491 y Ft(Mak)m(e)31 b(the)e(Readline)g(v)-5 b(ariable)30 b Fj(v)-5 b(ariable)35 b Ft(ha)m(v)m(e)30 b Fj(v)-5 b(alue)p Ft(.)41 b(This)28 b(b)s(eha)m(v)m(es)h(as)h(if)f (the)g(readline)g(com-)390 2600 y(mand)h(`)p Fs(set)g Fl(variable)e(value)p Ft(')h(had)h(b)s(een)h(executed)g(in)g(an)f Fs(inputrc)f Ft(\014le)i(\(see)h(Section)f(1.3.1)390 2710 y([Readline)g(Init)f(File)i(Syn)m(tax],)f(page)g(4\).)3350 2904 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_variable_value)f Fg(\()p Ff(const)34 b(c)m(har)g(*v)-6 b(ariable)p Fg(\))390 3013 y Ft(Return)28 b(a)i(string)f(represen)m(ting)h(the)f(v)-5 b(alue)30 b(of)f(the)h(Readline)g(v)-5 b(ariable)30 b Fj(v)-5 b(ariable)p Ft(.)41 b(F)-8 b(or)30 b(b)s(o)s(olean)390 3123 y(v)-5 b(ariables,)31 b(this)g(string)f(is)g(either)h(`)p Fs(on)p Ft(')f(or)h(`)p Fs(off)p Ft('.)3350 3317 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_variable_dumper)c Fg(\()p Ff(in)m(t)34 b(readable)p Fg(\))390 3426 y Ft(Prin)m(t)29 b(the)f(readline)h(v)-5 b(ariable)30 b(names)e(and)g(their)h(curren)m (t)f(v)-5 b(alues)29 b(to)h Fs(rl_outstream)p Ft(.)37 b(If)28 b Fj(read-)390 3536 y(able)40 b Ft(is)34 b(non-zero,)i(the)e (list)g(is)g(formatted)h(in)f(suc)m(h)g(a)g(w)m(a)m(y)h(that)g(it)f (can)g(b)s(e)g(made)g(part)g(of)g(an)390 3645 y Fs(inputrc)28 b Ft(\014le)j(and)f(re-read.)3350 3839 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_paren_blink_ti)q(meou)q(t)f Fg(\()p Ff(in)m(t)33 b(u)p Fg(\))390 3949 y Ft(Set)25 b(the)h(time)f(in)m(terv) -5 b(al)27 b(\(in)e(microseconds\))h(that)g(Readline)f(w)m(aits)h(when) e(sho)m(wing)i(a)f(balancing)390 4058 y(c)m(haracter)32 b(when)d Fs(blink-matching-paren)c Ft(has)30 b(b)s(een)g(enabled.)3350 4252 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_termcap)e Fg(\()p Ff(const)34 b(c)m(har)g(*cap)p Fg(\))390 4361 y Ft(Retriev)m(e)29 b(the)e(string)g(v)-5 b(alue)27 b(of)g(the)h (termcap)f(capabilit)m(y)i Fj(cap)p Ft(.)40 b(Readline)27 b(fetc)m(hes)h(the)g(termcap)390 4471 y(en)m(try)34 b(for)f(the)h (curren)m(t)f(terminal)h(name)g(and)f(uses)g(those)h(capabilities)h(to) f(mo)m(v)m(e)h(around)e(the)390 4581 y(screen)21 b(line)h(and)e(p)s (erform)g(other)h(terminal-sp)s(eci\014c)h(op)s(erations,)h(lik)m(e)f (erasing)g(a)f(line.)38 b(Readline)390 4690 y(do)s(es)d(not)g(use)g (all)g(of)h(a)f(terminal's)g(capabilities,)k(and)34 b(this)h(function)g (will)g(return)f(v)-5 b(alues)35 b(for)390 4800 y(only)30 b(those)h(capabilities)i(Readline)e(uses.)3350 4994 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_clear_history)c Fg(\()p Ff(v)m(oid)p Fg(\))390 5103 y Ft(Clear)27 b(the)h(history)f(list)h(b)m (y)f(deleting)h(all)g(of)f(the)h(en)m(tries,)h(in)d(the)i(same)f (manner)g(as)g(the)g(History)390 5213 y(library's)42 b Fs(clear_history\(\))d Ft(function.)78 b(This)42 b(di\013ers)g(from)g Fs(clear_history)e Ft(b)s(ecause)i(it)390 5322 y(frees)30 b(priv)-5 b(ate)31 b(data)g(Readline)g(sa)m(v)m(es)h(in)e(the)h (history)f(list.)p eop end %%Page: 43 47 TeXDict begin 43 46 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(43)150 299 y Fi(2.4.12)63 b(Alternate)40 b(In)m(terface)150 446 y Ft(An)21 b(alternate)j(in)m(terface)f(is)f(a)m(v)-5 b(ailable)24 b(to)e(plain)g Fs(readline\(\))p Ft(.)35 b(Some)21 b(applications)i(need)f(to)g(in)m(terlea)m(v)m(e)150 555 y(k)m(eyb)s(oard)35 b(I/O)h(with)f(\014le,)i(device,)h(or)e(windo)m (w)f(system)g(I/O,)h(t)m(ypically)i(b)m(y)d(using)g(a)h(main)g(lo)s(op) f(to)150 665 y Fs(select\(\))42 b Ft(on)i(v)-5 b(arious)45 b(\014le)f(descriptors.)83 b(T)-8 b(o)45 b(accommo)s(date)h(this)e (need,)k(readline)d(can)f(also)i(b)s(e)150 775 y(in)m(v)m(ok)m(ed)33 b(as)e(a)h(`callbac)m(k')h(function)e(from)g(an)g(ev)m(en)m(t)h(lo)s (op.)44 b(There)30 b(are)i(functions)f(a)m(v)-5 b(ailable)33 b(to)f(mak)m(e)150 884 y(this)e(easy)-8 b(.)3350 1080 y([F)g(unction])-3599 b Fh(void)54 b(rl_callback_handler_inst)q(all)e Fg(\()p Ff(const)34 b(c)m(har)g(*prompt,)565 1190 y(rl)p 639 1190 30 5 v 44 w(v)m(cpfunc)p 1016 1190 V 45 w(t)f(*lhandler)p Fg(\))390 1300 y Ft(Set)25 b(up)f(the)h(terminal)g(for)f(readline)i (I/O)e(and)g(displa)m(y)h(the)g(initial)h(expanded)e(v)-5 b(alue)26 b(of)f Fj(prompt)p Ft(.)390 1409 y(Sa)m(v)m(e)34 b(the)f(v)-5 b(alue)33 b(of)g Fj(lhandler)39 b Ft(to)34 b(use)e(as)h(a)g(handler)f(function)h(to)g(call)h(when)e(a)h(complete)i (line)390 1519 y(of)h(input)f(has)g(b)s(een)g(en)m(tered.)57 b(The)35 b(handler)g(function)g(receiv)m(es)j(the)e(text)g(of)g(the)g (line)g(as)g(an)390 1628 y(argumen)m(t.)k(As)29 b(with)f Fs(readline\(\))p Ft(,)e(the)j(handler)e(function)h(should)g Fs(free)f Ft(the)h(line)h(when)e(it)i(it)390 1738 y(\014nished)g(with)h (it.)3350 1934 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_callback_read_char)d Fg(\()p Ff(v)m(oid)p Fg(\))390 2044 y Ft(Whenev)m(er)34 b(an)g(application)h(determines)e(that)i(k)m (eyb)s(oard)e(input)g(is)h(a)m(v)-5 b(ailable,)37 b(it)d(should)f(call) 390 2153 y Fs(rl_callback_read_char\(\))p Ft(,)17 b(whic)m(h)22 b(will)g(read)f(the)h(next)g(c)m(haracter)h(from)f(the)f(curren)m(t)h (input)390 2263 y(source.)40 b(If)27 b(that)i(c)m(haracter)g(completes) h(the)e(line,)h Fs(rl_callback_read_char)22 b Ft(will)28 b(in)m(v)m(ok)m(e)i(the)390 2373 y Fj(lhandler)47 b Ft(function)40 b(installed)i(b)m(y)e Fs(rl_callback_handler_insta)o(ll)35 b Ft(to)41 b(pro)s(cess)f(the)h(line.)390 2482 y(Before)j(calling)h (the)e Fj(lhandler)49 b Ft(function,)e(the)c(terminal)h(settings)g(are) g(reset)f(to)h(the)g(v)-5 b(alues)390 2592 y(they)44 b(had)e(b)s(efore)h(calling)i Fs(rl_callback_handler_insta)o(ll)p Ft(.)73 b(If)43 b(the)h Fj(lhandler)49 b Ft(function)390 2701 y(returns,)27 b(and)h(the)g(line)g(handler)f(remains)h(installed,) i(the)e(terminal)g(settings)h(are)f(mo)s(di\014ed)f(for)390 2811 y(Readline's)k(use)f(again.)42 b Fs(EOF)29 b Ft(is)i(indicated)g (b)m(y)f(calling)i Fj(lhandler)k Ft(with)30 b(a)h Fs(NULL)e Ft(line.)3350 3007 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_callback_sigcleanup)e Fg(\()p Ff(v)m(oid)p Fg(\))390 3117 y Ft(Clean)26 b(up)e(an)m(y)i(in)m(ternal)g(state)h(the)e(callbac) m(k)j(in)m(terface)f(uses)e(to)h(main)m(tain)g(state)h(b)s(et)m(w)m (een)f(calls)390 3226 y(to)35 b(rl)p 572 3226 28 4 v 40 w(callbac)m(k)p 928 3226 V 42 w(read)p 1142 3226 V 40 w(c)m(har)f(\(e.g.,)j(the)e(state)g(of)f(an)m(y)h(activ)m(e)h (incremen)m(tal)f(searc)m(hes\).)54 b(This)33 b(is)390 3336 y(in)m(tended)f(to)h(b)s(e)e(used)g(b)m(y)h(applications)h(that)g (wish)e(to)i(p)s(erform)d(their)j(o)m(wn)f(signal)g(handling;)390 3446 y(Readline's)f(in)m(ternal)g(signal)g(handler)f(calls)h(this)g (when)e(appropriate.)3350 3642 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_callback_handler_remo)q(ve)e Fg(\()p Ff(v)m(oid)p Fg(\))390 3751 y Ft(Restore)37 b(the)f(terminal)g(to)g (its)h(initial)g(state)g(and)e(remo)m(v)m(e)i(the)f(line)g(handler.)56 b(Y)-8 b(ou)36 b(ma)m(y)h(call)390 3861 y(this)25 b(function)g(from)g (within)g(a)h(callbac)m(k)i(as)d(w)m(ell)i(as)f(indep)s(enden)m(tly)-8 b(.)38 b(If)25 b(the)h Fj(lhandler)31 b Ft(installed)390 3971 y(b)m(y)25 b Fs(rl_callback_handler_insta)o(ll)19 b Ft(do)s(es)25 b(not)h(exit)g(the)g(program,)g(either)g(this)f (function)g(or)390 4080 y(the)32 b(function)f(referred)f(to)i(b)m(y)g (the)f(v)-5 b(alue)32 b(of)g Fs(rl_deprep_term_function)25 b Ft(should)30 b(b)s(e)h(called)390 4190 y(b)s(efore)f(the)h(program)f (exits)h(to)g(reset)g(the)f(terminal)h(settings.)150 4395 y Fi(2.4.13)63 b(A)41 b(Readline)f(Example)150 4542 y Ft(Here)34 b(is)g(a)g(function)g(whic)m(h)g(c)m(hanges)g(lo)m(w)m (ercase)j(c)m(haracters)e(to)f(their)g(upp)s(ercase)f(equiv)-5 b(alen)m(ts,)37 b(and)150 4652 y(upp)s(ercase)d(c)m(haracters)j(to)f (lo)m(w)m(ercase.)58 b(If)35 b(this)g(function)g(w)m(as)h(b)s(ound)d (to)j(`)p Fs(M-c)p Ft(',)h(then)e(t)m(yping)g(`)p Fs(M-c)p Ft(')150 4761 y(w)m(ould)c(c)m(hange)i(the)f(case)g(of)g(the)g(c)m (haracter)h(under)d(p)s(oin)m(t.)44 b(T)m(yping)31 b(`)p Fs(M-1)f(0)g(M-c)p Ft(')h(w)m(ould)g(c)m(hange)i(the)150 4871 y(case)e(of)g(the)g(follo)m(wing)g(10)h(c)m(haracters,)g(lea)m (ving)g(the)e(cursor)g(on)g(the)h(last)g(c)m(haracter)h(c)m(hanged.)390 5011 y Fs(/*)47 b(Invert)f(the)h(case)g(of)g(the)g(COUNT)f(following)g (characters.)e(*/)390 5121 y(int)390 5230 y(invert_case_line)f (\(count,)j(key\))629 5340 y(int)h(count,)f(key;)p eop end %%Page: 44 48 TeXDict begin 44 47 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(44)390 299 y Fs({)485 408 y(register)46 b(int)h(start,)f(end,)h(i;)485 628 y(start)g(=)g(rl_point;)485 847 y(if)h(\(rl_point)d(>=)i(rl_end\)) 581 956 y(return)f(\(0\);)485 1176 y(if)i(\(count)e(<)h(0\))581 1285 y({)676 1395 y(direction)f(=)h(-1;)676 1504 y(count)g(=)g(-count;) 581 1614 y(})485 1724 y(else)581 1833 y(direction)e(=)j(1;)485 2052 y(/*)g(Find)e(the)h(end)g(of)g(the)g(range)g(to)g(modify.)f(*/)485 2162 y(end)h(=)h(start)e(+)i(\(count)e(*)h(direction\);)485 2381 y(/*)h(Force)e(it)h(to)g(be)h(within)e(range.)g(*/)485 2491 y(if)i(\(end)e(>)i(rl_end\))581 2600 y(end)f(=)g(rl_end;)485 2710 y(else)g(if)g(\(end)g(<)g(0\))581 2819 y(end)g(=)g(0;)485 3039 y(if)h(\(start)e(==)h(end\))581 3148 y(return)f(\(0\);)485 3367 y(if)i(\(start)e(>)h(end\))581 3477 y({)676 3587 y(int)g(temp)g(=)g(start;)676 3696 y(start)g(=)g(end;)676 3806 y(end)g(=)h(temp;)581 3915 y(})485 4134 y(/*)g(Tell)e(readline)g (that)g(we)i(are)f(modifying)e(the)i(line,)629 4244 y(so)g(it)g(will)g (save)f(the)h(undo)g(information.)d(*/)485 4354 y(rl_modifying)h (\(start,)h(end\);)485 4573 y(for)h(\(i)h(=)f(start;)f(i)i(!=)f(end;)f (i++\))581 4682 y({)676 4792 y(if)i(\(_rl_uppercase_p)43 b(\(rl_line_buffer[i]\)\))772 4902 y(rl_line_buffer[i])g(=)k (_rl_to_lower)e(\(rl_line_buffer[i]\);)676 5011 y(else)i(if)g (\(_rl_lowercase_p)d(\(rl_line_buffer[i]\)\))772 5121 y(rl_line_buffer[i])f(=)k(_rl_to_upper)e(\(rl_line_buffer[i]\);)581 5230 y(})485 5340 y(/*)j(Move)e(point)h(to)g(on)g(top)g(of)g(the)g (last)g(character)e(changed.)g(*/)p eop end %%Page: 45 49 TeXDict begin 45 48 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(45)485 299 y Fs(rl_point)46 b(=)h(\(direction)e(==)j(1\))f(?)g(end)g(-)h(1)f (:)h(start;)485 408 y(return)f(\(0\);)390 518 y(})150 751 y Fi(2.4.14)63 b(Alternate)40 b(In)m(terface)g(Example)150 898 y Ft(Here)f(is)g(a)g(complete)h(program)e(that)h(illustrates)h (Readline's)f(alternate)h(in)m(terface.)67 b(It)38 b(reads)h(lines)150 1007 y(from)30 b(the)i(terminal)f(and)f(displa)m(ys)h(them,)h(pro)m (viding)f(the)g(standard)f(history)h(and)f(T)-8 b(AB)32 b(completion)150 1117 y(functions.)40 b(It)31 b(understands)d(the)j (EOF)f(c)m(haracter)i(or)e Fs(")p Ft(exit)p Fs(")h Ft(to)g(exit)g(the)g (program.)390 1285 y Fs(/*)47 b(Standard)f(include)g(files.)g(stdio.h)f (is)j(required.)d(*/)390 1395 y(#include)h()390 1504 y(#include)g()390 1614 y(#include)g()390 1724 y(#include)g()390 1943 y(/*)h(Used)g(for)g(select\(2\))e (*/)390 2052 y(#include)h()390 2162 y(#include)g ()390 2381 y(#include)g()390 2600 y(#include)g()390 2819 y(/*)h(Standard)f(readline)f (include)h(files.)g(*/)390 2929 y(#include)g()390 3039 y(#include)g()390 3258 y(static)g(void)h (cb_linehandler)d(\(char)i(*\);)390 3367 y(static)g(void)h(sighandler)e (\(int\);)390 3587 y(int)i(running;)390 3696 y(int)g (sigwinch_received;)390 3806 y(const)f(char)h(*prompt)f(=)h("rltest$)f (";)390 4025 y(/*)h(Handle)f(SIGWINCH)g(and)h(window)f(size)g(changes)g (when)h(readline)e(is)j(not)f(active)f(and)p 3922 4045 42 84 v 533 4134 a(reading)g(a)h(character.)e(*/)390 4244 y(static)h(void)390 4354 y(sighandler)f(\(int)i(sig\))390 4463 y({)485 4573 y(sigwinch_received)d(=)j(1;)390 4682 y(})390 4902 y(/*)g(Callback)f(function)f(called)h(for)h(each)g(line)g (when)f(accept-line)f(executed,)g(EOF)533 5011 y(seen,)i(or)g(EOF)g (character)e(read.)94 b(This)47 b(sets)f(a)i(flag)e(and)h(returns;)f (it)h(could)533 5121 y(also)g(call)f(exit\(3\).)g(*/)390 5230 y(static)g(void)390 5340 y(cb_linehandler)e(\(char)i(*line\))p eop end %%Page: 46 50 TeXDict begin 46 49 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(46)390 299 y Fs({)485 408 y(/*)48 b(Can)f(use)f(^D)i(\(stty)e(eof\))h(or)g (`exit')f(to)h(exit.)f(*/)485 518 y(if)i(\(line)e(==)h(NULL)g(||)g (strcmp)f(\(line,)g("exit"\))g(==)h(0\))581 628 y({)676 737 y(if)h(\(line)e(==)h(0\))772 847 y(printf)f(\("\\n"\);)676 956 y(printf)g(\("exit\\n"\);)676 1066 y(/*)i(This)e(function)g(needs)g (to)h(be)g(called)g(to)g(reset)f(the)h(terminal)f(settings,)p 3874 1086 42 84 v 820 1176 a(and)g(calling)g(it)h(from)g(the)g(line)g (handler)e(keeps)i(one)g(extra)f(prompt)g(from)p 3874 1196 42 76 v 820 1285 a(being)g(displayed.)f(*/)676 1395 y(rl_callback_handler_remove)c(\(\);)676 1614 y(running)46 b(=)i(0;)581 1724 y(})485 1833 y(else)581 1943 y({)676 2052 y(if)g(\(*line\))772 2162 y(add_history)d(\(line\);)676 2271 y(printf)h(\("input)g(line:)h(\045s\\n",)f(line\);)676 2381 y(free)h(\(line\);)581 2491 y(})390 2600 y(})390 2819 y(int)390 2929 y(main)g(\(int)f(c,)h(char)g(**v\))390 3039 y({)485 3148 y(fd_set)g(fds;)485 3258 y(int)g(r;)485 3477 y(/*)h(Set)f(the)f(default)g(locale)g(values)g(according)g(to)h (environment)e(variables.)g(*/)p 3874 3497 42 84 v 485 3587 a(setlocale)h(\(LC_ALL,)f(""\);)485 3806 y(/*)j(Handle)e(window)g (size)g(changes)g(when)h(readline)e(is)j(not)f(active)f(and)h(reading) 629 3915 y(characters.)d(*/)485 4025 y(signal)j(\(SIGWINCH,)e (sighandler\);)485 4244 y(/*)j(Install)d(the)i(line)g(handler.)f(*/)485 4354 y(rl_callback_handler_instal)o(l)c(\(prompt,)j(cb_linehandler\);) 485 4573 y(/*)j(Enter)e(a)h(simple)g(event)f(loop.)94 b(This)47 b(waits)f(until)g(something)g(is)h(available)629 4682 y(to)g(read)f(on)i(readline's)d(input)h(stream)g(\(defaults)f(to)j (standard)d(input\))h(and)629 4792 y(calls)g(the)h(builtin)f(character) f(read)i(callback)e(to)i(read)g(it.)95 b(It)47 b(does)f(not)629 4902 y(have)g(to)h(modify)g(the)f(user's)h(terminal)e(settings.)g(*/) 485 5011 y(running)h(=)i(1;)485 5121 y(while)f(\(running\))581 5230 y({)676 5340 y(FD_ZERO)f(\(&fds\);)p eop end %%Page: 47 51 TeXDict begin 47 50 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(47)676 299 y Fs(FD_SET)46 b(\(fileno)g(\(rl_instream\),)e(&fds\);)676 518 y(r)k(=)f(select)f(\(FD_SETSIZE,)f(&fds,)h(NULL,)h(NULL,)f(NULL\);) 676 628 y(if)i(\(r)f(<)g(0)h(&&)f(errno)f(!=)h(EINTR\))772 737 y({)867 847 y(perror)f(\("rltest:)g(select"\);)867 956 y(rl_callback_handler_remov)o(e)c(\(\);)867 1066 y(break;)772 1176 y(})676 1285 y(if)48 b(\(sigwinch_received\))390 1395 y({)485 1504 y(rl_resize_terminal)43 b(\(\);)485 1614 y(sigwinch_received)h(=)j(0;)390 1724 y(})676 1833 y(if)h(\(r)f(<)g(0\))390 1943 y(continue;)676 2162 y(if)h(\(FD_ISSET)d (\(fileno)h(\(rl_instream\),)e(&fds\)\))772 2271 y (rl_callback_read_char)e(\(\);)581 2381 y(})485 2600 y(printf)47 b(\("rltest:)e(Event)h(loop)h(has)g(exited\\n"\);)485 2710 y(return)g(0;)390 2819 y(})150 3054 y Fr(2.5)68 b(Readline)47 b(Signal)e(Handling)150 3214 y Ft(Signals)31 b(are)f(async)m(hronous)g(ev)m(en)m(ts)i(sen)m(t)f(to)g(a)g(pro)s(cess) f(b)m(y)h(the)f(Unix)g(k)m(ernel,)i(sometimes)f(on)g(b)s(ehalf)150 3323 y(of)k(another)g(pro)s(cess.)53 b(They)34 b(are)h(in)m(tended)g (to)g(indicate)h(exceptional)g(ev)m(en)m(ts,)i(lik)m(e)e(a)f(user)f (pressing)150 3433 y(the)g(in)m(terrupt)f(k)m(ey)h(on)g(his)f (terminal,)i(or)f(a)g(net)m(w)m(ork)g(connection)h(b)s(eing)e(brok)m (en.)50 b(There)34 b(is)f(a)h(class)150 3543 y(of)29 b(signals)g(that)h(can)f(b)s(e)f(sen)m(t)h(to)h(the)f(pro)s(cess)f (curren)m(tly)h(reading)g(input)f(from)g(the)h(k)m(eyb)s(oard.)40 b(Since)150 3652 y(Readline)45 b(c)m(hanges)g(the)g(terminal)g (attributes)g(when)e(it)i(is)g(called,)k(it)c(needs)f(to)h(p)s(erform)e (sp)s(ecial)150 3762 y(pro)s(cessing)27 b(when)g(suc)m(h)g(a)h(signal)g (is)g(receiv)m(ed)h(in)e(order)g(to)h(restore)h(the)e(terminal)h(to)h (a)f(sane)f(state,)j(or)150 3871 y(pro)m(vide)g(application)i(writers)e (with)g(functions)g(to)h(do)g(so)f(man)m(ually)-8 b(.)275 4003 y(Readline)40 b(con)m(tains)i(an)e(in)m(ternal)h(signal)g(handler) f(that)h(is)f(installed)h(for)f(a)h(n)m(um)m(b)s(er)e(of)h(signals)150 4112 y(\()p Fs(SIGINT)p Ft(,)e Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p Ft(,)g Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)g Fs(SIGTSTP)p Ft(,)g Fs(SIGTTIN)p Ft(,)g(and)g Fs(SIGTTOU)p Ft(\).)59 b(When)150 4222 y(one)27 b(of)g(these)g(signals)g(is)g(receiv)m(ed,)i (the)e(signal)g(handler)f(will)h(reset)h(the)e(terminal)i(attributes)f (to)g(those)150 4332 y(that)33 b(w)m(ere)g(in)f(e\013ect)h(b)s(efore)f Fs(readline\(\))e Ft(w)m(as)i(called,)j(reset)d(the)h(signal)g (handling)f(to)h(what)f(it)h(w)m(as)150 4441 y(b)s(efore)26 b Fs(readline\(\))e Ft(w)m(as)j(called,)i(and)d(resend)g(the)h(signal)g (to)h(the)f(calling)h(application.)41 b(If)26 b(and)g(when)150 4551 y(the)34 b(calling)i(application's)f(signal)g(handler)e(returns,)h (Readline)g(will)h(reinitialize)h(the)e(terminal)h(and)150 4660 y(con)m(tin)m(ue)29 b(to)g(accept)h(input.)39 b(When)28 b(a)h Fs(SIGINT)d Ft(is)j(receiv)m(ed,)h(the)e(Readline)h(signal)g (handler)f(p)s(erforms)150 4770 y(some)39 b(additional)h(w)m(ork,)h (whic)m(h)d(will)h(cause)g(an)m(y)h(partially-en)m(tered)g(line)f(to)h (b)s(e)e(ab)s(orted)g(\(see)i(the)150 4880 y(description)30 b(of)h Fs(rl_free_line_state\(\))25 b Ft(b)s(elo)m(w\).)275 5011 y(There)e(is)i(an)f(additional)h(Readline)g(signal)g(handler,)g (for)f Fs(SIGWINCH)p Ft(,)g(whic)m(h)g(the)g(k)m(ernel)h(sends)e(to)j (a)150 5121 y(pro)s(cess)i(whenev)m(er)h(the)g(terminal's)g(size)h(c)m (hanges)g(\(for)f(example,)h(if)f(a)g(user)f(resizes)i(an)e Fs(xterm)p Ft(\).)39 b(The)150 5230 y(Readline)d Fs(SIGWINCH)e Ft(handler)g(up)s(dates)h(Readline's)h(in)m(ternal)h(screen)e(size)i (information,)g(and)e(then)150 5340 y(calls)g(an)m(y)f Fs(SIGWINCH)e Ft(signal)i(handler)f(the)h(calling)h(application)g(has)f (installed.)51 b(Readline)35 b(calls)g(the)p eop end %%Page: 48 52 TeXDict begin 48 51 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(48)150 299 y(application's)37 b Fs(SIGWINCH)c Ft(signal)i(handler)g(without)g (resetting)h(the)g(terminal)f(to)h(its)g(original)g(state.)150 408 y(If)31 b(the)i(application's)g(signal)g(handler)e(do)s(es)g(more)h (than)g(up)s(date)f(its)i(idea)f(of)g(the)g(terminal)h(size)g(and)150 518 y(return)28 b(\(for)i(example,)h(a)f Fs(longjmp)d Ft(bac)m(k)k(to)f(a)g(main)g(pro)s(cessing)f(lo)s(op\),)h(it)g Fk(must)39 b Ft(call)31 b Fs(rl_cleanup_)150 628 y(after_signal\(\))26 b Ft(\(describ)s(ed)k(b)s(elo)m(w\),)h(to)g(restore)g(the)g(terminal)g (state.)275 774 y(When)38 b(an)h(application)h(is)f(using)g(the)g (callbac)m(k)i(in)m(terface)f(\(see)g(Section)g(2.4.12)h([Alternate)f (In-)150 884 y(terface],)48 b(page)c(43\),)j(Readline)c(installs)h (signal)g(handlers)e(only)h(for)f(the)h(duration)g(of)g(the)g(call)h (to)150 994 y Fs(rl_callback_read_char)p Ft(.)c(Applications)33 b(using)f(the)g(callbac)m(k)j(in)m(terface)e(should)f(b)s(e)f(prepared) g(to)150 1103 y(clean)d(up)d(Readline's)j(state)g(if)e(they)h(wish)f (to)h(handle)f(the)h(signal)h(b)s(efore)e(the)h(line)g(handler)f (completes)150 1213 y(and)k(restores)h(the)f(terminal)h(state.)275 1360 y(If)k(an)g(application)i(using)f(the)g(callbac)m(k)h(in)m (terface)h(wishes)d(to)h(ha)m(v)m(e)h(Readline)g(install)f(its)g (signal)150 1469 y(handlers)22 b(at)h(the)g(time)h(the)e(application)j (calls)e Fs(rl_callback_handler_instal)o(l)17 b Ft(and)22 b(remo)m(v)m(e)i(them)150 1579 y(only)f(when)g(a)g(complete)i(line)f (of)f(input)f(has)h(b)s(een)g(read,)i(it)e(should)g(set)g(the)h Fs(rl_persistent_signal_)150 1688 y(handlers)c Ft(v)-5 b(ariable)23 b(to)f(a)h(non-zero)f(v)-5 b(alue.)39 b(This)21 b(allo)m(ws)i(an)f(application)i(to)f(defer)e(all)i(of)f(the)h (handling)150 1798 y(of)j(the)h(signals)f(Readline)h(catc)m(hes)h(to)f (Readline.)39 b(Applications)27 b(should)f(use)f(this)h(v)-5 b(ariable)27 b(with)f(care;)150 1908 y(it)d(can)g(result)g(in)f (Readline)h(catc)m(hing)i(signals)e(and)f(not)h(acting)h(on)f(them)f (\(or)h(allo)m(wing)i(the)e(application)150 2017 y(to)36 b(react)g(to)g(them\))g(un)m(til)f(the)h(application)g(calls)h Fs(rl_callback_read_char)p Ft(.)49 b(This)35 b(can)g(result)g(in)150 2127 y(an)30 b(application)h(b)s(ecoming)f(less)g(resp)s(onsiv)m(e)f (to)i(k)m(eyb)s(oard)e(signals)h(lik)m(e)h(SIGINT.)f(If)f(an)h (application)150 2236 y(do)s(es)24 b(not)g(w)m(an)m(t)h(or)g(need)f(to) h(p)s(erform)d(an)m(y)j(signal)g(handling,)g(or)f(do)s(es)g(not)h(need) f(to)g(do)h(an)m(y)f(pro)s(cessing)150 2346 y(b)s(et)m(w)m(een)31 b(calls)h(to)f Fs(rl_callback_read_char)p Ft(,)24 b(setting)32 b(this)e(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(desirable.)275 2493 y(Readline)f(pro)m(vides)f(t)m(w)m(o)i(v)-5 b(ariables)29 b(that)h(allo)m(w)g(application)g(writers)e(to)h(con)m(trol)h(whether)e (or)h(not)150 2602 y(it)34 b(will)f(catc)m(h)i(certain)f(signals)f(and) g(act)h(on)f(them)g(when)f(they)i(are)f(receiv)m(ed.)51 b(It)33 b(is)g(imp)s(ortan)m(t)g(that)150 2712 y(applications)38 b(c)m(hange)g(the)e(v)-5 b(alues)37 b(of)g(these)g(v)-5 b(ariables)37 b(only)g(when)f(calling)i Fs(readline\(\))p Ft(,)d(not)i(in)g(a)150 2821 y(signal)31 b(handler,)f(so)g(Readline's)i (in)m(ternal)f(signal)g(state)h(is)e(not)h(corrupted.)3371 3030 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_signals)390 3140 y Ft(If)28 b(this)h(v)-5 b(ariable)30 b(is)f(non-zero,)h(Readline) f(will)g(install)h(signal)f(handlers)f(for)h Fs(SIGINT)p Ft(,)f Fs(SIGQUIT)p Ft(,)390 3249 y Fs(SIGTERM)p Ft(,)h Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)f Fs(SIGTSTP)p Ft(,)h Fs(SIGTTIN)p Ft(,)f(and)i Fs(SIGTTOU)p Ft(.)390 3396 y(The)g(default)g(v)-5 b(alue)31 b(of)g Fs(rl_catch_signals)26 b Ft(is)k(1.)3371 3605 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_sigwinch)390 3715 y Ft(If)37 b(this)h(v)-5 b(ariable)38 b(is)g(set)g(to)g(a)g(non-zero)g(v)-5 b(alue,)40 b(Readline)f(will)f(install)g(a)g(signal)g(handler)f(for)390 3824 y Fs(SIGWINCH)p Ft(.)390 3971 y(The)30 b(default)g(v)-5 b(alue)31 b(of)g Fs(rl_catch_sigwinch)25 b Ft(is)31 b(1.)3371 4180 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_persistent_signal_)q (hand)q(ler)q(s)390 4290 y Ft(If)31 b(an)h(application)g(using)g(the)f (callbac)m(k)j(in)m(terface)f(wishes)e(Readline's)h(signal)h(handlers)d (to)j(b)s(e)390 4399 y(installed)21 b(and)f(activ)m(e)j(during)d(the)h (set)g(of)f(calls)i(to)g Fs(rl_callback_read_char)14 b Ft(that)22 b(constitutes)390 4509 y(an)30 b(en)m(tire)i(single)f (line,)g(it)f(should)g(set)h(this)f(v)-5 b(ariable)31 b(to)g(a)g(non-zero)g(v)-5 b(alue.)390 4656 y(The)30 b(default)g(v)-5 b(alue)31 b(of)g Fs(rl_persistent_signal_han)o(dle)o (rs)24 b Ft(is)31 b(0.)3371 4864 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_change_environment)390 4974 y Ft(If)31 b(this)g(v)-5 b(ariable)32 b(is)f(set)h(to)g(a)g(non-zero)g(v)-5 b(alue,)32 b(and)f(Readline)h(is)f(handling)g Fs(SIGWINCH)p Ft(,)e(Read-)390 5084 y(line)h(will)h(mo)s(dify)e(the)h Fj(LINES)35 b Ft(and)29 b Fj(COLUMNS)35 b Ft(en)m(vironmen)m(t)30 b(v)-5 b(ariables)31 b(up)s(on)d(receipt)j(of)g(a)390 5193 y Fs(SIGWINCH)390 5340 y Ft(The)f(default)g(v)-5 b(alue)31 b(of)g Fs(rl_change_environment)24 b Ft(is)31 b(1.)p eop end %%Page: 49 53 TeXDict begin 49 52 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(49)275 299 y(If)30 b(an)h(application)h(do)s(es)f(not)g(wish)f(to)i(ha)m(v)m (e)g(Readline)g(catc)m(h)g(an)m(y)f(signals,)h(or)f(to)h(handle)e (signals)150 408 y(other)39 b(than)f(those)h(Readline)h(catc)m(hes)g (\()p Fs(SIGHUP)p Ft(,)g(for)e(example\),)k(Readline)d(pro)m(vides)g (con)m(v)m(enience)150 518 y(functions)30 b(to)h(do)f(the)h(necessary)g (terminal)g(and)e(in)m(ternal)i(state)h(clean)m(up)f(up)s(on)e(receipt) i(of)g(a)f(signal.)3350 693 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_pending_signal)e Fg(\()p Ff(v)m(oid)p Fg(\))390 803 y Ft(Return)27 b(the)g(signal)h(n)m(um)m(b)s(er)e(of)i (the)f(most)h(recen)m(t)h(signal)f(Readline)g(receiv)m(ed)g(but)f(has)g (not)h(y)m(et)390 913 y(handled,)i(or)g(0)h(if)f(there)h(is)f(no)g(p)s (ending)f(signal.)3350 1088 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_cleanup_after_signal)e Fg(\()p Ff(v)m(oid)p Fg(\))390 1198 y Ft(This)33 b(function)h(will)g(reset)g(the)g(state)i (of)e(the)g(terminal)g(to)h(what)f(it)g(w)m(as)g(b)s(efore)g Fs(readline\(\))390 1307 y Ft(w)m(as)c(called,)h(and)d(remo)m(v)m(e)j (the)f(Readline)g(signal)g(handlers)e(for)h(all)h(signals,)h(dep)s (ending)d(on)h(the)390 1417 y(v)-5 b(alues)31 b(of)f Fs(rl_catch_signals)c Ft(and)k Fs(rl_catch_sigwinch)p Ft(.)3350 1592 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_free_line_state)c Fg(\()p Ff(v)m(oid)p Fg(\))390 1702 y Ft(This)38 b(will)i(free)f(an)m(y)h(partial)g(state)g(asso)s (ciated)h(with)e(the)g(curren)m(t)g(input)f(line)i(\(undo)e(infor-)390 1811 y(mation,)46 b(an)m(y)d(partial)h(history)e(en)m(try)-8 b(,)47 b(an)m(y)42 b(partially-en)m(tered)j(k)m(eyb)s(oard)d(macro,)47 b(and)42 b(an)m(y)390 1921 y(partially-en)m(tered)50 b(n)m(umeric)d(argumen)m(t\).)94 b(This)47 b(should)g(b)s(e)g(called)i (b)s(efore)e Fs(rl_cleanup_)390 2030 y(after_signal\(\))p Ft(.)74 b(The)42 b(Readline)h(signal)g(handler)f(for)h Fs(SIGINT)e Ft(calls)i(this)g(to)g(ab)s(ort)g(the)390 2140 y(curren)m(t)30 b(input)g(line.)3350 2315 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_reset_after_signal)d Fg(\()p Ff(v)m(oid)p Fg(\))390 2425 y Ft(This)28 b(will)g(reinitialize) j(the)e(terminal)g(and)f(reinstall)h(an)m(y)g(Readline)g(signal)g (handlers,)f(dep)s(end-)390 2534 y(ing)j(on)f(the)g(v)-5 b(alues)31 b(of)g Fs(rl_catch_signals)26 b Ft(and)j Fs (rl_catch_sigwinch)p Ft(.)275 2710 y(If)j(an)g(application)i(w)m(an)m (ts)g(to)f(force)g(Readline)h(to)f(handle)g(an)m(y)g(signals)g(that)g (ha)m(v)m(e)h(arriv)m(ed)f(while)150 2819 y(it)j(has)g(b)s(een)f (executing,)j Fs(rl_check_signals\(\))31 b Ft(will)36 b(call)h(Readline's)g(in)m(ternal)g(signal)f(handler)f(if)150 2929 y(there)i(are)g(an)m(y)g(p)s(ending)e(signals.)61 b(This)36 b(is)g(primarily)h(in)m(tended)f(for)h(those)g(applications)h (that)f(use)150 3039 y(a)h(custom)g Fs(rl_getc_function)33 b Ft(\(see)39 b(Section)g(2.3)g([Readline)f(V)-8 b(ariables],)42 b(page)c(27\))h(and)e(wish)g(to)150 3148 y(handle)30 b(signals)h(receiv)m(ed)h(while)e(w)m(aiting)i(for)e(input.)3350 3324 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_check_signals)c Fg(\()p Ff(v)m(oid)p Fg(\))390 3433 y Ft(If)40 b(there)h(are)g(an)m(y)g (p)s(ending)e(signals,)44 b(call)e(Readline's)g(in)m(ternal)f(signal)g (handling)f(functions)390 3543 y(to)j(pro)s(cess)g(them.)77 b Fs(rl_pending_signal\(\))38 b Ft(can)43 b(b)s(e)f(used)g(indep)s (enden)m(tly)f(to)j(determine)390 3652 y(whether)30 b(or)g(not)h(there) f(are)h(an)m(y)g(p)s(ending)e(signals.)275 3828 y(If)38 b(an)i(application)g(do)s(es)f(not)h(wish)f(Readline)h(to)g(catc)m(h)h Fs(SIGWINCH)p Ft(,)e(it)h(ma)m(y)g(call)h Fs(rl_resize_)150 3937 y(terminal\(\))24 b Ft(or)j Fs(rl_set_screen_size\(\))22 b Ft(to)28 b(force)g(Readline)f(to)h(up)s(date)f(its)g(idea)h(of)f(the) g(terminal)150 4047 y(size)k(when)f(a)g Fs(SIGWINCH)e Ft(is)j(receiv)m(ed.)3350 4222 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_echo_signal_char)d Fg(\()p Ff(in)m(t)33 b(sig)p Fg(\))390 4332 y Ft(If)43 b(an)g(application)i(wishes)e(to)i (install)f(its)g(o)m(wn)f(signal)i(handlers,)h(but)c(still)j(ha)m(v)m (e)g(readline)390 4441 y(displa)m(y)31 b(c)m(haracters)h(that)f (generate)h(signals,)f(calling)h(this)e(function)g(with)g Fj(sig)39 b Ft(set)31 b(to)g Fs(SIGINT)p Ft(,)390 4551 y Fs(SIGQUIT)p Ft(,)e(or)h Fs(SIGTSTP)e Ft(will)j(displa)m(y)g(the)f(c) m(haracter)i(generating)g(that)f(signal.)3350 4726 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_resize_terminal)c Fg(\()p Ff(v)m(oid)p Fg(\))390 4836 y Ft(Up)s(date)30 b(Readline's)h(in)m(ternal)g(screen)g(size)g(b)m(y)f(reading)h(v)-5 b(alues)31 b(from)f(the)g(k)m(ernel.)3350 5011 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_set_screen_size)c Fg(\()p Ff(in)m(t)34 b(ro)m(ws,)f(in)m(t)g(cols)p Fg(\))390 5121 y Ft(Set)28 b(Readline's)h(idea)f(of)g(the)g(terminal)g(size)h(to) g Fj(ro)m(ws)i Ft(ro)m(ws)d(and)f Fj(cols)33 b Ft(columns.)40 b(If)27 b(either)h Fj(ro)m(ws)390 5230 y Ft(or)35 b Fj(columns)k Ft(is)c(less)g(than)g(or)g(equal)h(to)g(0,)h(Readline's)f(idea)g(of)f (that)h(terminal)f(dimension)g(is)390 5340 y(unc)m(hanged.)p eop end %%Page: 50 54 TeXDict begin 50 53 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(50)275 299 y(If)32 b(an)i(application)g(do)s(es)f(not)h(w)m(an)m(t)g(to)g (install)g(a)g Fs(SIGWINCH)d Ft(handler,)j(but)e(is)i(still)g(in)m (terested)g(in)150 408 y(the)d(screen)f(dimensions,)g(Readline's)h (idea)g(of)g(the)f(screen)h(size)g(ma)m(y)g(b)s(e)f(queried.)3350 591 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_get_screen_size)c Fg(\()p Ff(in)m(t)34 b(*ro)m(ws,)f(in)m(t)g(*cols)p Fg(\))390 701 y Ft(Return)c(Readline's)i(idea)g(of)f(the)g(terminal's)h(size)g (in)f(the)g(v)-5 b(ariables)31 b(p)s(oin)m(ted)f(to)g(b)m(y)g(the)h (argu-)390 810 y(men)m(ts.)3350 993 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_reset_screen_size)d Fg(\()p Ff(v)m(oid)p Fg(\))390 1102 y Ft(Cause)30 b(Readline)h(to)g(reobtain)g(the)g(screen) f(size)h(and)f(recalculate)j(its)e(dimensions.)275 1285 y(The)e(follo)m(wing)j(functions)e(install)h(and)f(remo)m(v)m(e)i (Readline's)f(signal)g(handlers.)3350 1467 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_signals)d Fg(\()p Ff(v)m(oid)p Fg(\))390 1577 y Ft(Install)40 b(Readline's)h(signal)f(handler)f(for)h Fs(SIGINT)p Ft(,)h Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p Ft(,)h Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)390 1686 y Fs(SIGTSTP)p Ft(,)35 b Fs(SIGTTIN)p Ft(,)f Fs(SIGTTOU)p Ft(,)h(and)g Fs(SIGWINCH)p Ft(,)f(dep)s(ending)g(on)h(the)g(v)-5 b(alues)36 b(of)f Fs(rl_catch_)390 1796 y(signals)28 b Ft(and)i Fs(rl_catch_sigwinch)p Ft(.)3350 1978 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_clear_signals)e Fg(\()p Ff(v)m(oid)p Fg(\))390 2088 y Ft(Remo)m(v)m(e)32 b(all)f(of)g(the)g(Readline)g (signal)g(handlers)e(installed)i(b)m(y)f Fs(rl_set_signals\(\))p Ft(.)150 2327 y Fr(2.6)68 b(Custom)45 b(Completers)150 2487 y Ft(T)m(ypically)-8 b(,)47 b(a)c(program)g(that)g(reads)f (commands)h(from)f(the)g(user)g(has)h(a)g(w)m(a)m(y)g(of)g(disam)m (biguating)150 2596 y(commands)35 b(and)g(data.)56 b(If)35 b(y)m(our)h(program)f(is)g(one)h(of)g(these,)h(then)e(it)h(can)g(pro)m (vide)f(completion)i(for)150 2706 y(commands,)29 b(data,)i(or)e(b)s (oth.)39 b(The)29 b(follo)m(wing)i(sections)f(describ)s(e)e(ho)m(w)i(y) m(our)f(program)g(and)f(Readline)150 2816 y(co)s(op)s(erate)j(to)h(pro) m(vide)e(this)g(service.)150 3014 y Fi(2.6.1)63 b(Ho)m(w)40 b(Completing)i(W)-10 b(orks)150 3161 y Ft(In)26 b(order)f(to)i (complete)h(some)f(text,)h(the)f(full)f(list)h(of)f(p)s(ossible)g (completions)h(m)m(ust)g(b)s(e)e(a)m(v)-5 b(ailable.)42 b(That)150 3270 y(is,)28 b(it)f(is)g(not)g(p)s(ossible)g(to)g (accurately)i(expand)d(a)h(partial)h(w)m(ord)f(without)f(kno)m(wing)i (all)f(of)g(the)g(p)s(ossible)150 3380 y(w)m(ords)33 b(whic)m(h)g(mak)m(e)h(sense)f(in)g(that)g(con)m(text.)51 b(The)33 b(Readline)h(library)e(pro)m(vides)i(the)f(user)f(in)m (terface)150 3489 y(to)d(completion,)h(and)e(t)m(w)m(o)i(of)e(the)h (most)f(common)h(completion)h(functions:)39 b(\014lename)29 b(and)e(username.)150 3599 y(F)-8 b(or)39 b(completing)g(other)f(t)m (yp)s(es)g(of)h(text,)i(y)m(ou)d(m)m(ust)g(write)g(y)m(our)g(o)m(wn)g (completion)h(function.)64 b(This)150 3709 y(section)32 b(describ)s(es)d(exactly)j(what)f(suc)m(h)f(functions)g(m)m(ust)g(do,)g (and)g(pro)m(vides)g(an)h(example.)275 3842 y(There)e(are)i(three)g(ma) 5 b(jor)30 b(functions)g(used)g(to)h(p)s(erform)e(completion:)199 3976 y(1.)61 b(The)43 b(user-in)m(terface)h(function)f Fs(rl_complete\(\))p Ft(.)76 b(This)43 b(function)g(is)g(called)i(with) e(the)h(same)330 4086 y(argumen)m(ts)36 b(as)g(other)g(bindable)f (Readline)h(functions:)51 b Fj(coun)m(t)38 b Ft(and)d Fj(in)m(v)m(oking)p 3107 4086 28 4 v 41 w(k)m(ey)p Ft(.)57 b(It)36 b(isolates)330 4195 y(the)i(w)m(ord)f(to)h(b)s(e)f(completed)i (and)d(calls)j Fs(rl_completion_matches\(\))31 b Ft(to)39 b(generate)g(a)f(list)g(of)330 4305 y(p)s(ossible)31 b(completions.)44 b(It)31 b(then)g(either)g(lists)h(the)f(p)s(ossible)g (completions,)h(inserts)f(the)g(p)s(ossible)330 4415 y(completions,)50 b(or)45 b(actually)i(p)s(erforms)d(the)h(completion,) 50 b(dep)s(ending)44 b(on)h(whic)m(h)g(b)s(eha)m(vior)g(is)330 4524 y(desired.)199 4658 y(2.)61 b(The)33 b(in)m(ternal)h(function)g Fs(rl_completion_matches\(\))27 b Ft(uses)33 b(an)g (application-supplied)h Fj(gener-)330 4768 y(ator)44 b Ft(function)37 b(to)h(generate)g(the)f(list)h(of)f(p)s(ossible)f (matc)m(hes,)k(and)d(then)f(returns)g(the)h(arra)m(y)h(of)330 4877 y(these)h(matc)m(hes.)68 b(The)39 b(caller)h(should)e(place)i(the) f(address)f(of)h(its)g(generator)i(function)d(in)h Fs(rl_)330 4987 y(completion_entry_functio)o(n)p Ft(.)199 5121 y(3.)61 b(The)22 b(generator)i(function)f(is)g(called)h(rep)s(eatedly)f(from)g Fs(rl_completion_matches\(\))o Ft(,)c(returning)330 5230 y(a)33 b(string)g(eac)m(h)h(time.)48 b(The)32 b(argumen)m(ts)h(to)h (the)f(generator)h(function)e(are)h Fj(text)j Ft(and)c Fj(state)p Ft(.)49 b Fj(text)330 5340 y Ft(is)32 b(the)g(partial)h(w)m (ord)f(to)h(b)s(e)e(completed.)47 b Fj(state)38 b Ft(is)32 b(zero)h(the)f(\014rst)g(time)g(the)h(function)e(is)h(called,)p eop end %%Page: 51 55 TeXDict begin 51 54 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(51)330 299 y(allo)m(wing)46 b(the)e(generator)h(to)f(p)s(erform)f(an)m(y)h (necessary)g(initialization,)51 b(and)43 b(a)h(p)s(ositiv)m(e)h(non-) 330 408 y(zero)30 b(in)m(teger)h(for)d(eac)m(h)j(subsequen)m(t)d(call.) 42 b(The)29 b(generator)h(function)f(returns)f Fs(\(char)h(*\)NULL)e Ft(to)330 518 y(inform)37 b Fs(rl_completion_matches\(\))32 b Ft(that)39 b(there)f(are)g(no)g(more)g(p)s(ossibilities)h(left.)65 b(Usually)330 628 y(the)39 b(generator)h(function)e(computes)h(the)g (list)g(of)g(p)s(ossible)f(completions)i(when)e Fj(state)45 b Ft(is)39 b(zero,)330 737 y(and)25 b(returns)f(them)i(one)f(at)i(a)f (time)g(on)f(subsequen)m(t)g(calls.)40 b(Eac)m(h)26 b(string)g(the)g (generator)g(function)330 847 y(returns)31 b(as)h(a)g(matc)m(h)h(m)m (ust)f(b)s(e)f(allo)s(cated)j(with)d Fs(malloc\(\))p Ft(;)g(Readline)h(frees)g(the)g(strings)g(when)330 956 y(it)i(has)g(\014nished)e(with)i(them.)51 b(Suc)m(h)33 b(a)h(generator)h(function)f(is)g(referred)f(to)h(as)h(an)e Fj(application-)330 1066 y(sp)s(eci\014c)d(completion)i(function)p Ft(.)3350 1237 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete)c Fg(\()p Ff(in)m(t)34 b(ignore,)e(in)m(t)i(in)m(v)m(oking)p 2020 1237 30 5 v 43 w(k)m(ey)p Fg(\))390 1347 y Ft(Complete)d(the)g(w)m (ord)g(at)g(or)g(b)s(efore)f(p)s(oin)m(t.)41 b(Y)-8 b(ou)32 b(ha)m(v)m(e)g(supplied)d(the)i(function)f(that)h(do)s(es)g(the)390 1456 y(initial)42 b(simple)f(matc)m(hing)i(selection)f(algorithm)h (\(see)f Fs(rl_completion_matches\(\))o Ft(\).)67 b(The)390 1566 y(default)31 b(is)f(to)h(do)f(\014lename)h(completion.)3371 1737 y([V)-8 b(ariable])-3598 b Fh(rl_compentry_func_t)58 b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 1846 y Ft(This)39 b(is)h(a)g(p)s(oin)m(ter)g(to)h(the)f(generator)h (function)f(for)f Fs(rl_completion_matches\(\))p Ft(.)63 b(If)40 b(the)390 1956 y(v)-5 b(alue)24 b(of)g Fs (rl_completion_entry_funct)o(ion)17 b Ft(is)24 b Fs(NULL)f Ft(then)g(the)h(default)g(\014lename)g(generator)390 2066 y(function,)49 b Fs(rl_filename_completion_)o(fun)o(ctio)o(n\(\))p Ft(,)42 b(is)j(used.)84 b(An)44 b Fj(application-sp)s(eci\014c)390 2175 y(completion)22 b(function)f Ft(is)g(a)h(function)e(whose)h (address)f(is)h(assigned)h(to)f Fs(rl_completion_entry_)390 2285 y(function)28 b Ft(and)i(whose)g(return)f(v)-5 b(alues)31 b(are)g(used)e(to)j(generate)f(p)s(ossible)f(completions.)150 2475 y Fi(2.6.2)63 b(Completion)41 b(F)-10 b(unctions)150 2622 y Ft(Here)31 b(is)f(the)h(complete)h(list)f(of)f(callable)j (completion)e(functions)f(presen)m(t)h(in)f(Readline.)3350 2793 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete_internal)f Fg(\()p Ff(in)m(t)33 b(what)p 1861 2793 V 44 w(to)p 1994 2793 V 43 w(do)p Fg(\))390 2903 y Ft(Complete)k(the)g(w)m(ord)f(at)i (or)e(b)s(efore)g(p)s(oin)m(t.)60 b Fj(what)p 2208 2903 28 4 v 40 w(to)p 2328 2903 V 41 w(do)41 b Ft(sa)m(ys)c(what)f(to)i(do)e (with)g(the)h(com-)390 3012 y(pletion.)44 b(A)31 b(v)-5 b(alue)32 b(of)f(`)p Fs(?)p Ft(')g(means)h(list)f(the)h(p)s(ossible)e (completions.)45 b(`)p Fs(TAB)p Ft(')31 b(means)g(do)g(standard)390 3122 y(completion.)44 b(`)p Fs(*)p Ft(')32 b(means)f(insert)g(all)h(of) f(the)g(p)s(ossible)g(completions.)44 b(`)p Fs(!)p Ft(')32 b(means)f(to)h(displa)m(y)f(all)390 3231 y(of)k(the)f(p)s(ossible)g (completions,)j(if)d(there)h(is)f(more)g(than)h(one,)g(as)g(w)m(ell)g (as)g(p)s(erforming)e(partial)390 3341 y(completion.)41 b(`)p Fs(@)p Ft(')27 b(is)h(similar)f(to)h(`)p Fs(!)p Ft(',)h(but)d(p)s(ossible)h(completions)i(are)e(not)h(listed)g(if)f (the)g(p)s(ossible)390 3451 y(completions)32 b(share)e(a)g(common)h (pre\014x.)3350 3622 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete)c Fg(\()p Ff(in)m(t)34 b(ignore,)e(in)m(t)i(in)m(v)m (oking)p 2020 3622 30 5 v 43 w(k)m(ey)p Fg(\))390 3731 y Ft(Complete)42 b(the)f(w)m(ord)g(at)h(or)f(b)s(efore)g(p)s(oin)m(t.) 73 b(Y)-8 b(ou)41 b(ha)m(v)m(e)i(supplied)c(the)j(function)f(that)g(do) s(es)390 3841 y(the)33 b(initial)h(simple)f(matc)m(hing)h(selection)h (algorithm)f(\(see)g Fs(rl_completion_matches\(\))27 b Ft(and)390 3950 y Fs(rl_completion_entry_func)o(tion)o Ft(\).)52 b(The)35 b(default)h(is)g(to)h(do)e(\014lename)h(completion.) 59 b(This)390 4060 y(calls)32 b Fs(rl_complete_internal\(\))24 b Ft(with)30 b(an)g(argumen)m(t)h(dep)s(ending)e(on)h Fj(in)m(v)m(oking)p 3314 4060 28 4 v 41 w(k)m(ey)p Ft(.)3350 4231 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_possible_completio)q(ns) f Fg(\()p Ff(in)m(t)33 b(coun)m(t,)h(in)m(t)f(in)m(v)m(oking)p 2622 4231 30 5 v 43 w(k)m(ey)p Fg(\))390 4340 y Ft(List)41 b(the)f(p)s(ossible)g(completions.)73 b(See)40 b(description)h(of)g Fs(rl_complete)27 b(\(\))p Ft(.)70 b(This)40 b(calls)i Fs(rl_)390 4450 y(complete_internal\(\))25 b Ft(with)30 b(an)g(argumen)m(t)h(of)g(`)p Fs(?)p Ft('.)3350 4621 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_insert_completions)f Fg(\()p Ff(in)m(t)34 b(coun)m(t,)f(in)m(t)g(in)m(v)m(oking)p 2517 4621 V 44 w(k)m(ey)p Fg(\))390 4731 y Ft(Insert)g(the)h(list)g(of) g(p)s(ossible)f(completions)i(in)m(to)f(the)g(line,)h(deleting)g(the)f (partially-completed)390 4840 y(w)m(ord.)44 b(See)32 b(description)g(of)g Fs(rl_complete\(\))p Ft(.)41 b(This)31 b(calls)i Fs(rl_complete_internal\(\))25 b Ft(with)390 4950 y(an)30 b(argumen)m(t)h(of)g(`)p Fs(*)p Ft('.)3350 5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_completion_mode)e Fg(\()p Ff(rl)p 1455 5121 V 44 w(command)p 1919 5121 V 44 w(func)p 2147 5121 V 46 w(t)33 b(*cfunc)p Fg(\))390 5230 y Ft(Returns)40 b(the)i(appropriate)g(v)-5 b(alue)41 b(to)i(pass)e(to)h Fs(rl_complete_internal\(\))35 b Ft(dep)s(ending)40 b(on)390 5340 y(whether)g Fj(cfunc)46 b Ft(w)m(as)41 b(called)h(t)m(wice)g(in)f(succession)g(and)f(the)h(v)-5 b(alues)41 b(of)g(the)g Fs(show-all-if-)p eop end %%Page: 52 56 TeXDict begin 52 55 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(52)390 299 y Fs(ambiguous)25 b Ft(and)i Fs(show-all-if-unmodified)21 b Ft(v)-5 b(ariables.)41 b(Application-sp)s(eci\014c)29 b(completion)390 408 y(functions)h(ma)m(y)h(use)f(this)g(function)g(to) h(presen)m(t)g(the)f(same)h(in)m(terface)h(as)f Fs(rl_complete\(\))p Ft(.)3350 589 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e (rl_completion_matches)g Fg(\()p Ff(const)34 b(c)m(har)g(*text,)565 698 y(rl)p 639 698 30 5 v 44 w(comp)s(en)m(try)p 1145 698 V 44 w(func)p 1373 698 V 45 w(t)f(*en)m(try)p 1767 698 V 44 w(func)p Fg(\))390 808 y Ft(Returns)k(an)h(arra)m(y)g(of)g (strings)g(whic)m(h)f(is)h(a)g(list)h(of)f(completions)h(for)e Fj(text)p Ft(.)64 b(If)38 b(there)g(are)g(no)390 917 y(completions,)f(returns)c Fs(NULL)p Ft(.)52 b(The)34 b(\014rst)f(en)m(try)i(in)f(the)h(returned)e(arra)m(y)i(is)g(the)f (substitution)390 1027 y(for)26 b Fj(text)p Ft(.)40 b(The)26 b(remaining)h(en)m(tries)g(are)g(the)f(p)s(ossible)g(completions.)40 b(The)26 b(arra)m(y)h(is)f(terminated)390 1137 y(with)k(a)h Fs(NULL)e Ft(p)s(oin)m(ter.)390 1270 y Fj(en)m(try)p 603 1270 28 4 v 40 w(func)44 b Ft(is)c(a)g(function)f(of)h(t)m(w)m(o)g (args,)j(and)38 b(returns)h(a)g Fs(char)30 b(*)p Ft(.)67 b(The)39 b(\014rst)g(argumen)m(t)h(is)390 1379 y Fj(text)p Ft(.)66 b(The)39 b(second)f(is)h(a)g(state)h(argumen)m(t;)j(it)c(is)g (zero)g(on)g(the)g(\014rst)f(call,)k(and)c(non-zero)h(on)390 1489 y(subsequen)m(t)33 b(calls.)52 b Fj(en)m(try)p 1320 1489 V 41 w(func)38 b Ft(returns)33 b(a)h Fs(NULL)f Ft(p)s(oin)m(ter)g (to)i(the)f(caller)h(when)e(there)h(are)g(no)390 1599 y(more)d(matc)m(hes.)3350 1779 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_filename_completion)q(_fu)q(nct)q(ion)g Fg(\()p Ff(const)34 b(c)m(har)g(*text,)e(in)m(t)565 1888 y(state)p Fg(\))390 1998 y Ft(A)26 b(generator)h(function)e(for)g (\014lename)h(completion)h(in)e(the)h(general)h(case.)40 b Fj(text)28 b Ft(is)e(a)g(partial)h(\014le-)390 2107 y(name.)38 b(The)21 b(Bash)g(source)h(is)g(a)f(useful)g(reference)h (for)f(writing)h(application-sp)s(eci\014c)h(completion)390 2217 y(functions)30 b(\(the)h(Bash)f(completion)i(functions)e(call)i (this)e(and)g(other)g(Readline)h(functions\).)3350 2397 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_username_completion)q (_fu)q(nct)q(ion)g Fg(\()p Ff(const)34 b(c)m(har)g(*text,)e(in)m(t)565 2507 y(state)p Fg(\))390 2616 y Ft(A)d(completion)g(generator)h(for)e (usernames.)40 b Fj(text)31 b Ft(con)m(tains)f(a)f(partial)g(username)f (preceded)g(b)m(y)390 2726 y(a)j(random)f(c)m(haracter)i(\(usually)e(`) p Fs(~)p Ft('\).)42 b(As)31 b(with)f(all)h(completion)h(generators,)g Fj(state)37 b Ft(is)31 b(zero)g(on)390 2836 y(the)g(\014rst)e(call)j (and)e(non-zero)h(for)f(subsequen)m(t)f(calls.)150 3032 y Fi(2.6.3)63 b(Completion)41 b(V)-10 b(ariables)3371 3226 y Ft([V)i(ariable])-3598 b Fh(rl_compentry_func_t)58 b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 3336 y Ft(A)34 b(p)s(oin)m(ter)f(to)h(the)g(generator)h(function)e(for)g Fs(rl_completion_matches\(\))p Ft(.)44 b Fs(NULL)32 b Ft(means)h(to)390 3445 y(use)d Fs(rl_filename_completion_fu)o(nct)o (ion\()o(\))p Ft(,)25 b(the)30 b(default)h(\014lename)f(completer.)3371 3626 y([V)-8 b(ariable])-3598 b Fh(rl_completion_func_t)58 b(*)53 b(rl_attempted_completio)q(n_f)q(unct)q(ion)390 3735 y Ft(A)35 b(p)s(oin)m(ter)g(to)g(an)g(alternativ)m(e)i(function)d (to)i(create)g(matc)m(hes.)55 b(The)34 b(function)h(is)f(called)i(with) 390 3845 y Fj(text)p Ft(,)26 b Fj(start)p Ft(,)f(and)d Fj(end)p Ft(.)38 b Fj(start)25 b Ft(and)e Fj(end)j Ft(are)d(indices)g (in)g Fs(rl_line_buffer)c Ft(de\014ning)j(the)h(b)s(ound-)390 3954 y(aries)j(of)h Fj(text)p Ft(,)h(whic)m(h)d(is)h(a)h(c)m(haracter)g (string.)39 b(If)26 b(this)g(function)f(exists)i(and)e(returns)g Fs(NULL)p Ft(,)h(or)g(if)390 4064 y(this)c(v)-5 b(ariable)22 b(is)g(set)h(to)f Fs(NULL)p Ft(,)h(then)f Fs(rl_complete\(\))c Ft(will)k(call)h(the)f(v)-5 b(alue)23 b(of)f Fs(rl_completion_)390 4173 y(entry_function)i Ft(to)30 b(generate)f(matc)m(hes,)i(otherwise)d (the)h(arra)m(y)g(of)f(strings)h(returned)e(will)i(b)s(e)390 4283 y(used.)37 b(If)22 b(this)g(function)g(sets)h(the)g Fs(rl_attempted_completion)o(_ove)o(r)16 b Ft(v)-5 b(ariable)24 b(to)f(a)f(non-zero)390 4393 y(v)-5 b(alue,)35 b(Readline)g(will)f(not) g(p)s(erform)f(its)h(default)g(completion)h(ev)m(en)g(if)f(this)g (function)f(returns)390 4502 y(no)d(matc)m(hes.)3371 4682 y([V)-8 b(ariable])-3598 b Fh(rl_quote_func_t)57 b(*)52 b(rl_filename_quoting_)q(func)q(tio)q(n)390 4792 y Ft(A)33 b(p)s(oin)m(ter)f(to)h(a)g(function)g(that)g(will)g(quote)g (a)g(\014lename)f(in)h(an)f(application-sp)s(eci\014c)i(fashion.)390 4902 y(This)k(is)i(called)g(if)f(\014lename)h(completion)g(is)f(b)s (eing)g(attempted)i(and)d(one)i(of)f(the)g(c)m(haracters)390 5011 y(in)33 b Fs(rl_filename_quote_charac)o(ter)o(s)27 b Ft(app)s(ears)33 b(in)g(a)g(completed)h(\014lename.)50 b(The)32 b(function)390 5121 y(is)37 b(called)h(with)e Fj(text)p Ft(,)k Fj(matc)m(h)p 1438 5121 V 41 w(t)m(yp)s(e)p Ft(,)f(and)d Fj(quote)p 2119 5121 V 41 w(p)s(oin)m(ter)p Ft(.)60 b(The)36 b Fj(text)k Ft(is)d(the)g(\014lename)g(to)h(b)s(e)390 5230 y(quoted.)76 b(The)42 b Fj(matc)m(h)p 1210 5230 V 41 w(t)m(yp)s(e)48 b Ft(is)42 b(either)h Fs(SINGLE_MATCH)p Ft(,)f(if)g(there)g(is)h(only)f(one)h(completion)390 5340 y(matc)m(h,)33 b(or)e Fs(MULT_MATCH)p Ft(.)41 b(Some)31 b(functions)g(use)g(this)h(to)g(decide)f(whether)g(or)h(not)f(to)h (insert)g(a)p eop end %%Page: 53 57 TeXDict begin 53 56 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(53)390 299 y(closing)22 b(quote)f(c)m(haracter.)40 b(The)20 b Fj(quote)p 1751 299 28 4 v 41 w(p)s(oin)m(ter)27 b Ft(is)21 b(a)g(p)s(oin)m(ter)g(to)g(an)m(y)h(op)s(ening)e(quote)h(c)m (haracter)390 408 y(the)31 b(user)e(t)m(yp)s(ed.)41 b(Some)30 b(functions)g(c)m(ho)s(ose)h(to)g(reset)g(this)g(c)m(haracter.)3371 600 y([V)-8 b(ariable])-3598 b Fh(rl_dequote_func_t)57 b(*)c(rl_filename_dequoting_)q(fun)q(cti)q(on)390 710 y Ft(A)30 b(p)s(oin)m(ter)f(to)i(a)f(function)f(that)h(will)g(remo)m(v) m(e)h(application-sp)s(eci\014c)g(quoting)f(c)m(haracters)h(from)390 819 y(a)i(\014lename)g(b)s(efore)f(completion)h(is)g(attempted,)h(so)f (those)g(c)m(haracters)h(do)e(not)h(in)m(terfere)g(with)390 929 y(matc)m(hing)39 b(the)f(text)i(against)f(names)f(in)g(the)g (\014lesystem.)64 b(It)38 b(is)g(called)i(with)d Fj(text)p Ft(,)42 b(the)c(text)390 1038 y(of)k(the)h(w)m(ord)f(to)g(b)s(e)g (dequoted,)j(and)d Fj(quote)p 2014 1038 V 41 w(c)m(har)p Ft(,)j(whic)m(h)d(is)h(the)f(quoting)h(c)m(haracter)g(that)390 1148 y(delimits)33 b(the)f(\014lename)g(\(usually)h(`)p Fs(')p Ft(')f(or)g(`)p Fs(")p Ft('\).)46 b(If)32 b Fj(quote)p 2368 1148 V 41 w(c)m(har)39 b Ft(is)32 b(zero,)i(the)e(\014lename)g(w)m (as)h(not)390 1258 y(in)d(an)g(em)m(b)s(edded)g(string.)3371 1449 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57 b(*)c(rl_char_is_quoted_p)390 1559 y Ft(A)37 b(p)s(oin)m(ter)g(to)g(a)g (function)g(to)g(call)h(that)g(determines)f(whether)f(or)h(not)g(a)g (sp)s(eci\014c)f(c)m(haracter)390 1668 y(in)e(the)h(line)f(bu\013er)g (is)g(quoted,)i(according)g(to)f(whatev)m(er)g(quoting)g(mec)m(hanism)g (the)f(program)390 1778 y(calling)26 b(Readline)g(uses.)38 b(The)24 b(function)h(is)g(called)h(with)e(t)m(w)m(o)i(argumen)m(ts:)39 b Fj(text)p Ft(,)27 b(the)e(text)h(of)f(the)390 1887 y(line,)31 b(and)g Fj(index)p Ft(,)f(the)h(index)f(of)h(the)g(c)m (haracter)i(in)d(the)h(line.)42 b(It)31 b(is)g(used)f(to)h(decide)g (whether)g(a)390 1997 y(c)m(haracter)h(found)d(in)g Fs (rl_completer_word_break_ch)o(ara)o(cter)o(s)24 b Ft(should)29 b(b)s(e)h(used)f(to)i(break)390 2107 y(w)m(ords)f(for)g(the)h (completer.)3371 2298 y([V)-8 b(ariable])-3598 b Fh (rl_compignore_func_t)58 b(*)53 b(rl_ignore_some_complet)q(ion)q(s_fu)q (nct)q(ion)390 2408 y Ft(This)37 b(function,)i(if)f(de\014ned,)g(is)g (called)h(b)m(y)e(the)h(completer)h(when)e(real)h(\014lename)g (completion)390 2517 y(is)c(done,)h(after)f(all)h(the)g(matc)m(hing)g (names)e(ha)m(v)m(e)j(b)s(een)d(generated.)53 b(It)34 b(is)g(passed)f(a)i Fs(NULL)d Ft(ter-)390 2627 y(minated)f(arra)m(y)g (of)g(matc)m(hes.)43 b(The)31 b(\014rst)f(elemen)m(t)i(\()p Fs(matches[0])p Ft(\))d(is)h(the)h(maximal)h(substring)390 2737 y(common)d(to)g(all)h(matc)m(hes.)41 b(This)28 b(function)h(can)g (re-arrange)g(the)g(list)h(of)f(matc)m(hes)g(as)g(required,)390 2846 y(but)h(eac)m(h)h(elemen)m(t)h(deleted)f(from)f(the)h(arra)m(y)g (m)m(ust)f(b)s(e)g(freed.)3371 3038 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d(rl_directory_completio)q(n_ho)q(ok)390 3147 y Ft(This)44 b(function,)49 b(if)d(de\014ned,)i(is)d(allo)m(w)m (ed)i(to)f(mo)s(dify)e(the)i(directory)g(p)s(ortion)e(of)i(\014lenames) 390 3257 y(Readline)35 b(completes.)56 b(It)35 b(could)g(b)s(e)f(used)g (to)i(expand)e(sym)m(b)s(olic)h(links)g(or)g(shell)g(v)-5 b(ariables)35 b(in)390 3366 y(pathnames.)70 b(It)41 b(is)f(called)h (with)f(the)h(address)e(of)i(a)g(string)f(\(the)h(curren)m(t)f (directory)h(name\))390 3476 y(as)d(an)f(argumen)m(t,)j(and)d(ma)m(y)i (mo)s(dify)d(that)j(string.)62 b(If)37 b(the)h(string)f(is)h(replaced)g (with)f(a)h(new)390 3586 y(string,)j(the)d(old)h(v)-5 b(alue)39 b(should)e(b)s(e)h(freed.)64 b(An)m(y)39 b(mo)s(di\014ed)e (directory)i(name)f(should)g(ha)m(v)m(e)i(a)390 3695 y(trailing)c(slash.)54 b(The)35 b(mo)s(di\014ed)e(v)-5 b(alue)36 b(will)f(b)s(e)f(used)g(as)i(part)e(of)h(the)h(completion,)h (replacing)390 3805 y(the)32 b(directory)g(p)s(ortion)f(of)h(the)g (pathname)f(the)h(user)f(t)m(yp)s(ed.)44 b(A)m(t)33 b(the)f(least,)h (ev)m(en)g(if)e(no)h(other)390 3914 y(expansion)j(is)h(p)s(erformed,)f (this)h(function)f(should)g(remo)m(v)m(e)i(an)m(y)f(quote)g(c)m (haracters)h(from)e(the)390 4024 y(directory)c(name,)g(b)s(ecause)f (its)h(result)f(will)h(b)s(e)e(passed)h(directly)h(to)g Fs(opendir\(\))p Ft(.)390 4162 y(The)25 b(directory)i(completion)g(ho)s (ok)e(returns)g(an)h(in)m(teger)h(that)f(should)f(b)s(e)g(non-zero)i (if)e(the)i(func-)390 4272 y(tion)35 b(mo)s(di\014es)e(its)i(directory) f(argumen)m(t.)53 b(The)33 b(function)h(should)f(not)i(mo)s(dify)e(the) h(directory)390 4381 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 4573 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d (rl_directory_rewrite_h)q(ook;)390 4682 y Ft(If)24 b(non-zero,)i(this)e (is)h(the)f(address)g(of)g(a)h(function)f(to)h(call)g(when)f (completing)h(a)g(directory)g(name.)390 4792 y(This)h(function)g(tak)m (es)i(the)f(address)f(of)h(the)f(directory)h(name)g(to)g(b)s(e)f(mo)s (di\014ed)g(as)h(an)f(argumen)m(t.)390 4902 y(Unlik)m(e)40 b Fs(rl_directory_completion_h)o(ook)p Ft(,)35 b(it)40 b(only)f(mo)s(di\014es)f(the)i(directory)f(name)h(used)390 5011 y(in)35 b Fs(opendir)p Ft(,)g(not)g(what)h(is)f(displa)m(y)m(ed)h (when)e(the)i(p)s(ossible)f(completions)h(are)g(prin)m(ted)f(or)g(in-) 390 5121 y(serted.)k(It)27 b(is)f(called)h(b)s(efore)f(rl)p 1463 5121 V 40 w(directory)p 1859 5121 V 41 w(completion)p 2333 5121 V 41 w(ho)s(ok.)39 b(A)m(t)27 b(the)g(least,)h(ev)m(en)f(if)g (no)f(other)390 5230 y(expansion)35 b(is)h(p)s(erformed,)f(this)h (function)f(should)g(remo)m(v)m(e)i(an)m(y)f(quote)g(c)m(haracters)h (from)e(the)390 5340 y(directory)c(name,)g(b)s(ecause)f(its)h(result)f (will)h(b)s(e)e(passed)h(directly)h(to)g Fs(opendir\(\))p Ft(.)p eop end %%Page: 54 58 TeXDict begin 54 57 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(54)390 299 y(The)37 b(directory)i(rewrite)f(ho)s(ok)f(returns)g(an)h(in)m (teger)h(that)f(should)f(b)s(e)g(non-zero)i(if)e(the)i(func-)390 408 y(tion)e(mo)s(d\014es)e(its)h(directory)h(argumen)m(t.)58 b(The)36 b(function)f(should)h(not)g(mo)s(dify)f(the)h(directory)390 518 y(argumen)m(t)31 b(if)f(it)h(returns)e(0.)3371 731 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d (rl_filename_stat_hook)390 840 y Ft(If)30 b(non-zero,)h(this)f(is)g (the)g(address)f(of)h(a)h(function)f(for)f(the)i(completer)g(to)g(call) g(b)s(efore)f(deciding)390 950 y(whic)m(h)g(c)m(haracter)i(to)e(app)s (end)f(to)i(a)f(completed)h(name.)41 b(This)29 b(function)h(mo)s (di\014es)f(its)i(\014lename)390 1059 y(name)36 b(argumen)m(t,)h(and)e (the)h(mo)s(di\014ed)e(v)-5 b(alue)36 b(is)g(passed)f(to)h Fs(stat\(\))e Ft(to)i(determine)g(the)g(\014le's)390 1169 y(t)m(yp)s(e)41 b(and)f(c)m(haracteristics.)73 b(This)40 b(function)g(do)s(es)g(not)h(need)f(to)h(remo)m(v)m(e)h(quote)f(c)m (haracters)390 1279 y(from)30 b(the)g(\014lename.)390 1427 y(The)i(stat)h(ho)s(ok)f(returns)f(an)h(in)m(teger)i(that)e (should)g(b)s(e)f(non-zero)i(if)f(the)g(function)g(mo)s(d\014es)g(its) 390 1537 y(directory)42 b(argumen)m(t.)73 b(The)40 b(function)h(should) f(not)h(mo)s(dify)f(the)h(directory)h(argumen)m(t)f(if)g(it)390 1647 y(returns)29 b(0.)3371 1859 y([V)-8 b(ariable])-3598 b Fh(rl_dequote_func_t)57 b(*)c(rl_filename_rewrite_ho)q(ok)390 1969 y Ft(If)39 b(non-zero,)k(this)d(is)f(the)h(address)f(of)h(a)g (function)g(called)g(when)f(reading)h(directory)g(en)m(tries)390 2078 y(from)f(the)h(\014lesystem)g(for)g(completion)h(and)e(comparing)i (them)e(to)i(the)f(partial)h(w)m(ord)e(to)i(b)s(e)390 2188 y(completed.)g(The)26 b(function)h(should)f(p)s(erform)f(an)m(y)j (necessary)f(application)i(or)e(system-sp)s(eci\014c)390 2298 y(con)m(v)m(ersion)35 b(on)g(the)f(\014lename,)i(suc)m(h)d(as)i (con)m(v)m(erting)h(b)s(et)m(w)m(een)f(c)m(haracter)g(sets)g(or)f(con)m (v)m(erting)390 2407 y(from)f(a)g(\014lesystem)h(format)g(to)g(a)f(c)m (haracter)i(input)e(format.)50 b(The)32 b(function)h(tak)m(es)i(t)m(w)m (o)g(argu-)390 2517 y(men)m(ts:)49 b Fj(fname)p Ft(,)36 b(the)e(\014lename)h(to)g(b)s(e)f(con)m(v)m(erted,)j(and)d Fj(fnlen)p Ft(,)h(its)g(length)g(in)f(b)m(ytes.)53 b(It)35 b(m)m(ust)390 2626 y(either)24 b(return)e(its)h(\014rst)g(argumen)m(t)g (\(if)h(no)f(con)m(v)m(ersion)h(tak)m(es)h(place\))g(or)e(the)g(con)m (v)m(erted)i(\014lename)390 2736 y(in)j(newly-allo)s(cated)i(memory)-8 b(.)41 b(The)27 b(con)m(v)m(erted)j(form)e(is)g(used)g(to)h(compare)f (against)i(the)e(w)m(ord)390 2845 y(to)g(b)s(e)e(completed,)j(and,)f (if)f(it)h(matc)m(hes,)h(is)e(added)f(to)i(the)g(list)f(of)h(matc)m (hes.)41 b(Readline)27 b(will)h(free)390 2955 y(the)j(allo)s(cated)h (string.)3371 3168 y([V)-8 b(ariable])-3598 b Fh(rl_compdisp_func_t)58 b(*)52 b(rl_completion_display)q(_ma)q(tch)q(es_h)q(ook)390 3277 y Ft(If)22 b(non-zero,)i(then)e(this)g(is)g(the)g(address)f(of)h (a)g(function)g(to)h(call)g(when)e(completing)i(a)g(w)m(ord)e(w)m(ould) 390 3387 y(normally)h(displa)m(y)h(the)f(list)h(of)f(p)s(ossible)g (matc)m(hes.)39 b(This)21 b(function)h(is)g(called)i(in)e(lieu)g(of)g (Readline)390 3497 y(displa)m(ying)37 b(the)h(list.)61 b(It)37 b(tak)m(es)i(three)e(argumen)m(ts:)54 b(\()p Fs(char)30 b(**)p Fj(matc)m(hes)p Ft(,)39 b Fs(int)d Fj(n)m(um)p 3370 3497 28 4 v 40 w(matc)m(hes)p Ft(,)390 3606 y Fs(int)26 b Fj(max)p 735 3606 V 40 w(length)p Ft(\))h(where)f Fj(matc)m(hes)31 b Ft(is)c(the)f(arra)m(y)h(of)g(matc)m (hing)g(strings,)h Fj(n)m(um)p 3152 3606 V 39 w(matc)m(hes)j Ft(is)c(the)390 3716 y(n)m(um)m(b)s(er)35 b(of)i(strings)f(in)g(that)h (arra)m(y)-8 b(,)39 b(and)d Fj(max)p 2073 3716 V 40 w(length)h Ft(is)g(the)f(length)h(of)g(the)f(longest)i(string)390 3825 y(in)f(that)i(arra)m(y)-8 b(.)63 b(Readline)39 b(pro)m(vides)e(a)h (con)m(v)m(enience)i(function,)f Fs(rl_display_match_list)p Ft(,)390 3935 y(that)33 b(tak)m(es)g(care)g(of)f(doing)g(the)g(displa)m (y)g(to)h(Readline's)g(output)e(stream.)46 b(Y)-8 b(ou)33 b(ma)m(y)f(call)h(that)390 4044 y(function)d(from)g(this)g(ho)s(ok.) 3371 4257 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g (rl_basic_word_break_ch)q(ara)q(cter)q(s)390 4367 y Ft(The)44 b(basic)g(list)h(of)f(c)m(haracters)i(that)f(signal)g(a)f(break)g(b)s (et)m(w)m(een)h(w)m(ords)f(for)g(the)g(completer)390 4476 y(routine.)61 b(The)37 b(default)g(v)-5 b(alue)37 b(of)h(this)f(v)-5 b(ariable)38 b(is)f(the)g(c)m(haracters)i(whic)m(h)e (break)g(w)m(ords)f(for)390 4586 y(completion)c(in)e(Bash:)41 b Fs(")30 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)3371 4799 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g (rl_basic_quote_charact)q(ers)390 4908 y Ft(A)30 b(list)i(of)e(quote)h (c)m(haracters)h(whic)m(h)e(can)h(cause)g(a)f(w)m(ord)g(break.)3371 5121 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g (rl_completer_word_brea)q(k_c)q(hara)q(cte)q(rs)390 5230 y Ft(The)64 b(list)i(of)f(c)m(haracters)h(that)g(signal)g(a)f(break)g (b)s(et)m(w)m(een)g(w)m(ords)g(for)f Fs(rl_complete_)390 5340 y(internal\(\))p Ft(.)38 b(The)30 b(default)g(list)h(is)g(the)f(v) -5 b(alue)31 b(of)g Fs(rl_basic_word_break_cha)o(ract)o(ers)p Ft(.)p eop end %%Page: 55 59 TeXDict begin 55 58 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(55)3371 299 y([V)-8 b(ariable])-3598 b Fh(rl_cpvfunc_t)56 b(*)d (rl_completion_word_brea)q(k_ho)q(ok)390 408 y Ft(If)31 b(non-zero,)i(this)e(is)h(the)f(address)g(of)g(a)h(function)g(to)g (call)h(when)d(Readline)i(is)g(deciding)f(where)390 518 y(to)k(separate)g(w)m(ords)f(for)g(w)m(ord)g(completion.)54 b(It)34 b(should)f(return)g(a)i(c)m(haracter)h(string)e(lik)m(e)i Fs(rl_)390 628 y(completer_word_break_cha)o(ract)o(ers)26 b Ft(to)34 b(b)s(e)e(used)g(to)i(p)s(erform)e(the)h(curren)m(t)f (completion.)390 737 y(The)24 b(function)h(ma)m(y)g(c)m(ho)s(ose)h(to)f (set)g Fs(rl_completer_word_break_ch)o(arac)o(ter)o(s)19 b Ft(itself.)39 b(If)25 b(the)390 847 y(function)30 b(returns)f Fs(NULL)p Ft(,)h Fs(rl_completer_word_break)o(_cha)o(rac)o(ters)24 b Ft(is)30 b(used.)3371 1011 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g(rl_completer_quote_cha)q(rac)q(ters)390 1121 y Ft(A)34 b(list)g(of)g(c)m(haracters)h(whic)m(h)e(can)h(b)s(e)g (used)e(to)j(quote)f(a)g(substring)f(of)h(the)f(line.)51 b(Completion)390 1230 y(o)s(ccurs)26 b(on)g(the)g(en)m(tire)i (substring,)e(and)f(within)h(the)g(substring)g Fs (rl_completer_word_break)o(_)390 1340 y(characters)32 b Ft(are)k(treated)g(as)f(an)m(y)h(other)f(c)m(haracter,)j(unless)d (they)g(also)h(app)s(ear)e(within)h(this)390 1450 y(list.)3371 1614 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g (rl_filename_quote_char)q(act)q(ers)390 1724 y Ft(A)34 b(list)g(of)g(c)m(haracters)h(that)f(cause)h(a)f(\014lename)g(to)g(b)s (e)f(quoted)h(b)m(y)f(the)h(completer)h(when)e(they)390 1833 y(app)s(ear)d(in)g(a)h(completed)g(\014lename.)41 b(The)30 b(default)g(is)h(the)f(n)m(ull)h(string.)3371 1998 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g (rl_special_prefixes)390 2107 y Ft(The)27 b(list)i(of)e(c)m(haracters)j (that)e(are)g(w)m(ord)f(break)h(c)m(haracters,)i(but)d(should)f(b)s(e)h (left)i(in)e Fj(text)k Ft(when)390 2217 y(it)25 b(is)g(passed)f(to)h (the)g(completion)h(function.)38 b(Programs)25 b(can)g(use)f(this)h(to) g(help)f(determine)h(what)390 2326 y(kind)i(of)h(completing)h(to)f(do.) 40 b(F)-8 b(or)29 b(instance,)g(Bash)f(sets)g(this)g(v)-5 b(ariable)28 b(to)h Fs(")p Ft($@)p Fs(")e Ft(so)h(that)g(it)h(can)390 2436 y(complete)j(shell)e(v)-5 b(ariables)31 b(and)f(hostnames.)3371 2600 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_query_i)q (tems)390 2710 y Ft(Up)36 b(to)h(this)f(man)m(y)g(items)h(will)f(b)s(e) g(displa)m(y)m(ed)h(in)e(resp)s(onse)h(to)h(a)f(p)s (ossible-completions)h(call.)390 2819 y(After)28 b(that,)h(readline)f (asks)g(the)g(user)f(if)h(she)f(is)h(sure)f(she)h(w)m(an)m(ts)g(to)h (see)f(them)g(all.)40 b(The)28 b(default)390 2929 y(v)-5 b(alue)31 b(is)f(100.)42 b(A)31 b(negativ)m(e)h(v)-5 b(alue)31 b(indicates)g(that)g(Readline)g(should)f(nev)m(er)h(ask)f (the)h(user.)3371 3093 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_append_)q(char)q(act)q(er)390 3203 y Ft(When)33 b(a)h(single)f(completion)i(alternativ)m(e)h(matc)m(hes)e (at)g(the)f(end)g(of)g(the)h(command)f(line,)h(this)390 3313 y(c)m(haracter)23 b(is)e(app)s(ended)f(to)i(the)g(inserted)f (completion)i(text.)39 b(The)20 b(default)i(is)g(a)f(space)h(c)m (haracter)390 3422 y(\(`)31 b('\).)40 b(Setting)27 b(this)g(to)g(the)g (n)m(ull)f(c)m(haracter)j(\(`)p Fs(\\0)p Ft('\))e(prev)m(en)m(ts)g(an)m (ything)g(b)s(eing)f(app)s(ended)f(auto-)390 3532 y(matically)-8 b(.)41 b(This)22 b(can)i(b)s(e)f(c)m(hanged)h(in)f(application-sp)s (eci\014c)h(completion)h(functions)e(to)h(pro)m(vide)390 3641 y(the)d(\\most)i(sensible)e(w)m(ord)g(separator)h(c)m(haracter")h (according)f(to)g(an)f(application-sp)s(eci\014c)i(com-)390 3751 y(mand)28 b(line)i(syn)m(tax)f(sp)s(eci\014cation.)42 b(It)29 b(is)g(set)h(to)g(the)f(default)g(b)s(efore)g(an)m(y)g (application-sp)s(eci\014c)390 3861 y(completion)j(function)e(is)g (called,)i(and)e(ma)m(y)h(only)f(b)s(e)g(c)m(hanged)h(within)f(suc)m(h) g(a)h(function.)3371 4025 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres)q(s_ap)q(pen)q(d)390 4134 y Ft(If)33 b(non-zero,)i Fj(rl)p 949 4134 28 4 v 39 w(completion)p 1421 4134 V 42 w(app)s(end)p 1755 4134 V 38 w(c)m(haracter)42 b Ft(is)33 b(not)g(app)s(ended)f(to)i(matc)m (hes)g(at)g(the)g(end)390 4244 y(of)28 b(the)f(command)h(line,)h(as)e (describ)s(ed)g(ab)s(o)m(v)m(e.)41 b(It)27 b(is)h(set)g(to)g(0)g(b)s (efore)g(an)m(y)f(application-sp)s(eci\014c)390 4354 y(completion)32 b(function)e(is)g(called,)i(and)e(ma)m(y)h(only)f(b)s (e)g(c)m(hanged)h(within)f(suc)m(h)g(a)h(function.)3371 4518 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_quote_c)q (hara)q(cte)q(r)390 4628 y Ft(When)36 b(Readline)h(is)f(completing)h (quoted)g(text,)h(as)f(delimited)g(b)m(y)f(one)g(of)g(the)h(c)m (haracters)g(in)390 4737 y Fj(rl)p 457 4737 V 40 w(completer)p 885 4737 V 41 w(quote)p 1145 4737 V 41 w(c)m(haracters)p Ft(,)43 b(it)c(sets)g(this)g(v)-5 b(ariable)40 b(to)g(the)f(quoting)g (c)m(haracter)i(found.)390 4847 y(This)30 b(is)g(set)h(b)s(efore)f(an)m (y)h(application-sp)s(eci\014c)g(completion)h(function)e(is)h(called.) 3371 5011 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres) q(s_qu)q(ote)390 5121 y Ft(If)32 b(non-zero,)h(Readline)g(do)s(es)f (not)h(app)s(end)d(a)j(matc)m(hing)g(quote)g(c)m(haracter)h(when)d(p)s (erforming)390 5230 y(completion)25 b(on)e(a)h(quoted)g(string.)38 b(It)24 b(is)f(set)h(to)h(0)f(b)s(efore)f(an)m(y)h(application-sp)s (eci\014c)h(completion)390 5340 y(function)30 b(is)g(called,)i(and)e (ma)m(y)h(only)g(b)s(e)e(c)m(hanged)i(within)f(suc)m(h)g(a)h(function.) p eop end %%Page: 56 60 TeXDict begin 56 59 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(56)3371 299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_found_q)q (uote)390 408 y Ft(When)31 b(Readline)i(is)e(completing)i(quoted)f (text,)h(it)f(sets)g(this)g(v)-5 b(ariable)32 b(to)h(a)f(non-zero)g(v) -5 b(alue)32 b(if)390 518 y(the)21 b(w)m(ord)g(b)s(eing)g(completed)h (con)m(tains)g(or)f(is)g(delimited)h(b)m(y)f(an)m(y)g(quoting)h(c)m (haracters,)i(including)390 628 y(bac)m(kslashes.)42 b(This)29 b(is)i(set)g(b)s(efore)f(an)m(y)g(application-sp)s(eci\014c)i (completion)g(function)e(is)g(called.)3371 816 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_mark_sy)q(mlin)q(k_d)q (irs)390 925 y Ft(If)31 b(non-zero,)i(a)f(slash)g(will)g(b)s(e)f(app)s (ended)f(to)j(completed)g(\014lenames)e(that)i(are)f(sym)m(b)s(olic)g (links)390 1035 y(to)25 b(directory)g(names,)g(sub)5 b(ject)24 b(to)h(the)f(v)-5 b(alue)25 b(of)f(the)h(user-settable)g Fj(mark-directories)k Ft(v)-5 b(ariable.)390 1144 y(This)27 b(v)-5 b(ariable)28 b(exists)g(so)f(that)h(application-sp)s(eci\014c)h (completion)g(functions)e(can)g(o)m(v)m(erride)i(the)390 1254 y(user's)42 b(global)h(preference)g(\(set)g(via)g(the)f Fj(mark-symlink)m(ed-directories)48 b Ft(Readline)43 b(v)-5 b(ariable\))390 1363 y(if)38 b(appropriate.)62 b(This)37 b(v)-5 b(ariable)38 b(is)g(set)g(to)g(the)g(user's)f (preference)g(b)s(efore)g(an)m(y)h(application-)390 1473 y(sp)s(eci\014c)31 b(completion)i(function)f(is)f(called,)j(so)e (unless)f(that)h(function)f(mo)s(di\014es)g(the)h(v)-5 b(alue,)33 b(the)390 1583 y(user's)d(preferences)g(are)h(honored.)3371 1771 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_ignore_completion_)q (dupl)q(ica)q(tes)390 1880 y Ft(If)30 b(non-zero,)h(then)f(duplicates)h (in)f(the)h(matc)m(hes)g(are)g(remo)m(v)m(ed.)42 b(The)29 b(default)i(is)f(1.)3371 2068 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_filename_completio)q(n_de)q(sir)q(ed)390 2178 y Ft(Non-zero)33 b(means)f(that)g(the)g(results)f(of)h(the)g(matc) m(hes)h(are)f(to)h(b)s(e)e(treated)i(as)f(\014lenames.)45 b(This)390 2287 y(is)40 b Fk(always)49 b Ft(zero)41 b(when)e (completion)i(is)f(attempted,)j(and)d(can)g(only)g(b)s(e)f(c)m(hanged)i (within)e(an)390 2397 y(application-sp)s(eci\014c)i(completion)g (function.)67 b(If)39 b(it)h(is)f(set)h(to)h(a)e(non-zero)h(v)-5 b(alue)40 b(b)m(y)f(suc)m(h)h(a)390 2506 y(function,)24 b(directory)f(names)f(ha)m(v)m(e)h(a)g(slash)f(app)s(ended)e(and)i (Readline)h(attempts)g(to)g(quote)g(com-)390 2616 y(pleted)35 b(\014lenames)g(if)g(they)h(con)m(tain)g(an)m(y)f(c)m(haracters)i(in)e Fs(rl_filename_quote_chara)o(cter)o(s)390 2725 y Ft(and)30 b Fs(rl_filename_quoting_des)o(ired)24 b Ft(is)30 b(set)h(to)g(a)g (non-zero)g(v)-5 b(alue.)3371 2913 y([V)d(ariable])-3598 b Fh(int)53 b(rl_filename_quoting_d)q(esir)q(ed)390 3023 y Ft(Non-zero)29 b(means)f(that)h(the)f(results)g(of)g(the)g(matc)m (hes)i(are)e(to)h(b)s(e)e(quoted)h(using)g(double)f(quotes)390 3133 y(\(or)43 b(an)f(application-sp)s(eci\014c)i(quoting)f(mec)m (hanism\))g(if)f(the)h(completed)g(\014lename)g(con)m(tains)390 3242 y(an)m(y)28 b(c)m(haracters)h(in)e Fs(rl_filename_quote_chars)p Ft(.)34 b(This)27 b(is)g Fk(always)37 b Ft(non-zero)28 b(when)f(comple-)390 3352 y(tion)h(is)g(attempted,)h(and)e(can)h(only)g (b)s(e)f(c)m(hanged)h(within)f(an)h(application-sp)s(eci\014c)h (completion)390 3461 y(function.)37 b(The)21 b(quoting)g(is)g (e\013ected)i(via)e(a)h(call)g(to)g(the)f(function)g(p)s(oin)m(ted)g (to)g(b)m(y)g Fs(rl_filename_)390 3571 y(quoting_function)p Ft(.)3371 3759 y([V)-8 b(ariable])-3598 b Fh(int)53 b (rl_attempted_completi)q(on_o)q(ver)390 3868 y Ft(If)93 b(an)h(application-sp)s(eci\014c)i(completion)f(function)f(assigned)g (to)h Fs(rl_attempted_)390 3978 y(completion_function)48 b Ft(sets)53 b(this)g(v)-5 b(ariable)54 b(to)g(a)f(non-zero)h(v)-5 b(alue,)60 b(Readline)53 b(will)h(not)390 4088 y(p)s(erform)28 b(its)i(default)g(\014lename)g(completion)h(ev)m(en)f(if)g(the)f (application's)i(completion)g(function)390 4197 y(returns)e(no)h(matc)m (hes.)42 b(It)31 b(should)e(b)s(e)h(set)h(only)f(b)m(y)h(an)f (application's)i(completion)f(function.)3371 4385 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_sort_completion_ma)q(tche)q(s)390 4495 y Ft(If)29 b(an)h(application)h(sets)f(this)g(v)-5 b(ariable)31 b(to)f(0,)h(Readline)f(will)g(not)g(sort)g(the)g(list)h (of)f(completions)390 4604 y(\(whic)m(h)25 b(implies)f(that)i(it)f (cannot)g(remo)m(v)m(e)h(an)m(y)f(duplicate)g(completions\).)40 b(The)24 b(default)h(v)-5 b(alue)25 b(is)390 4714 y(1,)32 b(whic)m(h)f(means)g(that)h(Readline)g(will)f(sort)h(the)f(completions) h(and,)f(dep)s(ending)f(on)h(the)g(v)-5 b(alue)390 4823 y(of)31 b Fs(rl_ignore_completion_du)o(pli)o(cate)o(s)p Ft(,)25 b(will)30 b(attempt)i(to)f(remo)m(v)m(e)h(duplicate)f(matc)m (hes.)3371 5011 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_type)390 5121 y Ft(Set)35 b(to)h(a)f(c)m(haracter)i (describing)e(the)g(t)m(yp)s(e)g(of)g(completion)i(Readline)e(is)g (curren)m(tly)h(attempt-)390 5230 y(ing;)f(see)f(the)g(description)f (of)g Fs(rl_complete_internal\(\))28 b Ft(\(see)34 b(Section)g(2.6.2)h ([Completion)390 5340 y(F)-8 b(unctions],)39 b(page)f(51\))f(for)g(the) g(list)g(of)g(c)m(haracters.)61 b(This)36 b(is)g(set)i(to)f(the)g (appropriate)f(v)-5 b(alue)p eop end %%Page: 57 61 TeXDict begin 57 60 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(57)390 299 y(b)s(efore)31 b(an)m(y)h(application-sp)s(eci\014c)h(completion)g (function)f(is)f(called,)j(allo)m(wing)f(suc)m(h)e(functions)390 408 y(to)g(presen)m(t)g(the)f(same)h(in)m(terface)h(as)e Fs(rl_complete\(\))p Ft(.)3371 593 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_invokin)q(g_ke)q(y)390 702 y Ft(Set)41 b(to)g(the)g(\014nal)g(c)m(haracter)h(in)e(the)h(k)m(ey)g (sequence)h(that)f(in)m(v)m(ok)m(ed)h(one)f(of)g(the)g(completion)390 812 y(functions)c(that)h(call)h Fs(rl_complete_internal\(\))p Ft(.)56 b(This)37 b(is)g(set)h(to)g(the)g(appropriate)f(v)-5 b(alue)390 922 y(b)s(efore)30 b(an)m(y)h(application-sp)s(eci\014c)h (completion)f(function)f(is)h(called.)3371 1106 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_inhibit_completion)390 1215 y Ft(If)28 b(this)g(v)-5 b(ariable)29 b(is)f(non-zero,)i (completion)f(is)f(inhibited.)40 b(The)28 b(completion)h(c)m(haracter)h (will)f(b)s(e)390 1325 y(inserted)h(as)h(an)m(y)g(other)f(b)s(ound)e (to)k Fs(self-insert)p Ft(.)150 1524 y Fi(2.6.4)63 b(A)40 b(Short)i(Completion)g(Example)150 1671 y Ft(Here)30 b(is)f(a)g(small)h(application)g(demonstrating)f(the)h(use)e(of)i(the)f (GNU)h(Readline)f(library)-8 b(.)40 b(It)30 b(is)f(called)150 1781 y Fs(fileman)p Ft(,)40 b(and)f(the)h(source)g(co)s(de)g(resides)f (in)g Fs(examples/fileman.c)p Ft(.)64 b(This)39 b(sample)h(application) 150 1890 y(pro)m(vides)26 b(completion)i(of)e(command)g(names,)h(line)f (editing)h(features,)h(and)d(access)j(to)f(the)f(history)g(list.)p eop end %%Page: 58 62 TeXDict begin 58 61 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(58)390 299 y Fe(/*)40 b(fileman.c)h(--)f(A)f(tiny)h(application)i(which)e (demonstrates)i(how)e(to)g(use)g(the)508 386 y(GNU)g(Readline)h (library.)80 b(This)40 b(application)i(interactively)g(allows)f(users) 508 473 y(to)e(manipulate)j(files)e(and)g(their)h(modes.)f(*/)390 648 y(#ifdef)h(HAVE_CONFIG_H)390 735 y(#)79 b(include)40 b()390 822 y(#endif)390 996 y(#include)h()390 1083 y(#ifdef)g(HAVE_SYS_FILE_H)390 1171 y(#)79 b(include)40 b()390 1258 y(#endif)390 1345 y(#include)h()390 1519 y(#ifdef)g(HAVE_UNISTD_H)390 1606 y(#)79 b(include)40 b()390 1694 y(#endif)390 1868 y(#include)h()390 1955 y(#include)g()390 2042 y(#include)g()390 2217 y(#if)f(defined)h(\(HAVE_STRING_H\))390 2304 y(#)79 b(include)40 b()390 2391 y(#else)g(/*)g(!HAVE_STRING_H)i(*/) 390 2478 y(#)79 b(include)40 b()390 2565 y(#endif)h(/*)e (!HAVE_STRING_H)k(*/)390 2740 y(#ifdef)e(HAVE_STDLIB_H)390 2827 y(#)79 b(include)40 b()390 2914 y(#endif)390 3088 y(#include)h()390 3263 y(#include)g() 390 3350 y(#include)g()390 3524 y(extern)g(char)f (*xmalloc)h(PARAMS\(\(size_t\)\);)390 3699 y(/*)f(The)g(names)g(of)g (functions)h(that)f(actually)h(do)f(the)g(manipulation.)i(*/)390 3786 y(int)e(com_list)h(PARAMS\(\(char)h(*\)\);)390 3873 y(int)e(com_view)h(PARAMS\(\(char)h(*\)\);)390 3960 y(int)e(com_rename) h(PARAMS\(\(char)h(*\)\);)390 4047 y(int)e(com_stat)h(PARAMS\(\(char)h (*\)\);)390 4134 y(int)e(com_pwd)h(PARAMS\(\(char)h(*\)\);)390 4222 y(int)e(com_delete)h(PARAMS\(\(char)h(*\)\);)390 4309 y(int)e(com_help)h(PARAMS\(\(char)h(*\)\);)390 4396 y(int)e(com_cd)g(PARAMS\(\(char)i(*\)\);)390 4483 y(int)e(com_quit)h (PARAMS\(\(char)h(*\)\);)390 4658 y(/*)e(A)f(structure)i(which)g (contains)g(information)h(on)d(the)h(commands)h(this)f(program)508 4745 y(can)g(understand.)h(*/)390 4919 y(typedef)g(struct)f({)468 5006 y(char)h(*name;)f(/*)g(User)g(printable)h(name)f(of)g(the)g (function.)h(*/)468 5093 y(rl_icpfunc_t)h(*func;)f(/*)f(Function)h(to)e (call)i(to)e(do)h(the)g(job.)g(*/)468 5181 y(char)h(*doc;)f(/*)g (Documentation)i(for)e(this)g(function.)80 b(*/)390 5268 y(})39 b(COMMAND;)p eop end %%Page: 59 63 TeXDict begin 59 62 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(59)390 386 y Fe(COMMAND)41 b(commands[])g(=)f({)468 473 y({)g("cd",)g(com_cd,) h("Change)g(to)f(directory)h(DIR")f(},)468 560 y({)g("delete",)h (com_delete,)h("Delete)f(FILE")f(},)468 648 y({)g("help",)h(com_help,)g ("Display)g(this)f(text")h(},)468 735 y({)f("?",)g(com_help,)h ("Synonym)g(for)f(`help'")h(},)468 822 y({)f("list",)h(com_list,)g ("List)f(files)h(in)e(DIR")i(},)468 909 y({)f("ls",)g(com_list,)i ("Synonym)f(for)f(`list'")g(},)468 996 y({)g("pwd",)g(com_pwd,)i ("Print)e(the)g(current)h(working)g(directory")g(},)468 1083 y({)f("quit",)h(com_quit,)g("Quit)f(using)h(Fileman")g(},)468 1171 y({)f("rename",)h(com_rename,)h("Rename)f(FILE)f(to)g(NEWNAME")h (},)468 1258 y({)f("stat",)h(com_stat,)g("Print)g(out)f(statistics)h (on)f(FILE")g(},)468 1345 y({)g("view",)h(com_view,)g("View)f(the)g (contents)h(of)f(FILE")g(},)468 1432 y({)g(\(char)g(*\)NULL,)h (\(rl_icpfunc_t)h(*\)NULL,)f(\(char)f(*\)NULL)h(})390 1519 y(};)390 1694 y(/*)f(Forward)g(declarations.)j(*/)390 1781 y(char)d(*stripwhite)i(\(\);)390 1868 y(COMMAND)f(*find_command)h (\(\);)390 2042 y(/*)e(The)g(name)g(of)f(this)i(program,)g(as)e(taken)i (from)f(argv[0].)h(*/)390 2130 y(char)f(*progname;)390 2304 y(/*)g(When)g(non-zero,)h(this)f(global)h(means)f(the)g(user)g(is) g(done)g(using)g(this)h(program.)g(*/)390 2391 y(int)f(done;)390 2565 y(char)g(*)390 2653 y(dupstr)h(\(s\))586 2740 y(char)f(*s;)390 2827 y({)468 2914 y(char)h(*r;)468 3088 y(r)f(=)f(xmalloc)i(\(strlen)g (\(s\))f(+)f(1\);)468 3176 y(strcpy)i(\(r,)f(s\);)468 3263 y(return)h(\(r\);)390 3350 y(})390 3524 y(main)f(\(argc,)h(argv\)) 586 3611 y(int)f(argc;)586 3699 y(char)g(**argv;)390 3786 y({)468 3873 y(char)h(*line,)f(*s;)468 4047 y(progname)h(=)f (argv[0];)468 4222 y(initialize_readline)k(\(\);)c(/*)g(Bind)g(our)g (completer.)h(*/)468 4396 y(/*)f(Loop)g(reading)h(and)f(executing)h (lines)g(until)f(the)g(user)g(quits.)h(*/)468 4483 y(for)f(\()g(;)f (done)h(==)g(0;)g(\))547 4570 y({)625 4658 y(line)g(=)g(readline)h (\("FileMan:)h("\);)625 4832 y(if)e(\(!line\))704 4919 y(break;)625 5093 y(/*)g(Remove)h(leading)f(and)g(trailing)h (whitespace)h(from)e(the)g(line.)743 5181 y(Then,)g(if)g(there)g(is)g (anything)h(left,)g(add)e(it)h(to)g(the)g(history)h(list)743 5268 y(and)f(execute)h(it.)f(*/)p eop end %%Page: 60 64 TeXDict begin 60 63 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(60)625 299 y Fe(s)40 b(=)f(stripwhite)j(\(line\);)625 473 y(if)e(\(*s\))704 560 y({)782 648 y(add_history)i(\(s\);)782 735 y(execute_line)g(\(s\);) 704 822 y(})625 996 y(free)e(\(line\);)547 1083 y(})468 1171 y(exit)h(\(0\);)390 1258 y(})390 1432 y(/*)f(Execute)g(a)g (command)h(line.)f(*/)390 1519 y(int)390 1606 y(execute_line)i (\(line\))586 1694 y(char)e(*line;)390 1781 y({)468 1868 y(register)h(int)f(i;)468 1955 y(COMMAND)h(*command;)468 2042 y(char)g(*word;)468 2217 y(/*)f(Isolate)h(the)f(command)h(word.)f (*/)468 2304 y(i)g(=)f(0;)468 2391 y(while)i(\(line[i])g(&&)f (whitespace)h(\(line[i]\)\))547 2478 y(i++;)468 2565 y(word)g(=)e(line)h(+)g(i;)468 2740 y(while)h(\(line[i])g(&&)f (!whitespace)h(\(line[i]\)\))547 2827 y(i++;)468 3001 y(if)f(\(line[i]\))547 3088 y(line[i++])h(=)f('\\0';)468 3263 y(command)h(=)f(find_command)i(\(word\);)468 3437 y(if)e(\(!command\))547 3524 y({)625 3611 y(fprintf)h(\(stderr,)g ("\045s:)f(No)g(such)g(command)h(for)f(FileMan.\\n",)i(word\);)625 3699 y(return)f(\(-1\);)547 3786 y(})468 3960 y(/*)f(Get)g(argument)h (to)f(command,)h(if)f(any.)g(*/)468 4047 y(while)h(\(whitespace)h (\(line[i]\)\))547 4134 y(i++;)468 4309 y(word)f(=)e(line)h(+)g(i;)468 4483 y(/*)g(Call)g(the)g(function.)h(*/)468 4570 y(return)g (\(\(*\(command->func\)\))j(\(word\)\);)390 4658 y(})390 4832 y(/*)c(Look)g(up)f(NAME)i(as)e(the)h(name)g(of)g(a)g(command,)h (and)e(return)i(a)f(pointer)g(to)g(that)508 4919 y(command.)80 b(Return)41 b(a)e(NULL)h(pointer)h(if)f(NAME)g(isn't)g(a)g(command)g (name.)h(*/)390 5006 y(COMMAND)g(*)390 5093 y(find_command)h(\(name\)) 586 5181 y(char)e(*name;)390 5268 y({)p eop end %%Page: 61 65 TeXDict begin 61 64 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(61)468 299 y Fe(register)41 b(int)f(i;)468 473 y(for)g(\(i)g(=)f(0;)h (commands[i].name;)j(i++\))547 560 y(if)d(\(strcmp)g(\(name,)h (commands[i].name\))i(==)d(0\))625 648 y(return)h(\(&commands[i]\);)468 822 y(return)g(\(\(COMMAND)g(*\)NULL\);)390 909 y(})390 1083 y(/*)f(Strip)g(whitespace)i(from)e(the)g(start)g(and)g(end)g(of)f (STRING.)81 b(Return)40 b(a)g(pointer)508 1171 y(into)g(STRING.)h(*/) 390 1258 y(char)f(*)390 1345 y(stripwhite)h(\(string\))586 1432 y(char)f(*string;)390 1519 y({)468 1606 y(register)h(char)g(*s,)f (*t;)468 1781 y(for)g(\(s)g(=)f(string;)i(whitespace)h(\(*s\);)e(s++\)) 547 1868 y(;)468 2042 y(if)g(\(*s)g(==)g(0\))547 2130 y(return)g(\(s\);)468 2304 y(t)g(=)f(s)h(+)f(strlen)i(\(s\))f(-)f(1;) 468 2391 y(while)i(\(t)e(>)h(s)f(&&)h(whitespace)i(\(*t\)\))547 2478 y(t--;)468 2565 y(*++t)f(=)e('\\0';)468 2740 y(return)i(s;)390 2827 y(})390 3001 y(/*)f(******************************)q(*****)q(****) q(*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390 3088 y(/*)2589 b(*/)390 3176 y(/*)707 b(Interface)41 b(to)f(Readline)h(Completion)629 b(*/)390 3263 y(/*)2589 b(*/)390 3350 y(/*)40 b(******************************)q(*****)q(****)q (*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390 3524 y(char)40 b(*command_generator)j(PARAMS\(\(const)g(char)d(*,)f (int\)\);)390 3611 y(char)h(**fileman_completion)k(PARAMS\(\(const)e (char)e(*,)g(int,)g(int\)\);)390 3786 y(/*)g(Tell)g(the)g(GNU)g (Readline)h(library)g(how)e(to)h(complete.)81 b(We)39 b(want)h(to)g(try)g(to)g(complete)508 3873 y(on)f(command)i(names)g(if) e(this)h(is)g(the)g(first)g(word)g(in)g(the)g(line,)g(or)g(on)g (filenames)508 3960 y(if)f(not.)h(*/)390 4047 y(initialize_readline)k (\(\))390 4134 y({)468 4222 y(/*)c(Allow)g(conditional)i(parsing)f(of)f (the)g(~/.inputrc)h(file.)g(*/)468 4309 y(rl_readline_name)i(=)d ("FileMan";)468 4483 y(/*)g(Tell)g(the)g(completer)h(that)g(we)e(want)h (a)g(crack)g(first.)h(*/)468 4570 y(rl_attempted_completion_fun)q(ctio) q(n)k(=)39 b(fileman_completion;)390 4658 y(})390 4832 y(/*)h(Attempt)g(to)g(complete)h(on)f(the)g(contents)h(of)f(TEXT.)79 b(START)41 b(and)e(END)h(bound)h(the)508 4919 y(region)f(of)g (rl_line_buffer)i(that)f(contains)g(the)e(word)i(to)e(complete.)81 b(TEXT)40 b(is)508 5006 y(the)g(word)g(to)f(complete.)81 b(We)40 b(can)g(use)f(the)h(entire)h(contents)g(of)f(rl_line_buffer)508 5093 y(in)f(case)h(we)g(want)g(to)g(do)g(some)g(simple)g(parsing.)81 b(Return)40 b(the)g(array)h(of)e(matches,)508 5181 y(or)g(NULL)h(if)g (there)h(aren't)f(any.)g(*/)390 5268 y(char)g(**)p eop end %%Page: 62 66 TeXDict begin 62 65 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(62)390 299 y Fe(fileman_completion)43 b(\(text,)e(start,)g(end\))586 386 y(const)f(char)h(*text;)586 473 y(int)f(start,)h(end;)390 560 y({)468 648 y(char)g(**matches;)468 822 y(matches)g(=)f(\(char)g (**\)NULL;)468 996 y(/*)g(If)g(this)g(word)g(is)g(at)f(the)h(start)h (of)e(the)h(line,)h(then)f(it)g(is)f(a)h(command)586 1083 y(to)g(complete.)80 b(Otherwise)42 b(it)d(is)h(the)g(name)g(of)g (a)f(file)h(in)g(the)g(current)586 1171 y(directory.)i(*/)468 1258 y(if)e(\(start)h(==)e(0\))547 1345 y(matches)i(=)e (rl_completion_matches)44 b(\(text,)d(command_generator\);)468 1519 y(return)g(\(matches\);)390 1606 y(})390 1781 y(/*)f(Generator)h (function)g(for)f(command)h(completion.)81 b(STATE)40 b(lets)g(us)g(know)g(whether)508 1868 y(to)f(start)i(from)f(scratch;)h (without)g(any)f(state)g(\(i.e.)g(STATE)h(==)e(0\),)h(then)g(we)508 1955 y(start)g(at)g(the)g(top)g(of)f(the)h(list.)h(*/)390 2042 y(char)f(*)390 2130 y(command_generator)j(\(text,)e(state\))586 2217 y(const)f(char)h(*text;)586 2304 y(int)f(state;)390 2391 y({)468 2478 y(static)h(int)f(list_index,)i(len;)468 2565 y(char)f(*name;)468 2740 y(/*)f(If)g(this)g(is)g(a)f(new)h(word)g (to)g(complete,)h(initialize)h(now.)79 b(This)40 b(includes)586 2827 y(saving)h(the)f(length)g(of)g(TEXT)g(for)g(efficiency,)i(and)e (initializing)i(the)d(index)586 2914 y(variable)i(to)f(0.)g(*/)468 3001 y(if)g(\(!state\))547 3088 y({)625 3176 y(list_index)i(=)d(0;)625 3263 y(len)h(=)g(strlen)g(\(text\);)547 3350 y(})468 3524 y(/*)g(Return)h(the)f(next)g(name)g(which)g(partially)i(matches)e (from)h(the)e(command)i(list.)g(*/)468 3611 y(while)g(\(name)f(=)g (commands[list_index].name\))547 3699 y({)625 3786 y(list_index++;)625 3960 y(if)g(\(strncmp)h(\(name,)g(text,)f(len\))g(==)g(0\))704 4047 y(return)g(\(dupstr\(name\)\);)547 4134 y(})468 4309 y(/*)g(If)g(no)f(names)i(matched,)g(then)f(return)h(NULL.)f(*/)468 4396 y(return)h(\(\(char)g(*\)NULL\);)390 4483 y(})390 4658 y(/*)f(******************************)q(*****)q(****)q(*****)q (****)q(****)q(*****)q(****)q(***)45 b(*/)390 4745 y(/*)2589 b(*/)390 4832 y(/*)903 b(FileMan)41 b(Commands)1060 b(*/)390 4919 y(/*)2589 b(*/)390 5006 y(/*)40 b(******************************)q (*****)q(****)q(*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390 5181 y(/*)40 b(String)g(to)g(pass)g(to)g(system)g(\(\).)80 b(This)40 b(is)f(for)h(the)g(LIST,)h(VIEW)f(and)g(RENAME)508 5268 y(commands.)h(*/)p eop end %%Page: 63 67 TeXDict begin 63 66 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(63)390 299 y Fe(static)41 b(char)f(syscom[1024];)390 473 y(/*)g(List)g(the)g (file\(s\))h(named)f(in)g(arg.)g(*/)390 560 y(com_list)h(\(arg\))586 648 y(char)f(*arg;)390 735 y({)468 822 y(if)g(\(!arg\))547 909 y(arg)g(=)f("";)468 1083 y(sprintf)i(\(syscom,)g("ls)f(-FClg)h (\045s",)f(arg\);)468 1171 y(return)h(\(system)g(\(syscom\)\);)390 1258 y(})390 1432 y(com_view)g(\(arg\))586 1519 y(char)f(*arg;)390 1606 y({)468 1694 y(if)g(\(!valid_argument)j(\("view",)e(arg\)\))547 1781 y(return)f(1;)390 1955 y(#if)g(defined)h(\(__MSDOS__\))468 2042 y(/*)f(more.com)h(doesn't)g(grok)f(slashes)h(in)f(pathnames)h(*/) 468 2130 y(sprintf)g(\(syscom,)g("less)g(\045s",)f(arg\);)390 2217 y(#else)468 2304 y(sprintf)h(\(syscom,)g("more)g(\045s",)f(arg\);) 390 2391 y(#endif)468 2478 y(return)h(\(system)g(\(syscom\)\);)390 2565 y(})390 2740 y(com_rename)g(\(arg\))586 2827 y(char)f(*arg;)390 2914 y({)468 3001 y(too_dangerous)j(\("rename"\);)468 3088 y(return)e(\(1\);)390 3176 y(})390 3350 y(com_stat)g(\(arg\))586 3437 y(char)f(*arg;)390 3524 y({)468 3611 y(struct)h(stat)f(finfo;)468 3786 y(if)g(\(!valid_argument)j(\("stat",)e(arg\)\))547 3873 y(return)f(\(1\);)468 4047 y(if)g(\(stat)g(\(arg,)h(&finfo\))g(==) e(-1\))547 4134 y({)625 4222 y(perror)i(\(arg\);)625 4309 y(return)g(\(1\);)547 4396 y(})468 4570 y(printf)g(\("Statistics)h (for)e(`\045s':\\n",)h(arg\);)468 4745 y(printf)g(\("\045s)f(has)g (\045d)g(link\045s,)h(and)f(is)f(\045d)h(byte\045s)g(in)g(length.\\n",) 468 4832 y(arg,)782 4919 y(finfo.st_nlink,)782 5006 y(\(finfo.st_nlink) j(==)d(1\))f(?)h("")f(:)h("s",)782 5093 y(finfo.st_size,)782 5181 y(\(finfo.st_size)j(==)c(1\))h(?)g("")f(:)h("s"\);)468 5268 y(printf)h(\("Inode)g(Last)f(Change)h(at:)f(\045s",)g(ctime)g (\(&finfo.st_ctime\)\);)p eop end %%Page: 64 68 TeXDict begin 64 67 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(64)468 299 y Fe(printf)41 b(\(")236 b(Last)40 b(access)h(at:)f(\045s",)g (ctime)g(\(&finfo.st_atime\)\);)468 386 y(printf)h(\(")157 b(Last)41 b(modified)g(at:)f(\045s",)g(ctime)g(\(&finfo.st_mtime\)\);) 468 473 y(return)h(\(0\);)390 560 y(})390 735 y(com_delete)g(\(arg\)) 586 822 y(char)f(*arg;)390 909 y({)468 996 y(too_dangerous)j (\("delete"\);)468 1083 y(return)e(\(1\);)390 1171 y(})390 1345 y(/*)f(Print)g(out)g(help)g(for)g(ARG,)g(or)g(for)g(all)g(of)f (the)h(commands)h(if)f(ARG)g(is)508 1432 y(not)g(present.)h(*/)390 1519 y(com_help)g(\(arg\))586 1606 y(char)f(*arg;)390 1694 y({)468 1781 y(register)h(int)f(i;)468 1868 y(int)g(printed)h(=)f (0;)468 2042 y(for)g(\(i)g(=)f(0;)h(commands[i].name;)j(i++\))547 2130 y({)625 2217 y(if)d(\(!*arg)h(||)e(\(strcmp)i(\(arg,)g (commands[i].name\))i(==)c(0\)\))704 2304 y({)782 2391 y(printf)i(\("\045s\\t\\t\045s.\\n",)i(commands[i].name,)g (commands[i].doc\);)782 2478 y(printed++;)704 2565 y(})547 2653 y(})468 2827 y(if)d(\(!printed\))547 2914 y({)625 3001 y(printf)h(\("No)f(commands)h(match)g(`\045s'.)79 b(Possibilties)42 b(are:\\n",)f(arg\);)625 3176 y(for)f(\(i)g(=)f(0;)h (commands[i].name;)j(i++\))704 3263 y({)782 3350 y(/*)d(Print)g(in)g (six)g(columns.)h(*/)782 3437 y(if)f(\(printed)h(==)f(6\))861 3524 y({)939 3611 y(printed)h(=)e(0;)939 3699 y(printf)i(\("\\n"\);)861 3786 y(})782 3960 y(printf)g(\("\045s\\t",)g(commands[i].name\);)782 4047 y(printed++;)704 4134 y(})625 4309 y(if)f(\(printed\))704 4396 y(printf)g(\("\\n"\);)547 4483 y(})468 4570 y(return)h(\(0\);)390 4658 y(})390 4832 y(/*)f(Change)g(to)g(the)g(directory)h(ARG.)f(*/)390 4919 y(com_cd)h(\(arg\))586 5006 y(char)f(*arg;)390 5093 y({)468 5181 y(if)g(\(chdir)h(\(arg\))f(==)g(-1\))547 5268 y({)p eop end %%Page: 65 69 TeXDict begin 65 68 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(65)625 299 y Fe(perror)41 b(\(arg\);)625 386 y(return)g(1;)547 473 y(})468 648 y(com_pwd)g(\(""\);)468 735 y(return)g(\(0\);)390 822 y(})390 996 y(/*)f(Print)g(out)g(the)g(current)h(working)g (directory.)g(*/)390 1083 y(com_pwd)g(\(ignore\))586 1171 y(char)f(*ignore;)390 1258 y({)468 1345 y(char)h(dir[1024],)g(*s;) 468 1519 y(s)f(=)f(getcwd)i(\(dir,)f(sizeof\(dir\))i(-)e(1\);)468 1606 y(if)g(\(s)g(==)f(0\))547 1694 y({)625 1781 y(printf)i(\("Error)g (getting)g(pwd:)f(\045s\\n",)g(dir\);)625 1868 y(return)h(1;)547 1955 y(})468 2130 y(printf)g(\("Current)g(directory)h(is)d(\045s\\n",)i (dir\);)468 2217 y(return)g(0;)390 2304 y(})390 2478 y(/*)f(The)g(user)g(wishes)g(to)g(quit)g(using)h(this)f(program.)80 b(Just)40 b(set)g(DONE)g(non-zero.)h(*/)390 2565 y(com_quit)g(\(arg\)) 586 2653 y(char)f(*arg;)390 2740 y({)468 2827 y(done)h(=)e(1;)468 2914 y(return)i(\(0\);)390 3001 y(})390 3176 y(/*)f(Function)h(which)f (tells)g(you)g(that)h(you)e(can't)i(do)e(this.)i(*/)390 3263 y(too_dangerous)h(\(caller\))586 3350 y(char)e(*caller;)390 3437 y({)468 3524 y(fprintf)h(\(stderr,)821 3611 y("\045s:)g(Too)f (dangerous)h(for)f(me)f(to)h(distribute.)81 b(Write)40 b(it)g(yourself.\\n",)821 3699 y(caller\);)390 3786 y(})390 3960 y(/*)g(Return)g(non-zero)h(if)f(ARG)g(is)g(a)f(valid)h(argument)h (for)f(CALLER,)h(else)f(print)508 4047 y(an)f(error)i(message)g(and)e (return)i(zero.)f(*/)390 4134 y(int)390 4222 y(valid_argument)i (\(caller,)f(arg\))586 4309 y(char)f(*caller,)h(*arg;)390 4396 y({)468 4483 y(if)f(\(!arg)g(||)g(!*arg\))547 4570 y({)625 4658 y(fprintf)h(\(stderr,)g("\045s:)f(Argument)h (required.\\n",)i(caller\);)625 4745 y(return)e(\(0\);)547 4832 y(})468 5006 y(return)g(\(1\);)390 5093 y(})p eop end %%Page: 66 70 TeXDict begin 66 69 bop 3659 -116 a Ft(66)150 299 y Fp(App)t(endix)52 b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359 502 y Ft(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fq(\015)e Ft(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 745 y Fs(http://fsf.org/)390 964 y Ft(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f (to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 1074 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f (is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330 1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g (a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 1450 y(useful)29 b(do)s(cumen)m(t)h Fj(free)36 b Ft(in)29 b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j (the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f (redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i (either)f(commercially)h(or)e(non-)330 1669 y(commercially)-8 b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f (the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 1778 y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g (considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 1888 y(made)30 b(b)m(y)h(others.)330 2021 y(This)22 b(License)i(is)f(a) h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 2131 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g (sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 2240 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) e(for)g(free)h(soft)m(w)m(are.)330 2373 y(W)-8 b(e)31 b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h (for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 2483 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) 65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 2592 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g (to)330 2702 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g (for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 b(ject)30 b(matter)i(or)330 2812 y(whether)f(it)h(is)f(published)f(as)i (a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h (License)g(principally)f(for)330 2921 y(w)m(orks)f(whose)h(purp)s(ose)d (is)j(instruction)f(or)g(reference.)199 3054 y(1.)61 b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3187 y(This)39 b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i (in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3297 y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 3407 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f (a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d (in)330 3516 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j (conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 3626 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h (or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g (a)h(licensee,)i(and)330 3735 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 3845 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) m(yrigh)m(t)j(la)m(w.)330 3978 y(A)i(\\Mo)s(di\014ed)f(V)-8 b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f (con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4088 y(a)k(p)s(ortion)f (of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s (di\014cations)f(and/or)h(translated)g(in)m(to)330 4197 y(another)31 b(language.)330 4330 y(A)26 b(\\Secondary)g(Section")h(is) f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f (the)g(Do)s(cumen)m(t)330 4440 y(that)c(deals)g(exclusiv)m(ely)h(with)e (the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f (Do)s(cumen)m(t)330 4549 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m (erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) m(tains)h(nothing)f(that)330 4659 y(could)j(fall)h(directly)g(within)f (that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 4769 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 b(The)330 4878 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e (historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 b(or)g(with)g(related)330 4988 y(matters,)38 b(or)d(of)h(legal,)i (commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s (osition)f(regarding)330 5097 y(them.)330 5230 y(The)25 b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g (Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)p eop end %%Page: 67 71 TeXDict begin 67 70 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(67)330 299 y(under)26 b(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h (de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) e(In)m(v)-5 b(arian)m(t)330 518 y(Sections.)39 b(If)25 b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) -5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 669 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short) g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 b(ron)m(t-Co)m(v)m(er)330 778 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er) j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f (Do)s(cumen)m(t)h(is)f(released)g(under)330 888 y(this)h(License.)40 b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26 b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m (v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 998 y(b)s(e)k(at)h(most)g(25)g(w)m (ords.)330 1148 y(A)36 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g (the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8 b(,)38 b(represen)m(ted)330 1258 y(in)d(a)h(format)g(whose)g(sp)s (eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g (public,)h(that)f(is)g(suitable)g(for)330 1367 y(revising)c(the)g(do)s (cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors) f(or)f(\(for)h(images)h(com-)330 1477 y(p)s(osed)23 b(of)h(pixels\))g (generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g (widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 1587 y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g (formatters)f(or)g(for)g(automatic)i(translation)f(to)330 1696 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input) g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g (otherwise)330 1806 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g (whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f (arranged)g(to)330 1915 y(th)m(w)m(art)27 b(or)g(discourage)g (subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 b(ransparen)m(t.)39 b(An)27 b(image)330 2025 y(format)35 b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g (substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g (is)330 2134 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i (\\Opaque".)330 2285 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T) -8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fm(asci)r(i)g Ft(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j (LaT)1759 2414 y(E)1810 2395 y(X)e(input)f(format,)j Fd(SGML)f Ft(or)f Fd(XML)g Ft(using)g(a)g(publicly)330 2504 y(a)m(v)-5 b(ailable)42 b Fd(DTD)p Ft(,)h(and)c (standard-conforming)g(simple)h Fd(HTML)p Ft(,)i(P)m(ostScript)e(or)f Fd(PDF)h Ft(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65 b(Examples)38 b(of)h(transparen)m(t)f(image)h(formats)g(include)f Fd(PNG)p Ft(,)i Fd(X)n(CF)330 2724 y Ft(and)e Fd(JPG)p Ft(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that) h(can)g(b)s(e)f(read)h(and)f(edited)330 2833 y(only)54 b(b)m(y)f(proprietary)h(w)m(ord)f(pro)s(cessors,)59 b Fd(SGML)54 b Ft(or)f Fd(XML)h Ft(for)g(whic)m(h)f(the)h Fd(DTD)g Ft(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g (generally)i(a)m(v)-5 b(ailable,)71 b(and)60 b(the)h(mac)m (hine-generated)j Fd(HTML)p Ft(,)330 3052 y(P)m(ostScript)31 b(or)f Fd(PDF)h Ft(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s (cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330 3203 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m(ted)f(b) s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f(follo)m (wing)330 3313 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g(legibly)-8 b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h(app)s(ear)f (in)h(the)330 3422 y(title)g(page.)40 b(F)-8 b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h(an)m(y)e (title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 3532 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s (earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330 3641 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330 3792 y(The)j(\\publisher")g(means)h(an)m(y)f(p)s(erson)g(or)h(en)m(tit) m(y)h(that)f(distributes)f(copies)i(of)e(the)h(Do)s(cumen)m(t)330 3902 y(to)c(the)g(public.)330 4052 y(A)f(section)h(\\En)m(titled)g (XYZ")f(means)f(a)h(named)g(subunit)e(of)h(the)h(Do)s(cumen)m(t)h (whose)e(title)i(either)330 4162 y(is)d(precisely)g(XYZ)g(or)f(con)m (tains)i(XYZ)f(in)f(paren)m(theses)i(follo)m(wing)g(text)g(that)f (translates)h(XYZ)e(in)330 4271 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g(sp)s(eci\014c)g(section)h(name)f (men)m(tioned)h(b)s(elo)m(w,)g(suc)m(h)330 4381 y(as)i(\\Ac)m(kno)m (wledgemen)m(ts",)33 b(\\Dedications",)e(\\Endorsemen)m(ts",)e(or)f (\\History".\))42 b(T)-8 b(o)29 b(\\Preserv)m(e)330 4491 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g(section)g(when)f(y)m(ou)h(mo)s (dify)e(the)i(Do)s(cumen)m(t)h(means)e(that)h(it)g(remains)g(a)330 4600 y(section)e(\\En)m(titled)f(XYZ")g(according)g(to)g(this)g (de\014nition.)330 4751 y(The)c(Do)s(cumen)m(t)i(ma)m(y)f(include)f(W) -8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)g(the)g(notice)h(whic)m (h)e(states)i(that)330 4861 y(this)34 b(License)g(applies)g(to)h(the)f (Do)s(cumen)m(t.)52 b(These)33 b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m (y)g(reference)h(in)g(this)f(License,)j(but)d(only)h(as)g(regards)f (disclaiming)i(w)m(arran)m(ties:)330 5080 y(an)m(y)e(other)g (implication)i(that)e(these)g(W)-8 b(arran)m(t)m(y)39 b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end %%Page: 68 72 TeXDict begin 68 71 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(68)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h (the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h (or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j (and)42 b(the)h(license)330 518 y(notice)37 b(sa)m(ying)g(this)e (License)i(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e (in)i(all)g(copies,)j(and)330 628 y(that)27 b(y)m(ou)g(add)f(no)h (other)f(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f (License.)40 b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 737 y(tec)m(hnical)35 b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h (the)f(reading)g(or)g(further)e(cop)m(ying)j(of)f(the)g(copies)330 847 y(y)m(ou)25 b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28 b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d (copies.)330 956 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f (n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g (the)f(conditions)330 1066 y(in)e(section)i(3.)330 1200 y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g (conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g (publicly)330 1310 y(displa)m(y)31 b(copies.)199 1443 y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1577 y(If)25 b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g (that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 1687 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f (100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 1797 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i (the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 1906 y(these)j(Co)m(v)m (er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 2016 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f (the)h(publisher)330 2125 y(of)k(these)h(copies.)53 b(The)34 b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i (with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2235 y(equally)e (prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g (other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 2345 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) 330 2454 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d (b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 2564 y(resp)s(ects.)330 2698 y(If)32 b(the)h(required)f(texts)i(for)e (either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g (legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 2807 y(the)h(\014rst)f (ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 2917 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3051 y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f (the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 3160 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g (T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) 330 3270 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h (Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d (whic)m(h)330 3380 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e (has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m (ork)330 3489 y(proto)s(cols)40 b(a)f(complete)h(T)-8 b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g (added)f(material.)67 b(If)330 3599 y(y)m(ou)39 b(use)g(the)g(latter)h (option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e (steps,)k(when)d(y)m(ou)h(b)s(egin)330 3708 y(distribution)f(of)g (Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 3818 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s (cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h (time)330 3927 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i (\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h (of)f(that)330 4037 y(edition)31 b(to)g(the)g(public.)330 4171 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g (con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 4281 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s (er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m (vide)g(y)m(ou)330 4390 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g (the)f(Do)s(cumen)m(t.)199 4524 y(4.)61 b(MODIFICA)-8 b(TIONS)330 4658 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) e(the)h(conditions)330 4768 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f (V)-8 b(ersion)22 b(under)d(precisely)330 4877 y(this)29 b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f (licensing)330 4987 y(distribution)k(and)h(mo)s(di\014cation)g(of)h (the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s (ossesses)f(a)i(cop)m(y)g(of)330 5096 y(it.)41 b(In)30 b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s (di\014ed)e(V)-8 b(ersion:)357 5230 y(A.)60 b(Use)33 b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e (an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the)510 5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)p eop end %%Page: 69 73 TeXDict begin 69 72 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(69)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 545 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h (one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c (for)510 655 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g (Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h (\014v)m(e)510 765 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s (cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g (few)m(er)510 874 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g (y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1011 y(C.)60 b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g (publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 b(as)f(the)510 1121 y(publisher.)355 1258 y(D.)61 b(Preserv)m(e)31 b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) 363 1395 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i (notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g (other)510 1504 y(cop)m(yrigh)m(t)g(notices.)365 1641 y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g (notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 1751 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g (form)510 1861 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 1998 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f (full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e (required)g(Co)m(v)m(er)510 2107 y(T)-8 b(exts)31 b(giv)m(en)g(in)f (the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2244 y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) 392 2381 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g (\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g (item)510 2491 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d (authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)510 2600 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e (the)g(Do)s(cu-)510 2710 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f (title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s (cumen)m(t)510 2819 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i (then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 b(ersion)37 b(as)510 2929 y(stated)31 b(in)f(the)h(previous)f(sen)m (tence.)378 3066 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s (cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m (t)h(for)g(public)e(access)j(to)510 3176 y(a)e(T)-8 b(ransparen)m(t)30 b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3285 y(the)g(Do)s(cumen)m (t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3395 y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h (published)510 3504 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e (the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) d(of)i(the)510 3614 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s (ermission.)354 3751 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m (titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k (Preserv)m(e)c(the)g(Title)510 3861 y(of)j(the)f(section,)j(and)d (preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) h(of)f(eac)m(h)i(of)f(the)510 3970 y(con)m(tributor)k(ac)m(kno)m (wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 4107 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f (in)f(their)g(text)i(and)510 4217 y(in)f(their)g(titles.)58 b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 4326 y(section)c(titles.)341 4463 y(M.)61 b(Delete)33 b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 4573 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 4710 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f (to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g (in)510 4819 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 b(Section.)354 4956 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g (V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f (app)s(endices)g(that)h(qualify)330 5230 y(as)28 b(Secondary)g (Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h (Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)330 5340 y(y)m(our)k(option)h (designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p eop end %%Page: 70 74 TeXDict begin 70 73 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(70)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 b(license)g(notice.)57 b(These)330 408 y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g (section)g(titles.)330 551 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section) i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g (nothing)g(but)330 661 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s (di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 b(parties|for)g(example,)g(statemen)m(ts)i(of)330 770 y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro) m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330 880 y(de\014nition)i(of)h(a)f(standard.)330 1022 y(Y)-8 b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m (ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8 b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1132 y(to)g(25)g(w)m(ords)e (as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i (the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s (di\014ed)330 1241 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f (F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m (k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1351 y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\)) g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t) g(already)330 1461 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g (same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m (y)g(arrangemen)m(t)330 1570 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m (y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g (not)f(add)g(another;)j(but)330 1680 y(y)m(ou)c(ma)m(y)h(replace)g(the) f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e (publisher)f(that)330 1789 y(added)e(the)g(old)h(one.)330 1932 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s (cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s (ermission)330 2041 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g (for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g (Mo)s(di\014ed)330 2151 y(V)-8 b(ersion.)199 2293 y(5.)61 b(COMBINING)31 b(DOCUMENTS)330 2436 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m (bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h (released)g(under)f(this)g(License,)330 2545 y(under)f(the)h(terms)g (de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f (v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2655 y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s (cumen)m(ts,)330 2765 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g (as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) g(w)m(ork)f(in)h(its)g(license)330 2874 y(notice,)32 b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 b(arran)m(t)m(y)32 b(Disclaimers.)330 3017 y(The)e(com)m(bined)g(w)m (ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) i(and)d(m)m(ultiple)i(iden)m(tical)330 3126 y(In)m(v)-5 b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h (single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m (v)-5 b(arian)m(t)330 3236 y(Sections)27 b(with)g(the)g(same)g(name)g (but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f (eac)m(h)h(suc)m(h)f(section)330 3345 y(unique)33 b(b)m(y)h(adding)f (at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g (the)g(original)h(author)f(or)330 3455 y(publisher)23 b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m (um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 3565 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h (com)m(bined)330 3674 y(w)m(ork.)330 3817 y(In)41 b(the)g(com)m (bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g (En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 3926 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h (En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 4036 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 b(Y)-8 b(ou)330 4145 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m (titled)f(\\Endorsemen)m(ts.")199 4288 y(6.)61 b(COLLECTIONS)28 b(OF)i(DOCUMENTS)330 4430 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f (collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g (do)s(cumen)m(ts)f(released)330 4540 y(under)41 b(this)h(License,)k (and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f (the)h(v)-5 b(arious)330 4650 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 b(pro)m(vided)42 b(that)i(y)m(ou)330 4759 y(follo)m(w)38 b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g (of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 4869 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h (collection,)i(and)d(distribute)g(it)h(individu-)330 5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g (a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end %%Page: 71 75 TeXDict begin 71 74 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(71)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h (W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f (its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep) s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h (on)f(a)g(v)m(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g (is)h(called)330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i (resulting)e(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g (the)330 770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e (b)s(ey)m(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g (aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g (other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h (not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h (Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f (these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241 y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f (of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m (er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m (ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h (aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5 b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f (in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f (brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61 b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a) i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e (translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h (terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f (sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i (holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24 b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f (License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the) h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513 y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g (License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f (translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f (License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m (ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28 b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m (kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m (e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61 b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h (Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38 b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g (cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330 3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically) i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330 3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i (of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h (particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h (\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g (cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h (terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8 b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34 b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h (reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288 y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d (license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h (reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h (holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g (reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m (ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f (License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330 4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g (violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h (of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28 b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h (terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38 b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e) 330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end %%Page: 72 76 TeXDict begin 72 75 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(72)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g (the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to)g(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h(in)g(spirit)330 653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m(y)h(di\013er)f (in)g(detail)h(to)g(address)f(new)g(problems)f(or)i(concerns.)330 762 y(See)c Fs(http://www.gnu.org/copy)o(left)o(/)p Ft(.)330 897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m(en)g(a)g (distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29 b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g (particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g(License)h (\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f(follo)m(wing)i (the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m (ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g (b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s (ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445 y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m (ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46 b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f (can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f (License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen) m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m (tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g (for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330 2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or) e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330 2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m (table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h (facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g (w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i (edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33 b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s (oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330 2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m (orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330 2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m (ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330 2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a) g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330 2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29 b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions) f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g (organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e (or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h (as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330 3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h (licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330 3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h (License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330 3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f (part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts) 330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j (w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s (er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h (Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site) g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end %%Page: 73 77 TeXDict begin 73 76 bop 150 -116 a Ft(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(73)150 299 y Fr(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f (for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Ft(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh) m(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468 680 y Fe(Copyright)42 b(\(C\))79 b Fc(year)g(your)40 b(name)p Fe(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h (distribute)g(and/or)g(modify)f(this)g(document)468 854 y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i (License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h (published)h(by)d(the)h(Free)g(Software)h(Foundation;)468 1029 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g (and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f (license)i(is)f(included)h(in)f(the)g(section)g(entitled)h(``GNU)468 1203 y(Free)g(Documentation)h(License''.)275 1337 y Ft(If)d(y)m(ou)h (ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k (T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6 b(.)22 b(.)g(.)12 b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547 1559 y Fe(with)40 b(the)g(Invariant)h(Sections)g(being)g Fc(list)f(their)g(titles)p Fe(,)h(with)547 1646 y(the)f(Front-Cover)i (Texts)e(being)g Fc(list)p Fe(,)h(and)f(with)g(the)g(Back-Cover)h (Texts)547 1733 y(being)f Fc(list)p Fe(.)275 1868 y Ft(If)34 b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f (Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g (of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g (alternativ)m(es)i(to)e(suit)f(the)h(situation.)275 2112 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g (examples)g(of)f(program)f(co)s(de,)j(w)m(e)e(recommend)g(releasing)150 2222 y(these)44 b(examples)f(in)g(parallel)h(under)e(y)m(our)h(c)m (hoice)i(of)e(free)g(soft)m(w)m(are)h(license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s (ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p eop end %%Page: 74 78 TeXDict begin 74 77 bop 150 -116 a Ft(Concept)31 b(Index)2927 b(74)150 100 y Fp(Concept)52 b(Index)146 434 y Fr(A)150 550 y Fb(application-sp)r(eci\014c)27 b(completion)f(functions)e Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(50)146 796 y Fr(C)150 913 y Fb(command)26 b(editing)6 b Fa(:)14 b(:)f(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(1)146 1159 y Fr(E)150 1275 y Fb(editing)26 b(command)g(lines)c Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(1)146 1522 y Fr(I)150 1638 y Fb(initialization)28 b(\014le,)e(readline)c Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)36 b Fb(4)150 1726 y(in)n(teraction,)27 b(readline)12 b Fa(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(1)146 1972 y Fr(K)150 2088 y Fb(kill)g(ring)12 b Fa(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(2)150 2176 y(killing)g(text)11 b Fa(:)h(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)26 b Fb(2)2021 434 y Fr(N)2025 566 y Fb(notation,)g (readline)17 b Fa(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) 32 b Fb(1)2021 970 y Fr(R)2025 1102 y Fb(readline,)26 b(function)18 b Fa(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(24)2021 1507 y Fr(V)2025 1639 y Fb(v)l(ariables,)27 b(readline)11 b Fa(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) 26 b Fb(4)2021 2043 y Fr(Y)2025 2176 y Fb(y)n(anking)f(text)17 b Fa(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)32 b Fb(2)p eop end %%Page: 75 79 TeXDict begin 75 78 bop 3659 -116 a Ft(75)150 299 y Fp(F)-13 b(unction)52 b(and)h(V)-13 b(ariable)53 b(Index)p 156 740 41 6 v 150 864 a Fe(_rl_digit_p)10 b Fa(:)16 b(:)d(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(41)150 953 y Fe(_rl_digit_value)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)32 b Fb(42)150 1043 y Fe(_rl_lowercase_p)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(41)150 1132 y Fe(_rl_to_lower)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(42)150 1222 y Fe(_rl_to_upper)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(41)150 1309 y Fe(_rl_uppercase_p)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(41)146 1605 y Fr(A)150 1728 y Fe(abort)27 b(\(C-g\))17 b Fa(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)31 b Fb(22)150 1815 y Fe(accept-line)d(\(Newline)g(or)e(Return\))14 b Fa(:)g(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(17)146 2111 y Fr(B)150 2234 y Fe(backward-char)h(\(C-b\))14 b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(16)150 2324 y Fe(backward-delete-char)i(\(Rubout\))24 b Fa(:)14 b(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(18)150 2413 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))7 b Fa(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)21 b Fb(20)150 2503 y Fe(backward-kill-word)30 b(\(M-DEL\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)27 b Fb(20)150 2593 y Fe(backward-word)i(\(M-b\))14 b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(16)150 2682 y Fe(beginning-of-history)i(\(M-<\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(17)150 2772 y Fe(beginning-of-line)i(\(C-a\))22 b Fa(:)13 b(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(16)150 2861 y(b)r(ell-st)n(yle)9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24 b Fb(5)150 2951 y(bind-tt)n(y-sp)r(ecial-c)n(hars)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(5)150 3041 y(blink-matc)n(hing-paren)6 b Fa(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)21 b Fb(5)150 3128 y Fe(bracketed-paste-begin)30 b(\(\))18 b Fa(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)33 b Fb(19)146 3423 y Fr(C)150 3547 y Fe(call-last-kbd-macro)d(\(C-x)c(e\))17 b Fa(:)d(:)f(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(22)150 3636 y Fe(capitalize-word)d(\(M-c\))9 b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) 23 b Fb(19)150 3726 y Fe(character-search)29 b(\(C-]\))6 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(22)150 3815 y Fe (character-search-backward)31 b(\(M-C-]\))12 b Fa(:)j(:)e(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)27 b Fb(22)150 3905 y Fe(clear-screen)h(\(C-l\))16 b Fa(:)f(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(16)150 3995 y(colored-completion-pre\014x)9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24 b Fb(5)150 4084 y(colored-stats)17 b Fa(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)31 b Fb(5)150 4174 y(commen)n(t-b)r(egin)6 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(5)150 4263 y Fe(complete)27 b(\(TAB\))10 b Fa(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)24 b Fb(21)150 4353 y(completion-displa)n(y-width)10 b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)25 b Fb(5)150 4443 y (completion-ignore-case)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 b Fb(5)150 4532 y(completion-map-case)15 b Fa(:)f(:)f(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)30 b Fb(5)150 4622 y(completion-pre\014x-displa)n (y-length)14 b Fa(:)e(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)28 b Fb(5)150 4712 y(completion-query-items)6 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21 b Fb(6)150 4801 y(con)n(v)n(ert-meta)9 b Fa(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)24 b Fb(6)150 4891 y Fe(copy-backward-word)30 b(\(\))9 b Fa(:)k(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fb(20)150 4980 y Fe(copy-forward-word)29 b(\(\))11 b Fa(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(20)150 5068 y Fe(copy-region-as-kill)k(\(\))6 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(20)2021 817 y Fr(D)2025 935 y Fe(delete-char)28 b(\(C-d\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(18)2025 1023 y Fe(delete-char-or-list)c(\(\))6 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(21)2025 1111 y Fe (delete-horizontal-space)31 b(\(\))13 b Fa(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(20)2025 1200 y Fe(digit-argument)h(\()p Fc(M-0)p Fe(,)d Fc(M-1)p Fe(,)h(...)f Fc(M--)p Fe(\))13 b Fa(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)28 b Fb(20)2025 1288 y(disable-completion)20 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(6)2025 1376 y Fe(do-lowercase-version)c(\(M-A,)d(M-B,)f(M-)p Fc(x)p Fe(,)h(...\))12 b Fa(:)i(:)27 b Fb(22)2025 1464 y Fe(downcase-word)h(\(M-l\))14 b Fa(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28 b Fb(19)2025 1552 y Fe(dump-functions)h(\(\))19 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(23)2025 1640 y Fe(dump-macros)28 b(\(\))10 b Fa(:)j(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(23)2025 1727 y Fe(dump-variables)29 b(\(\))19 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(23)2021 1989 y Fr(E)2025 2108 y Fb(ec)n(ho-con)n(trol-c)n (haracters)13 b Fa(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)29 b Fb(6)2025 2196 y(editing-mo)r(de)10 b Fa(:)j(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(6)2025 2284 y Fe(emacs-editing-mode)k(\(C-e\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fb(23)2025 2372 y(emacs-mo)r(de-string)18 b Fa(:)c(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fb(6)2025 2460 y(enable-brac)n(k)n (eted-paste)18 b Fa(:)12 b(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)33 b Fb(6)2025 2548 y(enable-k)n(eypad)7 b Fa(:)12 b(:)h(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(7)2025 2636 y Fe(end-kbd-macro)28 b(\(C-x)f(\)\))16 b Fa(:)d(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)30 b Fb(22)2025 2724 y Fc(end-of-file)e Fe(\(usually)f(C-d\))d Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)37 b Fb(18)2025 2812 y Fe(end-of-history)29 b(\(M->\))11 b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(17)2025 2900 y Fe(end-of-line)i(\(C-e\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)34 b Fb(16)2025 2988 y Fe(exchange-point-and-mark)d(\(C-x) 26 b(C-x\))20 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(22)2025 3076 y(expand-tilde)19 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(7)2021 3336 y Fr(F)2025 3455 y Fe(forward-backward-delete-char)d(\(\))17 b Fa(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32 b Fb(18)2025 3543 y Fe(forward-char)c(\(C-f\))16 b Fa(:)f(:)e(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)31 b Fb(16)2025 3631 y Fe(forward-search-history)f (\(C-s\))8 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)23 b Fb(17)2025 3718 y Fe(forward-word)28 b(\(M-f\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(16)2021 3970 y Fr(H)2025 4089 y Fb(history-preserv)n(e-p)r(oin)n (t)15 b Fa(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)30 b Fb(7)2025 4177 y Fe(history-search-backward)h(\(\))13 b Fa(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(17)2025 4265 y Fe(history-search-forward)i(\(\))16 b Fa(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)30 b Fb(17)2025 4353 y(history-size)22 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)37 b Fb(7)2025 4441 y Fe(history-substring-search-backw)q(ard)32 b(\(\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)36 b Fb(18)2025 4529 y Fe(history-substring-search-forwa)q(rd)c(\(\))7 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(17)2025 4616 y(horizon)n(tal-scroll-mo)r(de)10 b Fa(:)15 b(:)e(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)25 b Fb(7)2021 4867 y Fr(I)2025 4986 y Fb(input-meta)9 b Fa(:)j(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)24 b Fb(7)2025 5074 y Fe(insert-comment)29 b(\(M-#\))11 b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(23)2025 5162 y Fe(insert-completions)j(\(M-*\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fb(21)2025 5249 y(isearc)n(h-terminators)9 b Fa(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(7)p eop end %%Page: 76 80 TeXDict begin 76 79 bop 150 -116 a Ft(F)-8 b(unction)31 b(and)f(V)-8 b(ariable)32 b(Index)2370 b(76)146 294 y Fr(K)150 424 y Fb(k)n(eymap)14 b Fa(:)e(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29 b Fb(8)150 516 y Fe(kill-line)f(\(C-k\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(19)150 607 y Fe(kill-region)28 b(\(\))10 b Fa(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)24 b Fb(20)150 699 y Fe(kill-whole-line)29 b(\(\))16 b Fa(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 786 y Fe(kill-word)d(\(M-d\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(20)146 1116 y Fr(M)150 1246 y Fb(mark-mo)r(di\014ed-lines)c Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(8)150 1338 y(mark-symlink)n(ed-directories)14 b Fa(:)f(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(8)150 1430 y(matc)n(h-hidden-\014les)7 b Fa(:)12 b(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(8)150 1521 y Fe(menu-complete)29 b(\(\))22 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(21)150 1613 y Fe(menu-complete-backward)31 b(\(\))16 b Fa(:)d(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)30 b Fb(21)150 1705 y(men)n(u-complete-displa)n(y-pre\014x)10 b Fa(:)h(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)25 b Fb(8)150 1792 y(meta-\015ag)d Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)36 b Fb(7)146 2130 y Fr(N)150 2260 y Fe(next-history)28 b(\(C-n\))16 b Fa(:)f(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(17)150 2352 y Fe(next-screen-line)e(\(\))14 b Fa(:)g(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)28 b Fb(16)150 2424 y Fe(non-incremental-forward-)227 2512 y(search-history)h(\(M-n\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(17)150 2599 y Fe(non-incremental-reverse-)227 2686 y(search-history)29 b(\(M-p\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(17)146 3035 y Fr(O)150 3165 y Fb(output-meta)d Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) 34 b Fb(8)150 3252 y Fe(overwrite-mode)29 b(\(\))19 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(19)146 3582 y Fr(P)150 3712 y Fb(page-completions)8 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(9)150 3804 y Fe(possible-completions)30 b(\(M-?\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)27 b Fb(21)150 3896 y Fe(prefix-meta)h(\(ESC\))20 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(22)150 3987 y Fe(previous-history)c(\(C-p\))6 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(17)150 4079 y Fe(previous-screen-line)30 b(\(\))21 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)35 b Fb(16)150 4166 y Fe(print-last-kbd-macro)30 b(\(\))21 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(22)146 4506 y Fr(Q)150 4632 y Fe(quoted-insert)29 b(\(C-q)d(or)g(C-v\))10 b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)24 b Fb(18)2021 294 y Fr(R)2025 410 y Fe(re-read-init-file)29 b(\(C-x)e(C-r\))17 b Fa(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)32 b Fb(22)2025 498 y Fe(readline)18 b Fa(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)33 b Fb(24)2025 585 y Fe(redraw-current-line)d(\(\))6 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(17)2025 672 y Fe (reverse-search-history)30 b(\(C-r\))8 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(17)2025 760 y(rev)n(ert-all-at-newline)10 b Fa(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)26 b Fb(9)2025 847 y Fe(revert-line)i(\(M-r\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(22)2025 935 y Fe(rl_add_defun)8 b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(32)2025 1022 y Fe(rl_add_funmap_entry)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(36)2025 1109 y Fe(rl_add_undo)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(37)2025 1197 y Fe(rl_alphabetic)g Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)37 b Fb(41)2025 1284 y Fe(rl_begin_undo_group)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(37)2025 1371 y Fe(rl_bind_key)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(34)2025 1459 y Fe(rl_bind_key_if_unbound)16 b Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(34)2025 1546 y Fe(rl_bind_key_if_unbound_in_map)16 b Fa(:)j(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(34)2025 1633 y Fe(rl_bind_key_in_map)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(34)2025 1721 y Fe(rl_bind_keyseq)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)34 b Fb(35)2025 1808 y Fe(rl_bind_keyseq_if_unbound)9 b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)23 b Fb(35)2025 1896 y Fe(rl_bind_keyseq_if_unbound_in_m)q (ap)8 b Fa(:)19 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(35)2025 1983 y Fe(rl_bind_keyseq_in_map)h Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)34 b Fb(35)2025 2070 y Fe (rl_callback_handler_install)27 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(43)2025 2158 y Fe(rl_callback_handler_remove)6 b Fa(:)19 b(:)13 b(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(43)2025 2245 y Fe(rl_callback_read_char)j Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(43)2025 2332 y Fe(rl_callback_sigcleanup)16 b Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)31 b Fb(43)2025 2420 y Fe(rl_check_signals)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(49)2025 2507 y Fe(rl_cleanup_after_signal)14 b Fa(:)k(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)28 b Fb(49)2025 2595 y Fe(rl_clear_history)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(42)2025 2682 y Fe(rl_clear_message)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)29 b Fb(38)2025 2769 y Fe(rl_clear_pending_input)16 b Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)31 b Fb(40)2025 2857 y Fe(rl_clear_signals)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(50)2025 2944 y Fe(rl_clear_visible_line)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)34 b Fb(38)2025 3031 y Fe(rl_complete)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)25 b Fb(51)2025 3119 y Fe(rl_complete_internal)h Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(51)2025 3206 y Fe(rl_completion_matches)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(52)2025 3293 y Fe(rl_completion_mode)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(51)2025 3381 y Fe(rl_copy_keymap)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)34 b Fb(33)2025 3468 y Fe(rl_copy_text)8 b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(39)2025 3556 y Fe(rl_crlf)g Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(38)2025 3643 y Fe(rl_delete_text)23 b Fa(:)13 b(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(39)2025 3730 y Fe(rl_deprep_terminal)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(40)2025 3818 y Fe(rl_ding)e Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(41)2025 3905 y Fe(rl_discard_keymap)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(33)2025 3992 y Fe(rl_display_match_list)d Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(41)2025 4080 y Fe(rl_do_undo)13 b Fa(:)i(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(37)2025 4167 y Fe(rl_echo_signal_char)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) 22 b Fb(49)2025 4255 y Fe(rl_empty_keymap)17 b Fa(:)g(:)c(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(33)2025 4342 y Fe (rl_end_undo_group)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) 27 b Fb(37)2025 4429 y Fe(rl_execute_next)17 b Fa(:)g(:)c(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(40)2025 4517 y Fe(rl_expand_prompt) 15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(38)2025 4604 y Fe(rl_extend_line_buffer)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)34 b Fb(41)2025 4691 y Fe (rl_filename_completion_functio)q(n)11 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(52)2025 4779 y Fe(rl_forced_update_display)11 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)26 b Fb(37)2025 4866 y Fe(rl_free)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(41)2025 4954 y Fe(rl_free_keymap)23 b Fa(:)13 b(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(33)2025 5041 y Fe(rl_free_line_state)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(49)2025 5128 y Fe(rl_free_undo_list)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(37)p eop end %%Page: 77 81 TeXDict begin 77 80 bop 150 -116 a Ft(F)-8 b(unction)31 b(and)f(V)-8 b(ariable)32 b(Index)2370 b(77)150 260 y Fe(rl_function_dumper)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(36)150 347 y Fe(rl_function_of_keyseq)g Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)33 b Fb(36)150 434 y Fe(rl_function_of_keyseq_len)9 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)23 b Fb(36)150 522 y Fe(rl_funmap_names)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(36)150 609 y Fe(rl_generic_bind)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)32 b Fb(35)150 696 y Fe(rl_get_keymap)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(33)150 783 y Fe(rl_get_keymap_by_name)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)33 b Fb(33)150 871 y Fe(rl_get_keymap_name)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(33)150 958 y Fe(rl_get_screen_size)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)24 b Fb(50)150 1045 y Fe(rl_get_termcap)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(42)150 1132 y Fe(rl_getc)22 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(39)150 1219 y Fe(rl_initialize)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(41)150 1307 y Fe(rl_insert_completions)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(51)150 1394 y Fe(rl_insert_text)23 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(39)150 1481 y Fe (rl_invoking_keyseqs)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(36)150 1568 y Fe(rl_invoking_keyseqs_in_map)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)21 b Fb(36)150 1656 y Fe(rl_kill_text)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(39)150 1743 y Fe(rl_list_funmap_names)k Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)36 b Fb(36)150 1830 y Fe(rl_macro_bind)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(42)150 1917 y Fe(rl_macro_dumper)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(42)150 2005 y Fe(rl_make_bare_keymap)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(33)150 2092 y Fe(rl_make_keymap)i Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)34 b Fb(33)150 2179 y Fe(rl_message)13 b Fa(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)27 b Fb(38)150 2266 y Fe(rl_modifying)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(37)150 2354 y Fe(rl_named_function)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(36)150 2441 y Fe(rl_on_new_line)d Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)34 b Fb(37)150 2528 y Fe(rl_on_new_line_with_prompt)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)21 b Fb(38)150 2615 y Fe(rl_parse_and_bind)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(35)150 2703 y Fe(rl_pending_signal)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)26 b Fb(49)150 2790 y Fe(rl_possible_completions)14 b Fa(:)k(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)28 b Fb(51)150 2877 y Fe(rl_prep_terminal)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(40)150 2964 y Fe(rl_push_macro_input)7 b Fa(:)17 b(:)d(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)21 b Fb(39)150 3052 y Fe(rl_read_init_file)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(35)150 3139 y Fe(rl_read_key)10 b Fa(:)16 b(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(39)150 3226 y Fe(rl_redisplay)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)22 b Fb(37)150 3313 y Fe(rl_replace_line)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(41)150 3400 y Fe(rl_reset_after_signal)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)33 b Fb(49)150 3488 y Fe(rl_reset_line_state)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(38)150 3575 y Fe(rl_reset_screen_size)26 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(50)150 3662 y Fe(rl_reset_terminal)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(40)150 3749 y Fe(rl_resize_terminal)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)24 b Fb(49)150 3837 y Fe(rl_restore_prompt)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(38)150 3924 y Fe(rl_restore_state)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)29 b Fb(41)150 4011 y Fe(rl_save_prompt)23 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(38)150 4098 y Fe(rl_save_state)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(40)150 4186 y Fe(rl_set_key)13 b Fa(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(35)150 4273 y Fe (rl_set_keyboard_input_timeout)17 b Fa(:)h(:)c(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)30 b Fb(40)150 4360 y Fe(rl_set_keymap)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(33)150 4447 y Fe(rl_set_keymap_name)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(33)150 4535 y Fe(rl_set_paren_blink_timeout)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(42)150 4622 y Fe(rl_set_prompt)k Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)37 b Fb(39)150 4709 y Fe(rl_set_screen_size)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(49)150 4796 y Fe(rl_set_signals)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)34 b Fb(50)150 4884 y Fe(rl_show_char)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) 22 b Fb(38)2025 260 y Fe(rl_stuff_char)j Fa(:)13 b(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(39)2025 347 y Fe(rl_tty_set_default_bindings)27 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(40)2025 435 y Fe(rl_tty_set_echoing)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) 24 b Fb(40)2025 523 y Fe(rl_tty_unset_default_bindings)16 b Fa(:)j(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(40)2025 610 y Fe(rl_unbind_command_in_map)11 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)26 b Fb(35)2025 698 y Fe(rl_unbind_function_in_map)9 b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)23 b Fb(34)2025 786 y Fe(rl_unbind_key)i Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(34)2025 873 y Fe(rl_unbind_key_in_map)26 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)36 b Fb(34)2025 961 y Fe (rl_username_completion_functio)q(n)11 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(52)2025 1048 y Fe(rl_variable_bind)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)29 b Fb(42)2025 1136 y Fe(rl_variable_dumper)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(42)2025 1223 y Fe(rl_variable_value)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)27 b Fb(42)2021 1467 y Fr(S)2025 1585 y Fe(self-insert)h(\(a,)e (b,)g(A,)g(1,)g(!,)g(...)q(\))15 b Fa(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)29 b Fb(19)2025 1672 y Fe(set-mark)e(\(C-@\))10 b Fa(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(22)2025 1760 y(sho)n(w-all-if-am)n(biguous)e Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(9)2025 1847 y(sho)n(w-all-if-unmo)r(di\014ed)11 b Fa(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)27 b Fb(9)2025 1935 y(sho)n(w-mo)r(de-in-prompt)15 b Fa(:)d(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 b Fb(9)2025 2023 y(skip-completed-text)17 b Fa(:)11 b(:)j(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)32 b Fb(9)2025 2110 y Fe(skip-csi-sequence)d(\(\))11 b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(23)2025 2197 y Fe(start-kbd-macro)j(\(C-x)d(\(\))10 b Fa(:)k(:)f(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fb(21)2021 2441 y Fr(T)2025 2558 y Fe(tab-insert)j(\(M-TAB\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(19)2025 2645 y Fe(tilde-expand)d(\(M-~\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)31 b Fb(22)2025 2733 y Fe(transpose-chars)e(\(C-t\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(19)2025 2820 y Fe(transpose-words)29 b(\(M-t\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(19)2021 3074 y Fr(U)2025 3191 y Fe(undo)j(\(C-_)h(or)f(C-x)g (C-u\))12 b Fa(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(22)2025 3279 y Fe(universal-argument)i(\(\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) 23 b Fb(21)2025 3366 y Fe(unix-filename-rubout)30 b(\(\))21 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)35 b Fb(20)2025 3454 y Fe(unix-line-discard)29 b(\(C-u\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(20)2025 3541 y Fe(unix-word-rubout)29 b(\(C-w\))6 b Fa(:)14 b(:)g(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(20)2025 3629 y Fe(upcase-word)28 b(\(M-u\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(19)2021 3882 y Fr(V)2025 3999 y Fb(vi-cmd-mo)r(de-string)18 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(10)2025 4087 y Fe(vi-editing-mode)c(\(M-C-j\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(23)2025 4175 y(vi-ins-mo)r(de-string)8 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(10)2025 4262 y(visible-stats)11 b Fa(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(10)2021 4504 y Fr(Y)2025 4621 y Fe(yank)g(\(C-y\))21 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(20)2025 4709 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))10 b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)24 b Fb(18)2025 4796 y Fe(yank-nth-arg)k(\(M-C-y\))11 b Fa(:)k(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(18)2025 4884 y Fe(yank-pop)h(\(M-y\))10 b Fa(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)24 b Fb(20)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF readline-8.0/doc/history_3.ps000664 000436 000000 00000133706 13214524507 016273 0ustar00chetwheel000000 000000 %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 %%CreationDate: Thu Dec 14 11:39:35 2017 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%DocumentSuppliedResources: procset grops 1.22 3 %%Pages: 7 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait %%EndComments %%BeginDefaults %%PageMedia: Default %%EndDefaults %%BeginProlog %%BeginResource: procset grops 1.22 3 %!PS-Adobe-3.0 Resource-ProcSet /setpacking where{ pop currentpacking true setpacking }if /grops 120 dict dup begin /SC 32 def /A/show load def /B{0 SC 3 -1 roll widthshow}bind def /C{0 exch ashow}bind def /D{0 exch 0 SC 5 2 roll awidthshow}bind def /E{0 rmoveto show}bind def /F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def /G{0 rmoveto 0 exch ashow}bind def /H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /I{0 exch rmoveto show}bind def /J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def /K{0 exch rmoveto 0 exch ashow}bind def /L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /M{rmoveto show}bind def /N{rmoveto 0 SC 3 -1 roll widthshow}bind def /O{rmoveto 0 exch ashow}bind def /P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /Q{moveto show}bind def /R{moveto 0 SC 3 -1 roll widthshow}bind def /S{moveto 0 exch ashow}bind def /T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def /SF{ findfont exch [exch dup 0 exch 0 exch neg 0 0]makefont dup setfont [exch/setfont cvx]cvx bind def }bind def /MF{ findfont [5 2 roll 0 3 1 roll neg 0 0]makefont dup setfont [exch/setfont cvx]cvx bind def }bind def /level0 0 def /RES 0 def /PL 0 def /LS 0 def /MANUAL{ statusdict begin/manualfeed true store end }bind def /PLG{ gsave newpath clippath pathbbox grestore exch pop add exch pop }bind def /BP{ /level0 save def 1 setlinecap 1 setlinejoin DEFS/BPhook known{DEFS begin BPhook end}if 72 RES div dup scale LS{ 90 rotate }{ 0 PL translate }ifelse 1 -1 scale }bind def /EP{ level0 restore showpage }def /DA{ newpath arcn stroke }bind def /SN{ transform .25 sub exch .25 sub exch round .25 add exch round .25 add exch itransform }bind def /DL{ SN moveto SN lineto stroke }bind def /DC{ newpath 0 360 arc closepath }bind def /TM matrix def /DE{ TM currentmatrix pop translate scale newpath 0 0 .5 0 360 arc closepath TM setmatrix }bind def /RC/rcurveto load def /RL/rlineto load def /ST/stroke load def /MT/moveto load def /CL/closepath load def /Fr{ setrgbcolor fill }bind def /setcmykcolor where{ pop /Fk{ setcmykcolor fill }bind def }if /Fg{ setgray fill }bind def /FL/fill load def /LW/setlinewidth load def /Cr/setrgbcolor load def /setcmykcolor where{ pop /Ck/setcmykcolor load def }if /Cg/setgray load def /RE{ findfont dup maxlength 1 index/FontName known not{1 add}if dict begin { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall /Encoding exch def dup/FontName exch def currentdict end definefont pop }bind def /DEFS 0 def /EBEGIN{ moveto DEFS begin }bind def /EEND/end load def /CNT 0 def /level1 0 def /PBEGIN{ /level1 save def translate div 3 1 roll div exch scale neg exch neg exch translate 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit []0 setdash /setstrokeadjust where{ pop false setstrokeadjust }if /setoverprint where{ pop false setoverprint }if newpath /CNT countdictstack def userdict begin /showpage{}def /setpagedevice{}def mark }bind def /PEND{ cleartomark countdictstack CNT sub{end}repeat level1 restore }bind def end def /setpacking where{ pop setpacking }if %%EndResource %%EndProlog %%BeginSetup %%BeginFeature: *PageSize Default << /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice %%EndFeature %%IncludeResource: font Times-Roman %%IncludeResource: font Times-Bold %%IncludeResource: font Times-Italic grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron /scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent /ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen /period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon /semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O /P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex /underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y /z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft /guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl /endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut /dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash /quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen /brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft /logicalnot/minus/registered/macron/degree/plusminus/twosuperior /threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior /ordmasculine/guilsinglright/onequarter/onehalf/threequarters /questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash /ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def /Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE /Times-Roman@0 ENC0/Times-Roman RE %%EndSetup %%Page: 1 1 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library) -.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0 (history \255 GNU History Library)108 96 Q F1(COPYRIGHT)72 112.8 Q F0 (The GNU History Library is Cop)108 124.8 Q (yright \251 1989-2017 by the Free Softw)-.1 E(are F)-.1 E (oundation, Inc.)-.15 E F1(DESCRIPTION)72 141.6 Q F0(Man)108 153.6 Q 2.81(yp)-.15 G .31(rograms read input from the user a line at a time.) -2.81 F .309(The GNU History library is able to k)5.309 F .309 (eep track of)-.1 F .024(those lines, associate arbitrary data with eac\ h line, and utilize information from pre)108 165.6 R .024 (vious lines in composing)-.25 F(ne)108 177.6 Q 2.5(wo)-.25 G(nes.)-2.5 E F1(HIST)72 194.4 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION)-.81 E F0 .823(The history library supports a history e)108 206.4 R .822 (xpansion feature that is identical to the history e)-.15 F .822 (xpansion in)-.15 F/F2 10/Times-Bold@0 SF(bash.)3.322 E F0 (This section describes what syntax features are a)108 218.4 Q -.25(va) -.2 G(ilable.).25 E 1.305(History e)108 235.2 R 1.305 (xpansions introduce w)-.15 F 1.306(ords from the history list into the\ input stream, making it easy to repeat)-.1 F .21 (commands, insert the ar)108 247.2 R .21(guments to a pre)-.18 F .209 (vious command into the current input line, or \214x errors in pre)-.25 F(vious)-.25 E(commands quickly)108 259.2 Q(.)-.65 E 1.296(History e)108 276 R 1.297(xpansion is usually performed immediately after a complete \ line is read.)-.15 F 1.297(It tak)6.297 F 1.297(es place in tw)-.1 F(o) -.1 E 2.855(parts. The)108 288 R .354(\214rst is to determine which lin\ e from the history list to use during substitution.)2.855 F .354 (The second is to)5.354 F .116 (select portions of that line for inclusion into the current one.)108 300 R .117(The line selected from the history is the)5.116 F/F3 10 /Times-Italic@0 SF -.15(ev)2.617 G(ent).15 E F0(,)A .846 (and the portions of that line that are acted upon are)108 312 R F3(wor) 3.346 E(ds)-.37 E F0 5.846(.V)C(arious)-6.956 E F3(modi\214er)3.346 E(s) -.1 E F0 .846(are a)3.346 F -.25(va)-.2 G .845(ilable to manipulate).25 F .304(the selected w)108 324 R 2.804(ords. The)-.1 F .304(line is brok) 2.804 F .304(en into w)-.1 F .304(ords in the same f)-.1 F .304 (ashion as)-.1 F F2(bash)2.804 E F0 .305(does when reading input, so) 2.804 F .539(that se)108 336 R -.15(ve)-.25 G .539(ral w).15 F .539 (ords that w)-.1 F .539 (ould otherwise be separated are considered one w)-.1 F .538 (ord when surrounded by quotes)-.1 F .307(\(see the description of)108 348 R F2(history_tok)2.807 E(enize\(\))-.1 E F0(belo)2.807 E 2.807 (w\). History)-.25 F -.15(ex)2.807 G .307 (pansions are introduced by the appearance of).15 F .52(the history e) 108 360 R .52(xpansion character)-.15 F 3.02(,w)-.4 G .52(hich is)-3.02 F F2(!)3.853 E F0 .52(by def)3.853 F 3.02(ault. Only)-.1 F .52 (backslash \()3.02 F F2(\\).833 E F0 3.02(\)a).833 G .52 (nd single quotes can quote the)-3.02 F(history e)108 372 Q (xpansion character)-.15 E(.)-.55 E F2(Ev)87 388.8 Q(ent Designators)-.1 E F0 .204(An e)108 400.8 R -.15(ve)-.25 G .204(nt designator is a refer\ ence to a command line entry in the history list.).15 F .205 (Unless the reference is abso-)5.204 F(lute, e)108 412.8 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5(ot).15 G (he current position in the history list.)-2.5 E F2(!)108 429.6 Q F0 (Start a history substitution, e)144 429.6 Q(xcept when follo)-.15 E (wed by a)-.25 E F2(blank)2.5 E F0 2.5(,n)C -.25(ew)-2.5 G (line, = or \(.).25 E F2(!)108 441.6 Q F3(n)A F0(Refer to command line) 144 441.6 Q F3(n)2.5 E F0(.).24 E F2<21ad>108 453.6 Q F3(n)A F0 (Refer to the current command minus)144 453.6 Q F3(n)2.5 E F0(.).24 E F2 (!!)108 465.6 Q F0(Refer to the pre)144 465.6 Q(vious command.)-.25 E (This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 477.6 Q F3(string) A F0 .865(Refer to the most recent command preceding the current positi\ on in the history list starting with)144 477.6 R F3(string)144 489.6 Q F0(.).22 E F2(!?)108 501.6 Q F3(string)A F2([?])A F0 1.503(Refer to the\ most recent command preceding the current position in the history list\ containing)144 513.6 R F3(string)144 525.6 Q F0 5(.T).22 G(he trailing) -5 E F2(?)2.5 E F0(may be omitted if)2.5 E F3(string)2.84 E F0(is follo) 2.72 E(wed immediately by a ne)-.25 E(wline.)-.25 E/F4 12/Times-Bold@0 SF(^)108 542.6 Q F3(string1)-5 I F4(^)5 I F3(string2)-5 I F4(^)5 I F0 2.63(Quick substitution.)144 549.6 R 2.629 (Repeat the last command, replacing)7.629 F F3(string1)5.469 E F0(with) 5.129 E F3(string2)5.129 E F0 7.629(.E).02 G(qui)-7.629 E -.25(va)-.25 G 2.629(lent to).25 F -.74(``)144 561.6 S(!!:s/).74 E F3(string1)A F0(/)A F3(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0 (belo)2.5 E(w\).)-.25 E F2(!#)108 573.6 Q F0 (The entire command line typed so f)144 573.6 Q(ar)-.1 E(.)-.55 E F2 -.75(Wo)87 590.4 S(rd Designators).75 E F0 -.8(Wo)108 602.4 S 1.313 (rd designators are used to select desired w).8 F 1.314(ords from the e) -.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.314 (separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F .53(from the w)108 614.4 R .529(ord designator)-.1 F 5.529(.I)-.55 G 3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 (ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2 ($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F23.029 E F0 3.029(,o)C(r) -3.029 E F2(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 (are numbered from the be)108 626.4 R 1.3 (ginning of the line, with the \214rst w)-.15 F 1.301 (ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8 F(inserted into the current line separated by single spaces.)108 638.4 Q F2 2.5(0\()108 655.2 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 667.2 Q 2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E F3(n)108.36 679.2 Q F0(The)144 679.2 Q F3(n)2.5 E F0(th w)A(ord.)-.1 E F2(^)108 691.2 Q F0(The \214rst ar)144 691.2 Q 2.5(gument. That)-.18 F (is, w)2.5 E(ord 1.)-.1 E F2($)108 703.2 Q F0 .064(The last w)144 703.2 R 2.564(ord. This)-.1 F .064(is usually the last ar)2.564 F .064 (gument, b)-.18 F .064(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F .063(ord if there is only)-.1 F(one w)144 715.2 Q(ord in the line.)-.1 E (GNU History 6.3)72 768 Q(2017 October 8)133.735 E(1)197.895 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library) -.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Bold@0 SF(%)108 84 Q F0(The w)144 84 Q (ord matched by the most recent `?)-.1 E/F2 10/Times-Italic@0 SF(string) A F0(?' search.)A F2(x)108.77 96 Q F1A F2(y)A F0 2.5(Ar)144 96 S (ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C(bbre)-2.5 E (viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 108 Q F0 .315 (All of the w)144 108 R .315(ords b)-.1 F .315(ut the zeroth.)-.2 F .315 (This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815 ('. It)B .315(is not an error to use)2.815 F F1(*)2.816 E F0 .316 (if there is)2.816 F(just one w)144 120 Q(ord in the e)-.1 E -.15(ve) -.25 G(nt; the empty string is returned in that case.).15 E F1(x*)108 132 Q F0(Abbre)144 132 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1<78ad> 108 144 Q F0(Abbre)144 144 Q(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 E (e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E (If a w)108 160.8 Q(ord designator is supplied without an e)-.1 E -.15 (ve)-.25 G(nt speci\214cation, the pre).15 E (vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1 (Modi\214ers)87 177.6 Q F0 .184(After the optional w)108 189.6 R .184 (ord designator)-.1 F 2.684(,t)-.4 G .183 (here may appear a sequence of one or more of the follo)-2.684 F .183 (wing modi\214ers,)-.25 F(each preceded by a `:'.)108 201.6 Q F1(h)108 218.4 Q F0(Remo)144 218.4 Q .3 -.15(ve a t)-.15 H (railing \214le name component, lea).15 E(ving only the head.)-.2 E F1 (t)108 230.4 Q F0(Remo)144 230.4 Q .3 -.15(ve a)-.15 H (ll leading \214le name components, lea).15 E(ving the tail.)-.2 E F1(r) 108 242.4 Q F0(Remo)144 242.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E (\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E (ving the basename.)-.2 E F1(e)108 254.4 Q F0(Remo)144 254.4 Q .3 -.15 (ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 266.4 Q F0(Print the ne)144 266.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E (ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 278.4 Q F0 (Quote the substituted w)144 278.4 Q (ords, escaping further substitutions.)-.1 E F1(x)108 290.4 Q F0 (Quote the substituted w)144 290.4 Q(ords as with)-.1 E F1(q)2.5 E F0 2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne) 2.5 E(wlines.)-.25 E F1(s/)108 302.4 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 314.4 Q F2(ne)3.081 E(w)-.15 E F0 .221 (for the \214rst occurrence of)3.031 F F2(old)2.951 E F0 .221(in the e) 3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721(yd)-.15 G .221(elimiter can be used in place)-2.721 F .617(of /.)144 326.4 R .617 (The \214nal delimiter is optional if it is the last character of the e) 5.617 F -.15(ve)-.25 G .617(nt line.).15 F .616(The delimiter may)5.616 F .666(be quoted in)144 338.4 R F2(old)3.396 E F0(and)3.936 E F2(ne) 3.526 E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 (If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166 (ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E F0 5.666(.A).77 G .275(single backslash will quote the &.)144 350.4 R (If)5.275 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 F F2(old)3.004 E F0 .274(substituted, or)3.544 F 2.774(,i)-.4 G 2.774 (fn)-2.774 G 2.774(op)-2.774 G(re)-2.774 E(vi-)-.25 E (ous history substitutions took place, the last)144 362.4 Q F2(string) 2.84 E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1 (&)108 374.4 Q F0(Repeat the pre)144 374.4 Q(vious substitution.)-.25 E F1(g)108 386.4 Q F0 .397(Cause changes to be applied o)144 386.4 R -.15 (ve)-.15 G 2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398 (nt line.).15 F .398(This is used in conjunction with `)5.398 F F1(:s)A F0 2.898('\()C(e.g.,)-2.898 E(`)144 398.4 Q F1(:gs/)A F2(old)A F1(/)A F2 (ne)A(w)-.15 E F1(/)A F0 1.219('\) or `)B F1(:&)A F0 3.719('. If)B 1.219 (used with `)3.719 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.218 (elimiter can be used in place of /, and the \214nal)-3.718 F .089 (delimiter is optional if it is the last character of the e)144 410.4 R -.15(ve)-.25 G .09(nt line.).15 F(An)5.09 E F1(a)2.59 E F0 .09 (may be used as a synon)2.59 F .09(ym for)-.15 F F1(g)144 422.4 Q F0(.)A F1(G)108 434.4 Q F0(Apply the follo)144 434.4 Q(wing `)-.25 E F1(s)A F0 2.5('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(PR)72 451.2 Q (OGRAMMING WITH HIST)-.329 E(OR)-.197 E 2.738(YF)-.383 G(UNCTIONS)-2.738 E F0(This section describes ho)108 463.2 Q 2.5(wt)-.25 G 2.5(ou)-2.5 G (se the History library in other programs.)-2.5 E F1(Intr)87 480 Q (oduction to History)-.18 E F0 .797 (The programmer using the History library has a)108 492 R -.25(va)-.2 G .796(ilable functions for remembering lines on a history list,).25 F .307(associating arbitrary data with a line, remo)108 504 R .308 (ving lines from the list, searching through the list for a line con-) -.15 F .303(taining an arbitrary te)108 516 R .303 (xt string, and referencing an)-.15 F 2.803(yl)-.15 G .303 (ine in the list directly)-2.803 F 5.303(.I)-.65 G 2.803(na)-5.303 G .303(ddition, a history)-2.803 F F2 -.2(ex)2.802 G(pansion).2 E F0 (function is a)108 528 Q -.25(va)-.2 G(ilable which pro).25 E (vides for a consistent user interf)-.15 E(ace across dif)-.1 E (ferent programs.)-.25 E .059(The user using programs written with the \ History library has the bene\214t of a consistent user interf)108 544.8 R .059(ace with a)-.1 F .918(set of well-kno)108 556.8 R .917 (wn commands for manipulating the te)-.25 F .917(xt of pre)-.15 F .917 (vious lines and using that te)-.25 F .917(xt in ne)-.15 F 3.417(wc)-.25 G(om-)-3.417 E 4.183(mands. The)108 568.8 R 1.684(basic history manipul\ ation commands are identical to the history substitution pro)4.183 F 1.684(vided by)-.15 F F1(bash)108 580.8 Q F0(.)A .904 (If the programmer desires, he can use the Readline library)108 597.6 R 3.403(,w)-.65 G .903(hich includes some history manipulation by)-3.403 F (def)108 609.6 Q(ault, and has the added adv)-.1 E (antage of command line editing.)-.25 E .39(Before declaring an)108 626.4 R 2.89(yf)-.15 G .39(unctions using an)-2.89 F 2.89(yf)-.15 G .39 (unctionality the History library pro)-2.89 F .39 (vides in other code, an appli-)-.15 F .067 (cation writer should include the \214le)108 638.4 R F2()-.55 E F0 .067(in an)4.233 F 2.566<798c>-.15 G .066(le that uses the History library')-2.566 F 2.566(sf)-.55 G (eatures.)-2.566 E .538(It supplies e)108 650.4 R .538 (xtern declarations for all of the library')-.15 F 3.038(sp)-.55 G .538 (ublic functions and v)-3.038 F .539(ariables, and declares all of the) -.25 F(public data structures.)108 662.4 Q F1(History Storage)87 691.2 Q F0(The history list is an array of history entries.)108 703.2 Q 2.5(Ah)5 G(istory entry is declared as follo)-2.5 E(ws:)-.25 E F2(typedef void *) 108 720 Q F1(histdata_t;)2.5 E F0(GNU History 6.3)72 768 Q (2017 October 8)133.735 E(2)197.895 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library) -.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E (typedef struct _hist_entry {)108 84 Q(char *line;)113 96 Q (char *timestamp;)113 108 Q(histdata_t data;)113 120 Q 2.5(}H)108 132 S (IST_ENTR)-2.5 E -.92(Y;)-.65 G (The history list itself might therefore be declared as)108 148.8 Q/F1 10/Times-Italic@0 SF(HIST_ENTR)108 165.6 Q 2.5(Y*)-.18 G(*)-2.5 E/F2 10 /Times-Bold@0 SF(the_history_list;)2.5 E F0(The state of the History li\ brary is encapsulated into a single structure:)108 182.4 Q(/*)108 199.2 Q 2.5(*As)110.5 211.2 S (tructure used to pass around the current state of the history)-2.5 E(.) -.65 E(*/)110.5 223.2 Q(typedef struct _hist_state {)108 235.2 Q (HIST_ENTR)113 247.2 Q 2.5(Y*)-.65 G (*entries; /* Pointer to the entries themselv)-2.5 E(es. */)-.15 E (int of)113 259.2 Q 25(fset; /*)-.25 F (The location pointer within this array)2.5 E 2.5(.*)-.65 G(/)-2.5 E (int length;)113 271.2 Q(/* Number of elements within this array)27.5 E 2.5(.*)-.65 G(/)-2.5 E(int size;)113 283.2 Q (/* Number of slots allocated to this array)32.5 E 2.5(.*)-.65 G(/)-2.5 E(int \215ags;)113 295.2 Q 2.5(}H)108 307.2 S(IST)-2.5 E(OR)-.18 E(Y_ST) -.65 E -1.11(AT)-.93 G(E;)1.11 E(If the \215ags member includes)108 324 Q F2(HS_STIFLED)2.5 E F0 2.5(,t)C(he history has been sti\215ed.)-2.5 E /F3 10.95/Times-Bold@0 SF(History Functions)72 340.8 Q F0 (This section describes the calling sequence for the v)108 352.8 Q (arious functions e)-.25 E(xported by the GNU History library)-.15 E(.) -.65 E F2(Initializing History and State Management)87 369.6 Q F0 1.274 (This section describes functions used to initialize and manage the sta\ te of the History library when you)108 381.6 R -.1(wa)108 393.6 S (nt to use the history functions in your program.).1 E F1(void)108 417.6 Q F2(using_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E(Be)108 429.6 Q(gin a session in which the history functions might be used.)-.15 E(This initializes the interacti)5 E .3 -.15(ve v)-.25 H(ariables.)-.1 E F1(HIST)108 453.6 Q(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37 G F2 (history_get_history_state)A F0(\()4.166 E F1(void)A F0(\))1.666 E (Return a structure describing the current state of the input history) 108 465.6 Q(.)-.65 E F1(void)108 489.6 Q F2(history_set_history_state) 2.5 E F0(\()4.166 E F1(HIST)A(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5 (E*).37 G(state)-2.5 E F0(\))1.666 E (Set the state of the history list according to)108 501.6 Q F1(state)2.5 E F0(.)A F2(History List Management)87 530.4 Q F0 (These functions manage indi)108 542.4 Q(vidual entries on the history \ list, or set parameters managing the list itself.)-.25 E F1(void)108 566.4 Q F2(add_history)2.5 E F0(\()4.166 E F1(const c)A(har *string)-.15 E F0(\))1.666 E(Place)108 578.4 Q F1(string)3.279 E F0 .779 (at the end of the history list.)3.279 F .779 (The associated data \214eld \(if an)5.779 F .779(y\) is set to)-.15 F F2(NULL)3.279 E F0 5.779(.I)C 3.279(ft)-5.779 G .78(he maxi-)-3.279 F .787(mum number of history entries has been set using)108 590.4 R F2 (sti\215e_history\(\))3.286 E F0 3.286(,a)C .786(nd the ne)-3.286 F 3.286(wn)-.25 G .786(umber of history entries)-3.286 F -.1(wo)108 602.4 S(uld e).1 E(xceed that maximum, the oldest history entry is remo)-.15 E -.15(ve)-.15 G(d.).15 E F1(void)108 626.4 Q F2(add_history_time)2.5 E F0 (\()4.166 E F1(const c)A(har *string)-.15 E F0(\))1.666 E (Change the time stamp associated with the most recent history entry to) 108 638.4 Q F1(string)2.5 E F0(.)A F1(HIST_ENTR)108 662.4 Q 2.5(Y*)-.18 G F2 -.18(re)C(mo).18 E -.1(ve)-.1 G(_history).1 E F0(\()4.166 E F1 (int whic)A(h)-.15 E F0(\))1.666 E(Remo)108 674.4 Q .352 -.15(ve h)-.15 H .052(istory entry at of).15 F(fset)-.25 E F1(whic)2.553 E(h)-.15 E F0 .053(from the history)2.553 F 5.053(.T)-.65 G .053(he remo)-5.053 F -.15 (ve)-.15 G 2.553(de).15 G .053(lement is returned so you can free the) -2.553 F(line, data, and containing structure.)108 686.4 Q F1 (histdata_t)108 710.4 Q F2(fr)2.5 E(ee_history_entry)-.18 E F0(\()4.166 E F1(HIST_ENTR)A 2.5(Y*)-.18 G(histent)-2.5 E F0(\))1.666 E 3.31 (Free the history entry)108 722.4 R F1(histent)5.81 E F0 3.309(and an) 5.81 F 5.809(yh)-.15 G 3.309(istory library pri)-5.809 F -.25(va)-.25 G 3.309(te data associated with it.).25 F 3.309(Returns the)8.309 F (GNU History 6.3)72 768 Q(2017 October 8)133.735 E(3)197.895 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library) -.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E (application-speci\214c data so the caller can dispose of it.)108 84 Q /F1 10/Times-Italic@0 SF(HIST_ENTR)108 108 Q 2.5(Y*)-.18 G/F2 10 /Times-Bold@0 SF -.18(re)C(place_history_entry).18 E F0(\()4.166 E F1 (int whic)A -.834(h, const)-.15 F -.15(ch)2.5 G(ar *line).15 E 1.666(,h) -.1 G(istdata_t data)-1.666 E F0(\))3.332 E(Mak)108 120 Q 3.062(et)-.1 G .562(he history entry at of)-3.062 F(fset)-.25 E F1(whic)3.062 E(h)-.15 E F0(ha)3.062 E -.15(ve)-.2 G F1(line)3.212 E F0(and)3.062 E F1(data) 3.062 E F0 5.563(.T)C .563 (his returns the old entry so the caller can dis-)-5.563 F(pose of an) 108 132 Q 2.5(ya)-.15 G(pplication-speci\214c data.)-2.5 E (In the case of an in)5 E -.25(va)-.4 G(lid).25 E F1(whic)2.5 E(h)-.15 E F0 2.5(,a)C F2(NULL)A F0(pointer is returned.)2.5 E F1(void)108 156 Q F2 (clear_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E (Clear the history list by deleting all the entries.)108 168 Q F1(void) 108 192 Q F2(sti\215e_history)2.5 E F0(\()4.166 E F1(int max)A F0(\)) 1.666 E .38(Sti\215e the history list, remembering only the last)108 204 R F1(max)2.88 E F0 2.88(entries. The)2.88 F .38 (history list will contain only)2.88 F F1(max)2.88 E F0(entries)2.88 E (at a time.)108 216 Q F1(int)108 240 Q F2(unsti\215e_history)2.5 E F0 (\()4.166 E F1(void)A F0(\))1.666 E .46(Stop sti\215ing the history)108 252 R 5.46(.T)-.65 G .46(his returns the pre)-5.46 F .46 (viously-set maximum number of history entries \(as set by)-.25 F F2 (sti-)2.96 E(\215e_history\(\))108 264 Q F0 2.5(\). history)B -.1(wa)2.5 G 2.5(ss).1 G 2.5(ti\215ed. The)-2.5 F -.25(va)2.5 G(lue is positi).25 E .3 -.15(ve i)-.25 H 2.5(ft).15 G(he history w)-2.5 E(as sti\215ed, ne) -.1 E -.05(ga)-.15 G(ti).05 E .3 -.15(ve i)-.25 H 2.5(fi).15 G 2.5(tw) -2.5 G(asn')-2.6 E(t.)-.18 E F1(int)108 288 Q F2(history_is_sti\215ed) 2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E (Returns non-zero if the history is sti\215ed, zero if it is not.)108 300 Q F2(Inf)87 328.8 Q(ormation About the History List)-.25 E F0(These\ functions return information about the entire history list or indi)108 340.8 Q(vidual list entries.)-.25 E F1(HIST_ENTR)108 364.8 Q 2.5(Y*)-.18 G(*)-2.5 E F2(history_list)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E .708(Return a)108 376.8 R F2(NULL)3.208 E F0 .708(terminated array of) 3.208 F F1(HIST_ENTR)3.208 E 3.208(Y*)-.18 G F0 .708 (which is the current input history)B 5.707(.E)-.65 G .707 (lement 0 of this)-5.707 F(list is the be)108 388.8 Q(ginning of time.) -.15 E(If there is no history)5 E 2.5(,r)-.65 G(eturn)-2.5 E F2(NULL)2.5 E F0(.)A F1(int)108 412.8 Q F2(wher)2.5 E(e_history)-.18 E F0(\()4.166 E F1(void)A F0(\))1.666 E(Returns the of)108 424.8 Q (fset of the current history element.)-.25 E F1(HIST_ENTR)108 448.8 Q 2.5(Y*)-.18 G F2(curr)A(ent_history)-.18 E F0(\()4.166 E F1(void)A F0 (\))1.666 E 1.373 (Return the history entry at the current position, as determined by)108 460.8 R F2(wher)3.873 E(e_history\(\))-.18 E F0 6.373(.I)C 3.873(ft) -6.373 G 1.374(here is no entry)-3.873 F(there, return a)108 472.8 Q F2 (NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(HIST_ENTR)108 496.8 Q 2.5(Y*) -.18 G F2(history_get)A F0(\()4.166 E F1(int of)A(fset)-.18 E F0(\)) 1.666 E 1.069(Return the history entry at position)108 508.8 R F1(of) 3.569 E(fset)-.18 E F0 6.069(.T)C 1.069(he range of v)-6.069 F 1.069 (alid v)-.25 F 1.069(alues of)-.25 F F1(of)3.569 E(fset)-.18 E F0 1.068 (starts at)3.569 F F2(history_base)3.568 E F0(and)3.568 E .286(ends at) 108 520.8 R F2(history_length)2.786 E F0 2.7862.786 G 5.286(.I) -2.786 G 2.786(ft)-5.286 G .286(here is no entry there, or if)-2.786 F F1(of)2.786 E(fset)-.18 E F0 .286(is outside the v)2.786 F .287 (alid range, return a)-.25 F F2(NULL)2.787 E F0(pointer)108 532.8 Q(.) -.55 E F1(time_t)108 556.8 Q F2(history_get_time)2.5 E F0(\()4.166 E F1 (HIST_ENTR)A 2.5(Y*)-.18 G F0(\))-.834 E(Return the time stamp associat\ ed with the history entry passed as the ar)108 568.8 Q(gument.)-.18 E F1 (int)108 592.8 Q F2(history_total_bytes)2.5 E F0(\()4.166 E F1(void)A F0 (\))1.666 E .392 (Return the number of bytes that the primary history entries are using.) 108 604.8 R .391(This function returns the sum of the)5.392 F (lengths of all the lines in the history)108 616.8 Q(.)-.65 E F2(Mo)87 645.6 Q(ving Ar)-.1 E(ound the History List)-.18 E F0 (These functions allo)108 657.6 Q 2.5(wt)-.25 G(he current inde)-2.5 E 2.5(xi)-.15 G(nto the history list to be set or changed.)-2.5 E F1(int) 108 681.6 Q F2(history_set_pos)2.5 E F0(\()4.166 E F1(int pos)A F0(\)) 1.666 E .79(Set the current history of)108 693.6 R .79(fset to)-.25 F F1 (pos)3.29 E F0 3.29(,a)C 3.29(na)-3.29 G .79(bsolute inde)-3.29 F 3.29 (xi)-.15 G .79(nto the list.)-3.29 F .79(Returns 1 on success, 0 if)5.79 F F1(pos)3.29 E F0 .79(is less)3.29 F (than zero or greater than the number of history entries.)108 705.6 Q F1 (HIST_ENTR)108 729.6 Q 2.5(Y*)-.18 G F2(pr)A -.15(ev)-.18 G (ious_history).15 E F0(\()4.166 E F1(void)A F0(\))1.666 E (GNU History 6.3)72 768 Q(2017 October 8)133.735 E(4)197.895 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library) -.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E .208(Back up the current history of)108 84 R .208(fset to the pre)-.25 F .208(vious history entry)-.25 F 2.707(,a)-.65 G .207 (nd return a pointer to that entry)-2.707 F 5.207(.I)-.65 G 2.707(ft) -5.207 G .207(here is)-2.707 F(no pre)108 96 Q(vious entry)-.25 E 2.5 (,r)-.65 G(eturn a)-2.5 E/F1 10/Times-Bold@0 SF(NULL)2.5 E F0(pointer) 2.5 E(.)-.55 E/F2 10/Times-Italic@0 SF(HIST_ENTR)108 120 Q 2.5(Y*)-.18 G F1(next_history)A F0(\()4.166 E F2(void)A F0(\))1.666 E .332 (If the current history of)108 132 R .333(fset refers to a v)-.25 F .333 (alid history entry)-.25 F 2.833(,i)-.65 G .333 (ncrement the current history of)-2.833 F 2.833(fset. If)-.25 F .333 (the possi-)2.833 F .202(bly-incremented history of)108 144 R .202 (fset refers to a v)-.25 F .202(alid history entry)-.25 F 2.702(,r)-.65 G .202(eturn a pointer to that entry; otherwise, return)-2.702 F(a)108 156 Q F1(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(Sear)87 184.8 Q (ching the History List)-.18 E F0 .005(These functions allo)108 196.8 R 2.505(ws)-.25 G .006(earching of the history list for entries containin\ g a speci\214c string.)-2.505 F .006(Searching may be)5.006 F 1.452 (performed both forw)108 208.8 R 1.452(ard and backw)-.1 F 1.451 (ard from the current history position.)-.1 F 1.451(The search may be) 6.451 F F2(anc)3.951 E(hor)-.15 E(ed)-.37 E F0(,)A (meaning that the string must match at the be)108 220.8 Q (ginning of the history entry)-.15 E(.)-.65 E F2(int)108 244.8 Q F1 (history_sear)2.5 E(ch)-.18 E F0(\()4.166 E F2(const c)A(har *string) -.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))1.666 E .155 (Search the history for)108 256.8 R F2(string)2.655 E F0 2.656(,s)C .156 (tarting at the current history of)-2.656 F 2.656(fset. If)-.25 F F2 (dir)2.656 E(ection)-.37 E F0 .156(is less than 0, then the search)2.656 F .802(is through pre)108 268.8 R .802 (vious entries, otherwise through subsequent entries.)-.25 F(If)5.801 E F2(string)3.301 E F0 .801(is found, then the current his-)3.301 F .064 (tory inde)108 280.8 R 2.564(xi)-.15 G 2.564(ss)-2.564 G .064 (et to that history entry)-2.564 F 2.564(,a)-.65 G .064(nd the v)-2.564 F .064(alue returned is the of)-.25 F .064 (fset in the line of the entry where)-.25 F F2(string)2.565 E F0 -.1(wa) 108 292.8 S 2.5(sf).1 G 2.5(ound. Otherwise,)-2.5 F (nothing is changed, and a -1 is returned.)2.5 E F2(int)108 316.8 Q F1 (history_sear)2.5 E(ch_pr)-.18 E(e\214x)-.18 E F0(\()4.166 E F2(const c) A(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\)) 1.666 E .684(Search the history for)108 328.8 R F2(string)3.183 E F0 3.183(,s)C .683(tarting at the current history of)-3.183 F 3.183 (fset. The)-.25 F .683(search is anchored: matching lines)3.183 F 1.063 (must be)108 340.8 R 1.063(gin with)-.15 F F2(string)3.563 E F0 6.063 (.I)C(f)-6.063 E F2(dir)3.563 E(ection)-.37 E F0 1.064 (is less than 0, then the search is through pre)3.563 F 1.064 (vious entries, otherwise)-.25 F 1.115(through subsequent entries.)108 352.8 R(If)6.115 E F2(string)3.615 E F0 1.115 (is found, then the current history inde)3.615 F 3.614(xi)-.15 G 3.614 (ss)-3.614 G 1.114(et to that entry)-3.614 F 3.614(,a)-.65 G 1.114 (nd the)-3.614 F(return v)108 364.8 Q(alue is 0.)-.25 E (Otherwise, nothing is changed, and a -1 is returned.)5 E F2(int)108 388.8 Q F1(history_sear)2.5 E(ch_pos)-.18 E F0(\()4.166 E F2(const c)A (har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E -.834(ection, int) -.37 F(pos)2.5 E F0(\))3.332 E .603(Search for)108 400.8 R F2(string) 3.103 E F0 .603(in the history list, starting at)3.103 F F2(pos)3.104 E F0 3.104(,a)C 3.104(na)-3.104 G .604(bsolute inde)-3.104 F 3.104(xi)-.15 G .604(nto the list.)-3.104 F(If)5.604 E F2(dir)3.104 E(ection)-.37 E F0 .604(is ne)3.104 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(,).15 E .608 (the search proceeds backw)108 412.8 R .608(ard from)-.1 F F2(pos)3.108 E F0 3.108(,o)C .608(therwise forw)-3.108 F 3.108(ard. Returns)-.1 F .608(the absolute inde)3.108 F 3.108(xo)-.15 G 3.108(ft)-3.108 G .608 (he history ele-)-3.108 F(ment where)108 424.8 Q F2(string)2.5 E F0 -.1 (wa)2.5 G 2.5(sf).1 G(ound, or -1 otherwise.)-2.5 E F1 (Managing the History File)87 453.6 Q F0 .035(The History library can r\ ead the history from and write it to a \214le.)108 465.6 R .036 (This section documents the functions for)5.035 F (managing a history \214le.)108 477.6 Q F2(int)108 501.6 Q F1 -.18(re) 2.5 G(ad_history).18 E F0(\()4.166 E F2(const c)A(har *\214lename)-.15 E F0(\))1.666 E .151(Add the contents of)108 513.6 R F2(\214lename)2.651 E F0 .151(to the history list, a line at a time.)2.651 F(If)5.15 E F2 (\214lename)2.65 E F0(is)2.65 E F1(NULL)2.65 E F0 2.65(,t)C .15 (hen read from)-2.65 F F2(~/.his-)2.65 E(tory)108 525.6 Q F0 5(.R)C (eturns 0 if successful, or)-5 E F1(err)2.5 E(no)-.15 E F0(if not.)2.5 E F2(int)108 549.6 Q F1 -.18(re)2.5 G(ad_history_range).18 E F0(\()4.166 E F2(const c)A(har *\214lename)-.15 E 1.666(,i)-.1 G(nt fr)-1.666 E -.834 (om, int)-.45 F(to)2.5 E F0(\))3.332 E .052(Read a range of lines from) 108 561.6 R F2(\214lename)2.553 E F0 2.553(,a)C .053 (dding them to the history list.)-2.553 F .053(Start reading at line) 5.053 F F2(fr)2.553 E(om)-.45 E F0 .053(and end at)2.553 F F2(to)2.553 E F0(.)A(If)108 573.6 Q F2(fr)2.889 E(om)-.45 E F0 .389 (is zero, start at the be)2.889 F 2.889(ginning. If)-.15 F F2(to)2.889 E F0 .389(is less than)2.889 F F2(fr)2.889 E(om)-.45 E F0 2.889(,t)C .388 (hen read until the end of the \214le.)-2.889 F(If)5.388 E F2 (\214lename)2.888 E F0(is)108 585.6 Q F1(NULL)2.5 E F0 2.5(,t)C (hen read from)-2.5 E F2(~/.history)2.5 E F0 5(.R)C (eturns 0 if successful, or)-5 E F1(err)2.5 E(no)-.15 E F0(if not.)2.5 E F2(int)108 609.6 Q F1(write_history)2.5 E F0(\()4.166 E F2(const c)A (har *\214lename)-.15 E F0(\))1.666 E .961(Write the current history to) 108 621.6 R F2(\214lename)3.461 E F0 3.461(,o)C -.15(ve)-3.611 G (rwriting).15 E F2(\214lename)3.461 E F0 .961(if necessary)3.461 F 5.961 (.I)-.65 G(f)-5.961 E F2(\214lename)3.462 E F0(is)3.462 E F1(NULL)3.462 E F0 3.462(,t)C .962(hen write)-3.462 F(the history list to)108 633.6 Q F2(~/.history)2.5 E F0 5(.R)C(eturns 0 on success, or)-5 E F1(err)2.5 E (no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F2(int)108 669.6 Q F1(append_history)2.5 E F0(\()4.166 E F2(int nelements,)A(const c)1.666 E(har *\214lename)-.15 E F0(\))1.666 E .839(Append the last)108 681.6 R F2(nelements)3.339 E F0 .839(of the history list to)3.339 F F2 (\214lename)3.339 E F0 5.839(.I)C(f)-5.839 E F2(\214lename)3.339 E F0 (is)3.339 E F1(NULL)3.339 E F0 3.339(,t)C .838(hen append to)-3.339 F F2 (~/.history)3.338 E F0(.)A(Returns 0 on success, or)108 693.6 Q F1(err) 2.5 E(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F2(int)108 717.6 Q F1(history_truncate_\214le)2.5 E F0(\()4.166 E F2(const c)A (har *\214lename)-.15 E 1.666(,i)-.1 G(nt nlines)-1.666 E F0(\))1.666 E -.35(Tr)108 729.6 S .38(uncate the history \214le).35 F F2(\214lename) 2.88 E F0 2.88(,l)C(ea)-2.88 E .38(ving only the last)-.2 F F2(nlines) 2.881 E F0 2.881(lines. If)2.881 F F2(\214lename)2.881 E F0(is)2.881 E F1(NULL)2.881 E F0 2.881(,t)C(hen)-2.881 E F2(~/.history)2.881 E F0(is) 2.881 E(GNU History 6.3)72 768 Q(2017 October 8)133.735 E(5)197.895 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library) -.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E 2.5 (truncated. Returns)108 84 R 2.5(0o)2.5 G 2.5(ns)-2.5 G(uccess, or)-2.5 E/F1 10/Times-Bold@0 SF(err)2.5 E(no)-.15 E F0(on f)2.5 E(ailure.)-.1 E F1(History Expansion)87 112.8 Q F0(These functions implement history e) 108 124.8 Q(xpansion.)-.15 E/F2 10/Times-Italic@0 SF(int)108 148.8 Q F1 (history_expand)2.5 E F0(\()4.166 E F2 -.15(ch)C(ar *string).15 E 1.666 (,c)-.1 G(har **output)-1.816 E F0(\))1.666 E(Expand)108 160.8 Q F2 (string)2.5 E F0 2.5(,p)C(lacing the result into)-2.5 E F2(output)2.5 E F0 2.5(,ap)C(ointer to a string.)-2.5 E(Returns:)5 E(0)144 172.8 Q .566 (If no e)180 172.8 R .566(xpansions took place \(or)-.15 F 3.065(,i)-.4 G 3.065(ft)-3.065 G .565(he only change in the te)-3.065 F .565(xt w) -.15 F .565(as the remo)-.1 F -.25(va)-.15 G 3.065(lo).25 G 3.065(fe) -3.065 G(scape)-3.065 E(characters preceding the history e)180 184.8 Q (xpansion character\);)-.15 E(1)144 196.8 Q(if e)180 196.8 Q (xpansions did tak)-.15 E 2.5(ep)-.1 G(lace;)-2.5 E(-1)144 208.8 Q (if there w)180 208.8 Q(as an error in e)-.1 E(xpansion;)-.15 E(2)144 220.8 Q(if the returned line should be displayed, b)180 220.8 Q (ut not e)-.2 E -.15(xe)-.15 G(cuted, as with the).15 E F1(:p)2.5 E F0 (modi\214er)2.5 E(.)-.55 E(If an error ocurred in e)108 232.8 Q (xpansion, then)-.15 E F2(output)2.5 E F0(contains a descripti)2.5 E .3 -.15(ve e)-.25 H(rror message.).15 E F2 -.15(ch)108 256.8 S(ar *).15 E F1(get_history_e)2.5 E -.1(ve)-.15 G(nt).1 E F0(\()4.166 E F2(const c)A (har *string)-.15 E 1.666(,i)-.1 G(nt *cinde)-1.666 E -.834(x, int)-.2 F (qc)2.5 E(har)-.15 E F0(\))3.332 E .262(Returns the te)108 268.8 R .262 (xt of the history e)-.15 F -.15(ve)-.25 G .262(nt be).15 F .263 (ginning at)-.15 F F2(string)2.763 E F0(+)2.763 E F2(*cinde)2.763 E(x) -.2 E F0(.)A F2(*cinde)5.263 E(x)-.2 E F0 .263 (is modi\214ed to point to after the)2.763 F -2.15 -.25(ev e)108 280.8 T .71(nt speci\214er).25 F 5.71(.A)-.55 G 3.21(tf)-5.71 G .71 (unction entry)-3.21 F(,)-.65 E F2(cinde)3.21 E(x)-.2 E F0 .709 (points to the inde)3.21 F 3.209(xi)-.15 G(nto)-3.209 E F2(string)3.209 E F0 .709(where the history e)3.209 F -.15(ve)-.25 G .709 (nt speci\214ca-).15 F .527(tion be)108 292.8 R(gins.)-.15 E F2(qc)5.527 E(har)-.15 E F0 .527(is a character that is allo)3.027 F .527 (wed to end the e)-.25 F -.15(ve)-.25 G .528 (nt speci\214cation in addition to the `).15 F(`normal')-.74 E(')-.74 E (terminating characters.)108 304.8 Q F2 -.15(ch)108 328.8 S(ar **).15 E F1(history_tok)2.5 E(enize)-.1 E F0(\()4.166 E F2(const c)A(har *string) -.15 E F0(\))1.666 E .239(Return an array of tok)108 340.8 R .239 (ens parsed out of)-.1 F F2(string)2.739 E F0 2.739(,m)C .238 (uch as the shell might.)-2.739 F .238(The tok)5.238 F .238 (ens are split on the charac-)-.1 F(ters in the)108 352.8 Q F1 (history_w)2.5 E(ord_delimiters)-.1 E F0 -.25(va)2.5 G (riable, and shell quoting con).25 E -.15(ve)-.4 G(ntions are obe).15 E (yed.)-.15 E F2 -.15(ch)108 376.8 S(ar *).15 E F1(history_ar)2.5 E (g_extract)-.1 E F0(\()4.166 E F2(int \214r)A -.834(st, int)-.1 F -.834 (last, const)2.5 F -.15(ch)2.5 G(ar *string).15 E F0(\))3.332 E .025 (Extract a string se)108 388.8 R .025(gment consisting of the)-.15 F F2 <8c72>2.526 E(st)-.1 E F0(through)2.526 E F2(last)2.526 E F0(ar)2.526 E .026(guments present in)-.18 F F2(string)2.526 E F0 5.026(.A)C -.18(rg) -5.026 G .026(uments are split).18 F(using)108 400.8 Q F1(history_tok) 2.5 E(enize\(\))-.1 E F0(.)A F1(History V)87 429.6 Q(ariables)-.92 E F0 (This section describes the e)108 441.6 Q(xternally-visible v)-.15 E (ariables e)-.25 E(xported by the GNU History Library)-.15 E(.)-.65 E F2 (int)108 465.6 Q F1(history_base)2.5 E F0(The logical of)108 477.6 Q (fset of the \214rst entry in the history list.)-.25 E F2(int)108 501.6 Q F1(history_length)2.5 E F0 (The number of entries currently stored in the history list.)108 513.6 Q F2(int)108 537.6 Q F1(history_max_entries)2.5 E F0 (The maximum number of history entries.)108 549.6 Q (This must be changed using)5 E F1(sti\215e_history\(\))2.5 E F0(.)A F2 (int)108 573.6 Q F1(history_wite_timestamps)2.5 E F0 1.468 (If non-zero, timestamps are written to the history \214le, so the)108 585.6 R 3.968(yc)-.15 G 1.468(an be preserv)-3.968 F 1.468 (ed between sessions.)-.15 F(The)6.468 E(def)108 597.6 Q .438(ault v)-.1 F .439(alue is 0, meaning that timestamps are not sa)-.25 F -.15(ve)-.2 G 2.939(d. The).15 F .439(current timestamp format uses the v)2.939 F .439(alue of)-.25 F F2(history_comment_c)108 609.6 Q(har)-.15 E F0 .051 (to delimit timestamp entries in the history \214le.)2.552 F .051 (If that v)5.051 F .051(ariable does not ha)-.25 F .351 -.15(ve a v)-.2 H(alue)-.1 E(\(the def)108 621.6 Q (ault\), timestamps will not be written.)-.1 E F2 -.15(ch)108 645.6 S (ar).15 E F1(history_expansion_char)2.5 E F0 (The character that introduces a history e)108 657.6 Q -.15(ve)-.25 G 2.5(nt. The).15 F(def)2.5 E(ault is)-.1 E F1(!)2.5 E F0 5(.S)C (etting this to 0 inhibits history e)-5 E(xpansion.)-.15 E F2 -.15(ch) 108 681.6 S(ar).15 E F1(history_subst_char)2.5 E F0 (The character that in)108 693.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(sw).1 G (ord substitution if found at the start of a line.)-2.6 E(The def)5 E (ault is)-.1 E F1(^)2.5 E F0(.)A F2 -.15(ch)108 717.6 S(ar).15 E F1 (history_comment_char)2.5 E F0 1.392(During tok)108 729.6 R 1.392 (enization, if this character is seen as the \214rst character of a w) -.1 F 1.393(ord, then it and all subsequent)-.1 F(GNU History 6.3)72 768 Q(2017 October 8)133.735 E(6)197.895 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library) -.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E .31 (characters up to a ne)108 84 R .31 (wline are ignored, suppressing history e)-.25 F .309 (xpansion for the remainder of the line.)-.15 F .309(This is)5.309 F (disabled by def)108 96 Q(ault.)-.1 E/F1 10/Times-Italic@0 SF -.15(ch) 108 120 S(ar *).15 E/F2 10/Times-Bold@0 SF(history_w)2.5 E (ord_delimiters)-.1 E F0(The characters that separate tok)108 132 Q (ens for)-.1 E F2(history_tok)2.5 E(enize\(\))-.1 E F0 5(.T)C(he def)-5 E(ault v)-.1 E(alue is)-.25 E F2 2.5("\\)2.5 G(t\\n\(\)<>;&|")-2.5 E F0 (.)A F1 -.15(ch)108 156 S(ar *).15 E F2(history_no_expand_chars)2.5 E F0 2.054(The list of characters which inhibit history e)108 168 R 2.054 (xpansion if found immediately follo)-.15 F(wing)-.25 E F2 (history_expan-)4.555 E(sion_char)108 180 Q F0 5(.T)C(he def)-5 E (ault is space, tab, ne)-.1 E(wline,)-.25 E F2(\\r)2.5 E F0 2.5(,a)C(nd) -2.5 E F2(=)2.5 E F0(.)A F1 -.15(ch)108 204 S(ar *).15 E F2 (history_sear)2.5 E(ch_delimiter_chars)-.18 E F0 .401(The list of addit\ ional characters which can delimit a history search string, in addition\ to space, tab,)108 216 R F1(:)2.901 E F0(and)2.901 E F1(?)2.901 E F0 (in the case of a substring search.)108 228 Q(The def)5 E(ault is empty) -.1 E(.)-.65 E F1(int)108 252 Q F2(history_quotes_inhibit_expansion)2.5 E F0 .86(If non-zero, double-quoted w)108 264 R .861 (ords are not scanned for the history e)-.1 F .861 (xpansion character or the history com-)-.15 F(ment character)108 276 Q 5(.T)-.55 G(he def)-5 E(ault v)-.1 E(alue is 0.)-.25 E F1(rl_lineb)108 300 Q(uf_func_t *)-.2 E F2(history_inhibit_expansion_function)2.5 E F0 .348(This should be set to the address of a function that tak)108 312 R .348(es tw)-.1 F 2.848(oa)-.1 G -.18(rg)-2.848 G .347(uments: a).18 F F2 .347(char *)2.847 F F0(\()2.847 E F1(string)A F0 2.847(\)a)C .347(nd an) -2.847 F F2(int)2.847 E F0(inde)2.847 E(x)-.15 E .227 (into that string \()108 324 R F1(i)A F0 2.727(\). It)B .227 (should return a non-zero v)2.727 F .227(alue if the history e)-.25 F .227(xpansion starting at)-.15 F F1(string[i])2.728 E F0 .228 (should not)2.728 F .019(be performed; zero if the e)108 336 R .019 (xpansion should be done.)-.15 F .019 (It is intended for use by applications lik)5.019 F(e)-.1 E F2(bash) 2.519 E F0 .018(that use)2.519 F(the history e)108 348 Q (xpansion character for additional purposes.)-.15 E(By def)5 E (ault, this v)-.1 E(ariable is set to)-.25 E F2(NULL)2.5 E F0(.)A/F3 10.95/Times-Bold@0 SF(FILES)72 364.8 Q F1(~/.history)109.666 376.8 Q F0 (Def)144 388.8 Q(ault \214lename for reading and writing sa)-.1 E -.15 (ve)-.2 G 2.5(dh).15 G(istory)-2.5 E F3(SEE ALSO)72 405.6 Q F1 (The Gnu Readline Libr)108 417.6 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E (ox and Chet Rame)-.15 E(y)-.15 E F1(The Gnu History Libr)108 429.6 Q (ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F1(bash)108 441.6 Q F0(\(1\))A F1 -.37(re)108 453.6 S(adline).37 E F0 (\(3\))A F3 -.548(AU)72 470.4 S(THORS).548 E F0(Brian F)108 482.4 Q (ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 494.4 Q(g)-.18 E(Chet Rame)108 511.2 Q 1.3 -.65(y, C)-.15 H(ase W).65 E (estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E (chet.rame)108 523.2 Q(y@case.edu)-.15 E F3 -.11(BU)72 540 S 2.738(GR) .11 G(EPOR)-2.738 E(TS)-.438 E F0 .16(If you \214nd a b)108 552 R .16 (ug in the)-.2 F F2(history)2.66 E F0(library)2.66 E 2.66(,y)-.65 G .16 (ou should report it.)-2.66 F .16(But \214rst, you should mak)5.16 F 2.66(es)-.1 G .16(ure that it really is)-2.66 F 2.5(ab)108 564 S (ug, and that it appears in the latest v)-2.7 E(ersion of the)-.15 E F2 (history)2.5 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.).15 E .705 (Once you ha)108 580.8 R 1.005 -.15(ve d)-.2 H .705(etermined that a b) .15 F .704(ug actually e)-.2 F .704(xists, mail a b)-.15 F .704 (ug report to)-.2 F F1 -.2(bu)3.204 G(g\255r).2 E(eadline)-.37 E F0(@)A F1(gnu.or)A(g)-.37 E F0 5.704(.I)C 3.204(fy)-5.704 G(ou)-3.204 E(ha)108 592.8 Q 1.809 -.15(ve a \214)-.2 H 1.509 (x, you are welcome to mail that as well!).15 F 1.51 (Suggestions and `philosophical' b)6.51 F 1.51(ug reports may be)-.2 F (mailed to)108 604.8 Q F1 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F1 (gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2 (gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 621.6 Q (ug reports concerning this manual page should be directed to)-.2 E F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.).25 E (GNU History 6.3)72 768 Q(2017 October 8)133.735 E(7)197.895 E 0 Cg EP %%Trailer end %%EOF readline-8.0/doc/readline.info000664 000436 000000 00000706205 13406221745 016445 0ustar00chetwheel000000 000000 This is readline.info, produced by makeinfo version 6.5 from rlman.texi. This manual describes the GNU Readline Library (version 8.0, 30 November 2018), a library which aids in the consistency of user interface across discrete programs which provide a command line interface. Copyright (C) 1988-2016 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". INFO-DIR-SECTION Libraries START-INFO-DIR-ENTRY * Readline: (readline). The GNU readline library API. END-INFO-DIR-ENTRY  File: readline.info, Node: Top, Next: Command Line Editing, 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 which provide a command line interface. The Readline home page is . * Menu: * Command Line Editing:: GNU Readline User's Manual. * Programming with GNU Readline:: GNU Readline Programmer's Manual. * GNU Free Documentation License:: License for copying this 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 1 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 1.1 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 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 key is pressed. The Meta key is labeled on many keyboards. On keyboards with two keys labeled (usually to either side of the space bar), the on the left side is generally set to work as a Meta key. The key on the right may also be configured to work as a Meta key or may be configured as some other modifier, such as a Compose key for typing accented characters. If you do not have a Meta or key, or another key working as a Meta key, the identical keystroke can be generated by typing _first_, and then typing . Either process is known as "metafying" the 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, , , , , , and all stand for themselves when seen in this text, or in an init file (*note Readline Init File::). If your keyboard lacks a key, typing will produce the desired character. The key may be labeled or on some keyboards.  File: readline.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing 1.2 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 . You do not have to be at the end of the line to press ; 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 1.2.1 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 mistype a character, and not notice the 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 bare essentials for editing the text of an input line follows. 'C-b' Move back one character. 'C-f' Move forward one character. or 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-_' or 'C-x C-u' Undo the last editing command. You can undo all the way back to an empty line. (Depending on your configuration, the key be set to delete the character to the left of the cursor and the key set to delete the character underneath the cursor, like 'C-d', rather than the character to the left of the cursor.)  File: readline.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction 1.2.2 Readline Movement Commands -------------------------------- The above table describes the most basic 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 . 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, where a word is composed of letters and digits. '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 1.2.3 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. ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.) 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. Word boundaries are the same as those used by 'M-f'. 'M-' Kill from the cursor the start of the current word, or, if between words, to the start of the previous word. Word boundaries are the same as those used by 'M-b'. 'C-w' Kill from the cursor to the previous whitespace. This is different than 'M-' because the word boundaries differ. 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 1.2.4 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' typed 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', which will delete the next ten characters on the input line.  File: readline.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction 1.2.5 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. To search backward in the history for a particular string, type 'C-r'. Typing 'C-s' searches forward through the history. The characters present in the value of the 'isearch-terminators' variable are used to terminate an incremental search. If that variable has not been assigned a value, the and 'C-J' characters will terminate an incremental search. 'C-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 'C-r' or 'C-s' 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 will terminate the search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing. Readline remembers the last incremental search string. If two 'C-r's are typed without any intervening characters defining a new search string, any remembered search string is used. 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 be 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 1.3 Readline Init File ====================== Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by putting commands in an "inputrc" file, conventionally in his 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'. If that file does not exist or cannot be read, the ultimate default is '/etc/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 1.3.1 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 modify the run-time behavior of Readline by altering the values of variables in Readline using the 'set' command within the init file. The syntax is simple: set VARIABLE VALUE Here, for example, is how to change from the default Emacs-like key binding to use 'vi' line editing commands: set editing-mode vi Variable names and values, where appropriate, are recognized without regard to case. Unrecognized variable names are ignored. Boolean variables (those that can be set to on or off) are set to on if the value is null or empty, ON (case-insensitive), or 1. Any other value results in the variable being set to off. A great deal of run-time behavior is changeable with the following variables. '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. 'bind-tty-special-chars' If set to 'on' (the default), Readline attempts to bind the control characters treated specially by the kernel's terminal driver to their Readline equivalents. 'blink-matching-paren' If set to 'on', Readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. The default is 'off'. 'colored-completion-prefix' If set to 'on', when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the 'LS_COLORS' environment variable. The default is 'off'. 'colored-stats' If set to 'on', Readline displays possible completions using different colors to indicate their file type. The color definitions are taken from the value of the 'LS_COLORS' environment variable. The default is 'off'. 'comment-begin' The string to insert at the beginning of the line when the 'insert-comment' command is executed. The default value is '"#"'. 'completion-display-width' The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is -1. 'completion-ignore-case' If set to 'on', Readline performs filename matching and completion in a case-insensitive fashion. The default value is 'off'. 'completion-map-case' If set to 'on', and COMPLETION-IGNORE-CASE is enabled, Readline treats hyphens ('-') and underscores ('_') as equivalent when performing case-insensitive filename matching and completion. The default value is 'off'. 'completion-prefix-display-length' The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions. 'completion-query-items' The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. 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. This variable must be set to an integer value greater than or equal to 0. A negative value means Readline should never ask. The default limit is '100'. 'convert-meta' If set to 'on', Readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and prefixing an character, converting them to a meta-prefixed key sequence. The default value is 'on', but will be set to 'off' if the locale is one that contains eight-bit characters. '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'. 'echo-control-characters' When set to 'on', on operating systems that indicate they support it, readline echoes a character corresponding to a signal generated from the keyboard. The default is 'on'. 'editing-mode' The 'editing-mode' variable controls which default set of key bindings is used. 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'. 'emacs-mode-string' If the SHOW-MODE-IN-PROMPT variable is enabled, this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the '\1' and '\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is '@'. 'enable-bracketed-paste' When set to 'On', Readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a single string of characters, instead of treating each character as if it had been read from the keyboard. This can prevent pasted characters from being interpreted as editing commands. The default is 'off'. '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'. 'enable-meta-key' When set to 'on', Readline will try to enable any meta modifier key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. The default is 'on'. 'expand-tilde' If set to 'on', tilde expansion is performed when Readline attempts word completion. The default is 'off'. 'history-preserve-point' If set to 'on', the history code attempts to place the point (the current cursor position) at the same location on each history line retrieved with 'previous-history' or 'next-history'. The default is 'off'. 'history-size' Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. If an attempt is made to set HISTORY-SIZE to a non-numeric value, the maximum number of history entries will be set to 500. 'horizontal-scroll-mode' This variable can be set to either 'on' or 'off'. Setting it to 'on' means that the text of the lines being edited 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'. 'input-meta' If set to 'on', Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The default value is 'off', but Readline will set it to 'on' if the locale contains eight-bit characters. The name 'meta-flag' is a synonym for this variable. 'isearch-terminators' The string of characters that should terminate an incremental search without subsequently executing the character as a command (*note Searching::). If this variable has not been given a value, the characters and 'C-J' will terminate an incremental search. 'keymap' Sets Readline's idea of the current keymap for key binding commands. Built-in 'keymap' names are 'emacs', 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move', 'vi-command', and 'vi-insert'. 'vi' is equivalent to 'vi-command' ('vi-move' is also a synonym); 'emacs' is equivalent to 'emacs-standard'. Applications may add additional names. The default value is 'emacs'. The value of the 'editing-mode' variable also affects the default keymap. 'keyseq-timeout' Specifies the duration Readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, Readline will use the shorter but complete key sequence. Readline uses this value to determine whether or not input is available on the current input source ('rl_instream' by default). The value is specified in milliseconds, so a value of 1000 means that Readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, Readline will wait until another key is pressed to decide which key sequence to complete. The default value is '500'. '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', causes Readline to display an asterisk ('*') at the start of history lines which have been modified. This variable is 'off' by default. 'mark-symlinked-directories' If set to 'on', completed names which are symbolic links to directories have a slash appended (subject to the value of 'mark-directories'). The default is 'off'. 'match-hidden-files' This variable, when set to 'on', causes Readline to match files whose names begin with a '.' (hidden files) when performing filename completion. If set to 'off', the leading '.' must be supplied by the user in the filename to be completed. This variable is 'on' by default. 'menu-complete-display-prefix' If set to 'on', menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. The default is 'off'. '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', but Readline will set it to 'on' if the locale contains eight-bit characters. 'page-completions' If set to 'on', Readline uses an internal 'more'-like pager to display a screenful of possible completions at a time. This variable is 'on' by default. 'print-completions-horizontally' If set to 'on', Readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. The default is 'off'. 'revert-all-at-newline' If set to 'on', Readline will undo all changes to history lines before returning when 'accept-line' is executed. By default, history lines may be modified and retain individual undo lists across calls to 'readline'. 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'. 'show-all-if-unmodified' This alters the default behavior of the completion functions in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to 'on', words which have more than one possible completion without any possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. The default value is 'off'. 'show-mode-in-prompt' If set to 'on', add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable (e.g., EMACS-MODE-STRING). The default value is 'off'. 'skip-completed-text' If set to 'on', this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If enabled, readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. For instance, if this is enabled, attempting completion when the cursor is after the 'e' in 'Makefile' will result in 'Makefile' rather than 'Makefilefile', assuming there is a single possible completion. The default value is 'off'. 'vi-cmd-mode-string' If the SHOW-MODE-IN-PROMPT variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the '\1' and '\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is '(cmd)'. 'vi-ins-mode-string' If the SHOW-MODE-IN-PROMPT variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the '\1' and '\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is '(ins)'. '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 need to find the name of the command that you want to change. The following sections contain tables of the command name, the default keybinding, if any, and a short description of what the command does. Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, a colon, and then the name of the command. There can be no space between the key name and the colon - that will be interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a MACRO). 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 example above, 'C-u' is bound to the function 'universal-argument', 'M-DEL' is bound to the function 'backward-kill-word', 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). A number of symbolic character names are recognized while processing this key binding syntax: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB. "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 again 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 ' <[> <1> <1> <~>' is bound to insert the text 'Function Key 1'. The following GNU Emacs style escape sequences are available when specifying key sequences: '\C-' control prefix '\M-' meta prefix '\e' an escape character '\\' backslash '\"' <">, a double quotation mark '\'' <'>, a single quote or apostrophe In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available: '\a' alert (bell) '\b' backspace '\d' delete '\f' form feed '\n' newline '\r' carriage return '\t' horizontal tab '\v' vertical tab '\NNN' the eight-bit character whose value is the octal value NNN (one to three digits) '\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a function name. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other 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 1.3.2 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 four 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, after any comparison operator, extends to the end of the line; unless otherwise noted, 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 both 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. 'version' The 'version' test may be used to perform comparisons against specific Readline versions. The 'version' expands to the current Readline version. The set of comparison operators includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The version number supplied on the right side of the operator consists of a major version number, an optional decimal point, and an optional minor version (e.g., '7.1'). If the minor version is omitted, it is assumed to be '0'. The operator may be separated from the string 'version' and from the version number argument by whitespace. The following example sets a variable if the Readline version being used is 7.0 or newer: $if version >= 7.0 set show-mode-in-prompt on $endif '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 a particular value. 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 'variable' The VARIABLE construct provides simple equality tests for Readline variables and values. The permitted comparison operators are '=', '==', and '!='. The variable name must be separated from the comparison operator by whitespace; the operator may be separated from the value on the right hand side by whitespace. Both string and boolean variables may be tested. Boolean variables must be tested against the values ON and OFF. The following example is equivalent to the 'mode=emacs' test described above: $if editing-mode == emacs set show-mode-in-prompt on $endif '$endif' This command, as seen in the previous example, terminates an '$if' command. '$else' Commands in this branch of the '$if' directive are executed if the test fails. '$include' This directive takes a single filename as an argument and reads commands and bindings from that file. For example, the following directive reads from '/etc/inputrc': $include /etc/inputrc  File: readline.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File 1.3.3 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. # # First, include any system-wide bindings and variable # assignments from /etc/Inputrc $include /etc/Inputrc # # 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 1.4 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. Command names without an accompanying key sequence are unbound by default. In the following descriptions, "point" refers to the current cursor position, and "mark" refers to a cursor position saved by the 'set-mark' command. The text between the point and mark is referred to as the "region".  File: readline.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands 1.4.1 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 the current or previous word. Words are composed of letters and digits. 'previous-screen-line ()' Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width. 'next-screen-line ()' Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if the length of the current Readline line is not greater than the length of the prompt plus the screen width. '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 1.4.2 Commands For Manipulating The History ------------------------------------------- 'accept-line (Newline or Return)' Accept the line regardless of where the cursor is. If this line is non-empty, it may be added to the history list for future recall with 'add_history()'. If this line is a modified history line, the history line is restored to its original state. 'previous-history (C-p)' Move 'back' through the history list, fetching the previous command. 'next-history (C-n)' Move 'forward' through the history list, fetching the next command. '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 currently being entered. '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 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. The search string may match anywhere in a history line. 'non-incremental-forward-search-history (M-n)' Search forward starting at the current line and moving 'down' through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line. 'history-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. 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. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. 'history-substring-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. 'history-substring-search-backward ()' Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. 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) at point. 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. Once the argument N is computed, the argument is extracted as if the '!N' history expansion had been specified. 'yank-last-arg (M-. or M-_)' Insert last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly like 'yank-nth-arg'. Successive calls to 'yank-last-arg' move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, as if the '!$' history expansion had been specified.  File: readline.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands 1.4.3 Commands For Changing Text -------------------------------- 'end-of-file (usually C-d)' The character indicating end-of-file as set, for example, by 'stty'. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline interprets it as the end of input and returns EOF. 'delete-char (C-d)' Delete the character at point. If this function is bound to the same character as the tty EOF character, as 'C-d' commonly is, see above for the effects. 'backward-delete-char (Rubout)' Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them. 'forward-backward-delete-char ()' Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key. 'quoted-insert (C-q or C-v)' Add the next character typed to the line verbatim. This is how to insert key sequences like 'C-q', for example. 'tab-insert (M-)' Insert a tab character. 'self-insert (a, b, A, 1, !, ...)' Insert yourself. 'bracketed-paste-begin ()' This function is intended to be bound to the "bracketed paste" escape sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters are inserted as if each one was bound to 'self-insert' instead of executing any editing commands. '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 arguments have no effect. 'transpose-words (M-t)' Drag the word before point past the word after point, moving point past that word as well. If the insertion point is at the end of the line, this transposes the last two words on the line. 'upcase-word (M-u)' Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor. 'downcase-word (M-l)' Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor. 'capitalize-word (M-c)' Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor. 'overwrite-mode ()' Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only 'emacs' mode; 'vi' mode does overwrite differently. Each call to 'readline()' starts in insert mode. In overwrite mode, characters bound to 'self-insert' replace the text at point rather than pushing the text to the right. Characters bound to 'backward-delete-char' replace the character before point with a space. By default, this command is unbound.  File: readline.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands 1.4.4 Killing And Yanking ------------------------- 'kill-line (C-k)' Kill the text from point to the end of the line. 'backward-kill-line (C-x Rubout)' Kill backward from the cursor to the beginning of the current line. 'unix-line-discard (C-u)' Kill backward from the cursor to the beginning of the current line. 'kill-whole-line ()' Kill all characters on the current line, no matter where point is. By default, this is unbound. 'kill-word (M-d)' Kill from point 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-)' Kill the word behind point. Word boundaries are the same as 'backward-word'. 'unix-word-rubout (C-w)' Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. 'unix-filename-rubout ()' Kill the word behind point, using white space and the slash character as the word boundaries. 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 in the current region. By default, this command is unbound. 'copy-region-as-kill ()' Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound. 'copy-backward-word ()' Copy the word before point to the kill buffer. The word boundaries are the same as 'backward-word'. By default, this command is unbound. 'copy-forward-word ()' Copy the word following point to the kill buffer. The word boundaries are the same as 'forward-word'. By default, this command is unbound. 'yank (C-y)' Yank the top of the kill ring into the buffer at point. '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 1.4.5 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 nor 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 1.4.6 Letting Readline Type For You ----------------------------------- 'complete ()' Attempt to perform completion on the text before point. The actual completion performed is application-specific. The default is filename completion. 'possible-completions (M-?)' List the possible completions of the text before point. When displaying completions, Readline sets the number of columns used for display to the value of 'completion-display-width', the value of the environment variable 'COLUMNS', or the screen width, in that order. 'insert-completions (M-*)' Insert all completions of the text before point that would have been generated by 'possible-completions'. 'menu-complete ()' Similar to 'complete', but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of 'menu-complete' steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of 'bell-style') and the original text is restored. An argument of N moves N positions forward in the list of matches; a negative argument may be used to move backward through the list. This command is intended to be bound to , but is unbound by default. 'menu-complete-backward ()' Identical to 'menu-complete', but moves backward through the list of possible completions, as if 'menu-complete' had been given a negative argument. 'delete-char-or-list ()' Deletes the character under the cursor if not at the beginning or end of the line (like 'delete-char'). If at the end of the line, behaves identically to 'possible-completions'. This command is unbound by default.  File: readline.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands 1.4.7 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. 'print-last-kbd-macro ()' Print the last keboard macro defined in a format suitable for the INPUTRC file.  File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands 1.4.8 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-lowercase-version (M-A, M-B, M-X, ...)' If the metafied character X is upper case, run the command that is bound to the corresponding metafied lower case character. The behavior is undefined if X is already lower case. 'prefix-meta ()' Metafy the next character typed. This is for keyboards without a meta key. Typing ' f' is equivalent to typing 'M-f'. 'undo (C-_ or 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 executing 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 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. 'skip-csi-sequence ()' Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is bound to "\e[", keys producing such sequences will have no effect unless explicitly bound to a readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. 'insert-comment (M-#)' Without a numeric argument, the value of the 'comment-begin' variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value of 'comment-begin', the value is inserted, otherwise the characters in 'comment-begin' are deleted from the beginning of the line. In either case, 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 output. 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. 'emacs-editing-mode (C-e)' When in 'vi' command mode, this causes a switch to 'emacs' editing mode. 'vi-editing-mode (M-C-j)' When in 'emacs' editing mode, this causes a switch to 'vi' editing mode.  File: readline.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing 1.5 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 standard. In order to switch interactively between 'emacs' and 'vi' editing modes, use the command 'M-C-j' (bound to emacs-editing-mode when in 'vi' mode and to vi-editing-mode in 'emacs' 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 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 consistency of user interface across discrete programs that need to provide a command line interface. Copyright (C) 1988-2016 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: GNU Free Documentation License, Prev: Command Line Editing, Up: Top 2 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 functions. * Readline Signal Handling:: How Readline behaves when it receives signals. * Custom Completers:: Supplanting or supplementing Readline's completion functions.  File: readline.info, Node: Basic Behavior, Next: Custom Functions, Up: Programming with GNU Readline 2.1 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 PROMPT and then reads and returns a single line of text from the user. If PROMPT is 'NULL' or the empty string, no prompt is displayed. The line 'readline' returns is allocated with 'malloc()'; the caller should 'free()' the line when it has finished with it. The declaration for 'readline' in ANSI C is char *readline (const 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. Readline performs some expansion on the PROMPT before it is displayed on the screen. See the description of 'rl_expand_prompt' (*note Redisplay::) for additional details, especially if PROMPT will contain characters that do not consume physical screen space when displayed. If you want the user to be able to get at the line later, (with 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 completion: completion on file names. If you do not want Readline to complete on filenames, you can change the binding of the key with 'rl_bind_key()'. int rl_bind_key (int KEY, rl_command_func_t *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 to 'rl_insert()' makes 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 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 2.2 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. Before declaring any functions that customize Readline's behavior, or using any functionality Readline provides in other code, an application writer should include the file '' in any file that uses Readline's features. Since some of the definitions in 'readline.h' use the 'stdio' library, the file '' should be included before 'readline.h'. 'readline.h' defines a C preprocessor variable that should be treated as an integer, 'RL_READLINE_VERSION', which may be used to conditionally compile application code depending on the installed Readline version. The value is a hexadecimal encoding of the major and minor version numbers of the library, of the form 0xMMMM. MM is the two-digit major version number; MM is the two-digit minor version number. For Readline 4.2, for example, the value of 'RL_READLINE_VERSION' would be '0x0402'. * Menu: * Readline Typedefs:: C declarations to make code readable. * Function Writing:: Variables and calling conventions.  File: readline.info, Node: Readline Typedefs, Next: Function Writing, Up: Custom Functions 2.2.1 Readline Typedefs ----------------------- For readability, we declare a number of new object types, all pointers to functions. The reason for declaring these new types is to make it easier to write code describing pointers to C functions with appropriately prototyped arguments and return values. For instance, say we want to declare a variable FUNC as a pointer to a function which takes two 'int' arguments and returns an 'int' (this is the type of all of the Readline bindable functions). Instead of the classic C declaration 'int (*func)();' or the ANSI-C style declaration 'int (*func)(int, int);' we may write 'rl_command_func_t *func;' The full list of function pointer types available is 'typedef int rl_command_func_t (int, int);' 'typedef char *rl_compentry_func_t (const char *, int);' 'typedef char **rl_completion_func_t (const char *, int, int);' 'typedef char *rl_quote_func_t (char *, int, char *);' 'typedef char *rl_dequote_func_t (char *, int);' 'typedef int rl_compignore_func_t (char **);' 'typedef void rl_compdisp_func_t (char **, int, int);' 'typedef int rl_hook_func_t (void);' 'typedef int rl_getc_func_t (FILE *);' 'typedef int rl_linebuf_func_t (char *, int);' 'typedef int rl_intfunc_t (int);' '#define rl_ivoidfunc_t rl_hook_func_t' 'typedef int rl_icpfunc_t (char *);' 'typedef int rl_icppfunc_t (char **);' 'typedef void rl_voidfunc_t (void);' 'typedef void rl_vintfunc_t (int);' 'typedef void rl_vcpfunc_t (char *);' 'typedef void rl_vcppfunc_t (char **);'  File: readline.info, Node: Function Writing, Prev: Readline Typedefs, Up: Custom Functions 2.2.2 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 int 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. A command function should return 0 if its action completes successfully, and a value greater than zero if some error occurs. This is the convention obeyed by all of the builtin Readline bindable command functions.  File: readline.info, Node: Readline Variables, Next: Readline Convenience Functions, Prev: Custom Functions, Up: Programming with GNU Readline 2.3 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::. The function 'rl_extend_line_buffer' is available to increase the memory allocated to 'rl_line_buffer'. -- 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_num_chars_to_read Setting this to a positive value before calling 'readline()' causes Readline to return after accepting that many characters, rather than reading up to a character bound to 'accept-line'. -- 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: int rl_dispatching Set to a non-zero value if a function is being called from a key binding; zero otherwise. Application functions can test this to discover whether they were called directly or by Readline's dispatching mechanism. -- Variable: int rl_erase_empty_line Setting this to a non-zero value causes Readline to completely erase the current line, including any prompt, any time a newline is typed as the only character on an otherwise-empty line. The cursor is moved to the beginning of the newly-blank line. -- Variable: char * rl_prompt The prompt Readline uses. This is set from the argument to 'readline()', and should not be assigned to directly. The 'rl_set_prompt()' function (*note Redisplay::) may be used to modify the prompt string after calling 'readline()'. -- Variable: char * rl_display_prompt The string displayed as the prompt. This is usually identical to RL_PROMPT, but may be changed temporarily by functions that use the prompt string as a message area, such as incremental search. -- Variable: int rl_already_prompted If an application wishes to display the prompt itself, rather than have Readline do it the first time 'readline()' is called, it should set this variable to a non-zero value after displaying the prompt. The prompt must also be passed as the argument to 'readline()' so the redisplay functions can update the display properly. The calling application is responsible for managing the value; Readline never sets it. -- Variable: const char * rl_library_version The version number of this revision of the library. -- Variable: int rl_readline_version An integer encoding the current version of the library. The encoding is of the form 0xMMMM, where MM is the two-digit major version number, and MM is the two-digit minor version number. For example, for Readline-4.2, 'rl_readline_version' would have the value 0x0402. -- Variable: int rl_gnu_readline_p Always set to 1, denoting that this is GNU readline rather than some emulation. -- Variable: const char * rl_terminal_name The terminal type, used for initialization. If not set by the application, Readline sets this to the value of the 'TERM' environment variable the first time it is called. -- Variable: const 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. If 'NULL', Readline defaults to STDIN. -- Variable: FILE * rl_outstream The stdio stream to which Readline performs output. If 'NULL', Readline defaults to STDOUT. -- Variable: int rl_prefer_env_winsize If non-zero, Readline gives values found in the 'LINES' and 'COLUMNS' environment variables greater precedence than values fetched from the kernel when computing the screen dimensions. -- Variable: rl_command_func_t * rl_last_func The address of the last command function Readline executed. May be used to test whether or not a function is being executed twice in succession, for example. -- Variable: rl_hook_func_t * rl_startup_hook If non-zero, this is the address of a function to call just before 'readline' prints the first prompt. -- Variable: rl_hook_func_t * rl_pre_input_hook If non-zero, this is the address of a function to call after the first prompt has been printed and just before 'readline' starts reading input characters. -- Variable: rl_hook_func_t * rl_event_hook If non-zero, this is the address of a function to call periodically when Readline is waiting for terminal input. By default, this will be called at most ten times a second if there is no keyboard input. -- Variable: rl_getc_func_t * 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 Character Input::). In general, an application that sets RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK as well. -- Variable: rl_hook_func_t * rl_signal_event_hook If non-zero, this is the address of a function to call if a read system call is interrupted when Readline is reading terminal input. -- Variable: rl_hook_func_t * rl_input_available_hook If non-zero, Readline will use this function's return value when it needs to determine whether or not there is available input on the current input source. The default hook checks 'rl_instream'; if an application is using a different input source, it should set the hook appropriately. Readline queries for available input when implementing intra-key-sequence timeouts during input and incremental searches. This may use an application-specific timeout before returning a value; Readline uses the value passed to 'rl_set_keyboard_input_timeout()' or the value of the user-settable KEYSEQ-TIMEOUT variable. This is designed for use by applications using Readline's callback interface (*note Alternate Interface::), which may not use the traditional 'read(2)' and file descriptor interface, or other applications using a different input mechanism. If an application uses an input mechanism or hook that can potentially exceed the value of KEYSEQ-TIMEOUT, it should increase the timeout or set this hook appropriately even when not using the callback interface. In general, an application that sets RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK as well. -- Variable: rl_voidfunc_t * 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: rl_vintfunc_t * rl_prep_term_function If non-zero, Readline will call indirectly through this pointer to initialize the terminal. The function takes a single argument, an 'int' flag that says whether or not to use eight-bit characters. By default, this is set to 'rl_prep_terminal' (*note Terminal Management::). -- Variable: rl_voidfunc_t * rl_deprep_term_function If non-zero, Readline will call indirectly through this pointer to reset the terminal. This function should undo the effects of 'rl_prep_term_function'. By default, this is set to 'rl_deprep_terminal' (*note Terminal Management::). -- 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. -- Variable: char * rl_executing_macro This variable is set to the text of any currently-executing macro. -- Variable: int rl_executing_key The key that caused the dispatch to the currently-executing Readline function. -- Variable: char * rl_executing_keyseq The full key sequence that caused the dispatch to the currently-executing Readline function. -- Variable: int rl_key_sequence_length The number of characters in RL_EXECUTING_KEYSEQ. -- Variable: int rl_readline_state A variable with bit values that encapsulate the current Readline state. A bit is set with the 'RL_SETSTATE' macro, and unset with the 'RL_UNSETSTATE' macro. Use the 'RL_ISSTATE' macro to test whether a particular state bit is set. Current state bits include: 'RL_STATE_NONE' Readline has not yet been called, nor has it begun to initialize. 'RL_STATE_INITIALIZING' Readline is initializing its internal data structures. 'RL_STATE_INITIALIZED' Readline has completed its initialization. 'RL_STATE_TERMPREPPED' Readline has modified the terminal modes to do its own input and redisplay. 'RL_STATE_READCMD' Readline is reading a command from the keyboard. 'RL_STATE_METANEXT' Readline is reading more input after reading the meta-prefix character. 'RL_STATE_DISPATCHING' Readline is dispatching to a command. 'RL_STATE_MOREINPUT' Readline is reading more input while executing an editing command. 'RL_STATE_ISEARCH' Readline is performing an incremental history search. 'RL_STATE_NSEARCH' Readline is performing a non-incremental history search. 'RL_STATE_SEARCH' Readline is searching backward or forward through the history for a string. 'RL_STATE_NUMERICARG' Readline is reading a numeric argument. 'RL_STATE_MACROINPUT' Readline is currently getting its input from a previously-defined keyboard macro. 'RL_STATE_MACRODEF' Readline is currently reading characters defining a keyboard macro. 'RL_STATE_OVERWRITE' Readline is in overwrite mode. 'RL_STATE_COMPLETING' Readline is performing word completion. 'RL_STATE_SIGHANDLER' Readline is currently executing the readline signal handler. 'RL_STATE_UNDOING' Readline is performing an undo. 'RL_STATE_INPUTPENDING' Readline has input pending due to a call to 'rl_execute_next()'. 'RL_STATE_TTYCSAVED' Readline has saved the values of the terminal's special characters. 'RL_STATE_CALLBACK' Readline is currently using the alternate (callback) interface (*note Alternate Interface::). 'RL_STATE_VIMOTION' Readline is reading the argument to a vi-mode "motion" command. 'RL_STATE_MULTIKEY' Readline is reading a multiple-keystroke command. 'RL_STATE_VICMDONCE' Readline has entered vi command (movement) mode at least one time during the current call to 'readline()'. 'RL_STATE_DONE' Readline has read a key sequence bound to 'accept-line' and is about to return the line to the caller. -- Variable: int rl_explicit_arg Set to a non-zero value if an explicit numeric argument was specified by the user. Only valid in a bindable command function. -- Variable: int rl_numeric_arg Set to the value of any numeric argument explicitly specified by the user before executing the current Readline function. Only valid in a bindable command function. -- Variable: int rl_editing_mode Set to a value denoting Readline's current editing mode. A value of 1 means Readline is currently in emacs mode; 0 means that vi mode is active.  File: readline.info, Node: Readline Convenience Functions, Next: Readline Signal Handling, Prev: Readline Variables, Up: Programming with GNU Readline 2.4 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'. * Character Input:: Functions to read keyboard input. * Terminal Management:: Functions to manage terminal settings. * Utility Functions:: Generally useful functions and hooks. * Miscellaneous Functions:: Functions that don't fall into any category. * Alternate Interface:: Using Readline in a 'callback' fashion. * A Readline Example:: An example Readline function. * Alternate Interface Example:: An example program using the alternate interface.  File: readline.info, Node: Function Naming, Next: Keymaps, Up: Readline Convenience Functions 2.4.1 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 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 (const char *name, rl_command_func_t *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 2.4.2 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 (void) Returns a new, empty keymap. The space for the keymap is allocated with 'malloc()'; the caller should free it by calling 'rl_free_keymap()' when done. -- Function: Keymap rl_copy_keymap (Keymap map) Return a new keymap which is a copy of MAP. -- Function: Keymap rl_make_keymap (void) 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 the data in KEYMAP. The caller should free KEYMAP. -- Function: void rl_free_keymap (Keymap keymap) Free all storage associated with KEYMAP. This calls 'rl_discard_keymap' to free subordindate keymaps and macros. -- Function: int rl_empty_keymap (Keymap keymap) Return non-zero if there are no keys bound to functions in KEYMAP; zero if there are any keys bound. Readline has several internal keymaps. These functions allow you to change which keymap is active. -- Function: Keymap rl_get_keymap (void) 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 (const 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::). -- Function: int rl_set_keymap_name (const char *name, Keymap keymap) Set the name of KEYMAP. This name will then be "registered" and available for use in a 'set keymap' inputrc directive *note Readline Init File::). The NAME may not be one of Readline's builtin keymap names; you may not add a different name for one of Readline's builtin keymaps. You may replace the name associated with a given keymap by calling this function more than once with the same KEYMAP argument. You may associate a registered NAME with a new keymap by calling this function more than once with the same NAME argument. There is no way to remove a named keymap once the name has been registered. Readline will make a copy of NAME. The return value is greater than zero unless NAME is one of Readline's builtin keymap names or KEYMAP is one of Readline's builtin keymaps.  File: readline.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions 2.4.3 Binding Keys ------------------ Key sequences are associate 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. Since 'readline()' installs a set of default key bindings the first time it is called, there is always the danger that a custom binding installed before the first call to 'readline()' will be overridden. An alternate mechanism is to install custom key bindings in an initialization function assigned to the 'rl_startup_hook' variable (*note Readline Variables::). These functions manage key bindings. -- Function: int rl_bind_key (int key, rl_command_func_t *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, rl_command_func_t *function, Keymap map) Bind KEY to FUNCTION in MAP. Returns non-zero in the case of an invalid KEY. -- Function: int rl_bind_key_if_unbound (int key, rl_command_func_t *function) Binds KEY to FUNCTION if it is not already bound in the currently active keymap. Returns non-zero in the case of an invalid KEY or if KEY is already bound. -- Function: int rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *function, Keymap map) Binds KEY to FUNCTION if it is not already bound in MAP. Returns non-zero in the case of an invalid KEY or if KEY is already bound. -- 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_unbind_function_in_map (rl_command_func_t *function, Keymap map) Unbind all keys that execute FUNCTION in MAP. -- Function: int rl_unbind_command_in_map (const char *command, Keymap map) Unbind all keys that are bound to COMMAND in MAP. -- Function: int rl_bind_keyseq (const char *keyseq, rl_command_func_t *function) Bind the key sequence represented by the string KEYSEQ to the function FUNCTION, beginning in the current keymap. This makes new keymaps as necessary. The return value is non-zero if KEYSEQ is invalid. -- Function: int rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) Bind the key sequence represented by the string KEYSEQ to the function FUNCTION. This makes new keymaps as necessary. Initial bindings are performed in MAP. The return value is non-zero if KEYSEQ is invalid. -- Function: int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map) Equivalent to 'rl_bind_keyseq_in_map'. -- Function: int rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *function) Binds KEYSEQ to FUNCTION if it is not already bound in the currently active keymap. Returns non-zero in the case of an invalid KEYSEQ or if KEYSEQ is already bound. -- Function: int rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) Binds KEYSEQ to FUNCTION if it is not already bound in MAP. Returns non-zero in the case of an invalid KEYSEQ or if KEYSEQ is already bound. -- Function: int rl_generic_bind (int type, const 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 (const 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 2.4.4 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. You may also associate a new function name with an arbitrary function. -- Function: rl_command_func_t * rl_named_function (const char *name) Return the function with name NAME. -- Function: rl_command_func_t * rl_function_of_keyseq (const 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 the 'int' variable it points to (one of 'ISFUNC', 'ISKMAP', or 'ISMACR'). It takes a "translated" key sequence and should not be used if the key sequence can include NUL. -- Function: rl_command_func_t * rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type) Return the function invoked by KEYSEQ of length LEN in keymap MAP. Equivalent to 'rl_function_of_keyseq' with the addition of the LEN parameter. It takes a "translated" key sequence and should be used if the key sequence can include NUL. -- Function: char ** rl_invoking_keyseqs (rl_command_func_t *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 (rl_command_func_t *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 (void) Print the names of all bindable Readline functions to 'rl_outstream'. -- Function: const char ** rl_funmap_names (void) Return a NULL terminated array of known function names. The array is sorted. The array itself is allocated, but not the strings inside. You should free the array, but not the pointers, using 'free' or 'rl_free' when you are done. -- Function: int rl_add_funmap_entry (const char *name, rl_command_func_t *function) Add NAME to the list of bindable Readline command names, and make FUNCTION the function to be called when NAME is invoked.  File: readline.info, Node: Allowing Undoing, Next: Redisplay, Prev: Associating Function Names and Bindings, Up: Readline Convenience Functions 2.4.5 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. 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 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 (void) 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 (void) 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 rl_free_undo_list (void) Free the existing undo list. -- Function: int rl_do_undo (void) 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 2.4.6 Redisplay --------------- -- Function: void rl_redisplay (void) Change what's displayed on the screen to reflect the current contents of 'rl_line_buffer'. -- Function: int rl_forced_update_display (void) Force the line to be updated and redisplayed, whether or not Readline thinks the screen display is correct. -- Function: int rl_on_new_line (void) Tell the update functions that we have moved onto a new (empty) line, usually after outputting a newline. -- Function: int rl_on_new_line_with_prompt (void) Tell the update functions that we have moved onto a new line, with RL_PROMPT already displayed. This could be used by applications that want to output the prompt string themselves, but still need Readline to know the prompt string length for redisplay. It should be used after setting RL_ALREADY_PROMPTED. -- Function: int rl_clear_visible_line (void) Clear the screen lines corresponding to the current line's contents. -- Function: int rl_reset_line_state (void) Reset the display state to a clean state and redisplay the current line starting on a new line. -- Function: int rl_crlf (void) Move the cursor to the start of the next screen line. -- Function: int rl_show_char (int c) Display character C on 'rl_outstream'. If Readline has not been set to display meta characters directly, this will convert meta characters to a meta-prefixed key sequence. This is intended for use by applications which wish to do their own redisplay. -- Function: int rl_message (const char *, ...) The arguments are a format string as would be supplied to 'printf', possibly containing conversion specifications such as '%d', and any additional arguments necessary to satisfy the conversion specifications. The resulting string is displayed in the "echo area". The echo area is also used to display numeric arguments and search strings. You should call 'rl_save_prompt' to save the prompt information before calling this function. -- Function: int rl_clear_message (void) Clear the message in the echo area. If the prompt was saved with a call to 'rl_save_prompt' before the last call to 'rl_message', call 'rl_restore_prompt' before calling this function. -- Function: void rl_save_prompt (void) Save the local Readline prompt display state in preparation for displaying a new message in the message area with 'rl_message()'. -- Function: void rl_restore_prompt (void) Restore the local Readline prompt display state saved by the most recent call to 'rl_save_prompt'. if 'rl_save_prompt' was called to save the prompt before a call to 'rl_message', this function should be called before the corresponding call to 'rl_clear_message'. -- Function: int rl_expand_prompt (char *prompt) Expand any special character sequences in PROMPT and set up the local Readline prompt redisplay variables. This function is called by 'readline()'. It may also be called to expand the primary prompt if the 'rl_on_new_line_with_prompt()' function or 'rl_already_prompted' variable is used. It returns the number of visible characters on the last line of the (possibly multi-line) prompt. Applications may indicate that the prompt contains characters that take up no physical screen space when displayed by bracketing a sequence of such characters with the special markers 'RL_PROMPT_START_IGNORE' and 'RL_PROMPT_END_IGNORE' (declared in 'readline.h'). This may be used to embed terminal-specific escape sequences in prompts. -- Function: int rl_set_prompt (const char *prompt) Make Readline use PROMPT for subsequent redisplay. This calls 'rl_expand_prompt()' to expand the prompt and sets 'rl_prompt' to the result.  File: readline.info, Node: Modifying Text, Next: Character Input, Prev: Redisplay, Up: Readline Convenience Functions 2.4.7 Modifying Text -------------------- -- Function: int rl_insert_text (const char *text) Insert TEXT into the line at the current cursor position. Returns the number of characters inserted. -- Function: int rl_delete_text (int start, int end) Delete the text between START and END in the current line. Returns the number of characters deleted. -- 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. -- Function: int rl_push_macro_input (char *macro) Cause MACRO to be inserted into the line, as if it had been invoked by a key bound to a macro. Not especially useful; use 'rl_insert_text()' instead.  File: readline.info, Node: Character Input, Next: Terminal Management, Prev: Modifying Text, Up: Readline Convenience Functions 2.4.8 Character Input --------------------- -- Function: int rl_read_key (void) Return the next character available from Readline's current input stream. This handles input inserted into the input stream via RL_PENDING_INPUT (*note Readline Variables::) and 'rl_stuff_char()', macros, and characters read from the keyboard. While waiting for input, this function will call any function assigned to the 'rl_event_hook' variable. -- Function: int rl_getc (FILE *stream) Return the next character available from STREAM, which is assumed to be 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()'. Up to 512 characters may be pushed back. 'rl_stuff_char' returns 1 if the character was successfully inserted; 0 otherwise. -- Function: int rl_execute_next (int c) Make C be the next command to be executed when 'rl_read_key()' is called. This sets RL_PENDING_INPUT. -- Function: int rl_clear_pending_input (void) Unset RL_PENDING_INPUT, effectively negating the effect of any previous call to 'rl_execute_next()'. This works only if the pending input has not already been read with 'rl_read_key()'. -- Function: int rl_set_keyboard_input_timeout (int u) While waiting for keyboard input in 'rl_read_key()', Readline will wait for U microseconds for input before calling any function assigned to 'rl_event_hook'. U must be greater than or equal to zero (a zero-length timeout is equivalent to a poll). The default waiting period is one-tenth of a second. Returns the old timeout value.  File: readline.info, Node: Terminal Management, Next: Utility Functions, Prev: Character Input, Up: Readline Convenience Functions 2.4.9 Terminal Management ------------------------- -- Function: void rl_prep_terminal (int meta_flag) Modify the terminal settings for Readline's use, so 'readline()' can read a single character at a time from the keyboard. The META_FLAG argument should be non-zero if Readline should read eight-bit input. -- Function: void rl_deprep_terminal (void) Undo the effects of 'rl_prep_terminal()', leaving the terminal in the state in which it was before the most recent call to 'rl_prep_terminal()'. -- Function: void rl_tty_set_default_bindings (Keymap kmap) Read the operating system's terminal editing characters (as would be displayed by 'stty') to their Readline equivalents. The bindings are performed in KMAP. -- Function: void rl_tty_unset_default_bindings (Keymap kmap) Reset the bindings manipulated by 'rl_tty_set_default_bindings' so that the terminal editing characters are bound to 'rl_insert'. The bindings are performed in KMAP. -- Function: int rl_tty_set_echoing (int value) Set Readline's idea of whether or not it is echoing output to its output stream (RL_OUTSTREAM). If VALUE is 0, Readline does not display output to RL_OUTSTREAM; any other value enables output. The initial value is set when Readline initializes the terminal settings. This function returns the previous value. -- Function: int rl_reset_terminal (const char *terminal_name) Reinitialize Readline's idea of the terminal settings using TERMINAL_NAME as the terminal type (e.g., 'vt100'). If TERMINAL_NAME is 'NULL', the value of the 'TERM' environment variable is used.  File: readline.info, Node: Utility Functions, Next: Miscellaneous Functions, Prev: Terminal Management, Up: Readline Convenience Functions 2.4.10 Utility Functions ------------------------ -- Function: int rl_save_state (struct readline_state *sp) Save a snapshot of Readline's internal state to SP. The contents of the READLINE_STATE structure are documented in 'readline.h'. The caller is responsible for allocating the structure. -- Function: int rl_restore_state (struct readline_state *sp) Restore Readline's internal state to that stored in SP, which must have been saved by a call to 'rl_save_state'. The contents of the READLINE_STATE structure are documented in 'readline.h'. The caller is responsible for freeing the structure. -- Function: void rl_free (void *mem) Deallocate the memory pointed to by MEM. MEM must have been allocated by 'malloc'. -- Function: void rl_replace_line (const char *text, int clear_undo) Replace the contents of 'rl_line_buffer' with TEXT. The point and mark are preserved, if possible. If CLEAR_UNDO is non-zero, the undo list associated with the current line is cleared. -- Function: void 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 (void) Initialize or re-initialize Readline's internal state. It's not strictly necessary to call this; 'readline()' calls it before reading any input. -- Function: int rl_ding (void) Ring the terminal bell, obeying the setting of 'bell-style'. -- Function: int rl_alphabetic (int c) Return 1 if C is an alphabetic character. -- Function: void rl_display_match_list (char **matches, int len, int max) A convenience function for displaying a list of strings in columnar format on Readline's output stream. 'matches' is the list of strings, in argv format, such as a list of completion matches. 'len' is the number of strings in 'matches', and 'max' is the length of the longest string in 'matches'. This function uses the setting of 'print-completions-horizontally' to select how the matches are displayed (*note Readline Init File Syntax::). When displaying completions, this function sets the number of columns used for display to the value of 'completion-display-width', the value of the environment variable 'COLUMNS', or the screen width, in that order. The following are implemented as macros, defined in 'chardefs.h'. Applications should refrain from using them. -- Function: int _rl_uppercase_p (int c) Return 1 if C is an uppercase alphabetic character. -- Function: int _rl_lowercase_p (int c) Return 1 if C is a lowercase alphabetic character. -- Function: int _rl_digit_p (int c) Return 1 if C is a numeric character. -- Function: int _rl_to_upper (int c) If C is a lowercase alphabetic character, return the corresponding uppercase character. -- Function: int _rl_to_lower (int c) If C is an uppercase alphabetic character, return the corresponding lowercase character. -- Function: int _rl_digit_value (int c) If C is a number, return the value it represents.  File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface, Prev: Utility Functions, Up: Readline Convenience Functions 2.4.11 Miscellaneous Functions ------------------------------ -- Function: int rl_macro_bind (const char *keyseq, const char *macro, Keymap map) Bind the key sequence KEYSEQ to invoke the macro MACRO. The binding is performed in MAP. When KEYSEQ is invoked, the MACRO will be inserted into the line. This function is deprecated; use 'rl_generic_bind()' instead. -- Function: void rl_macro_dumper (int readable) Print the key sequences bound to macros and their values, using the current keymap, 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: int rl_variable_bind (const char *variable, const char *value) Make the Readline variable VARIABLE have VALUE. This behaves as if the readline command 'set VARIABLE VALUE' had been executed in an 'inputrc' file (*note Readline Init File Syntax::). -- Function: char * rl_variable_value (const char *variable) Return a string representing the value of the Readline variable VARIABLE. For boolean variables, this string is either 'on' or 'off'. -- Function: void rl_variable_dumper (int readable) Print the readline variable names and their current values 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: int rl_set_paren_blink_timeout (int u) Set the time interval (in microseconds) that Readline waits when showing a balancing character when 'blink-matching-paren' has been enabled. -- Function: char * rl_get_termcap (const char *cap) Retrieve the string value of the termcap capability CAP. Readline fetches the termcap entry for the current terminal name and uses those capabilities to move around the screen line and perform other terminal-specific operations, like erasing a line. Readline does not use all of a terminal's capabilities, and this function will return values for only those capabilities Readline uses. -- Function: void rl_clear_history (void) Clear the history list by deleting all of the entries, in the same manner as the History library's 'clear_history()' function. This differs from 'clear_history' because it frees private data Readline saves in the history list.  File: readline.info, Node: Alternate Interface, Next: A Readline Example, Prev: Miscellaneous Functions, Up: Readline Convenience Functions 2.4.12 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 accommodate 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 (const char *prompt, rl_vcpfunc_t *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 handler function to call when a complete line of input has been entered. The handler function receives the text of the line as an argument. As with 'readline()', the handler function should 'free' the line when it it finished with it. -- Function: void rl_callback_read_char (void) 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 installed by 'rl_callback_handler_install' to process the line. Before calling the LHANDLER function, the terminal settings are reset to the values they had before calling 'rl_callback_handler_install'. If the LHANDLER function returns, and the line handler remains installed, the terminal settings are modified for Readline's use again. 'EOF' is indicated by calling LHANDLER with a 'NULL' line. -- Function: void rl_callback_sigcleanup (void) Clean up any internal state the callback interface uses to maintain state between calls to rl_callback_read_char (e.g., the state of any active incremental searches). This is intended to be used by applications that wish to perform their own signal handling; Readline's internal signal handler calls this when appropriate. -- Function: void rl_callback_handler_remove (void) Restore the terminal to its initial state and remove the line handler. You may call this function from within a callback as well as independently. If the LHANDLER installed by 'rl_callback_handler_install' does not exit the program, either this function or the function referred to by the value of 'rl_deprep_term_function' should be called before the program exits to reset the terminal settings.  File: readline.info, Node: A Readline Example, Next: Alternate Interface Example, Prev: Alternate Interface, Up: Readline Convenience Functions 2.4.13 A Readline 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 (_rl_uppercase_p (rl_line_buffer[i])) rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]); else if (_rl_lowercase_p (rl_line_buffer[i])) rl_line_buffer[i] = _rl_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: Alternate Interface Example, Prev: A Readline Example, Up: Readline Convenience Functions 2.4.14 Alternate Interface Example ---------------------------------- Here is a complete program that illustrates Readline's alternate interface. It reads lines from the terminal and displays them, providing the standard history and TAB completion functions. It understands the EOF character or "exit" to exit the program. /* Standard include files. stdio.h is required. */ #include #include #include #include /* Used for select(2) */ #include #include #include #include /* Standard readline include files. */ #include #include static void cb_linehandler (char *); static void sighandler (int); int running; int sigwinch_received; const char *prompt = "rltest$ "; /* Handle SIGWINCH and window size changes when readline is not active and reading a character. */ static void sighandler (int sig) { sigwinch_received = 1; } /* Callback function called for each line when accept-line executed, EOF seen, or EOF character read. This sets a flag and returns; it could also call exit(3). */ static void cb_linehandler (char *line) { /* Can use ^D (stty eof) or `exit' to exit. */ if (line == NULL || strcmp (line, "exit") == 0) { if (line == 0) printf ("\n"); printf ("exit\n"); /* This function needs to be called to reset the terminal settings, and calling it from the line handler keeps one extra prompt from being displayed. */ rl_callback_handler_remove (); running = 0; } else { if (*line) add_history (line); printf ("input line: %s\n", line); free (line); } } int main (int c, char **v) { fd_set fds; int r; /* Set the default locale values according to environment variables. */ setlocale (LC_ALL, ""); /* Handle window size changes when readline is not active and reading characters. */ signal (SIGWINCH, sighandler); /* Install the line handler. */ rl_callback_handler_install (prompt, cb_linehandler); /* Enter a simple event loop. This waits until something is available to read on readline's input stream (defaults to standard input) and calls the builtin character read callback to read it. It does not have to modify the user's terminal settings. */ running = 1; while (running) { FD_ZERO (&fds); FD_SET (fileno (rl_instream), &fds); r = select (FD_SETSIZE, &fds, NULL, NULL, NULL); if (r < 0 && errno != EINTR) { perror ("rltest: select"); rl_callback_handler_remove (); break; } if (sigwinch_received) { rl_resize_terminal (); sigwinch_received = 0; } if (r < 0) continue; if (FD_ISSET (fileno (rl_instream), &fds)) rl_callback_read_char (); } printf ("rltest: Event loop has exited\n"); return 0; }  File: readline.info, Node: Readline Signal Handling, Next: Custom Completers, Prev: Readline Convenience Functions, Up: Programming with GNU Readline 2.5 Readline Signal Handling ============================ Signals are asynchronous events sent to a process by the Unix kernel, sometimes on behalf of another process. They are intended to indicate exceptional events, like a user pressing the interrupt key on his terminal, or a network connection being broken. There is a class of signals that can be sent to the process currently reading input from the keyboard. Since Readline changes the terminal attributes when it is called, it needs to perform special processing when such a signal is received in order to restore the terminal to a sane state, or provide application writers with functions to do so manually. Readline contains an internal signal handler that is installed for a number of signals ('SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP', 'SIGTTIN', and 'SIGTTOU'). When one of these signals is received, the signal handler will reset the terminal attributes to those that were in effect before 'readline()' was called, reset the signal handling to what it was before 'readline()' was called, and resend the signal to the calling application. If and when the calling application's signal handler returns, Readline will reinitialize the terminal and continue to accept input. When a 'SIGINT' is received, the Readline signal handler performs some additional work, which will cause any partially-entered line to be aborted (see the description of 'rl_free_line_state()' below). There is an additional Readline signal handler, for 'SIGWINCH', which the kernel sends to a process whenever the terminal's size changes (for example, if a user resizes an 'xterm'). The Readline 'SIGWINCH' handler updates Readline's internal screen size information, and then calls any 'SIGWINCH' signal handler the calling application has installed. Readline calls the application's 'SIGWINCH' signal handler without resetting the terminal to its original state. If the application's signal handler does more than update its idea of the terminal size and return (for example, a 'longjmp' back to a main processing loop), it _must_ call 'rl_cleanup_after_signal()' (described below), to restore the terminal state. When an application is using the callback interface (*note Alternate Interface::), Readline installs signal handlers only for the duration of the call to 'rl_callback_read_char'. Applications using the callback interface should be prepared to clean up Readline's state if they wish to handle the signal before the line handler completes and restores the terminal state. If an application using the callback interface wishes to have Readline install its signal handlers at the time the application calls 'rl_callback_handler_install' and remove them only when a complete line of input has been read, it should set the 'rl_persistent_signal_handlers' variable to a non-zero value. This allows an application to defer all of the handling of the signals Readline catches to Readline. Applications should use this variable with care; it can result in Readline catching signals and not acting on them (or allowing the application to react to them) until the application calls 'rl_callback_read_char'. This can result in an application becoming less responsive to keyboard signals like SIGINT. If an application does not want or need to perform any signal handling, or does not need to do any processing between calls to 'rl_callback_read_char', setting this variable may be desirable. Readline provides two variables that allow application writers to control whether or not it will catch certain signals and act on them when they are received. It is important that applications change the values of these variables only when calling 'readline()', not in a signal handler, so Readline's internal signal state is not corrupted. -- Variable: int rl_catch_signals If this variable is non-zero, Readline will install signal handlers for 'SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP', 'SIGTTIN', and 'SIGTTOU'. The default value of 'rl_catch_signals' is 1. -- Variable: int rl_catch_sigwinch If this variable is set to a non-zero value, Readline will install a signal handler for 'SIGWINCH'. The default value of 'rl_catch_sigwinch' is 1. -- Variable: int rl_persistent_signal_handlers If an application using the callback interface wishes Readline's signal handlers to be installed and active during the set of calls to 'rl_callback_read_char' that constitutes an entire single line, it should set this variable to a non-zero value. The default value of 'rl_persistent_signal_handlers' is 0. -- Variable: int rl_change_environment If this variable is set to a non-zero value, and Readline is handling 'SIGWINCH', Readline will modify the LINES and COLUMNS environment variables upon receipt of a 'SIGWINCH' The default value of 'rl_change_environment' is 1. If an application does not wish to have Readline catch any signals, or to handle signals other than those Readline catches ('SIGHUP', for example), Readline provides convenience functions to do the necessary terminal and internal state cleanup upon receipt of a signal. -- Function: int rl_pending_signal (void) Return the signal number of the most recent signal Readline received but has not yet handled, or 0 if there is no pending signal. -- Function: void rl_cleanup_after_signal (void) This function will reset the state of the terminal to what it was before 'readline()' was called, and remove the Readline signal handlers for all signals, depending on the values of 'rl_catch_signals' and 'rl_catch_sigwinch'. -- Function: void rl_free_line_state (void) This will free any partial state associated with the current input line (undo information, any partial history entry, any partially-entered keyboard macro, and any partially-entered numeric argument). This should be called before 'rl_cleanup_after_signal()'. The Readline signal handler for 'SIGINT' calls this to abort the current input line. -- Function: void rl_reset_after_signal (void) This will reinitialize the terminal and reinstall any Readline signal handlers, depending on the values of 'rl_catch_signals' and 'rl_catch_sigwinch'. If an application wants to force Readline to handle any signals that have arrived while it has been executing, 'rl_check_signals()' will call Readline's internal signal handler if there are any pending signals. This is primarily intended for those applications that use a custom 'rl_getc_function' (*note Readline Variables::) and wish to handle signals received while waiting for input. -- Function: void rl_check_signals (void) If there are any pending signals, call Readline's internal signal handling functions to process them. 'rl_pending_signal()' can be used independently to determine whether or not there are any pending signals. If an application does not wish Readline to catch 'SIGWINCH', it may call 'rl_resize_terminal()' or 'rl_set_screen_size()' to force Readline to update its idea of the terminal size when a 'SIGWINCH' is received. -- Function: void rl_echo_signal_char (int sig) If an application wishes to install its own signal handlers, but still have readline display characters that generate signals, calling this function with SIG set to 'SIGINT', 'SIGQUIT', or 'SIGTSTP' will display the character generating that signal. -- Function: void rl_resize_terminal (void) Update Readline's internal screen size by reading values from the kernel. -- Function: void rl_set_screen_size (int rows, int cols) Set Readline's idea of the terminal size to ROWS rows and COLS columns. If either ROWS or COLUMNS is less than or equal to 0, Readline's idea of that terminal dimension is unchanged. If an application does not want to install a 'SIGWINCH' handler, but is still interested in the screen dimensions, Readline's idea of the screen size may be queried. -- Function: void rl_get_screen_size (int *rows, int *cols) Return Readline's idea of the terminal's size in the variables pointed to by the arguments. -- Function: void rl_reset_screen_size (void) Cause Readline to reobtain the screen size and recalculate its dimensions. The following functions install and remove Readline's signal handlers. -- Function: int rl_set_signals (void) Install Readline's signal handler for 'SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP', 'SIGTTIN', 'SIGTTOU', and 'SIGWINCH', depending on the values of 'rl_catch_signals' and 'rl_catch_sigwinch'. -- Function: int rl_clear_signals (void) Remove all of the Readline signal handlers installed by 'rl_set_signals()'.  File: readline.info, Node: Custom Completers, Prev: Readline Signal Handling, Up: Programming with GNU Readline 2.6 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 2.6.1 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 bindable Readline functions: COUNT and INVOKING_KEY. It isolates the word to be completed and calls 'rl_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 'rl_completion_matches()' uses an application-supplied "generator" function to generate the list of possible matches, and then returns the array of these matches. The caller should place the address of its generator function in 'rl_completion_entry_function'. 3. The generator function is called repeatedly from 'rl_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. The generator function returns '(char *)NULL' to inform 'rl_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. Such a generator function is referred to as an "application-specific completion function". -- 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 'rl_completion_matches()'). The default is to do filename completion. -- Variable: rl_compentry_func_t * rl_completion_entry_function This is a pointer to the generator function for 'rl_completion_matches()'. If the value of 'rl_completion_entry_function' is 'NULL' then the default filename generator function, 'rl_filename_completion_function()', is used. An "application-specific completion function" is a function whose address is assigned to 'rl_completion_entry_function' and whose return values are used to generate possible completions.  File: readline.info, Node: Completion Functions, Next: Completion Variables, Prev: How Completing Works, Up: Custom Completers 2.6.2 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. '@' is similar to '!', but possible completions are not listed if the possible completions share a common prefix. -- 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 'rl_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: int rl_completion_mode (rl_command_func_t *cfunc) Returns the appropriate value to pass to 'rl_complete_internal()' depending on whether CFUNC was called twice in succession and the values of the 'show-all-if-ambiguous' and 'show-all-if-unmodified' variables. Application-specific completion functions may use this function to present the same interface as 'rl_complete()'. -- Function: char ** rl_completion_matches (const char *text, rl_compentry_func_t *entry_func) Returns an array of strings which is a list of completions for TEXT. If there are no completions, returns '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 * rl_filename_completion_function (const char *text, int state) A generator function for filename completion in the general case. TEXT is a partial filename. The Bash source is a useful reference for writing application-specific completion functions (the Bash completion functions call this and other Readline functions). -- Function: char * rl_username_completion_function (const 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 2.6.3 Completion Variables -------------------------- -- Variable: rl_compentry_func_t * rl_completion_entry_function A pointer to the generator function for 'rl_completion_matches()'. 'NULL' means to use 'rl_filename_completion_function()', the default filename completer. -- Variable: rl_completion_func_t * 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' defining the boundaries of TEXT, which is a character string. 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. If this function sets the 'rl_attempted_completion_over' variable to a non-zero value, Readline will not perform its default completion even if this function returns no matches. -- Variable: rl_quote_func_t * 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: rl_dequote_func_t * 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: rl_linebuf_func_t * 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: rl_compignore_func_t * 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: rl_icppfunc_t * rl_directory_completion_hook This function, if defined, is allowed to modify the directory portion of filenames Readline completes. It could be used to expand symbolic links or shell variables in pathnames. It is called with the address of a string (the current directory name) as an argument, and may modify that string. If the string is replaced with a new string, the old value should be freed. Any modified directory name should have a trailing slash. The modified value will be used as part of the completion, replacing the directory portion of the pathname the user typed. At the least, even if no other expansion is performed, this function should remove any quote characters from the directory name, because its result will be passed directly to 'opendir()'. The directory completion hook returns an integer that should be non-zero if the function modifies its directory argument. The function should not modify the directory argument if it returns 0. -- Variable: rl_icppfunc_t * rl_directory_rewrite_hook; If non-zero, this is the address of a function to call when completing a directory name. This function takes the address of the directory name to be modified as an argument. Unlike 'rl_directory_completion_hook', it only modifies the directory name used in 'opendir', not what is displayed when the possible completions are printed or inserted. It is called before rl_directory_completion_hook. At the least, even if no other expansion is performed, this function should remove any quote characters from the directory name, because its result will be passed directly to 'opendir()'. The directory rewrite hook returns an integer that should be non-zero if the function modfies its directory argument. The function should not modify the directory argument if it returns 0. -- Variable: rl_icppfunc_t * rl_filename_stat_hook If non-zero, this is the address of a function for the completer to call before deciding which character to append to a completed name. This function modifies its filename name argument, and the modified value is passed to 'stat()' to determine the file's type and characteristics. This function does not need to remove quote characters from the filename. The stat hook returns an integer that should be non-zero if the function modfies its directory argument. The function should not modify the directory argument if it returns 0. -- Variable: rl_dequote_func_t * rl_filename_rewrite_hook If non-zero, this is the address of a function called when reading directory entries from the filesystem for completion and comparing them to the partial word to be completed. The function should perform any necessary application or system-specific conversion on the filename, such as converting between character sets or converting from a filesystem format to a character input format. The function takes two arguments: FNAME, the filename to be converted, and FNLEN, its length in bytes. It must either return its first argument (if no conversion takes place) or the converted filename in newly-allocated memory. The converted form is used to compare against the word to be completed, and, if it matches, is added to the list of matches. Readline will free the allocated string. -- Variable: rl_compdisp_func_t * rl_completion_display_matches_hook If non-zero, then this is the address of a function to call when completing a word would normally display the list of possible matches. This function is called in lieu of Readline displaying the list. It takes three arguments: ('char **'MATCHES, 'int' NUM_MATCHES, 'int' MAX_LENGTH) where MATCHES is the array of matching strings, NUM_MATCHES is the number of strings in that array, and MAX_LENGTH is the length of the longest string in that array. Readline provides a convenience function, 'rl_display_match_list', that takes care of doing the display to Readline's output stream. You may call that function from this hook. -- Variable: const 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: '" \t\n\"\\'`@$><=;|&{("'. -- Variable: const char * rl_basic_quote_characters A list of quote characters which can cause a word break. -- Variable: const 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: rl_cpvfunc_t * rl_completion_word_break_hook If non-zero, this is the address of a function to call when Readline is deciding where to separate words for word completion. It should return a character string like 'rl_completer_word_break_characters' to be used to perform the current completion. The function may choose to set 'rl_completer_word_break_characters' itself. If the function returns 'NULL', 'rl_completer_word_break_characters' is used. -- Variable: const char * rl_completer_quote_characters 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 'rl_completer_word_break_characters' are treated as any other character, unless they also appear within this list. -- Variable: const 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 the null string. -- Variable: const 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_query_items Up to this many items will be displayed in response to a possible-completions call. After that, readline asks the user if she is sure she wants to see them all. The default value is 100. A negative value indicates that Readline should never ask the user. -- 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 application-specific completion functions to provide the "most sensible word separator character" according to an application-specific command line syntax specification. It is set to the default before any application-specific completion function is called, and may only be changed within such a function. -- Variable: int rl_completion_suppress_append If non-zero, RL_COMPLETION_APPEND_CHARACTER is not appended to matches at the end of the command line, as described above. It is set to 0 before any application-specific completion function is called, and may only be changed within such a function. -- Variable: int rl_completion_quote_character When Readline is completing quoted text, as delimited by one of the characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable to the quoting character found. This is set before any application-specific completion function is called. -- Variable: int rl_completion_suppress_quote If non-zero, Readline does not append a matching quote character when performing completion on a quoted string. It is set to 0 before any application-specific completion function is called, and may only be changed within such a function. -- Variable: int rl_completion_found_quote When Readline is completing quoted text, it sets this variable to a non-zero value if the word being completed contains or is delimited by any quoting characters, including backslashes. This is set before any application-specific completion function is called. -- Variable: int rl_completion_mark_symlink_dirs If non-zero, a slash will be appended to completed filenames that are symbolic links to directory names, subject to the value of the user-settable MARK-DIRECTORIES variable. This variable exists so that application-specific completion functions can override the user's global preference (set via the MARK-SYMLINKED-DIRECTORIES Readline variable) if appropriate. This variable is set to the user's preference before any application-specific completion function is called, so unless that function modifies the value, the user's preferences are honored. -- Variable: int rl_ignore_completion_duplicates If non-zero, then duplicates in the matches are removed. The 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 when completion is attempted, and can only be changed within an application-specific completion function. If it is set to a non-zero value by such a function, directory names have a slash appended and Readline attempts to quote completed filenames if they contain any characters in 'rl_filename_quote_characters' and 'rl_filename_quoting_desired' is set to a non-zero value. -- 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 when completion is attempted, and can only be changed within an application-specific completion function. The quoting is effected via a call to the function pointed to by 'rl_filename_quoting_function'. -- Variable: int rl_attempted_completion_over If an application-specific completion function assigned to 'rl_attempted_completion_function' sets this variable to a non-zero value, Readline will not perform its default filename completion even if the application's completion function returns no matches. It should be set only by an application's completion function. -- Variable: int rl_sort_completion_matches If an application sets this variable to 0, Readline will not sort the list of completions (which implies that it cannot remove any duplicate completions). The default value is 1, which means that Readline will sort the completions and, depending on the value of 'rl_ignore_completion_duplicates', will attempt to remove duplicate matches. -- Variable: int rl_completion_type Set to a character describing the type of completion Readline is currently attempting; see the description of 'rl_complete_internal()' (*note Completion Functions::) for the list of characters. This is set to the appropriate value before any application-specific completion function is called, allowing such functions to present the same interface as 'rl_complete()'. -- Variable: int rl_completion_invoking_key Set to the final character in the key sequence that invoked one of the completion functions that call 'rl_complete_internal()'. This is set to the appropriate value before any application-specific completion function is called. -- Variable: int rl_inhibit_completion If this variable is non-zero, completion is inhibited. The completion character will be inserted as any other bound to 'self-insert'.  File: readline.info, Node: A Short Completion Example, Prev: Completion Variables, Up: Custom Completers 2.6.4 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #ifdef HAVE_SYS_FILE_H # include #endif #include #ifdef HAVE_UNISTD_H # include #endif #include #include #include #if defined (HAVE_STRING_H) # include #else /* !HAVE_STRING_H */ # include #endif /* !HAVE_STRING_H */ #ifdef HAVE_STDLIB_H # include #endif #include #include #include extern char *xmalloc PARAMS((size_t)); /* The names of functions that actually do the manipulation. */ int com_list PARAMS((char *)); int com_view PARAMS((char *)); int com_rename PARAMS((char *)); int com_stat PARAMS((char *)); int com_pwd PARAMS((char *)); int com_delete PARAMS((char *)); int com_help PARAMS((char *)); int com_cd PARAMS((char *)); int com_quit PARAMS((char *)); /* A structure which contains information on the commands this program can understand. */ typedef struct { char *name; /* User printable name of the function. */ rl_icpfunc_t *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, (rl_icpfunc_t *)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) char *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 PARAMS((const char *, int)); char **fileman_completion PARAMS((const char *, int, int)); /* 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 = 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) const 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 = rl_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) const 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; #if defined (__MSDOS__) /* more.com doesn't grok slashes in pathnames */ sprintf (syscom, "less %s", arg); #else sprintf (syscom, "more %s", arg); #endif 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 = getcwd (dir, sizeof(dir) - 1); 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: GNU Free Documentation License, Next: Concept Index, Prev: Programming with GNU Readline, Up: Top Appendix A GNU Free Documentation License ***************************************** Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See . Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents ==================================================== To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.  File: readline.info, Node: Concept Index, Next: Function and Variable Index, Prev: GNU Free Documentation License, Up: Top Concept Index ************* [index] * Menu: * application-specific completion functions: Custom Completers. (line 6) * command editing: Readline Bare Essentials. (line 6) * editing command lines: Readline Bare Essentials. (line 6) * initialization file, readline: Readline Init File. (line 6) * interaction, readline: Readline Interaction. (line 6) * kill ring: Readline Killing Commands. (line 18) * killing text: Readline Killing Commands. (line 6) * notation, readline: Readline Bare Essentials. (line 6) * readline, function: Basic Behavior. (line 12) * variables, readline: Readline Init File Syntax. (line 34) * yanking text: Readline Killing Commands. (line 6)  File: readline.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top Function and Variable Index *************************** [index] * Menu: * _rl_digit_p: Utility Functions. (line 64) * _rl_digit_value: Utility Functions. (line 75) * _rl_lowercase_p: Utility Functions. (line 61) * _rl_to_lower: Utility Functions. (line 71) * _rl_to_upper: Utility Functions. (line 67) * _rl_uppercase_p: Utility Functions. (line 58) * abort (C-g): Miscellaneous Commands. (line 10) * accept-line (Newline or Return): Commands For History. (line 6) * backward-char (C-b): Commands For Moving. (line 15) * backward-delete-char (Rubout): Commands For Text. (line 17) * backward-kill-line (C-x Rubout): Commands For Killing. (line 9) * backward-kill-word (M-): Commands For Killing. (line 24) * backward-word (M-b): Commands For Moving. (line 22) * beginning-of-history (M-<): Commands For History. (line 19) * beginning-of-line (C-a): Commands For Moving. (line 6) * bell-style: Readline Init File Syntax. (line 35) * bind-tty-special-chars: Readline Init File Syntax. (line 42) * blink-matching-paren: Readline Init File Syntax. (line 47) * bracketed-paste-begin (): Commands For Text. (line 36) * call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) * capitalize-word (M-c): Commands For Text. (line 64) * character-search (C-]): Miscellaneous Commands. (line 42) * character-search-backward (M-C-]): Miscellaneous Commands. (line 47) * clear-screen (C-l): Commands For Moving. (line 40) * colored-completion-prefix: Readline Init File Syntax. (line 52) * colored-stats: Readline Init File Syntax. (line 59) * comment-begin: Readline Init File Syntax. (line 65) * complete (): Commands For Completion. (line 6) * completion-display-width: Readline Init File Syntax. (line 70) * completion-ignore-case: Readline Init File Syntax. (line 77) * completion-map-case: Readline Init File Syntax. (line 82) * completion-prefix-display-length: Readline Init File Syntax. (line 88) * completion-query-items: Readline Init File Syntax. (line 95) * convert-meta: Readline Init File Syntax. (line 105) * copy-backward-word (): Commands For Killing. (line 49) * copy-forward-word (): Commands For Killing. (line 54) * copy-region-as-kill (): Commands For Killing. (line 45) * delete-char (C-d): Commands For Text. (line 12) * delete-char-or-list (): Commands For Completion. (line 39) * delete-horizontal-space (): Commands For Killing. (line 37) * digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) * disable-completion: Readline Init File Syntax. (line 113) * do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands. (line 14) * downcase-word (M-l): Commands For Text. (line 60) * dump-functions (): Miscellaneous Commands. (line 70) * dump-macros (): Miscellaneous Commands. (line 82) * dump-variables (): Miscellaneous Commands. (line 76) * echo-control-characters: Readline Init File Syntax. (line 118) * editing-mode: Readline Init File Syntax. (line 123) * emacs-editing-mode (C-e): Miscellaneous Commands. (line 88) * emacs-mode-string: Readline Init File Syntax. (line 129) * enable-bracketed-paste: Readline Init File Syntax. (line 139) * enable-keypad: Readline Init File Syntax. (line 147) * end-kbd-macro (C-x )): Keyboard Macros. (line 9) * end-of-file (usually C-d): Commands For Text. (line 6) * end-of-history (M->): Commands For History. (line 22) * end-of-line (C-e): Commands For Moving. (line 9) * exchange-point-and-mark (C-x C-x): Miscellaneous Commands. (line 37) * expand-tilde: Readline Init File Syntax. (line 158) * forward-backward-delete-char (): Commands For Text. (line 21) * forward-char (C-f): Commands For Moving. (line 12) * forward-search-history (C-s): Commands For History. (line 30) * forward-word (M-f): Commands For Moving. (line 18) * history-preserve-point: Readline Init File Syntax. (line 162) * history-search-backward (): Commands For History. (line 52) * history-search-forward (): Commands For History. (line 46) * history-size: Readline Init File Syntax. (line 168) * history-substring-search-backward (): Commands For History. (line 64) * history-substring-search-forward (): Commands For History. (line 58) * horizontal-scroll-mode: Readline Init File Syntax. (line 177) * input-meta: Readline Init File Syntax. (line 184) * insert-comment (M-#): Miscellaneous Commands. (line 61) * insert-completions (M-*): Commands For Completion. (line 18) * isearch-terminators: Readline Init File Syntax. (line 192) * keymap: Readline Init File Syntax. (line 199) * kill-line (C-k): Commands For Killing. (line 6) * kill-region (): Commands For Killing. (line 41) * kill-whole-line (): Commands For Killing. (line 15) * kill-word (M-d): Commands For Killing. (line 19) * mark-modified-lines: Readline Init File Syntax. (line 229) * mark-symlinked-directories: Readline Init File Syntax. (line 234) * match-hidden-files: Readline Init File Syntax. (line 239) * menu-complete (): Commands For Completion. (line 22) * menu-complete-backward (): Commands For Completion. (line 34) * menu-complete-display-prefix: Readline Init File Syntax. (line 246) * meta-flag: Readline Init File Syntax. (line 184) * next-history (C-n): Commands For History. (line 16) * next-screen-line (): Commands For Moving. (line 33) * non-incremental-forward-search-history (M-n): Commands For History. (line 40) * non-incremental-reverse-search-history (M-p): Commands For History. (line 34) * output-meta: Readline Init File Syntax. (line 251) * overwrite-mode (): Commands For Text. (line 68) * page-completions: Readline Init File Syntax. (line 257) * possible-completions (M-?): Commands For Completion. (line 11) * prefix-meta (): Miscellaneous Commands. (line 19) * previous-history (C-p): Commands For History. (line 12) * previous-screen-line (): Commands For Moving. (line 26) * print-last-kbd-macro (): Keyboard Macros. (line 17) * quoted-insert (C-q or C-v): Commands For Text. (line 26) * re-read-init-file (C-x C-r): Miscellaneous Commands. (line 6) * readline: Basic Behavior. (line 12) * redraw-current-line (): Commands For Moving. (line 44) * reverse-search-history (C-r): Commands For History. (line 26) * revert-all-at-newline: Readline Init File Syntax. (line 267) * revert-line (M-r): Miscellaneous Commands. (line 26) * rl_add_defun: Function Naming. (line 18) * rl_add_funmap_entry: Associating Function Names and Bindings. (line 54) * rl_add_undo: Allowing Undoing. (line 39) * rl_alphabetic: Utility Functions. (line 38) * rl_already_prompted: Readline Variables. (line 63) * rl_attempted_completion_function: Completion Variables. (line 11) * rl_attempted_completion_over: Completion Variables. (line 255) * rl_basic_quote_characters: Completion Variables. (line 143) * rl_basic_word_break_characters: Completion Variables. (line 137) * rl_begin_undo_group: Allowing Undoing. (line 28) * rl_binding_keymap: Readline Variables. (line 184) * rl_bind_key: Binding Keys. (line 21) * rl_bind_keyseq: Binding Keys. (line 57) * rl_bind_keyseq_if_unbound: Binding Keys. (line 75) * rl_bind_keyseq_if_unbound_in_map: Binding Keys. (line 81) * rl_bind_keyseq_in_map: Binding Keys. (line 64) * rl_bind_key_if_unbound: Binding Keys. (line 30) * rl_bind_key_if_unbound_in_map: Binding Keys. (line 36) * rl_bind_key_in_map: Binding Keys. (line 25) * rl_callback_handler_install: Alternate Interface. (line 13) * rl_callback_handler_remove: Alternate Interface. (line 42) * rl_callback_read_char: Alternate Interface. (line 22) * rl_callback_sigcleanup: Alternate Interface. (line 35) * rl_catch_signals: Readline Signal Handling. (line 69) * rl_catch_sigwinch: Readline Signal Handling. (line 76) * rl_change_environment: Readline Signal Handling. (line 90) * rl_char_is_quoted_p: Completion Variables. (line 45) * rl_check_signals: Readline Signal Handling. (line 133) * rl_cleanup_after_signal: Readline Signal Handling. (line 107) * rl_clear_history: Miscellaneous Functions. (line 49) * rl_clear_message: Redisplay. (line 51) * rl_clear_pending_input: Character Input. (line 29) * rl_clear_signals: Readline Signal Handling. (line 179) * rl_clear_visible_line: Redisplay. (line 25) * rl_complete: How Completing Works. (line 46) * rl_complete <1>: Completion Functions. (line 19) * rl_completer_quote_characters: Completion Variables. (line 160) * rl_completer_word_break_characters: Completion Variables. (line 146) * rl_complete_internal: Completion Functions. (line 9) * rl_completion_append_character: Completion Variables. (line 184) * rl_completion_display_matches_hook: Completion Variables. (line 124) * rl_completion_entry_function: How Completing Works. (line 52) * rl_completion_entry_function <1>: Completion Variables. (line 6) * rl_completion_found_quote: Completion Variables. (line 214) * rl_completion_invoking_key: Completion Variables. (line 278) * rl_completion_mark_symlink_dirs: Completion Variables. (line 220) * rl_completion_matches: Completion Functions. (line 43) * rl_completion_mode: Completion Functions. (line 36) * rl_completion_query_items: Completion Variables. (line 178) * rl_completion_quote_character: Completion Variables. (line 202) * rl_completion_suppress_append: Completion Variables. (line 196) * rl_completion_suppress_quote: Completion Variables. (line 208) * rl_completion_type: Completion Variables. (line 270) * rl_completion_word_break_hook: Completion Variables. (line 151) * rl_copy_keymap: Keymaps. (line 16) * rl_copy_text: Modifying Text. (line 14) * rl_crlf: Redisplay. (line 33) * rl_delete_text: Modifying Text. (line 10) * rl_deprep_terminal: Terminal Management. (line 12) * rl_deprep_term_function: Readline Variables. (line 174) * rl_ding: Utility Functions. (line 35) * rl_directory_completion_hook: Completion Variables. (line 63) * rl_directory_rewrite_hook;: Completion Variables. (line 81) * rl_discard_keymap: Keymaps. (line 25) * rl_dispatching: Readline Variables. (line 40) * rl_display_match_list: Utility Functions. (line 41) * rl_display_prompt: Readline Variables. (line 58) * rl_done: Readline Variables. (line 27) * rl_do_undo: Allowing Undoing. (line 47) * rl_echo_signal_char: Readline Signal Handling. (line 143) * rl_editing_mode: Readline Variables. (line 281) * rl_empty_keymap: Keymaps. (line 33) * rl_end: Readline Variables. (line 18) * rl_end_undo_group: Allowing Undoing. (line 34) * rl_erase_empty_line: Readline Variables. (line 46) * rl_event_hook: Readline Variables. (line 123) * rl_execute_next: Character Input. (line 25) * rl_executing_key: Readline Variables. (line 191) * rl_executing_keymap: Readline Variables. (line 180) * rl_executing_keyseq: Readline Variables. (line 195) * rl_executing_macro: Readline Variables. (line 188) * rl_expand_prompt: Redisplay. (line 66) * rl_explicit_arg: Readline Variables. (line 272) * rl_extend_line_buffer: Utility Functions. (line 26) * rl_filename_completion_desired: Completion Variables. (line 235) * rl_filename_completion_function: Completion Functions. (line 57) * rl_filename_dequoting_function: Completion Variables. (line 36) * rl_filename_quote_characters: Completion Variables. (line 166) * rl_filename_quoting_desired: Completion Variables. (line 245) * rl_filename_quoting_function: Completion Variables. (line 23) * rl_filename_rewrite_hook: Completion Variables. (line 109) * rl_filename_stat_hook: Completion Variables. (line 97) * rl_forced_update_display: Redisplay. (line 10) * rl_free: Utility Functions. (line 17) * rl_free_keymap: Keymaps. (line 29) * rl_free_line_state: Readline Signal Handling. (line 113) * rl_free_undo_list: Allowing Undoing. (line 44) * rl_function_dumper: Associating Function Names and Bindings. (line 38) * rl_function_of_keyseq: Associating Function Names and Bindings. (line 13) * rl_function_of_keyseq_len: Associating Function Names and Bindings. (line 22) * rl_funmap_names: Associating Function Names and Bindings. (line 48) * rl_generic_bind: Binding Keys. (line 87) * rl_getc: Character Input. (line 14) * rl_getc_function: Readline Variables. (line 128) * rl_get_keymap: Keymaps. (line 40) * rl_get_keymap_by_name: Keymaps. (line 46) * rl_get_keymap_name: Keymaps. (line 51) * rl_get_screen_size: Readline Signal Handling. (line 162) * rl_get_termcap: Miscellaneous Functions. (line 41) * rl_gnu_readline_p: Readline Variables. (line 82) * rl_ignore_completion_duplicates: Completion Variables. (line 231) * rl_ignore_some_completions_function: Completion Variables. (line 55) * rl_inhibit_completion: Completion Variables. (line 284) * rl_initialize: Utility Functions. (line 30) * rl_input_available_hook: Readline Variables. (line 140) * rl_insert_completions: Completion Functions. (line 31) * rl_insert_text: Modifying Text. (line 6) * rl_instream: Readline Variables. (line 96) * rl_invoking_keyseqs: Associating Function Names and Bindings. (line 29) * rl_invoking_keyseqs_in_map: Associating Function Names and Bindings. (line 33) * rl_key_sequence_length: Readline Variables. (line 199) * rl_kill_text: Modifying Text. (line 18) * rl_last_func: Readline Variables. (line 109) * rl_library_version: Readline Variables. (line 72) * rl_line_buffer: Readline Variables. (line 8) * rl_list_funmap_names: Associating Function Names and Bindings. (line 44) * rl_macro_bind: Miscellaneous Functions. (line 6) * rl_macro_dumper: Miscellaneous Functions. (line 13) * rl_make_bare_keymap: Keymaps. (line 11) * rl_make_keymap: Keymaps. (line 19) * rl_mark: Readline Variables. (line 23) * rl_message: Redisplay. (line 42) * rl_modifying: Allowing Undoing. (line 56) * rl_named_function: Associating Function Names and Bindings. (line 10) * rl_numeric_arg: Readline Variables. (line 276) * rl_num_chars_to_read: Readline Variables. (line 31) * rl_on_new_line: Redisplay. (line 14) * rl_on_new_line_with_prompt: Redisplay. (line 18) * rl_outstream: Readline Variables. (line 100) * rl_parse_and_bind: Binding Keys. (line 95) * rl_pending_input: Readline Variables. (line 36) * rl_pending_signal: Readline Signal Handling. (line 102) * rl_persistent_signal_handlers: Readline Signal Handling. (line 82) * rl_point: Readline Variables. (line 14) * rl_possible_completions: Completion Functions. (line 27) * rl_prefer_env_winsize: Readline Variables. (line 104) * rl_prep_terminal: Terminal Management. (line 6) * rl_prep_term_function: Readline Variables. (line 167) * rl_pre_input_hook: Readline Variables. (line 118) * rl_prompt: Readline Variables. (line 52) * rl_push_macro_input: Modifying Text. (line 25) * rl_readline_name: Readline Variables. (line 91) * rl_readline_state: Readline Variables. (line 202) * rl_readline_version: Readline Variables. (line 75) * rl_read_init_file: Binding Keys. (line 100) * rl_read_key: Character Input. (line 6) * rl_redisplay: Redisplay. (line 6) * rl_redisplay_function: Readline Variables. (line 161) * rl_replace_line: Utility Functions. (line 21) * rl_reset_after_signal: Readline Signal Handling. (line 121) * rl_reset_line_state: Redisplay. (line 29) * rl_reset_screen_size: Readline Signal Handling. (line 166) * rl_reset_terminal: Terminal Management. (line 34) * rl_resize_terminal: Readline Signal Handling. (line 149) * rl_restore_prompt: Redisplay. (line 60) * rl_restore_state: Utility Functions. (line 11) * rl_save_prompt: Redisplay. (line 56) * rl_save_state: Utility Functions. (line 6) * rl_set_key: Binding Keys. (line 71) * rl_set_keyboard_input_timeout: Character Input. (line 34) * rl_set_keymap: Keymaps. (line 43) * rl_set_keymap_name: Keymaps. (line 56) * rl_set_paren_blink_timeout: Miscellaneous Functions. (line 36) * rl_set_prompt: Redisplay. (line 80) * rl_set_screen_size: Readline Signal Handling. (line 153) * rl_set_signals: Readline Signal Handling. (line 173) * rl_show_char: Redisplay. (line 36) * rl_signal_event_hook: Readline Variables. (line 136) * rl_sort_completion_matches: Completion Variables. (line 262) * rl_special_prefixes: Completion Variables. (line 171) * rl_startup_hook: Readline Variables. (line 114) * rl_stuff_char: Character Input. (line 18) * rl_terminal_name: Readline Variables. (line 86) * rl_tty_set_default_bindings: Terminal Management. (line 17) * rl_tty_set_echoing: Terminal Management. (line 27) * rl_tty_unset_default_bindings: Terminal Management. (line 22) * rl_unbind_command_in_map: Binding Keys. (line 53) * rl_unbind_function_in_map: Binding Keys. (line 49) * rl_unbind_key: Binding Keys. (line 41) * rl_unbind_key_in_map: Binding Keys. (line 45) * rl_username_completion_function: Completion Functions. (line 64) * rl_variable_bind: Miscellaneous Functions. (line 19) * rl_variable_dumper: Miscellaneous Functions. (line 30) * rl_variable_value: Miscellaneous Functions. (line 25) * self-insert (a, b, A, 1, !, ...): Commands For Text. (line 33) * set-mark (C-@): Miscellaneous Commands. (line 33) * show-all-if-ambiguous: Readline Init File Syntax. (line 273) * show-all-if-unmodified: Readline Init File Syntax. (line 279) * show-mode-in-prompt: Readline Init File Syntax. (line 288) * skip-completed-text: Readline Init File Syntax. (line 294) * skip-csi-sequence (): Miscellaneous Commands. (line 52) * start-kbd-macro (C-x (): Keyboard Macros. (line 6) * tab-insert (M-): Commands For Text. (line 30) * tilde-expand (M-~): Miscellaneous Commands. (line 30) * transpose-chars (C-t): Commands For Text. (line 45) * transpose-words (M-t): Commands For Text. (line 51) * undo (C-_ or C-x C-u): Miscellaneous Commands. (line 23) * universal-argument (): Numeric Arguments. (line 10) * unix-filename-rubout (): Commands For Killing. (line 32) * unix-line-discard (C-u): Commands For Killing. (line 12) * unix-word-rubout (C-w): Commands For Killing. (line 28) * upcase-word (M-u): Commands For Text. (line 56) * vi-cmd-mode-string: Readline Init File Syntax. (line 307) * vi-editing-mode (M-C-j): Miscellaneous Commands. (line 92) * vi-ins-mode-string: Readline Init File Syntax. (line 318) * visible-stats: Readline Init File Syntax. (line 329) * yank (C-y): Commands For Killing. (line 59) * yank-last-arg (M-. or M-_): Commands For History. (line 79) * yank-nth-arg (M-C-y): Commands For History. (line 70) * yank-pop (M-y): Commands For Killing. (line 62)  Tag Table: Node: Top865 Node: Command Line Editing1590 Node: Introduction and Notation2242 Node: Readline Interaction3866 Node: Readline Bare Essentials5058 Node: Readline Movement Commands6842 Node: Readline Killing Commands7803 Node: Readline Arguments9722 Node: Searching10767 Node: Readline Init File12920 Node: Readline Init File Syntax14074 Node: Conditional Init Constructs34233 Node: Sample Init File38430 Node: Bindable Readline Commands41548 Node: Commands For Moving42603 Node: Commands For History44170 Node: Commands For Text48435 Node: Commands For Killing51877 Node: Numeric Arguments54044 Node: Commands For Completion55184 Node: Keyboard Macros57153 Node: Miscellaneous Commands57841 Node: Readline vi Mode61763 Node: Programming with GNU Readline63580 Node: Basic Behavior64566 Node: Custom Functions68249 Node: Readline Typedefs69732 Node: Function Writing71366 Node: Readline Variables72680 Node: Readline Convenience Functions85352 Node: Function Naming86424 Node: Keymaps87686 Node: Binding Keys90765 Node: Associating Function Names and Bindings95313 Node: Allowing Undoing98092 Node: Redisplay100642 Node: Modifying Text104666 Node: Character Input105913 Node: Terminal Management107811 Node: Utility Functions109634 Node: Miscellaneous Functions112962 Node: Alternate Interface115551 Node: A Readline Example118293 Node: Alternate Interface Example120232 Node: Readline Signal Handling123764 Node: Custom Completers132813 Node: How Completing Works133533 Node: Completion Functions136840 Node: Completion Variables140414 Node: A Short Completion Example156205 Node: GNU Free Documentation License168984 Node: Concept Index194158 Node: Function and Variable Index195679  End Tag Table readline-8.0/doc/readline.pdf000664 000436 000000 00001404270 13406221747 016263 0ustar00chetwheel000000 000000 %PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 402 /Filter /FlateDecode >> stream xÚ’]Kå0†ïû+r™ÀiÌdš¯[EA­z±xQ÷äìö´lÎñëß;iz–""K!Iç}ŸÉ4À=À‚bQ†Æ³ŸÛJM»é+ÁÍys]ƒšÞß–Ô¹¦†ÿ0«‰Z;=ù·ÕÑ™³L+i7¬Ý䞌é¼gíšýàçWw¢FgøMìÖú!–ì²J]zíEuÚVÿÙg}¤Wph#wF}‘}ŠlS]ª1 ” *@¦ê`¥ÓžôR7…|ºî÷ý8‘{©V%ÚŒ)SÉÁ.œ%!nÒ.š%É¢ÙÏà€üAu/<ò˜vKªÌ*𬓠½µ JùÕ(´ç/y‰[¡5­žŠVà –¦ ÄÆêŒ­ÑxiÑR@'oœ.Ž'¿ã~žv·ï"4|Uò“n7OþAjr'€ïgðaå|úÓ‹@à³änèKJGÛç`º+º?N}7eò˜+ßV‹gÃÛq3ù¼æ¥Kq©zÖÝôß¾º hހ˫2<\È· endstream endobj 14 0 obj << /Length 757 /Filter /FlateDecode >> stream xÚ}TKOÜ0¾ï¯ˆzòJ$رóRO…D…ª ¶½”Bâ%Vó@v¶tÕ?ßa¥ÕJ;öø›÷7‡Ÿˆ*R&•*£fXq¯µw®ÎW"à”LAþgiÅ o'›ÕñY–E‚'¯D´Ùb8QñD–y´i£olÓ·ŽÓL°¡×iÁvuO÷V»Æš[¸”LÌÜi<¤ìüÓÒ\éºíÍÔ—€ÌÖvO÷žñŸkt`™F2)~§¼d’ìÓ„ø¢ZzN¹(Á“ðV«IÛ›[èûæ#T ™ˆLPQiÐM·Ž•ä¬6­£“Iú:”¬™FgܬÇfO/Ó–äÎaô`®fm·u£ƒÃÆNΑ‡Ö@›ô^îítgë!„{‘<ú:MûèçYò”{3 0‰vK)uVJõ<‹äÉ.O„"»Óé{kî:õ˜L%i!#xZÿ¨?>ËÕ’±L¸-p7\d}N ¡’LåÜ£DU–¿a>9å{¶.%³ZÓízÚΘÊòª¶z™vc[Ï@‰#R^Œ Ë<ŸTš ¹|& Æ¥ÐGÚíy;ë–óD² ÁpÈ•á¬f ô§…èóñdébõk<„q!Ò¢ô¼J‹"l(hƒàýPÔ3¼½Ëw‰Þ.M£G§±˜²b_Ѭ`ßBWÀ½HdˆgIÖ#5Á¿öõ¬ƒ~¹•¯d~¿»íë°§ªâ°äDUá€ÊðQ½vIÃF­/îiØo×q–WìÁ̹'‚]ŒôÈ20…/ˆ 3%ÔµnÐÚAá™ôF¯ %3QÏâÓÅ –¢`è_3z‘)g´cð€9 <©ý®þ8Á8?'¸¸{G&Oó71Jß <ô4/º ™¼›~×Bc_é:~žpÈl½£ÊIaæ^‡ÏÃÊó±áí_> stream xÚíœ]sÛ¸†ïó+t)]%¾H wv&Ù¶»Ét6N;N/¸ms*QJNâ_Äe>YÛuÖÖì…å,Þï#ààðxV¨ÿðL³ŠR$™˜-7o ýi9ßüúÓlâNTàIyvþæOï9ŸáÉBâÙùÅŒcdå†;_Íþ=oÿ9ÿÛ›wçnNPpˆ¼£X•3\!‚9Õ¿© aÊFµó…dóú·u³8¡Ÿo/Æ×·ÛnAñ|ߌ/»áß4Åe%†RߎT02Ž„'“áÝlên5ŽóKÛ™‘ß­Ú}Û]Žá‚„#aIÀL¨Gú³©¬Æ—rò§~ø¨ƒ /N15LMR9Ì‹$÷¸e£O‚p瘟œÃAÍdJóqÆ¡Ò&úŽôO\0…›•„£’b0œ.Šbþ×nAÄ|ßo'êuu³Ü· ›Jé|¿_ÿ”Mý/éD¦¤ˆ0ü;ítSŸIáKl4ÔÌý},1c¨z8h’%¨¬Š¼GÒ1„ âµ ÃЯM½ZH¨%Jý Ïûž×ËáݾUoY1tC„”¯G[¾ Æ*(r><‡ÜÄÿ(r0Y\Vc‰„3.%¢œ8äÜÂ5…î¬îíµÛ5#m½ÞEyã¼z­¼%€± &Ï3u/ Pv&/é€%"EL|•ú°ù² Õ¼Ù`Æ¿1¹O5¸Úi1ÇyFœR ˜ „‚àÃs „®(0Y BVÒP ?sìA Q~n×ë!§qÞ»UÝ©Ý*@)ÕËÀÓ/f^¡|øð¡Yq>`²š¬¤ãƒK$=,JÇiyc—‡8꤆ÕI혼€×=ïPzlpŽo$’ÔÜdÄ5¬D÷ØpƒÍ§¦î—&Wn1¹ØöcJâvýqkWW&cùK»ÛoûÛ]D¥åü‡KURÆŽSuÖEç¬ f;î-HS››Ó³®~Í*ͰöÒħÝνo×jŸh¢ë‚zOÙkØ&ž¯Pc1žA¹óá9ðBX”<˜¬F/+éVR f ˆŠ½ÄI'¤OÁ·6‹È§Ûq“ª¿Å<*o-_ß;…Œ™j(2><‡Lè_˜¬F&+é)*Dd€Œ=ë¼ÝvC©nÛÕë)5CŠÛíöýÍ2‘ΔÂ’¾äeëÐ*Ñðåí\Þcމ> ÂcL :ÏkaºЬ¦…‚I¦2ÒÊCaw±Oõæz\E¢{˜Z„Š—rÜ}úÁdYC€dᲦ.Gs# î@V^ÓfGL¨Ïdiɲ'¦³¶[™«OЬp·bùbJ…Qõš.¤ø0Ó åÃ‡çø˜xUFù€éj>²šnåQ›‡`ž—ÁL@ï‚Îdz‘«Ã¥®*±Jí­äXªcæ ŒÏ31/ LW“ÕtÀp†JÉ=0Lݵ×7ëzïÎÙçƒ4ˆÉçH€Sš¯õЇç<œÌgõ¦«=Ìj:V?Qæ=¤÷{øöªî.½Ã_5ßöñ‚;A„ʲ¤X0SeÁ‡çX˜ø"¢,Àt5 YMLjʀ›"LŠì§º±D½ù×`|Ýý7µø«csIéëXü¸š˜‰‡äÃsMÜ”Q‚`ºš ¬¦#sDõ¹úêµnPi–íÅ­#éãͦéÛ%´T/ÔØ…ø£ŸmS˜™ƒ"àÃs„v"ŠLW#Õta”B 4üÒìý¦?=fœ®ßD"Ž^i¶7)*ãôU&EEj%sT¹V²ÃAG*¢—õºšŠ¬¦¥‚ ¡Î •ÝZšÛß´ïÛº_ÙqÙoãK€Hy¬hüNœ¬ @œ‚ð Nkã8uœòš§Š£Jb“°ûÌvc;DÚݲY¯ë®ÙÞìÕ Q¢ò.–=Ðx3_Pã}xÎøÐ­ŽuµñYM[â%A¥ËPyôË—v´ûÃÐ[ÍWÉ |˜¯û?]™ÃXEÎEçˆ Ü'Ñ¢)LTó6œ6|K5%ˆs›;™Æú¿÷Û˾ÞlÆ<¦âó¯íþj|÷ÓÇÏãc¬Íž ESŽ{™¹c:»¥û÷y0FŸá±&øƒAlja©.x ¶í‚?ÔNüüq‰06ßLzVïì1⬹ª‡®À/­J#¿{)¨ÄñPúè ©UÀ8]|xn˜`½X ÔÕ+AVÓ¡§ò\é_ê¼Ùí·›àÌrÓé{0v©+r²Çüõ .[  ùðhÓy4˜®-«is["Ô+¦´D#Éä̼j.âÀŠ=Þ›ñÝÉ‹5HSž¡iêlô Pw )¯éhªÔ¹¦ h² ×?‡Åªn[àùå˜1צ.×|5Í Áì‚ïK²öêû’¬¿f®¡Ðøð4ãÐÀt54YM»×‘’"Ží‘>ÑGù]þïÛ¡w ±Û©syyì?yÔŒCPÔ|xµ‰íÑë@]ZVÓ¡¦´´E„Dÿp+´»Ý§k›nÙ@3.Õø¢óý!fb¡„øð!¡[4ZòêjB²šn£Ã­óž—}¬7îzB ܰH…ªcù{02³Åȇç0 -M`ÓÕe5F„¡¢ôwçǺYîAú¹¹ÝÔ×q„ä jiø¿ 4Î<” (0“F 0QONÐÑ3~æñ¡A÷¤ƒGQÝ…¤|@÷Ò1ÊÂeŒÒåÃsx…nÓh} ¨«ËjZ°T[³©Ðén7>ÝcÙ]saæcNmõ¦1ÝZã³_Ô2fèÜ¥zê*þ÷ $¬´3´2ÏX9™V­àu+óšÎJÁPYo¥½Nuº^ë~Ù¯ÎÆÏÝj›êŸ"ê°^7šï®ÝØé‡räÃs…žÒè1¨«9Êj:Ž*uxá•ç¨t§£U»»^׺cG¨*äñ*ÇS)¤È3†AÉóá9òB hôTÔÕäe5y\ f˶]çƒyÐTØÆ—m.Ô—ø·ðƒâ™âËØåË‡çø ½¦Ñ>Q ®æ+«éøbaðeûwÞ^Õ}½Ü7½½ÏíúfŸº’FŽ+ÜC³gë(ž*47LW•Õt@Q‚Š‚{ ¤j\œúMëî¥ýPwõ¥hPô¶%‚„|å÷þ§ˆ1 %Æ‡çˆ ÝcÑ>e ®&&«éˆÁ ΂²baù¼o×í~Ì­€Uf•ª—•8>-â»74c”&ž£)t6ALWÓ”Õt4\eÜ!M¶J}§Â/ÀÓ˹µÖÎ*žÃ#´ŠE‹Ï@]GVÓâ!Ö¹â**×éêýÁÃ7û‹zo[UkÛñyU x$¬÷Ѱ#sí‡CŽäDËÎØôx å¦’ˆ¹Çî ÜØ²óiì6šw߆GD$iDÅñ~¼{˜1ó dÆGg˜ -Œ3“ý{Iêš endstream endobj 104 0 obj << /Length 853 /Filter /FlateDecode >> stream xÚí˜ËrÓ0†÷y /íETÝe±+¥7†a¡,&qƒ‡ÄΤéÐÇçÈRl7µeM)C‡2]D‘ÿœ_>çÓ­$ÂðG"#ÅÒ<æë ®{·ËÈ6>œOˆÓMA8í(_Ï&GgBD#5‰fב i¦›x³Eô%.ŠäëìíätÖD”Zåˆ'!¥i)èÃLYOŠ8"<™Œq|¼ÚåÛ2ÛåÉ”1_– McèºÎæuOï²õf•›qIv/¼’Hé¿‚˜RÙyï[xçc÷tõàL#óºûúk²WO;òžº­ÓÇÅoC}ó$˜)<’Z Âð!Ï«¢t|,–e¶²í‹¬4O–½p…´Ö$àïûOhŸ÷@€:r@÷ŠÉU@¾ ¿gPÊbrtÜÞ쪵Eæ¤2K,#7½ÐPø•–/š§sâÊ•#”«Vîãª[c{¹ ó­¹òzî7)©0©h¸BÄ‘uQ™Mé§ÝŽZE™xi»>')«í~ØxŠ˜/¶!h\®C¡iå>hº€&Ì·†ÆëÙ@#⬠Ý/GŽ“ª´KÒY’²ø¶œ›žPfÒ¾• ñâÒÊK+÷ñÒ­ ½¼„ùÖ¼x=^8G4å-/l€—+ÃK¶-²o«¼ŸGJþ}|ËŒËv(6­Ü‡M·„‚öbæ[cãõl°aÆZlšû“;/¯¶;wö'± 6¨Ü´w´,V#·)…°PÿPC`¸|†‚ÑÊ}`t‹$úÃa¾5žJ—ÔxÂ}_b‚0wg¤ãÍ /Å´”0h"">ÿ :(-Hóx››+Åñ›Ê|ÆóÛu^&ÐØenñå»bž—7Ž‚i×™qQë“÷åQXžö£yc§žvä=o}´”¼¥@pÜ ´¶âgÈ· IE¬éIUÎóÍÎfú²\äw½É"øwî§Ïiö=ÁÌEŽ8–M^Çæ¢UO;ò>B‚ÖiW¼g."ÁE¨·SxFÀžjf=ßܑς’• Û¸2Üî>ÆÅ&&}Öÿå*­KGhi[¹¯´Ý+1XZŸ÷/[ÿ`Î endstream endobj 10 0 obj << /Type /ObjStm /N 100 /First 830 /Length 1988 /Filter /FlateDecode >> stream xÚµYKs7¾óWู€h4 T¹RåÇ*IåQ)ˇõz}`$Ff…&]µeÿûý0=²hiFRVÃÓ 1ïë P\pÉÕàˆeq]u™Lj§ßÔÆ·âj£: ’]û@Yg‘0K‹kò\ðRªÕÅ„ù€Å ¾"%!Úá@”rq ÑXÂŒ!Ê5º&*3¦’8ÆÅdh WÇmªÇ ò€ …<>ÅR]§Â,Á] "J%ˆ(&C.©8˜Ä5à  9u‰ äð)V *…â@•$†™D¡œ4Q€Cv¦TØ!Q­® < w r™!Bxb(Œ`›ËL0GáÁœoU`VXU²`‡žtq\-À*ìà㜠D!¸Ü.L!âÁ!80× ×#бA5À„Àih8ˆôh/ˆ;Áĵ%FdDG›w áPn˜ ¬Ú‚ïà á"¤¥MJû»U¤½975àVÍRg¿j.ð ©Š¨<©Ú”‡‡´¥a¦ø˜o­p&F+¢Iȵ)#Khɧ/f¤„x4¹B-…UðÐKl\°¶Äfr‰HvËÕ–õÀNÈ·–ÿ@NM D™gÏžÍæo¾|Zºùï‹‹ålþr»Ù/7ûK—±¬^Ïæ¯——Û«ÝÙòk¬øuy¾Z¼Ø~vï25+âû¦ï01éľÿ¾C>š{öÌÍO¶µ/x…OÊõkvµ{…üü÷Ýöìt¹wï Ë«7³ü¼wﯡ•¤t[Kèó5tË-²OQ.ÇÛÊåðw”›?ßl¶Ày׊XӃ̃d’y.{=¢=ØÉfF4”h(ÑP¢¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡$CI†’ %J2”d(ÉP’¡$CI†"†"†"†"†"†"†"†"†r+÷fóÓ«?öÝï_V›¿fóÛÝùrgŽï[pÎÔ”¢OHÑÌÕ3ŠZ’àªf‰>ˆ@îy—§nþÃöÍÖÍ_¹Ðw-1ž@™Œ"²î(AÏ>òQÙ(z =[ Uþ˜tRá϶Ë4º}å¨t%ûŒûG夋ÑiðÕ|)%xìlGe…AÕè²¶|¤ã‰èð̱§“ä9ÊQéúÈ£K䱿 Ò¥‰è¨À"5ºXŸ"—û€hÏ—£:§ñᙢ•–”ª§w–‰è"ê¦ZÝL,¾æ‘]¡NÄGì[ÏÞñÅèÑÈWÎ0 cªJƪÏyd_ ‰ø°3ç2/¤Ç¥Ã ÐjæáTå9ðMT]põÙc ÄÑw˜îÉÅ%ù2ºÑê5ß4e8²Á¥#œl¦ìÛ³³ÚÈ‚˜Œ.D,ºÞ¥|[2 _, “,CcUÏe„o¢úµm»–¡±$¸VË—ÑMPoŸ’edÁOT¯#R“soú´ÊÃöñD+0¢H‡bÝRlZ–ãòE‚M=“Ï<Ò{NÔOÄP¼ë—"ZµTFì›hýQØdí` ♇ÛAžhýQÁy³¡W£2Â7Ñz Œs[FŠ1îy¢õ@‚òY¬|zµR†ž¨¡ Ä°©çC¯¦|d>lI¥X½&ŒIîÓD a;Òþ’€Ð¬%>.–€†Þ<ôj#§ö4QuÁé áðf”&*.гX±Z>­ŽÜ|ËöʽËv5ÿ×Û·Ú¿ ›«õúý½—ˆמÝEvº¾\d—Ÿt¹HáîÕgˆÿßõ¢˜¶b×oÕt¬¦^µ+¶jVT“¬&ÙnííIO¾€»Ž Ê•¬P)¡I¡‘LŸ¨çšÐ[Zá@Æ{î†ù&*Œ¹`óìûÊ\ÉóÈÉN&ZÉ8éÀ&[ÉY‹§LÇålžÔß/¢ð‡º‰N>GÊ=/Ãm‰LT¨2Ê~èÛÊÌhQÂp¥’§f Žüh¹°"‹oÿe¶ën¡¡“¡ÌyšÃ–äÔv믇-AµÌ#ݦ‰8ñŒv{ôõê1ʰ*·Êrûòï×å›ú;V£ªËߪõrûñãbsþŸ,^¶ç?ÏWûÕæ¢S÷¾ïw°~ÚìwÛó«³ýj»i‚ý¼ß¶ûE2ÀÛBûí£°_/çë^ËÝâìsìã½(/°©t”——Ø\V‹õå]°™{1Ýþwù’í½÷Üê Ô½¸?¯Öx½¸vHè^Ô绋«¦ÇÖͧ;§ËÅîìÃ×ùú³Mûs»;¤oï+‹ò‡öÇÕå~»ûòPxWkNVëåP|¾>§=O¿lö‹Ï÷#È ,•MËÎíf±>œ†áËý }y½b»ëÒÅÇOëÛG¾ÝÁx±Úœ/þ0ÉCë¾Í—¥Æ DË /ò÷v}øü¤ë|…ZlVŸ®Ö‹}Ÿ_oH£ˆVúFñ_~Xl.®±›àcûuf ‹î¹•»·‹Í_ƒöÿ†µ[ ¬¼ÓO˳՟_zœA¹Ç(†!¤ÊMYüe¹¿vÜa¬Û~w0ëíöê»ÙÿÅý% endstream endobj 327 0 obj << /Length 3170 /Filter /FlateDecode >> stream xÚ­ÛnÜÆõÝ_¡·P€–å 9}²¹Hë …­¢(’¦w¹-.¹ ¹Qô÷=·^–kÙh¡‡Ïœûm¤®"øSWyteã8Ì“ìj{xÑnwÅ‹{¥n€› ä›»WygÌ•ŠÂ<ÊÕÕÝþʨ44‰ñøîvW¿êú÷»¿¿º½óˆŒÖßx"BžiÓ+eC­L‚GQi–„*NÜi“êàm{¸Þ¨àP\« Ù]obk‚÷USòêvW Us„-Yµ “H3º»‡ª‡oâ8Ø^k<Ç¡ìxcWöÛ®ú|½ÑYP ÐðPòâsÑW[\&Á¾,†Sç ÚýIǧjz¼ÖY˜ÙÈ ãï›Ó‘: #¥ж= bðÖÌ$œ[ “´]5×@&о/¶eÈ8QI'©Fœmt˜~à'L•q†"ПšëXC×>ìNÛ¡j–æÐ~Ÿ|U*;ùŠÀöm]·Hãê­BµÝ3Ç¢+î»âøÐ¯È}!ö¦ ! ¾<õ¥H…H„ß®<‚&Êu9ðÖ#Z>÷À/{Š&O 6 £HM©ÍáÛòÏAÔ§§Ü%hÿ^{o7«ÚS¡QÖ‘}Ê®,Ø< Ùùô¶e­um½ùÇò’ oÏÌÉbú24Ö Œµ+¶l®ðƒ]P])(žʆá½5štJiœÄ¡NcGê*7›D§¡¶1H*ÙˆPY ΃Pô^#OU-†êµ7á×ëÆ šØ£Ù•‚è%=™è²ž ¨À±õó5Á2ÏfjŒ¢¦$g5ÁΧŸË¡`ýÀë£~,š© zþlp´-u[KÁ–èhú!žG¬o2&F‹äÕRôiü™¨Úóú_´'|Ðp.Šökñ!Øi› Ã·éDÖ7èØŽ»=O‹j:ÆN¦6Æú¶ÅÕÆ&ãI)/ ª[w’+êÛõñ1ArÔ ãfË¿ÐT[A;<ƒ¼s]4g®NãšGY¥¬cÜÀÊx:ŒLÑÒàPõ½°Q×<æQÊíL0 pôùç®èžùá¾Ó šˆÇ°Œt÷HÈž7d@ÞóÓ¾]ï6‹¦:žêBfæ~d² Ó^Zñd€Žµ|,Âqðð>¯\D®šž!nº-اŠÕ¢€ÿrêå$”ïŸ3ÈΟæm uØ)“jËÝ&B“[‰fžQæs<7’ùG”AÝËhÁ˜F>"7\‰¨Å¿¾´]5¸@ïIÂQæàrR5µ+ið¯žyå×½Œ·QîsÃ}ÞŒ´C+õã91ÛSׯ+‘¯"œê`q¬yE{ÀY5<4eIöËmÛuœ|©r°"Mk ×å _s9íËnXœ"bÅä¬_رÄ5–†™ÍÍñ\âh;>öÖz°Ížf!;~ÃCD\qÿmùú‡zr3GÒW‡#ú;®i¶ºZΙ8ŒTþ-E£šö¦: þƒÉÔF³Ëìó^€q:…œ nJ.;ñJ. sn’tê$ú(“¦l©¹Ìhyà;‹ã¿¢m¨ñ4¹CªºÅéãàJGZM]y¹¨æv=5+äKCïî¯ÎaÒ©áo0ã'y6óm4ˆª™Ý‰%@¦ª '™4 ŒºÏ8Lýj¨Ýßy|CÆHW|=^£aF¬Šº¿” 툗I£1Mðu‡ÜÊÁ–È’·õ¼eîT’¥| ™Å›;eM±pBì#²äIÇ0r· FÏÓéŽáÎnetP%&]¿PÁmI(ÆãEkš«ãRåî‡ì¤×i¾òñ4 ö’Ëþ˜–Q»£Ÿ¢ñãaÊ®1—Þó”I‰I8˜åj{¢fÒ¹aûñÅn€‹“ÀN²lCµã^,%í¯iˆ (ª~ÛQƼ|ÍŒ¡yzû Ìœ©tyÐå1îG(!‡êÀõÙ”­lZg—dsg󺤔;Êe , .·b—?cœ¦t<£Î‚Uvdê’|LÍÜé³:D§gt¢ÄùàFY™ÀÓrî{”Ésv]e]Q¨ÀDI‹ŠÛ§hB¢à®«T&%ÅʰJ'"´{«Ïú–t¼ã"+ƒ‚r÷ßHƒs!%µ•JÇ—xQ$„>Á¤Y¨M~vÓ"Ö,Y|Í¢Ñè n:¨E3Ák¨û;*‰±ûk‹±bœz‰gÁžý+ƒgoÈÛÅËÉÕ¾§B`EºqCofFéî_Nt2 Œ¡­Kóxî"ÿ~(×Úœ úöBÚ’fìhq¨v»zÑc›r³¼£†}i¢F<ôÊG±kPÎÓÅØÒøãY`ØA»Å¤žPî¿”™ØPÂ5n~:žú¾ˆH‚v¼Ñé~¯[†;ãµFÈ ÿ' _îZ–޶ØÇÌÔ©’å4v¸¥Þ)ç_ñO•óÌ‹&o=r|pÁ×LI"W0€ мz– ŽãólMí⋉½â#Êz#¯IÖ¸Y×2sÀ¹ÕëR¶Ï endstream endobj 335 0 obj << /Length 2143 /Filter /FlateDecode >> stream xÚ­YmÛ¸þž_áo+k(Roí§»MÒ^ïR‡-Š¢)Ú¢×êÊ’¡—Kößw†3”,YÎúzÁ+jD‡óú -Vü‰U¬)ýL¥«ÝñM`©ÍÓŠ¿üéày˜¸9›ùÃã›ïÞGÑJ~dbõ¸?gõ˜¯þå=ô©3Íz#¥ôÄÖ¥"ï¡>u•ñç¢24z—]Q=­7¡ŒSá…ë?þåÍ»Çaû( o”g¾.hœ*_HE‚nõn¦Þól¯2¯«éù1ª,i\Tüí`h°-uõLÃö¤wLÝ5Fw&ç)Èôe¶®1Çé¿®£ØÓ̽ÞÏfuæKçƒÂDì}O”²h»+“·ºá‘i[S!÷®Ðe‹:l„ôED'Ý×lãô/–“”ÊnK$ÜŸº¢/EuêùS9m_—¥=ÌçÖÇ;{‡çzƽ3_EûÃfK³¦Öˆ?†©vÊÖ üc‘œmX¬ŠÉ–xÐÞ‡-n¾±|Q98äfÿÛ•}ÆWÝä7ÈÅ×d`%¼}÷ó’ aà§"uR€•¸e¬Üœôî™9«Ù<¹4û‰Sœ}ÚõM[¿®þÁþùkê¿UȾÊMSA¬X¢µð†é£PKNð·¦àqîü“?E /Cí ZöcÕš¦{]2f~¡Ä!ht÷;•øŸÛýgÊmê?›/´ÿæ¿Ñ…þ^åx®8aáaPjLK8¢Œvx¢÷%zÈb¤ý®SðŸž?Ù¬ƒ~`™PxåŒ9ÅZç…[˜¤­¹žyª]{Ž¡9ž:šžûØ„hƒ¹[ ÉécoÍ ò(D~•“s„ ¢ž/(KÝ7ô¶«+¬O}£»¢®î‘[Á—â6}™Ý¸Q䃟mz¡-·$½´¦£U ¼õµK‡ˆ¥ò•”x\„‘›tœèXx`Ô0ÎØ—Ò14m>A÷˜СŠr¦P¥ŠÅ`Îo"”¬œda‘F³ƒê¤÷cGdtã³YeM ¬uÈ2NýPN›ˆ±"ÐÆílaHšº#žE¾$ÂbÙǽ²Ö2Laf-òlÒ¢M§ÖÉͬ ¨Ó‹Ê) .á—¼¿~*Ê’<üqe_A\nÝ‚áe  ]ð„™€ãë —…tß$­-Í^.q\±oêãì#JŽ1Þ¶çiŽ[k7çcH):Z®)´¨·£2 Úbi™j‹…qØ·Ž}ßöº,©­Ûð™&Fà˶] å'rÀêêùŠº°b{ÂÆl Ûú˳A°ˆŸÝNYêÐûã7ÖRäà¡’¡åøé¡ïîè‹Íê8øt‚>ÚÜÑBºÎ*Á$5f7ä8üò_Ý<¡Ÿã·=uû|c_ÄÉT-ŸžÁ5î&5DzŸ,0%Ü ­j)S¨SèUc¾ò°…(téS0X?q¼ÊÐ]' *P¥—–¬Û:&”É bEkïˆØÙ<ôòNw?ìÊ»Œx·ÐLåž÷ê3ßÇ-#åŽw–ˆˆ“ôžÌüJf¼ÝŽ× t¹3ÖB µøc ¤•¼¡–[xç•­]_T6}4äHH>•öîØÖ-í®—Œñ«Ž0ŠFuà D 4=P§4b[ÜSf&g2Ç3Œlî†g«ÇžÝ1¢V‰˜.ÄS¨"?2 n¸i®%€í<ÐJ¤Þ÷ßèàNvÜQîbú`o¹í1 úv}W€\W2¨yéÌÕ­;*U0‰0 P4ªEJº=GÙ¸Œ WæìŽŸkðŠƒ­¾RA2«Ý*ò® ^E´Ñ=Ý‹ýeß žì¼ˆ¹MV°÷e4™DEMÅÒ6Ò—wødb ºi¨V°-ñYÕÈ$R¡y¹ŠíÐYÕîtaFÇüÁŽèlç&Ù£¬~"¾ #gÃÇ©1¿ußÚþ9Ø€çýr¢‚8õøóGQÚ›€å¦”âo¸õ‚—¶ÖŽ¿ Pþ}@Q ¼Ö¹¢¸kÈ$iQ*ì¾Ç®[ª±•Àß¡þ"kÛK endstream endobj 338 0 obj << /Length 2896 /Filter /FlateDecode >> stream xÚ]oÜ6ò=¿bß"•*R”úÖË¥×ö(×ÊìÒ^¡»Òž¤Mêßù¢Diå³á‡%‡CÎp¾9²Ú¥ð§vuº3Y–ÔyµÛŸß¤íw<øø7Jðb@Œ̿ݿùö‡¢Ø©4©ÓZíî£î»ÿDïŽö2ºþ.β,RßÝÅy^DïºóÙ¶þÒ´ŽGïÍØ´w±ÎÊJEÙÝï~óþ~"_hýJ>óFUšÃj¾+«VL>VUR‹¨â?sÉha’nE(ÿ„³™ŠðÅ„ƒ¾;¯÷×¾¿SÌTÔÞé*T€žß È»Šºdßµ²¿[]Þyeù»biÝö‰oº^ª˜ûñáuÔU-·ÁÑxä+àØ3NðίË"q‰äRWÕ¼‚rp^øŠã®?|ÓG2hdçgŠ pMä`;­Ð v´Ã,¸€ËÁEb•%ªàû[»Õâ,Sœ}=6£{ÃÅî!DÅE]F÷ÇF0üï¡ù-U™ ¬„Nµí¦“äEbÊ|v’gŒ:öˆ¡4Å´öö:¸U˜ö&à”rèòÙÄ'‰œL'e± ¯œ¼ò¢¤Ëáï±c;¦ ˆŒY­CVM•¨²ð7zB|Ûnæ!]%Y9©M¥8†£ÏvÛÿX `ytÎq¥tôo´t FÉ×ÎζÃÄ,ýî» ëò”s7Œ1KBi•äF-½¯w{Qèé)Æ„ì/fKÎÜu¯´·œ$HÚO/5Ü3#¡.©á˜ZÈí̉Ù#Y±g{2U)-Æ(EÁÑž}žÙq•zØ‘^Ÿµ_¼áÇn´Èffjï‘)Þ\ð#÷X„€š1tÖ*âÒp's£ ¼À­û*gutÜJ³ »+ƒ÷¶åA×’À`ï¡óÔɱaD=äç<ô Û,½ëQ8`C0eš”¥ñ~Fë:M*Uy$&µ>Èfayzuž5%nN‡ ȲNÊlÅrRVcªD'9H¬ÔÑGŠøöpâòÚäÑ÷^׳T„d¥a‹”(Ø×Å“øsP‰?×ut±ÃÀ#²^8µoöŒc{$ÂÖ90ˆ\p?NLÑaȈˆ_Ò&Â,>ug76g'$$×GS¸Æ%»çK¬s0åÂ<,ÿôŽK]‡€=ÄX:ì2/!Íž—H¬Z¨¬®]M24í¦‰ä $¢ÉDæ3™ÕååhÉ®À£1ä¨0 ¬Ì£Ÿä°'ªP¯µÖIæš;ë-ƒ[ü©ÀáíØ|AªŽ!K>•‚ ®ðtv€Aº¥¨täµ¶ëÏöD®‰P;oÚUx1Qâ³”ø~h â+ã„)ùêziW&ú*%bÑ©˜Öò2bEsCzTAâ¸kAŽej¢ÈØ{>ÃýiÏ—“C I•”Æg IB ȼc¨„ã Bv[·Z<©¾áM’Â&Œæñ8•²Î)1ŠI3ÆïbqåÂ0!AQéC3ò3ÏÍlÂ|+µ†Êó¤2XÌ”IªÅ†î‰[¨W]ëz{â ‹íï‰$†Ô‡ -BBS–»,ÿÌú†I³Â‰Ú…êdaéL¡o”݇摊AܧR©¨Ÿóד‡ø­.*OŸfeJ†PY®#ôžÓxýN”Þ J¨csO]~Μ½¯¥ˆA£ßÒ"ÝT¥†Ÿ›)yÄ›y91zŠBoá(…¶Ä1¦]°?“¬åå,…\"‰)® -ö¾\Õ¾¼åIPè]£¢µ{Yôñ‰&G‹H>ô d-9„u­,žI­8bµòŽŽ}NBnèðý·•«’€j UÞØ—2"$XëÝÙ6í -eXˆªœ×‰Gz0êTª^nWfʘ,Í!«èã­åœR#Ó<ÿÝvû%öhÛ16WÈ:þªq¦œÀàW¥(Ñ,#âC‚=É«h… mׂš£•âh•rÐ{æ¹¢jj^¼^‚´„ô¼­BµèNntÌ£ØJ* âÕµÉg«ØÀGÚÒë¥!35Î| oÚËu¼é-+¸Tj7=×n×nŸ¨<³X°îï2¹Ÿh é2š©…:ðŒ2žñüØ c×?½¢´›Ë1¸)<£h‡&ÿ¥9`¤ñ½0ÑBbÁsÙ³@¤q‹2è»+d*BæÜ|C­Èy9 j¢È‘¼ Ïݪí¤ï%µ§‚È?™¸-$i«AÂò]3iŸI åÇ·lttC• ½ÑèxÄw[g­ëÄ“ƒ5í"‚ø¤Ä­è\'ÅôÚFyl – ¦‡vÛµñ+6eRÖfñbØ%èD›L2wÉk?­ƒ jqÐ#© Ò>ž?6Ô÷T~Ny“¤¹ª±½Ø3ÎÑÊfTFÛ Gw\ö~¶Úë[ºz!sÙc ÷Á}Z%UªWß&écl´¼à³éͯ‘¡‚Bt¼|äÆF¡_v#%>ci‰á½Å=± ‹6< ä‰qͤ>¢l•a(LS{¹¼ÿônÓ˜t’¦õM:[š% åi`î?¿|ÒÚ„ð T½qV+UR/ü/ÔDY°&JÐÜ®Ýû®Eä0ð!j¨‚­fIgÆŸa\SÞ•y.>}šx*Ä:èú'̼Eåx Þ3RÞEDÿÁ)V5Ó^ØT×Û£¥÷8ؤtÛñQñëúÕaVqÒpD/NúLæ¿3áJ"M†iJ5[5Õl›¤Œ'%ùk#?øÏ$ÝÙ _³]ø{*­wSE¶(|J€‡Þ”a`,m>r’E®¨TDà¤ùö‚·vzA3¡{IÀÿ7€^Ùúåè™1_!üc'¹Î^ì$ƒb_Ž÷ÁAVnd/—¾»@XÉ<Ê‚¿Œ±{Ñ¿Ml¾óuµ4œß&W„ò7úrÙãÓÒ›Ã_©ƒ¬‹Ð¿O–TT8 Ì §«ú(ܳfq66üo’¿pñ" endstream endobj 343 0 obj << /Length 2638 /Filter /FlateDecode >> stream xÚÙŽÛÈñÝ_1@„F4Ù}³vâ Øöl‚`³@8RK"–"’š#ùöÔÕ-RC{ =°º»ºººîj¥7 üÒ›2¹ÉµŽKSÜlŽoší÷7 |þã›TðÖ€¸ž`¾¿óö£µ7i—I™ÞÜ捻î·7?Gw‡ê4º~µÖZG髵16ºëŽÇªÝòä_êÖ1ôa[u»_­•Ί42«_îÿüæÃ}8Þ*õ|"æo3š&NµaFÇ•*¢—^DX3©‰†Ž¿»ªWë¬È¢w-¡ñt7ðfþŠÓNæ÷Ÿ³k7ŽG@2ºs+DG!Zñ糫¶ ‰G/<ÕM#{\¬Ûj¬ñ°J#‡âë®S§–/1¸ªß +<´Œˆ”*’È=»Í·ãìx¨F†ä8¸œQYôqUè¨ëy©n‡±‚KܰL€[8 d˜Me¨ ÀYLÐéŸ?Ü ÖLÒ*‰• H|)bãr)æJ€aµ†Û-]ÍÆFºúZeiœ–™H ="­T„B½Eååz÷ šÓ*%qà)g#›î[ƒw×wÇ«õC=Œ]/´ M½ã™c·?’IY̸@˜$1Õ¡¿ÁE.è|ª6åÞòʱb³ãeÁÓQS #O55ܯ•õ›à„¤Ž6羿0H;Xh°ô}b_·+-p?ÑÙ±—eŸ‡7YN>2€ý&îQè q&J «¸ïˆ¸•WLïŒù*ÿ‚G.X:`ÌâÙ3V×ó'Á:êvŒ†^ëqÓ±°Eæ‡ܳ(rš„³åÚ€6àràD@^§±M%­¦±‰g*úÌQ݆ÜDŸÚ‰å6úX7nÉ!‘Õ2N•XÕ»½m¢…”Æ`’AaÔÔ}Eª‚Ä[´3ÑUªø38Ô$ ˜øp¬6ú©}PÅ9Éëu»= )JMCZ‚¡hi!’oÝ®:7#¦ÐÂDŒ)ï*t)ø¦«»†ú¡q<…‹_p0*Þ²­!hw ׸Fw@ï€XWüRb×TµähHB¸ghá3˜÷±þ¯c"§8íö}uó•¦È™G¦*ÈP t§óÈÞˆh’þa>Á/pÁº/gUFÓ²ôѸn¸Ö‚•@bM¨/0h6˜Ã¬²Þº‘!Uºt÷",`~dðP [°©/òh¦ø{nÁzoýZL¼ÇÌÎS¨Ú rùÿÞÆß° ÌÕ…y(Óô„QÏ%*˜ö,n;Ã3Õv‚æžëAÀ®ç5ð¡°ì0Q ·r."Lv·We\·>†jo"ý5è<Ö™ñ—zëÆÍÛoˆ +â\eWúKK(M6¯Ûþq@KÔà7×ͧž¢Ï=êP†Á|`HÊb;­û”¹b\¢¬,øç•åÙecÍ™ òN§´ [¼Ü`“”Ï6ä³Åú1”ð¹¹pœàšNcY0~½Œý„nYö Þ®EåÏ½Ö ÆŠR]*Ìg>á+¥¦Ic•ï m×»5^CDi}yB!Ä1;xÕ³ SÝF­M‡A\òK_I_· ¹Rw¶{7ˆ,¡g†})àãm^¿;³õþZ d.¡Ö÷'[ßÃt¼¥'5ƒÿpžW6Îlj†8ŪAOMêuÅ@З—v…¾\=­‚ÈãÌ7ù÷ØB° Û]KÙÀraŸUØì-áŒ]z7€7<ÀX‰8, ˜˜Ù…ÂBÅYQÌÅ!Š—Ó,íi1NºY4•wŒ¸‡>DþØ:zŽ×:< ^’§X*=1©åè¾A6!"_‚˜7a#•ßì¡q×ùÊ:ÄŠYêŠ}íòý³hÒ endstream endobj 346 0 obj << /Length 2077 /Filter /FlateDecode >> stream xÚ­YYãÆ~ß_!8K!Í>xåÍY8A‚ ¬øÁÙËC!©ÙŸª®jŠÔP;šÄл««ªúêè–Ø…ð»,Ü%J™NwEû.´ÔáqGO'˜ÏFÁù×ûïÿE;Y˜‰Ýá¸\êPî~õ>Tùi2ÃÞWJyâ/{_ëÈûзmÞ•DüXw†Z?–õTw{_ª8^´ÿ×áŸï~<ÌÛGRÞyNä|yÐxyP¡“ ÞÅ©„ÒtÖÓ4þ8=7w¾–,B~_¨@D,ZßíeêMCߌ W*½/U>aKx õ äH=ÓÍc¦£±O&/+´¥ã9­Ä¬SOŒƒU†¥TÌ ªlk‚Òa¦Ë` Sïömš`ïÇqæýãHtX\xf¢ŽÝ¾ÿfIWªÉT bXŸÖí»MuH ÍÔq½ÿ3¬'“¥l°zgžP.ƒ;DB™F>CeÞvb”Ú"dœ®…ßC¡î€OõX?lV‡A˜-Qp†‹ *–Þy4#µrú¸å #.ç§±úHßÞÍ®ç¹Àö´b/¯›¦ƒ¼‘ ­¼8>¢¬Øp²jQŠè^—4?—÷I zÂû-ŒB²tJsÌÏÍ4…³- ãù4™ödq = "1ãT„Þ¼Å)@òý¸! maö ™|ö·4È2–ý¡îJšžýñdŠ:oü¢Ê‡ñ_åͬŽSÍ:N#{x$l*TGA–Ì?ߨCˆ@å¢M\mÖ&vJ üãôvQªÊ–^‚'¹('¹s¡°L©˜±¸Ò*ˆ©å• ²€^òl€k œaòÉ”Ô90¡›g¢=à$nÓvÐø¼‡6Cç·‚4ï¡eWÌfûg¹G<?¯ÒÏ«ÕÃ*^Ñ1*€Èoþs†éè¢1 _EÌ €U>ûm>ÀÐ?åƒéÞ °A"ã3aq ²ìHèULj)*l²°6lå¶|jó[(¢gbj{ <íÙ¬U€³8c?,gÛôáðFj¥çÞ¥!òÑ(ñHCÒ.9bhÒQê²´râ*š~ä)éöú&^ÝftA0KÁà‡Êl¥'Ž,dnÕ ß‹Â Ž“YÑÇ㦦“@¤rÖô6X„Œ­³u)ú¦Lé}{jÌT÷̱þúÐH«%%k%Õ Ð@¢Ò·‚FIÍÁ šz¤ªw¹œzdƺ€¹¬ÇScóÌóÈç³À¡©>Ã$(˵\-Η Øz@ ê¯Ôëôµ«`ÃÊ-“lA|%^?r>Ä¡Å!‰çLPÂfNŸ²†M”q°"¢5M°,6­(àÀ8„\Ô-íQ»š·B ¡òÏÖ}:¢‡¾å·œ3wQ üN•Ù2¥Œ£@^âýÇŸÿðÓÇŸ>ý¼eRß1¯TL²>ÕCßµ³ÜèT 5—ZkVy‘eÃ}n@N¤bY |ËÄ+þ©ëxëügœòi¼«NF—‘™`èdT7ÈLÞp¨+¥z³Ë„ËR7Y{R(^ ¤5RàjXC”\G*I®2.jd¤rÉ–D2ƒ XÖä\¦Ú$h›ØÆ‘íéÈÐ𠚡Ҫ´Ø ˜‡æáæA—@/“Ðùo¸=vÉ‹Ã[ aDk|ô Í!yì—\À‘éàçPN…> 2â JßF¾þ#’FšIúó-1ùæ±îî¼)Æzs¢ê8æÒ¿”1©ówr°Q7OD+­˜æØ¢<á7º‚íí³D[²¤ œ~ÎYÅòªîò¶ùjŠ3¥|¬*¥\©èjÞe|³˜ãU¶âk˜*œ¡öÝŸ¾{=nm[PÅ1t^šÐ¥{Š Ïþ—ºœªû­©AˆKÜ3×bƒMån·0ns|Çb0TPÅèÈç¶ãb .’%‘m¤€ï"Nq}æ*®[Ã^6Zá¹¶º7ã–·sÉ RŽtf8öX¥?ñ¢€áÁú‹˜€Ýšo õc‡‘ž;GþNk¦ÆŒî’Qå›A(ÄÀ@}«0À½˜U‡t;[†ó%{V§8Ù¬ùŠ?i4™rñäÐMhx©";lÔK[äÚâ ËWUê,-æ^7ØAzw¡q ºk@O_ì+jÑ—X$x_Ü{ ZÀ›ÌæùhîNϘ>©¢ )=#áVE+ÿ—ô¼ºôÂâKˆŽD¢ÔØå­¡sÌÖ ¢0\ˆ;§åø:-×)1'S¢>|Œ~݉t¾ZÃ1+öŠ·hSERà &Lþˆ L (ÕÓôú3ÛºÍO÷zqw‘Zq!¦ ÞHض´T¿é ,-caÍDÌÙJ/Y ´X$–;+`©æ]P÷xh@ DÆ’÷üDQ3×€(¾{ð ”È@éF*ªÀ*ûJ« øÇ÷›mmd¶æ3ø› yyÅçZ“Ó'\ƒºÒ c²Úݲۻe)”]3‚~¿µ[²µ¯ÍO*ñåI…èœ%ÔË,ÁUW$™¾ªp7}G§ÙÊg±O>›°Ï"ÅJUþɄଚf«²oW•ƒþ¶ÛÁÅaQÝý_ï ˆXߌ°ô^0× ÿã[ àå9ÐÖ¨€öâåNSå‡c“›ˆõXßÑà媎#Ž5§A|6Xè«›úF¦^݆”„eÿdLԱʗќþN%‘¿ÔSÕŸ™·íí^ö ¥áä«ô~áwȽ Äü‚áÕýßó_L§Ïz endstream endobj 350 0 obj << /Length 2520 /Filter /FlateDecode >> stream xÚÛnë¸ñý|…ßV"­HêÚ¾´{pZ´(P`›¢»ÊØ´MD¯$çlúõ›.väO "‡ÃápîC«M jSƛܘ¨LŠÍ¶þ´;lxðãŸ?)Á 1\`þðôéû?¥éFÅQ—jó´_’zÚm~ >íipÝChŒ ÔïÂ$IƒÏm]ÛfÇÀ¿ùÆñèËξ9<„Úd… ²‡?ýõÓ—§éøTë;ùDÌÕqéMV$‘2 óúúf­ÎÀކó³Ä:N†£mxô_×µ0,U°…{´>uîçX%¿>¨ö« GpTmsxOc8zY‡3ÓéÌ8°Ã[Ã-Be"•2c;UvëD`_ýpÄQ 9„¸ªò§IÒúÑ5¼¾ó=l|ÐEðFrÅÕ´}ïŸ+‘;\ãT¹Á·Máé ªl)ª0Í£ *¢¼È™£yKøËÙuo¡\ÝËæ 9Ë^¼Œâ½OGºl4ÈÙ¹ÆÿÏÄ *Ú=# ¯ùÌ+‚¼2.uà¥mÕ`M²ÂrÀ•ÕsG¼—/INëÀö/È ¦@vv¼ÂçW_Uì*(ZÄ¢ €.4ÉÁ­›v`ã–ï¤Z€ -_½û:‘­ ¥A‹Ä|¯jX{ƒYN®ƒä *—d€*B]höJW‡U¾zç-›#@jTÝùÜØbà¤kœônàcˆg<·á¹'%ŽÃæð³"É9åzT ŒZ¸_ζ’E<'7ALì'ÁܸƒüëƒpQ‘b°¥v–¬"_h•fbÉk–è˜d'©! NØË1ºìÜÞž«×+_ûá¾_‹5*)¢Ìäp ‘Wq¼TT©BHëAKk%ª”¸•q«yuÝÖn°÷E+ôDhÑc"ò…ïÖNMTdÔÄ=ä†5æU”Dp¾Ã\’ÅKqqÇhc"eáa‹³£íìl¢·`Z BÅùÃ7 Ï~˜/ƒÊ„Då¹¾¼1^Ф1*qŸ©‹¼YDE22oû­Š:ðkÕ(x3ârh}cÚ=¬k¶ŽgÏ”¢`œ”A?tþtât•J¸@8ߥ »Ð²#bsÇcƽ|9P¦6î?ÞéÚè¢ÄL—úòÏ«·‰£¸,G¤ ¸ïxe›ÌÚ¾kk6—a4&I#ìA­ív¿Y—ý¦µ©¬Œ´2ß”n™[AZ»Œ„ŽÛþ°nwîþr…¼Ö‘Ö ‘Í5Þ”L8WŽ¥½Qé”0¼·UÏÀ¯G/ê¦)É[¸çlò0 Ö¾/Ro+*oTeK³ ÙÆÊ$2Ået~©þN¹+ƒ/tI;)ä2:ŸBÅ#·µËb= Êvøý$äþ~©í¶g47½¶¼fÛÝ]õLc I¥û‚Á ŠÁŸu-_²g¸1ë–údAƒ…¬{êu©ŽÙÐa’¦÷é(}1"\+¤„„Þ¬17`¿s‰9Ò¶´ð·Œ;/—5…#ù¬×²™É–¥l¥ëY% íGœMñ÷ÕÿßN£°6£Šoé4È(Ùvˆ3—¼wU&ÇgÀ/—ø&Ž’rÎeÇû5œŒ2”«ÕW“›ŠAFqzãàTR-|]ƒ°FÓ¼”—„ËEB“•.”Iâ.Ê”T€_(|ÞŸmt ™³®Á¶!RRSŸNåè¾¥Ž?$Tm7‰û¤üª³@2ÐWøÚvBK®Ocz`Z±H'Nf v2¬"<ŸD‰Óœ½¾°5‡BWPZÞÈL~ñ>8mº¿âË´>tiT~ 5Ds+°9òÄ×1ç‘ßPzz9ÇD’fg±¾£uÀE̵/<¤& ÒaéÀ€©½é—˜@åÙRí÷ÒƒŽ«bì·ö4?¥è©êyêåk¹éB9ùÊ>c”!1jü³—­|¥ìF™  Jç÷³2‰ºÃ]åxºÐ-ÒºŒLª–”õ%\@®Êý£ ׃—ÊZCS˜çWM!1†Æäx`–D8êÁM‹n-5y ®^VæØÐÛ²g¸àà;’†x‚9kíé:èä—ï–;†Yþð®­x6eàVs7Œ³¹ ­G/\ŒöPPÁŽ$×cápmi+…÷ žÆQ6·©X ºQ®óB:œ^–ÉUH§°>ƒÄ_ÔyáÉâcä=q‹nN 6•òFÑm¨ÿýƾPï‚@\:µŒt…n~8w²$‡:ÅäUÔT4üVsY’•üRr?)]ˆØ± O¢4ËÖ^—R":Ía\a(iÏŽÖ‹3–¯ ¶„$¤ÈQs„“ç3ÜÐP1¡µ—ˆkyÚZµj\SVK . áûηL†5°ƒ­ésÀwßiÿ‚¦rÑZˆ¸‚¯—íüHVPËûÞ#Å©aËêkx$ýD–ˆ(²tµŸH!­ðë8¢R0À„|~c÷ [È_5ý+B›áqúýÊ Qù­¢Ã<عñÑžP¬43³öøG.D©I@ä’3]í†>ºÔ‘™«¤ûžª¢ñ·ÌÿG:Œü endstream endobj 355 0 obj << /Length 2322 /Filter /FlateDecode >> stream xÚ­YÛŽã6}Ÿ¯ðÛÊ@¤ˆ¢¨Ë>f0Yl°À™ö! °›nÑÅ+ÉÓãùú­›dIQOwƒšTñVd:U¤Õ.†?µ+ã]®uT¦ÅîP¿‹IÚ=î¸òë?Þ)éBÇpÖó§‡w?þlÌNÅQ—j÷pšOõpÜý¼?ÛËàº}¨µÔß÷aššà}[×¶9²ð_¾q\ûpôƒo÷a¢³Bùþ‡_Þ}x˜–7IòJ=±ç_ÍæŠª4²]V¤‘Ò)ëêû©ráŸîv±G\|½9ƒCB¥#exÄήuMônàÊÐbi‚ÿÊ‹E³$Êòt¤Ñm³µˆRQj¦>û¦ËUð«³ÇŠN yòU%Ëu7^×ÍdÒx–н\ª½ üaªÀê­(þç>)‚iÇpjp I!»T¬Äo³L?H 3ô\=تrÇ,«Uð±­‹û[?¸Zú4α¦@%/2RÊIa”‘ÂÐÍv]‹Š=±œ•Dåo¼° "R7^*úp(ÝÉ^«?ÒWDá¦Iram4Éé´i“¨•)‚þz¹ÐRm7p CÛ¼H¼Œ™pZ$qðoéTãFòà¶& -ÐÀV=œ•.EC]à~˵iøA0+Lpíì(A5±ì]#çÏ8f?¡~(:à÷Ùvö ö _'ä •f°Öët1˜¿‰ižAµ*£ÕQRfoåIƒ‘H%Z”ì=.DÇbŒëNmW“¡@ƨÁ^w‡@¹‚b}zF±I£Ü,Pü´'üÙ‡¶¾Tn€U‘Óô9Jb{Ö|*‹¿-%:ÑRÆ}…‡¶»…—Îõ®ûìÂKë›áU1-I¾GÔ•Ñ·-YDºx33£ªüqf¡¶œìS£.pžC¿ÔçRÙƒÌ1M&lቾDÿßcâo¡)£B›%v×®sã]ä(èÛŽÝWfì=Ú¦R,¶Òu"ÞÖŽEïá`Æ&4r ,k™ X:íœF!(7(¡sCçÝg"¢#Õ“Λ¡NEyYŽ ¦ÿìÛkŽËl˜¦4QYL#ÚnªißAظ/÷f„P•'“g#Û¥‰øh>ú™"3åŠG¾ËUú=¦¡Ó‚ðFéý×WÞGrdÄ^RB¬ùâk´ÓµfA#ðÿ“iOÜáŒ9[?Wv Áì= z‹‚ 8…o¸IV¿»ÑB¬i-`É ±t KCÚI, ‚¯®k‘a‹øúQNìøÅIÙ@û‘ÇÞá‹ç:c«í·ð%A¥(AÚ´[`o$„:-VÓ€§ƒÊtàM”•o+Ê m Gqñy9ru•)*×ˬÃÙ6\ÀH’в-ûm(ÖÔÚÌÎ>–—²i®PÂNä†ÇËqè¸ÇÄX+~ºqø—AÝ´dü(¦´f-lXkóW<,UË‚’EV •¯ý@§k9Ý m'%’òe˜…j),g)({Éٛʹ7%5òlræbŒžXj`ä@ügõÒhð ¹ Åz®Ã[‘β; ð,s-g Ç¥á£ás:ÜœzÒáfsSgkSg’foE ÅÇXƒÑyÀÄñ6_1÷,تíü×¶lö‡®­ª°n_›¨=ÐM—ÏÀ_y¾ž¡ä@&.Óq×üÁšB3i ñ‡N¤|ާ³2ÊTñ¦üާ£¨[>“4%i¤óä5!@ÍB@˜%ÙšŸp¿ÚÏö½¶P¾m K8ìFÎ=®v¨¢ñ1_ÀÌ!3ª@HåÂkÑ„I œLÂ|AÏ(˜Q=‘+ÖåÕjŒ ® X£pEÚ¼ µÍŒ/a8U5òí¡sNš%q†š$Ô)éz[QtÕ6„bؽ0GZÜ™õɇ3WÉ¥xž-Íxy|$)C›~€ü÷eä°ÀÛ:{¹Œq)ád+á€Ý, )²à÷¸¬ã~"Ž£H·(ºÓ-.H¯Z1•L®3{ƒ·p=—þ&‚ËÈwy”À‹Da–üà›Ëu 7‰7\Þ O“ø)—7(·Sþ42EñæËÜ•f—/˜œáеñ‰ˆê«4ˆh;\Å\~ßÇsà‚Ê¡rVž#LÅi²pCΕ08kœù›V eUÚÜ{./ïÒI:w°›oôÖÃ÷£íŽœ\`;eyP>‘ËÓ~ã!“u\Œ–Bz æ"øÔȦä;MPìÈäN)MÔsŸm^…‹ƒIË·Á6mÐÒuÌæ1­Öj¹³Ù«&dÂO” \ñR’·fÏè§b¸¦dêM·L™þ$ÓŸE…énV‰à02£'†É €Ôiõ„CVp ©ZÞ§Ç€oƒ[Ï6pÒjÒ’^ O•}ÜtS3?ï‘_,³JkXñ[ÍòS+oðü‹}æ$õy¤QRæË§߃Ρ òœþUï´w“Aô€TÃÖѰ<`.5ó#”q(¤çöZE*ËÊd|,}¼]»1Œm† Ô[®×IžÐ5¹EâÀþú©wÿ»ÊÕ¥î‹;\å7‰||ž†ÊB]Ù^Jé!?qlèÕ;·þu#IÀAòœÐlâô…_8ÆÞá¬ûÆÏ1ëIåjzà§|gQQ®þöq:!Øò?pz±ŽÛõZe]@”½Rcéü‚«)ÇS@f¥RüøD¯CÌXå*KEÉÙJÆüVèGi”.)é6%*ÐûÑóZ>-óKA—hX1ÿ3YnœMðÃÇ÷[~’/%“Ç d~ü9KV 5ðûð——g’è‡gu÷ÚX#„¬!ÕùêyeåFL&,¢ÿ-0%@ endstream endobj 192 0 obj << /Type /ObjStm /N 100 /First 864 /Length 1573 /Filter /FlateDecode >> stream xÚ­XÉrÛF½ó+æ˜\@Ì>¨r¹Ê²"ÛÛå2å8‰¢ Ž%”I@€Zþ>¯±È\,éBÌÒý¦ûuÏÒä g1ã‰f2ÁÇ0C=4cÃDŒ¶øJÆÆW1Ác|-&Á×1I}ΙTn"¸`Ò8ô5S1} S’æ¦,gBÄL%À’iI_Å4É Ë áÇ KÎLÂ'B fI_jfi=i˜…¥¦:`3§1¯$sö*ŲQY–Xê;øAš£aã‰Ð.iÍ8Ô0hТNs‹b€“ŒÛd‹0 M# ²Vs wÜâÒÀVhré€c¬H peHÈ d '…²¶4dš…²ÑPw@6 Fna ·SX˜;p+&î$p(P‘‘©„+4$qO¦Ÿ}]®ªÌ×í£³ú€33=*oÙYŒƒ‡°MÄùtñþïÄ^E ¤³ö­‹‘ö©Kßó ü¹r+7™ÎVßš¶ÿ>/~L¦Ge5÷U·D|Nvd ;S&‰¤Ã1Q‘Å›R z„êhȼb»öå»"o©=Éûy´ ½‰y¤*ÓlD¥“LD¤cûh#ŽÙÕDÏôïþE)Æ,ÐÅj±8¢ŒQ"J@ý>9©m$Q€í“BDÕ͹$Nëø ŠC×ÉŸ ˆ³}ª‘¡C5JÒwðØ¿o¢,ñÐA”e›JDÓ¯ßlæA>Rõø„MéæÝ̤Í–:Èa” ¿Ãk$HµŸø ¥rÂì•CI¡¤:€ÐmÄ­ý´¹6smR&oöÞÊ(Ã#kÔ^9Çýeò«¼ýdè!s²o ÷±$*¨ø/‘¸v€ªø©§*¢¿‘$KÍ©ÐvQLÿyp)ÁGÏ-83Ïéé^*ÃхẩVYSo`Jìõ†ŒVˆµp{å¤QQ’ëµmñ ìÏ»G” ë»G”ÞÍÛ>?ŸÁ‡þ¸Gû“<ÍŸ—Ås8ÞZ>v/jñô½è"k-ã±h¿xÐD¦ý'÷ªÝŠ3ŸVÙåPJ¬Q­w\Kÿ0÷ìà endstream endobj 360 0 obj << /Length 2561 /Filter /FlateDecode >> stream xÚ­YK“ä¶ ¾ï¯˜ÛjR+F)’JN±ËI%•“Ý·8kZìieõh‹ÒîŽ}‚zõªg{\©>ˆ)€š?$ðãyò …`¹4Çæ]â©ýó ~üÛ;öŰ1^íüîðîͲž°<ÉùÃá´fu(þ}..ƒíc!DÄÿôK™EßwMS´%ÿYµ–F?”ÕPµÏq*”á‘yü÷áï~8ÌÇgiz§œ¸ókAÕZP.5SÊHÆ…$Y?Ú—¦¸à©×Ze¸7¡]?ÙÁ=Æ:1Ѷ(kþ½Ÿë¨*mA+݉(ÃÙá8ö½mS ´òǰÈ#¦§º~^Ô‘}¡ÉSÕ–h Dˆ¹`<#IŽdFÇ`£ÖÑwcUqÕ¶Ú&‚eÂL:ÜÖTä,Mòi_[4ÖáɨèíãL²$mc›âèöئ†)1oû°ÇÉ0n6|b7€vE_î14 lç¯2ŒØJë`2¾æÜØ¡¸qÏ©N_åÊ3ÆµØ zê/ÿvŸª=6œ3™É7±‰›î“Ýã%¶\ï}¬‚›Ý£`Ì9Ѳy{)[’¥Û ªÖÙ~ØåÏY&³‰?ÛWOõ *f¸žöTèÑyÙ_Çê‘GŸ³,*ê9:qièv=”³47÷YF¥àðóýœdÉGÉRy×­eàéµEí:ñÈ;3Xg,{­A½´Wí¥)øŸo±äò›A,k¶‘‚KoƯlô}jôҿ7Îé”ÑÑ_.—º:CÕµ.h.ËøU¬7…×’‹•˜od‚ƒ ß,jš{ŒÆR©è€xÄÒžŠ±h´ÃZåöKÁ:ÉZw"¡?7‹˜ÎàŒ–„…HÚ)ÎÔ|¯A;Ì1˜51ÇìÈ#ÀYùì2–R+8X¹ë`:eB-žèï«â©ö©YWÃ㊟.ìs .ø ‡ôÅb0¡ì†9f7fc q ;5'%g‡ª±Ý8ÜLÃ#ü©:V –Ä\•jCB¥:ʱ÷^Bä)_ÓìsU×´ë3J[TÑ}FrAó#®ž‹¾8ú:Æ¿p¶e,ãMj‚ù:F ß6<äóT=Ýèˆ4§yœ€ê£m–f]&ùhtœ¸Mà‹kKm;sFûïÔ «c”ŒFGr‚ ÒE­j/ã@CÔŽFþöaשèå…N#´®H0Š©¦ÁS”Oû@1Þ±Õà™óµŠ{ÅTÕ]ûìëG Mjùɤ ¢„Q¶üû‰–ÚŽÞUá­ðÙÛ£¸B>%Q>WÃ™Š¦¯äB“HÐ5¸$hž% Ü£,Ã#ò&ÜBÞ„£ÑMoM¯»s×{ßÁÉJ„ƒE[œÍªùl¼su¤."¨ºòe“D#ÈâP*Š€ÎF…qi^8E[ûÈ€“ûff âö4é³íܼ9oUXÒÓIU=¡Faàár µ-ƒ‘0Ý ]7öǰïV¾ä¹d*›qª¯ÿµÃnÚìæ`Å”šÓÚÓ” €+rbÅu9ŽèaZœqˆ>ÂG4½G ‚p•acKϼ£röØAµþmšûˆÂ¥€2 â{*‚;’y’$…-ÚÞŠaÇ?V.=V€7-ð&ñN‡Ƅy2Û$GœûûA—ã™.¤ß‚Ñ6OøýnÏMœÅ;†Ðñ‘ž(ÛðX'V˜ÖÖ¹°ïìQFfà ÁîqdÅä7ÛwFœÏ»®øCå{oÛWG$êÅÒöD]Œ(RŒèG³q6’Wa±€Hñу“ªØç¥Ý<âÀÄK ÏÒV9t®(ÑÌL¦öpß 3ŠcÐQ.ž…QÇFÅ Ð7©yåh¸v£˜I4Ãa,IvËj µYúju®Î™vb“離ÿ—`ñÐõ•u÷åzô?Ésò& Þøüe·´á–r¬ko6VsAûþÚ-A3¢á/ˆïþ †UTãy ùDA^ˆ:õÊ0<<¤;DJD¯ w”K(]ÚÒ–„2Ã2¬¯1èªÀ’xžêZ¬/ï.Õo”i2e\ªËƒ:²:U¶Œ1VƒÇ ‘‹÷„hôÄ„’  ,rInßБ É Ü¡¤ÜÜ/~‹) E;:cO,+w© Œã"A¶ÂQbËdP‘›«z@Æ}Äò(ñlWp¡¡šƒæ»¦c:[¤÷˜¤ˆ§¯á9LŒ¡wêÙ7ð3“Wâ”›|ÕW@y@í‘F‘¯êÙWñ•'Jjþ>`ÚtÞOKª°'W•‚I“oòO¸_±½_¢¼î¯93r ÕÓé&ØÌNýžØ=Mw´ÄÇ O†WM(¤WŽì^0ÑGðäß…G*KÉa¡*ñ_nôØZª·ú«K¡XÒ)gð UÒÀüDG½P³á/®«1óáz žººYZ“P%¥›{\"ÖPÙoá )=œi%¶pF«n!Àþ ‰ŠFòÏàÄ8^ÕÈ«;í0¹nî¿Cr¾îµC£p;5¾ê¤&[÷Ó÷9é”b¨4¿vÆáxŽÏUYÚ6>UõÛ@5•rSŒa©Ò©O…Eï£8ðõ¿¼ª©b‰~kÎÄ“&LÅ#Öu¨J¯`ðUœ"˜ÔÓŸÏ Ÿ:8àc–n?aM™ÕÈàÒö ki2ß¼ÑJA}½ÅÄ‚0ìÛ KÌЃéJè´ 4!2n ã(x¹ï©é}Üâåx ö½ºÁÞPtƒsšDR“…;“Wð¹¯ðä™y›cb&4"t¨pT WFRg·k !ÕÛ,¼èÑEÂíÑÄøÁ‚–|wF½Xb˜äéN3.t†ý5VÚZúî )óÒÊÞ~ƒÏç@ŸÏE¢oÖÐæS^0©Å™2SÓ× Rh冃¥F1½B‡{"gm¥wnWz Ưeµk±íO #¦:æ%†îãT}¹?« eBú:£oTÙ[>`ߛԄV(¨w â½Ä9``¤ ÏSÆÿéEÛ4vUxå_h¥;-[©œV̹1'tá¾yHýn|RàvÎUþª‘´H㈀8°*›4[ÆÉâ×0±Íeðk&–uÀ†é„—c}ýŸÞìç}7>Ÿ—o»>OùÔí¦f„Ñߨ‡Ýo¯Uø2»Ô­‰º-Òo¥1‘0aÌÖÿºq¸ŒÃkÿ¯©Í}xo3&|¼hâ=ÎÜêëôuæÍ}]’®k}`Z{³q6ZÚ|ñuÓv4ü™&t-ðª­à¦RüŸ—æOÕ\²˜¯7¯¿‚È$ Ví{‹<ê úv€+á»P G”‚¦ !U¡<ÁVøÜôeêLq›uÇâ2;#¼>}(À?N (4ðOõÿ°7 endstream endobj 364 0 obj << /Length 2309 /Filter /FlateDecode >> stream xÚ­YIã6¾÷¯ð­e ¤EjË1A2È`æÔ-`X]&Z‹!ÉUÝóëç-¤·\UΔŸ(.oùÞb±‹áOìÊx—K•ªØšO1qûç¿ýý“póB˜.fþøøéo¿¤éNÄQ—b÷x\.õXí~~:éóhú}(¥ ÄûP©4ø©kÝVÌü§m S?Wv´íó>LdVˆ ÜÿûñŸ~~œ¶O“äƒçÄ™ï4‰Ó(Ùe…Š„T|ÖÊõ¥aØÝüüž>Ζ«2J {ÑwÝñè&­vy$ŠÄOúüë•"xº¸ ~3ºªéî8zµuÍÔ`ü ÜsìÞ8‰i”‹l:J»y)àø“¸ånù“;BûäÁA׎q€Õ€1jÛîá\¸ò.L„ŒŠ<Û…ð)¯hìóiŸÁ>á¡¥TÁÇ'Ýëhˆ¶Ž¦yë$q”e/tÖÏ&>ô€ÑLƒWÕŽ•lˆ.¾¸Óù†à &b‚ RÞ³ÔÒ³äÛžU™ıÄ;Ž•Ä"J³r §î•ÜÊCÝ<ÙçKwùX†àT¬1Aº`xAæ|Á„U°uÒÌ_l×ódŠ”ðzúh<áxi0H|ÒùrI¾¼[äFñ­¤­^ÞíÙ1@'#àìÀ«¿ž,;0Od«/x3ÃJBˆbFªkëLö;g±XßÇò —väàäW!™¶[Ådàýñ9{ ÐÔÉQ€¶Mc*«GCÁ-¼Ôî-ªŸ­Ÿ DhM¿›[´®×!ã­ˆÁ™K}1K3¿¼¬3Éå_Aàà»›†~i›®²G˱øƒ–®„½¥#í³pe5ô3 ²td³h-uŽãÉÒyH –HÈ 7Ìü¨‡}˜äà ¶±µîqÛx­r… *Êg«AP>0{=ßð| e¡VHæ@ùX^úÊ*æ| ›ÚMã(IÒ»ó±2^:î2;ûPU­å3y$gø²ð) ï‘@±GÊü;„w+„1ætÝeäùšJ’o7?>ë>Üp‘ÑRÊ®tiáq³aÀË«ñýªjÀ9U×~™ tÓô´zþ¶›so0j~…ý5qHCäxâìi–œEJWüÁ‹ Xpà'Øs€¸Óƒ Î&¬‡'‚K¸u:N[&F#]Ô@Ä¡ÇÈH™ô;‘·b€Œd©þ Id‰üªÐ!l1¡mÃszï©n2_Ýd®ºÉn$©I$buW…÷Àî£1M«péí…¶{î-våöNáÚiRw¼šä.J´m+¨M¨ãäËì ¬Ô–j|k  7J*óÔ2q˜F†®Ê_,Î!G ;Ó”Ú¹—”LÀoõ¡D~*Ã4‡Ä OÙ,nƦ/«èã˜l*¿ˆ0pÞE™¼j" h¦\²•Ô‚Zi…`MY-÷:ñá ¬B&ãà×ñóÀÌ®%(Æu!¹˜"ŒÝÙ€â.•é¡°l¶Â âúÔïð] '€œÎDO> ÀLc«ŠÎL~„~øxŽ>Y¸Œf™=Š|ºs]EŸT ®`¼òÓ¶9:@´I2ÍÑË7J™w”bŠc­ÊÖ˜^h·ÀBèëmC©!¯â)‚;E1ò¹Øç@x1ðÈY'Ýñ”!> stream xÚí]oã¸ñ}…q/++U©¯}¸‡Ûî×Þ¡À!}ê(cÓ±°2åJò&Aÿ|狲”(½èÅ¢’Ãáp¾g(«M jS§›Rë¤6Õfwz“´¿Ûðä—?¼Q‚b<ÃüáæÍï>åùF¥IÖjss˜“ºÙoþ}8Úóèúm¬µŽÔûmlL}èN'ë÷ ü©ñŽg÷ÍØø»mœiU©H¥Û¿ÝüñÍÇ›éþ<Ë^É(b>ç´˜sªL™›¢2‰Ò†™ýÒÄ»Ó>>u{c¼OEÌñ\¬t¢r>öãø/Óh<:Á¯çø:MLm€/BŽÝ6«¢{¸­"¸ªññ¹ïNçqí6•VI‘æáø—m^D¶oìmëøÖfàÑy„íßáª^\‰uQO¸ûfˆñ2£NÒºy_rn-òøˆÿ˜)ËuÔœNnßØÑµÈ¢[bߺÞ1ŧIk‡‘µd[„u‡’ŽÎ}s²½Ðñi~tžxK—L}i€w8è‚—àbR"/I¾ÜDv76_ˆ{†³³!‚g„Ýäs"É6ÎSÝå(;l{Ù*&dä`â!^ð(z’¤¯:Ñ? ¸²<0è‘·ÀŒSø;´Yª£¡ã ÖL†Ú±àFž:a<¹ÑÆr…¤]çñš±ïÚ5=ž{÷kªÌƒCQ*#º©ttkwÛ¬Œ>`¿#ƒÜ°³g¶3#îçwá,©ð,d×lZtCÔ$°ò—AΑH8ù»øx±Œ,Ñjòñ_! Õj,¨ÄäÚ[ö` •åRFÖE¡×¯ËtbJ3¿-{ÍmDp¦‘!cÇ#ÆC¹;t1\O<¸0™)—dC}‡ñß°Ñ8ÿt‡Ë£ííN"U›¤Îê…¿AbÐw4ä“cÃ'pYF;ë.\1ô‚æ gÂ2Ž£;áA gÙ³‚âúSãm+DgŽE€ _%tkNÇö×Ë€Õ†’¸·¿K¸2ܼ½;ØK;ò‚ÜL¿à<*/’\“9Ó<…$ê eMõ„ü6Y£g&KÊ*ˆª“2+¦âÐøá?(ê[«ÿëÅÒ˵8Tùäk’¾Ò„œÇõ¡ iMr áú€ˆ~pýØtžÁ‹ Q—â¦€Ç o/Oè?-ê+ÖÀ±ý£>ü¿<|3åA}õt‚ü|•þ5jÄЀ{C}°ãðú·Cžräâ„´nêu9ŒI*£g…_¾“Ž˜©_݆eÚ;߬`*fÖ½„-Êù×`7R.ÿ,`Nns!¤æÁ{¬H²úIaä ¼=‰9)·“ Ûf,`&Þ ¤YA÷~n¦çá>ñR˜W`À¬š”y8¬j³Là-ºô…MlTž¨´^ÿO˜¸ñºY›`¥! ^M¡¢á‘#Â>à: ZòÆ,ZÒ§Ú€¨·á Úœ‚Ð1Pn|32ˆ•,PATh®ÊŠèSÓ‚ûˆiº»¬ïȲ)§3‘®0R><œ°^Ù†¬ãÌa3 ={wÔŽ<£fn&*÷¸°¬å¥T€ŽÖß!óF‡—ì@SÜ9I_ö4Á nGþèµ™l©Þ×pV%Ù$¦ëÀt=,ýbʤu@˜;`‹ÄB„ ¹ïÀ›,ÖãŠâ»56§¯"Vúãc×Á³‡]ßœ¥)Ñ¢\ŠR£6×,º›`ÙwR’éÆ"1Z>Ðü™ó3ðv5JáY¼šT!Ñ*ÆRKhw¾WôC~öÈ»Ð5†{ˆÿšSRm¤ ÄYãŸÜFn¼¢¥àÔØ´22L„5è_‰µùÖ:¸{vîêe¹ãí6?'®Ú$<ê¡+bÖ»®í|õúÜsBR]‰¦1|_–s±eè€ wÒ ~Þ‡ ªÜ¹žUn¤Ôñ8œYͲRlFœ:99]rÕË‚ã¥mLÅ"ã´ŒþÉŽdœÝ7m˳‰?\Híw=´—#æÚdzíG&‡j`zrîšô`‚BÊ pÔ­(9lñ¬;¼Ü_”D°W¨D—ðºêî˜ÊxeÅ^ à}n§ÁSf*I±Ø aLS§U§á¹¡¨p•X¹” ò|<Å[VSʥŔSa~ê†U׿€21r½Î?zO»Ç—P'+rnjý);‡l–“Þq£Ò¨wv‚5’PÆK ¼^@^t&~E²<\ÍÏ­cŸtqüþrûeg\W›™ëÎNAõ½£žqg±×³kï,Í¡'œ¥“ÝõÝj7X'E9ëU²F-Î4´U¾l „KòÎÒÐBªlj4߯Ñ-“ª¬Æá⩊Å/,3ð„©£éׂÞu¡ŸI½°JT]-Õo± ,¦ŠŒ Š)÷á\r Ì(Á)ö•σômKFHwù>ú;h TöëèÓžŠØ,!Š{°ØÎ¼_íÒ!4Ê¢’©å'‰Îcg_ÞCrÍòèâ›/ðP²mlû»ËÉùq%gÿŒé_.·À™ƒ÷ðç{xyÇŸ!åÅ÷]¿š4Ãeœúî{Îù2~·¦VÐER=j•jIŒ0+ƒØ·œí)bùÃ÷;&]dËßÄ—Þ?yšÍíJwÌÛ™é&®$çá"8éº=Ê4ÉLµÔѺžêÒI:…ºx<}¦Xý9þýÇŸVý”pýfFòçKÁù@òÑ$ȇ‹/_¡“Œ^…3ùÖ=å·ä‹«² ¥ø© ,”gW3®'. O5Ba!%®QHû‹ºNf¹Ae’¥z³2 ÞBµ-OG@ßÜ¥RâòH51†f/(˜›9÷ãªÁB”n÷ @E€çBè»­+‚çoZNùíûðˆ¡ ³p®iNÈ‘föi‡ŠLø|±lµ±bNU¬üð¨|„ endstream endobj 373 0 obj << /Length 1841 /Filter /FlateDecode >> stream xÚ•YKsÛ6¾çWh| 5S¢ø˜[ã8}¥i'q¦‡¤3HHbC‘*IÅNýíÝ@Š”`ÓMX,v?`¿]ÂtÀ]¤Á‚‡!I#±ÈvÏÝÛl¦ñîÇgÔÊù è$_Þ>ûþu/h@Ò ¥‹ÛõXÕm¾øè]oå¾SÍÒÃУ/–~ÅÞu½ÛÉ*7oŠJ™ÖM^tEµYú,¤‚z”.ÿºýåÙÍí°~ÌØ EÉKY¶HDDhcXú O½jÉ„wØáß#<´êµy¶ßFƒuYd¦;ÃέldÖõ3*¹S­iÊF™F£²zSÿªÜ¼ßm‹R¡«`ºOCBcc;©õ™j[ Kr¯Û-¶„÷WSßL÷ª¨r+#À<íA'ï_ Zp<;N¹€v «ée^ݼ±RSx‰yÒ }çR$H ‰›÷×N5”„It‘šþ¸qiŠ"¦hzóúÕ~1>ªÆa8·›AäÛ›?ßüüÖiY b‚=ª2!IÂ{‰w7·NËBQp‘šïÞ:¡â„3~&<.^þþÁiW$.sïýKB,Îk'^aLxÌ/QøðÑá¥9iÅ¡q"xÚËÞj_>pÎHÄñºq’E8ŽßÌ€”ª| ¥Ó9ópºíIÃAU^| h¨`³0 ¼uSïœ ÅÑ „9ÅD„¢––ŸqÎW=Ñ,UTø¤@¥²3=m×yZKrUÕ& ᛬ÌSU¾ñ›†)lT2u¼+ÜCY_ˆƒª2;”i]IÚ'+³7oâ©Ï1Çܸ÷ÍÈïK™ƒ@¾ÛάÀÃót’ׇU‰,ôþ9Ôj fc꽯{4:ÙúRÀp"7ÕáÒJ:°7Ö,ÑvÚƒ~Å£µð¢ÚLZ·­´ÁGlàåÐ%ÊGH;s8Ùèä§Ÿœ×ðùuddóéÀ µè¡Ž¨¾©æ~,#ÚXëiÄqÄ"ŽóFˆã«¾w¦éQï>Cr(¶v9Ž˜Úì!ÈᣃÍyà÷R@Ðr[gêT}Á£À›±' ãÿþÄé endstream endobj 377 0 obj << /Length 2922 /Filter /FlateDecode >> stream xÚ­ZYÜÆ~ׯØÄ4 ûâ¡X~°`òdl‡(€¹$g‡‡ñÐîþûÔÑÍcÔ£Ý °»º§ºX]õÕÁ7ü7Yt“(f:½)N¯"¢ö÷7<øý×WÂîÛÃÆýjçO·¯þú‹17" ³(7·‡5«ÛòæßÁûc~«~·WJâín¯µ Þw§SÞ–LüGÝV<ú¹¬Çº½ßí¥©„Üýçöï¯~¾Ï7R¾PPÜùŒ¤B'a|§:J³°ÿ:V-H(¢ž2 @p’)ã±ÂâãȤîÀÏœ§¼è»70VQ0ÔíN÷ýM×󖲛¦n¬ûSƇ©-/ÏÚüTÑ 2ø­ÝH*XTÒ TzO[¶8I‚òi—ª(^6ßå*çãÐäÑIÕPäg–g`J ¤¾¶2–LËïˆk‡¿þ¼ƒ‘e˜÷vP=žÁ«Òªå§ÍAùê¦ÁÛMùêp˜9ÊOº.ýˆÖŽ3bwÌû¼©n™ N»½XD‡Ë@ Šá6Ú¢™J6?Xù%Ž×&,³,ÔF $àwvÏÆÌM˜ÈÔíxÍÌÈ÷P/Wð©å'W˜&óP`GÁ/»T£¥£êöJƒ_ ±±Õê1?› o8Sö†Sº¦¡[z`çÒš5O”Õ;’OùǵB [ác¹ñê, Ól–íýþÑ«¸(LŬ•/QŠP·CÕ,@Î$ðurt{š$¡‡ReÖ.ðHÐ>ðÿwÃF¦y%ÀK…0#^ijàˆ÷È|D–? x[¦ä`ñp;*1àõõÈ#XÆ~*ÆÁ÷¢èV½t¯ò²¡ #Ôh!' ¿Ór~ò¢nàëoh½§>ÕMÞ3ü ¶çºGapŒÚÃ5ö9 ³ì#œÎÀƒ¡ ·ª|œúÊ0ÿ%î7ùIpî«3ZÕ0t=¯>ë±çÈÓÜYúÀ¿bs~âɨ’íÞ®Ú|ݾÎ)x e¨ÆqÙˆ¯ˆÔ¤qb²?t=¡9qx ¥÷ ¼òÔŒŒ1¸)@IˆQ〩up ØV14.;>t“ ðç¼\°/뾂ðÀÐ;0 ƒYè3\° €ù¾>x]#¶õ[~…/<[†FÍnt…¸6\áŒu‡ µ½"˜ßQ$w·R¶æÐEA'§¼´£»œ¶Ò ÂÖþâh×*—ààꉭ¥DùùÜ`†@ÆÍ›çß9׃ë!ܺßpN€#²‚5;4‡7>ÛÉœæI½ÄDœ sé‚É[I ºqæ™]<ªpÃãȆ%ÒûÀ\HéÒ©ù†´vº^iȪ¿á, ¦¶wä•öôõPyü¹ÅŒè [iÛ±]o¸µàÜ9@ïÄü4á=»˜•6ÖC×P^F“ñ+V¯¤Í•O]Y}»Ù«Ì¸MÈè“’¡Ô³å#2 |Â:{äl𒻉ÃL¨ç*Içp¹x¿$Aù%>9£¥ã:¦ QñèáXGFˆÌsÏ>!@rñlcr6j$œºÒ³õ‰¯S(æø[AúéK÷¤"sÛ8‘¹d%4hÂmù\ûØ@äš½|,ÁÇÐdŽ;aEÆ\Ý´d•eãÄfþüZô¨úÓåܬGE鯒êñˆÙ‹x Õ?®h%]. ›êÇêéÙµÏ MeÙ&•”èÞXÊ!ú˜-ŠÉ&y[T–N1Èt Jt7:Þm_'‚‚-Ó_– ¾›€KUéæR÷xf™÷¥OúXdzahõ¹¤8ñÖRöÅØ<úÆ"ŒÌ,€ä : Pw´Íê?—D‡¨ƒ}çÔ\¼3¼Ho#†âidlñ›w"×v{ݼÁ÷é±K_)b y¤°ø”,AèÛñ)³í #?>‰0]tÊø$3CN’ “àd)E3ç$2³•jæ '»ìâæ~°ñ¦¨±.xõ#å&Ž-˜¤EH_€ Zë.o]è:òeÛ³ñ‰Häu „ÙñbpèÄ\¨ú@µY‡4œq²G/ƒ”Šøš„ÉÂ(N_¦(™-ˆ[vG/h¬oá ˜úÞv,€D h}ñ"‹Ì8+™/Q“’•5 ‚ÞÐLΠ*V’m)“ØRÆbš BïðÃ&d$*6ÿ3l~ˆLdÞ0ER¿gHS/ŒÔì ' j3»ûk8G Ûs§’PF³øy ˯²“ŸÍéÉ×Ù™o`÷ãÿEº£~xþ®,3Ž1&ºr)znþø"¤×Yl u#ÖÖËÇ´ˆ }N°°ÐóÂ0a€ /CU8'ŸŠ6“xúô*Që¼@%Úæ¸@Q1Qn§ž]Ý cô^ÁîJ=`'oýÜÆö ¤?ÝæíëÀ>rf|ĵ[zó ¤ Âõ™B7Ð0¡¼:¹‰ ï5) ûìFGÁÉ®²O• 72ê,%¬Âûð§«ð¼+&¡ðšf²©µÐñî!rý†*Œ\¿#RN6r¯Í黩?¸ãÇ‘.©„!š¨ˆjÚÎ{õòùGÙæ)>—Î"ìðÃÔC2™]$zÑg|¡[×÷’) ŠÛ›Ýô‰8»™+fœ,‚Ád¨ ®å”LâôÐã{¯Ò/Ø1Ò=ï'lýMàk!Iäšu¾â9ß lœlÞhk@ÒXŸ… ÙØ9®Ågî'× çÝ®HÀññ†œàœØ]HdÄÀ€+ßTd¿¾x¬ënqvôygâu¿Yq «œÕaU̪KÃSjÛ¡´_×cNIÙêÖö‹Ûê¹¼õGË0Ý~ÕÀ6}ÆpWE@zz"{PPLÇõáØ=ì±O¶¯Ûý®îl:ï·Ëï«¶ä¶—û.²Î×=Öká†Ý’e™°‹e=Ê#ãëbKÍÝ%|ÚòXs:H+sy “Õ\!'ë 6€¾lMœÄa§‘‹bJ›tðspŽÔw÷}~â¹m:ã‹I¬1˜5ˆNw}Þ?ñœÒýÀ§¬üpih\h œÏ®oº¼X¡ùJ³N,ðe±gKˆOOT>OüaºÀ TÎÆ‘DUr^9có¦˜è«’ùóM3¹Ž1}pvõñ즦äáÒÜ0ssÃh÷íoÝÜ‚m:ÄѪѓu£!¶½VxºŽ%ÃP:Û%FXúƒâp™ò#ñÌײ·¬¾ùâjüɯ endstream endobj 380 0 obj << /Length 1450 /Filter /FlateDecode >> stream xÚWYÛ6~ß_á¦*+F<$J)ò’ é¾4Ý·¦@i‰kÕáHònößw†Cɲ£&‹Väp8œã›Ã|“ÀßÉFKÉ •oÊæ&ñÔ~¿¡Å‡Ÿoxà‹1^p¾½»yõ>M7¯•.(PÓ ¡àê5g¬às¡kÖ‹`1çh÷1¡¦¼’9Ï'¶ë|¸êh‡ýl¨þá¹£îs]°\¨KW@qtÁØ‹8vá;ï‹4αõO 5]eßØÆ”Ãšò.gåÑõ$ju‰ ÐÃàB°|sU‘¡Ä¥¢ŽJÙÕsðq¢B›…¢vÙg-Í;1ªG(ct2éz ŒÁ†&;ºG1vm í¥9NÝ·ýV£äêªOž¿Þ%4æÁç–Üdu°¶]ŽSfÃârN ±¿ LØyZ3Ú Æ´ëíD±4™ÛÉËuuEÂòDŸ{°W“­FFæ7׎¨‡oN ax–¶bbº@Ùõ0B"0aX»Ÿ8VÊÓœÁñ3,;'Xåz[ŽTŒ<"û0«JL.[ž¨—£†óûgŽ3È難u ™1Š+¹¶¬O•}Z”Ö×Ê* ÞÐt8 QÈ_€…FA¾SÛD–x|qÅ}¿?5X|» “ŠŽz˜“‚àr ÕJF¿PÑÎúÁ5í~ Bh¼B…!W^òÇú¦y½ßæ4Š+!éÀ{âºÅß:Y¨Ø(¶Ã#,„z*„pï욀40©²›+[^Ù±|åÚãiìËÕ —/'­õR% VÏU¥ Áö•åËW4ˆ€1 óEÐ.¤o+^g’IìÎ"ú3|©Óè×Ö´zïÖ§i4Ð$%ÉùÅâ°)Š{…ÿ"ð;7Ü`ª…õ¦8†7'7|Å_2gsBqh–I@µ×£®¡‘÷T·0ÿÞÃÇT»¿Å]q5z‡ÁíÛ À-t`°Iƒ¢Ws^‹í¢kMM™;<Ñmó™M¿“ÿ` ³ endstream endobj 383 0 obj << /Length 749 /Filter /FlateDecode >> stream xÚ½T]oÚ0}çWDí¤‚T§1I TÚÐuZ»­Í&¶“8Ä*±™í”òï—ÄN€hؤ©=Ÿ{Ï=¾÷BÃÊþ 1°Œ¾m›Ç3‚¤e§|f(ðxÛ‚úÈ.‚›#¿uq㺴Ì5€†m†òCcÒÇh!1ïÛ¶Ûð²ÇmY’ ªÃÏ„b…®C" u@׆lC§óËÿÔºö«ün·ÛPh~ó­ÒÞ¦R=Ó3zýìÄs”ØÓNFtÛ~L„B™c…F%gs}.c}<Å1z!,åê+‹ÔÿyQSŽ]¤RA\–WDf<¯.S  mBn)Xp6ã(©²!"¸&àöá»…ë´s2刯Ì€–kµ¯_‰(r7MIh0OCìÆÿz®Ð‰XÃâý W#s+nv®,Õ®"ªÇ€gÔŠ+ÌãAý-–DÆ Ák ¸y aÞc¢|±¡´z‡u¬³Ó3]¯ÞãU5ÜÕÉ¢œ¹Âá¦m~òÚÎ=øru’/ô®µa`#~3®8YKì¦Ôʱà8_¶d Z2¾:˜hTÑhöŠ)û[û ǧ»=îÁöi“&îm3xWËqœw%«uÿØz^¹#dƒV<ôLZrþ9Ö i÷únó†ÔÌqÅ|ÏÚqXéNMUäÿeô±=»Köä¯mžì·9ß ³´ endstream endobj 387 0 obj << /Length 955 /Filter /FlateDecode >> stream xÚV]oÛ6}ϯ0Ô³R-+qôÁ1² à ¬…ßÚ=ÐÒUÄE&’²c ûï£ÄKª¬,мä=çððRxéž=D³û8VëYz¸‰Ú^ñ<3Ï¿Ý`‡t êD>în~þ5If8 ¢<ÛåÝ¥vÙìË|[JX 8Žçø—Z­’ù–„e¦óOÊÀ´ž2ª({^ eŒ×xŽ“Åß»?nžv>²\þ Ð&ò[¤w]¤¯Ãõìn½ q¼2`ß_uû#jþ·èË&Ðxã»ûd^ 8R^KTP©¸87Àt"„ã'£sý\oj8oyÆÑÒ*„^uh²Læ¯5W!Ê$Õ Å&ôXFó±‘wf… 3O^fHªs æuOõ<ö.Ž’h¾ÓhÌ€Þœ ˜}QÜFÛYª° rR—*ì±¶‰w›G‹>凪ð>’Tp—­ Ê´ˆ·;£Àì@Î…iÈÊÒ4)Ón"©¢œÁ¹Õò´qDc h« XVD#û˜ }«Ë3øk³ûýÃí¿Íã¿fL„}¶+7/y0A›ªòÜøê\ÙÒ5…iŸ¸°-„&¶2NÐûk×cvnZrév–×{g’6‘sö`þ ÿ©¥Û˼=ì=a/ÚcÀÈÍ#ðB·oþo‹öÁ’¶ÒíIú"ËÆíëWí}ÍД˜‘q)©¦ –†„×X r(LkocKªK³í˜`÷©U®¯kZ áÏŠ;*®Ru 3åµö^lcà ¸.Æ&Ëúb›Ó7†€\€Ó×/uÅo4µÃ®&ÕlÏk6 [8Ø2ANÈ*š…'D|ò‡þH%ÞùœÚ¬^«®Ì{úÙÿE/·æyîÆB/äüat»¿[ákÙ/G*©'²¿”ÉÜQƒ¾ºäHhÙRÉ.A]ê^ .Ëu\g?ÙÉR ZYE Òkƒ+æÞyF9£®F ­¦àQVÕ @¿×‘‘²ä''G%ÑOÃs7 ©)®ú }AèâvÝ_úJc›ì2Ó­«gNß:À/•dŠ®]­K8ŸòHFeU’ó8ÇUÃóô¹p{wD|öŒ HUyž n•ˆ@lÆ62Ô Pßž0Ÿ™×jrŸ—ýêœ{ZîRõ·ëû{ÖÃÃIdw…ËβŸ1úûB^¾B®S'—BûÞÑ~è«Ï¬èct#'ÂÔÀ{ÀûÖm¶_ï0%×9Ò®gDä…¬ý˜þ‡Û"4 endstream endobj 392 0 obj << /Length 1560 /Filter /FlateDecode >> stream xÚ­XMoÜ6½ûW,Ü´@ĈÔw.EcÄE‹(‚zhz %î®`­´•¸vòï;Ã!µ’VIì&ðaÉ!9||ófH™¯øã«iÖ«jk‡õq2Ìiüú#8¼ñ?í®ßÒ¼ëÒÔ‘;ÿçë¯-ÓòãékËF«î|æ}–̓_Ë^û²Û-móJ5%FÞܦ@HÄÂ(Hˆ/_ä,ˆ-!œEà6Þ»ª)å}JceMaK‡höäs*Ü÷$ÚJ;K復ÖA®aõgêXWãN{BÁ‰,ðtKö‡µH=õ™Œ½ú÷¤šBá=™Â˜“é%ë< NíS¥÷-* #ÄfŒ²´Gè!$#i´b缡YÐ)òp2kÆqøÞž Û¥ÚÊS­™áË£°%L¸”ûͰš7†€ÌÛam]·¸ý% éGŒBÿÚÆ.Ÿ$H˜³4ÎàèÆí‘0U ^ 6èÒÎNïÔVu½EÒ‹(õŠS×)ëÈzÌ:œ…¥^ÛWí5tòÔ³a¸€˜G,ăì¾,Lù ÒçGAêäÓA¸‘Hµî´ïîY .£–@¨^¾d#fá ¬F#©NØ2a`xÅF‘÷×:‹°ÛÓ¨½V9WjÕÌi­´67‹Y0»ž-½eµ«tÿâ€ÎûÿMòq@“ŒÈ+Q—ëÐ4'M®G1… Žz¬ÚSO=„Ì¡Dúq ¡£3É,èpBça.eGäFÞðD¤ï ¸{fUçù”þbÐêpÄ+*ât/ÃïÁ¼d×hq0áJäx]|ÐèáÝfWìÍÝW…¬í˜AKí¢­OÛn›™“!—ï©WWó*ÒÈ–A¸mc÷ãSU×ÔjZMkör¬%´è½}CÞm•¹xq TpÂSš†ðíô΂ÆäÒ@Ãðr_ÐÅIä¹W¶ÃS<  ìZ>8ƒùt$ë¡í¬^ã ÙÚÆš¦Œ å¼Q5X lèÏŸ%h«æv’ôAé6\8ÊùæQÍÈ[¾–Ž]k´eÚõiôv¡Û؆μòñ»åUêýsó‹ÞÍ‘’¤EÌr-ìf[A¸ÀÖ\ªÁHªç@{kmƒûQƽOÚn=öu™ƒã8r€ç.âØå S˜¡1ËØ¾^±qNèŒzFIã¹Ó 0œ?]‚p–ü‚œ{Ó0ãÓ0¢žò –iˆ<€`ã+[3i>8=¾Ôã—»9 Ιd’‚¾]£¡Ö`ûœ>á<}¢Åô OÒ§zAÞµ’?^NÏ«úùisƒ.áhgæôl0 ÐQ'ÍwñlöŒdaˆ|m+˜2KéSú›«ì–z6W·Ç…\¹`™`3÷¯°ÿšU Ÿ endstream endobj 395 0 obj << /Length 1462 /Filter /FlateDecode >> stream xÚåXÝoÛ6Ï_á·H@¥‰eIÃ0` Ú}`ÙCæ·uX‰¶…Ú’AIqóßïŽGJ²ì$nÚ=¤C‘š¼#÷ñ»ã‰lÀ?6Ë‚YE~ÆÓY¾½4U­f4¸ùù‚™u,ôF+ß..¾{Ç3øY±Ùb9µ(f9Wk±k¥r½(Šö½ëq;Wõv+ª‚ˆ¿—•¤Ñ»¢lËjåzaÄRæ°Äý{ñÛÅ»E~†g*Š+5O4§Üg'M•,”Ø{y§”¬ZoÓ«õ!ˆøc¨ÍÔÜ8ñç3E>‹IÊ\*Ù¬ig»Ö"¸CBÝ0uZâ tŸœñöH…\ŠnÓ¾±[ˆFôËNï¿ï¤NÝU…Oú$`Tä êã‘Baèó8$˜ÏýÐõâyhýŽ“Øyïf‘S+š\‹ªÜuAˆî,\9Ú˜üR6m­Œ ü`™Ÿf'ò\î¦îûCî-Ó‘À¸‘m§ª3<ËHòOZ2ìMçÆ³00ba¤äJ¨b#›†æõ’~÷k©ädÄ£ÑjÀ¸l ó r~]ÚUe3n)U]yr Z@Ü”;.NÙ¢ Ú#·‚ÖyQ˜È¡<ž9¢(dAô¶6¿kÃ[_kê&4ZºŒ\‡ã\'i¬d.6Úº/Ûõ©…óÐO!‰QQücNy Ü q» áš/iuÁ'h3Ä2ñÃytCø-|M·µvCQ~—¦ ›ÔxC{LþœXp(2ØVšv(rÛÆ®\••عiE+ýS^2ÉÃàÿ„ÌØ)y_Ö]ã(€>»òvç#÷ºFÜ»&þ ÒíÈqúñÒ¦»ª»Õ´lLÌnlqXÊv'À¯«‰³¬Ò4Ë!ç1“.-δ»’ŸÚS6Wg×Á&/kµÇ9déX¢ÕS“QßÁ\Qkç`T Ï«—Çö^{?|IŒ-{-òJ§3pG(®q”—çì˜gtº¬ŠGLøñ«š éÖæT]Çœ²ÚuÆ´5 Íš9&z¥/ýiZ>]›Z…õ2AE˜3†¹Y5ýÜ C:HÕH¯‘BåëS°VçûèO¢Qˆ7tl[djŒj{­ Ð5œÙ"N:à_àZíc A­ÜåÜv»K+ÉæX†Ðñn"Òz0X˜šXÉnJaQ¦;‘ÅQÏ!*Ü\É­Ñ·/¤:6BvTÎŒÖðÔñh^ždΨÈÁ„bE3Œþ¶ˆQIcŠÄÑÌÔ„B/¯Œ”-¥F/ç¶Ð„}uiå™hŒ„‡áÀÔ¯ í„óC€mŒ•R¼çRäúsn»W"YLÉ(0ˆp Ž&u Ý=¸Š~ÆžbŒfì˜÷íÛ°·iU/®év;MÔ] îlëcÔýD{Ù5RiÀ@³ncu·£úërhG±¦‡0hÔÚ?Øf¹¿–úÆí¨{!ÔžËþk¯úÖ³?ÌB ²0‹FÙ¯É`ÈD9 0ä# —ˆ®ÑFy=t´p…r^3´Ì> %ƒ¬|´À(Ž'0Šù(À1e£¦öz›=–mÀŽcì˜p$”È¡‰iˆg¾ õg¥>YB°ûÃNÄGãšj’îÄL‘ЄD#ÁÔÍŒ›º9^¼£÷„’°…_ÂðK!?*bü bm‘Þ5æŒqÌñ öÉÊeì5Í7~Pšïõ8Ñ ˆ“ñWpbŸKbÆíÕDûk6œ®ÄÀŒÐ"Ì‹ 0 ÓµÙ¾½Ì£áÓö0óñ«Õc¯2 éeè…[òãgÃ÷Ô›ž¼qÓpt¦ö–êàg .éQ$Øq°I ¦ô¨XŸJ {‹0@lû†@ü*1Ìþ[wwäÖÿs1f̾4²ù¤‰eý›"Œ( ãÅG8æQfp ÜãÜâÆÃý«'Œõ9£û×¼¨ÿ )gW… endstream endobj 398 0 obj << /Length 2320 /Filter /FlateDecode >> stream xÚåYYܸ~÷¯èˆ°Q¤D*oöd7Ø ‹Þò° š=-ŒZëðxþ}ê uæÈs`ØÍ£T,V}uÑâÃqÈブ2Ê•9”—1­vw|ùËáèB ”Ÿo>üñç4=ˆ8Êã\nNKV7ÇÃïÁõ¹xlwJ)ñ§«P©4¸n/—¢9òâߪÆòè§c5TÍÝU˜HaD ÌÕ¿nþúá§›éü4IÞ)(R¾!©P:Ê™Q‘Š…­$ÕAÁ?ç+TýU(‚Fm÷ÄË5]…©Hƒ›3îã¢ÿ¥O³ i›°jÊÎ^ls•è`(jÞèmÑ•¸r&*øì¸í©ëá#Ì2 Žq” +¡h@†#jn ‰Ô ݳöF:è´§ƒvlŽÒÂ¥³å¥Ã/Š<Ò¹æïá¤îöãm?t ÿd<‡·EyÿXtÎLÿŒÓþ Çu¥JÇt–é7¾¥†Ò$°ÂÙý#þË,au8wíxG$ â³åU'¯žÚÎÓºm”40Ái{â_>­èŠÐÖ»SIv@½ÐÉÖ6óaKM »Šn ‘1_øåsaPŽ]‡¶4£¨·0b(/‰àd´Óƒ¥•Ì,n·_jç¤v_ Üxò“±âÏ¡½Ç³ívÅÿ¿„ïSÑ܇Íp‹înFê¯áuøôn¸þÒô ¯bÍ6Tql„êz· ÌÇËd~¢k™ÌÑëࡳߪvìy¹ô!·P¢±‹º~Ú|ÔÛ²õTѶ;î™¶%ÓÆa0xuNâš•.L³bðd¤ÏŠ­ˆ@Ìeðj8;2Çvu=ÖX¾ÔX¢’Hæ¤"iš=­fQœy„Aª¬W/ùç4‹”LÞÍØ >éŠf§®½ÖÀMà»t­;:äÂB1¦$d3SˆyDesGHneä‚–|äš 9wþ›GV5Žö¬ËR\Ûh¥ƒO+TÐØ»b¨¾QÐâ• ¥×.âM¦¨ìjXa:|KÅb©cä?ëg¤c1xa`ѱٯIŒ™+‚IQdaò(5rm§=Œ&2þÞ”¨ãÌÇ{¼Mà%ù«·ƒaOी“‘ýÆÁ)dåëáNµæ€ü!,~(ͽãWÜ53Èìa‚ÓöÂZ""#&`’,YùI¤“×ý)´§øŸ6çR4×÷ŠÂ”*Š(HR¸K9‹S$L{Îa¶¬0ÚâqGFK‘³ED®‹~؆äˆåh]5økøïwDh±ÑÒ¨yã(Ý8îaX¦_vÖtå¬jé¬jéôéÄt‰{œq‘z†P¯yVwf‹›Nh~ ]⊡&ÛÞš¯9}¿EÜàZì†G5Û4,ü iùwûæ€kíü0äâõSã{`Z^¿¬å(† cRã3Õ:0R‘"}‹5–;×¾À­êéÍh;(c†ž‰«÷Š~ÃÅú7:Ï¿j dvļ§@k˜5z‡i±ª9@DeRo/ÛžvÝÛ@1 V¥Æ³:SBï«Më´5d‹°Ìeæ+Ð^Uþ™8`ñä <¬ÌÊKÔNÃï³v:•Œ?™)ÿèd§±ñÙ f~•­ØbŽ$Ýá™íæì¾¸ìJñÜäÏŒ5 ïZÛAÒRó†À·T>yàêø|BÑï®L-úsÐþ.ïxÙà`Þ6>VU½cß[‡ÑÂijUïb ê;‡©›²†$dX*>ö‘“i)×ÈñO›á.„¾Œ·í8¼ûõh‘ôÙ[Á’¯ã+öœ%ñØõm‡á /^[wRl{X¹XHzŽUË¿÷U]ÏÌw’ý³wR~Hl±quÒ g.jé¹t‚Cß|˜s ëTñëºþß}U%®vÂÁF͸Äþåg3%éø#êêÔ¦†t—Ë*Ÿ†Ž?ÁÆêÍ6èÍ#‰_R·Ã©àg$ì ÎÕôøKe;VÆÒ—õ8Øda©ô;+b'5ò¢H£´ Œø¨¢L|F‘ŸüÎôL› ¶jÕ¿ò*Û´`~˜u€h¯ò÷®œ~ßÃí×±ÃépŠß_×Ï×á·w»â§#ЧýK< ,·h´õH¤¢ˆé @ÿeË•ÛÄÁåNq,ên¡º`ì‡NòuëÚ‘Æÿž)z=.yfó{(Œ½ÆöþÂ~mSZçž5²¿GLØÝø›G©Hçüu7ÇêH˜dù< šuñTù*-òÿßö_ò@¢ endstream endobj 401 0 obj << /Length 1986 /Filter /FlateDecode >> stream xÚÍXKܸ¾ûWôæ¤,­(ê¹9ÙŽ³ðÆÉÁ˜ â=p$v·0j±£ÇŒ'¿>õ õè¼=L“ÅR±_U‘»þÄ®w™”Aç»òü&$jwÜñàËÏo„åóÑ_p¾xó㟓d'  ±{8,E=T»yNê2ènïK)=ñÓÞãÄû`ÎgÕVLü\·šG«z¨Ûãޤȅ'Šý¯¿¼ùø0íŸDÑŠ"筦镦iBƬé ýºíu7°6_Ã$ü«ÿðî= jrmj’éÎ2 Kø´øZáOŒBy^î£Ü;©N•àÀŠ[éã[yEå’öº9Üè¤Þ²èÇ·L{g…¥ÿ`çAÜ¡¹¸Uýuež»½ðú½/Öí¬úÝž|8Õ°u”EÞalË¡6-Ϙ*= ît[éŠWÿànXÑˉÛ+¦á¤· Š„Â"‘ØT5È¢Ìq ¹¨ÈþC³Y;²}kƒLiš}W~¤ÅÄ¡ûR]–õúߣnK¾ó£¢Dž­#Ùkö dš@ÀøÇLsÖLžëV5.€˜X†¥$®÷#Õ¿SüóX·e'r` h­ïëc«+Ë2íy•>¨±‚½Ÿf¹÷i°üMc^/=™®uÿ¢UÕp9H2Š–LRoJ¤ì"ù¸b†A³Ëª·¿¼Ðƒ¾ý`lkËôR'°ÜŒNf§×œiålÇ™K[K]Êe°+Jicü­öí;OªbB„Cpˆ[Ú…CgÎ<"ÛpÀpzµèU]NÌ" YaVÅÄî¬:»Èîß,5¶ #o³–ð;ÛŠ3ƒŽÇÁ ¯Ë!ðÁH˜ p‹8 d&v—µkçiDÙtàØ#¨‡Óî›.GLœCEm8¯<ÑÛ tâŽÁé ’ MÖ!*¹Óô÷°¡Sm1½öKðo?—®þp5ýS§M¡Ã«X‡Œ×l©:˜N¯˜C¯»Þtü!,ƒ™/h; × {&”X®ùÓÛ}ÔpÍCâßnäÌ’9òÂ~R,4"hÄ!u€@YLDÕMƒ9àÓa)Œ*æÈ~¡”0µ«WHúB"‡«o5€Ã,¤nä$–(gQBØ6bt,5Q|Ò½&¢u ®6PT,êDN7L¸N9üUañî{Ø<ÀB{ÓG(*#^TÝq<Ûâ¼YýNj+·òÖ0õ×PH]ÿ;Š_LWõËóÌpwv N<*—šÇcÃ@Lž9¬wç°&1Uk'kCP쩃…ëü= À€ççS~‰O”{³W2íu꤆-G/¶¦Æ¿ ôÆ2cô —50X¢¦7[#‹¥†«o½‚!³Z±x•"±(¥Õk”ºO¶ÏæB€j¬dœ=£ÉØ“ï †ë}/¥²xZÂi¼N¿Ø“L‡‚®«ãØuz¢ éÆÖ¯ƒq‡p¶ðŽ´%q91dEêý;-(þiWIHµÐ%¡ÃUâag›tÛìóVáÙu¼N?×fì׎v's9𸲱hÒ™L™³|!´œÏÜ”P÷Ʀ2/íftšû[Ögc+^ν÷/q@¶GÒfn$Óu°à‚…c¬ƒe#…äe¤ 5p¤Pªâõu¤²,—TÐSÏ«f¹Òm›ð½ R¼’„ Ù€p„âu„Öux’ÈmðÞ¸Àá½TSÿç62åý‘ù0IAÇHy¹ˆƒÜŽƒ´-­«]t"w¡ 9‡"óìF7¡ Ó¶æÿ&æYw/] 7ѳ©ô﹈îá°iŽ|‹H£ÕÉ‹3ùl¨~TÜÉ·IT¸‚ ªå_ýíÒÔ%ÝDÒ©‡ôõ¢Hy<ÞÕ¥ýz™^·>“èÍÃ]ue¾¥0’Iá .i„9¡ #M‘cÖgXxMëo(Ì« …‘pƒ˜l­01ñ5âZñù¹#]k™DöY@BÙ( àl¿Ç{q+{JêyjÚæuóžR¤AœÅÓû¬Ê~ 2 ¢"wl.Âú[27N#Çû\oɃۉé<¶§â©vºßDo8YÈdЪ&«]!“°è®8ö>ÎWYì.p÷¶ gûþ†×'9]É:{ÿ^º¤8œ\ÔªlGäWŸØ[>^M&lk’Í€¤™{ˆ‚ÔÉboÑ%n‘<ÉT¥hÔž.ÙÓ±y–¯>8ß67 ‹ œÍý­ëjDi<ûæÒ¨ÒªD¥)Éû ${ì„xå Åà×Ç"Õ)Òáû,¦ R/c¢£.“¹¸Ð˜vBLs^ÕVR}<Ñé0 d–áìää\zÇJØðÎUR>ªòéî{~¥=ðåxã"D.nü´>æ\]Q±¬®ÂØ8®Oר>¸šºÇUéõîÀdwf0¥¼ÿûWÛ`ø-ê­ë%5³H™åStm‰#mËO6è)Ûn2p‘ B0vÑn¢8HR›Œ"ˆƒ %û/uÓð5ñŽ6€Á?÷>d<Ù7‹ ¯G0³Òž@„ßL¯ãü ñtÿÁU¸r½})Ãó=;m»ZòÓÛ²íjç"ºÀ,W¦K>Ôÿ@f? endstream endobj 404 0 obj << /Length 1653 /Filter /FlateDecode >> stream xÚÝXKoã6¾çWø(+ŠÔ«·Ýì¶@»éak (ÚY¶…È’!Éõº¿~g8¤B)Jm»—"‡£ápæ›'ÍWüñU¬!X&ÓU~¼ 4µÝ¯hññûnø|`ôη››o¾‹¢Xd|µÙ¹¢6ÛÕoÞÝAú¢]ûB»ö¥Œ¼»æxTõ–ˆʺ ÕûmÙ—õ~퇂§Ü ƒõ›nÞo†û£0|¥¢Èù\Óx¢iœJÆ…$MTþxQíÖ,«Ê¯­~¢àÎÿ„é}>6‰Wì˺Ö@áÇfGß “@ mQãm=}[Ö܃¯ÜcFí¾Ñ;eiÌIñs]~ÒøÛ²Ë} ‹óÿØ~Ò[‡ÀåÐTÅ$^a9wM—÷-/GÛªU9dDG´¦&&­=.FÚ#¸…%O¼º!ÒQõ:§p}9­9zÒè4`-üëI~Ù±µËÄ{{%¦m±S窿E+ WF:÷‡²#[é¿„8@MöÔkÎãv„9÷þv)~" mÀêDz”ƒs¦cÿk÷ÃBûYkŠ{.Ã8>€pÁ5hz‹ÛÈÓÑäÒ$당4k§íÁÂeުȕ ÖÍÀM‘ë„w]|ê‰dUbT0Y§Ò°ܱUmY©¶˜äA§Ž†¤º9Ÿ…K­É®iuéÓþšqOœ²$L,÷|ˆ$f˜Ü ×Ôi4¼{ÿaq<@<~‚_¥n,À7IL~_Š ÁöXbJŠ &O ˜î]Ú¿(ì^4‹YÆc Ó`üK¨&’ÉHþ=ª2LY6U×f”é·º¹¥ù²Pi„…¨´Èèt:z„«L]\!…0æ#î;*È(åPöF`wRyA§TG$5\•Ú«Ò‘®ètU{«ÆO1N"S²†”±%«S(úO¨["a‘uMPqjAãEýpWVE 1ð ÷¥ý0ËŒ*Yêbž¥“ ¾qÉÓ} À†ïl8kÁª²ÇÍ5™×Uª;ߨ I;ǰÏ*ÇYC2Æ”¨‹maòÜzGz¶±ü·Þ!õ¶EUô…hÚò¯¦îUå[(wíwZ”©¨4»HÖ–Y;¶öêÁœj ¢ŽÝ¥¡‘ºõ"#µ^H%4ºTû­ÐýÖ­IKšm s‘ÅòKf•Q+ròª~>¡ ­é³vÌÝ?k3,ƒó§'€YïL¯µ>oNWc½¯:Ýk¾…»æ„×£â‰57b8 ÷SkÇJ|bÆ‘'žÐ3Úéæf.б€×5FjOŸseÄu7WTIÕCÂàµåþ`q‡­…ÁsÅYÍ¥1ùDŒ|¢ƒæí[÷eö|L»eÜÿ•W¤©¤3³áŽÛ² cŒù<‘ ]3’A®Ñçk xP-›Þ>¨ì•ÓÚIêÛ!L¼03ÈÀ¬ _;×x²$åãf¨;—wB'Ù$·H0 8Œ¥–ËÃúbæ‹àù+h:í\A&í`åøVÆÃHŒ†`f¦"(´˜oËü»tÎþêî@<¹i{Åj㌔××çê¯8º LJ~Þƒ¯©Óïf:½iæ=/=ã×fÂjÝhzn?ßo_U˜ÐBÿDJÙ·È+?6½Ò3Bbç«TÇÄHåc7hõ´¼GGeÜL À;”r}À4ˆ }#«9Ç£4$›3‘M_È`Nª®tvÛØÛµ»a¥ßª®>'lÑ%Q £cŒÍÉ{å½ïÿ³^/¥ƒÏù@D£bþf Áf‘ È0“›!6öcA ¦)ßšRµ…Ú^é¨Êóó‹ó¹RýS*Bÿ2ƒì]¯ÚÞ0E'ÑTö,“\xcÙÄbjÁÐ÷Ù€ý©f¯ú’Þ1ö˜ÉÍøËõgìlê endstream endobj 407 0 obj << /Length 2387 /Filter /FlateDecode >> stream xÚY[Ûº~ϯØG¹ˆTQ¢níC±›žS¤MZ g‹¢èéƒ,Ñ6»²dè²ÿûÎ…”(¯’nŠ 9¼Ìp.ß ¹â.„â®ï²8 ™ßUçw!Qûã7¾üé0ó|˜è;3ßýöç$¹aP„…¸{<¸[=Öwÿò>œÊ˨úDZ'~·ó¥L¼Ýù\¶5?éVqë§Zº=îü(¹ð"±û÷ãŸßýô8óO¢è‚âÌ×’¦7’¦¹ D,YÒ©ÕϪÊÆ/ûãtVíÈRý&!ü'anO›dAzç‹8 oòxÒÈŸ‡žý–m7žPQVx/»(óÊ]”{W;þœà©J®vù²0¸f @}0ëãwgf•U¨ËùÐ5M‡ë^ðG™Ñ½Ã½Íé@e|Á‡èÐ\Qâ»^q«ÖG=ﱓyÝeÔ]»^Ù4WÑã‰[%UÖdJÚG“øÓÀ]øOÃúckvOݰâdÚê×PÈÖŒ€ ‹Þß’z­&’šbQØ…Ž–ª&¾ÖŽîÑPWn;‡<õUUy)»ÃÊ¥¢L1úà·jÃ…|³Èõ¢òX‚ÊüXžjkTææ@bežU¯+&¸.‚b&±·ŸFÓf59á‹ÌúØ‚qkÔT!¼ûÁlÄsÉ@³C– Vå Þo)^£žÓиcœ GÑ)»#}ÏgUërTä4é¬ùÌÑ|ºø'îS2©BÒ©ìËŠ‘„x•#ϱ۷Jsœa§ä±œ ·%u‹^.AUŽwÊ$òMn)ó˜5ŽSʽtŒŠa=ó䪛Z<éìžfeR}™4ë;Ú0;ãâ©1.VfØèÀ•š…>tS6KŠM™'+ë3…¥š»¤!übÌš° Ä?úK&¸7uÁ¤°Æ¬?LmE‘o† ŒÑ~ØÔñ¨Qe±Þ¹|"#ÜåÅ"¾†\á¡‹'FEFFÊ ªŽƒ8þŸ $1€#œÑrŸØ1݆àƒþ:*EðÀ¤*ÉZB×ÄHïáʵ:”`F3ßBÌvÆqÈLØ#ðzÀÚ$¿ÑìXòç %R×].½€Á"€‰ƒЂÀ‚N”2+XTÈ —H#ïr4æË¤÷…%œ¿n8Ëf‰÷¸‹…w½ œyŠçý¼+bF}ÿç® á¾–"àfÌ\úÒ¨Q-yòñþá ©Ò(ùž¬1ªó”!Âuü½’TátfŠáD·}þflfZJq†-Ö°:PîZvëô’DÊу£€)"î\ù„g˜m¸†+œª]3ƒ/ÄU‰KýÁL¬4HpåÃQ SǬ×ãÌFµ%9u,c[æ°ÞiaLré†Aïå/K‡Å<Ÿý?¼Ý<Ÿô@ÚP­*™“Ö|°¦ÀlÕÛ¼ˆMSéá˜ÆÙo1Mxò“jy¸ÖÃ¥ájÉ ñó7€ÑÊðžÿ ”Æã“ƒ*ŠÄ‚LÅ_#UÏ$~‚ÚLg:§, dBx$9²1"Ùeñ¼ƒŸ²™Ô¼ñvD¹:_´é3ƒ«ÿ¢k¨­6,&â,€da« ÌYÂD„ C—=vñ\ø5ã Ÿußµ / {]¢7DEäQjù~øÛ§¿þë/[Ê0ÀÖ, š Êl£àŒMÚ$ ­zE^DR€AVªŠbiÓ?Bq_«þ­Ñ¡ÛAõã·bã7o´.N° æÆ+ø ÝKÅÖ3°Á­uDav6åB©›ššNäÏ”÷xž‹6V]êU«z¨¸ê- [ŠŒWN`Vdí¶ )[þ(dHi—mÛDäY7fÿ›ü×ÉäíæøEŸuSâ bqƒ³,‚8)¬p3³-¯M‚\äNXE©žÆÝ{QYa™A¼(@ƒ-Ó׳ô5æåŽåiæð•)âb `\cæžË‘‹^Ž™ ’eëJ°Go“¸6lÌnì"15|Gõ<Ø“g8¶ØM‹ Ó$,òZnŠAL¶ØÝF°¨(à’=ÃÁÚ–›÷³`]pê‚5±Œà<}‡%Ûñdû(³ö|@¢óIq›pÈ9"bš› §‚Ti4K½EÑ´!â ñœzN¹·As?%‚H©¸­¨²cƒ³ö#FjgèFÄHØÉ¶™y'5üÍÉ*0Ъ#Ô–3ÞåöíËE.l:ÀNd‹˜Ü"ä­k¯•ƒn¹çPyZN £ã“‚3²å4ð`Ç,L̘t\°c‰&·AÄ(»cÇß.—ߔ̤ïÔOæõíþaÓ ²@䑃èt£¨%lñÍ×ÎÛ Úü±ÔìÛ™-“AL8±å`èƒ:Ÿ^Ø~8Ã}¬•ázј ø¦B’òkòf4©e"]Õ™Q ÜAÏô<ó<_¬äøDf½Z.>ÁÅ ëÚ‰qmyØ”ÛÄ[&‹•×I7+s‘Ö›ð•§ÌàÐ9Ô¥vö©¬Ý«ù\v1Ð2ÏvÍý&cyó>»åQAúNÖ®Q+ò‰êTö~×ûFU?úÜüGÚeàga‹©Çè1¿—! ü™›î´©:CÄ7<üâ¾U`»o ¦·œN±¸0 8"áÀ\µ2|+KdBm4¿Ú|£b[Ê G][ŠI£ ( 7'‰0Ëé¹áaðK‡2•FJw¸Aßã#Û|7t ígk7 ñ=¶è¶‹^A”Ýf‹ÿ·¬¦‡§Ç“}ZªÜ¿¥X"ÖOôºÅÀ™üœÝ<4‰ œؾzkÊø­é/êŠti^Ç@uòç²ê»á oGÃXÂMìi_ûg\²øþÿ+‹úcù€nÉ» ”ŸùÉ`¹UÆëwd£©‘bJßz¾eF¹yš[Ê> stream xÚ•XKoä6 ¾ï¯˜Ûz€µkùힺl‹- Ø¤§î¢Õx47{*Û›äÒß^R¤üŠÓN#S”üñ#ERþÄ&÷7izy”mŠÓßHõqCƒÏ?½¬ç‚¢;Ñüpûæ»ãx#|/÷s±¹=L·ºÝo~w®îä¹Szë†aèˆï·nÅÎUs:ÉzOÂ_ÊZÑèã¾ìÊú¸uƒPd ‚í×ÛŸß|¼ÞÁ…@Qó9Òd4É"O„!UõÞ½ßíÝ“,tC€¾ø±å>âC„ÿÔÒê8õ’+BOÄ´ÙMלÁŽ ÎºÔÑ}½7DIMâ…‘Ý‹C·4>qaäEaf9m I¶V-Ÿms„Q.æL€^Õ`ð?˜z­y)€åÑ´æz¾¡ïÜÚ7pŒßqWe ¼ÀÀ†iÀ;)5 (k σþ%‚E4§+V…Éú‰  µ‚)‡y²B8ëaž@&…=M” [¤Õ¡|t‘ 1¶?Þ\]Üi^ÃÊŠD@~ˆtšê±#ÑŒLÖšu@p’!Áh"®¥ß€Š.ž5 ¬ðPšN´éùU’~È”ÉÂm˾ò–€ ùæÏÕtã{‰ŸX?3ܬ‘À¡Œb«û–› ®êト ’€ÕØÏDÔVÍ¢YK""‘Ù½¯ÝU"õàæb•Öƒ ˆ3/YTÛY{üA³m78è//?ŸêB+[eE[âŸqêlÕYb ®žhÔ?¡þŽ ulÑØ)IEOÜÝ.­¤ZA‡~t¸îQEgó±”à1¬h0¦Ôú¨L€´+÷Šf;Vïî(?XÀR"Žx–¼°*ïù2„Rºmp ›¶ž3CCzÂdˆ ãÈõÈÌÒ!0lî55 €¤0ŸjU7ý‘9îÊ“jç¡zTÜ’ì¤!àž5›E‡ÎÉòXÖ5Øq©£º²Úãeë<\ÑÉSÿ¼âÊ@9¢æd¨ö Êl<Örû;€ž5G8clsù½z¸ìèûéúárì7†Ü„ÛµšWÞ,¡æ %\ð|‡K_0²‚˜”¤\£‹z{ÃQ?¬¡ýi4$‹>\€ ˜ Iº«&é£ ª9ÝZŽcÂ^,Ït=n_uWÅ1÷Üà¥"ãÅÃ]åñò¯$Ƶ…W/ÌI%™)6s5ŒG©àödóà!Akr׸/YN"à ü¶Šõ _Ó·àW’ ¿’¤xE_ax¶+·Žrr×àT^±dã% Iµ^;ù2Ð.¾ ~±=€Û*©‹»©ç¾¾âJƒÁ.» aT·4ÔtM™¸Xx°käjÚZÞð«ñÒST©±b¬z*³žšt/pn¡œõKyö«ó¿î áJ endstream endobj 414 0 obj << /Length 2551 /Filter /FlateDecode >> stream xÚíZKoÜȾûWÉÁ@ì°d“9FP1°ìÁ^`)¥áz†œðaYÿ>U]Õ|Œ8–¼A.A`lûQ]õõWU=–ü“Ytaµ™I/ŠÃ»ÈIÛÇ jÜüíä~!t g=ÿr÷îOã ‰,ÊäÅÝÃ|ª»íŧàj—û²Ý„Zë@þyWÍá×[þ³ªKj]o«¾ª7¡Ò2•Ò›_îþñîún\?VêŠbÏ—š&'š&©RÒ´ûRâ«Â®ü×PÖ+õ9Š#ø“¨Ëéfc+’‹Pj!cšã¦ÌqWQ”u3<î`+Y•»¼Í °DGßû†¿5u7Jæô8`ÿaßWál•Ï$žôÂÝ@ÓòH?ín#ƒ^dÀý¶åçHšºÜâÀ8¤®$}ðŒ‰²€‚FFÁ¾‚Y@dqüü÷æÀ-ç6l\×[± «‚ÛQ”{-yª{Цy¬jzªz˜{G/9 ¹jjœ o›= nýNWTþPo«"ïIqåÜsuû=t‰ Ýï÷Ïôùúö*ü„zÆQðádý®ê¨ëdQ”“T9•Ó h§ ]E¾_ÀGeVÄI ê9µþð€´†)… w+?­ÍeEj§™V‘&¬{àFåÂg å±mBg¯P+%•-€¹ w²4ØÁ!Ç:äÄÑÜ_:–àŸýž>ìrœÿ+£%uC}Qº,z’õ¾ìxtùí¸¯ŠªGóã·¹)ñ½çrzmá¸ìñø¯ø¹ Ž¸Äž&¨ê®§³Ãp¤6 ˶ŸöÕ·Ne^ûÅ©YE@kX›]I•žxœÎƒÛ^ ¨1™ îZÜrÝšžƒ›r±Q`{¯ˆ6pò@¿ï/Ip?ôÔk„* YNá´„Þ×0”P¼‚œ)(Q–‘Bd•íWÖýDbÃ?¾ÇxW?Wý®qjfä-x¸WµUÁòö^ɤîðÅlRøöuÇA¾øÕ¹,#“¯&• ›fà¬{xïxcEa› +Çók% L•ßïy9ç2|ÖþLD©ˆ#»8h¦ml÷ôdHXö®_2@F¸›u*†¶åý“ÁŒ¸IÇ6nfz,‡ò™ñHB8Ká|—ªô¯ nâ¯ÂÇQ|œ³8÷OzôÍã㾄ЧpXˆ¢äiL'Åí}?î49eÍÃI§s‡yë°œƒ8@ÆÁ!ïÇðr²(4È•x…VÐ"•RþZ P°ž±ç÷–t^ 镎€4øÞL-4ž°QÒ‡ZÂà¾U$ElÕm§td Âsm{‰Q”¾}w™P‰ôÝ󶤹·å¾tð6& Úæ@br•Yñ§ašhêÄx¶ ๦½I“ÀzÙÒ¿%Ð…Oòм+™èØÆšpáZd^h-Ê#?æ,EtºwzÔåÓ4rçèé“4w¾¨™+ÝéÌnßÊ”Ûáp †ºè+ÈÂ~(Ýã}ÿÔVþ+`·c'6Ð*ÍÈ(˜­â:â¡åUK²1××û Òœú‘»S²È~Áa7>pÒjCX‚e~«™ÓñKNFJ#¢Ñ1¥LLÖ±J5Ñ _ê›bf gœù5E¤ócîá¹1…äP+?{‚ú™ï€#[ïV/@/‡|ËH9æ-÷tŒhó''[òH"°ùÀ »h‹5Ïë24ã;bB½w¶›Yz )=Ø÷ë UËÅI¼‚Û¯ðþcÜ¢ynÙ^Ê\teßSXEñ<Ðv<Ô! #yìŒÊ}|ç³Îà ⾸Þÿ$|åÿñû¿‡¼h›îwÔØ3ìjËœ‹ g+ë³zhܸQCúøcåIJØc^ûØ“jÅrµÏQUË̽X KLÓOYÂójS±ŒRzª@§ò4CL©BÅ/s$g>Ì‚|DrÊ)0Œ™#9•„dÏ®œ +Êz\“§UF¸v­ŠŸ„dhpºL/Œdh1’¡å¼£²sH¶P%O ý+HVÉ ’µG2ª5"Ye®jîÝ[JÛ`eÌIêú=x¿Ì)JKrAšíìé*,ߌòŸw%ç6ëI¢1"6£¾V«W1è5Ï#ÇÓ}hœ¶S¢¶‘cjVäCçÃJN¢î©šåëúÌ•ˆÌ”ÈìxÕ–Xu¡ÊŽéøT{ÏõZ7·6J›9‹K¿ó3Æþ^…¿ý—Ìýý­©ïoí’M¸;koMUÅÛlé¢íá»·0¹Ú$Š u¹4@ß Ž]¢i¨m€ÀܸPëC¹¶ù]YäÚ± ŠµÈšVùQ¥Þ•+߯͠Á‰q* öÕ}›·Ïô²%åíŒ/.Mìn®,Þ\¥~XN,@y 5Ö+LgÂD¯[UMT4™fÓýK¾:bÍN4.øâ3¯¸¸RPª&ZŸW|•¬-_ Y—±58ô‰Ä]u8îÙ“"–«}´2ÁhM`J0(©ÏÍì6î…Al*f.çìO—”#²hrã¥"·Òñ¸|+*du¯¬?Ž`™L UñÉM+ õï\‘TØtTäØtÕ·ÕÃ*ÁÖ£ÿºØ1o©xäÇÂàj 4ö7ÏfíÖÕº2#w€hÁÒå‹€@(ô¡Ú¯h·îšOúTöä=l–õ92M£7QŽœn á×Ü'Ed²WÜgD¦ìK8ƒÎ£/žÞ±—lèâà ¹C-“@‹T›á:z^Ýô±r ðq´¸—±3º‘É‹P;â ?>9BÇVuƼF¤qö*¢³lÐ8m~ªÎ"ͺÆç4ŽÑƼêàÐDZèä$-—À7¦ò\JLõÕ,AóúU] r› oËØêYHŸ’“CÃò¯ç+!è…ÓZº3¢¾@êuŽÎ™ ª É׃yIC—4ñóÆa‰—m9OÍ÷øSÄ3IÝåk^¸àæsHÞïü“CS¿§¾~zÏ©¼JÎ9'ÝgM«’ÀØ2;!yºÝR ¯²,]eY^^”e«à×ÕëBH¦Ô¤zõ×£÷‚îö~jË®Ã#¾2glD”Ž?Z]ß^­Íª"1ÒÅD€ŽÖAçÉÐJÏwÁm0Y¼§k6TO0¹g1—ò5‡vÅ6ó¯2ŽÀ¤ËŸ¾úò[OÅÙI…8/ AýÝÉGV˜$"¶¯³‡Éæ@#ßÉ…øÇÖgǯi´èÌ…eCOg[~­š+NH#ûÆeD¼!.TÝŽÈ(©‘µK¼­BI‹hÌË¿¼$NYý¥@7ÜâXWûíñý/g¸li迪‚Ô`Y3Bï·sZŒÈ{yªFC(|ûðÿ…àßÜD\. endstream endobj 418 0 obj << /Length 2662 /Filter /FlateDecode >> stream xÚYëÛFÿž¿Âè'9ˆ'š‡^ îCS$m¹ôl?µE0k׺“%C’w³¸þÈ!G²¼ÚŠT#zÄ!9|üÈ•«þ“«"^eZ‹Âä«íáUì©ÝÍŠ_~y%yß6nÎv¾¿zõöc’¬d,Џ««Ý*‘Rà2ìº*WFʬÿ¾úç«W#§D©‰;œ™¥+™ %ƒg‚Tin„Ô†[o’TEÿ^odÔµ7]Ëèp¨š›õFgItW {ZýòùZ|q¶¬«Æ¡˜—ʪ*ÑÄüj_õëÊt´]«<ÚÛãà:$¨¨tý¶«®á%oöŽ~¬šµÊ"Ø»³[&ñÎùÜáÿœC‘ú¿ôâ¤ò\ÂäYbyqnšÓ’ÐJ mаiTÏ‹ô©ºîÀ"¶»§wÛ”´hÁ.2ò2°FGo¾C/ð °C¢…Réj#µ‰$æ¿íÀ†²ˆîQƒöD/¶s¼ ÇqÍWq80½Ÿ”¢ã0¸«ú=­†–žU³­O¥g›“Y‘ºsv8uhmÿÖž7°÷‚õ´QBƒŸ·ˆ Ò޵ª¶yƒ7DÓ¸²À!==€9ü%ï'9ú‰ÝÕ­÷ úünhÃlSOµEæD©øÉVìøJÑéîø§p›,Í€žŒZÄsñ{·%¶Z[´¬6`ÙŽÌ_Ý0 ¸Zª¦P13RBR$¾·}µ¥H{ïöv­et[Ãåh“…Š3Ç¿¬7hmàÖ'/ê™Ðµøóm…~ad†î†t°üÁûÒÈêHm‹1V0:§ûÌà>éûž…JgþPÄ"Óà[Õ‹n£pv½Y┉\ê°c7—Ø@f“¹šØx1Q›EÉ /Ž{ûý"?) PxXoÒ"‹>®sá¢].|:¦q6wŠ3ßÑ`'Ž? 9ogOõ@/œÐà†ý¥x/DzëS„‚HÂØ·%\c(ö0xö§¿b™n+G‰R Þ§[ÿûè–þØyªEÚ¾¥Dê_(kèèÔ»™?é,ó¡ƒOR*{T¸ý@dŸš-»!þ|ÄpŠÚ¾¯®kt#LsÔƒž¹µ´»sÇÚ§|$nm]÷óSïQ]2nh½N¥™,ܺεȊ)‹¹¡ÿ+Nbø'—@ç“£_Žq7c¹1à½$æ·¾{޵‰Åäñc•Ò`‘HEÅ‚«&*”dÑîÔÐ5.È&"MGnßÑSǧRÈt¬…ÇŽ¼§³,=ÀuÇ?/fÑŽžÓçgûæ,„–£¹©`%Þ_Z¡¬áÐðkç 05sQzÈùµc3ðq~apvʤ ˜I0[}ˆ²ùhEŽ ðî%Q1–á ¥ Åêe*ê13U‹i‰2£µ?ÿñéÓbLE®Ô™·ÍEv(Ǩ×cFP9„‚a5li7 ì×>À³¬zˆ(âá_¿“¹Hb3 tïw&æ"° “1"h÷Lb¡Òi#_.ò®ø ±MÑ»µƒ+‰æÁæ’-cÈXO%¾Ý>i ”ŽÑøï€»1dU<ó ÂPƒI÷í©^¬…ù®»Î¹gÒFuc¸´$Š"F_ÀÁ; „A‡½í‰ùÝ4€ëÐ6øÎ@ÜoÅtoÎü¶¶€Èn9o)m„Qæ%hšL¨®b¾?}þúÉùóˆx–ò£Jgù<­m÷¶ÃðK¢×ãÉþíºm,!øz¶Q©š9C ÊÅ('~ÀZé¨^Ü»%M7 ¼ N› ûµ}C¶>ǀƇêfï&Ñ{ª%3ƒ/<ªú¤ö?èñÐ?|h|›„ï–¸áGZþð„&ö@7 Ñ•çÝJûŠ‹¿àñD±D`Üíx«ÏªH¡¬êi{ÞÄYñàU 1‡¾+‰î{öµ÷r[ÓKãîàK’“D;bÅ¢ïÊ7 ؤoÃ-Õ÷tMC ®°>¶j¸/^3·ÒX.²ŽSy&Û¥é˜]³…ΊÁsO¹Ç.ÖðLÂrôä¿|(ÇjÌ,wûªvÄ%ò}ú”Ü`2" θY|ð#­*ì¬Âx9‡ð…(oI2…îxp}ænAøÞÔP…_Ð2®Ï$gqS8àÕ¼Fg~¬8f1ÞóTe}<Êç@ý§vÐÿºIÚÇàVô%´‘Mé“)þsòxjf[íø䊎>ÜÛ’måZÉÜŒ«C"'k’Bµ]ò¹³1ƒ‰Ù Ðkµ¶kHêÛÿèÃö;ÄÅÑ6=õ° 9=ãiôqfŠT˜—`™\Äc’d]@ >Ë’²P38AIäsYHø-ÔËÆç}uÅaU¹ô 4YÔ¥¹IB»•9”öl*aõ7÷ÌR~{\ÃÂÀé¹ÿõ$ÐùŒMA¹W€é44Ô©‘ÏÌÙÂîÍÙö…ùÞ%Sª,¡5C•HEË?¿¸3ëþþ'på7l]Êl ïh€/“9ì~FæK¦cñ$)üh¶Ä©L‹É›‡;Ìþ<6J7@û}°1 zOnü¶èÐ| ¥ òj‘…ÈÓç}«)ÞUuMLTøe± zM!q\D©YÅ”êüªléÙ´Ãø}Â(Ä—£¯þ÷}µµÌ5¡´‡š£¸òb@t¤~!£=ó*¤6½Óià‡/Ôe7 GÂa”úzÌ$¬ðE‚šˆöºvç?§ØóOíYqzÂ`ôÎ{¤öôPWy-îxc?og6*†,0!ë–åuß-NÐ×ø¨™Î|Á¼MîeÑŒe‰QàúE©â±-Ëo<| ÌgùY£>´àË¢0dô©>@ .p±vO3mFølµJ„’c¦“Ë¥T‰´7ÖUÏøÆw¿pÌ8™…êÅ2<×mŠ G;³ÍEy¦ðb¼ùqë(L?w' DjP|Xí©Ñ_`ñk8ÆÉ;ŽÝsã‡ß¨Ÿ»4¼í{n"+ê"=P§À8Ùú‰¨BÓ1 Ò§½nç: ¤ûK7|ŸþÎÛª$RÏ;ÿ’9‚Ò ±zZzEM£yicï‘“IqÒ±å-¾ü9ýÝÁgÌ”üÙÞN˜Ø[Î>AÍslP‰U)`‚? i”ÎáÄÏ/-=®kÛü—6¡"‚÷¯®ãm„¥Æí»ÂuŸÎœJx(utEåsúÂ}8ÕÏø˜¶$ê(ã¶[ìÅç ÿùÞ#äCìŽ4MãÆŽfOØr£û Ÿ´åí:IBŽõEx 5 %‚]r€®{K´kœÉjÇÎ?ðŽvô ×Áï Í]\ŒËB¨¹›¾}M¡ø=Âi¸¾µ]EþŠo>‰âbßÖÔà‹×&™îÒ7 oÿŒqÆù¢YýFâYÇ:Ax¿)@øw1 d˹_F&6èÒÑËÓš24ÈîgÐfŒí0ZŸ8ñ±ãÿ‹Šû%Œ›p£ï-üªe¶ÐfÍM±Ybr1„¸ð@€è„“9‚+^Úõ³ý«¿£( endstream endobj 422 0 obj << /Length 2297 /Filter /FlateDecode >> stream xÚ•XëoÛFÿž¿B臆 ,†ûâ£éøÒÀ‡ -÷¾4…A‹+‹E $×=Üÿ~3;CФiÙk¹;»óØß¼V,ø‹$XDJù‰ŽëÝ‹ÀÍÖ· \~x!˜n„«廫¯1f!? ±¸Ú ºÊxçÛtßÚz¹RJyò§åJkãýVW·uºÛåå--Üåí–F>ýŽí]Ú4+òr)<»\‰ØÒ“fùçÕ¿_¼¿ê2R>Sr¤|(z8]¨À—F/ÂXûBi’ÿõ«%ì5Þņ~Û­¥ÁÍa³A½p¼M¤E bß3…µe7]Të´µÙ*°‘/bG(_bSÛöP—;»«j>¬­&‹›Úòh_U…OÃW¯ƒÕˆƒ 9kð%0Ö^£¨ð!H&ákÐ}´ã¿Ç3’öÈûÁaoÜž`|POA›þqܻަlÃW¸ûÓï?¾a†lùœÿ –@Vú*ã{ú`[¶9ý ëÎ`ÕnbÃCcë±åž%xMИà‡FºÏ ö@ÇŽð)»Û¶±9ƒ"og°Ã,šô›í¨è·šBi›7-`éLN „¦~ü‘w?=i–]3Û“X™½Î¡?<µïB¦1 )bðõ•ý8bǾÙ Ò±·9”ë6G“© ñnóoK{–q±2™Êì&=@€*Zú¾Y®pç6žåÕ7T–jn¤‘¾Ò Hž·ïæd—otØ­«Ý¾°(,FR%ÌŠµø]X²“Œ#?VbtÍeº³  Aå©TèÝ£ØÕ>²Š~˪¥Á®¦%þç™KˆËº˜ÀaY©ÈÅ)\dÁ,}9±à—ÄrÌψ~Ät2Ýg·iyËûÉä0¸ÉË ³ÆŒ¯VÊ H;cn%|)äÓÖŽEÜ}u@¸§|äRÔ̹Z/¨.®QÄë¯öaÛ9È”O¤ºªÛäÏ»ZúR&cÔæ%{ø€ÑÑKpÕÊQbµdÔ# ·Ì0ä`ÀDg=¸É] œÐM®™û«g°éÝjÎhfhçO+B%1+­¾Ï¨±¯CÝÚ¦_{?³ðá0\ÑDZßv–ðÜüÄç%#}‚È×A4EÃl„=òŽ¥m!š#o ^’Öé¦åªÆ«‰ Ý¦-í9ºCO]¬hš( a=›~%A¨XбLîd¤„V~t G¨„–ìyä‡, ¼¬F{ ÑåDá ”ºéж®¡þ¡™»­-礕 ¤‰’ç™:Ôf*åäjl-’Ú{çÊÆ.NL±—$~™§p!³ÃR5ë0âw4ð|‚°†y÷¸ø*!}´§Ðk—Íø´]Þ¹P7'ÏÐàèbÄ…EBc‹ÍlÐ „ê{ƒYâ½4”¸âTVåêo[WÌw3wõ‰ö“Al:}óJŽoÞP~ÒTïáÏ·¥Ÿ(òŒãIqDD£Ü÷öóù…ËÔ”08Ù€or£¢!{9‚ŒügМߡÄøxD@Dè‹ÔèƒÖò©8 µžV¸ÿ@YPsÖT€Ù&½)ì1‘Ñ,ÖE;‹A‘4J¾+­MË”úlÄO{P»‚–ÃÖ]ߣ5ÈÞáÚöÁòaºŠµx4r³ÔË/Ð]µ/¦wÊßQ¾É8éïÊÒ§‹Ol«C·!“À)áEâ‡ýË®ЊuU®y#0Î8+¸ƒÚ=×0ÎáGçš¾öÔžÁŠK#7nØå·[ÛHyWçmdžf0P®¸Œíà1\Ð…‹6›³¸^vtʼÍ÷S™Œõò)Ÿzܤ7wÛœ¼€˜î !µB½kh¶¥ŠF„sækÕ4—Ù&¯-Ï÷Ò¤¨IsÖµ±?.C›CÏݧ!¤ZP»GÞú]Ä®óLª+k¦E%k§`c_Çf!Ãj’è‰ÇŽz5 ŸyÛ˜êTøl»æýÞIÌ?Î{™•wÞËü'»Ú>½e_3ÁTt \È=Ͻ£~Bôé¡}ÝÅi )AE‡§’îÔÄOvf(GÁeCéõºEÆûe™(³~3‡4¬Ò_H~ºì{g™8¢ ”a]3;ªwîékÓŸLŸUÝSåûCèÂLK“ä¹8pÝ3Žœã—5ÞA­ÄÁÅ®iƵ¼)_ò jšü†»¨I³áJ›@tÕY¾Î÷)º8ÎQ5ƒÒº"³f«@RÁ„Û\AŽ!ØŠ…:⨆”M+¤ë¬ëœãv3áB¯†v“WF#³9 ºm˜o\$ºt'\›¶Dù3Zp½poøé>,÷‡`Þ›:Å~?A?S—Q0sÒ'ýP[#6}´ŸfMP €ð6Vf\ÖBÄi=.¡U£§Dûx:~gZΞÈÖØƒ~â c›ê>F¦ ¸nÇQ/}v_òp¥\-"ñŒô‡†ùuˆð{"M t6ΰÿá:Þ!®p䯩>bFÖNG’î÷E¾N †HèÒXM‹Í–ò+Ÿ)<רø‚™Ø8ëð€áTÌöåã›ü¹K^¯»¿ýçc LFƒú–£ÞzØ-ñ#ȨŊq †·„ô›BñêÞE ¥÷>ç®8@ʦÚY¢q¯ î<^Ê,²é.‰¥ÝæB¥% :×Ç~¤Žuw¯úœæ!6›=-hC?öìAØçù¦ÍòjîP%}(•;²ÎcïJóC¢Òbð°4åAþú¾êgÇê‘Ë3¬Ô“vPB-8Æu¶Z3 Æ«ÎWçjP$¾ ±ùO[Ó`>”§_b ²Urú&qúŽ`xl "¥ƒr >eÓ´®è¥¨ÔÖMUÓ4„gÓ…gšaÃN4úSÆob½Í sÕ­ãÔ=«¹ÇdÌVöÖÖgóe A¦ÇÖåÇS-íåû·ÿúxñéýõÞ_~¾øõÓœìÙÌàMI†b”´‚\Þ%üáýã `;£‘KŸ;Ë,§¨WÜÓ„yai}²hõØÀzf¹´í_±òú?á´ endstream endobj 425 0 obj << /Length 1755 /Filter /FlateDecode >> stream xÚ­Ûr›Fô=_¡™¾@&PvY4OijwÜIÜŽã¶mǃ`%sQÙÑß÷œ=»dlIiFìåì¹_ÅfüØ,öf¡ï»±ˆfiùÊS§ÍjF‹›Ÿ_1 ç 3€üñöÕ÷—A0cž{1›Ý.‡¨n³Ù_Öûu²édc;¾ï[üÛ"°~kêU“”e^­èâ1ïÖ´úùúw\ëF&Y‘W6³¤í°(ð¸Åçö?·¿¼º¸í 8?‘s„<Îú<.ó±^WÀI$¬n-i‘Wm—…Ìh{ƒŒYI,£ &°lY²ióºrm'ˆCëÖ<°ƒÀJ ßj༥›„>kù%Édš—¤d•Ö¶3ÒÕËSUÂcÀû¹n4®*C-Ôó], jŽ8¤ƒ ¶¥ÍCkÔB¼¤E ¾D E¾h’fgG¾õ†È?YÖMI+ï 2ZއZæØÀ›бËRƒŒáG.‹¸r§0Å.þϸ<&oxíPòG¼v² ³Ê;º)•i{Í¢BŸÏݹh½2Â9Ö&‹öÚŒ”6ñòí÷aì>3¬M+3w.Âû@BE…Z$X¡ Ý‹Ãò€ÇpÊâ.F¦g]ÚècúAI„ËÑæœ¡‰éüU)jƒ! ßš˜Ç\Fc5‘Ê!¾ulõ܇äžåb×{³Ý|¸»¹x÷Ó‡«ë‹»?.n>]ýz=¥,Ƹ+‚Þ!QÆz[d”N´œSÔ˜uÞkÙûâ Oº¤pý¹à’! ò]`Äáw£0Ä…Ë<|Üå._šsëÕµWk(¬[ÛgÖnƒšµd&—íi æÐ›Ìt‰Xë¤Úºd‘¹ò…>61«*»“üWФÑZOè3ᬂä£6ÓÙ·>Ë´£ƒíl4½òñö ½„ôHt^çŠFGßÕ·Ä,X¥¸d«49cR³Prú¾V¥Î˜£Œ­rÞØx’H”á\¬ÕàÄ7,H%†G‚Sa„w5}ËäÞè v*Äh£6—Íò±É;I×&/KÃJ›6ùy¡0 BàˆFÞÓvi´rX“ͦ©7Mžt²ØÑ“MZ¬»šŒ±!jOšÕ¶”DKãÂÊ îÙmáeSÑBr®BòKô'<]«Þœ[mBΠîŒÏ / uB<Ð ‹P½7â&¡;b\r²p@üñ}á@E=“òý°æ¤Ñ8´]W‰ÞZ už¢|k²,”7àáAvÓ.Ô"zÞ'e 4™oBW°¸ÏêU7)†çr81bŒ­‰D”5yfTmH‡ÕTýåaÆÁ²<:‹òß^àuë\ã¥/£tÞ‹jŒŽ0y ŒJûn±A]ÁcˆšÌØô Y< ÂQóÒÇ0ÃT¡Öø  竾ʀwµ-ØmYäs‰²ì”r&¼5¤Þ¢^#ÈnðûvJ{Γª5ÂzwýéÊÑ|µ¤Ãb”¨¿›p£3¬ÎãyX< ÇT¥…R’Ê‚'²Öwi]–à¬wÈ×fT1ùöùJwPT^¤Ê" m»¾yåÌéÊC¯öŽªÂ2IÏ©)É‹d¡­±vJÈ^W&1Ìÿ» –n¨­!ž“}hd—¾gghÓu¢EyMˆ7²êšÝÔ)ÄI7~úžð‚ƒ á9b†Z!QÅg“ûbþ»­;ù”æ „w_C0“gDà0Gµyà›|­ù‹4Näý¡Î³æ,o7/âÝ3Œ¿äìˆ뺾B ù9É¿†˜V²KŸ`º¼úpq–‡±¶,¶ËÓxzXOÄósr8¨ÙÇ^^£’öïŸ(ó,NÒÍ 2~…défsžWsʱ°/yÉQÿ~8UïÇ1}µ"®ûÃ{¹SuYÿSü4óU endstream endobj 429 0 obj << /Length 2353 /Filter /FlateDecode >> stream xÚµ]ã¶ñý~…ß*gEõÙ>]‹&¸>Åe“¢¸\‹¶…“%—’n³ùõ/J²«Ån’+0)r8œoÎ̪MjSF›\ë°LŠÍþü&¢UwÜðäÃwo”Àíp·€üËÝ›o¾MÓŠÂ2*Õæî°DuWm>=™Ë`Ýv§µâ?mwI’ÿtÝÑ™ó¹n¼ñX'ž}÷p’¬©šºÝªÀnwªH£8ˆóí§»¿¿ùÛÝDPǯ¤!_&=+’Pé„IŒí~¨»6$`•€rÍC¥ô=àSMtÄi ²>_;Øæ‰×Ç ¯¸à1ó²é¯Á‰pœõ§nl*Þ}€¡AÕµV€É6éøI–®ÔF,ÔÆÌì&nqaçûî ]Nôõü9ö¸žDA=ð‚‘ Ãƒ³&ÎÈ>]F¢‚·°”eAÏÈÉÍáŸ"•š£@¡ÐjÜ8D¹VdàÔÑU'É4ƒ8aàÐÍ@N&rÅ›HïdÈj4Ù$OÉ|=8ÛŸÈÛ“ øˆç“%‰s0«å®½iWŽ^LOVІ—&¦güž©Ü‡Š•¸÷lVåîÎì°ð1‡4üòô' =a¬G< åÑ8ô<1‹³>ŠÊV?î÷¶ïA‰V MñDÁt±ááË6•4£}>¾X=ö™B©µ<û…ƒGÇ_ìJâάsôÂe1ù¡GÏŠËàŽ_ <Ø{Ärnß‘Yºl&âZ༢™'Ú¬xñÁŸxnšF WháëLi€Gíㄤ%¢Ì‡º­ÄQàklz•-ß76Þo¾Í3T¶N²ŸZ@ éö™Rjàîÿ€hækò$øq[¢áÔxU¿öj#e¨bAuw²½ÐZKç£bÖÛ(=Ú¨Öº™Ù ‡íÙà(Es5¨VÜPY˜‚HvqFjЭDë‘»> ™À± Ë4%ŽwþœONÆ¡–Óà<¸æ¹¾°£µü¤‹k£IâÀƒ,ÏEˆ0GÄ„®â¯¾ãñ€/š ñˆ‚#ÝÈ;F+Î)j5{6ÙD±Œ`ãÌDUžäî“@ˆq>~ñ6[âMè{»bg#¥VQÐ[{›õª4³,Û$I¹~!óõлøJö{‹”_Eë-(‰Ã$LaZ”ÁÇwMÓQ ¤ ýÈ?´UÏÂ' QáðhyCg·,è´ Ëâµ,xèX¸EJ,€j3• K0é“UOö9#ȳPE™·N0Fû3è¯b›”„¢t\Æ7¹Ï³æªó°¼Éÿýó¼ãÕ-d0¦Ÿ^™œí¹ã'-Áè%¡ƒÝjB±ÂW¬UˆÓ™±¼¬ˆBULðìóE˜`¼'/~«Ç×í0yú¥Ã¯Wú¸È ƒdV÷Vžaò¦¥ˆ|B™ôÐwR}.² ÔêU3€â.LóôWˆK‡…*<<¦¼H׊ç*ì²Má¹xNI˜ëxR²VU„@ìK-Ø©b|NK`Ç*þÊëxƒ´¥’@)U”áMYj?ç²°¾®•§a•¿Ý^!Iƒì*v]‚ç äÏbojz] cZ*´³ÕÃ"B3žè&'º±Ñ$˜›ÁÛ5òR^IñJò’4ñséŸÝô*^Æ´u…ëéÊ)ïµÿM#fW&PÇ«¯éþgã>¿ÞûW›@Ò¤gÑ•a6 }³7S³‚jJÐàUhàn .×-¿d\ZF·+, ]â “–Áû/AtÂ0ŽçcDÍ8©–sô~ VxMÕ©JZ9dÖ/,ÒüZ>‰ÅŸãü°ÝÊtÐ$‡ɨ¯Щgò*~o‡ ÈjgîѬãÑðÐvíîëd‘3Y¬?èso¸zÆùœ”/±ø²ˆïðÇ–Ä®êóÙVµ¡îR‘x)AZ”ÿþLw)¦v<ßcæÛßÝ=<ô¯‹¿“ȸV™Š!©ª k•4,ϵ›ÔA·ÒÇ€dò D¾?Ê0ƒƒQ£#‘£¬ÐžaÈ™r|ã»jY<-H=Q!’çɵ˜•%° ¥êEäPÆ\ósrqCz}bHîeñ+Då'@ötɽ• +¥*à@ö»¢î"mwr9Ã,1 h7ÊCpÓ¥XOÊ‚ìt‰±IgM¤ñ2dÓŒ êBÕ” `ÿ¾n/ãðk]™zpäÊ97p4¼±tÞ"7’Û*±o â~ ‰7/Iù\÷Y :¦æŸ©ð™²ïäÎ4ðw¸‰#&1Óz1¼"°»RˆÝj[ûn7gë‹ä“…F@®5çÿ[©êþb†ýivÙ—•lJ3Θë s9È@!ÈRÇm–.ƒÂ`¿—åÈ¢³ž‰È³©uȆëPðq¥®;_¡˜þ‰€kØBcFE ဨ?ýX÷v­[ûîriê½ñµ)õû·Š‹¡¡&¦zqVïÙƒí4jÙdÇŽ¡|÷Áaß͹ãÍÇ“õ‘‚žt‰/Ü ZÊÍØR’Ì®âåªvPA7O|¸sës Z`Bè0¼ŠÞ¥?ôlN¢o²Äéfg;uªM[÷g<ú:û¿÷i%@ endstream endobj 435 0 obj << /Length 2440 /Filter /FlateDecode >> stream xÚµYIs䶾ϯè#;%ÒÀ599®פƮd,ç"O©¨&º› —6õÈ¿>o¸´8QkT*±<oùÞ´Øøð'6©¿‰•òÒ Ùìª7>¶‡ 7>þøF:Ýåßoß|÷. 7Â÷R?›Ûý|«Û|sçüpÌN½n·®RÊ‘ݺA:ÿl›C›UUQxâ\ôGnýøó¯Øœ:ËË¢Þ Go]‘„¾td²ýtû7ooG†B)¯ä)_`=ˆ#/á&JO¨€ù¿û÷6QNÖÙC©?áù°,Úá¥a(q™«^çóŠ¢î·p\è´å½n³NßëêÔ?݃0Ú¬_+/Ù¸By°mð‹î{ÒLèN,:Ójð:wë¦vÿÐmýÇm3å ¹»Ë†NwLÏŠ=Öšz³f×T§R÷º|â>2 ªv´=Ùn6´­®·2qzäädn³‹rÝ€]“Dß•CN¼!h=a'pN-×ÂÅL_Tš[¯«õ™”Ec(>QÑŠÓÖ…Î }Ç ˆUhêÒlºCòcÖf;BO®±¬¸*Mœ6iÏE§]4—a'oëF*unñ•t ‚:M‰A«\ô¸5üájš¾¼.u€ýØÑ‡¢®ûxðþ‚ÈbÞ9—Oîtʬþï‚õIñ«0öbv¥ðü@üYäî@_ Ý¿Œf³½€[s"©G&±s¦yu+Ódä2Q¸t€®n àHf¿î™r{ðP4‹³ö0TŒ<ÕL¢Í™‹½4M¬d­áà7?ôá_¬É:”±´+¨2…óêœîŽÍPæ¤mW!.e¯ä' ­‰¹“u]q¨ØC8à7/Z½ë©à ¨%Iu+bˆVÒ¨ ™ÔmÞˆ#7º`ÎØ$ðÛÛ5|:^’šðƒÃö;thóÉ æ&Ø b³ 8éœGå“I8¹ªÅàï“‹ cÐK¨bÏO$ëî“¿ÉaB»Ä›3QVúG‹•›_ÞüË oqZ R/NØ ²G|Qp°Hæ¡M…Òyz¨2:3fŽi@?‹t‹%–Â+TÂä ÚwL–×p¹4ѳ0\˜°ÑråjB]ÝŒ,û¦µ™¿Îã½vLåãýìoÜŸ9 Ï#e¬Ö¢ÞÆ©þÛøÀ³‰Bk™¸, |?Ý?ê¶+ø¶tm*&I„nÔj ˆ<ùèÆ£ìÝ–ûXL y~Ô^àƸ^~¥˜l!ýuÒ,Çxó%Ò’t½k²&Ùº.^^¨iÀ†U Œ¬$-Ì—±ÀFTG±Qÿú¤Ýµ­ÕÊ…Òÿ¼VÙ€þ¤ýø§ŸªjµÄH.J .gH$zµZJ¡xÓž«Ê=4Û,˜>äŒ#ߎ©j;#ì—bé£;ÎTøH9ÿA¯ |ß(Ø( V°ixÆß ÇRž?©a] RËâ9Ëš¹˜ók«-á©‹j+·b¤NUÔ$x&A:IÛ+g‹™"VÎ;„Kž:ús†¯<(œL9Lá°?nàÉ›ÕkC@îR³«ç5âÚe ‰ÎȪI·àÖ¥ÄÜѧJãþg?ð嫹ü¡&©NWaß—$ g­Ž™æòa¼Ñ)GÜðÜš~– 2Kgây( ¾°¸[úPÕÀæ*o @¶‹„2ÖpeÁ5(•"¯MeH4Ag ç%Ìt¬eJ¸i[-ËWJ4P´³ò¾ÎªëÞD9Ìùby©éÍQëb¼aû±IÊ@VÔE_deñ‡‘Ô TÄõ4LÒË 6ØŽ~2Ý[|[/Ãf³¢À4ËἺ[+§$g/üó¢`B{°H{koABÒϨøöíÇõ° †FCpšy,Ú¦žª¼ÉÓÆwî„X£·ÅjaSô#fÇ73l¤HÀíå+×'£¯^›±:ák½¼¬èaÄΰÝc Èø3ÔÅ¥‰hŒêl¼\Â̲lÄ :ó6!G¬ öb[‹êâÆ°LÇ _zR>wŒ0Ðe9<À:À)kÍ!QO˜-êÓз;&E³–fâ € ¼?”÷’øŠ‡2KíÎÈW^Ê.7]>"7=ÉLÞý°"äûš°”0k2§TÊ‹ezqÙïÛa×wÏŸ…|ö$˜ÆžPj#bå%ÉK¿YjwF¾ö(x±éø*h¼$N¿…—¼{ÿáí¥kà8àÕWÔìA7ß>/Û¤õÔæ‡wl……8v§‡=ôÇŽ›„4wœ†XWß!A'r,Ž~þõÇ/”P©ŸÌëÈ8½86×ûl({sòús>Þ¯áŠãÕS•Mïì¦àP˜`“×°V3ôW™kžûâÄZ‹›l-l÷flf+ìÎÒôì•Kÿއ€ 6Z/-‚ú4¹Êhéü}1I/ΟŒfX^7ZêÉ$~f4àtõÎá{*R «¡‹ÿ3Û¼ endstream endobj 444 0 obj << /Length 2724 /Filter /FlateDecode >> stream xÚµYY“ܶ~ׯ˜7sS†Á+yŠUŽË)[N¬u^Õ4ƒÙaÄ!Çz ö3‰y&8&”ô\:>WoµÀí¹Ç¾Á¶v·“­ æQöuán\ý¹`0&!ó`À ÿ¯–žÀ€fÇšåî ´¤á/ƒ[GÖJ[6ÔØ‚ÀJzô¶‚fuÇTÞONae ·(j[²75 ’Œ©0º"F[ñ0=“wŠ‚ïî˜bëvv¨z´]:ö/ÆoËJV\‹fTæ€Äö:j"eÒ'k¥%”ç¡2úLú‹( ±%„rÚȤ0Á“põý;Ÿ®DîLƒÆ`h~÷Ó Ö uuŽ<üy&¥r&9`/ ã4{"™âõ„z!Ÿ:Û’øyë<;Iè,(söîõä^0õ#Þë=Ê&3c¯Ç÷2@Ø9ÌSóLÆ=õœŸo*‘A¢0pÇ\_»Úµ¶"6!ö‘Q{f‘€.Óùè¹÷ÍP‰ñkÜ•[o2@ ä=dª” Èj ÏS¥/rÁØÑÏx¿ñ½žšÁΪx‘C3[$óc)»âLº¬ÐƒÜgÁ(Ô†z Œzx63ö#<Èda¬GµXq™ @ÐXUìÁ¼e ¢¯›=•×`WŠa€zè7|P™zúFú­ë‡¶æõüÔªA‰`a¢ìåtç¶²Ž"øn‹Ô= ®jð‡|©ªaÒć›8Fñ}š.¼xž®p«¡—jþr2ÍжcõMè=q× íÆÌæÂŽn¥@Ke \îGŧ§Y`ŽaLìE3»¥X*)B•M€PÖ¯-i8]ä_è;>†ÜqvîŽ3·‘`èÌDÃ#ÛRÙ˜d©/œð‘#²ÐåcjíÙ‘WZ#÷óÒE¯^ÒR°L2’ vɶDØöÂäÜX3f KXýû¹å"Ðá¼׊ªÓ“ªq˜jçÄ6ö‚¨R¬Hù«øÉs¸‰±híZÒ•uçàp*¤Æ*¢”¨(qŽ íZ6 *šž =Î䤬7íx( …i”m¥êÚadg€«R6=ŒA äç£v±‚0Qñº“¤tƒº4jº'ñ‹Â#‘9 õzB¾”:m:ÏbRî¤4·ßý­¾kH2—6RÌPàjr›÷äã2É£pÚÄ÷ò(ÈLâÄ<óžú‰kœo:æQÂÐí¾dg€Ý„ž<«:\²×©([{ۉⅭ–Þ$Æ ½džeaì‚Ô=dÑLÿÚ¢BÚ w›¶<öäÍh¨Ö¦?׈Ã+>‡&N 4iR¶ö¾gt¿´ÿ˜Þ33DœTê²£Zø o '£1–÷¦Þ'ØbÑ”ŒˆsÃ!Ú1“yˆÞœ™;,“qNK¿pzïZà‰Ý-=$÷iãèo¶HþBÂÆÄ2a,Ó‚õ)²PGúó¬O¦Â$K'Õ±úm<Æ'‘Ø&e;b@Ÿ]±ÕÊ:×{þ)à‚Ö,¿ §®dó)â¤`¥³µD\{h,–ͬߪP $ÓG“iÒÏãt•[æ_V,HÂ<Ó¸“ŽâG+EŠRù‘:ŠÂÒØé‘OÖ'²¯^ŸHcHi¾üvTãŠç·{¨:Q˜0‚»¾À¡ENµÏé¡Ï©M˜Q_ÈÜPEfÆÀÓ•‰üÑÊòú?t! ½ endstream endobj 452 0 obj << /Length 2130 /Filter /FlateDecode >> stream xÚÍYÝsã¶÷_ÁGªsD‰~åí’^oœ¤nkëúPÇ£%XâE:Ç÷×w RMYºÄÉtü €X»‹ßþ° s/„?îe¡—HÉ2•zËíEh¿Ök×/¸“ @0H~;¿øëߣÈã!ËÂŒ{ó‡áRó•wë·Ñ©g”ÒßÌ¥"ÿ_uµ®õv›—kxÊ› µ>^}†ò¯^y9ã¾™$Éy¦t¯›2Zrœ@uÂñD_äÿ`ž·ú±uó«Y¶˜:/>ÓÀ9q>ï+ƒ_fQÜmïJ ;ÒÝ7ƒ2ÁUÊÿŒ×›ÓûG°"¹`0•p&²SìÚIñ©Du´è. &ÂEb·ä«Ýå±°ƒIùâžK`bz¦²Nø„®£%{8t¥)ù´É—ÚI$!›=RY ª+[ñþûó'‰z_2¾(*žðÜ´£‡ x€)£èywÂÿ3,ÁZŸ˽øk°tRo˳”íaùª®£%ß–…Þ¹ûˆò~WÒ:P§²åÇÒ"ømq·ÜèzœíYq«—uõ5è]}Ñ}ðeêâµz4æW7„oøE—}y¯0rg˜áÐ+HñŒâÖªù¦nÁRiò’8¯Dw†¹°êÌÕî]c©ÛY9gl¨ŠÁ6¾ èÆA‡æTÔ‹qm/ruQÑ¿—t<ö'âµ3?Ÿ ¾¡­áZzš ¡Xª5åÒ¦›YçEøÞ{Ñ~uËŒ\_¬ ‡"Ç]˜Òõ‰ùñäjà·Egí¢0åºÙ|…Öªv‹¨»·å½.ïãŠC¥u½£±¼Ë¼³ƒœVfL(±O„;výyŸÐÆ1”Í™'"aS7 ÌÛ»Ð[Á øŽ©Ä{²’[OB9uáÝ\üÛñjvXø…P§Fv)¥\Q»?š[K³ø ¶–Pb„PslíxŚɾ&A4p•«Jß ]:²Ø5øº|ó¼Ç€tœÀ÷_h¹—–Ô1uÑšõ]dA ðWl[У¶rƒ'jyðÞ†=«)iIÖ©Òo—»mð×ð9\qzÖžªËÀ¿²wúõ‹›ó›ùûù‡Éwç„E²¯Çìý€ù‚Ä—²mÓ–ö>ÂæÉ½¹TpHj°ù§«×¶OR–í‹]w=q&üOX¥¿²S E è*lxysÜX5àánXûgîm~Í®¡ÖàåÎ=-fAÕM¾„î©Oh³M{vØÈÝk$¸ I¸ÿÝ/§¹BÜ©vX‡—Ë¢]™o¦ÌGLd,J“ý)£Õ‹«^MšÀèú …ßhGqöq¿<Û¸v{›VSº4C…Y¹ê·¬êƒ5¤ýO йYë¶^Ñrð Ì&OÖ隌£‘y—W—óË÷?^þ÷òêão034€›ôKÿسvcMgF÷~Ô¿¬t£]†ÖÔí²ik³;i‚:f‡¿°€¿zRËjûX˜†²#9TÛyW÷70ÞÿïTw endstream endobj 357 0 obj << /Type /ObjStm /N 100 /First 869 /Length 1631 /Filter /FlateDecode >> stream xÚÅYÛn7}߯àcûBq.¼F€\à¢h‰ ´uó ÚÛÔ¨-’Œ&ß3’jXZ'^ï*ñÃbÉåœsf8r%Š Nbu¯DŽJDµ8fB][=á)ÖÎN)á]œVq’ƒ‹¥ ž]bm$³Ë¤ø®®„Š7¹¢è›“«ZÄ)¨8Š …lÑ‘ª#æ€îŽ„ð5AV"aÌ‚B…2…©u*Š0…'‚^ã¥õçd2¢L] ¾@5ª =ñp¡!€à è ä ^E“}΀ÍÀNèÄ\1À²ˆ²cDLÆ1 †±Z¡ÄF†Kèlœ1$ô‹bãW@‚ WÑ ÅT @’€švBd4A=—3Þµ6d<‹–oÄ©ÁSp¥FAĘ  –жSˆT3 dÖB§5Ù“OpÌHÙf…vë!! ½•«±„"Æ[EÁ˜†6­ÂK4²M€¦†`ÍYÆŒjN °ªµÄj †Œè3Æ€æk‘l(’ŠÃ°Ö)¹(°YA‹ÖÜ0G£`pFïS)4‹k‚aŠÍ+hªgÅ“[¹£#79Ž`kî­±.þ/Â0PkSÁ:ƒÑוgϚɛÅüì]»r§nòæÕ±›œ´Wî}ƒ&ùäÓu‹†é‡¶™¼Ä,ílµ„Õƒuo&oÛåüfqÖ.׫zýéu{~1}1ÿèNM&Árå÷˜fº@_g~nrÛá_¹S kÅ~ýíw‹&Ý\^Þªðepƒ!hˆé!¥}IÆ@رÏ`<µ‹'ÆS†ç þ–¥.ÓPp™‡€»‹èR„ár@¤¹‹4Fš¾Œô™¢g*3÷Ü“c ˜çÖ¥irÌGíÁÇ® ¶>#pÿ[>SÐuþ2Øù ?E°-]¯.=½ºtö‹’žB儆B¨ô°#îÉØÂzH©šGÚ÷8‡=ìš­±K• ¦J{Pµ+“u©êMÁ`Ô¥‹: F{ Þ•­¾ÅA6ê—¸³Ç $GuÉ©ɱ3ÐCäìË'çÛº„†NŽiG°¡¨¥ê]’â#Ž,CcÁø|FCîRÐ/òk( R vepšƒáùA9sƶútaS‰ºTÕ¡TQ5²'3y­zˆTç ®CÝÕC<˜«gO†¥ú’ãø8ì9A©tÉI"gò|6›c¨ÓõŒé²7庽™¼»ùsµ®ÿ|1û§™¼˜/ÎÛÅfìðÞ8ƒæ\Ù³ˆJ¾Ú% Òf»eʾ°@îùšµwnòÃüdîÀ÷wo¡çòúrúé{cá®r[=^&…àsî“ÊÎn_ï„«ÜI/íjk¨=ëh{–ê):'õÑnÊPÀË9zå^{¾¼Y®æW /çW×—íª],÷MË'¾û2-,ɈéAcʱk)–X{ð±—ÝŠÀ4ò e,A.#î6ÆSU»Tõ»“R ûNÍi¬SSÌ>¥õ…«'»UȘqšTä!Æ{úùååüß‹Ùsë_fçs;>]zØpW& yFþþHÛÜÍ7î„"»»£ %]Ÿj¨­ºvO¾yóö]ÆkÏ'0 B–xDÔŒØy$SÿæñÓšÁRñBö·G=<&æê™¿æœÙG¬›Ð&6¨Tãçf…)Ï/VóÙôÒ<õÇÙÅjˆgËÕâælµÍ!;´Ÿ'T³'8ö!WÆV‡è!¯›ÇŸVµ›y*^-í¿ÏØø··Å×Hj×ûpE{‹mÑ÷[âïébz†xc‡ë›Õ8? >Öä”ávç Ñþ˜â”%å3óϦ«v£*MÏÚ}Ð'ÿƒ¢±›‚Å0Ôêº ‚ºÙµìÿݦ¾ ŠZ¶ïÑ©b¿Ð()ù r,UK8$¸ üãk)MÁW °p˜³nãqð©ÜŸñŸ´‹«‹mTx=ÿ+Ðw€àœ|Bö³NN±«Æœ}”o§—â3v·Ô›#Ç dèAveËßL!l…‡/lV‘A3{û= ëh¾ŸŽŸÚOWÓëÛ€ü5‰ endstream endobj 459 0 obj << /Length 1123 /Filter /FlateDecode >> stream xÚµW[s£6~ϯà­x¦P‹‹±ûÆÚlâÖ·ÁdÛÎîNF ²Í„‹G@ÿûJ:Âv°Û„x3GBú¾ïœ£sRºì)ƒ®â˜¦>°úJ˜ÞtÅ(]+ÐñooÄi ¨ ?7¿}¶muõAw€”`uºT)_ÕáoKB;šišªñ{G³,[]Ð|MqšÆÙ&vq¹Þíìžw,Õ'8J⬃TÒÑPß:߃?n¼à@È6Œ72çÈsê½Sêõõ¾Òë[:2-`ïO–xçO¾·Xx#Ρ©Úvôž¢!SG¶|Ø3ê&²Õ .xÇRS&EÍ;šá¨Qü­‹,¢ÜH(³3 N$žcûjD 9›CÉ6.åÂy‡-¹Ëà!ζU œÉ (‰âBãÜ™=€)ªÛwØûNßTu)î…]4©n ›æ aßsGÃék6AgFažŽ p4e£‡@ÀЄyšuXQy `(yä¤Éþ‡0PŽiÔšûÔ Ü™÷wðÓȧ9­§¥¸¢• ÿø $%%Ö¶”ðpx`ȵm0Å!{·µ®Ñx¹pƒáÝxv{4/[\•#ëüÄOVí§ö¦ŸûÞx¶¸ÿ`Ûï6qBLžIX•Ç8Ë e§¢|¿šñÒsýáÝ5Z¶"'ºÊizàS“Œ³’”dÜ¥H lpeN÷€,¦à©ÖägE0YžiÊÿMô›ì Øóö¸·à·~`1ð¸ãÿYjÑœBËd¾œ(74¯Ö›úA®(ßæ¡¼”<±±M_ÓÜ,F³û©ç‡®Û¶½’v…‡ª”Ð8”N¤ëªv\[–SwèÏßrÈϜӳÁ9¬ +JåþɆ֤„#+p¥ÊSÏ»+Ê‹ïahXr}ŠóªHöZ$ÒlÆË.Ÿ9+"— dŠCš·Oq\þÈû|ÍÁj¨çS/Üòª_׉Ƥ¦k9”: Tìð>mó/žÿ—?¼kÄÅ2»å\ß“pÝѸ” »¾úÈ `û«Ép>]L¼àÊ*x1·‰ãŸƒ Åee›2γöÉk|{çÎFÏÿÉaÒ(wò²§þ¸@¯³C>f•/yÇmã~6š„ëâWeQûigáÍFïdv®Ò,Ë#Q¦Y³±šhT‘Ëw#œ$‡‰ ü „t˰X¶hòN#y.¿uí.û¡KìŽnöÌúÅËÆ1{=Ýì;ÿaŸ øg¸t¿x£«ŒSàãÑöÔ±{*N*"±ùªqí­?t~‘yKTD a QÙ¸ ís€;™|r‡¶•éØŽ}vºøTUˆ0å³Bà c˜áR>rÿñW G}¾„ua-î8$°„4¿n‘ÓÓ-ÅèF×|åó Ú{áÓüÅrBð’„> stream xÚµXmÛ6þ¾¿Â¸/'1O|Ñ[û)—Kнë&w‰ Hƒ…lÑkaei«—uÝ_ßÎH–u/R,°&GCr83|æ!å‡?¹HüE¤µHL¼Ø®|'­ïÔxûã•d½(®Fšÿ\_ýãU,¤/?‘‹õn<Õ:[|ô^ìÓ‡ÖÖË•ÖÚSß/WÆÞëê®N‡¼¼£ǼÝSëÇ×ï±a¼·6ÍŠ¼\JÏ.W2|åiµü´þ÷ÕËõ`P ÔZŽšŸ›ŽM—2ñ"ŒÚõoº}·~¾~yûáúæÍúúÍk4àrËA$ÂÅJj!E¦[ÚQÞІjn÷ü5­ïºƒ-—*öZÒk+þB?ùêøžY^}bµR¡u»tkÿmÖB©¸×8Tm^•sSw`Å'gJ„M¯±­‡´ÌÄÜ\`»ažWR„Ñ…;oÞÿ´¾þÏËŸÿ;åû“u@?vE›?vu¿T‘gOM[W÷(çñOZM‹Ï™üáúÅͿ޼~ñòkm6*ñöiC Ž´­mí{à95Ù0RüÅ|ˆ;(?:Ûû¹$u—f…¶$.lÚ´$ªúåÛüàr712ëêÏ3rÛÕ5.QB‚ - Ö©æœ&•g`Í;Ç8kçý¥"Õ˜…Ò‰üx>‰¯„ö h%µRúál¡Ncíl¹åAwüª®äónP~$¤ŽYºÝÚ‡vå–ž14 …–Ñ ÜO³yi¿f;^|iaÂ`7µm»ºœDÑxE‰UÚ)¤œc ꥨˆ®^ -……ö}!afXI(Ÿ}øñÃ2F¨ÊÓMa?7/EŠŽ{ŠÆñ†ò TàÕÅ­ýí¡È·y{ X7ç …°;‰Ù;ë28t†˜%¥nY•«ßm]Qïq„°‰ÎR7ßÑoZÒ˜~Yêá`ë|ËjàEÉÛtPC¯yp°Ûü_wZaÎ ªœØ¶=/Ü5¶sÇëMYœÄ—l¢È3†°r‚Z›¼Ìг¬ðÓ®+·×HïèÛ§$Ÿ|AlÆ¡I" M³@0È«‰Ó²÷§QÀ¯Ó(€J¶âD3éf4é`¢ÿìÆìªz÷ìovÛµúTÀÄ2°Ý£Ÿ³güP±ÅBs„QwÆ.FõSêž#ŒÂ!Âøé/°ÍrÜêí¡ÊìW?.Æø‹»ˆ&¥™-+vbtöÓßêOÊ Øê ”FÐÁzNâ‹ ‡ÈàdBSd"¢@ö{•ÂSÔP‘6-›©•„¦Z%¢éî‰_èq&Ð16ùµ‡tË,d¨Â?Ì™*u üQùó–&—†T§Ìsæ6 Ñ H ÈžGW»¸ŒFFhRfH¨Q‚{‘Ï´V éêqqŒŒ÷h¡–øgËœ xíÕ21çis^E v«Àù'É0¿´Âë”Y~D•–fÓýlsÁà e¼çàë½ËÍÇ[[Äxld§æG‚‚Ç0RPØÀû´¼³ÔoûÁxÁ†zNøK¼ðÄÒã>/†µ8UÏ>r™jÀœœÕûßÌñ,\mƒ«Ÿæ§¶µm8˜s©¾Ë¨×߆ 1o¶uþàÍ"Èù°ŠLâýŒµ®ê â&ô‰Žé€k<4øéÀÖNCz;ꊌ>nÜ{Av1d7 —ëž–ŽXSçXç-«õ›­š^”>?€Æ¹¤aþ=: . >—Ó‹+˜îîsyf¹x¤S’ǽª¦¯Yå8üsx(ßGˆµH¢ Šð ÝÖÏ#½?c nä IH³ì6³` ýiœGÃ8¼Ø‹Ýyz#”Ñç·²i ]¶¸ë}ÊÀôºí}©‹þAç×á¥FÃ5*”¸q ‚0Ä·šŸüE‹É9:ÕÃB‹ F«ŠÅ»«ÿñ‹ÎÄ"-•ðrsi?ž¼Z̬j¡Ñcßbåx\<]Ã<³jâ‹î·ßdÕ$*™®ÊAø®O²g|‘ a>£>åTû ñLB«‰Ãp”³ ê?¤M2†çY6Ç“”ˆc¬™›PûBÅñûtq•F‘»Œƒ–wü%ÐrÍàh†~èݤDž²68&q< åî ®b eäô›¡¨Žío'NÙÊ;Û6ŒòÔ¿²›1’\Ï2a ›YŠï+LϽ´¬ä³¡`—ç+)—âó³äœ«`ê³ OzJ!‰_ÍìÀ ™È„–ÜÞÛÓSÏI‘&0“ç$;ðŽÖW©÷ ³6Ûs¤1þBÉ)˜fø‰j:`á6½Óú=NK æ ‹Ò¼»¦}ž£½k>4•ßs"8“{„0²e沄ôAw[*FF$ÆLÃÝʸ'ex…Lèzý=r£Ãà¦o±„¸Ò‡ú‘ÄŠ¼ÂíÒ®h‡a}$¥´%­Ñäî ˜ºËûѹ£vð×;uBüÀ:‹ÒÚljCVMØ%m­©ââB&^†¢“#ô›ã† „m )}„à·7“;JÎu¿ØÉn87  ðhì¹ÑAêâÄY{IŠG®Ã3CtÑ€Ï÷ ÇŽ¢/‘R…º endstream endobj 470 0 obj << /Length 2395 /Filter /FlateDecode >> stream xÚíZÝÛÈ Ï_aô¥òá<Õ|jÔ¼µhí¡E/Ù{(rÁBkim!¶ì“äl·}ÉáHkålv[(ÄóÉ!9äähù,†|–ƳDJ–*;[nßÄn´^ͨñþ‡7ܯ[ÀÂE°ò7o~÷NëY§|vs’ºÉg£?®³}[Ôó…”2¿Ÿ/”ÒÑßëݪζ۲ZÑÄCÙ®©õÃß~ƆŠÞY¾)«9Šù‚[‹HÊù§›¿¼ùÓMÏâJÎqåÖ3ã’ÅÀ»gÝXŸTĺ`ЉùB}@¢M±l‰åDEþèèÇâq›í‘¯±&@U˜àdx13íÓ}qˆ9 ¼ú5Pçe/ì"àØË7%3<=qSвH|覔 âõ}¤A“°½¯!æ|ü€utY-!©jhìÎáÉîà ôþ+ÔV—.ýÚçA âJÍ4OA0Ž™ÐÇOñ,‡Iˆ\L%³·r;“àˆÉ›Ù‡7?Mezè·Ü‘2I9™Ë bw‹¡M%f€“ ÅOgõ2k B&&-?‚¦¿-b3싊c¡¨ØGQ…²ÛýÀº(k+~=”_æÚä¤E ¹ƒi»íuíî`åå ó³¶¡î©3÷õÎ%@ùaYL~wæa[Ôàƒävõ ºŠÕ6>2kí°ù}ä Zoç!yÙ,³:?ç$J2-õWEåÕã n!é½Ü\¾Q#—q²SìÜÛDݦÝÕÙÊwŽ’Q ¡8èý'Ü”gx¡Ø'š€6Á!Áçê+è᠌ᔠà™}E^»0 mF§P•+¦„|^îNA]¿¬ÑazÒb„bÉ€ðϱ˜.[ý6«á°ÎŠ“F#-&XÔŒGŸ y×ñõhÉŒµÏ,­”NÁ2(ÖZgÍT¦¤ÈíT)MùíñQ<æ,òAÊómŸ¬È‡»…‡V¨s ­»:‡ÒÄ' å}%²Í–õîeª¬ÚÞÖ0Ç~ü_5¶!ýJ¢Ê‰¿À“þUÔî6LTÞÓ$àP]P3£† 4ЗŮ× –ûÍ~aXÙ"íi McY}­¹¦Ãµ¼%»é¸Ožro÷dSæY@­#}dUCúÀàÓÌ!pzЂ}¬$´%ÿʃÏ)Fû†Mñ…’…lC>*êªéÄô•/lÿ¥R#27žf BìºúË%#®ëË|ê Öñ—êì¬ZyCéMb(–B u¤†ãÌ[ ©6œM¢¼f)¾*Ú³91´­üçÄÂ2©äõ5¸{§Xû§å¡®}жyë–„…øXâ/›ójä–)ùìRðФI\HœéÞö|Æìß­š)lÉiÏCƒ‚*Nöix#ߎÝN(ÝŽ°€2}=3¿½{¼­²m1yO #žª¯º¨%àCëÅõeõ¾;uJÊ!ƒS—³\ˆÃ±9BŒòZ½áÄ6k s†‡–Ñó¯sþÀå¨0×L I›"d™Må%:€ qOÆa°¸«<ïáÓ$>g¦º$ØôÏÄÔiûý¦t ¬,½²É§¤Ä0eú( ÎéÃ5,ü9ÆßÓ/€—yÈþÐÖ¾ ëW¥3?(_?1  R3±„b5¹ð™¡[½–OÔÎc¢Ž·ù†ãˆ3I¾öq‘8þçªô†ú®ÜŸü#òÞ'º*RcþFmy%û~ñîG${ ç‡äªªouý¥sAtüï¦üÿ¤óÁÀÎþ»(-Ðí’t"òœ•‚¸ÎEÇWÚ>¯^ý¿ã?Ûñ¹†b]™k?X~Æñ»U¯ïø×±ß9þyîG$_ÅñÃJ±¹ÂáŸñ–u>Ú{Íþdóc_'`¯ñårRÆšÉdôâõ¡@NŒí@Á’+B+9ñ$¹•Nõ3'´²ÝãDp>…¸gã*¿ŠÆ¨~+&]ß~Ó^äßL­Y"ú£ëbU6P¾ù9e·â,µ”%=ÑCp˜¡ðôÆ[n²»æ¿Æaã0¼4+ÆãQ)ï@ÈÊi+à±)¼½œ†2©ÍS¸±"Ê˺ Œ™à†š§x#cÁô.0  {Þa»Õ‹`ù„ÇŽ‰ŽðÆvx,…xc{¼‰oRÝá Ì?Å›BÔ³Wòß­¾Àÿ˜h9 Ò÷Ø YÈŠ™Ä…à“I²K >quß•Šª]‹ Ùû‚ë¸ø‡Óà n ÓÜo¿;”›Öýõ>#Yà¤y‹áQ/8.»Ã!Jæ9dÔw>òKÌ¥ \]qF–î…9þAn×Gž‘j±qO¿¡Ø'ÐFÒðkUz7" þ„"Õר© ÿ,Ø!PƒÆÀÂø%Ö[Ñ¿£,Ù endstream endobj 475 0 obj << /Length 2709 /Filter /FlateDecode >> stream xÚÅZmoä¶þ~¿b¿U[xY¾“Ê·¦h4@Ñ$Nâr0ä]Ùn%9’ö|ίï I½PÑz÷ÎëÁÅ$EÍ çåáÌhÙŠÂl•Ò•‚¤Ò®¶å;êV›û•üôý;öm`ãf²óÛëwùN©£$¥)[]ßMI]ïVï“¿=d]Þ¬7Bˆ„³ÞH©’5õ}“•eQÝûOE÷àGßÿóÈä§<Ûí‹jÍ’|½aVQž¹þpýw¿RœŸ)9î­¹u"%•_úèžËìÑÏoqþìÇ[Ü—í÷p VÉ“î¡hýÓ»CµíŠ:Ð)ë&÷£î! kuµ k½$ø~Xj³2G…À9Òé9„Ö„Sçvg˜Èç7G‡Þô»7L¦ü+Ys(ó _ìÈz£¤Iþ³¶"©ÀY›¤Ìú3j›dm[¯70ßY—û ™Ôä÷E ÖÏwKrrª‰M{1«ñ4‘€‚jd¿+¨adQåO~Ç4ƒ`~;q &ðú‡NÿÀhµáB“TËptæ9Lb£èÁ(f0ŠŒbz£è£Fa)'‚Ÿ<-O‰•UÉõCÞîÞLRÕžõj`° nWûa“—5>ÞëÏ9aÆÆÇGµZíäÛùa¤X˜‡ã[vãÈ$À2kýø¼ÂøPÉ+¿qt8ަ¢ò@ç©€Pq£2ûâ )¡¶õc:”ãnIÏ4rä£jVDªÁ©Pµ £kw¡@ÊîЬ}€ÃôÓZiâCîÉ©–ï›< È&{ï€ÑïySû $±ÏÛvÑù9%Fᆠ‘ì9K°@T0ÅÊüOaÃí¡Øw€ÞÌF‘”éØÌhÁˆ³Îˆ+ˆëfIlkÕç!‹¤D Ë.zÙe]Ìdƒìn2ú^K<£Wp Lz1¥‰L!„Á¢ Du¼8‘Dliž|[T;ùF%?äÏí’¤è3„þu؆ûeÒæ¿rðöÖO3x8ðˆg<¼¨º.< ˆ£GÂËÝCSîÝ3VG "Ìj=xüµ½$>p›lïŠjã¬Kc³‚?Vn §Úí7áÔ:2%…èì“—Ù¶½i»¬ÚeÍîæãQ³2p\nXÿÞÕiM”Š —y—½@45Dh~ŠæŒžè¶Û>ETœOôSqã#F2I,›cYÊ‹»Z4jG†™vU»%΂« ë¢jóæ%ÝSÈP˜qk0P×ú+̪ˆf®RKï©R«d—ße‡}wå5z…ÛLÄICµóAë½B<ÿœ•û<vÓ!ÿçeæ®¶ƒóXxqup‰Û•uî|+0F*¥ QaCVùs—ÐÂé¹y›7!š~¥ŠÂ?¶tpM‰2ƒ¾À $ ( ÜN™ÿÓæ8Ì‚¿^÷a=ÀNxrë!'ðÊ€Á¯”ɦ /tE–‹°R„ý˜ªä»+œ¤ør“ÏæD1»´÷O¨H÷#!•ÆÊ&»¬ºw׌Q«~”ù?ÛCÛÕ¥ßX “ —à3—áåw>r”Â`<—ò‰Vx^/z½Ä*öEöaSé˜ÿƒ¤ŠÐ™‚”ø™Œl6Ån—WxÏÃô¯•ßí\va™oq3\äE[â’pÐÞúaWû]A/~ÒkǃàdôÿN`Xõó¢+²}ñ{æÍ)ŽÏsPI †Eq_¡%p†‚HŠp¥Ñ"0Âù€-Íã¿é7uýq))#¹t§)²Û}îY¡yÚ<Ÿ_X9PȤI O͉¬ß½™l_(ÂæD}¸çup¼Ûqð~¼,Qʯ­ìån?\õÉOà:u“Çì>  7óC1®áÖ+ r0©Oªß½™l_ª,gDèð$HɈä1ÂA2Ú!§™„GÍAþpLJ¬ÏUËÎï<]¡SB9žK¢YÈnÞ‡•\ï`,ù0º#©RÜW…*åñ6¨ ¾WèKèÚxø×4ü(%šÑn3æ#qI¸sZ_ÝDéòÊŸ©Ù÷úmÐ:—p=I Ç’P¹‚Îß «<„@" ¢èÉm-W‚(‹§Ø¯~~÷c°L$ —àf–;ZL†ðÛÖe®í˜³ @Ôr ΂~Í£¥¸â¥F/ÄUp¢‹Ùíÿy€Ó*ÓÔ´‹` ñpmyo˜„/A11«&Ë êR€°q¸ZâîE9ÜãñQf… ÔrâM}WE#¦7M(¹÷Ï~)R}ÛçcU‚Y» µCÁèâžVuµ E æ ô³6ï¯rKÌ šúª¨¯&}x„ ´Xl£hN 7gh‘j%+ÄGöz ˆ€œöfH7cwb`5Þ9/A…x TXPq*VPtiÍë "„Cò´¸8…€Qg—`,¤ÅqÄøR®Í/Ã<ÿˆë(®Æ>šV³ ÿaè.ˆäˆlíÆ”J%+ÿ)‹míNy¤hÁNB H¤` Ú‰£.Q‹âôH†b ט’xÁNÍ/QQj./¾ÓòåPÂq,Ï…’I6–@ùøF8rws¨nëCoó–h ÐÿÕiÇÐ…9%ÜÁ¦)\Çp…šW^Ã̺úi v2í€9$”^cûá»ü¾+ ±Rlý¼ª;?ÈöX3?û§¾ÜuaáߪüºoÚÀÂ,—q&¹ ΧHŸ•€ì”Û¨ˆHÎH $g$FRLjŠiŽr ¿‡p®ÃÆbñ›ÓFàÙDû–õ sWd¹Æ/êÜëËB^lEÀ=ãÞ:|¼ü½QqƧ¬7CA(¬+®,Qô•)¤®\G ±((Á!†.ÁYB©¦*漌‚Rbúq!¶R ³ (ˆõ Nã–ê$ÑržåTîÓòrr Yïñ£øÈ¤!Žt&@R¨Ï ">FÛ|ä€êÌÌJDðÈÓ44MihšRø` UXC5ì^N˺•úâ¼Ì}ºêaÑÉÐâ“°ò«qÁÿ /ý¸%±ôWûÅéîp)¿˜èYpɹqW÷EóDÇšR ¿ˆŒß¾¾Ô\ -±Z4P©ÔìÌÆ8×8Cý Ê= ´HûÆ< ü·ׇÙäg ©õqsŸ)˜ÐõÀW>Sp_ðqKô­R ;qä6fž¾oÒf‚ÐѹçŠÄþ|Ý„–¥RäíÜ㥆„‚’ÆÚK6$Ψ€Ñ7¹Ô§ÛjRcÌ[×Àq)9q IzÈå–°”¦‡oSãþ1³œ83XQ™åD앞Óý%÷Á<Ð|‘÷,ö«RÈ(«$F¿²µB>ƒ´•'Všp8Ë%8 E‰a*æ|¬cE5½[püî±=Ú²²D²øWooÛ±úÅ…úSM»¿{çÆŒás¾=tË?(Ãß×hýíNsþ0™W° endstream endobj 481 0 obj << /Length 2672 /Filter /FlateDecode >> stream xÚÅZKsÛ8¾ûWè(ME¼AÌž’Ôx*“šT6q[™”‹–h›‰r(z\Þ_¿ÝhðiZ’9[:@t£Ñýõƒ?1ñ|â”b^'“Åú„‡ÞòjBœˆ8o癯ÎN~=5f"8óÜ‹ÉÙew©³åäóôõuzSeål®”šÊßfs­Íô}¹¹*Óõ:/®hà.¯®©õÇ»OØÐÓYº\åÅLL³Ù\$†Ë©2³/gžü~Ö0d¤YÂàŸÎ ìý.L]O@!Ü×jòñäßÑÒz¬)ÅAXa)ØËƒN$ãÒ‡pb™èQ¾„ƒzHVsÏŒ:Y ¶á¡«G¶"ƒ”àFÛžAþrYëÎÈéë„%Âí5KëY¢úVù*Ø£v /ƪí‘@n³b‘Ñœ2»)³mV ºTY|ñçÇéq9ÝV%"ùˆYIm˜ôIÍl«kc,+ ‚n6VOT@knûbé“ržiÞàç`fŸŽgØŠ3_Ð1h(áúò",Ê®ò¢ OÅ=ÂÇ\ N›ÇŽÅmYfî*‰› aÀµ²Ó³ë|KCë”ãc‘ÝÑ_QÆá•-u¤ÍŒE¶Ý¦å=âI³\FƒeVÝ–a‡°—®úü33 ÷6BjѶØóÿf冞òË1)zÅ´Ôž—f‰iζ¦’…‰,äKBI à‘$ɳ¡ä.Çj%SÖ<Z’?à†Ào÷§ÁOvkÁQm7÷Cx"ŒbLײf~JðP dq Â’#ø˜áqø” Þâò8TdŸj<ž)£ózãÅiˆx”ÇôÕWú½8* èÑcH ÐM8 i‘Z$ŧIBR쬑´·È$• xA{°eJ‘t‘Tôn•Ì·Ðá0Šàf°.†¿&­š-þÉÿd2ãáŸ'üÃã$ ÔŒæÓ7E^åéŠ&‡0S4\Õo‡`7àå僚5.„âÇ•ÇÃ@…ø¤äãÀÀÁ²Œ° äŠ(ˆ•Júúó3Ú!t‚,˜펋ÐÛ¬B€3?؆’¥;êÉ1¬`Å!ÃJ °ƒüÎiñcq$‡, ¢ \KC˜µ'‚5€Â‡²L§êQ‡`…Sä‘È&üà½zdb0E´A÷ ?f »ðØqpib/{Áx2@ãß¿ÝæÑ¢ÚH¬›8ÚîÖuS½qDŸ²«—N ²?XL8ùŒqÍ%– ^Ž ÓB kØh¬8}”À×RÂÙƒrÙô(ïmŽB6†6=²C»;z'oögxaï\Ï1xÙŽz?Á´ºš';!ÆXQ«möX}¤n(ƒãó‚ðœü£1mb_º*³tyO›¢Ñ2¾PP?%iÐÑIÒVñ˜ù'l‘¦tÓ6R ‰ù@ÿ?„”kÄ[k¢©bVÌ+ÝF÷¾¹ŒE®bÔ†{ Á~—ß”»¢ ‚¶?”ßµ‚Õ:OB3€üàq~îÈøÐ>57Ï‹‰a‰2‡£²ø9NƇk íÆcP®±Gy70…lÆÙÿSÒ·69wÃ&×É^Ø4R›¬µ¥À›Flš›ð\Ì„Fkº0ÚÃL|k¼.®0ÂpONˆ¼‹X GÓ°ÑÀ%‘ ÿ—5& !n'Õª"†ê§`(Ú©H¾뎌¡þI*œ æQAô*+²2_05 pv®=ƒ03ocm,ÓÂ&îoÂ^²h—}PMjPÕ# Û`|™Vi„[ç™Pö'f±¶ãm,˜€*·µèíÔv`èam:›ÚNw‘]µϼ:X¡´±½ÒN—HZ^äU‰Å’ÐOM<©¬5q¡ÁðY¡èGm\0)T/ý®‹è¢/Ï*#–bFW†µ-lÓ0?€äô޾Bë+}L„V€øœ†Vg¶ç£ð?žÊ˜ »õÞ$‚&æý’ªëšú"`S 4q%¾ýëåûGév?}ŠP~õG Ñ+2ªºÈ¨‡EFEEFxð‘%,—ÕÑPô¨¼©>ªÁ;yÀÝuN ÖÔ"B÷2þ#ÇŠ%:šÑÀBxPKñ=¥ñ#?Lu!à=,}§'¹IËmvŽ—õ%3HãŸöÅ¥ÿõű볤÷ñû‘Ä×B¥Qú{¤‚ü¢°‡µ$p=‚¼ ©¤Ð T*„^ð|.©¡ +èÝ>µ.ËÍšÞ‰Ð(Ðàø:¡Cqs[•‹G’gÛuÝB¯2"’ÈÑ/c!¦QƒE¢ ‹€¶AºÆAË’¨>ÙLЭ@8ÿnϦêÙóÎô‘M í›É¯§Îb^Ía:¹W…àSòX^ ‚k°+§/ÃGGL^CÀ4]äiEw@œ™žÎ¼ž¶ñô¼ƒCÞR“ô ¯: :äïk8fë[†mPž+š81à&–9WT½;½Ÿ…œ(¤àAÏŽŽ JÉD;C«{ëŽ774p©¯uT‰P^MÛ¤0³ÇŒ@Ÿ!\ÔeN`úšiï¢Ôyz$æhm.š t*‹Ð¡E•/nWx×-ÁCv…[0jú„¸ [§ÍbXåg†Ën±#xzY¥¡xõãrüT[%Ž ½†V¼”ÊÃÆ»;‹ŠßɵPãka±Zßÿ"Ç endstream endobj 485 0 obj << /Length 2763 /Filter /FlateDecode >> stream xÚíZYsÜ6~ׯ˜Ú'Ž+ƒà"æÍëŠSÎáòÚòCÊq©¨!ÇâŠCÊ<¬(¿~»qðc4r¤­}ÙrÉ$Ah4º¿þº1lEá[¥t¥„ ©Ô«íþŒšÖöÓÊÞ¼ý錹~踙õüçùÙ÷/ãxÅ(IiÊVç»ùPçùêCôâ*»é‹v½BDü‡õFÊ8zÓ6ŸÚl¿/ëOöÅmÙ_Ù»Ÿ^¿Ç½-²¼*ë5‹Šõ†é˜òH$ëç?Ÿýx> sþ@ɱç Ñ¥‚·j•hI˜Vü/×ZDC½íËeùˆÀ‡ÉŠ1’Æ1Ç7B›/©ý¦­.¶Í~ŸÕùž¼è×0{=³x[gû¾3£š:… EÍýˆИº‰ÓùÄ’p9vÚ6u×[%n×\EW™Óú3œ/4Kʈär6 s“,Ô²T’´¶a‚°Øv~[ôC[Ûñû«ÂnÙn ¹E™†i['pÓà,æ$¡‰—aÖm!‰ŒGI vY1¥ƒå‚h¸þ÷¶ËoÔE³»¸.îºâspËN”VÙ2qß–áÒ6œ)NånqÏ®×\GF€ï¬~)îöÙn¾³wà4Я·]žõøpðÛàL1¢buÒ X Ta+ˆ•³¸íÚÍ´ILu0­‹)Ïî«7Ä`ã1P%øÖÒÆ$PrkŸœ m3 ÿ¦Ù@ 4w} &ÔÙÆ¶¸i‹Îå*¶$½+ÀëÉÅää îSçAؽ±-cR> …K‘äSª¶ÔÈA1²&>Ï+-ú¦’0š.0zï<÷2ž>”§åVòPh¸£Ô¡bšè˜?ÚQ‡Î"†˜Ëˆìq¶Ë!:AŽEµ8å¬J¥‹§™`‚‚r3‡²D´|’i%$ =˜Ö%í$eœªÿûvØ·'zr”¦dªKÜGÕ²ŽÉUl Æ#Ãö—¦Ì¿N®òaS´Aóo«1/Ö“Ù,‡;SËL“pSM?i~ã }Àkß´Ó„ÜUNÁ¼ÌÙ@a›gGx‡%äξ°TlþálmÃÜø ã Á«;Û„Ô oÇjÆ1÷vŒ0§Ë¥Àž4CNRdû ¬u‘8 ;—5á–A“êìÌcªo”åóuSoþ*Úa„jÏþ!¥*M w¾ç®i÷YߤÌW)ºa‹rÙCf/·Ø”¡Þù´!óù+– Œ§12ª%º-JûÌs[Èœµ5;ϯCÚN—§òj}3ôíöˆNfÙÁ”Éê°ÓÔªóNÈq°¬ó蘽pOÔ5ú(ÀÄ…5؃‚ë£û&µyx™‡£>°s}ÚÈ{âüÈÇ{´TUöÝeYƒi®1Y_é9}{·uŸ‡½ˆ3í׃¼è_µ)Õ<žtÙŠî`ÜN‰ä7q®§ØMm‚U£ûâÅTÛÍäæû²6 ³í`½qk|4¸^× w놙ՄàÉè1 zœ#ÚÚ¼Kæô»"ÖàµkÚÞœ=|ƒ;x¥sBÀKWT;wßÙ+Ø`ce‹ A¤c<ºzûÖÖU©?³‚C^`¾Oîû²îʼ0(œD¿£­4ƒëé³zšD»¶(šdƒoBóÖ3rŒeñ¿h;WÄ:m‡*±2ñ®&òƒ‚…èG2?ø:R£óÚ;Úõ‘Á–Hz{U¸ÚÄ!jƒƒÖ­-oêŸۦ3Dýûþˆ'.Þ÷²<÷þWÔ}{÷T|çþ3uGă™°Ñ@”ãÙyúÈü$N•ÚŒ%üŽfF’*³O1³„{¥“åÌG2#8£žhZ½˜ÖgFiJ¤>(AÜ[Ûë²ÓÇÛqéƒ*ßó<ñ/.çÇ´G²’t*Ö˜PçëpãØÜ™¸§.\Vîý,V“ßmó`ÐÕœû&ÑØ¸ÏާF<¥ ñ ÔH:UæÝÑ'zž6&8"3Ú-\²vXéÜûZ§ˆ›2(¨x€:å .;„ÌSCKÛ¾©D2ŠGÅ6 jó›‚ lþØÁŒÂ Ø*žóè¹9ƒ !xtkVGïë¼Á‡€<ˆáŠ$Þ:ß 7½ÛÞ¡4$”ž(¥ˆm9j(å³½„f³¸föÝMVÖUÑuþc˜O¸1°ø/üF»>w†" ­}šs*nŠÌy‚—klÚ`X…Ä{7Tæ ÕÕåñ´Ð)z[´=ÊæJÓEÖ¹â·ßw][µnö…|yFéätÉ4’9ÃׯÆsJ§0ÜäÞIR‰žŸT»âæ+<Ü—z¦|šLŸºrƒ‚ã=vX ž÷ËB쟽mn DE+srm^æEUôEgßzº-Á6Ð\ð÷™´–³Xj§÷G9Jšóç%€™04Ã)üaØtär4„ÓE·k¹85v VKÈ–“»+¤qÌSšÞF{›m²›í~H׬ÂêÎoP úîP·Ø4í8vúÒÌÁÂÐ&â£Ën*³ endstream endobj 488 0 obj << /Length 2528 /Filter /FlateDecode >> stream xÚ½YYoÜÈ~÷¯˜·pO‡}ñؼٖ ’hÇ×(²GÃd†Ôò°¬ùï©£É!Jòî*‚ L³ºÙ]]õÕI¹ áO®Òpk-R“¬ò㫨ÍõŠ^I¿n 7“•o¶¯þðÞÚ• E¦rµÝM·Ú«ÏÁÛ}vÓ¹f½ÑZê‡õÆüµ©¯›ìx,«kž¸-»=>œ .\VÊj-·ÞÈĆ*ÐñúËöO¯Î¶#CV©ïäW>Áº ÌšU”!µaþ?îÖ¥lp·VIP÷ø`‚¢fâ‰ý¡+oŽ)%ð[µÈqÐt0.ëªå™ºY~vs×áÂ×ðlb¿ÒY…Kïøµ¼¦¯Ê*õ~ϯìö®õ Ô7ðÌ0ùAp«ä n¤ÒòýÆ{í¾î¯›º¿á!膵Ì! ºúÚÁ™ O—ÄgWóS]9?@N’À5Ä‚Xo¢ÔÛ}Ùú·üoá_ˆÀ'è%šêE[)™‚‰ãæpyå®Ë겯Šú’/6,á›I^H7ø)´!üK¿ñLáF‹XÅþYU,®¤PRMwUÁG?¹¿ àj<@x%X¤*ˆ(òjØîã¿[ƒöî¼[6T3ι¯(hÇâösÝ>ëx6¼ÐàŠåÎó=’eŒYã~`Vµ\%""Cœj‘Àµ7R‰4ö,¹ªu[ÀÝ6¯ ÇÿæŸOçïþrùîìÏgÛ³×ÊÇóÏ.¶SÊ›³ϧ„³ówüôŸ?.‰m3rƒòvx^weN—P|çUÙÞKqOø[:%ŠD¤ì°øè²ªõ»×,Æì¸é˜ÖÖÇA?î[÷š‰ð't¤gl°P~äÜóX°ÜÌ=o!óvf@Ï[†8ÍÝŠStLAuò(¯ *Åðþ`æ‡CË nÇmˆXƒ/Ó†IPÕÓÐ=ÔˆÛÛéÚÓA ËN,[6jz.*BË¢¤Bacù„µ‚#1Â(3шº%' c͸m3è9»ö–…+Ë"‡¼pn’sѲ‹zÚO(KaòÒŽ(i¯6*Qªyæóûu‚:Î)ÆÈàˉ)RkÉX'Àï¸[YulÍ ·æ×£pÆ H<9]ùö§¤ÓSŒPf\Dޝ.‹¥ý@.©L&ÛÉe§bb!c5 ~o]Rs´ü ÏùêÓ’t0ŒÊjW7Gzµ 1èÑDÆ?>ZâLñ¶kúœL1Òƒkt·¾í³Ã™a?Æc£`×ÔGå™(ÁØ–œPc;™ìÎ.ÑG<•üÑSF¦”°v²5»¨§·–"Ò£€1I\õ¿’O=¬=0ºß~p~ŽØÞs~k!—bëä0iá/ ' §&'Ð>Æ}l¦/± )²ŠÔóÚÐܬ-HÇB”û˜éï¶ øi Ò°‘Î,èí¡n)M‘‰00Èû¦ñY <òa4Ø &›]ÖtäYþPî§ÂT€{|ı²¢{¥™¢Y6ž_Ÿö2Ê D!7š¡l’QéÀçRšpæ“°E˜E‰‰üu± Úvµ/ \–cœÝÏxçÙߔۧxëcµ|ÀE(ˆÌoë¡Iÿ"¬3ö0{dÀCéøóX‚ ‰"‚ß¶ªðó—pUÀ$xaaã·´ô¸ÒÂ&ÈÃaõã«¿ùÚqv¾Š´0©¥½tj×}J¯°È…dêõ[¢½ß"C˜L°Ùç€OΑºÏ_A £DÍ1ú{t¿‹Ö‰$MŸ´n©œ‡Ç wt\uúJ˜‰M°¯‘†¹^¬9×¢7q P¿”IN+&£³<ÇÉ Ô‚£m<±¢tƾVbÌnO™¿/˜éÁÊmd}ðE®~ ¥v9;< ¥E3MO)Ð(¾.°°Q6¤ÜK*Im‹ÌDB'£»Y¾l>¶X4Áhb1 ’=8 3¸ÉZt¿ @°ÅÑÀĈ{'¤ÓUlãrY•FÏlã»Æ9ö<‡²í–óB°2mŸ7ª}O^‚}DsÝÒmcï]‡âÜ}Þ}vH§Â‡ðV,?m-$šÏ›€Ør) I™—–Z —KìÌ[|" ¬ûE8³3 (ÜOð” jaÉ/¥‰,Mê]¸®oªv¹"×vb6\â4æ”Ï–»ñÐÆ1·èˆ³– ¢8”äÙè+^Å0_mþåšÚÇBe!BÞk:•¾WƒU¹ß áq‹"Ï|VÚSCfhùfÇ.ïËŠÊÀ š½Q¼­‘§v>T®ä.>Œí œ¨=Ñ7hchX–¼bèÿ¬S˜ú×õØdKš^+1Þë{ßó¬^kÔÒoLìÔióIvô@Ú¤OÑt~`õøU¤íFE3×¶E98L¶ Þ™püD}oøm¹w°ö•ë`:f4ùDªã ‡-¥©…À<&m§±°‘ùßr=½W®ë$z"×€EêT÷·Ìnæ¯*<ø»pžÇ£’lüâG½²õž1âu|HUúãÐI`k&¾ MÛ_µîçÞq¢<ÌÌ"çðg“¤›A͇p5ÎÞ‘ ·iäYâJD˜ ªàíÊÀ¹ nÙZ˱Á7“ÏhJDPñ?ORÔàÁpêÝ¢@ (OÍÑˇ â¶òž;xoi)ÿ}¼1³OŸ,Í“1¸ãR¶´yƒHgbÍ‹pýÒBø¹·vÖ= BÍO§H¹ØQŽìÓP–zyjŸëd^ã\õ»k5n¦m|ï%Á=&á3»Iˆ>¹ƒ ø¦È:wù")dj^¼s'ÂZ³!#ãØM´§£À;Fíõ ”S7ˆ=Ä›L¡‚× ÆÀ=vBÆëH↯°¬nø=úú€„‰;&FÊêŸ-Ï ­Ã{ÕŒôue`Ž$>GËëS£ÿ_J_W—•»%x.[?„!ý⪖VÄé±O£'¦„E"! vÔg!i´Lñ¾™¾ ùöåÓ8‰”c}¢LªÇOÊøzÆD?SÊy¼¡(zGw¡yåkýtzÈv㇭f ußÝô]7æIÿÀq¸£Gÿ*•Zï endstream endobj 492 0 obj << /Length 2698 /Filter /FlateDecode >> stream xÚ½Zݓ۶÷_¡—N¨L„_Ø·6M2ÎL:­s}è8•–¨'©Ôï¿ï. ïì¤ggNàûùÛ¥ù*…|•§+#%Ë•]íN¯RGínW4xóÃ+î×m`áf¶òo7¯þü½Ö+ž²<Íùêæ0ßêf¿z›|{,ÎCÙ­7RÊDüe½QJ'ÿìÚÛ®8ªæ–&î«áH£þño¨äMYìëªYó¤\o¸Õ©H¤]¿»ùñÕw7#CZˆOäW~„ue`Ö¬2«—ŠØûýÚÊäÒ솪E^Þ!ðb¶âœåZ |q#­{3¥wªfXÃy:éêmÛl›ò~ )·xÉí¹kOçvÉÒùñ<—̨q—_RúÃòùaŠ %¢»µ°I[í—öð·³í¸ß.ºô†çœñÔÀ@2®iñ ^º¬ëõFd2Ž%Tr9ïMöÅà ‡ ÊdúI† FmÓÓÄp,Ý#‡~ù±À‡»åÔzŠIÊ=b†§¡¥§‚Ö i€‚ü†ÆÀÎp,ž ¦3Êiº˜ä†å‚‡ûwu°ßF£PJ1cí*3œ ž£Y¼}—®ö0ùã*e ‹{·ò´’L £zõó«yÛ‰NSÊ2+l4ëg®ëXêÒ21LQw`ì¸l)³LߤN+öU®ôœôö IÚäæXÄ%WÉ®½Ô{¾wZ*éáÒ—Ž, r} qq>×Õ®@£öï“Æpä4V4ø×SPøÛ^†ó%ÐŽþI7î‡]ï‘Æ€å§¾¬I÷=hP¦&yï6K9¼W¡±É4M;~è@ItÇPmœÉÜ{ªãÈ#@ô\8z]6·.´ýÐvDìʹ<­Jœ4UòzˆX'Îû£—¬”3Ƀ—,¼WÆ×—ÃàEpm"\j–gùs)2Á¬ÌV™äÌdæÿ1H‘eÌÂÜJKñÈÐâƒe*˜†¿ÀÁ2͆ªè`RO¹_ò•1y±0§ÁK J>ˆ½H,ÞÕeÑm諭z_—.$/†aÐÌôÃ:gFèØk¾EŽÉ°ÈÒÁØú]W– ñ= wmו=è¶Ù™Õù þŠ /°pôn˜©A”°ÏW==îZšôkzRˆÔšñÖð[”ûsÊ’6TÎ,_\ÊÀuEÞ » #˽0mÅe7CqsNò@*è­¯y´¨höD‹cm@§ð+•ÁŒ‹´U7²Þ6áÈ…ìrh°šÏ§Õ]W–$oSùw+ÈìVëH?µsrí}Û=á8NÔ4lWsMùÁOMî©>³ !1ÝowGK~“jÿ¿LVó¨°[ºdÚä÷žT1›ÛØüþ™·6pŒýb‡Ùs!aZÃÔ„‡wKGåL¥cê)ŽœIBÚlʺ[@1€Êâ´´!€/#²)m4Àš×âx†Hàé:+z7í@D€e±dIÐ t–PÔЄi‘ÐNå@ uÂÇXp‘œ_[ [tån¨xA8œk°ÅÊM€s` —ùXN¶ŽÆ‹DwM/ìì€7lRL‹7ç®ü%åꃃè0÷«ÃëôЗ¿]Êfç =ÆNž‚[T>»T!¹ìK©ÁáOÑš÷ÁHä# Š¥â±ÚáùÇP9öÇØa÷í˜1+¿5AFï• èïs¹è©ìûâv1±A±'¡^øÿ”£€ |”! lð5âéÜÁXpgú‘t­ëc­uøîãhÄxS±!Þ¸:PdIÑÝ^NR˜£ÐêÉ•€0xÜMûõ÷xÖøèÝÆ¯Gç¹€¸Q÷¥_Ú]pnaô£„ÎpÐpX,¸€ºQÜè2Ê$-õ蘀~Šª • –*L^UȱgõhþâX¹«ÐcFÃuSò7z*U%ÿ]ŒY™™æ?-âf0¥Ç+}õ Z$@S÷àOÛï+d¥¨ý3h|BIOŠÄ™ÐpIvh»ÝmFÒ ˲<‹í¢‡[ö\©}JÄÁ¢„€¾(!0Y›fda¸¨+G#¨ Þ¸W½!á þF•1uÜ´;`óRsÀ (ÀÇÌQ’fü%ÃdtI0ðbI "e©œå‹ `]ƒ‹i_÷ä¶€'æ‘R÷~ŽŠI ž²ÇÖ†“Â¥ò¾î:$àDBGÒ‘Ôøýz(!FÃÃg'Dë7Ä~tÓÿ`Ìk/R²lª~a¼+êzÉZÁ&ø¬Ï²í‹»rûtïÛk2qQrQP\Á`¬í3z¥ÈâÌ '}IÔrâ’±ÛDM– e°±|dÿŒ`Ø•œÏ¤.1áË/^ßˤ’ËÕ&7¡»c“Àº{@§Šf'ûF2Ú7vRTJˆi¾mxlYßcê顟µ÷~žúÁ¸)œíÑ–‹‰ð¿½¶BïÐ~r®ûgzs9K'ûŒìKIá ê³1Žˆ97¹ÈDZ43æ"‹ˆ^!«Í2•B¬ü„ë à5Ÿßç¬>ã~<ÏÞ/øINZH2úº—PÝçq ;´í±Ê¹&Wþ#3¼ÿ$õ"þBÌL,—Ÿ£ö¶2¾i£ ØŠCÕ([zž* \殇lzŒ¸Ú÷ pÎå5 $?p§8ˆ£ÝÛkÊ/QÞ ´ Ë úÁ^Àc¸>9;"õ5U0ó27Z@élüz³c$ŽÛ=ªé)Ù^W`ÔGõ ›Ö’¯\wŸ à•Ù—ï>¥P?_¡¬7Ä-è/˽ae66,xž, ™gb«‚É`U™’ïžHákŽýiyrj{¿”ŸcG g|ÄÅ‹!06´O )ãvÖx(’ê°%Ä3û;ðD)>Zʉ-â-Az´>öj¼Z‹I¼Z† ÆÇQí¾\áš¹±¶‡œk®´úDÂPÖó?š/÷!Z¥ñ':Œ .^=;•Î>kàÄ(ƒiÂ_* è>]n7;:ÙAªžÊÓpµLÍSaÀÜKùuçã1zŠïŽ=E-ãX!ÀtÌKã¸òÃõs‘âà¸Ð~¡púõ‘–º§RññÈaÀDŒr¿s¼“›NE!€±£è‘G !´˜Î/ô-žž«f©¤\¤ÔS)þ”ÿApÓYsm2àWæ)Æ™”bœ 1.‡‡¼˜èÂGÐ6€;b<1±‘¹|Ô`ÒÝZcç¢*Þ×%– ÔϾe•OàŸD¨Á=pìUK1)Ó,›j"”ŸK{±{f^{ÞOs®©h¤ó©kB9ò‘·‚°)üBuïíA0‹ƒsW…~$dzˆLÄ1D_÷þTRÇWN9˜Þ¼Ïºü_žiÖŽoÔ€ÿ0…# ‰¹m·ÝbøÌÌCŒÿì¹}î+$/µÙ”Ä'Ë@!çNÿø‹…:9 xÔŽ0˜ ‡K×øy’( œ§]N˜F½ž:šÀøë?DÒÃU+–`ÛìªFsæh·!Ã}‚$ß™†‘û9ë¡ÚxëäôžDCØyü5îÅâ£]ü†¸ÇÙ20X á;óÿ…~?Ù endstream endobj 497 0 obj << /Length 2667 /Filter /FlateDecode >> stream xÚ½ZK“Û6¾ûW¨rYÊea‰'ÉÍi×±]³;ÞÉ$98.G¢F,K¢LRžøßo7 AššGíxkñèÐ_?1|ßeñ,‘’e*­öÏbÛ[ß̨qùæwó0qÌü×Õ³¿¿ÖzÆc–ÅŸ]mBRWëÙ‡èå6?¶E=_H)#ñùB)½¯«›:ßïËà ܖí–ZoÞý† ]ùzWæ<*æ žêXD2›¼ú÷³WW݆´Ü9μg뜧,™T1.í¾ÝsëèXWûc‹m­ªÃ\¤Q›—‡†FWs‘DÛ¼ÎWpT××ns7¿Í?á|Gét¤ÞCå(oqðkS®ò4«º(4ÚóUAÝ·[ß¹.›ã.·Ëq±Ækc.¸d\Óίix¡t]ÃÆð“¶ÑÚ[Çþ¥‘E ^pôùä®:Â;_a£ ñjCÓ›“¥²¥/j÷gÆ>#®±gÁq‘ëªÄãáÐ>¯?ÙmÃ*Ø7HÁ„RJ³L¤p{ŽËŸ—ï/yûþji¹ðÃtVN“~½úçåÕòâÍ»_._9šÉ&‚é4ó$óÃzбàLÉ ¾¯ÞýtiŠ¿ìÏXÇëbµËkÊBj„'˜™˜©TúU5a½`Û):a"Îæ 'ÑÕ¶lˆÉÞ¡Á~\Ó»û’1ãpöÁ}»;P·¶"m+öHÀ­ôcE šï½ ÿŒ¹ZÑhѬr×OMñùTVB u•ú%íi˜Ý’Ôšñd¶’éÄY‰¯ç©ŒN‡U[V¿ýq–i-ð2õí®º<€~i¡£z·lŠvéTÔ.4ñPFÎ.C9úYH_1¡ºI äMK»÷ÚM_Ïïà §*”Ô”<ÁšeÌŒ ü¶3"ÓÞøÙ/ƒâê÷˜ZØzf<·p[C~2eFq?oSÕÄ£9]“Ȭ1#N€ÚÀ¶¤*¤))ÒpX©Ý¤Þr“1•ôÞ-‹¿Ž jN.xég/DÆR>°_L€™%B ã mª7È0ÇM@¶Ó{•‘&ÜÛùÛBt¦¶ùm#¾uÑœv-£• p‘,†¥öBjö ÊÞ¸¥ ˜b Õˆè-ªä`Â7_Éû%:ºšg žÅ<’”J<¶€ß*êvÙv,Çê&íAÚ"î×–sLÀËÂMÝ«)IÊ$zîPU.ìö§4B‚ W oÏ\)Îû{±ðG©¨Ä‰Y™ˆ”»¬‡V§ºF¥I¢¶ëhP©pYĪ)Q4¨<)F2í©¶¡BHÆò=푚]ô‡4Ý-þz» C®Ózd4ºxÃÚZ¼•býýŒìºØmñ”°)½íAÍjڤʣôŒð.{¢„ñï=goá#ùÀŸìi@B\¹hx6Ûr®°ÅMÜZË\¦ Ç´UgóéS 'n&B1þ#ën§;ôˆ\&×Áàáiï;l`1_˜ÔôH¬°XÆè/#šªÇ%Ò"g‚uºèô~¢à&OŒÃ•µ(ÄçWÕñëy4‚ÁLbó(Ÿ?€œ•ä÷À"Ž:À"ÉÅ93b ‡ó!”dB7D@Å®Õ$,ÑÉý@5L¦÷•3ÁÔXš¨ƒ# €Š#TD š’œë“š¯Oånw.±fi’üŸáb£*FpyÙc#ÑîB±A˜€–ÓáõùNLÕL>i@ž‡„1ú~H¨4@"<@[»,ÔÝa¢¼7Æ©Õh J•&ÕO¡ÀÎAbÂ+†`œE ±!äð2­çN0G)Žtm´Âv;Zhìrç$¢c žwsvÒªÚïñ09vM£V yC9ýôÄpÜ0fxFBÜí"^$ïÄ ›‰„¿3»)dÑÅfJFC-"ï^lŠiÒhW4¶…¹}>‰&ÈS{wܰ¬Ÿ„âJ|L<܇çš;1k7½òy@å¶lÜZ'?7µ¿"¼ué0dR>„€“—ìnŸÔ¸Œ*¦äô{Xl˜QÜÒ 'L誻W³óëKGsðï«OÍv¹ÏWuÑþñ4móTÆR.è;‡Ogyn9LÑ6Šqó D"‘uËÏä»Ýg¢³0ëQÆ™äo<îj"jf]¨LCA_„Eh ÍAsMÀu·¢¥ßm¾P§ú\f)&Ñ$[QVßÍsf›ÛâþÐø×NuòÖ÷SpáB³DÂB’½ F•Õw•w;aám÷µÃÜæ´û‘„‡_Ce¾3é<æµ}Êdw%ó™«U°¨-òõ™|9ø¢2Žó唬ßËmŽîÀ—dí/z,ÿ4«rËO › |g31”êÊÉhÀÆôé½ú’¡õÖIºÐQx$ÐY;*Ô0@§A[Üù2×€ër—_ïÜšM]í©å‹OkA &0ÕD)ØfÓÂ-í-ø¸¯GÂ’­ux‹›rò]ƒ#ÁRRìɈŒI^#qÌžj4ŸØR÷—2ŸŽG [1¢°;øÜ= H™1.Ò™Ëb>|Œgk‚M3•Ìní¼ýL¢1JÚÍ~}ö÷r0´L ÁÒÆIfŒx§Àò…ÿw ‘+$ Þå9=)KÍ·MQŒ_U”4Œƒùö$ï~Yñ³Áô‰×•1Q*ܤœV‚I’îD +{Hž0ÉG0ŃJòèwTñ¼.ÇÍÇøæ £c~ã†E2>›âTðH­ë¹ûl~ö"˜>q¶1Ñ^‹í.Î<8ÀEa Û´§Íf‰©î]äÅiB)mÈ4îü6‚AÆãw)ìC«F-«ñö’…Œm)yP€¥hVyå|S^Slª£?¶åÎM¡H©l]ܬ¨ÈŒ D•cÁ¡tQïÆeZÝ…ðX\¦V~è2 †®*\‘7Mys½{ño+¶S—.@åyX¥þRÚå¶O=õr”²Þ ‚Ñ4lº nôñIc·›¢]M9‰D1•éGùœ×?¿r…Xg2§è þ^-Ì“|ºr!|fªàÜ bpè~„œt?ؽAO_í'³Ô d–è>mé2 DX•Ô éÖ¶ôÏ–ÈǾcà6šæ´·6l]M_KG† 8°E Pš$•OüÕ™€§zÈ#&qåö¯üOÔ#jñ:¨ßM†ŠL©©B¼ña¸áÁKvûÈš]ä¡…‰.\§3%&A¿yè5“½Vÿ0ù Ä‘„ϳӄ˜é \?LÑèîjÝžÀ8ºã —·mϤÎ&§àǯ„IgÄE¦¾©Àb…r8ÏÅNª{Ë¥nûN?ôCX-ˆïrHh—tg?9—ßŽŽ±Û±æâü†ýó5è§Ñ3tÍàÞ!·¥7j]çÖÇ}bSÇˤ餃=cëyo>êîÕØpü1”J_}’£ü ® j`ð_&VEÓ@ÒE)˜î"Ý}=rð¡ŒcWò&¶¼Á|ó_‰å´ endstream endobj 502 0 obj << /Length 3030 /Filter /FlateDecode >> stream xÚ­ZKsÜÆ¾ëWì-Ø”w2ï$·¤lWËåHTå «XÐ.ÈEiXXÊô¯O÷ôàIð%²xXÌ{¦§ûë¯{(VþÄ*å+§Kµ_mox¨­¯WôñîÇ7"öÛ@Çͨç?/ÞüícV‚³”§buq5žêb·ú˜ükŸÚ¼^o”R‰üûz£µI~­«ë:;‹òš¾íž¾~üå~èä]žíE¹I¾Þo¸L4_ºøéÍ÷ý†Œ”OÜ9ö|dëÚA«[Y¯™Pš¶ÿñ‡µWɹܶE…{ù„;€v%K‘8p£|ÉiLQ¶kXÏ$õá2ÿ#ßžÛü²Ìÿhi¨åã5…ÔÌqÛ ýWHÇ+h&µæ_KŸ´$¯íÒ¬R1ãühR'œw# Ÿ“>†:¿Í¾àìù°‹a€âŒKÓM»]š3eÎ¥]ÏëM˜j£R‘´ûøD_2ÙVÇcVîb{E¿“AQ|±Ë×}^òW€APqY{ Êsù%¿EyÞw|çáðý ¢¡5¶ÙáïØzcEš\ìáÊ¡F¯PÚL‚TIZ‚†5yÛ,‰J ý‡uŠû{¯‘B{&WÖxÆmÐÈŸøjM?­8Ónõ5ô;®pQœè°zÿæ¿Qm'K #™T¦rÌÚaÅI±Ü¡‰Ý];åÌÃ=½Æê©f)(Ïdõ¢<Û%™Kôé5ˆÁJ£˜©¦L¥öu¬n{ȳúòDÇ¿íff|Ö3«Å³Œï­£*v‹fc„{Üì¬eœ‹©"}(A•N2«ÌƒšdRf`> Ò5R¼è6- ‡òa*éíStIrÉ„Å%·L‚ü&‹?Q•¾ÇâÓ$ÿ …þ"Õ W•n¡Éx€ë¬ KðƒFl[,¥IuEµY€Ø8òTç7Eun¨„A±–À¼ˆÐvF><ܺð°{‡‡ Êsqo5 Öq±GÈÒœgPÉúK,Ve82|x!ãa¡br“Ô¥<}[*í³8GYÅšì€PçChvI ŠØBg£ýMô9xô%ñhæµ.Tk¸k=‡ üõ¯ `ƒ¸—ÏUVï7.Ûâ˜WËø!…?û$ç-œ·N΋³ òÇQOÁO¤þ¿}qÀ»Öœ´"+¢ÊCÅUUÓ9ø[r´xRª&K‹ŸKW'@l‚ÛÝÚ©u¹ë¶Z“mzØñ" ¸q.{Ø>/­ ŸÞö]ŽÅ¦3BÇ4\ÆDhÛºjòmU…(P¢–J‘˜@kNˆ‘Á¦b„Ц¢RkÓ×eà1ê^à€½!öâÍoò²½ÜWÕ—{«&F1—xwã”ð5ÓëÚpnÚ(+—2Ïí°r¦Ó䮟¨½á€1YIÕAzð›ÿ~α±¢ª?óº¢Ô˜l¨Üòò:„Ø;Z\h ¼ *a6tc‘òÞ„FSÇÉáªÃÕR§ˆ”ÍÂ)'׾˯²ó!Ò艵 ižëê¢ 3î¨[Ø ´Ve¾iã>bà‚®›2*’Fá4Æ2í¹.ãX"Â8âg Íñç<Þ(à ìšÃ…‘Ù{˜'%Ô8:‡d€`V&k8n^C\$ï Ðù2»Î°U~`I"ž0×Mù-0zƒ¤¨ÃQp™§Ë¶ÛÉõRŽI“~;tó6[ #β+ [u˜³z<ÐãÝ]:2¬-Á«¥*LÅSÙíS˜ìzñ@ž™ô Ü&B®¨‰o£ŽWèh­?úËÄx'TІJ„çðÑé_bùÉf çI³ 4Æ2=Âñ8ü!·’©'¶hê¸R`á+‹;„íòˆ gÕ kñ ÷YmcR,7âkÁŒ!¢h]cÝ>VÝq]h`Vt&~7 Ó!¾éðmQgà`LB' ¿Þ¾€Á* a70•cº«23+˜å½vgõõù8@¶ÙWçÃnâ|¨PVå&@i³´Üò4Š/®Y?‹6ƒ‚5Óœ:ÞvË‹ë}Xxó¹ˆö2/@ˆl) [½œkM@b—?|Ï‚‰G#´'$F´ƒãÊy„¶ ¾ÆÁýˆ$h$|wñCCEð 1²tnäÙ'ÈðGô±'ôyÝâoÈYá†h7c¼ÀꢌµÝf›ö´íë¾›tÉž”I¤Ž);çbp’.É*ÌèüÚ±jÚNöù$Yb§à‘I8›¾\P¤µà „¯¬µm{„H.?!œjÕ "Zõ,åýO~{ÌN$­/øµ0+K=®ÃÒx&äL‡ß`s] |T1(¬»èêšÛ¦ÍÁŸð‰‚¶|W 'pÞP] vq(…¦Ű©G1,ìŠætȈ5cmß”ìvI;øâ¸ˆET…°ˆOÅCêYõô«¨ï¢£ê¦féÛÅ>h¸kPšàƒÙ딿"˜Ã1ïÈb¹œDE êö7ÜñìpÇvJîÁý¤>Úì^Q›Ïå“õ\º7òY ³WÔhÇ™uf¢ïrL›êQ.Mú„Ò1+‹ÓùQ›IåáG0-ÇØÃÆ>C 08=XrSuÛÊæ[éâQ þm†¶­©±­®Ll­Ó?ìѳéú~|MÏÈq_ÀÝ׋q„OFRµ§S²ÝYQQX½ßFŒš0Wƒ:vÖ€MËÖ°‘ôÆÍ’¡Ï² Œˆ¸{Ý­¬ceMÝBò+Šî7ާÄj€ü •P kÈaGÄXØÄ)Cþ¤ooZàœÇI0¾$½‘ÆÒ[Ì}+ä7]I`l©Ò/Ê}+9h²iÈVb4Oþ}µŒh°==°Ôæ/êynuü4eM‘þ¹ø2ŠSÁsAÔ…¼´3»Ø7Ü!~Œ½l¨èî ö(1Ëà ƽ{HìôÓ+ób×Hñ¾Qìÿ€“xѧßúÌ×3L©Hѵã#Ë Å¼Ì>r„2ש3\¤‡û!¸s‚¢!ÀâÌPnšš©Á@ëÃBx­ Í£l§Ãäj˜¨ø³[²]ÎO¸|È'QìÏè²ÿØp5J4bN¾Ï4õŒ\^0"ðŒ2L¯Ûñ³F·üê  mU6ý³79C*ýu¼Ò,ºW)sÓøL…ë½$#¤4 -Tá\ø€6UfÇE—ŽùÔ>¦ƒ…3§éƒ’€i[1r,”ãB9þ†Ë½ÞH+G9#l;7½7›Ù¼1 Ôç~yjÀ&a…ð`cþEÙ­SÆÃTÈ*çÒœ!¢Ò܃gÖ,¹ãTà˜u¼wÓ"õ 0qÒØ>¨^ήÙwKŒ (§ónZÁù=Û³.@¹gqŸ+PÌqý¸°¥—Lû¿HÖÒ[Ðu¦rˆšðxp>KD¼îÀØùðóχb!yÑÈ}„ÂáÙàŠªÛ>•7YÑþUß¿{{AtƒšPwSÔUÙgÖ¢ŠhÆ]:5:‚ź@gs`0Ï þGÈ#Ùx;dã§tü‡¶8‡R"ø^g’Ö©îPµy4ï_éM3»É/)ó³„ÃB‚Ô³B:pÍçmÛ9œèÛ”å)Ú®|a.Þ1ÃM˜Ëš>@Ù,tÍb\©-³ò , SjÆÞSŽmßÂñµÌNÍ>ð+ALÇåHõóš ÇÅí uïXÃ$5§{6•=…Clåb‚&IËÆÆtír–Sgöî{ÀöcÓéæhŒé‹°?õL‚†ãT†ëñ….Ý2:2K¡žCFò˜Š€$²á-eÓ]B¿¼÷U[y¦œœŸžíƒb -C_FÏÔ$}X üïXM»ØuÀ„â›dÙ„,2¾Å‡]ôø³é7¬ì!P2ìֳ9ëÎͺú?uT[Ë endstream endobj 506 0 obj << /Length 2733 /Filter /FlateDecode >> stream xÚíZK“Û¸¾ûWèÊe2Ä“drÚlÖ[ÞÚl²ölíÁqMq$hÄ E*$5ãñ¯O7 H æåU6—Ô €~}ý50l‘Â[é"")d¾Xí^¥ömw½ Æûï_17.†ñdä_.^ýñ­R –&EZ°ÅÅf:ÕÅzñ1úv[îÓ-c!DÄÿ´Œ¥TÑ?ºöº+w»ª¹¦ŽÛjØRëûŸ~Á†ŒÞ›r]WÍ’Ef³\¥<’lùéâ‡Wß]ŒRœ?sç8ò‰­Ë z³…Îe„¤í|»ÌEthVCÕâ^>áàC½`,)”âøa,rûeJßTͰ„õTÔ՗釶3—ýP†¾ÕétQ&  ÿí?S•º%Šé2á’ûAýÐVé«#5¯™"‹>gÌÊ# ŽBü”.ÖÐùÃ"MS‹[;t·‰ÊqûõâëŸjfË‹T'B¨¹nH&»‹×ý>$œÔ‰æj"s²Íôs³êEÌD›²cߓޖ1—»‚ùCOÏà<À«š²¦7n+ØZ÷»-ß 3­ÇOGíwÀÁ/´Õ»íšBK?æ L§Yt»­V¸—-;Ãö¡wënË%Ï¢|çöv?ð`·±ûhÀÚ€‡;j—¸ ÐŽ”IÊ¥S£õWe ¢ –£¼£Kw ¥iáw ŽØ—73/œ —ÉDªÑ ŒÒ4ºØRð VD«Öéœ~zzÛnܶ&¤V–BX¤£ÎqU'Jè…Vy’êüÔUe6ñTž‰ûž:<ã‰Ê8L•%¹SO Èͳ„ezW‡ÎTeç„_·Ön«ÃΉÖ"Óä©Å“™iF›„ñ$ãÙ©*’mhW°užñ™5$XÃ0¢é= V½Gh°hûÌ¢¶é««ÚÞ´nè¦3fÄÛaëw9±ñ\B.9bGöõxÓVëqé<€ö²Œ=úF×´Ábç¶°³ÃÜa˜”ÈXñ$ö00L57á_ èØ€ÅëŒ íÌWÅ2ªÐ··cÛjtú¢¥_ԡɸÅhjœ9ä¥Ì“à Ì“œË§fQã˜#R BªüˆTbŽTð8SÇšÔp…èvôu1u…~¼ í`©ä±TÎûò3y_göu¹2—zΑ{—€W¨†mé¢ìõ`>o\p’7¸¨­ Œ _šhØä_XIþ¶$­!xÁ p.]hÚé¡Y·!©ÁŠT<šN9Á,<Þ“F—ÐÉÁ&[×¾Ÿ%ð-d‰“°"¹ž¤(4ÐåÕa³1]h/@=òb hËC©äÅBcsy‘`ë°™ä°{Ì$CÙ¬©sWvÿ¢–MØ·ïLìS5ȔΙLo:—á‘3,ª6ˆÒ…_¦·` ~ônΣi’§£w?àJàžIlKi–hñ[r(Þ–kng…:u¤{)”‹#÷EŠ–§QÓ6ñÓµVæÔa'¼·³ØV]YôVÙ÷­M\+„ÕÊ! hˆª2~¿:tó.R9S*áà3µ¡>I.üÌš0F(Ìrg†p5Ó¬ï;ñ ØÓÑòe9o‚#"ªMšWɧ“]È0RIü]Óã)qæ@¬H±,A¨Š$;†ö¶ìizÓ´‡k[ç1 ÙAìª-½Ú¶õ:èþÿT1.?jà$¦!ÊQÄÊË®\A™Ð¿¡¦wGk«}ð"÷ƒ×{Ò˜öFîT9K`£k5feú¾ìî–¹ŒÎë`ÓJ²jª¡*ëêK8‰¿dJ|— ¥Úù“•–yÌtöî¸ÓX¦ ‰üJÐu\tM+;â Ò+[àá@Ëà$¡BˆÞ 4\Ê ¾»«Vg9ZÄv¢ᯭ™Ð<é,†mÕÿ9äõèÉ1EzÊŽª}H›£Öp½~ê3ÒÒª,2›¶sôg=«l\õ‡=Š¿? Ž˜ëŒXœ×¥ìÊãc5X¨¢3øRÆ’^Í™ÆiÅ"±ìßUÖ/Ä‘§Öµã\­{q(uÌàƒX>ÀI8O§B]Á¼q?ÜÕæ9Uš ñ¦<«•Êz¿-¯ÌP­Îø³„œ7{FøÃ ,“''7PN647s®d5JÏuh"arF-\”ØYQ/ ÎÒYõC©~ ý¾¬- !±3güuÕ¾»Ü•Ãj{iùÌ™2¾ÁÕ¯m½ «Ø×¦Õï¿@W?‡7ªüI 0,g'9ñ˜:Ë=Ù'rÛT¦±ù:6^§ôd  Aê²GaïJú!.ˆ-{¢”e‘=ÎÀÒ¢ƒ±=õU_¸>ìš²çß•þk7ÓJ€zŸj„†±‡ЕÚ>L¹K‚eJª}<"²¶6}HYR}P3oÕ¹ƒ=ʨŒ´* ‡fË4I§ñÔéú†Z$Ù§ƒ?h´ƒÜìe`n¢ÅÒyüìаÝíkC¦áZ[aœK= ;Kø´ 3ÍùŒþÃÌÄסa]ä`O\œvÔJàZ9Cc®'CcßC'h*Q“³’G,{*¦'µPK`B|¨#q£åE2‚f®m¡âxý $ä'§J®ˆÉ€T6׆ªŸÌyµÃ‚Àl¹|©Ü¶¢, ª¥’,›„%>zãÞÛ$>.¦O†Ä> stream xÚµYmsܶþî_¡o¦2>”x#Àö[2ušvÒÉØÊôƒãQ!NÇñy%yRÔ_ŸÉORmu4£ñºX<»û`A/rø£e~¡8'¥ÐÕþMîk»Û ,|øñ ýVÐq5éùýÕ›?½—ò‚æ¤ÌKzqµ™Nuµ¾ø”ý°5‡Áv—+ÎyÆþ|¹Bf¿tímgöûº¹Å†ûzØbéÇþê "û`ÍzW7—4³—+ªeÎ2Á.?_ýýÍ_¯’@’±Jîz>#ºPЪ. -åÅÿôþRóìØTCÝ:Y>; ``qA))¥dnàŠk?2Ç1u3\Âz2»îv×C{½kïA~\‘O¤¹$Z¥q¿å2Ó—Óéa‚“_2 ¨£jiVƉTådR&mvEsAt©¡À •Øù§Í¸þTL¢8VK³iRiɺé¨ÊLƒ¿ÇÃárBÛ®2½ m»ÃÖÜ`õPWXY¹­mMg*@Ì;¨cyÖÙáØ…‰†m]µ]g{œµmÖ#¨ßµn†{÷Ï&ëàÄ*WHëŽK¬Ü>`÷%QAҵ‰oãR  P&ø+áa]ßÖÃõÙí"$˜ */^ ¾ þ$ôó€~Ѝã,& ø$&JBE1Èg¸^âãÞý ðç ÒyCϺß]Ê"ó*óõu€g‹Ûï ¡à(8ÉtnOB r­@¯`ß( #`áΤ`ÙÏ Åîv¦±íщªdöþ²L'Ý/m0œ²›šª×𽩺öú¦nÖ‹è  †ÿOè¨@ú„ ¦øñë»/ÞNzûŸw±táÅî]i¥'£¼„ïÐxŠ‚HÍçxù‡}Ø›vv……m¨œäŠ> Ç’’\‹ùìß;ͬ˜” ®v‚°Ÿ£m*» Û‚¨ÑF ,ž¯ˆý†§FK»sÿÚ/ÁË ,¡à•³´p)a/iËÓn³% K¾ž@´¤:»Š³;Xx_Ǥðå*£oÝ´ÝÞ®C[³$Ê‚” ÅÔå§#:$'Å膜 `oÿÚÚʼny €{©N‰¤jæ °ŸèUeví ™k¯Ù…%’Ϫ“3ˆKÉîëÝ× >'.ÞÛnpªEqî¾ÐA˜ˆ Z¸ÚF±7G€`0õLœ·asÈF×·vÞª2°Ò_Ð}{;z‡I,Õ$O2ƒK¸µíêÊ;gñçì…æP.Ç( f CK¥‚~{,»këõ‰³Z÷‡3ü†CYó¯å7.˜µ¹Ù-FÊ‚y–ölL+4‘°ÞìH~éÒ2¬ÔÁ|K•!öð#ú‘;!fÚ£÷?Ðì}Ô{%„>&5nmÝa]Š]½‡´„cGž.\ÐLE VÖ‰®6ŸíÐ.:Î&ÈiC?€÷Kš½¸X?±pÅÎ{ðJ:©z~('Z®ææ-XÖ´Í꿉µN"8M.8Ø–PÐ1p¾Ì h“Сn°º?b,ÂZƒ•žíwpX1lMœnf)$ìuÊ’1ú°ÖrL@Ønui•N$Žž½nÇ¡[äC‚Oþ[NÅÎÆ™×‘ЬºÑfË‚°‚½"ÿHÜ™®v‡wžb|…Íž§~\ò]¸³Ì:ëyg™#Æ,{—Ü,Å¥>á V•ý{É@G|¼|övgÉNÈ…¦‰„EH" îÎm[AXL¿u'€«ÝËaß¶Aéìï¶:¢Æ:Ôž±aVr‚ž´aÅÛ°ò†âY³µ§I Q„¾¹ûy&O;¯ÆÞK©Šù”^š‚ß0% 85Aö–¸Ðþ²?å9%…d/õ§\>òbçöDžùcn;\304ø¯²vgM å`îf^lºXÓ°L=iÅåzlµ5ì4Ó¢çs$Chl›EŽN‰bæÅ‚ü°Äâ´€ê¼Hô¢Ýl§USò6†ß ËWæüÉ"ž ý¢ÿξ>­Ù…¤¯óíðï/€£õÙ §"FB1‹„bâ]¨iÌ£©¤ ;®ïŠ3?ÎàÈè»HÜY –P~s‡†¹Ý…Û]íÂi™R}Ø|Îò€Œsx{P"púΓySuPȼâ©ç”ÌÃgíîÌXœðyø28ìÞyDO^°"ðy74ü"wWSî®wW‰»CÉ{)uŽ»¯pgóÛú3¾x9çÎÚ…x]”êög›ëê—ë¡Þ[@Ë¢– °P_ý>.q`ª¹zÞì Zçe1WîGë®·ª“w® ;ÀRXÜv!Ö`­“Ûñ7¦d¶÷ÙZwá¶D×½_Þ· J\ÿ1¹z„S=ôáÓ¥°|·~‹x‡ ƒ=nÌÎ4•«}|ïž=Pà‰ß9±¶TA(K.ÙŸÕ Ì ÚÂÌ+€ËñA“‘oM?»£Úpeõ¾± ®1ex€Tåÿ‡Ýè`Çûj9ŸK!63Y¾ÒñÌ"Œ©`/Â-ø#æÓÕö.flË"f^Šë]9zë€M¨qþcÖ=jÁ@ÁÜÔ;pK>û°x­£D—ãÛÙr²•„bæÐÙÆ°ÔÆ>LG-H„76©á$ä|÷!"uΟÚùc, Ï†Â7]»_N}ÏÎr’L*‰L2‡èZo“n™˜8æHŒ:y‚Ü€_ qùÐÕ3†üµ –¦L÷$ÇGÌãõ%`¸ 3,ôå endstream endobj 516 0 obj << /Length 2987 /Filter /FlateDecode >> stream xÚ½ZmsÔFþίØoÈ”-4š‘Fº|"Éq•À˜ºº"”#kÇ^Zi#imüï¯{ºgôba|¹$EÁŽæµ§_ŸîAl"ø#6y´ÑR†¹Ê6åþId{»ë 5ÞýøDð¼3˜x6™ùýù“ç?$ÉFDaåbs~5Ýê|»ù¼Ü‡Át'gRÊ þÛÉ™RIðÏ®½îŠý¾j®ià¶vÔúñÍl¨à)¶uÕœˆÀœœ‰,‰â@É“OçÿxòêÜ”Äñ#)Ç™÷H×éFÈ0Ú™ô4S¡ŠHCøˆOÎ’4^ A iŠè‘Z¯›)èº*Jƒ„-Y¼:L¥¤í^4'g±ÔA1nË,€+ƙ߆ºzž‰#7'IU]\Ö†º‡–¦êÓÁéô`‘ëPª°wÄIóK”DðW¬Ñšè0Ö±[‚˜D¼o÷LQq8ÔUY UÛ0m1[#r´½ˆÆ‹Ô† ‡,c6gq¢Â41»E"è”ÏvÂÝ%,Ï‚¶è`?™GÁëço©ÁJ‘‹à—H¨ÚœU‘ ¶æ¦*é# ÚÎÍm¶-îwK+ú»~0{¿á)µ¤ðî7©ë;êºÄEÜ>ö¤°¾ ž=rضê–È<ðNíã£ù{S›rxíª³½…³T¦Yä]Õ{ê ûS{kú²«CÛõ ¦<ÒÁùI¦‚GAPeÙî÷DëÖê®vï„bf$qêÕ‚Ê¢áê¾¥. K)¥û¹¤¹VÌígä,j„TÀ¼cËDøùÙ}Y”8ñóSê»:6%juíž—4´…¹±’mЕ€  vê(8ß™Îð*×pÛzÈ€ÒÑ€°5÷ÅçQG²#–¡G2Ew’I0 œ&3p!4Z†IÓÜ?฻‘>º!ÂÜN»ÚœñJ–õM[mQIÐÕÌ Ï»¢ÙÖ¦»¨š~€>Ú'¦*Gi(Ý.¨[|X>=L…±òÖ\?ºK‰\Ý쎟€ï‡á”$,Ò(Ôq>qW;û›w¥BeašHp:Tð Îôã§h³…Aàb˜ÀÚ[;u¿exãzóþÉ¿8ZÌè ¸_­í^"O™5(”ò€²\9=Wà°õszž…КÎŒzV³(ÖDΟÈ`Õ¶i˜i9׫÷f@5Žƒã!€ì u€ç„€XÔôu…ž ÇG3Ånë±ÔQc Wõ ¬o[ìY5ÕP¹-Í—¬²næ“©<³½õh¼ƒLU˜g™»*éËÚeeŠl?¬F©( …^ÜÎd±Ø˜P„ŸëeI¨…;g.¤9E ÄûhM>EÏ»[…¿ôã6²ç”F~))µnw¦™­Ÿ{¨ÍÀ[[i‘IÅyË|θ„ ®9úÚY‚ qi½œ±'À§qðÀlÁï¥"G¿ç–8š!`Mh†¡Î”¦"&ó¶Äå B™/}9bü0©vA]òÔ?Ò%Šîú¸gÚÐCüó5ذ½sª4ûý c¸H™R!&׳ëÃW¿kõv)F‰§âª3«Ð-ù¸ìdæ@뙸cpð±Õà­ø¥ÈBÅsñc,oª~gƒå úV‡˜$±fóç„düE‰1`ų‰|» /Þÿ¨¶«Á ÖýmO™¦a‰™†ýŒÌ £Œ!à[læS0J[C¾Óê:LvÅ@#k&TlwØìyóÖv¢E­Ó‰¦±fÙ¥¥Ð¢ÀUæ?¤öB ÄÉDïãDƒÓ©,‚Úê¾­Ð!îÆ=‰ï®7í]À/J›„a­ÙüòØukQR‚ "ÆÔÌ‘m{ìJc ? ^£‰RÇvh¡þTÛÅ.²ws 5ФN׸C[磿øº /¸f“F~ñ OZÀUŠ?LÊJ Á$4TQ:SÊLϼUŒI)Ì,žC›W*sIÇšŠ’œèÚ­W±áâîIHOƒžaÛ@iúž°ìÇ!d?Gkåöè™ ¿7Dp.$¼H‰M”N¾Æµ<£ÑɃ]òï»07‰r¦ñ )èÍ0=}OêL¨ ûì•ñ×m@è@EïÔ@™RK°oîpz J‹"ÒÚ…aw{ío¿&4œ‹ÄïäÆcF Ñû>+P­Ëç1&xµ$‘¼Ñò›áØ5ý)s 3'«] Œô$G˜Mb®ÜÓˆWwÞÅ[û(Nœ6Š¿(‰ƒI.}­0TÚ0 £ˆ‡WÒ4®™§œ¬¾“ ×@N¸nbʦ Ì‘WoXEQ˜ ¯È.¬š-FŠÝj,`j5Ó|~¢s™?µ‚ÿ—ÃÅÚM°š5nûæÃO?}Ë$Ê_w4x'`€Ìè«ë²6EiÎÎÐWŒì}TûMœ‘}gèe6Ó÷—H%{áÆj ‹?|‰Ž³³,õ¶õ;»\ ¼+´qØb‡ôa–><©Ç@h—·4ÉVšpš­8áˆ?#s•˜ \.=°‡Âýjý¢¥*åzÊKA ûNõ2‡Vz’BÇZ.Rè¹ó÷’BÔ“23ÉZ4­÷¬œÚ“BföGœžé0M“ùéÝ;5†èÙ©ÿ÷©1ò`ýüÎ yˆë¨Ð&¼Ñÿe û? `—ʼ0Š9M³`xTù¢ïª)Á±24³nÓFÁ¢#\gzTõKÔòB² ½•u﹂°´èN© Aš’ľÜg;AAyø’ë Øž—íbÂ| ¦}ýnº!™¢wpÝ{š|¨:¤bmCýà,(($œÖ#ýn%ë\zû¹a¢Gö;ÁèŸØ=÷4g,íq"þõ éÐU ž¿" s°„ÛÞ˜õ2_F±üË31|:Èä2ÈöƒÅA2—À=Jl{ ç9—UsÌc¹æà«OØëT?w úðú³rÝŸg•æÖ?â8ø ¡=Òоðõ{é²õZ.úÔ•Û/Ê„ …ÖúÝÌÖt°kæÄ(&ð&ämú5éh`Xã¡EŠYsáøLÅ©Et.`¬•Úq¨<~HˆÁ}{Y޹c:¸¹œcºò ÀBãVÿ3rE÷ëWo ·Qdƒ$´¨a¾TÜò±ò@€˜Úfy`€û6;µSl=“>¦âÊF€ÅÅ}E}5{Y£syü•k`OG/ ¿L€œJÆ|ê@ý¾¹xkƒ45™0´ 3‡ 4‹)Ú¾Ÿå'/zyû‚¥ÆybEY——-`¹X.<:ϦL}]Ìeòz(v{öÖRº¼‰|¢[<š4|9„Î@zþ^ dž€¥b|ÚÓ“'S‰ñHâ“)£wÈtS×¹ŒÁïÕ –°$ðÐË)?Äþz´àj ½,éYÕ:'äˆÜ\^Tó¡ Jea3èž+x*¡'á4ÏÆ¥æ·cÅZÂoó¦LX·â‰îm’-J4=õÙó³ì>É裌J.þagNXýÖE¼W¿ŽÖëfXãÁðk›¿®¦+ÄhÖ?Ÿ•«ú«C‘ùœ÷©}µ kÜ)hRzQ*VÒ2Tê1y;yÊO  {¹ž99Ë%gDéDüôÍf ÄyhY6ZÔ­  ¸æš$º¶«ÞYœO¯ “V¯Kâl¼¨ óŠÈø¾rq¡8•ãÅíþ¸%¹ %Â,_¼¸óÕád{õ©Ý_µ5+ÿ§ ˆÈ?N ä”:í#¿nüáð;•Ç®·Ïò°EÛ,ë¢g³äõx\f»š¹“¿i˜%ìož?#lõº¹1Ý@m{6è¶ØÂÛΆ^¾ýðæœšöâti»È_4¤ŽgÏ× ¹j†|ZY2.ðà rv¸b·Ìo8¥ïÏæÎá/¼R*Óû{-óEß¹¬æ¿Àí+³ endstream endobj 519 0 obj << /Length 699 /Filter /FlateDecode >> stream xÚ½V[oÛ ~ϯðÞœ¶vÁ—6Y×>lZ+MÚ4UÙSWEÔÆ ’c,BMSÿûŒq !^¶‡ÉÃá|ß¹ØC͇½)ò®ã8œ&/[P;+#Üéb`h¾Ÿ.ïÓÔÃ(œ¢)öf…ij–{Oþ‡%©%ã Žc?z;’$õ¿ ¾dµbÕ¶L.AzøòM ‰ÿHI^²jŒ}:ð$E‘Ÿ$ãçÙ§ÑÇYO(¢™+ÍCêW&uŒ'áÄ»š$!Ž`ÿK6 a’&^€ã§° è‚­[¿Ò(õY%AXK"äÈ´Ê;‰Ý´fšØEWaŒ"0Ñê‚Â- ¢œ×¼±e«cPg(}G)ÒŠ0s·ÛÞ`6ëø5Ö´åFT;CHi\ õf|£ßÁ€±ŒØ¥Vìr&h&¯,çÜ»mZ1Pµb;e’Ní-¯¶?2-×ô(_7­¡è\žÎ=«rä’öÉ{+‚T‹N”ÆÏYñ3„Ÿ³KWz{·F¡xîLQG­wj—htÄ .²Ž“6¿—n^u)« 7)›µÓÓ¿;¹T÷=†-7ŽÜb#¹Àß…<\³nLäJ~tèžÙÊ·} !܈Ãhw'9:QçH—‹¤«ú°ÀœyxnõyAƒÑT§·­«Fg´,»j€ÛA7Ò’tŒ¶Ý Ôì­ö¢±ÚPm¾€¸\‡xíùÈíNØ2 ¼&?èž©M•kõªàbET¿Ù­¸@šŠÞc×g÷ÂÊ«³o¤Ý&æÊP‚á™*X8?ÿ·ãÛ,Åyãæ®©ÈÈšÎkë†Rž¿lŠ‚Š'ö¬°†¯¦ý–K HòyÉ·Tüå¯e»5üŸœhvšQ¤^'Vø_»§Ûä3×5j¼ôa®ï7Éë#7TIÖÝžlIÉúgNóÛú¹UÚê5ö¥4–þ endstream endobj 523 0 obj << /Length 1120 /Filter /FlateDecode >> stream xÚ­VÛŽÛ6}÷WiJAD‹¤dÉÙ^,öÖ‡$Mô¡-\‰¶„Ê”CQ»ëý÷Eʲl9ñCaÀ$Åáá\ÎÌ;ü°3œ˜R4']O‚ö«\9fòñf‚­œ‚þžäÛÅdzEÐ<˜cg±Ü‡ZdÎïîeÎ6ŠKϧ”ºäµç‡aä~ÕJ²õº+³ñT¨ÜÌnÞ}Ò“ÐýÈYVÂÃ.÷|œDqÃÈûsñóäj±S("äL͵ä±ê³}Õ1 ‰Bg–„ÓÐè/ËûMUåBäþ`†?‚(È ÉSUTÂîØ- {ØL2™™øV ¯ÍP+&Õ…¶ ôô1E8²sÕHÑßh`#ècŒBPÔˆc#ÿ¯Þš^Ç`EؤMòI‚øÁl‹KXoÀ³n áL—iºw£؅OK–¶Ÿ"÷ê™­7%7øÃhk•c4ëœuË%œ u‹ÚŒÌ i¥”Ýܘð›…Ê™²gʲ©•UìaKþ]Ö«ÚÊ $ªÈóc ê[, Gí)Pl=¶”è@ÃtЦҹR²Ò|f:rz’ µEØÝÀ¬d‰Ýmmä|ýJ‹m—Öè±È,±ç Î"cÒæà´€ª’0Ý\¸ð’Ð}óÖ,¬ó4ÕŽi²lDËÂéÔ2ÐéÓˆŒËöRs“þfͤîÕûk3Iµ%9“,Ýå(èc=È BÛ9\ÞÞúbŒ ŠIÒIðçB]’8ù"ÎÑYØI¨Ê¨Õâ ­°4Bc×ø„F(ˆç0 Ž­³¦/M>ýº †^"-›Œ›Å²(¹ö¥Éͬ¨Pn¥j3Jþ¹ÔϬÌËéHP¾@~8eñ€òÇXx$+<çÉ6¢èCÙQѲJYÉ÷DÉ Ñ€ Ýò©æÖ%K`q/¡ÊéúCúÂv`ó C¶õTm7àÌsôÓÒæ®:Ê+HÓCÙS.mÃ8*:Îi ÏWøq–:¬i79/¶»c9ĸ’ÛúC†«"5g«ÂêŸ>Üë³9ØTrÙ÷RݪÞw“=ÆÁßGhÐ(ûzí:¦l„B^µô'0?¿‡–Ê‹Gž5ÄŠœ•ß³ŠÀz3ìÎ/$ô‰Z}kW_¢ümk”åÀÝÍowï.oÍŠum4˪§NÑ¿ùN±â¶&<å\Œ2Çî‹ÊjuÌë/°Ï™Ïýƒ&$h†)ÔÛEIÜ=jB4O0Ô7Grg9ùeüõµB„P”̺73­¨½¯÷][î‡$Ö}Ãñ}QaŒ.ãĨŵ­#çþi?2;À!±ýê èT‚_²²|`é_6‹m×´.½£ÊÇYj+Ï>Î,MùFùýæi£xöÊ,u‡m Ü÷jç2Î…ë.kò := Nœê.òŽN5Wõ ¦Ë’­Xkžõ…%b—8USކ‘•uÕ;£3©h+?Õ1üØrFaÒûitnüî¼MÀ endstream endobj 527 0 obj << /Length 1063 /Filter /FlateDecode >> stream xÚ¥V[oÛ6~÷¯lµXu±å}ØÒ4Í`d[êbÀÖÍ£-Ê"*‘EÛÍÖý÷‘"©›e7Å ‰ä¹~ç;–#`ÍkæyöÜ­M6pÊ¿lk)áñnô¾‰Ø8iìü~9¸zpì¹3Ö2nªZFÖoÛæ±ÑÄó¼¡ûr4ñý`ø£[³ “­Z8`ž(éîá½üá#‚QŠÉ ÑhÂÀq‡þtôûò‡Áí²r(pÝgz.w»>mº@h‡Ö4ômàùÊû¤A±`ûoM€gƒ@-\GBe0¼D »)á×êýÁ œ‚ó'õ…h,~õA™zÿ‰>aþBÉœêâ—­ÄñUiÝц²ŒãZ¿È¶úê•z?¼_,”ôù³zœm²¼}æR}^Hcµ_F‰Sþ:Šå$håä¼gç•æ Þ8ñAÔ€”¾]—‡&Ï:%êžtz ·Lp¡¤xG6S]G‚PT´K²Ö‘l`𢍽ÆP¸þ•è}îÙ0ÕùGœ œ—»Õèõ¦vN­ œÛS‘L`ßž‡@ÓbÈŠ?÷BuæØžï[Á,´çî\…IT;Z¶–üÀÚ½˜Ñ¬ãh]¤DœM‘†åG„rj6 OœA%æBQÞTz:®ÙÔœN\s[ÆðŒÐ¦=›iY£*žy ŸPÔî’ ˜Ù@¨oÖš¥+™Š5Ü|\éW etjÈ´pâNmÏqõá!•Qƒá&Ûàÿ÷4JQ*¸áuÓXVêlÿÀ(Z DsÊžÚMøµ„I¾ã5<^*ñ›BuÕe½rªÁb†Ðy‚¶ :s®+ ö-™Â$¼3ˆImWnR½ ]Þ$PÃ{<ÞW©tN£M÷q´ªú<ŽŠë^b6&ÙuŸÛ†xÞñE„b¸KMÒ©€¬^ØÃt‡t'Â͆²¨d5.È3J2dŒï!Ãp¢¢Õýýé9²Õ¾†v<ÇvEj\IX@ÏH‘˜¦Ó2û‹›Õw‹…™2Ç=ÖÉÉÛ²9•|À$¢ÍøoT•lM. "†~ËK‚ÞdPn’ƱiöŠå™Ç²Ô’4Üv%RÄAÄŠ>†él.ð¶bzù»û»_înÞ^š¶šx¾˜ƒ{RpAV_¢è³wƒ>ÂÃM½ÒEÅߦ-Ö+iâ¹NÞn¦4f¹)ÚW0L)Í…«@ØkŒÚÄ\‹;±™4C<©–AüâTBùd¥ê! #3¯Ú¸x¡u5XM܇ÌêtèîëÌ|‘3A5Ž×÷$ ¥câ“™/:å[ïpÊ /UÀêzmjÖ½Z˜õòFX¦ò^QÔÀzhpoÔe4ÂñSÇ?qke&Gý×–gô@ߤ½yHp“&ôÁþÁvr> stream xÚ­koÜÆñ»Å5bàc¸|3n?´©l+pT×:!@šB È=qayXòôHÐÿÞ™Y>$Ê–‘@€8»3;;ï™=±òàO¬2o•›…éªØ¿ðÌ®¾^ðñí Át ÜL(ÿ±}ñÝ›(Z ÏͼL¬¶»)«m¹úóC•z©×› ÿûõ& #çƒn¯u¾ß«æš·ª¯z{v@è|”yY«f-¹Þˆ4ò|'LÖÿÝþøâd;ùþ3%GÊÇ¢ÇSÑE¸"Vqº"Iþ7ÿ¼]VySÖR_j¹ooäÈñña:{®øDˆÍ’dÿ› Â§mÕ©ë[ÕÜ[Hu#ËÁ› t“' >REËNý&/! àóús*ð¡G—Ï"Æ{½ ÂT¹™€_Žƒ'4ãƒEÛôª9Ê×3ÖÓxž²†è==ÿ ³m açËË¢Êõ’97¾YýYÇO58hÕô»§¢õäF6œ uÛªòŽóæNõP0šÏ´ìºyžû¾{“@Y;‡±eiã§njþ‹Œé|7^q`‹$¤E„ιº6ñ$‘óÓë«á8¯Ñ(\æ ŸK4ë¨ìæZ2ÐÝ7ÅÚOJ·M{d´¼Yû‰#Dô¼×ñ’V}Ëçñia G Ùu´s…Ä÷L\ñmº#袥ndýŠÙ·{hŽìÕ^òmCß+` ÄU^ï–¬Þ‚KƒÔsò¦…‹°¥‚J@.X1m%ï™ÒhTŠT’M‰É‡(£—Á”ªÈ{I»ò®‡^µdw@£ÒÁ@¨B8µ"­ø¢SßÓ–Ò ª9€èGf¸Óp3–li’¢Íu ú‡A术1 ¹¤Ú˜ša ˜LÊ›k aÜ0¼ 0´\å}fTWÇÞRÞV »TÏ_Æ`1”¥© ñ€l¤,í-}äGë£]«÷„èd×BÁýƒojI2 a$BݱÀªh•ó¦­A›(€/t1“ÁŠr£d,³iui@ãK/€]ßšTÄÍʃ¥¦´öÞ¼a²®‡ìĨ÷2Œú× ^ È*% ùáPcR+[Xn5uÝ=NwÇÆ¤#l©+[ZwüÝCØ‚aŽàžûu:.u´fO¬÷‘›dƒ$ 0ÿLæ oÀŒÿ0ôÇì§@Œµ3Â<")en+f‚íÖD ìZÍÌécX÷øŸÓŒ9arŽWuܵ¬c˜`Çä63›§C×}°=5™Ó·0M.u#3R„–îÕ§Ä“dÂéß§‹¬BÏ…®ÿ5œ¶'z’“ø*Vï.><©^ðUœþþþOj{¾ýð'Yj{zö¡6!#È%ž~æÆÙœé¿.¾ÌÇ*¨¸qœ8?cõ¡Y5Í\?ñôL%:.Æ.~¡xt¼5ô\(þÒ€MeÉÔ Aõf<@ðb¸¸UumwÐHíM e WXÐm57ØÖ’·Ýbßàî…Ôœg5ЍjRþê‰À<qʼn»Ã¢¹`wáC.CŽi®:vh^ò@,à <¸Êˆ‚/Š0´ ʬP*Ô@0ôجìJ$-«ÆJF¦m Êæ¶È¤‘$bn˜/èø.L _¥¢ç†qôHEôΨ"3ìbCgÀøÁëÅH!OÈËÀ„ÃØiÌ á9§©|K@ Ö˜!óÝ$]“ S\ SL—Þ·ÍËŽƒ3’Iã‚Þ$fDMýÙKÂF8Q©Fõ0À–v&ý8ñmÊ? gÛÓ¨ƒÍ@ÅÃ4|óÇg‚a ;öÆ(1¥9Q,Æs e¾ÜZ7[G€å܇ù²ç!ÑKÀj0À£ù`´àÑIã4Åaë{Â5¿3ÍÞòíÛ;<üò²Tö©ú&ä¾±f†0‹WЦD¢& TäÇβhøñ„ç¹FÇÔ÷iæ ð‡éñ€â™N˜Ðì,Ïlx’Õ=àŸ<¤=CÖx<–²+´:Ø9É”Ù÷Ä)Tæ¡åÁ«}§¥¼D™.Ípö¹¤Þ¹ƒk9çk3¯ÝR  ‘€©Í 2MÁ;SÔ‡>aê{› ×SÛãzt2R ù vò+¼Ù3ÃÒR# R7¢Iþ|zöûÅV¹é¨³øï¤ZÀøø¥5ÖÖÄÔÔ„c-ËÜzé£ÁvþôÁbÂORŒ[‘LB=2øegŸa¿ñ‹gö^ARóSŽyDVÞåûCm†l‘™ß$'$¿kÍ# 2ï¼Y¬Ú‰ïFbè3w(Ñ’}´wü` À'øœ Bò‰hþ³Üàå¥é4rc?yŽ#FÒa‹@oFzZ•¹éï¸c¯|ÉëùäŽ;BÒT7„Éà†n‡e[ïMoÀ’à› §$‚~l ò^ú ÌB0_ 5bYçÄžµ™›ÆƒÎcFŠÛˆ°í@L[’÷àEeŽu„^#æ7„dÖx¼©=yîÿ?îÌcÈ endstream endobj 535 0 obj << /Length 2738 /Filter /FlateDecode >> stream xÚµYK“Û6¾ûWè¶TUÄ%@€Ý“ãò:³åL¼¶fsp\S´D¸¦HIy2ùõÛ/ð¡áxƉ]:š@?¿î†Ô"€ŸZ¤Á"C?5ÉbsxÐls³àÁÛWϔЭ€p5¢üqýìïÿ²v¡? RµXïÆ[­·‹÷Þ‹}vìòf¹ ÃÐÓÿX®Œ±Þ›¦¾i²Ã¡¨nxá¶èö²«l9êå ä‡Ç­“H‡€ »NîÝ¡ÁkÀ¸rM°ÀcŸÀœqÄ~¤$ºÝç`fÈÜsðxž(Z~žØB8¤£q€ºÌMÔ¾€VvÙFˆPÜ–xÌÏ‘+ÅÄ ÌLD¡—£^Ègì|SÆ¥|3ˆ¤}8Íã÷ÏKà¶¢8Ä÷‹jÅêÒ©œ6‚‘ëØÅ‘wľÁcÀåð\:+_§‹6HÕc ñjD=#ÛÙ–Î1d!] š3ÈÂ98BY¶<á×Ä]°Œè%‹uUÂÄ¿ì.Ìa"NnO «§p¡ƒé½Q”ñ§õ\´­w‚WsìPŸ®H|×›}ÖÌ…“ÒäåâÉGá÷üx$¹Ùy M‡y¤íÃƺÐU:…Ž ±`õÌ…qª…„Tny,QÊ/Ç&?fM.K,*%üM¤#8oSÍøŸ†.»ç˜Zpž¢•—ŠO«w<º-Ú=¯!à §žŽqqRXÝfL¨Ø;†M~ÙÔ˜º¼¤ÁºJ`JP¨e„ÁPŸœàm/Ån0ã4ï¶¡ð—N¾M²E #ƒŠæÐv&…xà'«ÅG”øej"%Nl((g“€¶ãlä"C޽vLÏŇ}ðG÷5YkòC-šˆ½¼ç÷ Î*?ˆ“©èÖz·”*p”áÃôΓâQ0B8ÀgQO÷YË߈Gº0ÊÀ*ë¦p¡†ËP÷ñ58£¥P)ÐR:ÒÒìQ´]^u’•]öʱC÷ö›«hߨ¾°ø¼´P#5Eö‘ÂͰgáUaXêjõGÞÈ$“—'ðÿ•QÆ[ï‹VÈKIîî½âïÏcØ›ï(6‘çH¿H#˜Œc’#†¤į\ùŒÖOË/C<àpBQF¤¥¸f²I~AùtŠÀ;B]ÚÛƧ6w'²|¦O˜áÖ‡ÏnòÎU³Eçb†t” J™,$ FrË{{œ„ÆptqQÕ/g›NHSÏŨS3•WH„õLÝÈΠýgìÉĦ÷Ñ”ÛlnàÌqCÕÕ Iz;1Äe¿ÈÔSÄL⇱D+ë§‘žÃ’¯Ì²”ìÌ!Yªê42Ž‹J.Œ|†går%íÆ„w˜XD‘. òJh pDÛs¿îUô ®EaðüDpv÷‘Ú‰:k¶<=iÔd¯²ø4ښՋ˵ÏK”’¹&gÜqÔæé(òðò"ßâ° VÊ8c©ë"ªKQDÁ K ¬n¼’‘Áïø¥Ïæ‘ícœ3í÷ü#çÇ 1ì59„;1éÂî{«Ø§#W_:ÇôÏ^纔ï‹S¨¢“¿ê|Ò TyròOpí‰|£¾Š_ ñ*$t7‰õƒÄNË“QyøúÁ¬ 9¨@T´-)¢æ àÀ:ÍKü¾ yx?PÞ6EGu®’S+Ì®øM] Õ>‡àoxµ–§XûÁA3Œ à•7Q8`;/lò¦ã–ÖîE pÙ‡Â) "¶#ÕÍpi sw<—QŸaÓºÉ%l·X©‡Ö»® 9£89v6¸©p&ö²IÂ1”†$RVQ3H͈ƒ> !õ*LÐNHzÛU=8bÑè0£Dǽ:D'~`‡jM¼çK7P¡éXÜÛ(ÉCxV!gf¦à£Q“ì¯ÏÀ§¥’qA‚V¬y<î0ð½/˜‡‚Ñ>Ò¡”÷ÄNlê¦9;´!ò À·À ”gÐdGÌÓûÿ.“Щòà)å§ÖjjûÜw"xQÁöV[†n³¿vzî'ñϪSÂlåJ‹PÅçP øþi\F7JÁ$IJ¥E¤0Á¯ú–@ (Œ CÕ+Ø Ï¦©¯Òñ¥(ä™9‘BãC n0w¿ úJG;ýçêbv+ø8úÒVàS¯â©aËõË·??¸å#ÌEQÇ™â;××y2þý5º$t0›Iâë4ü¦XLöu^}.šº:—__†oRˆKcúŽ { 6ƒ1ý"Û̈] ÛÅ`5Š½É ‹51™¢3‡ñ–F%^¿w8¹*»_Èkßû”?³ g“qÒ7|¶rÿ&TóŒÃV˜Ñ©ëÇÂÀ;pï½-vw¼4Üu¦_³}â}}qùòÝl¥5ËЉ EH:½‚*°ßëÅ/¯¯~¾œÝͦ~2üsÊAèŒOÉ2œuP8urW6,5G!§ÿµarö_畆>VEæéið;ÆãÓ<^éÆñ|ÂÃ?ÿ®úóG endstream endobj 541 0 obj << /Length 2708 /Filter /FlateDecode >> stream xÚÍZKܸ¾ûWÌ-jÀ­©GŽYd½ÎÁØxÇÉÁ1r‹3-¸[êHjÏzýV±ŠÕ#g‘ÙÅ€»ø*>ªê«‡F^ ø'¯*qUdYZéòjw|!\ïpwEÄÛW/$ÏÛÂÄm4óï×/þú½1WR¤•¨äÕõmÌ꺹zŸ|·¯O“6Û,Ëõ·ÍVk“ü8ôwC}<¶Ý Ü·Óž¨WoÞ!¡“·¶nm·‘‰Ýlei„JtµùpýÏÿ¸2J=ñä8óG—Bè¾ÊKÊLÓù_ßÂq´HêU%õéthwõÔö 4ýf«ÊÄŽ4Þõõ߷㞨©§¡}½‰Ÿ7ªÀ+aßÑÒ<àºÃû°#4¾Pclïºú0¾Ä–Lúá’s×ìb&¾ÔÕVÒ¶2K¥¡ õÓÅ¡•N¦=ÞŠ¨~´DÎgÂV8ÞO+“üW¼áñòÅã:Íuívùéõ«Þýȯœé4Ë3?ï%*D‘Üö|$ûs}<,ì"ÝPž¼é'x&Ð>–INÐz|ÉÏmCGƒ³ö?0ˆ£km·³ô JT©ü ’6¾=w;âHjG/©“3 ïDcÝÙq¬‡/ÜoPÜú@ƒðòD´nsä!ŒS=1‹ÝÁ’8Ï'êÀ_h:%‚æ`wîš-^l¢åý-ï@?$×ÔÝ(+A ¸˜L…æ ½ÿ~S_ºpù0KI¦•1 Ë+ùõÛö2ðžÃáæd»ìñ†ö¡Å¹Xˆ8+Re*¿8Ò„*ÞC§J+?É £o›5~púJ–;¹¦/ 5Ð,Y-Å÷ÖNçO”î‰àæîý¡I~Äÿ?’´À½,LÌqè‚ô±'YX’åÌ•XŠØ`yfKöÜPÏÇ33Ù×£?(súâ4sr" £$n^’¨{†KAŠÐ²" á²>µ# u=µI›H‚+êbL*ŸA]>£ ½¾8•>Ÿnê[ÐùÇ´¦”©¬ô®5E™£—Zs½wW¨`þÔºo¢;Ú‰HR+ ¼é4DZæ =ã¶zf¹¯™OË¿÷x©š÷g…ܳkhši“V*Ür`µÃÇûêýšÅçM•0?°’Zp)¼ò±Ÿq“úèî@D ­` J²ÊÌÚ8õÇG4oÎqÞ45µ˜5V8!ðž-ãóÆäÀàlÇ€Š+ï¥5’á¹@;Áoío"_ø N1©*¤_±ÂtMÉlí}Ûíö«| poA‘Éþª<Õp²?õLöw;X{ƒ¢¹!ý\3=]¥¥T¸ééàF-ÄH–§3Á¶†Þ€¨ê`ãTS[ó¶=7i)ÔÚµÐ×xn8"åT‰Ýy€cGÛÎLr`>ƹÃঀoêÇtt¡¨¯ñ9ó":'4àzS?ðïÍR'ÑÒ‚–æ~éáËÖºn€w!úäÜÉ—ÎLúzhˆå±Þ }`Åþ8+Ç^îPú ¾Ûñ|´C»£Žz¸ƒ&MC¡¦`¹B–,3œ1îûó—3rQƒ…t’Žü¤‰T { Òüx¬5±oy ûJ‘‚›™n[ê Ž¢Îã([çeÀ0¤èö•ÀVYؾ~s½ØV©.‚áËŒÄx"݇“ sÀžš±&?ÃGªU––*_Êr¡Ðj:…F8Ä{ýŽNÞ¹Ão»ø¼„Ø_>g²'ãLñmœÉóT\Æõìâepê£ë¶kÑÚ_,‘“ ç-}0/•[ÐC Ôl¼Øˆ\¢Œ\",÷.ÌÙÙ¹°l»âÙB¨FI€žƒ  ŸæöÀÙˆì7{=õ¯§þo¯‡QFZdjé÷\>m*ʧÍe>mJŒX<²M#Íq1ü‚…î,‘‘`Ÿò`Ú€Óghø'!vš™(#§ÀW CKí†:î÷íÁ~5™v±]•q¸ƒ í¨i¶»ó’~¹ -@çÕ"lÙÛÝ'/ÀÇO xñÂø¥¬ë°ã®ö”¢¿ðÑÚL¼·!•­"õ­² Ýì[F$Y¦¢¸ˆ£9ÑL&Á7 ,£<æ;6çFûp@P&ãV ˜ß1h¬y`V>¯îç"a  Dª¸û¬F£D)#uíš‹„¼¢2@WðÜÇÕ ²LõB:wvÚÝ„ÌaÍ r`—­½¬Y)S¤` ˆ×Y^|£lÅ“·Ñì•ÊÕKrT–¼¤J3$tò>r†Ðü7ú‡zhë;~ÀŠKf v¸ãaU\^ùΟxz?ûÇ¿d:þ;|®«!šªjx6°yB™œ÷xNlj0Ã¨ÏØÙ¾±òèì›H‡<í€ùÖ'âÎá>oée™KÇfÿg/½ ‚ca΃€. oh,‹Ø3W1uaª\/‚*ä÷ªæÅD;¶s-oÅÌ)æª`zJTh}DÆ>W&ÇtÕÊ´,ò–e²G!NQeQ@ØÑ–!€ÆÈ±iKÚ ­¶‹bù†Ø±‚¨‚b–PÛÔi)Ê…úßï-yçb’æÂô²ŒTnÌÎò‘bÒÈ~v*ᕸu¹H‰~c·®V¹RŽ=î@8—m:‹C+l¹cñ4ÔÅׂ@i™Çuçÿ¼~óÝkѲá2®<›ÂypÜìX‡”èÊf5ÅÂ#@| 1¥Ï` S(ÔR>¾|LQr‘š &_IB@‡‰6ư|ÜAÝÝà ×ÃN¢s|UU•>˜RU=;ø grâKÀ±£ÅxÌ­‰Âzrpñ´[ìãiÒ” BÉò") wØk9ô­×.mÊΕ,¤^&”Û1ÕCy–TW9Ä¿ú™ÑÛîö=ã y=¬¸\¥,SŠÔÆ9ð_ã›)¸Põ„T lV®àxQ’ÉâïÂd‹ÂÙ¥3Ö‚”CZäºúá=ó 8]”qFdÀg»ò¸›3µ‡0%ŽÁ±ÇW;Wr¦¦O‡:`•4ñ"†×C½›–£O§jN’ïlgþ£ãOiŽFœúºäàÎpÂŽ£Q™Z®Ø¤ cd¼DÕ…bŽ4€ÊÌ™cTKDš•ê Eüš¦gL[a1°p•XøÀñ_ï^¯²Ô"K©ó‰5ìQú ¯º^ýä§3ÀÅâ"WAŸp)ÍðÉðžd:,„|’ïòS‡22ÍTöüe„ùÜþ”µV¾ï;òàMøü¸H£o•Î\Â'3´ çRü³þÂó1 Ð8ƒ >oŒ™«0Iù ƒÖ~r†=tö÷üuá ŸK>Cêà@›ûñåâGúõȽÌÓrQ[—£/*sa¤#Ä2>΄aŒ#ô)Óøo y\й—!Nè×K4äÑòÕÒ‘‚ܬz0Ñí2בªËx+Ä,óû\°•éüà0é|ì°H€y¨+{Ûºhve‡²€è\>åô =2•— ±ÊÔ…íÅÅ‘¾kF”‹¨£Ì“ƒË-¢?¯@ÊÅàðkÿwv’ÁÁž~*SU-E ýmã”tiHÒÄubj5´šöh»‘|®ç¿ÁÊ€¾Ð+°4Â×îŽ##LñÇA™ endstream endobj 545 0 obj << /Length 2797 /Filter /FlateDecode >> stream xÚ½YKsÜF¾ëWÌm9[†ýâ#·]Wìhkãuìqåà¸T§GÃ5g¨49–•_¿@|.%9±+¥Ãô‹h4ðák %Vü‰U­¥ÂL§«âxùQw³¢Æ›—‚×m`áf´òŸÛ‹ï^³Q˜E™Xm÷cQÛÝê}ðüß¶Ö­7J©@~¿Þhm‚×®¾qùñXžnhâ®lÔzùê6tðÆæ»ª<­E`בšH&ZØþëâ‡m¯‘ò 5Ç•O¨." ³z§:J“þ—{P'ŽƒüÄ¿··UYämYûìêõF¦mhþT·Ô¸[Ã(|%“ ¥•mM3å©ióªbyx$Ð$k"…áÀ ¹×áíåË_._=ÿ‘—N”ÖY˜FY·òŸv•uÏ@v¢ƒë3ëR²rM[vû‚eA?ðŒmZ»ëÇ`‡ÕF&q(a›P¡0$¹=XrPS8kOä£]y´§LÑ<£Ivšý[CýrgsZZïidQNSþΣÇÕº§ák²,Íüv¶®´»Ð«¨RpdšŠ0ÍbÒðý‹uª‚ó©ð¾Á‡Á²"ÌŒ‘h® ÉöúT—pv#MફÛ^‘VW^!ÿyM ‚æ½c~’°K6ÞE‡R÷‹ØÒt¤¿;ЬFPÜu6›ÎuÕ,휥a2è ‹%4l¤Ô!̱ë­~cÛ³ó¦ŽfŠzE졨óP„à€Í«niç¥U/Á§µ(»2¿®,¯¾õΫ;œíø‹š~¯{76ÌÝÍyãýM(óRö¾1¡øÖÞ‡@øÿÇ2„PþCþÿ´övØ-Ƀd"}Ò«Âda"ÍÔ(Ïósc§aG"«ÀÙúºÍÉW}àéQà©Qàqд³E^ç*oy¦l9˜‡h'7 6)xâ‡mßûºªj<úÐwP‚Kˆìu°g/uÑÓáD &þàè…x#Ú%’Aö¸”Ò`”8 #=RÊSÛÅÃÄo¹¨B¤¡V9B„~˜ä²3¬VéÄhZ%½ÑpŽFûÚ-]I"IùÔèJº|µ]REiˆ~ݳ%Yi8ÜX èçw—‹’t4Z÷%‚¶?¼ùéAAâ)IéXÔï^?x8ý‡$ýãßZ©Ž"Ot£{ùvûúÏÙ+ DÁÈ`ÛËWßJÒÞ}$<‘ñ¥¤' Å`GsPLgRw–n{ÚQZ™&ÏÑÒ˜¹螪Îþ’ÂûE¬kH¿ÒÞÍóð‡+b=eD›Oa¦­îîmõÐáE(‡èêw±wå©8,ÉÍÀqÏ!Dx"“agß–ðŠÊæîQÊSÐNÿzΓi¨€jg¹ÎüÂÐA»Ì’P=¹8ÕâEBëøŽ¢,FuÙË’c3²âô¶@»bÖø ꈳ®´?¡Þ ¿Û!8%ú»¦¡,¼_+Ÿ…âÉp¢©–—ÚÏ-xJfŒrÛŸ‘ip]U6-!”p„롦)¯+ÛïÂih­‡û¹û’Ï¢s"5c‚¼¬°ÌB4È Ðá8ö ó·T¤B€œ ¿„áÀƒ™–mAž“pÂo'°2B¤°”£ç™‰DêïÁ]Á…Ïo…¿FBWö”Yï¾ *Ã,ÁÏ Î+¦àòùÒ“I¿zû@T–§ZÏêäP4–)±;ÎQø`ùqïy¦ñ!°wçJŒ<üp +¿‹·Î‰¦ÆGÆÉ®ÀÄ C¯–Í’˜,¹¸s%ßúös^´Õ=?QnºÎjÌ–³jvÐß?ÕÏ&u­šÃ³ÖvÃcp"GO‘‡Q<”Ö®«Ö]O¨PÌ÷OgÀ‘Ák·¨øv7fgt´©Ý‘[~Oé.VÐÙT†ù&ÒIì¿™bÞw*,&ÙRÕ,§¼œ²<–'%:ÔFyÒ&M$9xº¡ïu£§nئ—flµö B>![ãtv|”êߟÀF„ÿ2Ô±y]žv¹'Rìèzû!üú¬x”1ª 2ä¾î)ê3¿.•Ÿd÷ ¥D6ËžÓùë#eÛ9‡Âôßú§q åT$åJB–A¡R/ÞˆV;˜„ u²ºó++ʳüjõöâg~AŸl­5 †PTœq˜ß/ǃjäÌ‚÷Ò_·d9¼Eì×øÕtõ— ˜½u3…ìoê!Ôñ·Ï°ÓáŒ×øÐôã“fùí²)þªàÔ«#jöÑä^¨8”Ã÷R7öÄ9“Wƒ~(qÀÕ¦p^|f‡NÎ;»½•R}ÙÒ g®Ð²%CÚ¸SÓ/ Æãb‘Ë´°³Ž> ƒ‹èkùÈÕÝçº#QxáúK(xöìk虘€•"ÿÂÊÉ…‰"æu?®ö‹G¹3 ”K•ÝæË·ðséºÿ7l„ ãÔLiPŽiP½Kúo¥ûÓÿ£%{œ¥ •ˆ¿XÆW‚ü=ÐpCšÐ«²ñ«6Í;ݳê"u•B»—çºa¦¢?›RcÛ¿NÔ’’ìþ9`ÄÉQLàÌüQÇÅÐ`øG”âÈ ’8„–ñnµˆ#-5Çpdê¸Èùz4ù^9×ך´ ?i<§L‡4l4Ú|ž@‹®>hø»ÅQ»„·BE`ƒÛŠnA¤ònm¾Û9Û4Ôñçƒ_ÿ¼Ž ¶ˆG¥LÆf“)ÿknŽ•%/%€vÏ+ÍZöÔºû«2§ÈÒðe:}\‚ Háþ™EG4b|ìÂ.€¹‚X(O„ã¾ ßîrƶëb€±óÕ‡‰è5aé©EëP| )‹ñ»–rq¨éÞ †"oÀ ê!´L4­£ÊÚ6ïKèµå«3#%SŒÍ³Cµ¦ÿíÖŒ ‡Ý$À.E¬‚DÑÈ>Ö0«^ŒHÀƒ6O':ëE5-F粬ÑÃu¸$)Ë>¥^ða”Ìî5ÿ<`dg1š8:\î~MM¿}Œþr_T ÿ‹•÷ÓgLB£úÜ´SêwëjÒŠÕ“¾”r>ÛG…Ê£©?v¢ìæŸu¹Øÿ}’°å endstream endobj 548 0 obj << /Length 3142 /Filter /FlateDecode >> stream xÚåZK“ã¶¾ï¯PNÑl­â $‡ÄvÙŽS.WâM•Ëvm¸4bY"Ǥ´“õ¯O7àCCÍ>f’KJ4úùuC|QÀ/|±°R2¯Üb}xVÄÞöfA/ßýŒ§ïVðájôåç×Ïþð•Ö ^0_x¾¸ÞŽ—ºÞ,~\~±+o¡½ZI)—âW+¥ôòïmsÓ–‡CUßÐÀ]uÜÑÛ×߽µü>”›}U_ñe¸Zq§ ±Ôüêçë¿=ûòº'H ñ”ã—ï!sÎÌÂ8ŸTD}¹ß7WÂ}H©rbyÜz¹ uhËcÓ¦þ†ž·W+ø>´Û¦=POYã ï¨Q‡u躲Mͪ®ŽU¹¯~+US¿¸ZiîaÂ&Í/Ùtðé[\*P7õ ùç[qɸ&’ -"E‹ã×Çpƒ \¶Ô¹mÒK(×8¼£VwzÓ…_O¦Øå‘úÖpz†+–×xjì:®vª×H9µÚp<µu‡Do͘·RL[´F"*t±Þ•I-žC“÷êÛoÓ̉TlÁ¸ðy"°¼REÁl!ÓÉ9 VuäúÜöš¹¼D»½n·û€„¿>”Çõ.tHR1G—† '{v%0Hq‡ºÐ¢0¸]–ôâ@*ô<4¹ÅgA|]õ¦Úƒ CGýû°={wËWÝ xýŽŽÆ­`…;;©Ðµƒæ lá¹NǸ´ú9ûª;Ò[³¥gV) i†¹Ä“4ýnÚ@ìð^*ËŒ´™ݱ<†9¶ ǤìW¥UQ=_ÐA¥ÕÌ[3ÑÞ¨û ºàÈ ,ÈL¿lê@#(ŠøLV‡4€,Á'(6Ìíp.èw^†,ƒ¾@5ïPÏ…Y~ÙEœ{l£Ý iá‘°¹Å5“ ÆÆ˜äÖCj 2?á¡<ž…Ãz3„‘¾ŸPZØz5'¤IèŠPjkà÷†ú¢ÛœQwQXfUomœ»~HÅØïEú'\Ýeœöß¶!$ú#/ð…ÔÑq²¾,VBK¦ ?3N<”Ked¼ÿTpUWÝ.žÚ) XŽ[@&ZûåËSÏ!}"ŽýôŽü Viù6lCÛÒâûGŠê"%wÌ8×B¥ŒÄþã軹£sðn£ƒÏšËJÀW hø™¡pP›ŒDšåîÕ´ê.Ô5ÚoHs¶1\à@r͉iè—´Zþ€oNôÅ®Dîe(€=Ý Õ4lÎvYEìÎ{oÈ‘DsNßßÇ šàþà?+<½²Ë"L„£Ñ§î³sÍ FÊýMÓ‚Q¨‰ŠÔ…0ë² ÈZþˆÍ™Áë,ÄÖëtº•4Ž©Þp“Ì6a[žöY7;RØè) ½IO4ê}¨ËCH–§¬›'c•¼.°oj¬ÿDÑ•mUB¤½d¢&ªôôì¡>¶ï^£_'›}~nºÈ›á³KŽâ°›Hözƒ±tËüD )}F*7¶Ô‘­t NÀË‚@sA°ݳâÌ›§/Š"Ã7Û²$b¶~&â·WÚ€"ž0~Žh zBž§ïý,æF2QÈÖ™Ù^ù€€/Á]¡!rpc*ñÐßk,öŽ5Ûƒh(KÇàTväs¼˜£ \:°a[Ñòc~ä˜sÌû>šafƒ‘õÍCìêÂdèA›?›Â€ µ—sAø<Ԓܹ`ZžAæqü’/ „¯Ì«â •rœä`çÝ®AÇ7›²9jÐ$yD?ôÅØKùÊ=Uð‚)þ¶%ùžb‡Ž¡<ƒhѳ­Þ¤ìšHF×Fx”º{ÃHn¯l“CñÐyB•õ*ŸeS°Ó1¢ €=P]iÑÉYǶ‚9•Ž"°4È;{4M-¿ºBU¡ÓvsÇÅ€…¹HJÖÿòzG¾›’—Z”á˜Åq@Èåø0HÉ-xö €ëi!.€ìÃm"Ή7§¨@lÁ­ Ý^CghkˆÒs@FÈ#݇€89 âî0ÜÃfÂkÈë4œKƒtí£°™œ ŽÖRÌI?NñÏ!gBÈ'ÙTrÍ ûdÓM3ËBÐPñ~0X€Ù™©•XP¹hTpÄ‚–° ¶b†c$…gÊ÷ bÇ9œñ”ÜKfà4/3} Ið ì…:gŸ²#î +ïsoœýsV..…°ú²È)ãždO á ÐÓ=³ÄÎ#1Sª‡R]Koqón—! `Ó¤‘˜wN$&¶²YDuãØ’|¢sÈ,?ÃX ?Õ h`3úxþk.@À1C‚þç¹£½õÿžÖ:„2ºÕ;1•hÆ—s¿ ]¿‰%‡²§çú³Ïg™kwâ2Ipe ½vGˆ>%(:ÅçVy!>GÊŠyÊYñç=Ÿ4£°ÆÚ…6± ÜüT8ÞÙOâ†ñž+¿û c”…ç¦ên÷eªgr æÜÔÅÄ#ØœîÁ˹ø¡ktLÆ@þaV›>¢rI.YÒ`YÓ[S‡4‘Ê&–ÒÙù­2Í%öQÙ›ªúHPÙÆr¦.6>›yáCÒPôŒûË%Öºk!¤ÐгÖjEfìŒL..i™c~„ ‘)…Y¾9iõsÞÃF“‚*~Cø F0ä7GzG3Ž`éÞRaý{«RuX f/"ÝMº]Âr*ÖËÒšº.ˆÿ³V y OÅý¿•˜ cÕ“”˜p-Åíÿ¤Ä¤tVšJLØ£œN°F'%&ì¸Wbr t?\9KL8uW&Òmô %&\!í<.¼RwÞ{(1Í?y,#†“4C ¦5&ìéÂ>äb–TXÉRm {ª-A^äµ|Dõu„óª™]VNP'ýñ•„<?«c0'º‚ƒŒh(Yyʨ±3z7ŸJVÐ?)Yy9õ·´U)€Ú´åÔ¥à¥ÈÊ9{8Sq-È]ŸÈ9;H\ÝÔÔ¿¥[V•/^•>•Ø5•Öúåˆ6¡[·Õmr§J](U ¥bÒ|ßsµú²ýYéó¸Š û§r0ÒvÉè„s3Þ1¡RRÁÝ,ù@BQƒg¾ìâýíX‡råf>)T²ÔM¯Èôââb åï5<ÀºÒèOÇCOdx`ÿ@nn€?ò‘–gñ…ǵ”}*˳2Õ³hõMNñŒÏàÂçÙ8Òs¤C×:÷ĢN/F‰¤:›€—øþ¯ q}ÊwöïVÙ63k¬aâyU4©ÜÔü±cÞü9‡h¥gþÍ4|5® §­Éòq«‹–¯-ä ÷ÖOÍ;yPwæ9Ê”Ÿ Í&•ÕÝz¦„úˆ AºZ·8/ÿ_)ÌF\Ùlfó®Àp¤þ¨Ûîgê°Ê0ΗcmňÇÕaeàWp-]¨Þ‘Ô=ó¸ª(ƒÇï I4ÒéÆˆgv]rÆ>Í®Øë§»&ù|·?$ÞÜê÷;(0côÄä¿ÏÿR:£,Þâ CÛܶUyL}£"ÞûÇB%ôÜ–]žÝÌÿá ¼ú“íT£ÛÙs¨„¤7áÿàžUCïvËIs`\áPï¬F¼ûߌè!ËJÈ5Å´S¡;ˆÿÅ\jV5=»ÓÿU™p“K TùÊZ¹ÉU—"×Ú0ÇNH‰ŒíÒíš»±ª¶«¬˜ÿALòÁ endstream endobj 455 0 obj << /Type /ObjStm /N 100 /First 875 /Length 1660 /Filter /FlateDecode >> stream xÚÍYÛn7}×Wð±}¡87^#@ÒÀEÑ0’ h›æAqÔ¨+¶$ß3»IªhJÚu–—»’3‡‡3CRµ…Ô$û3²Œg ,‚g¢5hF]õúŒPŸ9Þ«†\,0·PˆfÞ¤¡šBiþl¡%ÃÓ%ñv9F¡’ÔBEjÁhø Cæ ¨-(sš)ä©(ª Z×"¡æÀ)I`%Äeñ’Jë”drM‹÷IСÀU¯âÀ†5…tÆ Í‹¹lC¡¹‰¸BñŠ6ÍGA;I }¡™¤ì…„2t@ ;L€N¸)j€•ˆÎˆ:j U抣o1W¯A&g/hÒÐ_«AKðáúb@¬ ½3@Tb—‚”Û̾pIÁ¡`Êø©â+{— 4,¡­^0ŸELSràðf©ºŒÐ0ž%ÅóÌ€~o-P# &0*š1Âf>턆9y}4‚•VÑr«>—>~­‚~1@c—­m ’e›QAÁPêŒ)ArÈ‚qœÈ¢® ¡P½€*Í.Œ~ÌCÆŒ :D Í‹s±›@Ü<`—+êM@Sç¡ ‡’Їm…ÐÊ@ʘSsê CgM¡ho>ÈìŠV³a¦äaÕP Z0-Õ‰Àx§ znæ­üKóB 5µ6;9™ÍŸ½{½ ó‡«Õz3›?}órÓ½ÿt±ú{6´¾zµ¼ Ïdz1›?YžoÂs!ŽâsH-º’X ѹ%)ª Ć““0æß¯Ÿ­ÃüqøæÇ廯¯¿ Ìðçã>Ï 3…'aþëo¿;Û ¦bõæòòÅ™ÓõjÓõujj/{ Ð>Áxéû@‹ùÙÕúüé†ùÙãÓ0¶|» ;ë =[üµœÍ¿CÇËÕæ„ìúrÓ®×o®Î—×Gé>ý¼|u±x´~ÛÛŸ ˜7†yg‹+´u{{¹»kŒê¾ÉuÙòl©äˆ™Ä?x© ÕQ¼؇—›åÕj±Yþ‘4ý£®þ\œ/8×)8….iÚLGA»eÖùÿšpƒŒdŠ+|¯œXt?7–zóSÌUùðγ×/£à#¦€XÒÄzˆ…vù çìºxÌëŸe*_$£‡¿ˆ^•S„‹f¢h¹ÝÈØ'ËūˋÕ{Â^lüyzqù gÇë8‹‡ê^D똹ޡ"ˆÍ±øÈþDøÑÚ¢|"‰¹æÑšt¼m¬6b©oów›×[|¿ *Û€ÊEÆR¹ôkØÝäD #û‰ ‘]EO&»Ü l*ûùûËâêbñòry=3žhe‰ˆ§HysàŒT3ÊĽQçAÑý\Ù‘É @ =À~ÎùÝ*_* ùÒFó¥¼çKoƒ§ÞS]_“ØžÙw¥Döl/i4µ;ô9Êp·¾m±ŸC…)Wø›;T¶ Þ€Ô(êê }á6ÉåÕ´ŸÆ;2„p.fÇ…ó-º~ŽÞ£i•aÑØÊ‘xÀ|Dò/Nã8-§MÜ^}ÎÎÑÆ•¡qv˜q­í:ôÖ+æ§¹JŽ~ÔÀ\‘3ÖÎ}²´X´ÜaÀdpØ~D„”^”‘ XËã3€–÷/«‘qŸ7¸ីKƒUã§NÇë?[ýHkn»2F¼Ä{åÜ VÁ½Á-qÓ‘ ÒOõ\?Ô›º ±}lØMr£È}FîÛ**Çåþ|únµY¼¾8KÄ}èèÎ[L|Út$±{妆«‰ÒhVôZúéíTVdŠÝɲÈÝÁ-û!t$á¯E iv¢\;'¨–¶J·Ä :ÀíÈä„°…<å¶ „Øï¦ñjèmHÇzi²À9^†A.å#L¾àRlCÈÊhȾÆ)°ñàØ/Q1ÁXwMàý§À»2Y}›~äéîäÈÊehµ¶:‰šÐÆš û÷ñ»2’[ôÌîn'N»u¿â:Æê­à'=ýnoê!%"ŒßcgVÁþˆ' áØk¡Qñ.#1#ì*© 1kPIÙøk)¿vý·}×r ÞV‡Œ—6zî'§ÁlÅc‘6e{‡¬~Y/Ñ´Þúmò½J7u¸âTÆúÝ>¶+ãÀ2r“}rÒS•{³yÓ:Äí°s4Ó¹Á¿"‚š] endstream endobj 553 0 obj << /Length 3012 /Filter /FlateDecode >> stream xÚÍZK“Û6¾ûWè¶—…%ÞäîÉN%Ù¤×n2ÉÅqyi ²X%‰’ò$9ä·o7$A43Žª-טxènôãë¦ø*‡|Uæ++%+U±ÚŸä~´}¿¢Æ÷_?áaÝ®£•/®Ÿüý+­W¨ÑŽØ9h!2•ÔB—?­¿Ç”º¸äh{£ñIn„H“©;ÓmXP !x pRÍ¯çØ´n@õ=AIGW³’Z3n?+2ñ®>¸Àþ!iC ©(‹è>Œ,‹‘ãŒcÐß‚ÉbŽtÈ´R$a@x=)€¤˜ ý9Þ0xwrmÕCõÝ)mò½aM’„Eý(aóý:<û½‹·=„ÕUçX)•ÌæjÀ!²T±Ç]+zÜTm_'ë-Á£æKÀ€<`æ"a©³U·Ç–ɺæÜn¨?žMA޹;h¨u;Ðð­4AL0~ÛÖ=Á|ᆲ,²Þü¾t•-äª2{®ÏÓìõ*º‹8ó o¢‰†$xL޽'ÅFƒ¦:+c¸Å&¨S½)‚pÛÿwSä©-J¾¸IPÐÈ6qzG ‘ ÒJ‡/ÙW$›{ŒÊÊ"ŽgðnG§UtÖh^86¦Z·q[éaîÁØàäAGJ3ShÜMt¯9R{¸†j oÚßä¹;ƒÎþFÿMæ/%•ó—?’E/fÅÈÞßH¿åÙóŽv€3d|PݵçÖ¤§;螥…-Y>éÆBØ–I=C¡¸7a fÈga 6MèFÕFìIé\kKÁxnïÖ £ÒÜ}•C.9è´™•—g€é?&ÙÃzSXut•7yâ2h!„e¹¨Úa5ÅRO÷¡ª{¹C·UŽ;=[Ôg·nWýd‰B`ÈTÁ=”b.ë©Vç"î*]Õ÷îxÓ»íåÈuQñ&½CsWë ff” VL)\úË…‰PI2”ZðüaÂ4SÓF—(Ê™|ˆ Xãï4¾º¤`’-ħzã3^¥Úî„1ÁˆGú‹€îí»óàjêÀB°r*¾nÚU¨wéÌïH7ϧ퀬9–™´ c¾bšBû ï¼ø¸ª^s©B©Öb©V*¤Í #ŠGàP×c¡×WÛ _TÅAÀW$AèÄ™ŽÎܯu×»b<Åcî©  €†…–WA Ì4Æz¤i-³†Ï«3« •Ï>¨ÑÈ0Ó¹žä·—$…Jó§Pc!ÖÒ\33Ó¯G}ð²,Ÿlñ¶FØ‚T€ñôï]ÌëảÍùRÐ4i'=ÈÎðEüz”Óv´cïGù˜ ÌyRŒPÜP u[û/|(ÀÊ¸Æ ãXYÄa¯˜X½ë¨Æ9ÒÁÙœ#†eËx¼eô…Àë·Ò£ÒÌ”z (ݰ"ÄeÕ)/…µæCÚ‹pâ–&õO5^”xzE¦Òeå¥ó\aÔƒgŽ¢Ü M$$hšž!½nyi¤î;jLÀ:3t}Gq4ôê=C¢ ­(:Zûƒeô;5‹ÖP¹ëX`ã*$ùåÜôî±.ÿ÷' °NB` 0<+zD’ÁIüRõÔ ÷-Oëìµrƒ~6¨†ç½?Às«n“,Q2¹ÞSyŸ‡2>Â?¶£gL_©Äô. ¥;ĨA‡GË]ú¾êäh¤ çP9ˆ³Ü¤ò¤ƒ9ædF¤5©Àf¶ç]£T pó&n‚0«Öƒ}E’7¾zÁ“o©;I £´0ÂL¬RÀxwY.¾Ezæj®/¢HžG• ’XÍLìŽn:Q´W ’¯jŸä|JÑ^¸K¿•ÎÕð¹þÍä¾(oq•Q#ÜQÈšî0$ì*a>CRÂz#æ Ýq©,_ΠôÚhÒ˜ ” 0^8Dp+çŸíòáQ®çFœÓï{ð9‹šYì¼îEˆa³æp“°Ñ$º_¨¤õºø4EÂ/ú‚ãNR?ZLœxyºÚ—tSŸ@ï§Ôß¼úúå—o¿{~ýÅ¿R»ƒì$ÔÒÒ’5rüu‚Qã¹Í +vÔ Sw~Õ¥ÀÇEÌå‹¡^Ù,]:„ÞLöÿÝ/¯/S‘6Êý"Y›ýÐøˆ£Ô¬<®†ŸŽà ‡|¤SXrØÔÛðÖíÞ…R¹"/=éçoԧεa¬æ¹dZl endstream endobj 556 0 obj << /Length 2982 /Filter /FlateDecode >> stream xÚíYKä¶¾ï¯häM°­H$%QÎÉ cÃHìq.›Å„ÓbO «G[R{vòëS/½ºåì.¼‡‚Fd‘,«Š_«ã]ñ.v™ÖanìîP¿ŠˆÚ=í¸ñý7¯b™·‡‰ûÅÌ?Þ¿úý_’dGaåñîþ¸du_ìÞ:¹óà»»½Ö:P_ÝíI‚¿uíSçêºlžxà¹NÜúæ»±a‚ï½+ª²¹‹·m© ÑwïîÿúêÏ÷“@‰RŸ(9ÎüˆèqlC»K­ cmXúCÕö$¤R6øéÒž›‡;•'×¹œ-„CEypò(pÍW\uêå ŽÌDŽñÓ$Ÿ²*Æ´»Ns”ðí»hWÀà_wQh²Ý3ͬw:T™†VµûáÕßå« •MC•šõAÎ · ZÐ'|Ð,éêü: •Ñ£ eÏGuøÉ‰A63“OZ™HC/ÜiyCßÜj/GíÙI{(Én¯"fQ¶ÛÇ:Œ–`…’O\zv  ´…ð.PñÆ?´µL<^šÃP¶MϳyŸ–ÞË¿ïý \OeÏÄ•d!‰¦“,Ì@$<ÌmÆ¢½ýÇÕëJ÷Xùw¢Ì<(Ì“D¡2÷ÌÀ:QgW=žtð€R>ÀÖ‰J‚ßñFeåW{™z{³e,…¾ºÔÖ×pàtch¢Ò¡áëðc&=ÉàÉ Üz.«Š[¯[äð3þó²ø|®ÊƒÃ…û^lp(ÿÅæÀDnî¬TÙ3íØµ5)5Ñc–ÅJ²YUrá¼ù®ÆnŸ¤Á#ïxl;ÏÓm}®¼œ&î†Á×:Åkè§*è[¦'v˜ºº¿=Ó ™Ö´ƒðkpL8úNÖNm vŸ—ŽobËÎK ÿaà–{reÓKMÝsöY/!=øþ¥ÇÓÃYÀÏÓÜodi)뮪|ÁíQ°k0Ðp©5£’0Þç!¶dèÍèüêtMAa’%+Çk0+Õ2Ϩ¶¶+„ÜòWÌǹ h!“ƒg5Å&t¦Yh3ûèÔ ‹’]’'aª~tê64ŠXé\Î7:òæ-ŒB€¥Þrp’SÉkø¬d®¥~¦kbRs……2щºØEOê_+|UÖå@^ “ášNB›ý=kì'Ñ¥¿€›¼ Aÿš‘j¡ecÃDO@õÛ­s&a¦²yqo»ÿÂTip»qÁo>ÎDÁÍ1Ê¿9nù‚JC›çspOvK ššì×¹BЦUÄJó ®`Âlû4 MnÖ¶G¨À8åŽ\¾ÆµrµŠчû¡ÛŠ_鯈_ùÇËñâ×ôòPö|±Î ZñµLd¦¨u‡¸Ï Ë„‘ÆÝ9p̓†€P(ʰUxà &,ôŸO \ÛŽ¹Ô#AØßD5â~“­DFÉ¿±ŠâÖãiŠÂYÆN‘I*DÑÉæ;+9lfœMá÷Nâ9úvóªiZíE¬¦ìë«íÏœ]¯DÿEqB–©1Áö܃«Ç| ²Ld‰6k{”Â÷€QÉaœ®(PLæ[”¤‘S·LpÝÓ¥öœ‘ô_m†)h[›v˜RÖð¹i_Š´p¯)$…Srpf•ƒó¯Í†gGhûKñÇz-ŒWº)ü‡M¯(KìB*d)É«•eÐÌH,üNcWàOÓé ,Yd$)Ú@äÍÀ$NX-š­¦-SŠ1:”ÒDêäþ8Õ±R²Rît­”‰âàØ^š‚›e³…õ9Ú.]…$f¾{x×~xì¼{Oø éÖ¦e-Àí”§ô§öRɦôòðÜÏËya¹ dÚ<ÄgÞÂãÙ »B^GÐH;¾%ÆçÅ$î—Nø‘qùÔ@Âú ˜)ƒ=<`æl¶ÿÔÄ_lvâŒp~ÿP™Ç‘É…G8k8Ý‚“ÓçÓ3~¼a[?3k†éàD ·@ç·–Ál±D„¿Â@¨å«‡*=²£•P‚dú*­FŠ¤ÍØ<9ŒÓ%›RLßp÷É7¾ÅwbyÝLORœ]ÏÞ„{o9¶NП¦˜þÝß~»i‘4Ìç,޳ÐÁ‡øÕ;¡lP A®s¢uì2:ØùРȉ îñ:ŸæËŒ:ïú;¾òµ<˜_ÇI´™–‚fÉtWq+Øæmôn3CË$I¢¹˜¡ DõWW»eþòÈé‡ÜÉ, #ÈÊ×(ÓÖ5½ÚbyšÆ©X|þl–†€É(ÇVáG"‘“¸²Ì)X)ÊÍh¬v‹µvƒX™¬®šà¡7Ð>m½9®"Ûâ4±<ÐaaG7쌉­;ŒwDS1?CàÓøç Ïaž¯¹(É;)0'ú‰Q11ß¾xîö#¨³'áÔ¹Dcç)reQ|ÝNàÂéèèÇ^–.u®Xç²ÍiærË’RÜ–Q†Î•üL 7¬\"ïOøe€ÄÄK逨 5—z¢]ÂÙâ’†\‹¡¸“‹EèãÌ›â³Má+ ?¯ wý@Ïþ(ÀGÀƒìZùÛ´"eå·¾D¨Ñ³°yÄ!¾²ywl»šÓ¹h*_Ã𢮠½)‰†öM=hSÁ;RžÇæMq9sø‚Öø¦ºRüRßšó´×¼îÒK8ãâ×à/Õ0þD¾2/àΔ¤éXª—©¿•áØ,Ló©°Ôž}˰F ºIsâ01SD %wÓúÌÞ°àiƈ†/M»B8µrQ~‘ÒO`Û÷Üíüpé0ôÜw /kôOè`H` Ã)£éÔòê`§i›=Ö”„Ãq\(ÃèûÍ{Á^‘%WW·g"¾:i/- Ý%$# d‘ÀŒI:63Ÿ\Ú\G_îx–’ß›ÅV[±a±1[œ.ùÏè>¨Xñ¥èK—»>%1êüsWž²¢?|ZZ„¡H¥édIªbDr‰UÊO{œÀF…Æ•q´•去‹ .iù+%šŠ{ül#º8*•€ÒŒ™¤+w*ÞÝpË"œÑ©|U‚ÞptQdÁóE:|9ºÜ5CÍhù;;>tj¾SsÄ¡ „·AÖ¾z‹ª?6UÉ¢n?÷B5—˜?7ޱ`<€›vU££ m¶ŒŽ¯Ò3‘³˜·ŒãЕ8-Š™M1þΑÆ75È­Ò¾µŠ¯°pKx…Q¾=ŠåþZ.Er‹âŒÅ«ÜŸ±(ÏIÓy.E:;C Ièíûò±Ò¢ÖÁ×I–/G`žœc%MÖ‰M|¥ˆÒüÒ7*§´W‰¼øÓ^lKt៑ÐU?Lj"ðò£$ÌôçþpUŒÃ”êŠI˜Dæ:ZÞn æUpº/±uŽA,[o½.Ð\ÿ~¢ÂX‘cãO1qj×{¿Å¿;ÉšAbØœ<)xªI¼sR¸ãä ûsò´W:ƒÛgÿŸCýÏäPèYÿ`o~& endstream endobj 560 0 obj << /Length 2633 /Filter /FlateDecode >> stream xÚ½YëÛ¸ÿž¿Â8Ī(’¢”>ÐÞ¡=\?íu[ H‚­bÓk!¶ä“äÛnÛ?¾ó¢^í%פEåk4Îã7CZ­ø§VE²rZÇ…ÉWÛÓ³„fÛ»w¾ýú™º n&”_Þ<ûÙï¬]©$.’B­nöSV7»Õëè«Cyî}»Þh­£ôÕzcŒþØ6wmy:Uõ/ÜWý{_ÿá/Ø1Ñ·¾Ü«z­"¿Þ¨Ü&idÍúíÍïŸýöfȦéGJŽ”]©<ÎWYnb¥ Ks€Í²Ñ®jý¶oÚfQ+bE÷mÝÞóô¡YoÒKø‹öx[mÏgTè-lfS½àVöÕÑ×åÉßv}Ùß05³œyRŠŽ4µÂ7$}2ñ%ÁoUÇ ¡eõ@§ÜíZßÉl#Ÿ—ÜìG½ã¨i¯¾Ý6§óÑKÔÁ|#ÓåñÈ=q,øR¾ØùmµÃh\°Åý¡Ú¢!ÂeºèP¶åöÑåùÌŒëÝÕ7È%«¨ÇÁ€WÌÏ6¸Ïà´¨«^:8ÉæX’›æÁÕ’™7æM‚Ѹã5ñÇë­dõûµÚãEhHHhÏe×1‰Â3N5ñ›Ç:OƒO¡·¼IlÿÕ’Ãè<ÎR¨ImZT ée§ *ŸûyG§Þ¤…‹“DÏ£ÏúpðÃþ¨hÇ}¶§Ø°êújÛ!œËÅH3 ´cíxY¤øÆùÚ{á‰Bã ƒhÈ¿_ûwi&d¶}·d»}Ûœ8´Å©ÍÄØñð…‹s£&H­­Ž:ܾG8ÅÑ‘q8¢†5„È8™Ð‰YÀ4˜Å q‘çÁˆÆÄa>!&^ ÓäZn‚¼Ö?Fëiš±É5þ:€MÎHv(8Ò†Ub›ÌÁ'úðñlEû€wœPuê"¥lû%+ýO1xçÉcn?€Ã­‡ dÅjÄb£³)›,Ý€Èùa-´¬0è pŒƒF8”ÜL,#DYŠ è߼̶PÍPµƒƒ©öa(o+¿ä F» LN¡Â)Òº‡®÷BA©;‚´"”c¸ÃOq Á’ËÀ¼aÙÄƵ}Uyp6­0aZ7Ô' ®1@=¼NÙmS,e¥àÍÁmqåÌñÕÂ!N…©Î÷®iŸdû”§èÌR¾Í2‘98. n Û`•²ÌH<ežªê3yBÏß‚=­Q·Ù4MÏòýZÒ.ö(4ûŽì@³Y²C@¹î•q1KáŠ"€Ã>dü…XwyÈÈNE°`1­`Ì^ŒíPeã`îà¿/¥„€ZL9C¹w 6X”LÇî$ã:$ƒîèþTu ]¿÷˜˜-Ð|Óóü ç/]/¹?Óqšš¹.=\¦Ð„©5Ñܧý°ƒšh ì2ö3•MÿSJwÜŽêqC¸àüÄî8<Ë­§Z‡†–V‚iÎF´<ʵPÏñ©H1 ªF|ØÈrrƒð§J VNþ„˜š›(f|b'UÉÒ~8ÍHƒ=*ì ½ta¼C%˜Â§¼+«GûŽ ~lÒ"‹ àˆŽÀŨôHß@·l!à8.}(:^„ä8ì^è«N¾oöønôüz$÷Þ°·oý"¦K)™üZù0×õ˜UjU|B€šÚUÝù‰*`Ls·Hu,nñ¤pÊY¤FMëÔnÔ¼À·4ì…–5 ¡,ÀA#ŒJn&™Î(6´| ÃÞý°A8&‹ ƒ1éŽ#Ì–KwÄæãó¢Ñë"äN£ƒ¼ið ˜bauÄ)²éºêÝÑóÔ•³¨p=õé¡tfC̓[T²v¬üe¾•¸œ_¬{‰¹6IBí•8_2M(ˆS¼aRtYZ™–ÌL6.Nˆd‹—4@^.i[È~ìÌ/^<‘…Š1 M´ôÄΚlDü…í] G UÝ/홪8#‚Žu9…W°ï†ç-ã2¸næ+$qf >p½~›¬v°ªŽ[ÝåiùÂá¦ÇÕŸŸýI^Áf;šè!¥ +“~®³‚m’X¹¹×>uæ$ÖÆŽzþÇãóª,‰S•B4»Ø&Ÿt^•™85±J3+ÉÈKøQÄYá‚p’ã @€hný¢×ä±É?ÒiL Ê<Œ¡> ¸Ž×Ávˆê"pO„)‘ø†G>xLÃîåbábuœçxÚ±,˜ „ü Š6ÖĪHçŠþ¯Båv xÓ å,éPÚá¥(a}aË©ªã¶ò›Lµ ù /‡Ê=YþA¬.ýAWÕàιÿ‚RQ[ý)Ô©‰s—+¥ò¹ª†Ú4SSåñA=wBÕ9U͸ØÔw¾ë§ “ŠÓ€Ch÷¨4Ã4^±õ\‡ˆÝpaàŸ(ÎmC7tÒá80(¹™•kuåë­ç…}!&u¸t>}B˜Ö·”ûÔ¤À@éhÄ—|Î%¼ ïBjvϱ˜Ô©B´\h|`iøêgótfi™Vnç?uDÏ;æÑ\úóE6øò„é ¾¿¡V› SJÔã䉗v-ßl¦ï«zöÎÆ/°†ŸÌ\Ô¼ÿœ:`ÒNÊ7N³óBî]ÙUÛÛ{(vnßÁAßßngσ|_çW±îÙȈ»\ë`¼;·×ïŽ4'> ½®º«é½#§;1qCY¤Ëüx£¥ <®„2MòL~šÁm‡çø¥74°2Õ7rcÁ2fç÷ååHñ‡`3y…Æ!«“lžá•ðf΋ü²ï¢Ãi“|v¦„ß•ž~伉®hàA_–ÝáÕRˆvƒO|Á_½QÚôø§Æ?_àüÿüï¿þɯ~ñËŸÿû§ÿÂúí‹åÐ…l¬'c‡UàÊ©O½}|”ÇòåG;«èí7|pvPTÿ¾£Ã9v¯í…d³_b°ê}oK¸·ÊÕL~OE³ÒÕGdØÿc4ÿ©íTÐ’S¬%œ¹V Îq#Ucœ-¹ǦîüÎqãÊÄåq(.íÁ nHÙúꊊ‡½•’D® ]ß‚T?ôf’…†ßÅäצޣ£€ÙÃÕ|âX ‡€‚.¶.›âGâ/„Wœ«lwXõüäûræ endstream endobj 564 0 obj << /Length 2644 /Filter /FlateDecode >> stream xÚíZYÜÆ~ׯ v²ÙÍ#O‘Øa‰½J$aC {vqÈ›£Õæ×§®æ±KIkYÑS°Óguu_U7ÞDðoŠh“%IXè|³;>‰h´¿Ùp㗞IJn ·³•ß^=ùó÷Ælâ(,¢"Þ\í礮ªÍ‹à»Cyl±M’$P¹Øjm‚¿÷ÝM_u{÷õpàÖ??dž~±eÕÔíEØ‹mœ›HÆ\¼ºúñÉß®F†ŒRäW~‚u¥¡‰Í&Íu'šùñÏ‹< ʾ._7öžÛÒM‡…1 ·m“œ÷E¼£o®w§wûs»».à\ü‰p¢;ž;Ô]{}ÛõÕõëÞ–o®]÷F(/Ry˜o¶qq"ýl²ÑiÐv(—-È%øí»K̓áP;ž÷¿ÃÁbÃeUõÖÉh·—Aî"§È‘léxrW6 ܬ̱JàäÖ.ϩ쮮X™°6ôïaîcfŸhgiàì©ìËÁrïöBeÃqwßõãxŽãÜ›$‚4³$x†·„à¡;7²°·Ã¹o¹]Ê^¤t€#wl‰Y¸¡g~aº©ßà;)wRê6Šó™néb[?¾¸Ÿðhû¹rwþ`·¦â8C¶CJãàõÅ–8¢ÎÙ¡÷ü’/éA^G™!m§*Ø{PRO»Z¼ÚÀ æ2¤[øÓç6v…TTÏì{ÇÕtÇhGtNÖ#cøëì°&ÉXaZ¨¹—|†¸Š,÷ôDêÁÙf¡•&ç >Vt¤³ô»ÔÑÌÚmØXÜ¿yUÒÏÏúiÕE6ýªË5Bi˜¦éï½v‚bÇk;æ £bM‚l£á¦E˜©ôs‘k×µN ùùxãoÏÝ`?Áó ¼DôOÑÝ"p7GöX0ÁÈÂ?Ýj–%eË ôŒŒ<:(n±WqÆC%ÿ¸óëÑÙgg²³;­EH1IðÝè ôbîÙÚwà[[`øèyÆ”pÀ²¯Õ½ôÇ“ŸU‘e[ñŒvuË‹ÆÝŸ+6¤Rf:û”±ÝûÅKlú¨²RÀl4Òoä&€ê@"ÎL–tÍ;ì€ÿžÇZÄTÁ¹m8ì ±ƒ•Meã:¡u+…ˆ o¨ßHØ[\͈?1Y˜Åælýûº±my´¿Õø?Ãö‡C9x³'ð÷æ û^F±fFf†/~!C¼ ò¢­¹ÑÖãMÒ¬ e¤«•¾Ô@P-@ZrÒæéV<:1‹­5\XÙ}yn!"x6øY²°3% 0Ìnñ5uíNДÍõ©·ûú½}$¾ñå"íµ -Òr” –³…–an™³¢¡Ã.YÖ=rkn. ý+åžeÿ˜Áa“) /v/KêV®Q,`1E°Á¾>çR= J 9Æf™@ AÔ‚tDzÅßS騕ثò¦¨&SäDLÏh‰êôTI•G4OÇkvØ.eÃÙYOÒè9ØæÄ­ Þ²ôÿãßÔm5Wœ¹£ð}r7˜¯:ä/1Á÷hz”²’ˆÝP¶;KÚ‰ƒoKwõØÁ NÒ¡õî¤ÞhGâk)(ØqúfM= C5&©øëjþOŸäãTŠ0=„šøõ&Z"’Òë>)Â=¿®ø;Dœ;tn@”p_ÔÉëvX{x½=Ûþîºìñ‘~ýü„Á,cÝã/«ZÇ)yÀ$iⶦkCkrFèTµ;5%oÁÑŠ‡ Dážh ¯€Nv~fNø ]²fH¹] BØ’àÅŒÄQ$áæ©„{Sõ» Q,f܉Q¬ªwéŒqˆl~*BŒÖ, íÖ2½ž‚¼1,ñ¯6Ä®¯aÕ™m[MiÉãLû_ü¶O5§ @:‚£T/çÊè¶sIÂ"‚åcÇ8’!Òx“‘ãH0|ê;<â]]‘ŠÚ¨X[B¢=vnàžCk°- 7ìk,›Ð”ñÑ®u=w‰ã7ªG—‘`¨²n××â]²¬än‡·åøBQQ3¶DâÁ°±%J$—TAÄ?K0‰”džwÒù?˜|ÆkiQíúMi%›lSëqÅXÑ‚v×ÊC‰ì¯ðŸ¼ðŒû…5~h­ Ú2t¯¢š> stream xڵˎä¸í>_Q·ucÇzø•ܲÈ.6‡E°é$‡É á.«ºœqÙÛ5½¯)R²Üí~,°ƒ:XŠ¢ø&KìRø‰]•î ¥’J—»ÃùCjWÇû ~ùñƒ`¸ãòÏ7þðC–íDšTi%v7ÇÕM³û}ª/³÷±R*’ÜÇZgÑ߯á~¬Ïç¶¿§‡v>ÑèÇŸÿýbê¦kû½ˆÌ>e–Ê(Ë÷Ÿoþúá/7ž LÊwRŽo®‹<ÉD¶ËK¥‰þOÿÜ—*ªÇ¶¾ëÌg¼Žå;!’*Ë$‹UIçR:Ñöó®Ë¢±»= çKgævèoõonÿ{fÃXV—Ë2)w±P ²hþu2=pBކfíD_‡Ú²æsCãÙü:„a&¢v¦¥ÉÌ|p>9_÷YFO.wÍmÖôé‡>þŸ"êîêh9âSàáD¸ ÊçlK%¢‡½,£alhvŸ22–`œóLã¦=‚ÏuÛO´2Œômí\FéÚsëÜ!ø#ë>˜ '–[pãTõ´p¦ÈL‚ˆݵA˜ òïj{æËÔÕÓÉL ©ì q 4Ô}£¤©ü°ã0ÚñÔØÉåÒµ‡u ž.zhÿ } à(xt±2@0Âz¼ö7[.=Ô]gšÄÒ­²")@]b)“LÿÞúz®Ç/·Óã4ïËmÓŽÓ»´ö§#jFåÕÆj¡$eª"ËR>´]G#d_š·ˆE}CÊ\±B–¡¾à2r°3}}6ÃꙑŒ¬Ë@þpÓ ˆöñIÓ¦æÂU2Ï"x®9ÌÃøHS{ ªN(¯€ Œà?@»tH³ÚÙ•5œÇ'û×ÉŒ1hÏŒ"b®Vk®ÊD¤Ê %;’Z³)ˆ2MŠ\»d¦¤¤+±ÊeRæÅú½¬Ôiê](¡¥ ÁñþÚN3L}™Ë0z]±`Q&š;fŒ‡š×”ÑW43ŽmcÜEf%"¢y÷ ÐÀÇûn¸«;_Fs4£éç´#K'4+4R\øÚÖÉxŸò\”"IS¹â9k¿¥¬yK1)J‡`qÚšT H,‘%–B‘€KµÈÝq¸À‰$ç¥daáÞâ·QR¸âv–'ÃÓ~OJ-̃ÅÃ`­œ.x'ÆÔxYoÎsùÊʬ1ðh>Ž•ìÑ8ZMg®}g&€Ì”rÞÂqìµ½ÕøøÆÖïƒ#]£Ð».L™È ×Î¥Ÿ†8óío{øCÿÛ\‰åæ-Ç+Ï ”†žWY¯Ã!$@H!…׉_z®gŠ–‚_¯£Ñ§eÉFÚøÈÌi̱¾vs©t$¾¯Ž-ùý·ÌæÙ¼U?9MMÝ{Us!Ä+Ñh&x‡˜áèà8\­Y†žy؈nóhjÀj¾4dÈØ*%Kß°²Ö©B¹r<,„w\u÷P?nªŒÊ“\ GïתŒ¬†à(4Xœ[¯¢€Òyæ4<:C2ÆŠ.µî>Wó¡ïiÄ9ïSÖß>€é~Ëgà¬u†ºL =_™æ«FCF¸&Xyï|,´´&˘kVMí27µ*3«‘\ˆ+°Úf¨VÇKmC‚<ÒŠÍÝ ›»ÓÂ’Ü:§µ¶_¬>0U IŠò14´uû„ÛÂfCÃcw~¥D}³y•€h-_º Jƒ×\ŠÈÊDÞ–žUÖøI¯ÔJ¯pÓ‡%r¢\J~ùާ¼êÓÒ{Ç´ð©ŸóièaßzÇpwía¼#¢bìÞMࢯ`aã:Qa Ãp¸rRZÔ¦{ÄœkFç‘õHx½îBÀ‹xêlœ«j§³ÍÓì²ÍÉ8u´ A)‚ÓŃ\hÓl$‹}¤ê¹}¤êû(!Å,ª×Íã…äT$…ÌÝIŒ3 ‰.ýW/D°¦ªÔïˆ,Y"´Gh;`¦èbŸi™FÎ'–öX²'å— œDÀ—Ýå‡iE^O¥ÒŠCŽ]Rëcéàc±ö„ä F…ñåÜ)¥CR¥aÿ!åæ8O@« P÷"¥zĶ.hŽi0¬ÓVµQÒ çÅÑ9´Ô-qèÜ!ŽRº®'Ñ…ÚR®F ÔSç@< Ò¯D’«lQ-D&ó´}tÿ)Ù×*_q»ƒsó§]µHhJ¾  _`sõ,R—ߨã>?^Ìû,ñïÖã”Ô{¶õÖF¥EKúÆöŽVrÚµº{ñŽ ö.ìVn æaùÇ%Üá:ކ²Ž+=ft¼¡¼@ÀŸtÏ "H›‰”ÜÑxá aç%=)’2 ôÄ¥á·ÀP3öu‡&îÚ«Ï”DVÍúPiÄÆ<ýCQUÀìbWÉDeú¿6^€7þT\#dé–§Ê$O$±áÓ÷ët$“&é“–ý¨l.¦ jø~ƆŒ¨¢K}þS*ž> ŠÝ¤„  ¨™ª7^æ€ãzãiOP:¶ "áhK±”]®ÇÆ*š~Vù`Ÿ;®ÏÍU‚S¿&å~Mˆ2è’ÓÂÊýàûÿœÁQ  endstream endobj 574 0 obj << /Length 1013 /Filter /FlateDecode >> stream xÚ­VMoÜ6½ûWìQ*†Ÿ¢Ô[¤iz(ŠdÛK´–kÖŠ[Ik×ýõr(¯uEàh†‡ï=—í(üc»šî´¤–Õ®9ÝÐ8:ÜïÐøøþ†¥¸‹Eäû›7?)µc”Ô´f»ýq™jØ}ÎÞ¶æ<Ù!/„ÿ>/¤TÙoƒ¿Ìéäú{œxrS‹Öû_†Ì>Zsè\Ÿ³Ìæ«å™Òù×ý/7ïö/)Îÿcå!ò•Ò«Hµ++I˜Xý]^ð*³G?@BêÌô9 <§Ê̪;w®1“ó}1ž1ºq_(“ Æ4þtîl˜ÇÇKß\=7â·1]gߣX¶»Åƒj6Û%ºªfhGÛ Üg Ç’¯•C4$ÐËhÉâ’Ui0à]H•sR œ•<ûªÑ*ûÔúaBóíðßýeÂÀÖþMÊù%ùÙFñ²9`ðz ;ž âY‡»1ËCöW{`(>ƒ}ŒË˜ Äà—|BÁHO¨ÅùÎÝ fx ެ×Ù‡iYQô¿ý·]Çuöd6å+)À;£*”%ÜùÀ«*u0Fšd7>²H.<\î`Gt\¿)„’Áõ¼‹EÆ7©,Òl¶. ÄWËÖ¥[W( ™Œö’ˆØ••DÑrÕ• ÅfŽÕòjÕª£˜I㧈¯Ê¬‡÷w`x­³—ß7!ÊÒœ£5ÓeHe–VÃ鈴cÚnòéÛ¦ m:ðääèwàù'Ó?‚®ž˜ endstream endobj 578 0 obj << /Length 929 /Filter /FlateDecode >> stream xÚ­WmoÓ0þ¾_Ä—vRÓ¸MGËRÙk+hË *‹Å(±ƒãPâ¿sŽí.é›:¨¦*®{¾{žóÝ“r<øCÎÈs^ôûîÈ:QvàU»âÞÑ‹ë‹dì:`Ø©Y¾ ºçƒƒ·N’0—D´;ý~¿Õ{Ùîøþ õAð{fe÷ú‡9•‰^]LoÕÂo]“§”µQ‹´;h8ðz­Á°ý5x{p, z½‘+Ëè}ä ÝÑÑ‘¯#4t‡ÎÑÐwQß×໇m88hÅ4%YÈÜHítôs¬’²½ ó<¥Q()gzcžÐ(ÑKL2Î )BI ½“ð¹qÀõ³,ˆÙÖ Qdpz€RìiTUŠ”™I‘9”Ò;Š²å ¼VÐb*ÊàFÂHÒ$µÈӔϋ QTÁ=éÀ'¤‚æe LÓcc1l($„ cÎ1)\½>ìVŽ;–V*n¦rÿœÆ˜ÄÚîrüñlvò~z>¹˜]6°[Ã’²(-±Áñ*â,¦÷nòzúç„aÛ_š^Ї¢+rÀ¼ähÌ›O7³óÉ»³% hRC¥m'¬_Vý2”5?3´ëítrœ>iÉh!ñî9]3Ž˜L79Y¢$1å»™!_¦þXM¶ñbèS–_€ ¾´àz2…Ú‚ ´s}Aû‚dmÌEjû×êÆ³F¨FìV%U¼b{òŸqki@]¼›¼yRKŸ»ÿ- I3²ñ–Âè]×.v«’Å1PDÉA!×÷ ù ªh2JB#^‡?3¥Fù?Œ¯ÇW7ªˆÔ§ ¿ÈLª RŸãu 콉AÃÂÌj%7ÙK)q.¬r†Òˆi$Kn$ó…².É0œu×—ÆroXñl–BÖq©1^!TÏmÃÙJæ{s&ˆÊÍÞÜ)UÜ›³|ŽÿÉ×W˜¤DîfBÒ|oÎ"¼7WßKúäô×»Ñ6Ž™±@ KèAVæ*xçËÚæ¡,æ"«Í:ö¹èƒÍf§¤\p˜ºÔXº:wLQhœ• È$ÁÍc%J«yèõïêÌÈõ‘ß(—ZŠTG7þ¶ Â"†Œ‡wiMYšÂ²àlÆÝö éŒF¹2€‡êËRøsãª9¹F S͵úÆï¶†¯±Æ|9ê)ÊŒÛÇÐpÏËWX£Y½­ì­ÔSl¢ýÑ'NÞ_]§§ÇöÿŠ¿8l endstream endobj 582 0 obj << /Length 1057 /Filter /FlateDecode >> stream xÚ•WMsÛ6½ûW°ºTrEšIYŠÆÓIj;“ެ¤ªÒ\‹„1 0 hYÉø¿ ~H¤KÚÝ·ûv°cØüÏ1¦¶qîºÖÔ›A|bç«tcHaùþÄQûL¾Ñ¬ì|·:9»ö}ñ­©=uŒÕºjj·ý?¶ aL×uû£7Óóüþ'J6Ä1Âùa‡ØVJàõ—„§¦3ñíQߟîVž\­ @þhÔ¹ØyÝuŒ‰5=Üq&ÖÄŸ»ÖøÜSà?Þܼ]\øi¿88Loï¤~!~LÆÔòÏ0y"¼±#ÿß{AØîƒP)=ž¼RaDþ†ˆÂ€º—êå‡eOJÏÃÜÝì"„d°êF®hW—¹&•ëó«NF·0Jª&…^Di…’mQª$øÄšm×MÿÞf÷ï=&xKmM¨þ[~í:B)«º6>ç²²Œ"¨ ó {Uª£´Í| v±¥ödW«®jÓŸ(ÂL'[ñd”B½º#ô!o¦Zu¡â[†j ºvû—¥˜¥…õkž;Þ"âA\«K¹¢,s­¬Ëz3,®¾,ÞÞt+Ö”ZBoÈÉ” ¾sbP Ê€àWvÇ#‚»ªC¡k‡ÿpù-‚gK{[¿ÎÛ¿¶o[ JꔫÎâó|>,¿ÒèÉ:ÃÁ=kßÕ`CyÏ›Õ)&<Ï4¬Ÿñ|†æ«g§ ?¡;@CUv0ˆåi%8µ”—³¦ *(RFQ²Û"=œHlÖP±µa|ºF8¼W#¹ålâ•&¤,{‡ôè -&y"žJô¨ š†ÉœDJÂ_ÑUÅD‚O0ÈX±.©vË0CQkÏŠ;øåZZ ÞáZ¿E@¨`釕~ëîùD.ßÿâíØDÿA…iï¬V3âÿ¤Ÿ‡ß endstream endobj 586 0 obj << /Length 769 /Filter /FlateDecode >> stream xÚ­VíNÛ0ýß§Hƒ”’`磴T›Ä:@›h7¡ò ²§±Ö&•ã дwŸ];$nÜ®c¨RãØÇ÷žûhþƒVX§¾ïöƒžÍ[`µK§–\Ü\µ Â9èÔŸ'­“Ë0´ pû ­IR5‰­;{˜¢Ã´íø¾o{gm'BûͧÍç$›Êƒ'ÂR¹ºߊE`ß`ÏHÖ†6n;°Ïî‚öÃä[ëbòJ(ô¼™ dƒº­žÛïvÁ§.|«Û \è’~Ñæ7Cû£|Œ’ÅSJ–ï÷ œ#æO8ܸ.ÇãÎð ¼N’ xTØ ÕwZw[ÐUÈ_¯~€âø1%ËéK%«Ð4®àŸq´døQ°2ƒŠßÕI¨ø{ò$¡x£©š$“ º üLX%ìÂèTNŽäý i¡|Aòåó9Êbù"Xºrytbpɘ¶ ·y®4yuÃóÝÐïê×¢Q¥L`•Q&d3ÂrŸâ)/VR;¹˜X¿Fçã/J£²Ûˆ¬{Êi<ØæÓ¯E>C¥OYŠ ^2¶zU+`¤Ä+g¶æÛ;ò 7”Q]ÅEM ˆÃ¶"Î`c þÅ*Îu‡×+xÎ{ïIºŸzû¨ÉkÈ’h‰èt4;ïy3‡›•haV—’ÅÚ  |¸S«ÛSWßÔð’åEP“V°Sz,7ö?gr5ÎUS^F©!a“\¥ÿ%àe®ðC¶\¥s³‡Â²"Ù’fþsÿ„z]aUÕˆN—s\Ö8Ë5âŠ[éI”½˜+Μšïž„o­œµæ2D³ÙZgI–YÄHžmk(ëAXPñ§œå|R^-k$錘ë<ÿ)W˅ʵóÑ… J±fK†æj•'¦¡t\S9±n—B.ržðå(s‚ñ/ŸÉQù ‡ÞߥxîBÈ­æŸK ±ãÛëkƒ‚2½*›H‘²ÍUX¨GÊÑ™&“)_ÍMEHßu ìß&¬ø<üqö²× endstream endobj 590 0 obj << /Length 1095 /Filter /FlateDecode >> stream xÚµWmoÛ6þž_!ôCbË•¬WÏZÐ^–-š´pT¬@[ŒLÙÄôb4Œ´Ø~{I‘”IY6’Kˆ¢ŽwÏÝ=w¼ø–Ç~}+ñ¬ßÂÐM¢©••g^³‹W–XÌoÎ|)ç0AG“ü3=¿ŽcË÷ÜÄK|+ÍuUéÒú<¸Zƒ …xè„a8~:Q>àz…AY¢j%>ì]‹ÕÍÝG¾ˆs–ª†þ{Á`⿦oÏ®ÓPODÎ% ‡¾5u“É$âÈý`ê~dM¦‘뇑€á ‘ÄTQ¹¸äH˜f'`®¾Îk)÷Å‹=$–¯ÄûϬ.KP-ÉgôÕ­@ å6Ø™Æ=+q#?¶Óh"£|¯—Pœ•›ý;×ò²_y£R P0 +‘iCºÅÕ^󹦟>³\¸Ó 1=ïåWïoogw‰M›+¸ûøî¦¨¿}aÛBÇ=ÅH:¾[# ÉdP¼ç¸.ÅŠ®å¡Ël1ĪE-zŸÎßÜݸŒ` 0£ÜÞ ›š¥1€#ó5,39­;ÚÇ2\=G²5L±•ÃúgÂm\4ÒΪ¥M_ºq89ªUHË8²Bôûqè|×5JŽÙÔ¤~ÐC}bP_aéM·‰ …>R ŒƜØ —ˆMN±>>ÍzÒahl’‘š¾‰Ç¨õ´€]UâÕÿ²/ß,(…iâÃÄùù‰Rn蔓ÔqL—ôöhdzuñ…õ?Çéá"O-äÀ,dû×~XEÚFyGÆ¢¦BfÙKböQ8)ËQmh9°$bà ¯ô¼ ®*lyÉÝ«ºÜ¢š…a&I†ÿK8þ§é9ÔÊZ¶øÅ VªªøÃl>»½W<«+B:ÂËöNTìë%·vÂÎÏ™¹E¦EðùæNîc[ ‹¢s74CÆab ô€~/ëzg’@‚†ê¶ø[žÚ5(I*tDGïUÅAfC¼ð\¿jntÔ鸔#¬‚¶«ñR…¨#Å}•áS©V¶yn„Éž$*UMŸp½¡ Q ô .°`™a¿ÏÄá•d¦qV*#Œ KÄÙdb7“f–ÔïöÖéÿÆ.ª6[67í=u{ˆêqE‹{ÁCb4ǯÙñ[P½x.é °Ú*_D’ÃG†Aö–^÷D×c˜¥°dÃöR«¯E¾­²}¡½ÚGÀ¬ÃŸìä3a²¿PL~iq`M¶¢ÄÌVzý)U•uŸÎæigt»V“äC½eýMms­Ç3>Ë(ëÊ S“Ö‡mžf‚C¨êÖÖ¾ Žõ޾-ÌÃä> stream xÚµW[oÛ6}ϯÐÞäÔVD]{EºÂ R¤Y‘¨Û€®4‰²‰I”AÑu³aÿ½¤IJ$EgÉÖÚfÈßí2À ÙxËÐ;ã`™,¼¢9 ³dí‰Áíå v3f8Ó,ÊNÎÞ¤©Â`.—Uº«¬ô>ú¯7ù–B2™ÅqìG?NfI’úïI»&yÓ ¼ {D7btyóÿæeðøp2‹4Œüy4ù”½=Ye}Bi=1sn9J=Þ"XÎç Ï€E°ðæ‹$q"’¯P ›ßm³­!E-ž0G©ÿ{˜†~¡SñgGs¢Æ—lðD½(ÒxîÍX{’¹ðX´¸£Â²ØäDŒN¹¯—‡-¡´Âaê !ŒgF¹åïÃÒ2H@b.hñN›œØõ1#`$íäš0½ Ö÷óo>\_›"áàìT˜]Uâ—nô¶oI)Fj&§Êj…Ša[YkŒpÚÏI,µ<Êî¶ C®<ä¤~ ÚöfY0ޱýŸ™c²Gt;ïSÁyÍ,e\N¹[{Š!êÀ¹D´%ìð™ØÈ\q¢0Ѻu!¡ {úq¤æ^¶¤Öø}oXX<—=½_C IÎÒå¡$e0HÒÑNŒtmm²XúÏcŒºTe¯w¸e¥¦ô:ÀÌJA|—½ÊV’PÊJwò÷OÜî%W™òl §ÃÀ!àäBEÚFN„—ûR:cúÖî¤QŽúýA”ðk)°ŽÈ¿‡.6i Îm·GOWG]ôGeÄ{Ä‘cŠI¡['Áó„r¬“þuäQ¡N.Zrp ¿La°S§µ¹28uõ¸,ZÒ…áÞ–K[®¦*QDQ^£¿”*µ{ÅòlðŽ‹zW²#=’BUzþùp›l€xÍïd*Ùê·Ì:k°ªP .¦ŠÜ¥•ÛØ÷¡£®6~Î Êÿ¨¡YtøLQüÁd—.ƒÿB‚oC!C'æµ:„Šz¤ŸRtŠÖ¹¤SqåV“ÐáîaŽí[h¿A…DkË?k|-EÆôAŸ†[IW˱XE³8µ&YC†·îãÐÊO·zìVz/^8Ï”y\4[39¥˜ƒô0Œ¹<ýÒ´ï±r·e±T¾Sƒ™?"£åsqVš€ÛØNǯI¿žŠ= ›]‚õžSϹç\ÍV§ÿóý$G²?7MÌâ†Ë”­f•¨i{Ë Dáyê¿a„}—ËÚ_Kz²Åœ‹xß· ®GÐ%ƒ¤¶êÌw9Ó=t6âÀq7t–ž÷²p}u—IÎýrµúÕ÷ÛÕ {½z·¿Ìw@gÐ’ÿëö"ﴄ endstream endobj 598 0 obj << /Length 793 /Filter /FlateDecode >> stream xÚ½VkOÛ0ýÞ_‘ZDBœGIŠÐ¤±6±‡ û(Ë7‰HœÊvA í¿ÏŽ6¯–€¶ ‰Ü&×÷Ÿû°¢³? ¸ºrdššk9Ê,íéù[*¸<ïé§2GµäùnÚ;<³mèš«»@™ÎË¡¦r=<ü…x¤š¦94&#Õ²ìá7œ…ØOÓ…âÃCL#aùÎ kx ý ‰Ñ áHŽ­ñ9º~ê}˜®نё9÷lP7âhîxlqæ8š£ŒK¦%ÈêÓx6b‹íá,ò±°È#™eé5Ð ëö˜3bªÁ$0€Xv¸//bB…E#(ŒyœÀÝÖ ûÄ+ä§0&Ûnþôq¨ kÿ°`[c Àà½dœÇc+òˆÜÙ05Û×V¬Øï3WÁZ­8 ¿§ü‹«YÀªˆçk°7e4îkW}Ùgá|"ý¾”¾e­ÈLj–‚ uäÊ„C=;MdÐé¬dâ4ŽÛ$Â.1ª„¥0­Ãðåëj˾Wl¬õ¿áCý»Ê^¢ÿ½ŸÄÇ"-SˆJUÐç¤jêlKTY¤BÞ†[MÒNÀyŒŠj刞÷ùêý×+Ï«ÀÔ¸ýfjL;+ƒíIö!Îîdw%>‰ ©6ħï²­+ž+%HÈÖ jKÿLlì«ßí+ðPÀÄÞ ä¿)êÒPÁ«ü7ÇÊsuM³Ì |Bœ-I©’“~³¿Û•xmó ÿ»˜P¼œIÀ54ë©yvÜF±[×óH]º¾›töf µ$èn¾ƒõ‘v"¿ºuúR8¨MÇ¢FZÁ©E¦> stream xÚ½V[oÓ0~ﯕ éºdqn4›x“𦩗ˆ6£ §åérÖ­6½Ò6Â;ñpÎt)ꮣA›†¯Ñ­]Å%”j4›u¡×¸ƒBƒ~U³"þÞß÷jÊHRª,ë±4èuÛÆ[ÀöàÚš/zÃçk~&Ô®ŸÕx:ÅÉÎi"ó3›ík(>éí¹)<ô{5™ µÒdzr´ÅÅÖu[³$â÷ }ÃpcóSŠ~ ‚!Ø^ž*üɾ9ÓÉ—/IÍœBrôQô«uY¬ËŠªCb£ýŒ©(ᇇ¡ ´Å²£™M›à|crÚB–ÓžŽ?ÒŒÿXîV£q?JKiÝ?çâ?àäï~ü–÷Þ¸ÇRD`Â0ùÝ]`úR¼K$éÑÿº‡†iHrŽvÛ·RëØ[ìõ›ë_÷¸×Þ endstream endobj 607 0 obj << /Length 839 /Filter /FlateDecode >> stream xÚµV]OÛ0}ï¯È*¡¥Uâ|”´Æ !†ªN{„²ÄM¬¥qg;«`ì¿Ï‰o¾š2Ê>Ô;ñÉõ¹Çç^i–ü!mjiŽcN݉,{Vñ–EššÌÎ{p† äûyoÿÌó4d™SkŠ´ù¢jj7úIì¯fÃqÝ>®ëé׌FÌ_.I©…5±š_}Ê'®>Ã~˜t€t<0Ðijl}ì îæ½ÓyEȳí™çÈuis:»9s䘖ëhã‰k"ÇUôW˜1*Ù{¶§ßZžå³Hè('"2sw¬  ‹Œ¥ cjºÈR°ŸõЧ¶TN2+Vº¼_­Ãz³~—½r¤UŸßÓjo·?Tß_3’ 5¥LDŒÕ$ÈÃåòš²¯Å‘å!a8”=˜êy¸¿…g'%¥”áœm¶ÓsÆm²AìƒàC…†¼¶aK[2®ƒHž7ȲݻåG-5à®Vß©!Â"hÒ–AàsN1]À»"âµçÞ=0ˆOu´r/ØÌªäSì”á*?¶FÐþiíTI_T%õ?T³=~+öG•2ÿÍËv'M#UÞQ„ïÎu Z[îàûyéñŒcÐmMxŒŒ jü–Qâ*ME\r^©V&‹É4õ‹Œšc˜|øxuªf)MǼ¡1º½hP]5õ¶¶Ó­™NÉHäŸÔKHSܪ€—eußAmýϲ4„B´uL‚ÄÅIê>Ьܯ?}[ú‰ÖÇò[e¥÷¡ŸFò2^§øI‚Ù®]I¡·©ü‚ȋͪà"”÷˨À»¶éŒ76íïq(Ý9…7Ø/Ê’_â¶mCÂ#_2Kk~fDˆÔZ2Ž“…YÖÝ63VÚ@Æ2&¯8çYÃ3EHú@¤8ž·¯†ï~B  K[g˪TYŸ_^žÎ _à„ã²(‹?¢ …äu.9µûÀ§q»/1ç~üömþ±S·Æ¶ØùmÚí¨E.÷í4jëª,_gÂÑßU}óRz#c¨§§'5¾6ùìt7½àóâEmêã– ËžÇph¶.Mûý‹†Ôº°ž „v”ÿýnÔJ endstream endobj 612 0 obj << /Length 2818 /Filter /FlateDecode >> stream xÚYY“Û¸~÷¯Pù%TÕˆ&xŠ›§ñú¨Iy'®µ’ÔVœ Iˆ)R!ÈÏ¿O_ )‰N¶¦J  ÑèãkŒZð§Vy°Ê¢ÈÏãíª<½ ˆÚVÜøõã+%|`ÜÌ8ßî^½ù$+øy«Õn¿J”ò±é¸vÕêŸ^š®ÿµûË«÷»q¥$ ÿà–Èy³g–®Tæ‡*‰qO*ÝÆ¾ŠbÞîþ|^o"åé¦2ß¡•%Þýz“¤‘÷ññoÜÿ°Îc¯Óš{ïZâ/‡“nÖÐè‹Þ´ }2¥n¬Æ\ŸUʼnD«Mû1HI{ÿ}½<ÝYžEžò£;nEø‰½Çvn½ßñGŸð÷i½ÁvÇ\alq³ÕF©Ôay•øyšóò?·gœòÒ™Ã=±&±fá*ð£PøJ–7çòn"wÆö5PÉòÉü$Nàˆ D îFéÔŸšáDÍîfâÓø‡õÖ©z_Ú}?ãOÑiæþ€Új‡¦"…ËMé_Û‹R[»J£ÀOòðÿX ónfÌl§éÅ /¤cûþüÓ›7{»÷ÛîðæZ„0ˆý,ø£B8î[1’1€9DŠñžM£{ÁOÛˆþŒeåœÅXN¦ïuÅ´¾åo‰Æ‘y/Ü+®Œí;ó4ô¢ôß‘IwO óÓ8ÑhK¦®"_%"L»—-Ž,@ìÕâ¼tKâ°ã 9ÊÂfÌ]"õX4ÓxÈôò•õšVE]·£…èÊg'C»MÄ $œþz“¦÷ù×÷÷¿¼ýôž8!żwG3¶ÞyX+¯cݵVˆx¶8ÈälHq¾NdGDíbÿT|#Åq¯àÁSAçŠN‡©×ëï=;4ª&óÚo2Ðv²kÔ¯±ší¾¨yolá«÷CJR¬ðÌ)W¨—ixƒþHWxÖݲ#P´RÕž~icguW€ž”g‡N&j¶_$v õSÌ8pËCl†Ði8¾ãžm á/Àp•‹.XJÚ3NØÒ·déÐcK1Ú\Ø: ²È8óžMd^~‰‡#S…þ‰m¹2û6VXP¦ƒ€†¯7?tW0ØfsK6m³YºÁ‹ñÀ~ø|Ñe ¡¯3LÅ­rå\mLæˆs§­îX[2¾§}³\´ ”bèDÄv§«dòðTË'À!žöŒWS°"¤&eç©wШ¡¬õÛ3‘÷ÎÑ{´é˜FžÛvdñ*ôž¦ÖÌÄN,’ëXÁÐXSéŽB0Â!Ïì7@rÓe³tº#°ž¸¤¤q¶XòSQI€zšDò<ëüu&ñ¤sì8bÁŸo [èøý ˜ÃEÝZïû×pô0Íñè%ÌvÒE#KõǢ県?I½br¤Ó­€íåVtÇ4ï:æ.Ý‹Á¢Ö³瞬®'ãšÜwöÉe‰ 8ðLnØâ$Cˆ­8ɽÙŒü\k'”½š/ÈKyu£;ŒxHýŒvY.@îAòÉLŸSîˆÈŽ1ÉH4ÀàY’BE[sh\²d[†`“ȣ㴨ƒ7qåÒR$÷üƒðÌ #Èk‚ä2G™mÆÎ“C´*X¼$­±XÀK*1xTä—¡„T Ìs² Ð@˜ò½‘ã@Ë^A-ÔaÈ®‚–ÅÀhöZã¼@ (ÙÞ`5¤6›-7'Ö›|D> " èzæÜ!İöÐ'ÙåØuÅm°Yã42ÓQ3>ꂸ°ißTLT*Æ 1VhIF±Ž/RÉŒ•ΚÍq)PåX¢Å&Žrï-% ZÁÈZSp†Ž#rœƒõkì'µ 1Ê.bph#Óÿ©™`&ˆ–EÃÉy¡÷YqKl;•^¸ƒd ‹.b4®ÜéCÑUµ¶–‡9ÕƒZ†'ônïߢE²§,Û,ÜÈóQOIÒHV%ÍÀ×e JR¶ í ‡ 7>A(øý†·ùjô=`è4%ÕFøå^âdv/²niÎ.S'¤¡%ÑE+‚IŸ­C¸çaçÁÇ45†R*ÅHP tz ­)%€l.©„%öþóçO?ß¿}øô°û§ß?¾ãõÞ½ÿððø°{øëã—ÿp ¦Fsì â|®Ñ“ñ€E¢3 ìL„ûO£ žFùE:OcŠWWËäÙ*ƒØšìVÙ˲;Ýja‘²XÒ>x  ÏuQ¢Ä l”ˆoc£¼©€‰÷ØÖF‘Å2¦¡¸€}#<ä>HÝ©d¬xÊQ^)™vÓ?-! ª!”mØ’{ÀûͶޗ+ +çÄÃ1aŽ,ÊÐl]mž!¡n!sУҰ¨)p½l$¾Â¬zLš1`í¡£Âý-è¾:W{'ÈVqáZÁqî"gÌ à ÷œ®rwCÔ†f4`!)0Æà”“ƒsy£Þ]ÃÀR òÊÕI©xÇõDèeï˶)©*5‹‰ Ëw/Ø›;öÉ“/nBèç¾q€§Ý¼ß()–”+¤ qfŒCmÎtËÑt_ZŽ!ˆýÖʇf€C« 2…{ê ÕǯÃk”0Àoü°"|e©Ï=·Ff3ˆ„T³ç¯¬Â±ÈâÚ$Ü þΨFbÔ~çu×Å6£¹,Ü¥i.`gÂ1qa ýÏ`:y9ˆ=. ðéÃÚ1芎ϗ‘,hÉçEÜ,×Q¿ÌK JCY€¯y±¼æ½f ]oêJ. ¼›^ãvNsû‘k2¾4Ÿ¹öfA’š¹2o¼B¤XÌb^$_uœ™b±I¡rÈ+g‘H?·å鉞†ˆ5äÄ€¾ÀÀ ˜‹0Büãï!°ÙZ<÷fù— PÑHÖ!è^4‡¡8èÝW¸eƒwÅó “¾hÊį±Ç¨©Àƒ•PÎò‚ÆoÃH"vÌ ×B-£ÙC=8nµ${š´ç/ú6™ÛÁô2sSRsõ‡/gš |ª¿—õ`¥D ‚ã¬næÈjVöÑœ™BBÌYÆ:ß CÇ Æs|-yb4M¼´³ké§÷€8ÓÇÆ¢éÿÉòàì•Ê½š‰—°)_ƒ$à§±|Ü€Jv¾ |Š î]ÛW(hJœøIÒ¢_~áÊ#†âb>bîT`eW€=¼=qèòPoÏÄù¹ gPÚâÁvGª`\.%|”S°¥4Òc-˜íIˆ"æBûç¢QÔåË#Âf|/ØÊ)ò¨áÇ”öNòÌ= ø¡‹ÂöX²’µÓ\I{È@ERõw@kFXÆwµ—/7§ro‡ë)EßZוuç9×Ëí@bCL¸ ‡ ¦uIÀÁ‡ŒõmgJÊç@‡ó5£ó¸<.ÐBãªà ö fg—Kï-l¥xû]´Í9YäW;Xràwâ š= á|4uk[ø”# ê)9.&‹Jx¯bc®D1Rls©ìÐã>->oì8œ) ± Û:¨¥èLáK¸µ¯¹[Ãv9°žƒÙ§`=ÍæžT[ØìM_këÖ"?ª æÑns…¸çÇÈœ?ÌÑeyYh²](ïÜ‹Ýæ'Ò_5 žËû6fgb!³¤Ò°×ôqÚЙV¥ Ëf…ÿoú/åÖÆ endstream endobj 615 0 obj << /Length 3156 /Filter /FlateDecode >> stream xÚksÜ6î{~…Ç_NžÉ*z?ú-‰ó꤭§ñ]Ó»ÜZâîr²+mE©Žï×^äj×rÓñÌŠA_Dð_ÔÑE™¦aUÍþYDÐasÁ_ß=‹oˆ«æ«Ûg/ÞæùE…uTÇ·ë9©Ûöâ?ÁËÃáj•TîZóíj•¦iðòþ¾ûùŸØÈ‚·WU Zsﺇ eÐL{Ý]AcT£é;žòÑ4º³€—EREyõßÛŸ½¹õæIò7·‚˜ßÙKÇaqQTY§ogêZ=/QŒ[s–;ÂXxµÊÒ<ø°Fh(´º‘-@§íY–Qº~dø—(ÎF†[Í0uG¸ýüü‰?o5bwÆQMƒ~Í#ŸtÓw­ZŒ,c,Š D°ŠÓ0ÎyWÌDVj·ëQæ÷´XËÀ8Nó(¸£sÑÜiµ5›NIY†è˜Ù¼Ô`Ÿ Š¥N‚Û­L¾fÈW¬¾WØy`Ø )ÓñèÿàÔ=ôÜóëän$3ßZÌ{ûÄ·ÈC’ÒÑ$eÄ2NÊ8¸†C Pã´Fçpp®pÉùÕbÓXò/0¾× Í 1”@X¿¶¦Ó«A«VÝíôÙ °mTíOþ0h+A¤@¾ <âϺö$‹:î·½Õ ¶r%6Ýxãî7A¥áùÞ‰šc*aOŒß­6ºÓƒÚqç0ÝíLCÌ¢Øsšv2ã‘°¶´Aÿi¬é6èd+Yí¹“Ÿ]v”Ùl 4ïQ“Ô€ø»Ƹ7ã–[Ä­i„6i¶tkFà†ïÒ¬"ãÇï—(Ö®cöì•°ÝôûՂͱT{¶Í""µHŠ88˜ozgZÌ}Ï ¢[6Þ/ôÃÐoµ·8bcAhð÷ÞI–%«5|9 …ÆœîiÈ%ÖüÈê±ÅZ Ša·=J”hÈa"ƾŸæÄz!†êÜçp¿¿dÈì¾ÁñíŒß§¢i8Ó¿¸Ã`”ö ùNA71/3~9(8ŸËÓË1eÒo¾©ýa‡~0¯X‘òjnHõ6&Æ¡‹|ƹ;Ä€­GÐtÍnj5Ï8ìÐ//Þñ<-J³$Œêxc»·#¥`äÓ*CؤÃÅ» Ÿ8N¦a–žˆîhqêbÓ­éÚ+½W«KÙäs¶Šê–(ÆeæQ}±JBHDb4R„ìaþ|F±ðÝê°†·PAXú-|z÷ÓÇŦa䑸r=£ga”{±}^&“”aìq&¹ŠSż®èšß=ˆaÝüÜû¬CnœÇ¼dyXç©[çúöz‘—$ÌŽÌ °‹ˆ/£ ôí 2Ív™ XÅì×ÔÑ%UXÅ~Õ÷·OH2 £ä|Ù íø©Ìad¥\aUÇnöÍõÛÅåaqÔJÎe%¢[¥E–iúÈIaÔäj§½ê8ÝYpà9JH¸¦ŠÓØçË]zr±À »Fj®1Ðû¥!±ÈÇûLó:Ìk/Ì›Ÿß=q„Qy傸Â*óD>#S¯%†Q3Wqb®¨ Išq8š?Þ,2ƒcÏÊ,Îv}œ¨¯b˜9&ì@€vÀø‚ªP%A…VC‡”ÌÒ$ìà=Æ-Ödh`°åN?‹‘ÅÓÃï; ærHîäÀö pyæ€Y[ÛvIöq ‹Tõw=KÆiõ×®¥n“ï¹–:Lr/r¹€í­á$ˆ»ó/¨I4ÿž¿óμéx_H’weXdÉ©Xç"çQ`õƒaýÎrŸª E)¡B$çÁ#!¼Ëæñ58Œ}&Ü-Ï¥<‘çùÓ‘ƒ?7.à7Íþž§:5/Рæ–'vrî¼ðª_<Ç¢¿T~ÏyeáÑu;!¶Sã‚§¤Ø¦ü›ò’yæÍ½3 åh„Ã'äoùnDÌiðÉ••a´ 8LYÕ1\[åi°Âå¾²à8ÈŒ”¥@ÐDÒwÉ£”•c¦S̓7óé6\A”~¿Ê¬Ñ-4ºE`&¹TŠÑF«wkA=ì&ËvrZ½uï*Ÿç ™ˆY²O,ÊJå–4Ö-ñ‡¥ÛžaÛ~‡é®G2lÌË !QíJ¼˜.ŒÔbtË)—–e_ðN©ñÇdW9vK)WaWƒ”z;_ü]ÌXHÆSò»¡õ)Z¸lçrQ—¯.è—H~–Ä%sï]W(€¦Ï ¶b¢Rªª]T‹9?’¦Ä$dNW˜:‰-škb5iaŸ®Ú“"mlp ­ŽÅuÌ9k¤âöÀ: ¤ñ¡2‚f’V”ÍátJæk8©ýÃ-Žü>çöaÐ`¦ÔɜǺ&×ÕÆt`J}?uO`§\ŒÛ˜#e)•Df!`Ó¬X T7²_2Ì—É¢ãAaçÀåðÁR âÚH0cF_“‹\Ž-È@ÇÁÜM£¢.ãÀ6±\Å®tÍ_f¹ÞBµ?í´¯am~¢²˜³×˜$§ý¿á3†crf˃Ÿÿ÷%Ïq"¦â±NíÉæ‘àt7uô¾pÚPâÔKµHßoÑR¸ Ì3ó‚Am°>±X`$ãGít¼6ÆR­ -æá^Þ¨f(2QP2ñ@É£[ÍÞ=Ê;”ú{6ÈÕÌ &•!½@|©BÔQÝ8 vªÛL`»T Ï©¾ö^>R&DÕzL2,¹B@Åý³2ªLp§‹xH v‡!.Ýû¨PöI³[a‰}˾uæ%¿Kt<ò÷vKЙ^’çç„þ,žSËàLÔ®…[÷8ÍñÙU„ól§.C®2fà3¨ Ð9¹Ášô Þué!uª¨r›¨Î…Ì6» ®‰#ÐÛtîùFÈ­M öi¾{!@–Y.½ã1 ¢vê@#ßAïEA‰‹Ñy’"‰·Y)ȱͦ©³Y|„hu¼e‡áïV€Ì_QŸ~\Cu^ÚT4{‹•çƒn„’ÿ†ÇEE<žxœpml³SfÏuXŠ#¾§W»vOY؞ݸô¸<:û“Üg±@È…µdO@X ÷ÙŽ=q)o øÝ²gÁö£}cU,¯Q0Þs'öˆNöXÊ£!Ž€g²¦ƒoýòOÞ„\z$à–á.ÜÅö ×@ÒWZQiOÆrGD u×»IJ¸Ð’ÐQÖÑÛ¨¡•N+›áBGœòØáö ¢üaÙí9#©> stream xÚYK“Û¸¾ûWÌ-œ*k—Dro¶7v&µko’qª\Ù0$$1K‘Z>üø÷éî¯AB#Î:¥F£ô»[ÑMH¿è¦o²$¹+Òü¦<½Ún0øÇ»‘âmqãa¾~xñç·ÛíMÞaÝ<ì}RÕÍ¿ƒWçóí&ÎÛVõ×ÛM’$Á«ð}÷þ#Òàímž½µ˜ýØÑ†,(§“moi0š±îZlù©.m;b”íâ]°Ëoÿóð·y˜o¸ãÿó)Œù·DQt·»Ùåé]”¤xΧÛ< ºév“FYp2|¿o˜”ÝÙ›™¶âATõ0öõã4Z,ŒG‹yfîž™#Àu‹¯à7LN¶ª§Û(8Ñ×Kˆ¡5‘ê±^v§“íËÚ4îèzæ ½t%wÑ—o»ö“žBĶaœûŽû\W–ï½ã{šÑê#å¾îÁKvËËûúpt/!pÛ„?(6²Ë–mÊÒ¿gä.Ê[IäE FQ·ÌqÍÊI`HÏ"¢iÌÇΡ+~3ØôºÞ[f£TSÉ\` KC°šzk-oJC2Y­=Ü‹‹ˆ$H¬a…ቩ*Äô@:ȇ%˶Š5+üÌ/DiÀ½ìg¾·Ã; ŒÇŽy ÔöT€ü$lŒ&;ðÀÞ±ö„‹3Öɨ®ájzóé‰lôe¶däc[—†y²£íÖ S/Œß…`ŒÁµ~í×’7M{ЛìÝUðŽ»µ‡Üó›·Ér…d›ÒÕ|ÇžFênxÅ»1ýÁbhÛn";•±Èb:ñ5Åé «i[§§(CŸž˜²gFÌLÃ*Ê£}×4Ê6™C4D‘½–›^ëU­~°¥s÷i,,ØÝ…YòÄÇqæé.}p5–ý #̧E0µ•ØO¬~ˆQsÒ‘Þñ–ípÐEŠ>¶RêàQÇO‡>(UãÎZô‚¾7;³û~$—GnwEª¤{çÆá3à Ø¥ ÿ£œØDÛ»]¾½äqi³#3xóá—O÷ïßÀý{°ðï_½¸ø$Û×v³BÅÙλ;MÎÝu8꤯a´Â8­àñ¯á6µ}-§/‡.ƒ¡:EA<º–cÏŽfáè³'Jx‚tf8ééª÷e¥#Á\¥/YãEïsÑ{& §B{ND„4çû¶€Ea¨;EÔ Ò3VâøŸ`4sx¢ÉÑhGoŸê~ÝO½ñÊbg{¤w>p†$€¯¤ã y@’{:Çxò$˜eFÖÜ–‡D¸¯ƒÙ¦ C¬îŠ¿Xƒ¸dÕô½ËøÈ²±¦géñ"8BƒÆêÇÆÇ㨹AŽ–ïÄQÈm^úu(IÜ%ç†IÐkÔØ¼ñŒ7ÄoHdö³ë`0Ò ìÝfÀaXÞ±ËÙQJ~B¯¸ß®Îò/7Ÿõ¬öÅað¨”hÂâ™G˜4 ^Sü_Y°ß&a¨%øÂþXó*^wì(åqxt½ÿ†å9Zz®JµwÛ¯=H‚4Ê”Íj³ÍÒàÁi–Çj ]HWõÓ… 1s"èï˜ut?IÂŇÖc£‡~©…[¬sXÍ88s®[ €ã¦ì¾ÖA²@äÊ eÒ”÷êv¹H’+WΈâªdÛ|‰<¼tZüuŽÌŽšÑa$¿"Y/´øânI~msI®QPÈI°¼[÷~TÌŒ¡‘Ë(ÈIÄ] €7õ©‘Ôfš;.—‚‚ÓÑl‚m#J .L¥s':‘ø†‘Ȳw4<ò¹(êLd¤Ë+[+‹BWOÑ€3©•š'Ε„Ù’_Hr³Ój±¢^wPš)Œ¢¾*ƒG"}rÔ<3 VbïµBÑë5×+Ça5kAâæ 4 T †[ᡤQ—±$%å'ÍðålÈr¾ ~›Š§I¤é08_RWž~\ ÚóŸ¥®j-@é’øèc×ë‰(<„µ1Ñ\×F²{ô "f¡ÊÎ"û’H¥K7Ÿ'®GÕ€¹\”.Ý«$ÊÁ_ÊÇõgõŒBV æ„e£[@H/ÛÒ¡vøzí~ ¯õSƒcedéNgq.•3¤t®afEÛ'®ûçý§Ã·œÿÈP.¯u¶ôß–T;[?øñþíý›Wì:î?¼ÿç³Ý¬¥7˜ùÙ¬ðÂ7ÏвËÃËŒæë?ë_5§¥Vqÿ%忾“’—åš”ÆW*$ƒ]ÛqFÍÃï6D…vº†(Gjò'1€¸> €—Ö¤«¸5¹žü±Ã;´ G£%?M¸ýÎNÎ:\³!6$ àž—ðyNËz°ëÍNý‡zùC)‰#§j-´^ŒT™w^H‚)ñbÓ¨½¹"›}×(X”·´–6ð5¼¨BXèâ1áïÒ$K]7,¥tÛãÜb2µìÌ9I\ñ˜—ÌÔt3Î Á»”‚´ “ì†Eÿ€þÚÿ™3ô+ý÷QzRip¯fîZ/aÊ‹“M.ºÿ4«ºÙÚë"@-=ˆS×ÜŸÃõ› èéÕrCº]ž_Ú÷+õ­}…ô6_ÊêmÑð¾³9XWûR *âÙj7ƯÆ/»1RCR¥ 5»ºo­Fi»ÑÝËY¬ TXß#“—ŒÜøO%Ÿ+Ï(¿K£ø;Ýé¤FN­"G8‹Üÿ~<„J±ñÙÏ5j~š©‚ p a ²@)E ”ùzJ½w¤m¯¤¿€!2‹ç0&YŸþóþ?-ƒˆ: endstream endobj 623 0 obj << /Length 2528 /Filter /FlateDecode >> stream xÚYYsÜ6~÷¯Pùe9Uš ï#oN$;ÎÆÙÔZ›T*ÞŠ5Xó˜Ùú÷ÛHpDURó@Ü@7º¿þ\ùð ® ÿ*‹¢CçWU÷ʧÖñአÿ~÷*q{¸wF~w÷ê›·Irø‡Â/‚«»Æ]ꮾúÃ{s:íöaÖ_wû(м7ßò÷ÝÏÿÁBì½Ýå±7*ŵ›&d^uîT¿ƒÂTNzèyÊOºR½A–†©—»ÿÞýøêön>a†Sù²Ð^¥y|¢˜Å¹gaà4qäµÚLªÆrìéžÛ¦£â† sŸ¸Õ¨J„€ž¡¹JçVâÜ›>ùIpØíã,ñ~ßå‘7œyFWb÷Ï:u±Ž);)Mzjw'µÒ š@ì}‚„%)Y£§Q=êálX÷¸¾ͬpÝð—÷€èt_¶2û|J8ª‘«Ã<ºœ^XðAs“l(Æ1vÚà˜n÷P$9|ÓC|Þï@!iêƒ Z;ñxÉvQ¡|‚Kñܧ|P×\-|ÏÓq͵]CF#»aT룙¡7ë1rKzÒJzFeNdµ0VßÛ40å™Åq´Ï§8jÚ%%Íá—ôŒ…Žm¢ÖŸü ®È ÷ ¥­†~p‡¢=bã¯èSè(ÞÚ1XÀ;<<,`öð &º8ýEƒ©„‡ßV•FЏì#z¢Z™QÀ’ÐÉÓPŽ“¢Eé¾Ò'4lI¹ïbpøÜôy8€_¶²O[œ 7leY,¶jYêXʬF}Ù±ï¢N6$«#‰a0zâ5Ûùo•1³;Ê­åM-ð^ v—§Ó8€ýñ…@Ãú dÀØÌárC¸1 ©m{8mRÿ¯¬f <äk¡~ ßpI!l­´½u¨ÈÊ, %áZî·"÷û¾jÏ5AgÀÑuªF‘[4z@¢™ÈhüDNm[{B³ì)+•ÜØÚ0¾ŒàÕ :èþÛç•O`§h>••—íZ×:Š ¿ç¤3üRœ¤â¹]cï¯hm¤¢y}Mðèα;ÃmŒJ¹86–„œ åÃ4N9Êö`Ýì˜ã€úúÒó%éþÂÔÁ<;® iyÎâMP–ÕU¾Ûô¦0ñùdðå(¥ù>°b`!.¼æLhLc á0I Z ®þ¸K º‚kÌ@]™ø^¥ìkn ”Ú÷ϧ;´Â9zº£ ú:™5‘xImÏœýB9ã›cQc\xÄkàYeoC˜fÙ‚UPT©×Øt‰B6ˆð¦ñ!ŒÃ5Óy¿ƒ‰„M,,|*·–Ž´„ÑÐò øªðÏ×èyI¶±…S,P¡a)ß6–µzާÔÑÛºbs€g+rc²³çD(ð+„‹âÙ¹CS‰—DAˆ D£© ÷A›—9O0Ò2· ’“úùŠƒúÅÜMžG1íí>Y »F†¨Û_À°¾P´te!îžzï›yø(£´±ñA(»›\\$´¸éæñFò°ßÄ?*­€h5*Ž\PL}óй.håu¡u²VQ§!ÉÊ‘)$.æ0éÂÞLtï·id½£ìûœòm$'¨&`©¤ÿŒõÕA¾lºÅÂ~ Í¡ûàĸ]ÏcØ’‹”-—f«Ž»jeªQß³ð… 9Å¥ÆÆU„ Í&ž#[(ÐýqÓ-L 9ÃUý‚AÉ!Ò5ýø ØC¡W®D w?sc+šæšï ™qc}a ¤’×ÜÎ4V»l°ulf‚…‡i^½ª˜.ã#…•Íõ4´âÁ=öƲ7§rt˜Oè‚iJêl­4ÞÈ®g¾Æx cZý™¤ú¢Ì’éÁ†Ú q¥6Ã3V@¢f6Z6ÛÔSœ["˜¹V5'G6<°6–s•2ì¾4 pÔR³»£2²'¾ d¬§Ì}¦€ÝZ`“5—>®¾v»5܄ẽî:o8bÞ+CGi”Jü$¬àÜQ06¶òÂ#;ØDª™çÅ8!³bËTl;etP±HSoB8ê°ç¸ņ¹w  •£a캧ó¨†sÿÂH±™Ÿâ Õ65ÀOY”üÊ켕k\,Ä”eôÆñ/Nb¶ J5Ú4tà¾Õ£JôÒ£ pª Y#Ë?YÞÒÛõg\ Ê °rËp% [ÐbÞT8þsÏ”ºæä–ã×<Ô.Sn Ÿÿz}ÍpÁSSK>¡À(oyal<@‚ X#ÓC‡åœÐ|ZoPEߘɕ©I{9â|øÞWRŸ(šb‰ãK¸$Õ×=Û¾W ¬2ˆGçi5œŸ½¨Z¦¢õ7<:†p6ku“#ƒ®ª¡ì<·ùq±&¡?mÇœ<—d<· ïÉ,€ÿ§+þ] ÿÇsgæ|Ç~ÄšYuÍõxž¥™€œ§¯mbÈR8¶A‹xžXðÓ(æÀûÎüq¦_ÐC'€<+Ì, 0>ÈÃ_aÃ80}ay[½@Ì+„qá‹`-¢@â›ô0Ä/˜ÃB ÑÏåÌt[¡£õe}˺Q­²/E³cÅY-»¤™Ð‚.yÛ×@æóz`ÝdzµaZõÙz©×‘¥;»±ðг„¡CeP|YVˆEà‹.Þz}ŠÝ×§­¤Môñ³ÕÇÀÏ| óÎI#>FÌ‚Šú q‰`àVeaò" 4^(Z6•È]d?ÎJ` T¢«IXz‹n,Ê¢{\P ¿ÑÒsXïä—/$ߨ%Ö½…ÿ¢¨½üäæîñ†‡ríêKÏ6U[ê®Äšç!Ïq—â…©$´hé©å‘é½N“ z¦Ö` ×8„B3 Rî»râw(h5 Ф’á[:ÿ>Uv%ùwJžËV7O/% ~‚*úºåáË3è”4aìÆªÈˆý„Ó;øÂ \J;?‘i%SäeØ}A³|¡;žÉ¯Z †²<.Óâö"|z·ß`΋#ØÇp² ¦>ú¡çdªfè„ã2˜ag5ü„kâèE ‰ü³_½e‰`` X<ñûw¨A¶ÁfÚþ;A)ˆoßlù{ïÿ®´“ endstream endobj 628 0 obj << /Length 2581 /Filter /FlateDecode >> stream xÚYIs㺾ϯPÍ%T•¥âžœfñLœÛU½÷*•É! 1E*\Æv*?>½\Dû¥t Ð^?@ÞÂ…Ÿ·HÝEìûë4H»Ó;—¨õaÁ¿}}çɼL\ f~ܾûã—0\xî:uSo±ÝYmóÅ?œçórµIUæúy¹ò}ßùð'þ~½ûóe™N­÷>W° vvÝI•Kh´Y««’—|Ó;U60Ñ‹£MäÄîòŸÛ¿¾»ÞZ ÃÍæÿ< Îü³xž·ŽQ¬=?àã´º-TÂ$‰ÓVøMö¨˜Pè¦åVµç¡8Aâü\†‘“Õ:ãóð”ïj‡ç^ºœðº­Hm¹þázÊ™øë2ñU7°îÙS4‚²j¡»^®"Ïu¶GtМwåùk/œôyB:’zl)îäp]îdh_W'6OFGzaròÖÜ$«8»ÞV¼ÏÚJ¯Ý4bþŽç¨ºå*ˆBç” Cìdy. þ4J8bçš¶&¾2ëæºÌ«ºQä-0Ú¼¿‚±4qÎuEÊ×¹™­[þî*žšiT?R@qG]¸óе#µy,´šì§$KÃ÷‰UWsï–}x`= ¬‡ØµÿÂmð‘}¤ê&œ³ºÕªù゙ê9; u…½Øi ,”‰Y²\š[ÂÍ´­Ôê§VOÜ®ˆ†N—µL!÷£†zÒ1k¸!Þ[Ò¢ì¼ôXÇ1#¹™ÇæÄv&“«ú•ú?É4ÒLv̺öXÕ£ÙÍÙ W¨ÐR÷^Fú‡oÆÞ j)ó¬Îßv;ÂúïyìvHÍøsΚÝ9;(&Ð6ðíμ€bú(ŽˆKô'rƒ:o„]#ü¹û¨ÅûVŸØ?QD³ä"Ï-Ù(/Å‘¼¡H3šB7iìlBþÃnf¾üù˜íPŒÇ^¦Äa‰G2¹e,†‹1.¸F8‡Þ`/érÂdš/=|W˜ú6s_hج]*nôªKÅiàû¶=`Â+…‚ŸbŽ!WÈô—ˆþâþ€ÂÃ7<üÛ¥}±x$å wc Û?ÜÐ¥„íöXWÝáȬ®³ò0ÊN@=e9Jêú–{2¿påó@C™ ˃ 8h4€¸ºÙ›=eæg6‹T鄪²-j•å/s'‚bRt9UžxCûŠG$N=8‡S_lv…±&;)&¢k‚¬çR•¡ŸZJÉ `Ñf<Ð&%ió€ÙÌfåøB«3Î'N¢žq›2¡%©Ú¨–hýþ Å‹3(yX‹HiŽ˜“§³b/{,s®;æÑ{t ¨ CÊn¸EIûϰÒC—ðœùR7Ð {ll4V«s‘íÄÖ,U‘K£¤úAC‚Çèøg€(ºåž£ú¤)ƒ±ÅC†g,S\ ±×=@*9ZÁrõFÈø†ø-Kæ“d³5aKy&N¥þ`|5%D¤Ü +Âd%¶Xp6fâÉyÅ_² 6Œ—ñbÝpËâ[ìL!d &ª›vµ#8èSØhAg%ø¡`>Ž*¦3íz‡ŽU²Îð„ì©êv<¦޼0Éb# >›p®)ÏCÔ8EG3¶åt_yá:J±ñBÌ÷‘ë|º¿ýxsws÷•ù¾ÿôËíõÝö;­œ[ØP¨ÖÁ±³Ã€?‚´Ó"ɺ ¬ë"ùI·Gn Æf>½Ç4̬V…Ê-çLéÊÜ,bWÀ–¸ÂÕœvÌ/5¢¹6ëSÃ4AI{¡‹%¿#„Ž„€?'—ABeŽä 8á4½‹ QR/Z¨ÁTxSÄíd‰ÌLJ¹t[© ¨,)ÿ±)ÿ1¨ÚÚ€GÍŠ‚~vzL®xtá’Œ.äkV¾Î Àèv•á|jùæËL”E¨É“D%ß`"ÊQ'n± Øhøk¯áø048…àüö· à”^gJvô÷È=ÆXðm#§™ñ•òÊDqÎi•튤¾Tø”¶!M0‚’x4ÉÈœ‹ç7UTYù\&1ÀÕ_7»"Ó'p«×“5¦•ñ ‘ÒŸ{¥2ôª49jpë3CÄÍ“˜?[ALÚò$‘bÑz¢ˆCbtE«áfÆp~Q;ðKwŶ>xìàI Œu7ŒWsèHιÇÉÇ Ì#¡ôPÈÔ ¹€Ê!Y†ž@9ÂL%³z‡Éq`h^ÜG:f B‰›3‰¡’JitÕ&…‹õ¾X‹õ' öÑÔÅ40üå½i&,Ãò£Ðzò²0Äúß ‘!\€ÁÀ Ûí²Ð5ˆpäž ºXªçÀ^N‚/3ŒZ¥`[ßrèñ•MEJ ©˜‘¹+—6±h#6A‹-ûª‚-Ã%Ý]žÊ+ôµˆ_€® $]ãÀªÛtžŽž‘¨Ü©zÍõë¶·Rl¬„[Óµúd8æÿêšv^ﱑy'ˆbf`åbûž…³(³ gKº$áÃ÷•'9œpŸg`^уÙÛÛBôlÞ¯ƒtÆ-™>‚ëo`ñÈ‚÷hÞé%š¶C²½=óliè2×€™; ~ž>k%ŒðD³¬ÍÒ /“×0öæÞOg@“ Lñ»{l1¶waO =LÕ²X|nz<*"Å£:B×½x˜ò4élFö=ðáHÇêØ¨;ÊÿØ$uјÊ7| $m¤íñq¨æ¶<÷á[ÄÚ‰‰5ñ_ndù*~'=Ž©V’Yõº¢—/3y²ÿð³Üówíïüu⃛+vÔs[gôMrÀ„=„ñ|.Bóú‚“->²‚±õ0YIìôQ­Á)^ …!¹3¦ß¼[Í>Ó„È{ïÅ&¸ŸG…ÖN㉻àøàÉ àK)/ üôK/Q{´&üÍzRFeä²hsöÁùB“W\tX5£‡®Š• ¶†ã5ÜéwÙ3ºS’††qhŽœ×ÚΕ]£¡}}`ÆÕF 2%žþ;dð•½É]œjmþ\ýe^þ§ endstream endobj 633 0 obj << /Length 2774 /Filter /FlateDecode >> stream xÚYIs¹¾ûW°æ2Í*Ké}ÉM‰5¶<%3åJer€Ø ‰r³›š¦õïó6ô"µÝ³ˆ_î6X‘»ûw·¿Ý®£¾÷¦}ÁiŸþù_EÙu^f+Ðæ:¬210† ~w-ƒL7·@XÝŽÇûƒfÂÄ\8¡Å zæé,³˜Þ1¡ÖÖ|[gy ~CÛj¸˜þ s`a™æôIYÕkPm-«µµ>ÑžàSqi±%×Q±"uGŽ?‚P¸Wž±Tð½ ±³_Ý[è ¬;'s•»ßˆ½!5ixÇ_v}gÕ^Ï—¨ë­y<‹ù€rÔµ9ýŽ"ÑV5®—tPwað;ø_í÷VïÁ?1ÍìøËž€Æ¶;¡ŒOÖìÞ @¶Ú›Þ´{îî,zöÙÄãit2.íøÛv²ÆÙéZ&uümÌÑôã:SÙYôdmÀU°@yûhº¸Ša"D—æöD†Ÿ… 6µŽG9‡ŸÈ8~9¨Þ/¤™±a¾™úìw¾à¶ècîJ)° :¤Q ²9@p,žVLãøµðN㈬„,¦Ý6ç Ä=U-÷·ÓÓ4…•y^4d“hÕ²&Yž–9š'¦¡é‘4ÈÆ¹² ýÚœôFª—8<eâñËÁlqÆAF­°‰ûQf}tº¡ ”…AÉåLr¹ dÒÄ䨥4÷^(¯×ƒX…rÖàC$­Ä³Yü½Ã=x#ˤ >ý½gN«ÿw6Vûdg–N–qzËÑÄ„iè종ÍV=6Z¶ì˜ÞCpP[ŽQ3ÚÍW|¡×Û…¤è1Ü`^FÙ§¹Ì»Y¹*HäsÌ×hç˜ÒTË´®•¹ÕÈr,Væ—Í1‡±Â: Ç8OFÆwÏËåϲóÜò Ñæý IvTT…¸#‰+éר­–ä%gÀwëW‡rne…^¦[E‘ù•vïý°¬·d2Lz8LLûŒw¦wUQ‰ö :é"Æv-$ÆU胋£½ éÞe6ªQ²H£]¦úeúÒÄÂçx˜Ò÷ší»Î¡\eU|ÂŒ¿§yÄÐÌý2ØŽ¸ÇÙI«“šÊ2Ácš“5, —ø„t)¦ºPúªž[ì’btÉ,»/‡®a™hOotÎñ«ÞL/Ðlnî?ÁÌ |’O¢ÍªÖù+MJ.ÅðÝv­3P™¨'ÎHþjÚš[è/üÙµù=ŒÒ-­„õòŽ9ø¬9 »B•Ÿ¸3œêšûý([Š%ڳȄ…8@òàŒ}ÆÚÃaå¸ÉËäW$©gHHÁ‚U˜Œzä¿k9$nY£¦;}æé²0¯¥3pª×UZ 5VzNŽÓ­Áã)ap¾:Çâ‘¶@+c¹9Ç*”ºi'P×€ ‘e)dÿ¹gîÑÐñõåeÀËAŒ…í™W€Rqm„×µP,Sqã®åÐf3›¡á{³Æâ%KR™ÁêÚȃ[w<ÊÅ'Ç£ØìMK È>³~/ ×pJt ¯È…\Þ—hŠ2ø7¦š § a‹Á:8K1­Ÿ&Òǽ©*‹ „¬i)(Èd2‘rI‰f7¡è:î@Ê´aãE:`&–1ï… ¬ïw¾àeMYë y‰ë·m”9r¥%8–˲atF›bÖ©—a¤®Õh2ì°¼I5ñ&önÛ}cÜ;þ“ÂTI½©<êƒÖˆú°>µõŸ¬ç†ájG¡R¤£­“"wµmƒGINåF¶ŠgŠï¢†) Ê÷Q!Ó#§8Ù`¦Ö²ŸÅó ÂÛúUŒ@uÆž“po€T£jÇ9‡Ã…œ¸¹Ph åµø«˜›­1mA]U^BÍX–bšª<÷b î_†ÌÉjNNÓ¼ g“ˆM ŸY G‚‘/K-CäC•£ ‚ŽQ]ßС #xC¼a¬ÔÒù}¡ýà<÷ê•Ä÷.¡|æ d²,óÁ¸«Euöé'‚Or@Ååì.a“0 é•$ð°ˆ)P#nR„É¿ÁY¢­w8Rè©Y6¨Ûdµ©Å«‘OhvOuâdðBýă"ß’>|çQí^îÆ£¶=Ý!‰ˆ’üÀTÀÜ>üzwÿÇf¬Ðq>©ÐÐáû^"ätDNtP<,»)Õ›±>ÇâGX¡Æw›¦ ‰•‹á’õ÷­>I[9–ˆ|ø}•”oB®yZ ÿY“ËÄÉpá^ÏÀ^„ÚÍPÕaHõ½>žzît#Ê¥:þ’UÐXpÐe:g«S« ¬"7”øxe—*Â7pzYz.šš Ün7žŽM~2õ[¹'SqEÐKH¤sß!³$)|µÊ/ûD×ã³åÞðT#0[ÌÆwnãfŽ‹…åþ2”L)X(añ .-~J Fm5W|ºÌ4Üøfº¡`g|‹D²È­KÆLòPn´8I6±ò! ñæÁ¢}ˆÇýÑœÈ$À–„ä Ôo¼à-¶òâ±ÅO†\ðÄ䱘<š‘@‘a<‘¡ü`„>ÇÔ@@4>ª#…ñNœœÉ¡/îÐ4vSybN_½XQ.Ä&Q5FÃH™GRüóq*x›¸&Úa‡v¦÷’hú쨢Ò#ª¨š"ª0¤[ÆdÞâ%‰êo6 ‘(/¶ôNOŒÞT5÷)ãRÀ*R–뎌•‹n ’‰'™GÏ1|S‹Ë±:Íå­¦äÿÔHûòÔ]¾Z+œ: ä¢?2UïØÁƒò?ùÛeòGì'ÿi¤“„#Øç³Fž8þ{,Åÿ®<Œ¼öÿÿ¬ Fé endstream endobj 637 0 obj << /Length 2236 /Filter /FlateDecode >> stream xÚXÝoã8Ÿ¿"è˹@“Zþö¾u{¹¶]`Ò¹Ááæ[i„qìœ?šéþõGŠ”­$^Ì¢@-QE‘?~(báßXäþ" ÃUe‹bÿÁ7ÔöuAƒÏŸ>æ[ãÒáüõåÃíÇ8^•û¹X¼l]Q/åâ?ÞÝáp½ 2OÕ¥þq½ Ãлû…¾Ÿž¿à ò>^g‘×*E³¿7°!õŠa¯êkô²×MM[~Ó…ª;`i$^\ÿ÷åŸ^F ã ø‹WAΟÞe%‹$‹V"Œè:°z½LßûøååËçÒêóÿ׿?¯é¿$òË?׬öãýÃóú•]b%¢ÅR$ 4'¡/;¸Q'hˆ Å©·¾^³íÑÇk0¡l]¶f¨K¶ ÒöYÞiçaØTºÛÑJ­Ž70ÊRü¦;UÏò«¶ 16[Zé­:ÆA'zá"\‰XòÆ]™uW6¹+&w…±ð¶m³'r¯÷ŠGÍDÃFyî­‡Åìh”§Á©ºH9êª"ÉB‘;½×•liE³"ÝA·º?QŸ´7 ¤|gZÕñEˆð†ö§ƒÁŒ!˜q3ðÚŒ3·ñHí©Û'¤ÞI0á¨qJªf êßXºñQAãZl==× VÈ!E¡½„z}FŸóÆ)4 i<˜¦2’¬¹íÅH~§E9ô»¦ÕC?9M¾â%ÃñjÀvvb©±µ<¯1(ý4ZYdÁ¦=mVŸÝ÷(qÃý/±‰b |?›­Eô“i„~Þ({ÓFü°ŽbÓFàœZB ¬MµÅÑøËNœ$1»í¬¬ãš®i©·jt£hBîŒ léÄ› ®¿ÂÖ_1æÅ`l =§Ž@Ø_OÃñwOÈþL¸^‡Ž÷ 4a~C$§•,ÏNçêomF÷)ë8/‡ÈM9+û›ßÿuJZR endstream endobj 641 0 obj << /Length 1335 /Filter /FlateDecode >> stream xÚWëoÛ6ÿž¿ÂØ—Ê@¬Š"­G÷)Mš¬ÅV›»/ë€*s•Eƒ¢’ø¿ßzø‘-ñÈ»ãïž<³Yl–G³”ó0Ù¬Ü^Dn×<ÌhñûÝó| `\L8߯.ÞÞ.—3…y”³Ùj=UµªfW»Ý|gl*õ<_p΃«wô½ûü"¸g"0Ru£A Ên+›9,la•nHäWUʦF–&q¤|þ÷êÓŇՀpǯ49OlI“!IìmI22.¼-77>ß|ý ñ§Ëà=ç,x"ÂjúvˆÎmlTK+=g?Yü@$D°Gº3tT¡æm‡…mÑÀcCX²Ø»x5Ïxà®ÏýõY4\Ÿ>ÃmÕÐfA$ÞÁñ¾ÎKÛ{\ëŽX7R I;OFY+›K r*˺«¼þ‚8J½Cþ=QzÝcòN€õYTv#Ñ^g Ù’ì;r¡h*J˜]j-­Qƒ;]ëºÖÈý¤š:s ²`oÔÃæTê07ÚÙÒÉ?]ëõkK6°ÀÐÙp£U¶öË]ñ ßQä8›eaž$dz0fÂ'¼q×zçþe¼ ¾EËèþ1’†<¥Ó(L¢œã÷² øƒ½ËoŠ­ÛžÉeû”û}QþðÌg08ÑÐçÙÕ÷"1”Ð4y|ƒ¨zêH¦%+ˆ€ayÞïß1´g`½&ÐoÞ„çšç"æaœ‚º{Nê>‚‚gcß‹”ÿ…³~Mðgˆ?ìëü ýÅ”ß endstream endobj 656 0 obj << /Length 913 /Filter /FlateDecode >> stream xÚí˜MoÓ@†ïù>ÚR½xg¿¹*¨ q@&q+«®¥~=c{Ý8ö®³‚ mQµ“w÷ÝÌ<ž52ü£‘É"Å1\G«›EÖ~º»Šº‹oÔêR¦åËåâÙk!"š“-/‡S-×ÑçøÕ¦^Û}’2Æâ‹z]Üá%¥±âÉ×åÛÅùò~z¸ŽF9Yˆ’U¨àýB2M2.Æ QÂ.í»Qœ0.¡•f„K4àÉL7ðE§ƒH#e;·Qô—¬SåÛmU®ò}¹©ÓÛm’‚Ž‹Uù%£|…–œÅ«ÍͶ*šï›{ˆ/¿×«æî¶›^¦§R`j;õó$¥ŠvÿàèŽN¾E´"š²H \ªQíÕé@ÞFvøÛÇS¶KÙÄÙ(’ u¶ê‰óqv´!‚áœÀ gÔæ5(=ý›¼^w¡/Ö徬¯¦W8’ó?‰{؇ÿÌ€I²€p ‘¤MèôÉduêt Ÿb2š²(õRhÜS22vR"tS•Tç|DIFKÉWe]8žTȇ ŒõÇàsˆÁ@îÅ ×Ìcjl1»1`Š0m|1‹¶°”5bWå¯üP®›J^g »"_7D8Jw&ˆýˆð%aF'ÿ ÷'ßjÚpoòûäÏãÞ/(ÃDŸÐL¼/vy»åžÌ¢B©x\û€/Ý6N¡é>Èýé†Þÿ¬÷é;Ÿu®‘ eßÍ?ëvKº.«Êâàl Ú úZ‚¿àÁ‹KƒÕW…â5{ñê5mBÀ‡W¨±ÅkΫ x ꀌí•»ý”.ú?53'“>›6²¡€ä~@†ÉòhÜ22>®? ¯ÅnW*,¶½w ¬?‚h»Ö›}~´%%4öíJ ›Mªñû<Î3< Jx?µUôêt Ÿ02žÒ½G5¯MÁaèa#c;ÖÎòC}bÙh_ MK:eˆd“ @”x¼SDeò$:ÈPOÙçë©@׆б£› l[UÖóc?¡â|Wæßªâö¬;œø;Y¬F<Á’Ñž¨ -¹·dô÷)¦…#̆n8¸â¦ÝÉ>Àñ3ç5V‰k P|ÿ.ÃÝ¥ˆ{xâ]Š °öà ¹¾d<¥»/i°˜5ý {†à endstream endobj 744 0 obj << /Length 3909 /Filter /FlateDecode >> stream xÚí]“Û¶†ïý+4Ó›ÝN‰ Ngb'n“i:ÓÔÓ›4“áJôZc­¤P\¯í__Ä¡NÚ:±V;¹ðÆ>Ö+¾Ï9ø"ÓE®þ£‹:_HÎI]T‹åݳÜünw»8þðý_žQ—©À,ˆ|þêÙ/ËrAsRç5]¼z½()%úGõjµøáJ–×?¾úöÙׯ†O*CJêȉ¦ * £e¡5Õ·UA(/Žr/¯ëâê~»ì×»íuÆeyÕlWÇþ¥ÿ¨éÖÍͦ=þÎ7ÛUûÞ}½ŸÝ:'BÔ Á)))ÓÂ?ü˜/VêϾ]¨?âÕâÁDÞ- RLý´YüóÙ?Ž_ÓEEj!†oGáÒ~»ŸºÍO«õíºÿi¯e¿xYÁ%'¹ÔßÁ„þñ:£’a£ÿ£§ÿì ÿB”$¬’¤¢|°o>Q\t„,ð7þHcsA'ʵ$9«±Ê6z¢<Ƀ¼$‚Ñ8Þ5›ûvš ’ÉÊG™ hë´‡A‡– S@GÊ1è²V­‚ôf÷ÐvËæÐ¦Šþò@; ƒpôÈr¸¢‘Êt¬<­û´ìýîÈ:Ñ´KRH~qM;”Ö8løp8Bp©#•‡ ˆ”' 9ႎ2à~¿Ê€“`Ãf€‡3 d1Óà”‡ ˆ”' ©=ÿ©©˜w°]0ŒØ›=£9àiê™EAx!˜V­jRrõyLU®šçÙ/TGY“B%H¦þfEí·knv]¯¦¿úw^æ/²[õ M4 Œ05yñ’†25Çè´ñápâØc3ƒ{œò<‘ò¤mÈ¡ÒfN³\¶û>Û¬·­OŒ¿·×ôêÁÿÞ®;þú}ÛßwÛtÎÐB5#Å'N}",£ M¢DƒSÐDÊÉÊ.„ ªK6ÊÏq…}Ó,ß>4Ý*[¾i +f ü& K+Ñó-p Š’’š¢{ï LsL¥RÙ¥A¬WhQPBË*b»j7mßFˆ¿¿¿ÙÝ÷@Ir©f„¿f‰},# Í¡ˆ§< ‰”'H¸*»¼ˆ¼]o6CÛéjî½m,çÈœ¨>þ7i,Ý“`‘øpIhËA$8åI¤"–•‡Y…®Í°Â)¬"å «¼"U·h1¦Ëê­¬%X¶>fº<Ó[á”¶‘r̖ס…*Ý´·ëív½½Ív¯³7ëC¿ë>„ˆÿt–uèÉ*Y\ƒ˜HeÇ*Vž°Rê¼f Vq/Ö òšP!?Ïb„èÙ‡ÆÒóá0½ÐG¸Òʽe O 5±sCþkõ÷®Úš©m²Cͪ«›Ä5äŒ]ê\þ¿hžkF F³O¡;FgAø4i¢4$J0gÂ.gf„uΈ’T•kœ×ÛUÖ«\©¯>d‡ý1ƒ–ëf“-õ爫Å!ÙûÒúì¢líÁRöá0åÐq˜2RØQž֔˒PîšuÕ”¿ÍîšþU·ïû¦k· ´‚T\>’¶"l­Áöá0áÐm˜0RØŽ„'=wQ!âN ¡Û¾])²‡¾ÍLOî{o ë¦zÒYf¸¡>Û>.¶ÏöápŸ:HkNyà)'—ô¸51fz_àÖô–^[Px³·7+UÎËn—Xeh¡ñtIêRüv¬¬¬.Ôœý’=±º˜‹èHe‡5VŽË‘U\Mx ‡j¿î›Íúc;™Ò.Ó|Ô0Ósjy!žÖ,Oó …Ë©<ðŒ”'<%#un—Eôk³ìÛ.;´M·|ÖÝмˆI«s ¡´`QúpehêLiâ””‘ò¥`j\¥Qfnñ),R˜ªê”Ùÿowä¼ýÂXç}8ì|èÁŒó8åÁùHyâ|IÕüÕ}—exvXvm» Þ9«ùj¶ÖùÔˆ>º™†#b½ÁBöá0äÐnx©<@žQÖŒ‹œˆÂ5”»Í®S£Ðåîn¿iõÞælß©! -Þ§›Èª<ã>ÏÿÈEÎ(F¦‚3 ¬°9#¬A²ZM)«1ÈCßô‡ä†ªà¾ˆ¥ƒõ›>N‡ œHa—3Â:h­æŸ®íÞÝÝ©V›ÕW}fõs’â27 A™`-Äf‚‡3!¤gRØeB$<éÆs5;©Ø ºiv½úòyºÿ%)Êê²êâ­oØ.Þ‡Ã]|ˆ‚› ‘ÊCÌ(+þ´ÖûFêݵ¯Ö‡ý¦9®?¬Wý`ÄŠóïäÈZÂÁZÙ Ö2VØ¢œÖ(õ¯”ëÛ­êï3½%8±8ÁIyƯŒ ¢Ö ,Q Ý…‰"…ÑaMT B›½köN5­ªøã^äw¦`Ùúp˜mè3Ì)ìØÎk¶ªåbÚðº9Õ¨Þ´ÛÛdÌ©ãŸÏÒ¯3Ô>–‘‡…~ÁŒÂŽÑŒ°fTDÐi‹úó}Û}ÈÖ}{—˜?Õ%ÉÏxdµV`‰úp˜hè.¸¢vDg„5Ñ‚“JpGÔL{Þéým×gwmß$D‹ª~š'³ÂÚ‰Í gEHÎ ¤°ËŠH8žQÎ Ö¹ö2`Ûâã~Ác]@Ni|48£ m…·Ÿâd”cÙ I½¹°”Ê×»O’“šžáñ8¨5KÔ‡ÃHCg˜â”¨‘ò„*¥¤ªE@µkouOÜÌ&ð“Û!Îþs‹Ò‡Ã(CSgPâ””‘òxW?—ª|£¤v«ž_›$Ì æÎÌEGbܱÆð~)WÀé㜠éC²*"—D–§&$.: Â'9$pàF/ Uõµ9±âˆ°N…ZªÏT™C+9œíºl³>gXçj»>ÃÚv¦;ƒpãÈÔéZ¢¦ƒTÕcÅ4ÇJá&Ñ–ã›]·þ¸ÛöÍ&;ì›e{²þ< ®ÚGÄ‚òá0¨Ðµi#l@áT ¨H1 J 5Cu§oÊšîöþ®Ýµvd#¯,õDh`ó]–'šm%AýrâRŸB¤¬ý‡Pć˜/EI|Ó|§ìäǯ3çìSíýX[ã±éãÃáô YéƒS5é3£8d~óãNC¬Ö}“Y°' qå„j;˜¼„+'Jz<Òá,:Åùá ÎãLÏŠ fœ(K¦[‰RýÊ\+±Ë†¤²wmw8Þl7lªúÒéwÙóá§Dµê-V´êì}¢X "s9-ýtÕ2}j:ȃÊÏ>¶ü|8\~¡IÓ­W† NÕp‰Ó\ 5š®þv[ÃÄMn¹²¹„Ó•k ¬‡Á†.O7¦°8U6RLƒåœÈÚÜýÝ>{mï<œ_ÂdÇÙƒ…ìÃaÈ¡ãŒ'!ãT äH1 ™q5£ed³Ùÿ$a³Ý¢¾¼í*ë–¾‡é‡(ú8UC?RLÓ×Ò’ôßÙ»`ŸJ\±ö`!ûprè8§j GŠéµ­¢¢„I»¶õõ%›]Új§÷v™y#U]õÝÎÓ4;ÚSïÕ´¦¢§/?t !I^ ÇÎA88vv1ðØ)ÊNº2/JA iû•vµîõ±Ì»Ýu¦Ð®ÚôFùô†1ÖKl>øp8B<é|À‰²„`²Ý/Š’ÔÔf`«züCæÓbÕ†ËÙ×<æwG:]»ëžÙ”á`S>21Ý”#U ·Å/Uã.ClCg‡¾Sü’ˬ¦—´Üál–¨‡K4t>]¢8QvBp@Í •d®B·fQK¼Ö}ð[³?d8€|k,ÊâÑõÄÖ,Vc ]Ncʼn²‚V=Ê¢r„õ­fÚ~Ø7«DO\‘œó§ËPlj`MÄ&‚‡!ä"“‰€e Átœë" |5>hÏÃöfQ“D$)êú|·ú ©µÛ?ûp¸N¯…"U ÔHQ¤Ê›«–7¯¤‡º{½^»›‘FyP¤*yð(¿?Ü7›½° ÜG ùlÚ€¥sÉ2YŽŒMo@ªj–±b²@yÅÌI„ep§œ[Øþó£Þ¸5øoÍÀ"õá0ÒÐ_šls‘ªi¤˜F*)©ËqyŽ/Ÿ~‘µ—»ÜåìÁBöá0äÐqša!U äH1 YP;^û~ù¦ÙÞ¶Ù~·ÞöY³Õ}l÷6q—úº†¡ åŸú]¼ûÚXó}8l~èDºDªógï˜Ԝ:ï÷Úï~½I®1©~¬~ZcJpÈnpGdÒ-N”%ÓËÎ\_Ëëúì—¨-•nkôüµãеւìSm©…ª6×ïÁÐo‚p¸jmÌÜP§jPEŠÉ&Sß7UUƒx_ëë º7űpÆ ñá Þ‘×驪ñÆŠi¼•*N÷O¾9¼öF¢É-É/²t¡?5ÿ|įO‚c LJÃpB§ÒcR¤ª)¦áH}hÌ&Þô7½©©jFŠi¤yND.b¤öüâ!ÄzM¯~ÿ6cº'Æróá0·ÐÄôùr¤ªá6£è°©Nvø'ÔÖfècöÇg}ÛÝ­·%öÈËŠp..i3¦µ Ùèúh°Í }O6¹sŠÿ¨`Ï endstream endobj 550 0 obj << /Type /ObjStm /N 100 /First 880 /Length 1780 /Filter /FlateDecode >> stream xÚÅY]o[7 }÷¯Ðc÷"K”DJCP È0`ж¶eyèR·+–ÙAâ í¿ßá5¸¹n_Ûõƒ­û¡{ÈCòŠo Í—Bt‰]ÉìC!E\ŒÁ‘îü*®cVÖ±¸œFÁ##~5ŒJiŽõG'À(¥:©˜ÏÉU.‹k0’k r¸º$á€!L¯Ht1 $¸˜‹Œ CÜ0ób©ø‹˜ÃR¡Rƒš²EõU%TéJÐLp«‘^r'³FG )Ž 1TÝZADG)BášqбjŽ2áñ†ÇKð!5DNÄ7<.tá ×QiÀ©ªXÃã jp£–‹ã æÙ¥0jÌ„v‰`fÆ/¥p»§£F5|(#V*Ð'B^bø"Å„èËpVÜbNµ;`ƒÎ¬stfpË:3ngÅP9Bg&r Š9°Z&èË]N sàœ`$†es†ÙvÌðŒÛ¹04LxŠj$<%sOYJq‚¬ Ws‚e;î v jdXVýÉàZ c‘Z1V:é9i@êdTÏv,R sVwŠ^Q7À3jB¯4%€³¢ª$\Qþ\:tÈ*¸Ê_°‹F”šŽ1|ÏŠÊkIq^„û&‘îQDyUîgijó¨ÜaˆJjD|íX Â+l7::Ÿ»“ƒ{éÆ¿ÿñ§k@„C¦×ç秣ǿ6'§â+ÜùżãÙtîŽŽÜø«‹ùÇ ×–‡¸dqÕ3T[œàÍXàiüârvöj2w'nüâù±¿ž|š»!¯?_LpãÍûÉhü 'Óùœ’ôñÑøåäjv}y6¹êˆîÒ¯“·Þ<}r'Ái ªèbÞ\âY,z«\á”{íqgÂÞ7¸o#{|a‚/Œ³½=¸o<ØåÛöXÏs•Ï é¡|8ôùÔÁ|Ú>kãx0ŸÜãÃ4”§Ãói}>²Ÿñ“ét¨“.«.š€u¼#º›7¿ºþ{Þÿòaúïhütvùvr¹NU‘30H­z$ÒÚ¼¦‰‚¼‚%Ñ—T0ãIg’WnüÓìõÌÁžÍþ»8ŸÌ?̦…ޝ§gz|õƒZe° êöo42½¯P£ŠGªAçðº3‡ã¤Ëð[y_úÑ,Œf)w£YÒý«ï9ˆ!¯¥ÍFFØz•Úg̓YË—j}S·[X+õHÔ0”D"ÑÏv5&QC¢õS\­ƒI´‘è¯mðJÐÒHô_ìö°›Cè‘8̋͡Wëîn Ý)†„ôI”Á$ø0$bo‰Õýñ&$nk#í5Ñú $FAØVQ8PÈ^B·ÖóÓ;eŒ»­J~{ùóâïÑ?óùÅãñ»«w~vù~|§ÑŽÀ}ûÞ9k“¢±WÊ.–}”®Kß=ihŒÅ<€&6ï‰êv$ZŸ„ &±yy9Toê¯RôÀUŠîæ m}7½k_o¬·|7½SßÞi°½Ó÷³wê'‚T6Ò{e µÝÎFkh ¾¡¸—}ŒÚI>iß.u盬¢?~ôï§×ÝJz6»ø|>y7ï-©‰·Ùá µrŽ}+·¡Ñ‘Ãv+þJæÅIX"·#×o‰ñ[bkB(/JSí/Æb#Û(6Vºkx1FÉÆ´m«ƒªøªÍãBž –šø@Úžºí·JØ®·A|&ý€P½ÀH72#{në[q7" ¯Ÿ–"‹$%îU$E¯ŽºIÚVJkE扌ÑGý”³Š6Ú'ËÌâ5¬—"³²f­HÚ‘È">Ö[Ãfø6–´‘%ŠOM?º¬ß±k r©>Ñ^ŒZ"y©ú¥®øÆÔ‰Ã¶Ö·´^åÝÐÓPÕ&Y'aZò^Ât)né@÷`çiޏïËÂCæÜ—G¨û¼8Öog["’{ ÉkpHîeûÁlY-+°ekì³}$Ò/x‹Ñ² [–±~0³á‰áYÅð¬mÊbxbxbxÖ„d1<1¼jxÖßãjxÕðªáY댫áUë†g霛á5Ãk†g n†× ¯žõR¸^[àÉb ƒ1ÚH6&³ÅF¶Ql¬6^4<Û´J4¼hx¶ËÛ‘J4¼hx¶’hxdxdx¶Q2<2<2<2<ÛˆmÅ* ±Vlç+Vˆï¢zˆÙ§z›V±§ÂÛ¼~±ÊÛfœ¥Ì¼n¨n«ÔÖm}Å’i72 RO••Š%d=Þ+ÏR*³Û\^›¯-í—¦À”ÜVª$Ô©í—& ÎnÝY¸z¬$û•Õ}+¥™¶¼ø+IhW¶EȬV-Ep_)#d)óºÎ endstream endobj 833 0 obj << /Length 3839 /Filter /FlateDecode >> stream xÚíKsã¸Çïó)|´Ä/>rIU¦vSIjòØLå’M©h‰¶Y#QZJšÇ·uËÚ$kK®=Ø+÷è/þ  ¿IÍü¦Lor)Y©Š›åæ]j_ío†_~üý;>Æ%&0 "÷ñÝw?h}ÃSV¦%¿ùø¾ÕÇÕÍ?o¸+äí±]šm{—H)o«v5üòþOU×T÷ëzxåíªþz—ˆ,5ɳ»}üã»ï?NòZâçì#O>hžÝpŤÊDÿA‹’iYÞd…b¹ÇýS¯øÝâ¦`e–©>,e*3oÈ5ËøõéN”·õ·Mµ‹ \ –¹ù6ò7w ÏùðCÌþ?ÿ·‹þYQ ¦¿É²’qõ \œøhË7Ľ¡¥Qœªæ,%UuŽU%dMögº`ܼ8¤J³^'ë¦íó[ÉÛŸR¾O>™ü4uÌÛÙ%gNì~‘³‚Ëɰg죓 ü”zô–ÖJ^¢ÜiÊøHù„¼Ê" ßÕC·7²GÀk¦tq}–£oÔðáx„(DŠ&MyJ€Hù$dƸQ÷ ðåi»®§@œI‚B›*^{`„Gc¨„}8N8ôú ašòD8R>!,L Ã&þeÛ­|ÿ¬Þ:÷ùÑ0*yŽ“œ!OSžÈGÊ`±¨‹Œ¥y9H8_,Ž©¹©ºOÉfkŠÚâvÕü”rU¯l‡°úÎTQ^V– …žÎ{¯2j¥„£¥ž‹9_ëQ…Ç´8'lú­K3vçêý·¡;LVɪéêåaÛ5nÎû÷–/š7†o¼n*>Žã ­Äñ…¾3Â=>U0åfª›ê°ì±=%OÍjU·IßX׸\1%ËkêÍ£Ñ/*vŽcàØ‰Â{$ãZæ–àÀ½nÉr»Ù­ëóeZž1™^x=޳Î$âЄ£C÷ÌwÁQÚ4å‰v¤|B[dæïìä¾Z~úR Ü9êœç¬|1«:¯á2©¸¦hœVàÛX$Ù‰.Û“2•Sß)8T}wàZ5ûݺº3•Ô·d×Õ}ÿü‚UÚYÚËj£X:^1µGõáxšˆ÷¨DaÇíŒp.Uæ·CÕºzÖGKVâm}”^i ÎRócŠÆÓ#@•£ÙASuÉ1W§N*3/•cVþyHŒYG ,´·õ׃)Æö¦€þæçØwüö}Ò^á*Š©hXž“ä íâ]̰PЦQÙåC¬ÈÊ Øy0Þ/»Úܤu2“N\½ZÂÚÁ*Ù)XÌ3”+IvÂ:—=¡*J–fã½–vÛ&Mk°šQüP­“‡m×ZIÿInJ&¸6M½oòCø¾®ºåÓi[ÿ€5ôR2•Ê×q^°,Udä>g>Æ<טiÊõHù{Z0îÊÄ{W®»}}Š?Ç}w¡Ü¥ñ5+È ¢A8ÊÝÅ<èì¸ÇÊà¨.µfEªé¿îžo‡ÝñôUâ)^-˜úÊËC¤”*e¼”ÔR0GkAs~ª@v‰ dž4ãD.]6˜þáKטÉÝf»z~ðOYÎù…¤ÖAŒöP;Žw¡ãøíp¢òÄ9R;QšdÐcùWÒ“]õX»9³m¡õ×ÔŽ$×wÃ|l¶"WL+ò¤0G{cE3„*¬ÑŸ‘ ©Ñy* íâéÎ*JŽ£ MÅ‹t¢ò„2R>A)Só÷ˆä°ÚÂÓ’ñì…îgÅà ×Le7Eãèñµšìn.{ÂM¤ÌM«v]Ó’uµ?$ŸîWɦZvÛ‹ä6\3•Ûs L<Óy’d'nsY°æåyÉ„Û}ú·³KÝÓzÙÏÇí¡^%M»¯»CØÇþ< °Ûnøù>ùŒÝ¢,Ìt½|á÷(y¦l^!á(e34OtKTvœcå9hi~צž™ø!mÞL²²kë®NººêI7‡ä¡YÏv†È¿O:¬ØÕ¬Ô¿â>Âø@7#}¡o23#ËŸÝT墓 ükü–HëíxUû£ ±â RO³Ìû³f^éÖÑzHv„„naÙÛJZŒ†RÓ‡ãi2 L šªM‹HN U²¼Ì]Z¬ºêK²çšzZ[Ž4UË1R„9š†+Ý"“»1qz ¼X,9ãù¯±ø„Á/‹ LJãpB§84U çŒâÄF¬p]æßãSßñÛîTëuR’¶þwÇ…`Be½#OóœÉRL.=‡zˆN‚põü-áu?Kš&*A¸šBU*4øý€µ½K^EšÚÞhµ9ûp¼9‡Ž#¥MÕBŽaÈiΦŠw½¨V«Åª~8¶À¿œ©\^]5…Ñ|£ÂŸ¢qö £'IZòs9¼6(™ëyÃ}Sí¦^2#ìéý”I).eCóÝù@$„£(gÖJðpÕßÞ:qZ'>ÚGMŽ'AHD‚‹XDU›‘"œÊüÔò$ ̓iØ÷[Ó¸¡•+Ít¡^ÓÕÉâñz©Ô|8N-´¡FSµÔ"E˜šTLeå9j Ó3ƒO"â²?ùÿ‹1ãǧBðá8„ÐMÕBˆa¢¿}£ˆó…é”å…A™üÍ "õá8ÒÐ_)MÕ"a¤\2}t_ÿ T´“B]ÑYï ‹õˆÊÙ㔽åRƒŒ)z–ðL 曚J†ƒ„Ïx¼0ö¥ÞDŸ¬¯ŽÊƇãtBÃ>4UK(R©R0-ù3ŒðáMs–©ÿúmXÄr÷a‰–á¨å³ë‡-'ªö–ÇŠ°å…`©ÊaË1ŸSÎx!_ñÝKwÕTv>g‰°£©Zv‘"Ì.çLg~N¾¬Öëþñ‹§ª]­ëÎÜÌkЦ‘Ò´”—sÃÒ] •‡Çy„æ( ò ©Z‘"Ì#ãf²\à<ºz³ý\C8${»08ãeQáøpN臦jáDŠ02]ÊS8ý®žÅò©ê.²£¯šÊ·ãìB#v4UË.R„ÙõÇÇÒò”ݾy\®ëª=î.j¥Â]/•šÇ©…"Ôhª–Z¤Sëá+îåS= k«5t‚«f~á›6F£3T¾>çš­À]DUË7R„ùrÿåïÐÕÃÁ ufxzùR{‰áâ„gA{Z}uô†çX‘$-*Ž?zz"•,ÓÙ U·pÜ®º%ŽÎPÙúpnh¶÷WU-ÞHä+Ë‚™ËŒønêý¾z¬¯š¯s†È7GùÎÌ–Ä—¨Úóa¾En¿B`ÎwW·«¦}4³¼ÝñpQõ»^*5ŽS -T)H¦j©EŠ05ÓÎD*"joõžœ¡òõá8ßÐl ó¥©Z¾‘"Ì7Ëì™Ö9ßÏ=²¾€w&¿þ¥»j*;޳ DzTšªe)ÂìtÆ„ ŠW÷¬×· ”ŠØÙGMŽ'AHDƒ{šˆª6 "E8 ”f¹*O’ÀŒ¨f N_J“[ÅkÚnŽ/ ЇãC7€4U 0R„JÍD¦c€Í¶¿qqX>OXý=ðxÕTv>g©Á9 QÕ²‹avB±p­<@×?õéªvPŒ^PNÑ8ÏÀ\¤)’$-͹ Óüe°À°Ý}ëï"‚·¯vû„s‰ÊÙ‡ã Cã%¸¬KTµ¨#E˜u*YÁÅœõ¡þzx;ÈóL+£â÷á8þ…W‰ª¤â¥4Í7X‹èÖÀxm¿"åí@mÇûŒÈÆÆË<›ë| Òôá8ÍÐZx«QÕÒŒašiÿý”~}¥Þìøbš)ërq™ÅFyô‡JÙ‡ã”CË‘q—¦j)GŠ e^ö¯ùe”º]=M å”ó„H6GÉÎl†{c¢jO6V„ÉS…_©¿ÖËã¡^´à"Èõµ_畲Ç)‡–ÃSe¢ª¥)”óœ•ePÞU¦ ﺭ鮯zss†Êׇã|C³á•L¢ªå)Â|³Ü~©œç{è»è~WÏâþøðP_äqwÕTv>g ÏŒˆª–]¤³Ó9K}Ü?Q¹­6uxùáØ.û_ˆ*ÿ><ó}øÄTÛ§hÜõÀø~>MÒz>—ƒ-WÓÊ/$OŽÒsÒTmrDŠprÍtžÏ’ãmÇ ëÑ%*k޳‡g DUË:R„Y÷ß5QŠ9k[ßìÕáÊv`93¨H}8Ž4ô^:"ªZ¤‘"Œ4U,K‹9R»ª/å_Å¢Âè •¬ÇɆ6#£ö9ÕÎѱR endstream endobj 746 0 obj << /Type /ObjStm /N 100 /First 905 /Length 2221 /Filter /FlateDecode >> stream xÚµZK‹\¹ÞׯÐ2Ù¨tÞ˜™g“€{‘Äxáxš0dèv&ÿ>Ÿî=]U†®Eè4èö-éûî9:/=Ü£´âÞ ‘£……ŠG+¢–Šº åb1ÐâyZ-f?+ƒ1.¼PS:x€l¾"c˜cIVo…¬ S!' u.¸.…º¯k¡áÞ­pëóÆ«ƒŸÀÞ +O@|¬)ÞŒVØ oŽI:¸pŸ¤CŠ´6ßh¢¾}¾°(¼ˆX;øë³O/b1E&s4è!ð:mà‹6&pÚ¡m5ª&Qæ VWIý~,¯^•ã»rüóÃû‡r|]þ@þÇòÃü½S[ÅTœ(5ªt}ž²ßˆ’GŽ~â¯.ô,'·qR¯£]¨–­öèk9¦Ï.tKV‰métÊppò™³i•àç9ãFœÝª Ø>qÊêÔ×È9¸*¢“„ÖŽÈyâì\»?¯[»¥køD\‰x)¥ ¼ñB³NUl,¡|šLå:³ý‰Ò}e2Çm8yŒŸ)[C1߈²(ϾÉ}ÔÞi­˜Ó`ìƒ8âA¬•£íBNu “A]r洨δ4°ôi¦gNuă¾Ò9™§É\P"¡2XJIÈÎã‚YLœWÆnþ]bÒêíùÄt1i 9÷spç&µÛRÍbá‚Rë¬YBHBQ¹”2fj>k–ÂDÇRJG ås¤¥ j×RsșґOTž¥¼Q, …¹ø¥¢ÞTZB™^B‚ÊÎ!dT_Z^78ÿ9÷ŠUåZÎ6PF_¨e5ñN#®(à \(Ým.€Iê¸R¶¿tyò樊õêÆ‡È£$K¢Ý‰¯#¢òÎg0á®}©> q§ù®OCÌá¾jþöde:sm¿ñ!àÄ•¥ßH<ÔÌsó`£CõC&KªŸÎÕŽí|¨|¬¯)–O|5=ÝÁ°xo×ÜOnÄÇT9ÝÁPò¨õµ|ÔjDšË\µU|»yª#¼(o|RÙ™gÒ™Ö¹‡¶Ñ9Dn²ÒÖ9hŸ=E*&Y¬M7´OQ]„,Õ&Km²‹Â1Z[;yÐ*ld§CúÕ+…LÜhò#Ûî¡E‘y¯nXÝ(”É€ÇZd ‚¹’ùn•i¥#\fæ“Þg–X²QuâCöá=3H p¹’øèF¾'6¶}±QæÚžØË§o·N, Óî ‚57]‰Ô·ÒfC$ËD$DÕ#–Z EøJu6ºº÷v«éã¹ã]<`©K­“‘|ˆöàÂðŒÖc‘|¹‰À0ÉÌD,6ÃöJsar,!Rl3l¯UgóÊ–â‘θ½ˆoWçÜ´™Šæ†ÅhK½oÛ°àÝûæf…èÚX=w+Ìvï›;}­:Ý‘‹vº€#R¬Ñf²Öµc/ ~bK'5®>MÞö ±´¦Égw‚[táE+Ú]›–ó€yÒa-}íøé;]¾.Bh?—ãßþþ@lGà÷ß~ûíãÿÓçÍÃýãÆôƬô½ï›ðù(T´ü§ÏSó|ÆZßž:9 ï{|ûåáó»;ÈWŽo_¿)Ç÷w¿?–ß«éí§ÝŽûÝýã×ÒeûΩ˜¯ß¾|¾›¯hõ×»_~ýôÓÃï»ö|žj©¡·Ÿ¾`l hnë·iþ+XcÛNÜ÷Ö²õl#Ûžíþíó¬}o)Ûì§ÙO³Ÿe?Ë~ÆÙ&¯%¯%¯%o*,R‰óX}k=ñ<ñ<ñ<ñ<ñ<ñ<ñ<ñ<ñ<ñ"ñ"ñ"ñ"ñ"ñ"ñ"ñ"ñ"ñ"ñzâõÄë‰×¯'^O¼žx=ñzâ¥!ÅH¼‘x#ñFâĉ7o$ÞH¼±ãõÖ²¥l9[ÉV³µl=Ûȶg›x”x”x”x”x”x”x”x´ã}|ù–¬ûŒ çgypñüþènÀ«ôóV¥»VTÅKOø\gR>oéû<¿Õµ· \¦*χ%®È–2Ör²n ÓçÜ“Zu›"MÈ9óâ”ØÂ«YbBO”0¡y}ëD騒¯\޹¥öªz>T4S,¬l¥£ H/Žk· Í+¾ùâ¾'NÊ…˜ÂóJÐÒSE#ÈœŒ5ëç¼ÕlbÀÇB†e2õ%•ìù>—×™°ÎwȰÔj¶ôÊ亸t47¯+ÞìÞÖ#rq¡ ë’µ†Î‹j—« Û±èrÕÓ ™áâ>RÌZ„{Çï‚1®Ü:zqæ|ºÙ€5^¿8Xœ qeÅ>nw5Æôâ–ŠÒtiÜ›WcLüâjL¯qåfÃÍ®ãȨÆ×qYM}©§ð<‹¦ïïÆÄ⛬L½¶‹k¥ŒˆÀáKuKΕââ E ¢ÄÒGË#G4ÆÚN÷V¹ï{#>we®¨ToD§£æ™‡ØX—n:r—¤p­v¥r¾Õ¶–Ã1zn*Ïʽ]qþSŒû>~÷, endstream endobj 917 0 obj << /Length 4109 /Filter /FlateDecode >> stream xÚí]㶆ïó+¦w3@Ĉ¤>{Õ$hŠèM» P4…¡±5³êزcÉ»;½èo/%SäÉ£9šîŽ=ÈEvgÏøµÞçP$I‰ßÄê?~SÆ7¹”¬LŠ›õî«xüéññæü‡¿üá+®ã"ÈïÞ}õÍizÃcVÆ%¿y÷?êÝææ·?ÜòöÔ®ûfßÞERÊ۪ݜÿðãðOÕ±©î·õù'l7õ§»Hd±ú—<¿ûç»?}õûwF>‚ø=‡Hï‹J~S°2Ëý=³¢`ÏÏßó¸]=诹ڜv‡ú8¨óC~§HY)•Àø ¿½‹xÎÏÿ³¿ñ—ÿí3þ‚ã©(re‚4f,û:EG |ôV›Üí’™§\æ,%UYG{ÊÕ¼`rÊ>Huÿ°zªŸ»úg,9ã…x h1|úª©øl8޹€¦lð9ʾL©çå¾Õ¶nyÁò¢øRb˜ôÕQ1Ùp4lMÙ`r”=LiÎÎ!¦]uXµÕ®î|8¹`¹H_ûóÖþPAÛp4´|4MÙ€v”=ÐI¦:Qa@?Öm}lÖ«ûFuão ?TÐ6 -—) š¦l@;Êh™±$—t?ÜpU«ö1gj`%ÄEbžÿƒ®½¢B·á8th¿”(tš²î({ÐEÆâ8 @_Ý?wó‹,髦â³á8>hä>š²Áç({øxÊR™…ð…Ù]ô F›A¥jÃqªÐߪ4eCÕQö¨Æ)‹³|Fµ[ëº]uÍ¿¯ª6ƒJÕ†ãT¡¿iŒR¥)ªŽ²K5-––ÅŒj_wë`«&I"¹äÁ=¹DÄ ÂQÜ3ãá&*O¸]ew‘0>M­}Ì2eI–^Á8ê5ðÒ®R³ÃDãÉ0ÉÍ ’¬I¹¬—¹dYf§ÎMÛôMµ ÞÙ¯} =yEnÃqâÐþ„£Èiʆ¹£ìAW$y)ô®>ö«õ~wØÖC}«»ÄötÕT|6ÇLq|4eƒÏQöð¥CaCºøúúSÿÖy[6Ú%*nŽã†Æ/Ü iÊ·£ìáNi pØ?5í£®@Új3)ù«eŽÕ>PÚp(´¯b• PGÙ*9Ë‹ ª~° Vº¸n Ÿ+ÆG_• Çù@§øÐ” GÙã#8“`)ö©Ùn‘»ëP¯ÎåÕ™± ÐÆQ3À†ãY,ÜriÊ&e/xÌ °l»mºþ…U¥2S9õšî¹C}éT†6gÝ\hÅ4eÃÐQöƪ´wÕú¸GŠ®~bs¶ŠŠÜDãÄ÷ E’¬á=—uq'EÉJ°|æmž¹¾¥ÁÉ"dŽRžYŽc&*Oœ]et^²¬盛zu_ktð2‡Ã“T 6 ­ÅWˆÊ¨£ìUSÔ2Oæ@ÑÅÞkÎN.QqÛp74~7MÙàv”=ÜiÁR°Ê«FS]õ(7&Ëò+/GcÉ =¤&ƒ Ç“b‘š 4e“ ޲— r ÖŒwûMóð¬æÂoS­2@GÍŽgd!s4hÊ&e/dÎR°¾@"*¸Ž²7‘L&åîSý(2IçüZ‹ŽXhû¨y`Ãñ<€D9MÙä£ì嬀m|Ót‡mõüVl|á.öÊßDãø¼:A“5ðç²{!fg„Õ˜l[­k¤u}ëÓ?TÈ6§ -Ç77• gGÙÍ9+ @wu¿ªÔ¿þÍÍÓUSñÙp4ra¾KS6øeŸB‘€Õà3¾±†ØõU__ÍÈZû@jÃq ÐZ¼ðHT6@e¨(ùìTïèâÂKÙK7]:‘!GÎÜÄ •'†®²Ç°ˆgG{Ï ñ’Æ5ÌŽ&O¨pm8ÚŒ×2ˆÊ®£ìÁÍcgpX<´Ê%º|Âw2ƒJÕ†ãT¡¿x?JT6TejZ²´„sÞ®ßkt î*š¬ö„ ׆ãp¡ÍxŸJT6penRÂó¼[d€tEfm °‰Æù§ñ) MÖÐËzpe1;’ÛUðf{µ›&&—¨¨m8οЖiʆ¶£ìá㥜ãFZòµT˜¼¢B·á8thÿ˜‹¦l ;Êtž³¬êvçgå¼m‚ý%É =¤&ƒ Ç“bÁ—'ˆÊ&e/â|vÀW'Ãý¾:nÎˉ«¾ÙÕûв"Ww—asýÿ#C0úëS9Øpœtd¡QÒ” GÙåÀǺCîrx{è\úä:G¡ÏìÇ#•'讲½È˜ ¿Ý5?µl2ƒJÕ†ãT¡¿ Tiʆª£ìQÍSV€ßê¡:Öíê~Û´O ÷Ó/z+êtYT>6çÂñ• GÙã“¥ðpá\ûöl¹‰Æ‰ïñ¥wš¬á=—õp§ +¹˜ñ¾Ú‡NfP‰Úp)ô/1• TGÙ£š$jì)çTÇÖî­PaÙh—¨¸m8Ž/• nGÙÃ=¼Á¬Ìvï÷Wë÷ÕñmûÌ ^GÍŽgd—ªˆÊ&åYH®î9÷^TÒõ§‡$ƾ[^_ßr¡&)ñm"Sôâ{LÜDºïá]3DÕá­4‹ï/1ć·dÄö>ß÷Ïã½~S?T§m?!jÚÇÐ1Q²ìsÜô1úJ¨YBßG¿ ;Ÿ¥,IËë„L¾QéÛpœ>D!Â혦:Ò_P4ðã¡”­'ºÝûý(o?FÕv5Qµ»Åí}óxÚŸ…´B}|\^\·›3Y cÌKtÏÑÐähW¸iÓDÅ ‚ܤêâiî©Ýíï"õ“MóSÌ“z>#z±€'sˆ€A8 xæw0QT¼ hC©œ;€'®µêm#ôäR©†Ì饲վPÙÚpœ-´:Ì–&*^4ló¡¯ÇéÝSsˆtU¡ÞDáת¨‘sRð ŸæjÚ*`ކ~‡ÓDE@08ðJ²¡tŸ@Â]uõϧº]×v~•jÎ_aFFS“ÄÑGGS3… "¥©ŽHÅ0Ò4³ëÚ]_ûèé~Ï8ƒCêOçY N—ÇÃ}Ù81’Ú*IŽ“„¶ $ISI:ŠáîðØ^.µæ;Ò ·¯î½ wß~f\¤Œsq¡e«„K§ä¹1dz@Ç,̉ªc8Šáö –N{ûf«ÆTõ§CÕn àÿ\#^m ¯ ÇñB¯Ã“_¢êˆ×Q âUýþ¸‡ïŒ÷XµÝaßÕѰ-¯ƒ·ëé‚‹ñ}h¯~5n²„£0gΆÛ*Qu€é*†a•ã©°ma~Ü7l®—SÛ@…iÃq˜ÐY&Mu„é(†»_™rÆS] ûÛr÷«»„S»™ ²VçAÖþxþ¡u}Ð!uÁ³‹RK™æP3Á†ã™ cîÑDÕ1Åp³™J1!n>ÔÇ®ÚFÕññ´«ÛþÅiÒ¥4km¦ ÇaBgãj¢êÓQ Ãä‹§—Z*˜Ÿ¢áAÁÞ‰èxºÎ¾8/*ÏŠWñˆvã³¾h*:Ž£ƒ>ŠànO¢êˆÎQ £‹S–N¤FtÃã£MÓ­«ãÞwOwüö‚èéë¦Ò³á8=h%B¦:ÒsƒôD™ªô†qht¼9õÕyù Ÿõ9™>9@äÂQŽ3SɪGW1̱Pãi¼sXWz€ Ç·Èঈ@~Ùû*´;TÄ&' ì|i’#ß¹\xØ+Ò„ñDß~> stream xÚµZM«\¹Ý÷¯Ð2Ù¨UŸ*˜‰q6 ˜±IŒŽç† ~Á0ù÷9ê[îîwIˆ¯À[+=f/1fÿ^¨5?õ¢ùYÐ5Z!Qô *¤¦—Éè!…oôÐB}ÌÎVh4Â/ÜHð¡&¶SÀФãÉ(,:Ê|uŽjPaÃPûàÂÔ>¤p$Ç£á-|‘Fó-/BŠÑ‹°Ê©€±6;"ŠEkE  E<ѸÈüMŠ R|Тgg+J2;{Q¶Ù¹çS´Àôaã‚ZQsÓ®ƒñ¬µ& º‘‚‚¬(È‹ V*¨Ó>N!èc°;`‰9÷2fŸÎ³O7,`ÀZwÌ_ÝçÀƒ©øÀã`LVŒ‡1Y4ÇŠÁÖ<`öh˜õPƒI0wÒ ü¿Âȹî‡êà—aA§€ã2«Fẻ ã2Ï'2=s⃰ÖÔxŽ“KMæ<Úô`kó ¸psžoÀ‡&ãð2j+^܆£Ì&<œÏd:=¼'p.›öá“Ê´„UÃ'pÏéò&3Xâyˆ¡Ó³g§óëÿ로¿ÿðáñóéüêËß?_¾ÿéçÿ<xüøÓÃÇò¦!^ÛÛÓùLJ÷ŸË#®3jœz5Ì€aeµÂÐçûòìY9¿*ç?>¾~,ççåwÌ¿/ß}w¿oäk^ìÂGR]âI>9ˆÏ†UÁ\_øšT2yšÏâ ¯¶ù´ÁÕ}<Í×âëZuþä ®ö$ŸÒA|.u Œ/|j_kIUµÍ©2ùÓ|zŸrˆÔ ŸµÚ…Öò Wí[4˜¶ÊÚ×ò1UloÚ]ÖòÕ¹7^øhTî;Ñnñ5ª·h·2¾”OG«&[4@òª´±–/Zm¶E»F¯ݵ|½UGuá뽊>*ñ9b ¥}î:»–O[8¨y•Îké$*ÑîØÖjD_ËÇ›ö‰UmO‡»ŽƒøL¦» ™kùL¸oá¬*O‡»”LÈðŠzcãC21v¢/¢ «>¶h%ômoñuƒÂntH%?IgGÑ9"@Ó¼!¾v:M!°iŸ3Ò´§£ÝJ•D¥vÛÄO Bȱ–O»E;6êŠâåi¾£¢g»E»„ÐÆZûÐJÛ¢]BØwÄý Ýeµð…¯ºcž´™1ªµÍ<£¢ª\È}3#ª3­µ¹„ø&~È+I_º›± ìîìB㥕#—¬¤Ù „KÝ“‘L JQaÈZûP/ÌÓˆ Ÿ@ÇÚÊ–‘LŒ”f«li2Á­#þ2J(K—KŒ¾•¶HykW_:„rÁÛf (¡ÓÒð£îµµ-Ü) „½/ÝÎå‚oÞBB8ÖF™Õ&[4’‰h±TlI»E;„u­» \€Ël|H&BÆÚùd©¹~BUÌֆʦ-y!${•ØA› ¡Zè’æ„0þ—h^ÞÊ·V~,ç¿üõoeÞtp+¾üòËÛ¯}^<~ø|yaVbëû¢{éù‘ç¡~~žü_»È¼G—/@:¿üøøþÕF\Î/Ÿ¿(ç׿~.okøËwÿx8ÿ‡Ÿ?•AÜiê§Ç/ß?ÌG¶=úóÃO?¿ûáñ×m>œ.w,°øå»x·tÍ~—¹üÖyû0Ç2®KË-[Ê–³•l5[ËÖ³íÙ&'ž$žd?É~’ý$ûiöÓäÕäÕäÕäÕäÕÄÓÄÓÄÓijijijijijijijÄËE‹\°y§pi=ñ<ñ<ñ<ñ<ñ<ñ<ñ<ñ<ñ<ñzâõÄë‰×¯'^O¼žx=ñzâõċċċċċċċċċÄKߌ‘x#ñFâĉ7o$ÞH¼‘xcíeKÙr¶’­fkÙz¶=ÛÈ6ñ(ñ(ñ(ñ(ñhÃ{ûÿï!<úçáuº=^ÜÚ¡â¶wñ×WN¨¸À%¯œ¡•¸¯åôËÉØrŽ}k-'ä\±]9] c-'$}`›¸rBÖw ¿õ<÷J)Z‘y¥T®¼S}«Ò^9YçQËêÞCÖr² ìØWNFFAº–?o²¯œy¨Ä’#´¯œ—Ævž ©ÅN¢ý­‡ WÎyË(·ð´uìd¿ßzvpåì3ºãì£ê¢ŒôÊ9ïoŒŽj»/9ߺÒì›ÿ˜EµÆkçuÞ9ú•¨jdé¶w¹w·Ø4éÕ\s¶ªwû1Ú½ãæ£æ¶Å¼¿ºq ÔÅÒ©cÀgî8›WڑΣöƒy9ô•S‡Uß‘ÎÃ8û<«¹Q†UÞ;¾sçCÂ5z_k'iõ;éTæª{ÒyÔz6dì~žDuÈXšfÎËÊ;+UÝùY™´ÙJHe¹E§ ª­ñR½žw–ýN<%æAdÉ©ê•Ó‘°ßEŠôVÛεðQB&¨KÆÝŽ 6ïÂ|­)ý¦îûuçQv ö¸Õ€"±_w´#Ì{L½Oᨴ6¯W™ã¶ï uT‹£eÉÝZ¶¾_t´ëñh•îö¾[tUŒ1Š’ùk”+g8ŠN[º°#.îöîó7¾t5çåæ}ÑÉn»Eçaë‰Â„ïö6Eѹ6Pæ%§ß)'«¢ˆXk&ê¹ÛXU'­u!²ù;×缉ikÏ¡¸!a¿Ôú_ìü#% endstream endobj 934 0 obj << /Length1 2244 /Length2 16626 /Length3 0 /Length 17944 /Filter /FlateDecode >> stream xÚŒ÷PZÚŠâîî4îîÜÝÝwwwÁ‚»{p Ü=ÁÝ î\Μ™É™ÿ½ª{‹*èõùÚ{}» %Ua3 „ƒ½+ #3/@T^D‹…ÀÌÌÆÈÌÌ GA¡fåj üŽBèìbå`ÏûQg ±ë‡MÌØõ#PÞÁ ãf `a°pò²pñ23X™™yþèàÌ 3v·2È3dì.p¢Ž^ÎV–®}þó@mJ`ááá¢ÿW:@Øèlejl7vµÚ}t45¶¨:˜Z]½þ§5¿¥««#/“‡‡£± £ƒ³… =ÀÃÊÕ t:»ÍQ(ÛÿMŽ fiåò·CÕÁÜÕÃØø0ØZ™í]>RÜì̀΀îUi9€¢#Ðþï`¹¿èÿ> #ËËý;û¯BVöÿJ665u°s4¶÷²²·˜[ÙŠrŒ®ž®ôc{³¿m]>òÝ­lM>þ5º1@BX`üÁðßü\L­]]]¬lÿâÈôW™c·7u°³Ú»ºÀý5Ÿ˜•3Ðôãܽ˜þ}¹6öö>ÿAæVöfæÑ0ssdR··rrJ‹ý;æÃ÷Çftp033sqò€N §©%Ó_ Ô¼ÿr²üeþààçãèà0ÿ ô³2~üóq1v\Ý€~>ÿtü/‚ca˜Y™ºL€Vöpª˜æãûw¶òè2ÈÀü×Ï?é(ÌÌÁÞÖëOø¿®˜IZJBYC“îß”ÿëqðø0p°X9X,,l<.f€ßÿÖQ2¶ú÷Ìr¥íÍ<ûqNÿÙýß þ÷‚Ðþ·–‚Çrê?B×cæ`6ýøÅòÿYîÿJùÿ§ò¿ªü¿ ýÿN$áfkû/?õßÿ?~c;+[¯G|(×Íõc ä>vÁþÿ†jÿ^][³ÿë“v5þØa{ Ûÿ£•‹„•'ÐLÉÊÕÔòo¹ümWÿkÑl­ìJ.V=-fæÿãûØ.S›çÃåC“ÿr?–ç[ŠÛ›:˜ýµe¬œcggc/8æ)±rp|X>ÖÑ èù/˜í\?RäüæÎpÝ('€Iø/Ó߈À$òq˜Dÿ n“ØÄ`ÿ/âb0IüA,&É?ˆÀ$õ±}õúè.û}t—ûƒ>ºËÿAÝþ îŠÿEÜÝ•þ îÊÐGw•?裻êÄ`Rûƒ>fQÿƒ>fÑøƒ>fÑüƒ>ºkÿñ|øŒÿ 9Mþ HÓÿ"ŽŸ©ƒíÇUÿÇÂÎþ—ÅÎîOþ_`2ûü`üSácª¿å÷'àƒ ùŸ€‚æVîÿÈøËíàæü„‹À,ÿ?NÁêðƒœÍ?àÛÀzv ËÇè¸q|¤Úhøþ.¸$;üûcTÇ?ïƒÃ?ƒåcÖ0aù˜ÕåO¿¿Ðø >Â]>žÑ? 5ÿÝÇcÄäjé üÇa}põpøG·Àúîÿ€ <þ@Öì4cý(ïõ‡ÎGª7ÐùïÚÿ³Á¦nÎÎßcÿzc?Öû?ø__š@ 'ÐneÑÁ”/Ôº!´ó¡N߃aoR`ŽbO3†ÁgŹËí :•¦6;xÃùN8uä;ʯqê[¡UâWŸ“¶&èˆödåŽgßÃD•™½¸åi¬¡©¢áÆABX5¡}ßW'_ ð6Њ<'7n$¥ôIÏÆÁŠŸãá‹{Êûµœ²ð/³ ŸÕcõ‚Jç)òM¾.àB¹2ÂТ]z"ÏßÞÍ¡åN½Ë$ÒÁù~f+öÑÙd{\ð^«RcuéÅ%ÇÕÁ!¿EŸ¡ô9L“Á^ò)+‰— )1'4Xü&Ø…lìÄ^OÒ³Â_16µ5†sd$Z¼3oª¼M!2rd«šÛƒ–×ÈU:ûÊbXç¢Ü}ðŠåS=ŸíòiÈÆõL‰5"£?É–(ô–úT÷aÄaÚç2nÁÐ ÿ,USÒ{€Pâ2«I¾«nŸ±'âY7×Ão¿©)I{˜Ý5í3Aµi‚2ãQK’\>(£³Íá¡´wAPüòÏ3`²Öãõ2=ÞHïý 9'¦!ŸV ø÷…À6—œÔöÜB—Í*t3q™Ö¼2}öc²ÏÑd¬ªuº)'ƒ_ELÐ>WɃ;„6pÕ–¥EPáµFXÜ”Þ+òN6Í”ÏF™Պ˜%ùÎHWLŸ‡IxDÊ#×TNÉÄÄ.X¾V²i&öF1ŽO_÷È0bq.ÕÌò§«áÊœ’6 †:ãPãV)ÿÀÌICØ!Ëü¦cÝwgY0ÒL—®þæQûþ{ñ…©ØTóKˆXúWÜ2nÐÑ'•!j=ä²ÐöIôˆ•ÙžÌrÇKôd’iRÂ_×<±*.+¿òì_ út'ÞÀ0 hÝŒQX<(»f†nÚÞMö ò• 1†Ú´¾šŒyÍUÙ4ÇæZ„ó‚Ö–|5·ûâËEÅ“FÌÄ*’Ç ã,J.ö¢ÈØ£_³=ƒÐôítcئûlƒluc¸?¸má-O !Ï l;0„ía6Œ3÷šƒ¿Ý)ôþ@œïá½Ì/ÕÍ ŸÈ5ã¶2Å\̰~}–gÝ5çp®‘‹¿æ-ÄÙm,~Ú¬îžðß|3ÍC[’7‚-ÛŒB'1ç1T:®õƒ‘(*¿«„\ÞOGOmI‡ÞƒaOî$äö‚©ÃÐÉàœA>âÚ â"ð ÒKù×Tƒª Öú£¢­ûÓ@ð`§Iæ2`†ÒMÍG@}a}èL°Ë´ÚœüÊâ\ŸZ~z3(¨Sy>¾þi*n‚{[IÔî0ŠÌ(¦t3“YÉÙŽŸ˜òÈSâ.`)Þk¨E=ä•®ðM̓Wz€mƱÈ_°®Å^ÙÁN‰ %šU'N$sWÙý Eoy^_+§=¨©&ëeÅ–¶u~ŸW› ™AÀq„ë.µU®ý¹éDzNÎQÿƶ··UÑhf,E¼LAO zŒp]¿ü>ç#)OÒ]Bó°iøºS•?Û.žHÖ4·l#rðƒz9ÑmíWþFœ•iJ >„‚Ýw¿·frž^XÍÑ!TB¡a¯3_¤StÔ2Œtõp¤éÆ«èó[扮{¤wÿ~fWFOñ°4é zd³÷ nÖE.¶;õ¾OUÁ| 'œ{×Ïc÷ApôVaÒ|¢Ò†ëæ4ëY]’`>ÊLXe:¥ÛÉdæ]y‘^´ª H~wQV’œÆß@±·ÈíÂÝùQ¼u”ñ 䘎Uœ2ïH~Òr¸É)vN ˜LøŸ¿®ÉÀ¾ŠKâçø] ¯†àíRÚtæç&g”&¿XÑMÊ•#Û=~~Ðqµ¾Æí¥ˆñ¹ºJ(òÍs7¢!úÎ(N@À–¿²Ÿ*KžŠ‹Qx›Ñ  g hÈL›]séÿ*†Ý±9§ò•\ü] ±%pÜ´º’õ41„"èÅKLO¾ U•GjùRùsçÂWgóÉRƒ=ŽˆT²wLÝ0í©&Ì,Ù]Õb‚&û¶Œjy<­gznÊB.cÄ!3ò·/k©ð®LšhAË^S==8¥0×Uì­Ê²>4+ ašbf‚xÀãU,Ç•T<«P ²R’Ü»I¼oÕ™#$)gìg$9b%­± o¤’\pÓÙ{¿÷ 3 l¹eYsEV䵚 íMµÂ|“zB-Cð½Ë9 7öÊ A¥²Í+VÍÆK°j³Aêlag&˜!…æ±çÙ­®×öÉìv—½ù¨Õ»ÜTÎ%"ëAMJ—²Ê}ï%l?ö“f”ÂCŒ<&m;b¤ÕŹœùµ¹Äu©­w»a­ÑÀM¬QpÙ˜{¾Bè¦ YµŒ½úIN°D¿u-˜»wíp$ûe•TêëT-Ò6w ¾­<¸ AÉ_¼™§ôvŠ\¡#t•¿àµì=’ÔZ ²CËüUÞoùX¼¶éôë‚Ü é!É)­9] ¨ºpTâÔ(ý'6´ÞO®´ßœdø=ïÆ$×Ñ‘;dÃèϯð#©#nÅØ1&­LÉ’=¿ÈRJ÷zåzF&[; äwÎÝ4Ÿ˜Jðîyâø³ÐEÔQŽOV¸jó8ÊwpDZvT¤Å<Ƥ8$è;”„ž¨,û¥'UNé6©iá§± –ÎðϵkRº5™»ÆàíªîB³…VG-³^d¯f™ï`ßÇ.ÂQ(\F7ü³ôÀQsúÔq«p¼{WƬíEŸfÐýò ËÛÛ‘Ì]ÌjàÊ·­zt1Þç>\é–lŸÕˆ6︑AíÌÿÕ}R<. ÊoÔvÇðéüVŸáú JÒO•œÈØá~Ëa©ÅÆêÂ# åµö‹WˆÄqzèºc+F[ò€Ÿ4íz¶ˆè” ×§LEÃPÈNö/h/¼Û©õ&âyú¡,-³—&ô!¤²Ìf& Æxí§¸ïã¹ëæì’ãU6IÔ>ý¼¿à`2šßÖõ€2ß–MðRÇLƒ>aÖ羌[ŽÜ»Ð¡MD? 6»då ©6`=$¤7v-ó²­ÿ=3îüÖFÑt%Á†ûbRœ[¼CY ï·ü³l˜-WÌfØÒè³^®³›™àÆo¾{«6a|Ãîó(L8 Ù S›[…¬ù˜b{£‚'÷%ÌÖÌÔŸI»ädgˆœ3>o0/•Û5-zî·ê§š„ð=¶çpžºMó(gaÖœþÅh¢ðó˜¿H“’ llE.¼ÛQ¼ÓLSØ·h.Hd+2`È£dxUŒ`Ìø_ë8u•¯[I„‘—䊎©eÑz†T ê?W¤ÑÜ[å‚‚º²ëd¥i€ÌëÛíEiÌ$®*>'ÖÜvÒX€X½µÁ]Q0€É¨åéš×©iqÍ31â…™F`ÅÁ¨CDÒß[r]p˰OÀzòðîŒ7nY¿Ù9»ßf)ÝÄ‘! &åÁ˜z^uìÞw”ŒÉõ·äÂ{U†W$‡ÔÝLq Ϩ1ù˜Ÿ(‹þö«4í…^ºó_Þqn<"©gïxÍI¸íˆ5W*tøvØ#?Gg@EŸŽtÎiÈôSÓÇrybäb„)j&óxÜú QÕoöíL&Â~Æ%ƒºæK\y]í7îÝþ¦¼ð¹öPÖ¥Ó‰–I*pj…£kÛ‚¿Ø±³§ß°–·7—F°ƒ/S‘$¬U‡¨nÒFªåþžù †]VøþU%š_ H„¤b[áS  fôÅÕ’0ãM¯¿Òð÷/ŸöÈ™L v(LUš‚·ì;I hCv®2óy00¸£‰) »ª}=ÎdiA ¦<§…)P–ºIûÞ>†Ò½/2—7“Âóƒ&˜a«B_VW~ç¬Q÷¸U$_z œ¾¼:ˆïç"ÎCžÑ% ódÆAÝy…ϸÕññ þܳNÌŠƒpÆ=öƒªE¶©oÂИ ѿ# ÁdçPVs¾òD=Ï;ü ô® fTákxÁ½4`xn{f+ØòrP½eºSÞ IÇd+’7ãîvϰŸß­™­‰‰®iÚá?~…û)໽Y ¨9_I•+šJ/†û,,l¨‰Öax˜kk«\ŽÎù eåP”$Áߘ€Ç6Ÿñ¢þ¶¶­@µ® eà1‰³Óï“E)^Ë[`#@Ž:ÂÿI RVÿMÚ·8.×a5«Ö\¶ÜÊÆ³îÝg×Ü €Ÿc{Ziô·;³S)d(ø¶ãÜ!Uâ’¶µú¢SºWUÁ¡ÿÖ§]ÀOÒ‚iI3è÷Í2ו¬°ýÎö3hTw#Â{i Uz¢ýZÚ‘Fh6¡wÝÃéð9ý¬v~¹÷° Oü;7ˆä‚.Ê,:’yS©—P —–nJ (ô‘š&g‡ŒpÙ³ä­ Ó<¹¿(aIÓ¶_âN „¼l#¼ð7Þ»<Üî>ÄÄD?Œñ åüuÞÕX¬äoJ–ªÐX“û«îm¯™ê…V Ü•8«Mœú÷)—ÒãýUÉ!nÈa´™*ü}WÛ-¤¼Œà'þ“0”ÕÏá+Íj°) rø <’þtÆ“]ÆùLOKáÔMpïp=à£sïÎ<–­SÃû„Û…ö]³ð²þü¿Æ<ӷݼŒÈ~+›bsOÛ?’§é–¯nóR×í“7;8;QîÎx[7oŠ‚žnöà][#C¢Ô?”oçË¢ýÆ™xû²m ÿ}ÖëYÒ¬íVŽ ”“¤‚HvÝq3‘>sÇÞ±‹HÎ_SŒÎ×eÔLS’³¦Á‹Ú¤Z‹RV²¸làœkæ€mÁ %‘ÔqR8Mæz *u‹“Ñ4^Lvtì—C°NÉ4_¡‡‰çuç VÉKèwM&»Ôï£=Cø_Ä7;Y\/°0D±ÝõáØbä.é 8ï—§î-s»IšT¤7åÔZK°ƒŸX½‚,aС+æk!"õMjÜùº¶8¢nê·Û½ãðÛw³›ÛìP:§OØr¨é YáËnbC3–nhN²ô1ž£\Ób8Ò!@‘iäLlƒ2å tm1['’Âúw±º!ˆ¡ ü˜öjaCx<Úî0‘ŠDÕøAÂS§´¨º»î§^ hÛUïQÔ\è×¶10è+„ c,^´$ jò8ZôëÛÉåQ¾V5Ïär©S}rŒ ò¿´ `c9Ûš»¤TñE"çë{ß÷!þ]êF<à„ ­SM.¬T:ëë,†™pBq³ò®£¦ÿ+¦88Ÿ˜\+"M>Æ<\)'©š¶Q%. ŒÀͼ=KÇ2: Tûì"ÞO-‡¤ˆ¥…FvI‰qDPÃîd&ÝÙ¢ç÷výýc_¨Åå©›!n8ŠcÄ.! \s'&G¡¿Û ‹ ãÆ™ñIµõ³™ƒÚäã ÊeýÍÝá·º5ÝÃ@¡=”dÜV;°™|Æéí?'`IF?§üŽB¹5,ovµæxP©:S­u·Þç¯ÝšIè8Ý-«•_ýô3f×»dˆÌáèP},ò{ºÖR ZÙÌûœSfM:ìlå1q¡ZN‰Q§žðÛ’ÛZNx•Žu sÊœäð:È„kÛÌyºÎï<¤ï’ lfʤ,'/yüÆÖÆïenƒ“§~”C_î®Ð/ õ=üÓÜá;=^,r¦W~PÀÅÏ~;!ælï( îù‚ä‡|¢i}ЀÚ<ÈR„~f¼âö¹ú6öõ®õ×ÄZXX3mî`ŠOÝææNèeb“Lg­R樬.ÂÃù|¤Ï§µÓ´e§•›|ôãO-Ï@'Ì ±‹ùÁKÀb UHASTN¹~Eß§ÂÀk$ÚÀÒ°xqªcR©´óGMeCí¾lwDߥËh›B8ë~Ž ërƒïbçgôˆ¶j… ðŒwtÖF¢Õ×sžõ“×ÚKµÚElmnT?Ÿ|Y ÒÝYrÐì´;µÈGœÌX È)%U ÷yM;5šÐ5Ïʤ&Ëç¹ÆãôÜÿ3§€‘öëê÷u4'BQ'½ñÝ4øn-ѾYZqw’#ŽËsDtϵá¡X;0¥óÕMÓ35Ü—%ækÛ'¦¯\c=4•{‘ ,Lªy­þ¾øîóf¸¦±¼%ÊBΈ뱨Óf) ´·F“A#q oÌók]r|Ï3,î‰Ò(ßZ‹ìnÑÎ…¸¾™Â.áÚÃ5ÞÈ£’{EÒi ÒCÉY®ºiÔ36“%†ÌÙä³…Õ²,sqEiÖêˆlV%õ;ŒÕZì=w}cÍ]qÏ•SNÚÔŽì Ç—Ýû–=*›ãÏW½×g?«aÅÝWÙ™n™°–²­öÞ êÉ£}­º! ‰Ià¶áÒÊJPáé+&ZíûÒ#«TJµ³[H£Våkjqgáž i))ÀíËHàE¨ùår×Ågiã k…½­Užý25ÌðF{¢Qœ±ƒ!‹¾n‘ÒHäº<ê9å6Q»~˸˜4épbøÅe¥3•¹àÁE¤Qù‹\)ñ¤DßI°\‡\UÞ8vÙK†¹ðÉC§•‡Úo†y™mòŽ´¾Ì݉½ Òȶ }Vzæ0„öÞÉDPþ¶37=’©í#_RÊŽÆ×[ŒOí!èîQAŽqL¶×vèFÑ®L‡RNZÀÏ×fQ¬j©áR@‡d\Sö3$~ ”b:®ËÕF˜ d>êÎó&mÜwÑGô@rÂǹu‚¾2 9¤Â’r’×Úje«ÿ‹›Ù¡Î0hƒàÑŒ¶†UÆ…Öü]Öw/íé„þˆx£ÒOWƒª,"(¼µ=S¢ðï+Íû¢Ô›pìΗÇÛ¯1®×ÊܼϷ4¢n7>É©Ùà sœPñq¸d«’aÕ¬QâÙVkŒŸôdå.ÜcëêùMÉ .œN´—°GtÇ!×ï)ÎÄPÓ6¯}Q‡ËôeÅ.gõø$ù ót¯DêF…o™BGö€Î¨éR 6©N­v¼51Y'NÊ®^sz¯M"z:¦‡6W*`ÓÅ6›|Oߪñ%jPSÖ·CÔ0ñ|S‚H²XP-'ï)¸Ðä¾üÑ…ÛôưÁhŽ2üiþè‡N°¢J1ØÚüÏ2Œ«‘ÁŽÜK\8(¡¹iäÈ‚BL”_èBmÛõ¢i»¨!¤3˜+(yëÆ…r²j…ÏA5ú|¦þËf“€Nü5 óZVR]ëÖŽ]¸®ü¼²yuåe°À )9Ly¢áð+5´öå“ìíp†S6P¬5Øû)½»·™Îš¸!½pŸU¸¬ Kß¿Ûýru0.5ë­w¬¦tBÈ›E*1Ó8p~ ¤–Yæi’SÙvò¼-9rÓm‚O | ŒÞúl×Í8®C¤³â§TŸ%ÏÕ3â›Cã‚ûXu¹Æ–×mÇ;~v™èIÎi1~x˜ÊÀ;Üø¤—‰€Ÿ\‹¬Õ,Šâ Ûà¨$ŸÑ(=½ñh‡~k‡ ¥0$‚~öÚÎ!'Höu'x`¤a N6P—Vxrß:ðå( ¶0>ݹiŠy³`òIfUŽ&ÿÂÄk倆$.b¼l¸Ä±;^fKºAà˨ïRë&Výªô**wÓ¿“hîF|cíf;Â5XRz•„¾&†w,sVÜ7ߢ—`o¬!|-Ø‹r î’¶|f\osª£}ã´¢ B‚V´òë!½g.‘VK´ut˜£‹U`9µN=ø)"JÉ`ÿðrpé}ie™¸©óá Ì{?ðÒaØaôêHý»ò«LhÀÂNôta@ÿìºK®;I|vCÇù¹p§’ͯ6Å¥÷ΓIú"Tõ¸`&Ô6âx_Í—xôåžnb=Ê&™ž“æ§0€’`"…Ò ÖØC¥È ¸$D(YÔMüûÒ‹Ž¡æ„Ž~÷ @vÓžh:É»!3¹SEJ f»!ÓYÆ…°ÿ&ÍaUŒ<ܱ§œ­M¤ jhqWi(Û;4þ]“Qo¡ØÅ ~û©G“¨ˆ0”gŠøÈÞàÓa?;Ét.‡íç{ãŠËšñ#?æÉõ§»âب^ñØýzükjï‚­ÈJ‡Œ2ãéa2Òш¬Ò=z0–LÑÛ­sˆSRð³}{ æAtÐL–Æž»%3á swJgpLõ¢q–Ÿ3g2¦Äïg#÷îö¶EAu‚ÃÖMÒ%tlˆÿ*R†¾uù»°Á[LA7ÙºGJ_ S"›FϱÄUŸ½b+ô‹Qô‹!ƤQþ§üFç´UÕ¢ÿéãÉ{2¥Ð!»9ˆæ´Š`~'‰N¼ïªÒ·i?8m)quо†ÈCý áB®Y³ ûcQÓdª© ¬Ú#WŠºÃ@z-GTÑ ­/£žTYBî×¶=芸nôä7Ûu-r‡Z­Þ—sÕáB'vž!\fŸ2ЬÓÄuå½i¹öžÈsÐ’å·7T­~½yDÍ ¨)ûÖ+ËþÎçV·۽¡ÂAr+6¢‹^;²`ŠæN¦ÙîÑÝr™™úª;rœj;vŒzqƒÕcËgÈé/[ÖeBŒZÛž3Í(|>bQü–øXÿûÎ~‚î•j“·1 ®_#«ùëÎŒ9PDO¡ºšªwýÛX0qúÑi÷ú©²64‚œ;¸{¶–ý¥)u8v’ â á‚•"Þ–K¥Õ¨¿Ò}~UF5• X,3¦TÖaÚ¨g¹‹2(BÆh¥_ždïº2Ò¨+(ÚÞÚhÑ÷Ë“Ôèìü.Ôè2¤ç¡ñ¬øú)²I0ókø T>‘™•ªP\X>Ý®¿V¸žüǘ<`-‰âEƒ ‡dÔ^¼Ãƒú»ÅÑΉ”n<¦@–XÚï>eT5«+ûoF_WQii(ˮ튷ŽðÕÛt>IóQåÿ”].!3tñý^üQêÖh©eV¨ì:-ÚmI8`Œ\òù˜¢ó™(.4×m)³ñìx“òܶ™Ó̹tèºA`ðÇð;¨»Ì+Ý6™ËÇ=o I ­s>¸V}ò²¬ãƒ"®õß|#¯ÀF©®þ¨hàu¢c«|lAŠIž“ D|™*+«g+ªl9³õZŠ>²æW_Gœ_Ÿab©ÙÞfÕ· h6Q¿üNåÂÒU÷×6`ʎĨeï#…j` R(/›áõ…<3† ßïúb}k½T¦TDÊ¥Rµ†ÉEÛo0\}Wa¸ÆÌã⺞ë2Mߙ’jz!zõeë§bV(Ve[ +8VÌËó‰<Ôší•Òc °#ÿaC×øÈ™SVE±R>c´â*ŸI ¨'ëoܲ«Òeþr-¤Y/LªY&#Xù%(Åq™ûÔ…–M†Ó m-{ T…ZúqF“ÕªŒVí7THñ­M£Ø»ÓtÖ¯¿ÂÈS¼ ½8cøâT³IÙξç§*Mz<Ù¥ZäÂÝMµÀ+gbÑr}zuÝKœ&K»G—?@S}ª½Š[Q« aØa{H+>°½"iO|ŠÚå{ Ô C¶b0mÚ€˜o®ìnBªykÉÿÑÀ˜9Cè“”‡ðizâ®ËDý1ýAœ÷Ø€¬ÿ¾s‹€¿Wiä¼<€“QGê ô…¯iOŽ”’Ë^ÇÔ·Ç•ˆÝ¶»€øŸ.Ëòk ýÍcÖ®hx™ÖŒÓ/Å[. ‚¬ÆZçÄ †¬ ‰s¿ÁZwRªm,d] gö›nçNb×1tWÉd^SƯ°Ð„’Fò)I«êƒöæ|À…\@ð=lPñŠbùÃZ! Šu–¾¾8A–ªÎ—§¿…¦ÑJL1 Þj–Uay3(9ã(måÕJíÝ2Y| =Ѷ¡;‰½¨'}6x0Qö׸x|ßá¬*æ+ƒ(ŽÁZ@2ù›ÚÉÞƒºÞßjÛ¼)8¥{ã >fÂŒî_´ß½õ"GÅ«†-ÄW’êž>³Á51Ú¬ë©=0N…¤v>œc9ãM!cä,ãÞôÙè¹ü›Ò—6§¯Îô~3ùœ-²·ðª0J¬¢Ñ$Qš©wß”˜hb­¹˜¶Åæ ~àµsê!αeªWÚ—cÀŒd7é?jLôQ¯\BÄZl爔ˆ+ú9£>-áf…¬Ñ5à»F™c©ÇG1ÑC¢ÏO GÐ/&¯ˆ(æa9šÝÊV26Lt¥l-ÁÎò[Fúf\–Š3Ô»ø‚µ/…Ó›¯Í]žü\NÚ$E°?‘E{¯Õ*$YÆØóÛ$¨¯Ÿâ9݈tL *ųvºƒ·±fLÆ =¿Ï°¹4ÛV»€ó‰Í\Ìu‘k‚ÚÒIæªÉúãÆâxߨŽxMÝϤFs0å€ G3”+×$s@¨£zÖû#HÃ-VlçIœ1ãe[Ï/ˆ?f1<Ï&tu©%u‰%{Pk³²Œ•€-“#Õo¶xU}UòB2"· ߊ•ÍEc†ÄŸVš¯_…´±!æ1ÊupIJ†è¶Ì¯pM ‹ Ÿž|"bØ´Èâ„mîlÓòâв@ŀ͓ÕßQjÂãwÞÀdpó‹ò5íÛ½œêw.»ÙDãºTI3ÐÎFö}h¾ˆÏâDƒeÁj›ðÞå1,¯Õжh®[ç¿§9†ßjÍ瀙àN.-žA1¿› ³ßv·7¬÷ÿ¸˜b6HµC„QY5*–Ÿö·÷ <üºÏ‡zT[# œá‡4úãÔ†~X9m3>õ=ëëjlSxp’ö8 7Á`k?¢õlPùÎj… ;‡,Ùb·3*~=¾Z; õ†«ÉÙ¾VÓKéêCܦ:" µá°ºJ*dJÂR%§æ0gÒ¸>±›¸Á°S¯Í/P ¼E¹AÈ(õËJJäwFØ»×K˘u˜eä%nì¯ÄÂØ]÷Êí"^’£oúÚò4‡©H§`¡¿}NcZa‘¬éd,3¬¬àm­|{ü ˆW¢D¸W×pùçîfÊl=±¶o˜~ÁA|æ?Å?V3ðåæ/­ÕIµ]2õM1ÄÕ4÷U§âÝz‘Ñ’¸ O·Sà=ëõU²æ®è2Òµ]ººÊáaÒdŽ#eñåÃa܉³`n”Zeޝ=xèŠÀ{©ü=…q ê9wt½âåxbœém`Rr]Ý© ô=„L’ÇBËKÅézbÒyNH <”Ï嬊u°ùåkðh0«~¤×3&NÀç'žLv>˜¥w€%Ÿ¯ßcŽâ|è®8*°TÈÃþCÉFÑ ÿ»'åÉ\Rá]ÇÊ£9­A¹ ÑÎCT¶î¢®ÊYÆäij‘^Î8=£žÀ;Bц¹Ù4i8“ÕíiBg™ö Ú—*«‹Í˜J¥TSˆD0t5Ÿ h•ü‚ Ïû]ÚIâŸÊJÝ ùáÇ£œl} SÐË%5©=“>$Ÿø $Vèâv¦ •©˜â%es70ÍxÌY—ÆKÉI’I 0án»ì@Ë®Å!@6Lr´ŸèA\\°Ñ;OæµXƒ†Grü6Ž”†}7„÷Açô)¿ñ­aW%’¶ô€ù~<²ä1¤àÐGŠ{P‰®u‘I)>\²#/š’…ÌSæ\AnQjÜvɰþaæŸâÅÆœÁG¦µ4ÃßÈ|2,2Ã,±ýäÙ*èÏ[hEû¨Lv̆cãÕ‡ZQÁòüVIx[©}[Åp/³uœk"#Ôž"ÆMûnˆ-¦YÝ0_±gY§í«'‰¹‚riÖ ÿ^ÆZÇHRÈ2=‡ö·QÔ/#ãîNzØO]¯Üªýx 3 T ê{~À½V¦T>?ÂÛjQš%gKoäCëB DZ;[ò%nEG•(ëÕÞM樰ìÅ \oäÑSõ—1/g0 >Ó©y¥¯.ÖMK’^¡É¼S]™x…u9KÞf¹b¶·eSá?[Éf©…<޽5DÞ=ƶé۠Ј&r-¹?‡n €PtªŽ^/7ð_V„öùù¸Ö¤’5æL ×8¶’:}cãÛo7qFÛé€ä%!w¶¿¡@"l¾×;“¤49?uí»ÙÝQ«ïɳÑçÔ·S8½R.vÐ诚_ã·<ᮆÁˆ³jÇ ªÚìÉ´(KY#PN’äeLm¦µ]4^sÌ^kG©ö".¿J¸3õ5j¨*$’·KÒã8­«ÙÝ^0 6DÉ%ýhçµ)-ŽåÄ^®“ªeÃÝ_ê`üZÖ¸ŒscÌ'ÆÙY‡«3¸1ãõê–êõz¢u855c‹I=&&îd¸dÊŦ­æ_<ïûÙj©,çÒ²üÈXRŠUh¬SM²‹=o µÁÃ>]ÓÂi¬¥ŸÔ‰)Œ8¿¤²šXé «73 JŽel¹½éòjSuRvÚz;ÂAi 9'>€‚<ldãEpgIu«;k‘ðs\´ú»ýð¿º4K¤Ó ´-»þ’”´û&èïöSgÇjÆS”%ˆˆÕŸ÷²µû¦blL渱%,ÆS×ÏóÛ€oÒ·'°èž8ï$’5b-¥¿>ç9kU¦[WrA¬Kf€!ˆãm­t½‰ˆ7¥xX™ L®öJp¡Oí øü9´ŠHÿQûÚšR‘58ËÓiëCsòvµšü¤øˆF™vlAA ž‡m»«gU’xID»úûšü„Á¹ùl,ȺLº¼´»?­ð+gÂRöîoaá€Öi#*§ðµ¥R,B‹âÈü o™¦È1¤7ô‚ÿ}µ_ïãV†vÃ"æâ±%!1íYRB“[“ôÖâLv‚è)þÑ?•¯‹'&H-ˉž®³!Œ/0@_;˜Úêá0[  tö’ù™ˆa–¡W°íÈyáh[öJt«¹«a~®ìžƒ¨™¡€L¯¦Þ¢´•ä*Δ̽YÚ@éiÃÖ‚6/f®HÙ~!BEƒ¯@§ÙÙ(õYãSËÜc¬“óÛç9+RXbóäѶè=<Ÿ—¬fJm’\‘ xòlóÎ^îŠ`ŽRÀûZ²H»£9¥BhµSz1¡ÀK0ÞÕèÔÒºxóm°ëYû·zö˜rÖn,úìï4Áý”`–D¾Å•­…_¹&Ìè’ëYÃüÁHn´(­:ê½'üPUöEÁéIQù½Æ<,P´ÆbÖU6 !¬.=™IKU¤/'¢èxWŸã~VÕ_]uç%M¶h©[è0Χ"šj‹½ù{ëKÙ§m•¡‡Ó© sæw­2Á viWkVi„¯OºÖ¬ÈOþö"®Gõû ¾TÙ×¼_ßÔnIDa‹ÎVoýÅcõÅŽÈ—ŠnE‰\AÐQì»ýÊAö|Éšïx}eΗ"–#ƒ3ÒºÂ?õCÞÄ2½t™a €ÚWóùIÔaœ?p“ðKc*`ƒy:ÉÓ” –íŽéþæ4ù™ï/â_…꙱ι«Ž"÷ƒð8wRU}•X1}¡Q$µ¡y¯ß\±M ˜ª/‰d÷#Œfö¶‘ 8i‘›+ýš~€?C8fÿåÚ=¯—3ŒŽbyÝ?ˆ»qj<ˆå±ÛŒUZVvh2B Î¥–Ùûb6ì '蟡v„ªý-#ÀìÆ]—¬–,¨ÀïsAH’È‹¶7ݺÙ<í9=‰zÊ­ ØÃÆ$DÙ/›…6pu+œ&IÕüšÖ¾ô]oùuüð1‰€ý§v*ä\¡JU¦J]kï¤ä†KjOJ†ÀŽàgï'Ä>#Ó†WxA&Û.X#Šö®gÿ´ÝÈ‹¹"&‡÷‚ËêM4•¹’–ÎÐÏ7GÂoÅð- rVßUZÚ.L¼µQú›žó‡Ÿ9ótTo¶DîÕ›õß`„8Àô#os,9=Ѝlƒ–’Ë÷MËs,ö—ÕÜõ²o¨¶³ù²I£9ˆY k±"UÂ1ªE& 3Hˆ5” ÍóåŽT³9HÐ¥3ý—4ÖÜóEXvæ°ï5-L›{%5沺…ÖU~.äC+€â6²Ré_(›ÛJá¹QohUî;˜: -^EÔºqúñ²ü>®ÆA/h0P‘öØ´Žísíííóû’6âµÅc‘è\ïkð{^êŠöQc0Ú°WFOÈ Cðýfo7„tÜ}RnÞ¢,;/ñ°`}ÓÍăõi¶à4›¿3‘Œh¢ƒá ³Úñx¿1Ù©ŠM,Åw d¬%f©ãˆˆ,qç±õµ¢”³Ž÷„Äy!¼îa Õ§6õèš½õi]{°³Ë˜N:”±_©~âônE”ÓR.®†l@ Ø=vÉÅ[aª–Øe^•y¿°Ûƒµ¤Ã¨ºŸZÅ´KµRO,VŤMÉË[%<ãý|VÐzP=¥yĦز{y¼†<Š¢—l+Õ)9¿,‰¿vûfjfi4}Í wÿÖ¯àæÜëmõþÖo’HØN¨Û~•&!ßÉ­:©¿S妞ùI`ÄO! Ì:€RW¬L!¹‹³Œý¸ðµêü‹åW¸¨C>¹‚iH Cƒ2ídÊ8Ú±IPÔëŽAå^™IÛa·×”w´b¥OtCÞÝÀø­F˜Å+nËZûm/šœYœÁ‰†d,ˆã"Yþ­¬Å4(:ë§mØ8ω FjlU ƒ|%mû {0ý L–9 ½õmÝäî~äüP‡)”uã=÷T¯6DŒ.–¸V®?=Q>‹‹ FšÒZŽÅ“û$„ñÆŠhƨyÚ;`j*Dã½NQǦ¼½-Ïø«–„xVÖg±v¶ÐsìJo˜ië0&Ì_„×Hõ_Éœ:Ù2"eä1‰óÓó;q_9ø Îñ|A”•îd„gçÉw[ȹ羬¼Be12·žÃ…h­¸o~OU&½ø”lXS(ÕwtÒÇ&*ù¡:9¥ÎC[À‡'Ñæcì7Ç^œ`©2Èdåò¦¿ë[B?Ì¢Ët./Yq—IAÑyÇßÝÜ·ƒmwæWÙho×_¬á•%^w1ÃãѸo>К°=€v][͋ʺӟñŸ €«pýb´ý¤vv¨ç]IfúÊõè&w€hiSZÒi5:tÝðMï26ŠZ½ëÀÛ*ûPޝuÕo²ö1D ÝÃq¹ž¦Æ¹SºÑ£†­œÓÃŽ|c¡Ï¬e>~ùja…Š¡ÌBaœK^„hNŒ‘Sr+{4ÿ0—q¨Et¬LªòCigÝÓ‰#fÍøGHžô³w=CüþÍbSë17{¹ï#IŽÙ¦hŸÅÖ‡¿ÖvÀPå,².Jµ v^\&u§'åÇ5GƒÐìWý @r†àP)Hd8#çEöرŽâ|™ÁÛ€Ú+ƒíYоýoûq\Ø<«§GI$·3òsÈEïTÿù8¿x |¬ÛíÌðù‡2e^ç?*^S L¿;uô,ì1ÙÎùñ8ssB‚WvPz_°œÖ­iR¾Tè'˃í€=ct{¹¹<¿)c¾·º?ĸD,=#—³Á€Ð~íõk'|s“ַ혥d±Cœwó˜Ô2MŽñiÄ“¡½Tøë©iq=›Šd‰ÁŒK@ó<ÅVë?P•>Ù[®Ýø½͇€Ò,Ñü—ÿŒvºõ£IéCð'Eà~jX¥Šg—.ß:kÔT^Ó»è S‰"‹P´±ˆ§’ë}/iõ“Q2ts€¡–Á4U-6ïdjVx®*â‘ô®BÅÜ#EC›ë9ÌcVרLÁññéD>rY%±/á1ˆìqÈQ?ÝÑ uüßX¶Ñ¹‚Œ<[éÕ9Ç—yÙÿÆ‚Æ4ùP†Ð3h”Øü1Ϋ,—äà]Iwâ1œÚ¨˜úK­ç9;×PCzjJK€«1ÉC1¬ÉT쇦B·\.Ë™\&+·Ïvjz¿@Ñ¢òi¿Ü-2<vÕ~·+Ú¸©Ó' øÔHÒ0êÕÆ?BýjŽ)DzuVÐfîwZc€ƒêÃÅKâ©ò"ñÂß⃘ÂëÖüqS")…™’ì'˜{‚­]¸ªRÂO<¾¿‰Ê€?s­z"Xþø£ :{$oä1°o ×e]7Àïëv¥b&çCƒç¯0üEàûN`xTÓº®3äÜu†WùoˆÑén½å­*oÙFÆ£‹TŒO±‡Èüs,‹ë™ï’XèË/»9ïÄPSŠ6ÁR§8Qàé·ðužh†Ÿ]Ev1éçv0µ :Æ¤Ê ñ-Ú•M–¼Ór»çgÛqAgC yhé wà_ȬÕà¡h{‰•V\‡üV»ƒýne¯·°.WY•˜¹P+Š€&ò?ˆ›É/¯Eäí!°,ž»ýÀ hr› Í0/CÝÕM‚»‹þ¦€‹¤tÖ…k•¹Á¹4û–Ä+*´Þlª‰UH¶q~k%c¤|%Ü·,ŒlX÷g§Ÿ¸¾‚±x¢¾4ª n,5ìóó˜þĈT‡veJ–VßMo;QI«†ªGNx³×(CÐ…vP”Z_ÕÍ,)iâ8 ùk©^«~:›†¤¨eDøØ4¿¸é0{‹ÇbÙss“ÕGFÒ/ÑÇ*ñöJ\´ÕOÌËJÑ4Žhȳê`C»ò_I\½J­ãÀÓáqšJrómlèh’B1Ÿ ¨`X¶åZ6oMtåkAÏÏ2Cº%eánÏ÷Il¬ßjNçN€œê„Ÿ` Wß(+/Ú*å±Jø:> stream xÚ´T”}6N7Ò R ÒÒÒ!ËîKì",ÒH‰H*%ÝÝÝÒÝ]RÒå‡O½Ïûþÿç|ßÙs™kæ73¿kn&ú—:œ2`¸DCpòrñˆäÔåtäxy<<ü\<<|8LLºP„ä“>ÄÑ ‡‰þ‹"ç"lò@ÄS¨:Ûxù¼B¢¼Â¢<<>‘¿‰pGQ€<Ð ¨sTá0ˆ“ÜÁÝjex8èïW ˆÀ+""ÌñG8@Æâau Âbÿp"hЃ „û¥`·F D¹¹]]]¹€öN\pG+IV€+a І8A] `Àï¦@{Èß½qá0t­¡Nztà–W #ð`°ƒ‚ 0§‡gâx8 £¢Ðt€Àþ$«ýIàü5/ï?éþŠþ û#Áí€0w(Ì ` µƒ4Õ¸nþMÚ9Áâ.@¨ÐâðGí@€¢ŒøÐâ_ :¡'.'¨Ýï&¹§y˜³ ,··‡ÀN8¿ë“‡:B@ƒwçþû~mapW˜ç?Ð [þnììÀ­ƒ¾q†¨ÈÿEz0áüÇfAyž ðð o75÷ï#tÝ 8y›ºðöt€;,xC-!8žN@áè ñöü·ã¿// !+( ç?ÙÌË?ñƒ¡n€W< äðüþýófú 20fçþú·Ì­¬­­«ô’ýïžÿñÊÊÂÝž¼N>A/°0@øáÅû¿ó¼Bÿªã_¡*0K8àw®ßõ> êïš]þ’Ë_K øïdðõB,ÿ» èáÁûÿ,ù?Bþÿ”þ;Ëÿ]ìÿ[’¢³Ý–¿ÿÐjçþåA¾Îˆ‡UP‡?,ì©?X†:Ûÿ¯W|X ˜•Ý?³„:)BÝ à—PÈúOÍüi×û½ovPä%Ü úûàäåáùßÃ’l>#NÂüÓtzØ8Ä·øCvê¿KP€ààßËÇ'(::Ýqnþ >áaKÁ·?¤ àæ‚Á!€‡v½–pGœß·," àþ6ý‰DÜ ïƒ ¹!ÿ‚|nËA~·Õ¿  €úø %nØ¿àC*ø¿àC*‡Á‡X§Á‡¢œÿùR¹ýÿ«u³£ãÃlþìÃ\þÆ|„ 7gn ´©lº,“¡råÜG?L¼4äãÎz…èV7[û¨“’<ÿ¢@q®‹WñµM«†ì›ËÔ噟žß*éªÜÎ9éw¬è,>Lÿ:GžŒñ¼ f˜&¨CJ7ˆ—¥ÍuìFzIN؆-¶êÖa"ðzVÑ9ãÊLš§(¬Ô¤ÑÒV–—¬FN-¢¿¿®¨·èÕÝ<}ü,mÝ>*`#Â$4Aã3à ñ–+œ®¥„«=ý½‹D]4íá~ª.þ›GŒÁ"±^jyÌRýÅŒG·i¹.{Ÿ‰=-”H¤÷ÀÝ$›^›þŠ~ï¨I—k§ƒ¬SÈJbZ4pœ )؃¬ÍB«îã2S<±ªêQÿ¶u¢±ïö¶ûgŽ:’³´¹¢p°ëó¼MWQ%•U¼tŠ@QCä~òÚ9´pXÌa¥ª˜2µLÜo7ãQ ” HÅzÑùü»:°—fe[€ºKš3{%ççÏ]Övr, Ë]ìheVÞ“Å–µZE×srSÑ_j f„±}[b=é[CùªS@â,diú‹‚MRýןÄ=utÁ‡C—Og"XE£ù¶ç©km„· ÒÒ}ã’CÕ¢Iñ§ðª¾ÎŸ'â Æà@OÍ)îóãÌ0{—p±\°Lb¢5‘‚YÔ=±_T‘R)3“eæç€'‘\òŽ(¤¶„»vveUQÈ¢1½HІX/‡Ôç Zw™x?«z¡·÷ø0D³æ70‹Ð+cqŒí|ùd˜ò¤oT1Ñ£B«Pá­Tö¦þq:Ç ™T¿çe­x¿õ½ ùÑ'®Siö?•j"õÌ×»ô«++Ë'ʉC„q®¡ÇÐÛζ–f$x#—ºÀÂÆprëü(þÅUßÍR¶û*üÉKÒ‹çŸS=(ÜÕc÷RbOËâ= ‚­£ŒLz¿Yú\Å=Þ08ÛÔ²ÒaP²Q:üZÈr´HxôÃKÓÚáNÍJhд´—¸–F “çÃØÊ‡ÔAdBŸ EŸÚlVÒ<¿: Wz~ìsŸ¤t\×ØÑ i³Å[_S,°®Ã 2BD$-ò¦%ƒ3.,8x°mÎÚr'çãÆ¶fƒ—åÜû8C˜f 3 4*ø0]µ´ïÝå4-Ô]ÌÂA¯ÀŸÜŇxOƒ±Ä’[I›°ƒ ŸôJ„g%Îô* î6‡C<t«L†fì›¶ß^|ô‹NhÝaÏ uJ[ø¸dÐ?²¤Rª~üÌÀ°^»~'·)•MLôGÏšØ50°X½þ¶òxìÖì~²•ôeã%2·yu¯×þÉ)íE‰KÂ-Ò/:,ˆ€µ>-­uúsíg^Ó]«F…'Ä­¾¬ó$½ø øDMéï'EœîàªN9#RµP:õî»?4XaD¶'ÁY€€”žNt{+ ½+.qéG Y‚ öµ^KðžÆÅÒu Õ¼—%¸œ|ÇVùÛ”KNsþ[·c>;¼ËðQ(ŒvQx>öòë¶®šn®ªr‰;µò«ªÖu›! µ° ?Ç쀩ºxB=¦nJ¦Ìóèp± Å.€}ÊÝÇ«¥ÏüsýÑùøáJ¦çùfŽ‘5f´ª^¹àãF=;ûU<u_Ç×ó¢¼—¥—>%–…RD sxášÄŸÄÈüzù{&mˆ½—ï¢vrtHõQÈwB͆>l 8ýb´;¸11ÓðG.fÝ%ÀO ‹*fƒ¾îŽ|¨üDÙs”åRLJ}ùI¦çãY>«â±À¤_j0p]8ãcèyqK}ï÷òþ#%!Go ýá:æk½õŒnGÓ’éHbô,õ¹þsó*³Î8q,”ñlõƒáO´mÚ…­Þܪ£é+!½êñŠ —U™µâgsRäôÔ¾NåÆFnO+l—p'‰¬h2nRœd!ß´?¼Ÿÿ(ddwlVΜ÷ÑÒö€`Ó6ȼ$´4(ésåÐÈh_£”¹×DÌ$·ŸèjÜú¾h#± &ç†êc)îRµ‰|µ1“®*Çé5³×1‚8 Uuiõ‹‰ØRž#ï6­ŽÐŸgÅð§ùO Ì›šàr`íôÕ^~ž!ÑÖ (ô=vØÉgrYà1œ;vrAœè0n„¹Ð§)e‡Ddãܾ)Ðd/6Ï¢á¹í=$Æ%€Ö²Øh£±qŒœESHÐU!#¤Ÿ ¥b26•<Êr¢µÎƒºàN1&ȼÅxiÔpw¡¹tcyÿj¤ [÷ûbÙ¾!kJ¦§Ä aÒ±¶RÌxQãLQ»NM3”ƈS¥ÓLe9&YB¼ϊAÇ„¯Ì7zz­aºã 4Ýð³¬ÖÞ›öðiÇÅè×ÓYÏwˆtÆh¼êG¿½Bõ:]kG¦Î’nsʯ'óÏáë{Ü,7mPïÌ¿ QÀ"žmö¡]¾|»•Å’¤önŠE4Ë–A™âe¦k ‹!e%½ÊŒÐ¡ŠBWî“q;r+ ð{r žè£4³òs¹ý_mÑbú½z²®À 6²SñÓà¯Z%,ñ³²Ÿ9ç.Œs˜ ©aâe¾}VPfƒ†¬ÞFbzW*eEâ±:a—›6Þx•úP‰:ájZç·†VÏ:+˜R’Ö ¡§3ª8»#¾zi¡ùÕ®DÞH™Ñ+3Ûj; Ú°HkLjX!ø}Ó^‰ÕߺH©VÀ'*H$+ËÆ"™úWuïî÷NIèûÂ-w(Ão+óùÞ¼r¾éuýÚuYÚDSéŒNÕ®†É6±!ú dNvƆwõ®G#Ð K¶¢Ðݲ؅ë§3û9†›Lr/€—áCºÝ³ïT©S>¦ß(¹ý&/ƒSLM¹°ñÍG«nˆÍTÙ¼Ïâ.ªÙ¦¨ir·”ß 0áÞàé[¬­¦2.¹^5Åç`ŽNhSLáœÉUÕÄ;RèYꉟ>^ëxEQMíÙVá‘^&übÆö¼( uÀÌò–û8’_ts ‡N­¤$”ØÕ\â ›ª`Ô¡‰óPˆÖ;:1ˆg6' fßx¼ŽÖc6…†DŒ†ô‹–~4*iÔPæ #ÔS|–œ²êG.ò†îù¿mp á©Âùu„ì0Ç#Õ^zÑ’^`A¨ÁI.»°X¡ ]…*£Œ{¬ÙâÊh–F-ÇùXéÓäj2Ù›ô ì>7Ãk”ÞºñJÉ/\É:Úgþ"œwÖ†Ãïæ…g†S³Öb߆š¥ñH<“>†¼Þ^†Í€S—_¼ ÛÿY®®‘(¾sOÅeÒúRªÓÕ:¥ÎVôµ^&²b<ÏË'§ÉN)Ö¼½ÝV½+3?k÷ÉLšÜ"Ð[·×‹túYîÝÈmˆFˆä>‡ÖéNÙŽ«YÿØ`¿ÝZ¾«)©äI:mAaµTã¸-wÿÎ;1¢°¹*çØW“xÜ™çŠá…Ùȳ†ªi½ËŽì·ç(¶ØžýGÈLËxÅfßåîÞÎÒ»Â.f Þ3¼¾g.·§vSâÓ‚Ç,áˆÒ‡•êXž©Z–¹4ùo|ʲ¼cÊ27é8¬ ®TáãœÑ™ý9£•ÕÑ饻9ŒÕú6£ßvG§ÝhÏÆÂ$ UI©µøºË`‚‚âj·oà¹Þ=,˜Â*´•¹Î¸P>pù=ª×ʇ:¤Iו§„¹Œ·J¤üf‘Ø%Žw5ó½ï æ[Óάc§‰¡÷¤VÑ»õê¨Y éÃwðÍ鵎oÏWd MåËï¿ñY ¾-œÈ¿Þ½’iÚ¸el*R{Õþ✻ôåK){-Qâ˜+Î[”©‘‰™Èn”\TúArÚI’‚|ôY(ݵi*á0 ÒëˆszÖ¹ÄG³eE|Å N𘥪²!Ç«ô¡IF3Ô¡*¾‡ÑJ“e›–ä¬Ib°¶ãýì¬Þ¡ñLXÀuî:´&ו+$”•U†x ¹¡ô£óæDÁ-f/i’Õx÷Ã>žjJFBÙY;»Íš Ò®äïoXT½«\”úz÷.Wo Ãp¶×Å#ݧ›º¡þQÛµ9žˆú‘S zÄz¦®¬ÎV²Aå*iAù×§Œôµo¯U.ٔ˭tF°ü§¼»,Íöº?2Š ß@C'c/Þ{å¢Ðå>:<'ÏÊd׌Gºñ-:‹.최ÊûVÒ¯ºcp3·çxËò²~¨©Að¯ÖÈËd¹/Û—ÄÈ ˜ÛZƒ‚y°îŸ]3Ucjöeæ™ÌÀ­Ù쾤“íÜͤ;ï¬Ûšª”mè[€Ó5r½†˜…nqE8žÆåV´à\|TÈ){¾gŒ¤º’/æOГ3Åãã|vÙb¯íö”D4:5LoçÁt?¯ám»¸‚ûtl Óf\ê‹ì4 ‚Ôopìá–GRl\â«"¯ü—1xat©`Ðà~Aý¿½*L\ḣ҅²ZÓ©­û1jWÿ@!*JŒéBêM8ÕÙÄ&Î.:8v³jmUê´]ûí éû-Y_»8$¹ñx!dX-Œ§ï:˜¨WW5Ѝ½»+O‘ÃÛ·hSWæÍh×ÜÀÌÉzér¥Ö7ÁP%!©,ÉìŇO9²5©"et‚ÇqŽÕ&é’Ü7 jC/o’°*®dï˜jÆu ‡ôî­S¼>ì¾f_«fp‹¢.ÐH_A‡®4&_ )q‹µñ¡nÌLñ è+ ìY͆-:$Yœç´!iÄ1!ßD?·øÞœóÐ|ð«yââM’|ÃÎ}îàß4bK2–åXvÚL$þ¥+h°w‹ÁV­¨ÓipýÕuÍ­J&iÍ‚tp©;d/ô¶*Kìc}q·ì#Ùñ€«b¢ýq—_ùIœ`j'¡Ê£StÙíûMS.µ‚\àANá€`þvùÛ¡D¹„ïÑǯ³S@ö.ÇSOgŒlf’W3§ù­⸧þB¯æ¦ž ŠÂÕ Ðƒ0cÏù$LŽ× ‡È,–|…Mö–÷ýOJ÷\Ÿët#d´Íð³~æóái½ñ¿Î­T-©ž)®zŽ,˘d^.ãÕ+®mόʟ×:{<Îа®øî„ ©®—t¦¶àÕ½îb¤Ž Î6«;¥å:xõ—hódŠíçð6¶fkf‚ÿ¶aÙž§ÕKz|Î]¤l×aa&½ÙÜ„#F[Q‚²µ½ŽKaýàÙòödêÂíTèŠG·½uL"ÚÛ,Eº!ΚŽ×£$ª;`ªã¤xYŽ3í†QNû]H:7Øý;ê×ô'`Ïêü†½Ú"¶[ýF`ÆgûESágÝ.fZ£ZÞ.=í´à«;òïÏt A~Ƥ.ÉØÛ€EqƒN”Üî_•@’Ðê»k]DÏŸ?× «_iŽéHl’çžTZXu7ÍZuF†¶îtÞIÅö#k}(Åá}–sú1cN“œ"+Mu¶À¨$AÒ-ãSÇ3 ø4‘l\–ヲÚågI!a½¨v¾§bb&¡ß%Ö룱FQª ê¸-r|›˜ÄI½ }QpO¸–ˆžÉÇk‘¿æq¹x½ÙrÀÊC4S¡B¶b·>_μÖ‘&˰NÚà¶3ÕJLUjÑ÷ÄXk¸idÉè½°IýͧÇýÅAŠ7é…­Ÿã_öîy:‡´5zZE¸â¥põ‘Â̓-¯’|7%QÜbæR02âmÎ'ôéêµL%tûÃíA”æËU oÆ2ïR({{Ä[Y¯¾òÒH^PÙ­|I5‰ kÞ³0T™??5´ÆGݾ¶sñ–[«ð,ŠnºÄoN} ¼1Þ +`õ‰oçîT¹/ó}r “0i»go3>2#§¥-Jot„‘à/ñºç ©6k[ÝÊ¿0oŸðÝ¿™Âýéf~À<1 ‹þy)‘ù‡šîIà…½ó ‘Gp1;°Ñ—ÔmòîÚùçÕµ_ì=žê» H€4æÜ¯žúFïër+[Ǧª¿¥éfôÞSÖòr·öqrŒœ Ùb¥.ØÈî;sªsœ?üYOû¡•• tè•Ëtþý²˜Øõ ¯]‡“ø…g¾å÷»÷| Ñ3‘½™Õ(†Ið¨ûã+$C©6x[qp“ZïÆOÉŒAŸÁ‹b˜+Ö‹É7y/ 1BÛ5k Õvìİ%P‚`‰®*ãà„sÿ䛼õ¢Ì%,éÎØŽ×‹cZç•6YJ_úLb½¬ÈMrMŸžÔj}µ¢ŠQ5­A?5Ý<~®”r,”S­¹qÍ%‘v¶½Î4Vr¸2þYhHp&YÅ¡gvûŒQ”h™Ëž.¯½££y"tÿ{H¾+Á¨®(MNüך™ðÓŸ>v¨o¡âÝä«Ý“‰ÞÝc®®õfÅÐ86ëÀ˯± Öã|¶žöOJŸîoyŽ¥ÍPè¢Æ|L>TvðŽˆÙòL‹Y²€Ù¾Äa'9¦¹,5ÀdAñ?Áø:|9UÙ°ÖØ–:ÎÏyQQLŒYEø8ð맺@×,d–&Œ¢Ì^=FX7Xƒð6ŠR#™÷'\ýJH2"e¶ì“F¤ÙŠIpÉÚ†M,Ó,;Îdêœ ܬ)³õç´[ •r~·H¤XͧãÂù= /6õä{s/©ö'3"å]J„Ð ôqj :°«;\RÏHÜ'®‚D®‰¨}"ÎfëµaÁ2ã’¿Ü^Gm Á·7Nº`MDaù0uèR?ÛÇ[ÆjåSûô¶°­õ5“k³MŽÈY›£üØþºVò3©œéNùg³rÛÇ›€Õ£3<–_?E4ÈODìhû¥Ñ“ÇËÆŒ˜FYÂ$u‚Ó ‚ Ùìµzãf ËÓò•åÙ_^Ö2¼è›fÀ£hMIVš¡ùèó8éó­2Ý™ü#0ÂÊë”vÞ³²•u_‡†1’–×ýcILI™‰Ð EJÆú ÷Ùþ­h‹£Á*mÃùŒáZ9Ù·Ö ² ?œÁ¹*½×ÍÉÑÖ]ÉäB¹gÑ݃öÁÜ`8,Ö×éËV³¶/r÷> m~"vÀæ&›ï8¶›QÁW~¢¯ Òô¶ÐÕéY=nO!3^Q!òÃã°Í!©Åœ®x×;”£ùŒ¶½Ù Ö~èRØšOp"~ÓuBºW+„ö™íï8—…bI«U¬ƒîë~´lx ;®8X‚»F‚:‡R1³Øy³úf ¤Ü wéç׆\¢Aâ$‰ÂŒì÷+-F¾gýþ=ŸÌ̼áý•¼Ü¿eZçðº^1x£‘j¶œ¹ Š$(§S—”ÈU¯W_/ù®:AK¡›‘œP¿ævz+%€}$žŠ@¶ýþ›i °CBuœ\Yk8ÂâÀ}Ñ`ù®õe§{¿"ä7¯Àø¤®æ~õkOô R‡Þ–Ï­k::{Ôw!øùˆüu[›µë2yëe\v$Un!#>vƒE#û«†/¥Ë#?ntäðÖHO>Sg×y“ýбs\o»xBPKdˆ# ]Ö.ŸØ~Gwz”œýKDFyS¤™=!¯\ƒŸ=íÛemSf㜹Õ6öí#RçXQù’àPK–&j­yŽ$f8måÊÈA¿Ä²€¦ ð ©‘‚ø‹©‘ô’‰\åÀ‡“Š´]Émd}¿IëPG:·¢G±^ NÃï.¤r.ßN);R‚4…å¯9Ÿöª¯zs@’2Í›UÒ„ 'q—x|4xUæ6þ7ºLæ8§Ñ[?<¿ʾ3ôunÑ„2š]DÎCЂoAg¡Jqà´JÛþï§%ãóAâŠÞjgÈ[\êu#zª«Ò% å†<ÑrlºMmXL¯Îܵ'Yÿ˜8©OÕ¡ Hf $°Èò|£eE7㺦­U`4ñ,û­–‰,"ñQÿŠ3oŽ’å±TùÞÁV0–Û§>§ª™-å7‚gøI@Ñ<Ú¾9 «¯g’¿ªy¿È°¦gµY‰ßˆx¼u:úÁŽ7Ð4>hùcõ[Ç &¬æÞåoZÚ{)+Bâî¿ÏÔŒÝUË 9ÝßÐI¿ÃS>¶x™×ÓØÃàB¼+7È»¾4¹„weoÆsd§b_ñw*†(f–ÄöKDkžëÆ·yŽŠ£‡,•lx,0š`6À×Q‰‡l¢&XuY†¹šÿ´û®…l&œ† ¼¸FuJ‚TÉä€Òäí¤‘‰Ó! ¯GŠM0L‡kM¢àŠ¥Õ&Ó„Ͻïd_c‘Gú:¦MfuãüìsÕ›6oÑG 1Ä24ϳÉm‡Qÿ vpÆ–ÎoD¾‹Oç•2˜¥[»&xÚïÍf‹4˜qñãÞ4ݵr;µÖxX¶ó¦áÓÅ´-c/oQ ù ËþÄŽ›_Q‚¼Ïó¬ íOÍ×´¯7ØÊùâ¤|sévÝc"+ˆCäbÛΟ>‘*ÿâkïä8®Ë§‘Ô›0¹%™œ¯C›Ÿ^žáw×€¿aX=[lfaI~÷Ë Î'ÍöyºGr9³ Kqù$W*ì¬ü™ZðЊVIC ¾ÆQ‰úU¨±ñäù›õ—Qä,eS+È7þì&Ë3›"ØÒÅŠæD;„1¥`Qâ°6šâXÏfˆKèÓ—.lѬ¶§Œ)ÑÓÜ¢ÚWë¨GÕT5ƒG³oRŽ'¯¹Kc]GÔÊHn¯ƒÉ¦`Ó“1Jq#)Jª‰_ ÚùZ[ÃèùŸ+‚zU8ÂV£­$ºÈ\š£õ÷¬‰è´?}_¯Ü+“ Öॣ:ãºx–a$ÙøÝö¯E¢»Áѵ´}Ì5%I 1:Y²ð}„koFŸU›Pч‘½:]Dç(3a>75‹âMÐiiCÐþA„HPy¹‹L¥'8àú…d?¹UÜZ×Ìv¡à fó®½õ©»K†ÁϼÛ{fàÝ©˜§ì>EW“û|ÔI-ô€[‘G¯¤vš•øÄ×Pû¥†jœ®È—óaË''þEUQO K‰øMbh#›õïp˜¿Ê^>%rpµ–±ÄzìaÄ«ZÍZ{´7Y!LAqëý†„¹hX®’¡xA8ˆ¹ª]ÌüÄá1ºG\«œ¼£äùx)ÒBÌ\Áºd–3¾ÌÈ>Ÿ-2XÀâDmÐS¿˜QƯ´­“pf.2œÖ ¤Gß\©WBfš®͵‹/è£Åv *̧$­‹Žû?¬W@Ž endstream endobj 938 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„Š ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ÃÐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmŠÀ¹ÀÿÖ¸Íá,…”þ„ Átª¨‡BµÝ]€`1 XR|KŠ‚@·ÿ¢0Ò@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aõ 8G¸+!#â4AApœ÷?BðÊ:âphiOOOaˆ+V…qçz"pŽ@c8Žñ€Ã€ç-õ!®ð?­ ¸¦Žìoƒ Êç ÁÀ…  Gb .îH$dšhé Ðpäo°îo€ ðÏåÁÂà…ûã}üå BQ®hÒtÚ#\à@u]aœNAÂÎ,Šàñ€ \ vÀ¯Ò!@u%# „ÐáŸþ°P à c.ç=Šœ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ÃuF¢<‘>Kö$Ìþ¼ ˜;ZÄ ‰ps‡k©þÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØÃ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0tþù×ÉšÀ0 éâýoø¯‹¨˜ikê« üiù_Fee”ÐGHL($*‚AâRÀ[„ƒß?ãBêø_-¤= xì¼^ÂEý]³ÇðþÙ>à?ƒé£Ô…yÿÍt+JøÿŸùþËåÿGóó(ÿ+Óÿ»"uw—_vÞ߀ÿÇqE¸xÿA¨ëŽ#¬а Èÿ†ZÀﮆpwýo«BX%¤ÒB`qaøo=«Žð‚à 8¨ãoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.à KõÏ:ÔPì|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) š0ì\øGl¨;CHþ‹„ÄË¿Ö÷‚Cã(¨L°SupËA¥«§Ðò ,éfêÁQ¡Á‚û¸.µa›…x“¬ÌIgê`õûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8ìbÇÏö.Œ&øì³qŽÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓøþUÝñ1Á“‡¡Dý–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(ŽNM¦—MUœ¼Â|:ïòÏœbtz;+а®çs|ÉÕú[ŽK[Ö7xÛo9Ú&ÚGƒ¿àÙéÐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶ì»³vXˆŽ÷ähÇÐüOw-ËwÝÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µÜì²HÝçò»{>xñÓ¼íÖVežI·Š(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­ÛãŠ*ô+÷¸J|ÿ@÷(% äÈ~ºÞÃ$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù NêеxÒg†WėÛ${òº¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Zò›—èoÓ-„ Ü—ßé%.(Ò8ú ]™â}DýÁ¨7h-þqt‹ÒüNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»ÌaÙjÃqfw†²¹ú]™Í¼`î¨ûa?yý–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîwŠ©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Ððºýø} äxÜÐÅê"Ž7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|zÒ2”CMÍaÅÞ=~ìœ+x?Ú.>ý;¾¿‰BÕ"n£L¶¸~…”~ú¸{ð¼)04I7ræ‹E]µh•©zœù<‚¤ÕK¾ÏþƒfÍ‘%‡µ©ÚÞ+§tãÞHcª¥%Æu`z*팋ÔþÎt<ºz''#Kó†ùþt ¬þF}€ Lécgúr Åž,ôÓ×Ü2ŸÝá žðöv@߬ۋ}EóGûßêæä¯L.Õšæ~ìE}3öLY„]Ï€7mD¶(#šWÙÙ^11zm¼ìœ†[™¼“ÔÌy+`Ë 8ƒšk1W’HòÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ý-&í…‡÷T…ã}þWš:U¾V;ïFx^©cÑÛÈä¯ëŒôð~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Ð7óJÆÁÑäS"Å’íþý -gåøðîS—oòžñ³wÖe?iÞ©ì¾èåAÿòŠ_À’ºWg†à Þ:¼³ª‘±N¦¦çòšSAcg–3Õ’>óžxÙ™øaÚÎ\Íô™“†­Ãp˜Ñ³ªjJÞ¢Ï2ý•FÔfÁ*h»Õ·Š2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätÃö³ï‰KrJÜA3ûq1Î"ñå<»—Þ —Ö}¤ ¬šÓ½k~ï™Ýñ;Ù– ÷'FyµQçê€êwºÚuc[ëžôÄ™¥Tîe,õÂ\ŽL5Ùz‘çÞp³îØ¥‹Ó™‘¨1ŽA_k`…uÚÒ +¾)pF¿œ'‰%QcÌ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹ì”Þ€jO¿ª‡šš"5üÜGSvIÎ ?ïVy£¼Þ×;•Kñʯ6y™Jbå]LJ¼¦Ðœm¾úP»žùú!™G/«3$$×’?=`ŸZ@ŸòÁ^‹ÆÒžYŽXžQl„»åÇÓrÚ·gåõ¼¤mVB÷nD3_ÏÞÐîhò±aŒöbëØ$öò˜2Ùéú‰ÈJ8ÓaÚ—3òÌ38½Å(ñ3ü&«tÒÁ<3F]C…¸ºž¾kú*å+&z{cˆÍ1êIù¤ËtÝïö×/-ÿãÿàtÓ¢#Ku]j5ŠkkÄw+ûFƒzä\ß@dã)ËÚ¤n‚ŒÍÌ(Y[‹«¾9¹ãn/ïG&FWc·Õ+ûùÚ–Lñþöã´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Çš2ÜŽRk".´0pšLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwð„žÜ¹²¡•ŸÑ=šzóÒjªþõÃ7gŸŽá([ø…f ìZáË»ÑòŠLû1•Á«dUOÇ›,H÷С£ÛÎdyAƒ½J¹´¼ÖzKÌèh(iö¦cï– $U¹Ì¼{ï-ǶSr/¡ÈŒç:}Øý: êw6‰D?~©ôرƒ¥ ynKªý6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+E݈iе1Žê ¾­â/þWûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•þEÇËM¬£pþ ®˜½,c-ö½ïÅîpPþ€ÜŠZœbEs¢ð¦èýyLM¡t/»¦|)|uÒp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨ÞLc¯öúyŠË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×Žîn.n«r>?óh‹jÜu:¥#ŠQHÍ9šîWbiX‘.ÁJ·Z÷°ÊhŠ–‡¼¬Vpi«­†2Ð/îïÜ€SäO­ áÀ>аˆôÄÙɆ&%LŸ8‹,ûÌ‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Øòf£»Aï‡ôHÒòä5Ô$`ƒUâÆ³øìfPRä§IÅÉõþKª”#7¥d.=x²U{¶½Èžs½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸðO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄÐìޢ䀗ʬö_¶è.ùïkœ‚ÔR)‰ fÁKõ…1^ˆÊHógn—â+ž'–ÑŽ£?;è_ðô¶ž·ÊœÆŠº¹~;UÈþX¨S´'ã³»kÚ$þ6´=çõãbý¼ÍQÚy²VçùNؼ×+-G5¹ž âðBëxk Ð4¾Ýºù›ÖÃ㯢3Ìå7© Ã.¦®wYRV¦Æâ¡î'ÞMfÆÎó$±„7’º¾ÖçoÛBƒ}[îŽæš¿ìâ]ÃÏ­»úx¼|Ô¡ãÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûÆ¾Š›wú=¨:¥É)ÊCš*„ޤÒÙô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SãTÙÙ×p47¡µ|(Še`Ï«Ÿ;VªuÕHx«oÒ íýÙüC/:³xkLåÑ}åÜ…¨ÕJ¹LìmòC¦‹[¯¨õL[š>œ5Kg5TÃþE¡x NÞÿAu?&uë2ÃU:[C“39™3µÃÖŒ žíˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJÝ‚Hëø‰ms1À§ûJTe fRÝ=]¨X~4öÛ!µZáž‹s±"ÒH`{@Æ8.™!êý.´‚1x¢Þïú‹Uµ:æ¦A7ŸK±,Dg'¡Õ¤[=û²²‡Õ ôT 9¥rZ»kÅÚ=¶ßß$Þá3öÚœ_‹%éô¢”žt,¹IѬªÉ¼ž3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸþ¾[Ïæ(Gé®ì˜Š`ÚNŠ8*6•:íÖ[zòk—\J¹]ð; tˆ?ös‚ª¡Š¾¸ŽUýÌÖŠ‚ÚÍÆÈáý$Îõç›39;ñŠ&¹G¾ÚT|g;šVYÉü‡=ÌTeùú“7­ 2N ¾%½ø_úivMã}Ý«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,ݤĤq8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézÕ%œn˜ÔP(¥/Ü÷ÝÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.Ò¨IêE6+]rg ´')÷—C•ü˜žXQ-xß§”ó²‰~õÜŒôÅãö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köõä£Ó²§)ë@@ ¾nìK!aí,S4§X¯’"ÏŠ·â˯ŒŸFŠ‘…·'£Döã†X¨¼¨’¶wùoÕoj¾³90’Ýa{` š‚L/ÔL9I¤Àî`’5UÁœ-з–ݼ‡e{®/xQÉíez„_ü©ñŽÁ¯ònÓ7<4mt§â‚ø‡«ùøo©nzò¢…CÔÓ §˜A9‘*š6°º©Ÿšõ±'sÅ&ÜlxE•ê+T Õ¥½¼Skz‘.çÞ¿—ŽŽ8óŒU÷ˆ%ôÖha™†À½öþå誹ȶu¹F ~ž@Ó[Ï¥ü„ÅÞLžïnsIz-Åqµž£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"TÒ1UsH÷’ê-œ~^+%¡U{pÜÇÓÁðð#YwqÁÁÝ&aPíŒÐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+Þë3ÝGw™sKû¤t4l¾jnŽ£vðEAßúÒ=d-[StjZÚ~Ž›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èð¬ N&F¬CžA­x,6fõÍD_ZêI>ã_׊æ(Ìfù–Fí¸‡Ž'QÑ ©«ò‘’Ô‹=þ|©”ñ€çO{îxJ¼áì_ðuN+á…3s‰0Íj?oÕ jœO¸Þ³û*› ¤·‹ºéˆ2]ãîÜZ¾ dœË+_È?xD9\ò¥WT"ܱeu³ÙWKXÂý•­‘aþþøC>ÛOSŒŒzê×x’ï‹'H0%ÕÜ/š ~È 7W g§Ðà·Uxk¬®WB=ßp:6à°øhÝn?9GŒ$9%j•èÓÀJ šâ¾êtnÐ[ê¼Ý(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Õ´)y x¬eúŠ+,ætÐ;c"ì[ÂÍd4¢iåÌê˜mÍäÂ35÷D½cFºé5­AÁ×ÍÞHŠªÒ%DQtD!Ü|Ää ¦Å =¯„“ÞNÝ”#¶×0zþ#é°qЦ¨õ-/Þ/ÍâhªrC©~6á‹ìÙØ~;ÙÝG5ÖºF¡ Mþƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ýì²òg6¸ÊåÑJV-L›t£8õ<\Ï]…p„_ú¬ªÄ¬òoì•ãsË‚&,yŠºxÂÚÏVFº —Gõ°·Í¼/ »Ö9X¸Ñã’hî%¶kšõìÒ·®ž…ÌÎ?R+‹’Ž3y‰ô¾†ðô5Ö;ŽºªÂ)Ëày‹¨û0\æA®ïã³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚þŠãSÊIÞ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åšŸ\£û8ÒŠ¢AöÁ+}÷h³¤Å®ôPnÕ¹ç[²|2}u^c(hÅà>¡Hý\ÄI-u¯fïf[`¸9–Ç£x«úãUCαwÅ6z5tz0#KÞÅiÖ²¹–Ñ÷x̯õ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 940 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J ººº €°h \Ž›èŠÄ!€0, ノ Ô;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj àÜp|@0 ú¶Ç¢ññ`0Òlƒüj TUÔ‚ñþ™ Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:; £NÎ0uå?¼ ð ÃÅ„$%D$Å0' Ì ‚üYÀÈÝöË úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷ ¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü" ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã© rýÃt !1!þ ôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬ Gë_í + €Æ¦êmý1ð–Çg‹êjà 0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒýd¶³ ·®UyôãŸ6÷·÷Fš¯O–l 2:T µ-_ò£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q© Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š 7 4U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘ ‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâ JŽ,j‹ Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð øÞgëa‚•ýI¹´òÖ ÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô ‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ² ┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±w õf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ $ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9 ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔ ñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶ 8>öòSö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê 9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvè ÕMNŸ êa€úèá¿À ny@‘ŠçÂêØ ±í>—=³{¸ð†râžÃ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšê ñ–&Õ°.šÃÌB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9 ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏ ì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9 l핯ô¿ÞH&n&Hó }ó âMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}" Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJ AȸJ(ì/BOrg h ³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊ ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7  ªÙ “xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc* Ÿ&|T²-Hyt(uý³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì +˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â ¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛÝ#È\®W› Á”Ï{îôb™ê¸ ‡‡.Ž4+ &±›ï6wójóë> stream xÚtT”ïö.‚€ C "0”„twHˆ„0  13C HKJ*¢€t§t#©tç )¥Òñãœóÿ{׺wÍZß|{ïgïwïw?ÏÇÁ¢«Ï+g ·‚(Ãa(^> @AKKM ñ‚$P”#䯛„Â@Bá0‰ÿP@@@(ŒO„Âà´à0€º«#@@ ðPB@TâÿÂEÔ ÅP‡Ã H¸³'jk‡Âó¯W˜ ..úàw:@Î ‚€‚A0€eqœ9ôá`(åù\’v(”³?¿»»;È ÉGØJs?¸CQv€Ç$á±ü  r‚ü™Œ„``EþñëÃmPî €q8BÁ“á ³† ˜ÃújšgìXóààïÝøþ]îoö¯BPØïd wrÁ<¡0[€ ÔÐQÖäCy @0ë_@#ŽÉ¹ Ž + àwç €²œ„ðïxH0êŒBò!¡Ž¿FäÿUsËJ0k¸“†B’üêOŠ€€1×îÉÿg³0¸;Ìë¯a…YÛüÂÚÕ™ßuq…¨)þ…`\$ÿñÙBP ˜¨˜0â€x€íø•7ðt†ü ürc&ðñr†;l0C@| 6̉䠮¯ÿø§E" °†‚Q+ˆ-FòŸê7ÄæY>ê0b¸'þúýûÍC/k8ÌÑó?ðßûå×ÕSÓ4Påù3ñ¿còòp€¯ 8€WPŠŠD1/>ÿ,£ ‚þmøŸ\5˜ “ñ§]Ì=ý«e·¿ àú«nÀ?‹iÃ1´…¸þÃr3 ŒyüsýwÊÿ⿪ü¿Xþß )»::þsýŽÿaÔÑó/ÃZWFZpŒ`ÿ }ù£Z-ˆ5ÔÕé¿£j(F r0[ ›y„ù€ÂüP¤2Ôb­ Eíþpæßð—Ö¡0ˆ. ýõqÁdÿà ì€ù€ 1Äü!1jCý^ã/‚ÑÓ?ûP‚áÖ¿„'(òB @ž$˜Õc,€—F¡ÖßÔðóÁà(L 3³ÀŽ ùµf1¿3f7pë_~’Ô»"˜ÃSsð¿ìß ‡@< `’é 8øQ}EPãI™ƒ;ïÚ$þ^Ò‰± ïPö3"T—ÒˆÅrœ~zÚŒFòt§€ò3ûmy—“Œ…Éï^èJæ*Oá#^få [f«˜‰ë#ì±x¯cFÖ Š:¬¬' òL]Xºw#n¶ËXÛvésPx߫蘊wç¤ÎSUnÔnn-ËKÓ¤e7ÚYyŒª·ê5XùAw/sÅ):p5Ò,,Q;…UC²ù”$νôæRO_ïeçݶu·€µ}ö—(J¥G½ŒŠÂ„¥FsïÈ/2?¸m§PyY©Ü’ݶî*\äN8©Ð>´Cn›³Üwę́¥ë$ÚÉÑT‰{‘’Õ';[ö=Öl¢(¶@í!0Ô"ãåçQJ?`uú2§/X^HC  ÝÕ¢…#fý"½ú¿.oþ ÆywU\ •–Ô@¼¼4äeÚŸvAµSe|µ[)\ç°ý™„ÛÀäÈÊ'F3wbžqd¤N¨F}õÖ ‰5,ð‹(É#¥N­Ul¤û`vk,mÂÑŒúH¶0Z¼€Ý»Š_0+>«Ê¬üNŠ÷Ñù–@P¯ÖÙ'ooü­RWHÒͲhŠ˜EÈ'B³ yߘÐkÈÈ’œë¶²jçéýºr±©’§¯Ðñ‘ÆÕ³žù¡¥8Láo–äŠ6e7:ö¨Š=)îÖh“ÉÈrh™Ô§'§Ó0, ˜ó7’Í”øaõqúªÝ¶Q.å:¦›2*ÎíH°—º®%³Aï yÚoïEþVd+xÜÇEåG Ѝ¸žØI£veÞ ò„ŽlyEªšØiû±s蒥Ƴ¹8D'änLv>ø9¨»«QPFF}îåB×òÚIÐ =­ó°®`‡ÞbÑ[‚ÇÏ×UÔ|“ˆÔ(?LJ”²P=T¾êÆÜtM À)õÓ0£y ‘y7{­°Küjéën¶¾¢ÀyzC•‰På™ÃfEÓg NC ·)úøÖvFÏ•‡Q‹Í¾Ý…ï±[¥¹å è¨=M°—¦Ýë Ô›N­ýè9ÚvyÖ®"ÞV´Î`Ì–ý#Ä,Z&¹§¤8E‹±èà…á}Ó冷QOž› -çóV¢E\ۊǯê½È®X÷’{®•¾8ͪû7›ÞMƒ©¥S·gíõžtÍÇ¡d ›ä(å±5†Ôðûë&twmáxÍ ²°ÎXß'+ðJÉ£C ëdîÔßÜYç;±Æ¹m@Fò¸Í!7 w÷ÊyõÄ)Fy~£‰‚½ ïd!ø½$gdÜ–NZäÁXPéWÜØžB•ªºLÆ·œSãy»:¹ŽDvjøü‚ûq†Õcœ/I/}”D›÷`wÖ±c±ç’™$ôà;=¬X7ãŒâ·Ï\]›8“È%A±t|ã á—>;Ñ5m Qûçéã??-z’Òã+}äRê*¼^pzmxÖ̳œÓÒÆ!âìxEÄVÝmÊ2ÓŠR§ÒÖ5hÜòãZªØÏ`Éæ—]Óêï0×îæåC8àBïXK“¿œw§­„äSP=ÑÍ£’6ÊBÍR–çOƒLV’Y°EnkD ê¨ØëízÀù>ºã¹rLIsðT–KXêë±ù i|O¾XI•z€&lC¸òÚ·¡gêXìœOÊ‚ìÌgÆ'[CíêC¦s& w›Š?a¯µI“ܧ üÖï WßEMå:û§þ&‹›ð4½‘ª9R#;Æ~ÃWºI8aFéæï öüJ×*Öíסsån§–cijË?UKûC¾Jn®ë¸;Ç.§½âÊÑ­û ×Þñwã‰ga·Ë•Yº„w.¬$¨†{enj‰û+„–É£gnMÈ– ·7Æ6\*=*¸A˜Íkç•yâ_×cƒKÓŸG|öÂú#pú*GpiKÚ/pûIB6˾&õž‡±…­gÆ7q1Ÿœ ¾•‘Ì—Ç~¸z\Á”| ;âœ$.™Äµ2TÄÓX›¶él¦+Tkû6K ʉËÀظI…#üPŠ7m\âÛô<«x.|~I "Šyèù` Ûϼ8…ã éè¶+G9Þ,KN)ç1’‚…&DŒf }þÂ~p1†ýî.Ń缒1ˆöñÅBíÎ =e¾lÛ÷lm±»–oÏŽ®^N¼xnõÝž <:.‘àëˆz”/¡– ô§ÛòV Rž±âµôö)îŒY0•çüøåÓýº„Z‘*•»Ë¯”íªy%ý̈»ëÀÂïMüšý3ƒ§lW+*)F Þë…c=†V™f=¨[0ö¨µuo)c|qe,X5.¸ÏÏžL+ÏKAú˜WÏ–öxw¶Ãm—8 Ä5ôÁþ s7.Ñq,àZûÕ¸È 4¬@OUl»úã„!c²©ô'aIð±ìÇÛ‚â8POe’D*3%­A;Á¶Öù·g¾œiMÞºGI5''xÒŒxô#Ïý£àÄŽÈ}Ç-ó^ç?dQ#ëâ%x,x:îÄdJ,{¡4¤ ®ÆV#Jˆû9-uÍg$h7·ËÛ,l°Y«÷—±ˆ’<Ún$gñ@óøWd|¢æå–ùW-\³P–:; b:8Wú­~ñœycOßLÞm›‘­šAúƒ™Éߢ­=>*“Ë'![0@OSº@yê¢ñêŒL¿g“J^u˜B¿tŽç|P_=BõM6Æ¡è:FO{%sýQ†…1Ôäýé±Ý‹1ÙU‰3׃¯ÔC]†¢%øñyTãR~SàµË©‹|¸Ø¨jÒÓEwßœxÐAú"©™ÝFå¡ÁN˜ÖXÜJUÂÈ,)1•s¦9 ÷ñâö¬K( c™dBí‘ʺMo[»U÷ &6,?ÛPqákhpÙnãuÆWo¦6ø®’ï2¯m0‹z°‹¸0ˆE’t—(8ÚM‰fîÃK7ì¦5ós­ˆY㨠|{Ãᵑ¬„P+®ÃÚÚ´ýÃÆ‚N¥uø š&Õ—·vÑ U²¶ííi–2ãÓÇ7¯×ßqd{sˆ/¤^å”W—ã ä¾²OÜ,jgaLX~)œ2e$`yLì‹;oÅX/*ŦnZñT,°òöŠ£¡_˜"F[íªŽ|8W&4D¤IòžÕaê3€SÚz¯±¡.4Ínr2Çc‚x'òÌoÙ¿Ür<ô:qµÉë+ã.h$»à8*†ÄT7©Øœ|+ÑR<_ ²00¸o±Ä®Ï?*-ÎzÄvSmҽȃ¥1^àtS²tw"ßV?ôHíõÎÍ_Ï”à˜s _ &?£YðÒS¨µL¯ô Öë9Ú‡Í;µR™P)39Ÿ JH&Ž¥íÕùãÄl7_y_Ó=tµÈK -RÌ‘,•u~k¼ìp‹S×ó¡hÿêƒRWk5ÃáÉÜçê!)÷F»¬ÂmìÐç_p—Ê©ä†m’‰TýµHãX]˜—¼o¢Q(`áÅíl?éèIì~“ H/°ÇL©Y°Ôñ— á0ö¼Í“OÌöC«<ÃÕv•ªÐëx”R©ïðä"AF´RSÉé#Š€Zâò`íªýœ8ÔH”¹HíŸíÀ=~¡tQûÕï§bãëš!9““üÜBëå]­çþâÖäí ï EÌ5É'm`õêd|Ã[&Gè”×﬽òôn4lãÅÊ|¤Þ ¸ ¡DGŠšÒ•ï ”æS}¥å}öÎ kI¢Æ­W ß­ê¦ì~$È"!õðòNWÆ…1ë[5½¯Ûã Q^Sj¥›_kdóŸÑXò¯Ê¡5ÔÕ²_ôÊÀ}à¸dÉ Dý4ÚÉM/jÖ²vì”®”bÞìbl¿ðÇsy`/ËÁ©hWTüóà~W_~°0o"Ëè¥Kèã³®qxÀ‰ì3©C—h5¯_k_ÕðÓëü+¡îÉæÁèÅsjöWЂ×È|~^FkdÓžnBËÜx\Û|mö çä½gßoåWíLH®f(Qáô!XÛÞÝÍ2ørÖqjZØùAß§réŸMÕß~91"žžXZ)"»³'즶’(Ir.ò¡P9 òî „’©†.‰6M?%•àG"[!ÏVÉ•¡²Ò’“HNæow oR_@‘7|xÅj(AÙ”yZbEã ùÏ._:tϯc/œöëñr+/ªm÷òœä»í6’ﬕ)Ä[rSþhwXWKôÙr鞘Ù*’¡wÍrµa˜ÒÆ›ý(ÏÑ©„U‘S£YÊŸ‰Rág0«ƒÆPÁƒ¯e~ê¿€J¾GŸtb×7²êªóÄ ËžXÅž1áäy÷ô¦æ&pMOÔŒµ6¨txãÉ„×tô·Í¶\ýŽ¯È¥ý$’ÂóÚi48”N‰ ój»a7gUR‹§Õ‡Þ˜¢7ûqÇOÞÞïƒ<ËŽü×Ú,ÓíÄfÞÂ(Þ÷’rôc¸`ï”\£¡þ›6|iÂ8­6`šÛ>Õr%XœU0$r|ù º]JÕe¡Íq–;òMÉú6%ïŽëåÚ“ ¯äÊe¯´$ 5ïø'à“R~%ägùxiÇØÅTæ¨4ðbñÞ´?ÏaGùƒÓ\á‰Dâ€GÊpV’¸È‰@Ð÷ðݧ—ÖÞx°ÂÚÍ¥ç´ï^O"¨øH$—éžg@©K3²aO}DùãØLÆÄëï=„»|OAÌÇû/5ÑÃ*wv×?JT…o›Dç~2Y"¥–žòÕ N{Ps7˜ì>šÌ¹ÚÓñJPÖ·7Ó‰t-BÃ`3‡/NA­¥Èývâ§9Õ=Œ?{þùÀKPºe|sL…À¼3ÙÄrwz(Š”ú\ ïÀ>¿'äË–ïƒá®ü’O+JÜ Ò6 ÷„.û¥'vä°*ëԪ͓Koݸ=¢éürevy—ÛÕÒßðÉ>.$|N2ˆËr!"¾b×~J¶²ªG‚ŸÌñJútÈcD]0È@³zþ°´ <7¹+†SŸÿ¾OúXã¼-³Û´Ó©ùëÃbuzåé¡[ªŸM•å]ÆIá&$O.NÑGQem㸻b>ÍLé7JV¯%kò¯‹qÕÚËTÑ.¨p|óÈ×¹J4¹ótfIÖìý-‰i|®ùúЛô…Ì úJØ?Ó'ƒ€’`Uœì˜+Š5¸Ü¥2(ö¡ï#O’±q»e—Í¥¼9iê7ÑÈ‘äøœ…®&CÞNÓÀÃ}ŸQÈ;c•j.g"¶V»£Îjöô¼-eÿUN¹µoùk@ê] o<È›‘ÁæÀ¹Yã¼ì-x’ɾ‘zBh0[¤»¤XA€Ö7®ND_§½©£üBv5> ý|¹“‚{1ËH÷Ö$Ý)¦³”·QþøKœ– ßÍkõZ2Øâuõõëí6ƒ0ÜŠÒ½§¨#Â?SÌÆh-ëÎÂ`±KŸY¼‚öÂÖÑTQòæ@…݃–zþŒ>/·šÁTÉe¬´ù J6JùÇæu¹U¥êëR_Ò])Ò®b;ùC×»µ[ÜGšb†²Ëã…ÜŠ”Ó«3ý]nGo9 T<«xrzç.Ø=o0º?ŒëÖ‹ -q¦nߦ€.>Ÿ¤w4hÊUñ¢ÇAÅF¬ê¹ž;¹Ç†Ââòá KŸY§jòYóf5o¯±®"öAÈ÷ú¹™VΟ²%°–öÀ/FU%W$\7F¾s/W{œÝsܨ˜¿/ýi<¡BFk›øÝëú†ùÉÚ)q»bà£H¼øæº,Ÿt)ûGFÕc…P¢ûŽRˆË¨lN6J&ÐÓ¤;4@áë\ÈJìsŸ;ŽV¢(û&jµkIz“YÙÑ©*<\Qsx §ë«œ+¬þ$FãV~ ™²feDÜ=ì¸a½„ î§Œ<úÒ9ÍÅÐëÆŽÙDæÆÆV¶{«?îœѧ29ðuæñ÷¤ñµ€j©j½'̓]¹QuûéäjLõ(:=|îÍ(rjE£ øEéT){Qrøè~QTøCÝ·Vá ŠšÝ?î Ï91˜&Èîè¬ß9wŸ£v/Yliz¿WÄØ‡&‰«ªn½µÂCxå†î€º‰‰ˆz¥si5H´¸Â.ïè-|è£üü.&Z|ÀÌÌȺ?õ<µàêVõp>¯$p›ÌË–çÑ&N~ßøÐee«âð/»­Ö‡­5_Ϙ›(®Ñß6Št¼%Óœþôµï »WUzûÛM¿qê:w¬¥4q¾¯òFõfÝ_p"9—ƒÒ±ïRV‡h¿5–/霃–´žI¹‰9UMu1ë°}ÌêËJOTó^ˆ“#LO¹i KiPÓÐÜeÄÖxëñá‘ äÄŠ'ùÂ3:Óž§føõØj¡Ë­›^šL!Å'÷×kwˆØ½‚6ÛßdÞ-‘óe&ß­DjÛÁ´iäU¯³Ž¨Rù¼­ð$R}.®CÙÏâ¦*V™±&Î#»¾à´'á²Ï»<¹zÄÀðé4—-`­Q¯5™OÊ‘ú$ªm};“YíV„côöíCö©–*+rd]F%©5).Ü€jwØ{¡Ê3ÒÑ+ß´§ï°úPì®MëÒùdòÖÿ¬ììí4Ôq)xyóâÓ~o ïlÇûÏ}»{í‹)Ó”Û‘?-¦ñ>jîê?Nbû”õZ2 &(3Œ¬ç‚Ÿðz€+G²)Q•²Df󺈓Ù§PM?û=âépYñ£vËGW~ãÎòDblñoÉe«(QâgÐÁ"CVVÉ– ìK0]¤¬k+¶íMò”|*_i)Úf4þl¹á¢jP³F6ä–Zñ² Od9«bB]ŸÈb[õfxާü2ž3JëtI3&c†ükIq.‹é=Úo·ôÇÓÈÁ‘t3z\–7«~0ø‡-£¶s¬ü§Þ˜ŠiBí†üõÝfêñp.»¿ÉLM½À·Äaß+i}4<ô½HY¿u/LŽaŒùud`3U׎%ùpÿý!*Ÿ‚Ì­g5_ù[Œf»9äx„+rßÊ™®îp+èɦ*êN:Ý2…î÷OÝ¿014ÿ¹:Aì endstream endobj 944 0 obj << /Length1 2709 /Length2 23818 /Length3 0 /Length 25329 /Filter /FlateDecode >> stream xÚŒ¶PœiÐ-Œ»;$ÀàîîîîÁ!0¸»»·@à®ÁÝ ÁÁÝ!Èìî·É~ÿ_uoQ5Ìi9Ïé~ºßw(H”ÕDLíß%íí\X™yb ª,Ìff6FffV uKà?f M “³¥½ïbN@cMÜØ§`ouµ°°X8yY¸x™™¬ÌÌ<ÿhïÄ 7v³4(0díí€ÎböžN–æ. cþç+€Ú„ÀÂÃÃEÿW:@ÄèdiblP0v±Ú‚N41¶¨Ù›X]<ÿCAÍoáââÀËÄäîîÎhlëÌhïd.HCp·t±¨Nn@SÀ¯‚ŠÆ¶À¿+cD ¨[X:ÿmW³7sq7v@K 3(ÃÕÎèP“‘(9íþ–ÿ;€ðOo,Œ,ÿÒý“ý‹ÈÒî¯dc{[c;OK;s€™¥  $)ÏèâáB0¶3ýhlãlÊ7v3¶´1~ øK¹1@RD` *ðŸòœMœ,\œ-m~•Èô‹Ôe ;S1{[[ ‹3Â/}â–N@PÛ=™þ¾Yk;{w;¥©Ù¯"L]˜4ì,]2âÿ„€L¿mæ@333èz˜X0ý¢W÷tþådùeUàëí`ï0ôµ4‚þ!x;».N®@_ï?ÿE,,SKÀ{ ¹¥Âovhö7]¾“¥@—4{,æ_ÿ~Ó—©½çïð¿î—I]UNKI…îïŠÿõ‰ŠÚ{¼Ø™ ¬Ì–_CÆúâû_ecËdü‘+cgfàù[-¨Mÿ£ØíŸ þg9hÿåR´M-@ý{Èõ˜9˜M@,ÿÏ£þWÊÿß„ÿbù¿ ùÿ$éjcó—›ú/ÿÿÇmlkiãùOhh]]@  `Z»ÿªü{i€¦–®¶ÿÛ+ãb Z;s›Ûhé,ié4U¶t1±ø{Zþ¶küÚ2K; ²½³å¯Ç €t5ÿËZ-kУÃ4’¹€ Íùï‘v&ö¦¿VŒ•ƒ`ìäd쉺dâx³€vÑèñטíì]@)Py¾3{'„_7ÊÉ`ùeúq˜D#.“ØoÄ `ÿxLÿ".f“äoÄ`’úXLÒ¿€Iæ7b0ÉþF -r¿H‹üoÒ¢ð´(þF -Jÿ"nåߤEå7iQý@ZÔ~#õߤEã7iÑü@Z´~#–w¿H‹ö¿ˆ¤Eç7åÿî èÿ×´1™þ Ù@%šÚÛØ;ýRüM ŠþçPV+ÐÖÔØÙâH"hLÿccõÝì7ÑšýÙAË?@ø7ä`ûÝ~ë`ùe°ùíÿnïú§lP€ùÄÿ[ ;èb-<,€vD€lœÏ *Ôêº6ë? ¨·6@Pãmÿ( ÔÔßÌ T;ÐÿáÕnÿ[ (Ùþ?nP1¿Ý 2ÐëÙî?3ÀÎòõ¿ÀRíz Ú›þAê„ãï‘;ºÚ»MßÛü‡‘ý·ãç?žÿÆóücýo0˯›üãX@muþÝ P’3ÐÖò¿sÉñ+èöÇmp€HœAï¾ëõÐÙæ?ãÄRõûXÐK…ÉÅ øÇ¤‚úæânÿGˆÃõºB·? H™ûãÊöø‚è=ÿ€ &zýbò:ý}ÔÌ&®N +rùëÕ Z‡ÿÁý=€&Kóö&|!Vµ!í÷_DÞ¸3ü˜˜¡ø¡õ‰†Á{É©Ãõö#MufІӭÈÇ‘^´Õm êáeâgzØðÖ$•¶Ÿ>O† ªÓ?Ú§p' ŽDêáß2¨ ïú<;úhZC¶€wÉRä8ºr£(çaÞ»÷KyÔ ”­Œ…ÍÿPÙ­æ”C|*ûÆ£­X9¾!ä ÆØ4¥·è~Š,î‚wIáêà¢G !q62}ê*ã>kFµ¥j”]S_ÛØR'ËNÎG@Õ›A̤šÒ&,C'R%ìê6Ã(L—6k á~§™èZû­f™UêÛežou¯€Ydm‹£€æïŸõŽk#£ƒ wa©­÷#M£Û=¾ZÅBBoÍÝYh%,t#WWx3S¡Ë\Æ!ºµ€2XhôËn¹Ÿ Cù½ƒ.D X¶ ˜™u¸¡ûÀÇÞžräø\ÄúV6œ+vn΢/ظcè¿s*¾¾ïJ=?/À·`“0Ê £ÎÍèù»G¥ÂW l˜ .c:߬Äa/õ$–OÜâX¼"/d—‘êû±P5©äiõÀ“ÏxªY©ÑÏ‘¯B²sÅ0¾ß8,ÚÏskº¿u[^.j€}`¯ùp^é!:û]+$÷C§j@v·³Rš”HDÑÝö\ü{²uQ7Û¦8T-uÇíñî¢'wú2q ªÂ%…¹þpŸ%ýEñÂ>ü/Â8nšXk;”î©Á2ÑÖb)2wW É ;Fš4/^Dߨ©ßç‘ym‚õ-|ß&ù:½MîmS©WÌÞß àãˆNƒ´I $YØH¿Ú ŽŽ|1‹l^×p©_~[“1;Ü8ƒ%ƒí`cÆœ8–”Re®ËÒa½Î'eYmy}~$Žk¨rÖ«]Ǻá-ÐëÖ'ߊÐ8„ŸÚ}âü˜ýÍC*WÅn¨üMz$þŽe5Å|rÉÂ4‚<+nnV:úõv¡? I´Yè» 8“}ô(8°mþ9*¬áÚ¸” ULe6‰\’Þt*ôÍ—)YÔjFè¥þZ1Ù 0Y—20Ê>o.˜xβ@Í©¾©î£¹yé¹7IWQL¥£(’ æî¤’Éqîjä>Õ¯ö*ü{©ˆˆÓF~üŸ‰X˜K}àÒ^ùÛlÏê›3×G,Î×sB6*à¾|ÉÁ7ºâJ9ÂA4ËÖýØyÅí¡ÌÏÎ2Gx%à2y/ ¶ŒŠÌÇ™ÖÒìë$çÊrÀö3]C Ú2§^Ú¥²vzÆ÷ÖhþÅÏ„ˆBoÃñ,@¯µu—]‰ÝD7ÃðN¦5ïËY]õöà®Ióaù¥‚ìƒB¶6sÅXœ›7ç^ò¼Þ}Â)Ûq$” _à2ù³ú7m9ÆU9¼Ãšz\©Q9oã1Q©¬"BÏj”H9ª°>V%æÍÔ*Nerr›ŸÍ I¸›ºÝxG³Àñ‘¨û!8|¹±JV óä÷Õ^áw²cøiô®ö~ ¬ýx^뮉i9᳜´ém´EȽÈåÓ¯<]%BýùrÉ8&4x_'ï¾ë›g»TR •nÇNö_ÿ´ƒQ?rïHÚm'Ï1UÔkÎ(˜XVºŸ.Ôbõ Þçv$‘7ýVµýÆþÈo‡E“)zXT@¸æúñ„„9±G;×Þëüäaên(€¢¿²kzÛýûúwV}û²¾ @•᳌ÅWT×ý\QÛSI\Þ¸ÅS¸ÒaOλ îåu¡$rIž¼‡Ú¥;e)ÃÑÌ—ê,)¯ûžCÛtP(K°æòiŠÐ¨‰Ê3íò—áœr`–‰e‰äoÜ}¶á«òþÚHMÖºøÚN&‘. ìX··ê¢}"zO¿:.õŽ¡Ö9Ä{‘9{DCÌù™T-ô—· Èž; û¯œå95wÆ.YÄpÂJ,G¹LŸÁ$/ˆ“Ù<‰ÈÒ¶MP¦¤tž×t!m+^[½&£%ýaà1lÊÊI{e«€P‹š¢qZ¢o}÷4iâ¡VÕ†W,ñésÏ׋ÏT1pšq ;Ú$c† Ë:”?3îwÈCMxÜCáêN¼ÓŒ@ǺºVÉ©FVW~½q Îy@ŽÒ':¼,;ù[$=6'¹â\ćDÑÙxÀÝUîæã …Íp9Ù¤7”ݦ½ð5Ʊ ¿dc ꔳÑ–í Å`TÇ)Ð ½wãó^+ƒ¬TaÃÙ×Ôä[Ìm˜AAƨRbTÊÚ´¤oçæ.Ÿ' >î 5ÏÐØ&•Ü|”“¼WÏ}ÿóSB§f`¬ µyUÏçå÷ß*cÖHš÷ËæRæ¾ê}~0fWaÁý2æ(çÙrÔ,l.+$:XŸä9›ÆfØ¡x%ôÀÁVæïðο•ÏòÂ×E?/sBŒ,Ì+ vSïŒRââ!—‘·|¡LY4óÝΆÓ<\>NR©á’_þÇ‘òxR¬ˆÞ¨[X’ÿú7›<ʽ†{í õTK`ZËS?‚)»ó˜å/øØéL–ð–Kß\áßgôŠ!põ{‰HÎe³#x2^êæx´l­¹°ˆ¸V–}Fr™dÔeÏW[d}ïžLgp)-8UàY¼«]C M#!òÛ)ç£ãrÐ+p÷ÀÇÐÞ’B0Xã¨_ÝOÂÆx›m¸Ú’"Õp÷ýü €šHɦ sú”Åh•Û•ñÊ•ît{‰ôñJïœÞßk¤~šÁ¾­z#Çr˜ù“súü0>†‹¤Çäéì~êÀüÅ6!¦ÁCÓó¦a}ú3©>™—^j±ƒÛeòg°„´ÛÅF'QžäØvÍÚb•b,ý.e¦Âdw%Ü`SÖŠá³Qr_Àsføò»g“l%©a£¯"‹Àù6¿š¾Tôþ<O¬D{Ú mä,Êý¸=€‚YéÜ]ÄÃß ‡,&aªyg±Ù1ÒO­’4!Yh¯ÜÑ¿5ìO^ßA:ÍÆÖ~§Ì³Às¬ãÌNe´]I„|ì´¬õÀ«˜\x<ì˪u†Yë¾:x¬Äóþ5ÿ©RQ6æè¸V­$†þS‘‘gY´J |ÄH²žÊÇÞ7’´e«–ê81ûŠ€[SÃ|£à‚05 õ:ÅV9®¸j8:Õ´ùc]§ÂŒ§aí›ÌmG o{Íâ[¤Â¨»EípåÇk„ Ip ‰¼ã«—èó¹àî9TéhªÚApá T™¥MŠü×”ÌnÝ®~ÊΧ‹ »ÏH5øÚT³+ƽê}Tïœüg7Ò˜ì í>BÊÊçâ ÂQ§#Ôîå|JG¨lP$ô–“lØX97°Îx¿Þkwè‡sb$_¯·b\ ‘ Þ2àýá¶u&¿±Úº›ÇžtÍò‰ÜÓÉVäõÔù#VïàÕ¥Î$mZ›@éݨó͹}Ö{aïÏyD811â(o\8F-Æã3¢]f\;ÄÍ÷¡æÎÊŸLɦõn«'f3(åùº 0šQm0‘|Zü2ê¹÷GúSéÌ&†¼'eÄ£­ge~¤ÛÈUï­VI”|¿ª¨¡ª¨±MבGa΂ögÞZ…âj¨ÝÓ¬³HXÌØ¶JÔ†7þ%?™¬ B7–rI|×’OÄ)µÞ —íÌ«¼k!‡‘Þ(ÞCs‘)¨l‡÷žc\Ò~{!¼h‡]fx}l·Ø ‡Ü©ô´í"¢Í l—•*m¸Žc`ºbŽ•Øà—…3ÇcDôeê¤DN4|ýœØßسJ\ÐŒ ˜¼oÓ¥âFPžç?CÓÖøù¡¡ð’)†V Ÿ É å†wÇJ¶ÆJøË£¼.X‚šYj”o¢{EÅ"¶t(ÙZªå< /‹?ÞñÝâŽk ‹¼KÒ»~Ç8A*‚cÂB¿ã·Â@¡¨)/15ºî·ùÊ,}~DÀ5ÖqD¶rÙ…åÑ6Ô3 äpD­À•L¶Šr\àZÏÀHš¾•ÅuãHé”ÊM–™jv× ß®þ½¾ë, À4É×íLJ`$³à2p³Ú?Jf²ñå(öM %ª›‰~fˆ.Éè¿ Pƒa¹]Í´¢[ Œéª„É[”i3üòSszñ4æ((kK•ÎMññ@żՇ*ÆÕÉ æH\Û˜¦&@¸ÏLDüÜÜ4".mž‡¶íŒí„䱚‚°ËØ+¸<5_];iZµlÓÏG™RMÆ¿·œþåOc6½#é•aÔ4Ô$”·-c&¬&M™Âÿ Ýžx t³ãÆ ü,ôVo[³¦ŒmàʸR„ÄÓ³}›÷b†+Ë„$ßã:%èý¤ÂËü‡ïLf¾l)G_‹†¶I¥JSÐ+÷¨Ìœ§ag‰ßii<û>Ý645k÷7Ä Ì.PX‘HwžE)I¿ÂŒÇ>4Fñí‡×N\ú'lÉ6»å¢Ôꯒ!/Á–¡®P‰Yr¤ñ‡¨á=¶|ýÒs!œT‰÷>ݸ¢>€+MÄß$2ìÀÆ^ ¼^ú2Æ ¬©˜lÅhaÊNÛÛjňÍǰʨ•JÆ&çÙ³†äGýSîÍŒrïè±wrŒDõ§3 ã}ÄÀE‹#%kH£ÏM§Û÷H•Ü®ž«äN—)kW]Ì|Mûè8z<ýHž×ôç>?¾¹ï>FÑ ¯ïtɡٵ䕾ÌéT í_¡®2*Jjv¾8NÁàV¸îoö3HñF|¿è÷ Î ÍÖÑ£ˆÓ8q[ì#BžòÚ6ÀÛü*ãI ¨¾ÕÜÈ&€WõîhS¨ÝK6ñ‡a†-äŽÐr{AZx5>Ðl2øÙºY•ñ(ãæÙ*`È–ƒj\m»W¼mlÉÆó‰+ 'Iûf^¬®rÀö Á ±ZÊ•ÃP*ö¾a‰¥è'ª Sô,âËfÌØÖ9Â&û‡–J»ß₾0t»feæ<ä„%àúÂg F‹ßZ¤änù8Êa ܇ŽÚ vdœÏDJØÌD‚6´Ñ-]+z×vú.;¦ÏŽ¿ah;¡ŠßÜòÆÅ,›ÁªB®’D\БŽÊâé±h¶ZË FZ-¶&ytg‹]_áÔöðxäñCÐûÕåJߑ︛$5*ënAxD½q Î÷„’¡Nym·Bã/.“é6iðõ± ê&OðßÂÔ˜ìwoÓŽ¡ëx®Ðá8ÛëŸ,Èdéºl°ñ_v¿7r½† ðª8&Æž_دO4Xæ|sÊ”å9ýÓÈø<£h9R·z"Íè[ç˜DV~¯;Aô±1Ѥ\¯]ËKyã\ _«Ñ/{#Â?ó#øø{ îži5Bæý° wŽýÄlG‹âRm#¤Sêuõq#J°yû„ØA~šr8ÿ'䙜‘ À¨¾„¢×(%ït­kĹL¨ÕíkÛ ÞÓÚDìùg•Ñï%ŠïÍBéVÚ;×C²ìIác–Š5àÛ½¦¯ÌÍÇwbã]ë%s¦Óøû0ß=z®5—ULA<Ò¶C ›ß¾² ½cÕïg/‘NÏËX¸L7è™r”Ú×f~Ò8¹òCº+LLœâ<¦,¸J“¶‹Ï‚h-©á"=ðSågbuyVº~pþQðÓšGæÝu¢Y~iæ4äÖëäóO:Ì¥¢wÇÅ)hÃŒ‡ßIº§úHieWÔ¸Pº—µ‰ªáÞîCŸY­ R~[Ù—E¢+ßèjiƒÃXƸIQÌýAÎéV«F ®þl¯J>õ•}¢øtO(l’êöø®ïÁ_×TSJ~žžnÇ»Bê¥`Ó€©¹Ô±¾jäÜ"zµâáA‡¨Â+D¼ÔE‰íˆ‘ž‘½¯°(,hEïea´£Ð!øº7òê÷¸y¢).;ç“ÚÚúÕwºXÌ)rwP}XdxÑ ïâS~b²²/t$éL»Üí ÙD‚zNŠäÝ£ÞÁóÁl$!$"_|·Ï¡*@\¯?YÚu–óUeàyêÕg¶á÷|dͱÄlWÄjc¼eVïÑOV(š]d`™Gs•^O3 4×{ñ=ô¿´À´ Òle÷4èØ|~€ä°ïDÓÝË’äC£W¤,¡Â´,Ô«QT鑹”ž¿ž"îRç=^”<ÃÝS|E„U{׳Æ\Ã_AÓf±©5ØÁnÖ")Þd·Â¸X§Ac =Í@jçîûL¡£Ø,=%~]}‡¨£ lðê½=gkÿ¦‡Ð¸èròò¢ýÃ(WÒÏ0ã'&R#Ë'Šê]bÃPxˆ”0ªÆ<§ ¢qZÈÞê­àáOˆÁ¹"Zf_œ™=RïEl¸36e¯Á‹×ÉL3ȱ¥‚Ðå’Q‰ønÔ 'ÂÌGwšªssÌȯ؎³¼›¦Vd…-իذŽCˆ…™íÎöÈ -‰rR\qÛ¤•>*Sá»e?:—^Î>¡A¾ùýòsõj˜‘…¼fes¶íŽ"lgqóçjˆ¬ýø óºu¦M‹IO²™z«u8D•o/qLŽ—ñžP}`¾ºtZ±Lfˆì9½DbWuOW½àɺõÒËû€Ã_Ö‡N~Ô\ÏDøô”¡R¯»ºÎ¯ÑóŽ÷-TÐòŠ Ý-Åf ü‰bÛª¨OØ}pOxLYiß|fù¾úAûÚŽÁûR­8˜êZZr@´;LÅý> vdtÒv¨–"‰SeŸ¶W!a%®S*Ÿˆ©ŒØ#¦ˆ@_+8§—ÞW›KÔ±çÈL9vÚñ@9ü…5­BµÊQãU"eRTÁý8ý«¸uS߯$ÎX§¤•¹zp«‰N´w´Fj%G0$ôÓ‡E?le“c€é_°Rð«´ìnùíBZ|'Ú>;þâŸ?D¶<ämZäà>BfùhyHlÇã”4®ámçõÕ—SMÿJ@Ùpû'ðCƒ: ]EÝA¥PQU·8òNɾàYK‰³ŒÑtð{%0ÉÞB꾈AîžbÕªX…ËêØ|hô®]³V²n3f.ùÉzBZ”ìý 3±ŸÔ¢_lÑp”bê7ÉvìîëSûû‹ñEOp±&i6»­c;ôc(º8b”ÈðÙ`–Ù>//WÀƒz—àdì QdU߉ª#¶ÊæEc O3eÛ’Åö S¢ÉßJ[åŸ6ÌMߢÎ,÷Á¤¼‰Rß¶j.`0²Q‰VæÖê"„r‹nú¡SG;ÖÑÑPÄšúå³jpOLÈ5}øæ³NÛË5ù’V¥;:uPS ptBû ŠlÓg§°\ž}×çÊU¯Y€ÜXk6òÝíCLéøÎš¨¨Ã¹sŒàQ‹Òäꓟ»ÆR°õ\?Í/ cMgí£¦ÁÑî;ä’2]Œ†œž OwèÅÊ^jrw;$ÏN~Áº"YS~äοh´U²ÉEƒRQnØ·„Äœƒ%3uu¶¨ÜfcÖò©z£ólSoÿÄåÔOSy´rõM\þ ÖV-›fÆ+ö¼6DÔ¶›Ä.É—ÇÆOÐ/Û³=ÏD´ ¤zA߬þ&`GtGååüªÝùc°ƒÝ»uïä!4Ÿ@{z&ýêèn±8ªÃ2Ÿ“v>×\¬KóÕŠ›ÅxµWªrD÷KÞ† º øÝã–Õ¿:.!®U9¥6@Àñf“ˆ–„-¶VÙ%3ßCÿól© V÷[»^zá9QŽ/`TÞ˜®\|­štªÏ8´W…õ(ŽrÚ}›L³Vs Øj°¤<’{ìòá"/SÚNýøôϲ_# ¯V'š0zÃ,Ooô£ cyŒ|bu&eg<ë/O$ä»qîVäíã”ÐÏk>—¹z- S×C§™")<@º÷ÆïAA­o4›s÷9ΦÒË °ÈP&Ö[ú¼çßp¾‹»3‚~÷¤ië4IL2÷ ú™ó×ͪô¹.®7“¶›—Æ_‚eÏ:ùa ¥þƒ’n*C÷P"(å –¯êUó)ç‡ûÚ4r27[Ž*¶i¡«p¹4Çe.“•ÃiñØ;©*/vwº† e¯ÜÝÔPš‰`‰$D¡£üø§­•DWrr‘Πt+ûŠS%ºN?3úwÐ`ÝZzY ·QŒbûŽ@JR¤O/#êIœ¸c’)!éyöõ·Ÿ ÞêŒT‰2§Í:Íà Fs;._Ò43„»–flÂ1)抔IÖ†'ø>Œ~¿æV cÍçFâˆò”gÜÅ ¸ŠJYV¢ð¸¿w/Y³¿øî¥p•Fc™7ê`{Š!çqª—µ9B®Â£Õµ•ւؽUׄÍ-ô⤬íÂÙÖÇífCS6é?ÊŠê2‚1`º—˜ŠÑ§ó±‘Y3çD Þ}/díöYÌòUZ6þ˜ÞMB¤{I½R ÍEöäÅ;JrØbþÛc¢³Ämpèö-Ÿ?BÔån°R»O?ò®íÀ1ar¼ç%‘v”s‡C¤þSXkêÛE„W{, mFhŽMòøNÃGŒÌÌÒoÃ$D¼Ì`{±B ž?eoÚ!¿ÆÊ¼ ª‹Vtúƒíñ7(ðSš•w¼É0áyUh€X[)y°äÙÒ{!"‰ˆÕh#‚5|Jw©Ý!FÅ}Ó9È—Yàõƒ ¡4ûä¢êêÇ ¬c|¨fBô•[.l%ÇŒ·!¬‚^Œ›,èÙÓ''{OÒ¶Ú–þˆô_O2 fç¢1ðæ‘_1¯k»Î{gcœó- ò΂29³Y*¦8¾7:E”>G#½êa}јfjõwuÒ.œ¡¯äµ:d$IªkBØA~¶ÚþÉš,æ¨2M†Í y˹èPÿı.3íôèš.§ó[CaÕÅW4üƒŸ7\c´Dpdnr\]àü©»0~ºÉ¹ŸŠQ1X‘–Iàó °bÛL®ð¯ hd•ø ¶Iô+ t õ-·Çï*”¹Ã–_' WÕ›E×̨fLÄMìÔÞ¼a9¤Ã•˜#”%H‰Îè27›'d×íÛ$näi`çyÛõç´9v¡—Æ ïÏJͽúåŒ{ìÒRaÔålTY7‰¶’£Ÿ4ÚÓ²«ù*ãgEs¥Ð¸ §ë/e¤‰…U»º×#QšYï‡Õ±¨”ìXàB,¬Kšï¯6‹¼Ö¸C¯Â¼zÊ.|0u®O¢–zÞÖXáçÁfó¿ rxJŸ4µwz œ}²À¯¸U¾_Ÿ;ö®™7‡…ÐYK¶Ž2ÉçîëëU/áw'&A æu]@׿æ CÒ¯¶“d/ gß.‡’®Š¹'0R€Ã5åàá¨ïj°ƒ{T«j.¸žµ †oCdzµL˜¾ñ­Ø$þEs»ØZb")B·ÊÈÆÁí¹øBk¸å")vî9¢%“Óþ>…XZ- /ãýVx¬%sfH½oqb þ'òëÓã˜j½º·æÕ–0È¿ÕBçÎ)ÒBå]®{ r×äI)[µ÷ ÊœNSõØPx‹žaIp톮YÈó4jBPYî¹yêΕñ›Gi;àüТŒ"wQ‡dAYØû·|ûƒ·íÇ ”ÜÃjÉs¼®I‡—îï$X?IaH—ùiÛyˆ{Õ„ ‡KÜTHá‡èOûƒ»«ÕtB}iŠóv¼œ:±¥ck¦„/‹ ð_‚ÐCžšgR?"€ã‹Ý¯u¸[§ÕÍ d€Ig ›d3t?¦8p‘à¥Ny(>dL¥sMjx*yÑP;iüìKå\CÒ„ì?Nüsï±Ü4 ßÜtî“Ȱåªr7¿Ë˜ÆõÜ(š®¯Ú`¶™¤¢UÃ,pÐŒâ+›šžoèZOÑóˆ´kôº‹x~åªX/rD›€§gI‰ú|ÐáfÒ‰!–6•*N™ìtX ñTRnG,^¦å±É!™"6^fð1¾µ¾‡ÿa`lÁv›Óï$ÐÞí œ»m|ÞtQ” óùút#²U6¨h÷ô¬]¹±D¿þè6/oBÇýWR'£Ó‘—×wìo96¨±NsløvIÉyIÃÉÑÕë¶Í(N¿Â(ÔïÐ0©ä$h _äx?WšâètDs°o@Ž8æ0Øg‡%>2*¬)•%¶Ÿz½+#6{¿ç€œj ÒN¦8½û¸fçM[KBdÛº°`"'33ƒ§©^ #ŸÎtc IÝsEù!ëB†ðÛ̽+¾ׄ«ïÂT[ ‰ßssïKÉñÞ\*Ÿ ¿×5Þ(_Ó¸Bòaæ«myà>îF âÛÃt™û­¬7vA©5•S+õÉF’óyÁã‰Yt)/þ¨WÄûÈrEÑõ7ä÷sç©8‰M¤îú5³‚øê“ëϳ2$AËtMRC7zÖØ•2tžšÉŽlRŽôÏæ›…jm‡»üMÕܦ›L“{F¹qgˆ/ìTÊ!xý°D¼> (§oê]:iÀx“À¤\ž57»ê_ yùAÂXר±°@2ŠŽBîö:uNŠK:Å£õ˜;­••Jç °rÖbìÎùÊûEáKEžõ:GÄÆ•–øwk< öwÓÍ…ÆÍƒJ%èƒÞó|tmo­rävEu¨Æ®8­k1.‹š~RRf2!ZGÎßqQŽeL:}Ï}K2-¿+¾z=ôÚqAÆ[lì=¹_gS²{€ŽÐ¯TpÆvÃw‰ÓOÚÓÇO®i`EB‰%“ô( ”#Âû˜çT¨ M>AüC«Z<ãóaJ–rê’^µ4?¶Cù˜¬µ§X>WŒÁá¸×"˜HÌ­øéón8ÖîÑX“é‘¢FÕ7AMðTd6fÉGÝÀd›æÏ²r„‰ûVÕÛo'¢6!N‡˜ ®4½ÈÎK°ñ]„ œA? =,M©8†¼Y†Ç'° i¬ÈAÔÍ{ûÂíUãßù8·d•99ÑFF}…gšJZvH…È8‹MzŠ“ruUÍäepÓÛÖo…ÍêÞÇØbƒ])Œ£iHq@2ÙR®¤<(A›-=ÍXƒ8úþ)Uñ²oÕFx› ŸÆ›IVÛ×™ÙBçê=Æì«”Þ­˜‰ì9¡`u&íuª-œ zð¶‹Í¯HÌþ£ñ³ËO`£÷;4aŠu5柮¾´ƒUvû0¿ÌÓ¶P)ÑÑGošHUdÄ}}s#U¤“0tnðá­¢½V):VüÅ7),‚5† ClŸ­ÄùÀHÖŸ¶¾êô%¶ïËb<ZÒÁtgªHªìf£€­âò®7ã7a“޵î¬÷§PÆ Ï:–ZŽ.£ÁÌF2÷ª·`è}°a1¢»¬ÖБ–ºÉŸø4 C™ûy¡‰õ¾þ$Ú0jŒ Ðéò6Cb½öÐa£ç˜®tÓvƪŽÒ4X†<€Ec› tJ>p.@ú˜Ê·]¿AB¢m½ÒžÞOЪõ±-åçÏÒxíõÁÄ«97 “7‡“ÉÐ,æüÜE–vlniUuk=Bn1Ðdé¶A(ƒÏŽ&èóM#¸·ýËv–þû=Þ;.°a0ò[›æ]Ê- "ŽkØüß¾|5zhÉ?êAcGÁPjì—^ÅÙÅ‘kÑÔ/Íeì=S£¹ÍR«L<öî×"_Èì¦ w&™IÎ;å ^òŒ8êãšgñ»95S´‘oò¯¼lñ>ª| Q­Øí5üŽL݇#Bè2†‹MÖ+Éc¦µ¤Û#ÿœªW›½á@@%¹Rb“¢hù™q­’§B"kY °¯¼/]m¹`탯8Í|"‹8(óñõáQá<0VÔÚ×&Œ ™²È:Áá«æ³-µZCesß<;mÊ2´ÎÀÑ|¯2Añý®PfÉ£vW¯|ò5=53°I¯kP§fO>Yù#ûÅú“<—2²qÛ¢°TÀá÷­-Àb˜Œe”»ŠÁi…Æ«^Ó]©Y×% öY>?»ÞuLºY!Å3]ʵ‚‹®xAõ˜Â¥ þÙ´N`¤ ¼øÉ—™ÛV!b·áA'ÞŸ¨½Ù±)yüX°ÇCzžVC*Zë·±-ÒHΗòô $IL!ôŒZ¸YÆ-¢âI<dG¾ìú4ìè´³cDvY·a0ükkß°ðÏl³/󊀈NÙBù?w§úl˜ŸýË2/ÔLËãÐÜ9òq,G¤Þéú3±RÂy¢:盈åsxØŸ×ò¸æNÂí'‹jŸ‹½ÞΡŽ¤¨IÊ”ÊÒ$T"„(¢!€¸Ú<±cö‰vˆ“ä 2žÌÖü,Þ)=½l‚¨‚h+C"ù~f»Ðý¢#O±~÷SÁV¸¼z¶< Hh‡|à~UaFæ·dÌvxAdºÿÐ,ÄT¼gW¾·o4JŽ#Ëè ŽÀG¸x6–bW]\C¤£'sÄ ?sXâq=Žj÷ð†½*”Oë«€ñf^Àk o´4±ˆ¼—q$t:ý¢ ~Ò›;  ­ SöµM&Pe³-`i)‹×0àèúÖîô!L ®&í Í7~Bð¼èî¡yÉ8 ðå€aã¡<Ä pgÛzÌÐm£±9 ÖIÿÀCgÅ"Ìðá/~ÑÚÆ9Céü&)43=eÒXÞãúF=ÂöjÆÆ¸§ ÊNºÛÉŠ¯=ðè+Òwah·¾‘:ÏöÙMüÑS 9 ?…Ìën›áWn2³ï,­8­¹ë"éßgÔXNA/ö ´í…9Oâô„úw’ÕÉQGe¬²ã@0±R“ÉÀ ®³\WÙ{Í4~~€%a¿‹˜}Xxþ¦«íDÞgš¹Uîîü7c•U¡ÊIîáÅœ³€(=ËqN•!©öЙÖüØX%A«“ÇÓEàUNqòq§˜*pæÝÂSŠJî¶íèBOHm>^–WÈ©pb¼Ælo%h¾íìÿiÄÛêÈUðÝzJPõãsöäæÞý9¦?øHÿ¿Ä€Cܶù“ÐÕ U¶´ä .‰Èæ+S©Mé™ 7“ì¢Ü7åasZDá‰Ð7ftIî½±çWí2ï¥î¯uú²é2ºüÖJ}S«,Þ¹kɦÈ5 ñ¾ë&JáùøÎ‰{²‚0o<ýeŒˆmÀLk>¢Á‰½Ásܪ©ý³p©žŠÏð­ö—¾U­-(C•]‚bSž$rÜ*:w9!aÃU˜¸¦øOÈ•ôžãSw–÷ßÄYQ…ü¾ Ÿ™gtå6\›|!N7?Ì75‰Å|wQC2U0‘~C빑ˆ÷’Ëv³H¿8Ú÷ÍñadAÏš>¯  bS+gä§*}š6¢g¬vÏÔuZ|Ɉr`õÆ|fó8Ûjåܹ^0šáMõ[¾J‘sd§M*&>ÖnúR œÏƒÆ.ÆA༠(&vÔ;{Žž’réR—ˆx29³ шŸb¥X|`ô †®0º:ëÞ"FBnñÍ—‘ ~}¿2žòG‡AiÁ¤ZòÍë¸^B»gÚwHŠ#à¯dҋέ{`ëáAV°“ÐN:ƨ­×›–KÐòӇƣ V!†òJà×ß϶êFY6Ô³ž’Y§üƒ1 bQFaÉñ¯N•øøÛÁÓíõ"òµv?cĹ:²W}’tà{THRÏ×6*‘³RÊÆ!Àf 2ÁÂG€ÔðiÙô@mv:r¾é¼§p+Êy7TÉg*ÁúÑÀ²è[TîQ/-M”œmî÷ó ?Œ[&êTÝvÔÉ/抣E¾ßf’r´GnPÑ··Ž ã ½›¨Û"AË}|²kV„9ºÕKÖeŒôûNë.TÑ/§˜æŠßŸLÕó ²øV(ªü"á–Žµ å·—øOÚä¹ËrôúbG´}Pö…rfx…û¡ž0 ¬ÎjöÐKT>ýPSusQ·2Áü1b˜üt&qÔA˼ÎÄ=³˜®£ú:¾iH§þ]Ò‘¢éˆ?K ëcÆð^ÐG=ð‡J}L?1áCÔ›uåÒìÓöá+oö`¨pÁ‡#•ØSsÔ?\-ò—”")ÛÐm¤Ò5p?pGÕJ zÏ®/|á­k¬AG¾†ËèpðnSÄ/e¹ë¨k/ú8è µ7­§Û6Šx%İRLuö¡­>{+1šÄŒMò xÛ—øm1aöæ.Úè˜q»ÇÃé`@œjIµöØóž{œ^ú¹O~zþ_Ü]Îõ/ñDDÔ' %¾ŒÂH Þbän^mõÁ XMÃt¬xÕG&0OéÃ=˜^Ç­¹Ý®»å‘§b?À: |´Û&öCÇjq_„r_ÛQ­MŸŸƒOâù¨ö¥¿:Y¾‚sá“KS@Ù$ÍpÕÕàWx2¥¸A]€ñÌʾD°š€/Ä)‰^¿¹pc‘SAŽZ£å:©]#ÅVø ÅZ9-ìdLR%š|Ñ®c¸e‹O/ÚU™Ø£"3ZPãqHص׬⹮‘ü#³®±>#„Å÷ÁAò á ÜE§¸N?¤û6ÑZÝÈ› Z`&œŸw„üx="Þí’®&¥ü õ=ÜúYT{ .6ÂmÌpœ™gÕöø·Š¨ÕöC€TÌ*Äg1™€hµš5VA2nv­eô±có¼7hS&y5ÜŽ£RÖû H Ö;FôPÝaºD€ô†Ä“[Ã’½”LE;TÐ1_#G¿N­&$´““ ëw»#¨àŸñn¡-‘ûOæPDð}c ÒXv†©Ôt/ÓùÎtz»ØÇ4 œñ5Hkù"¢®ód½ ÎÅ=Χ:w0gàËÊåÛák³wŒ5EkdæGQôãÞñðã¹ã”²=óħ^Ž~S>9Ιz¡ †£˜±ðK¤LíCŠš`Ý(ÝC0ªî _*e‹¯€ì3eåê—s óàžpAù³c¥„Ô-ƒ¬½b:K í@s?GÊŽÖEÿ°kã„÷»¨(^i9¥[›û*Ù”GcR¸`=Î!Ø’”È#ÉêSOŽU,ѼV=z霱¾­ã¬aT­_ÒÊ:s*tî3 `Ù¸4 Ã;^ÐîÃ$+ÓfS”>gñ0ð™ò¨˜Û¾…ß[TfÂׂ¬ÑšK.áÀ¨ŒwßÌxŒOwÞ _f>4®O>ª(jîNJg¹´ Ö:¨Þgp#Ü~Dº™¿PĽ~¯Yk=“d&Ó×çj5 žÍýIÔ«¦ þ¥.:§þƒ>”·“$Å]/êñ鸾 Mš§ØèyÈr|¦‘Úñ…0ø!£v³Š…ñF˜}ç9‡k[®b“HGg• Ó÷§L•–c¯IŠ(üóÏø6n†¹‘B¨·ÛÂãR ×å“ëhˆ†ä¦{÷5’eR+©Ô(ìÖ6Ã$ޔȤZŽwÕËõºˆÓG¶¡!¼nóh…h±÷uƒo¬CéÙp]âÆRKˆN‚,‚¯Z:n''ŠpU] •¹1íxzùÐx«Ðø* 'ò½Î¤3÷7´EcJ OÎ[mg¼*4eô2ðVu5r¦mq‘ mƒÕÀ‘ƒÁµ—ãùñI2ÜYÕûZ᩟iÖ­fH´ ÜRì:“Á` [ìGõÇ{n¹BÜ×ü‘t¤4À„µ(‚¼¯”~Iz±9Ž5Ô5k YÏŽ¡’FÄèZÆbíƒÿíÇ`ا^æE©šÆVÀv¶_ÄÇ5Œïàu<öoK§¬—nÑt®Ó‘´ŽU>§zxðcUÁ\}MDwÒÛpÝã’`颌ð¯Ãü¾FÜQßÌT.}%`zÜG»i‘ &Øw³¨ßp÷Vøã•Œˆf}Ú6¿5gl¡Èæ×½6êBnéê"ŸÖºÉKd?T“ѸkÁÅ.¿w°ü*k“ËæÊàë'Õ–'µ!FÔ¬J7Bïiô…3fW—8d#„ìGw†jIÈÊÌsÜÀ '(¾4ñ2›5oˆJìë.“HLb2,ç¹ ÜOsQà9JÑ–€¹•ˆÏL(âZ^aoÛà¨Áïߟ¸èÎa„]~Œ_ž+!5è}élÈ‹äRfƒ¼ˆj{½ëc|–ô!|DY÷|~ÂW,ßî’<Åóo‘•¾1ÑUÇ,»u.¤v1Žÿ r±Q¨\ô¨ ©©'Ý3ƒ¡¿©8F'"âCÖþ)úvÅžXv(ï«Q'‚ÇŒýøå’÷g7¤¾kjRL·‰\æÝ耀ù½uÖí.c¢6»ó˜¥×Øg€Ñš¸[ŠL»%„9+ËJÞ8ÃèðÀÙJå² ­)óÁmÙ¬v½þwä"©ñ]€Äç4Öê3JÑ:âòëdŸ¾÷O¥uêgwÅ—r6ûfOõ3ÔÉ™þz=no]cˆ¤9~$$ܺyÜ5X1c|>GR yWËA;—û¦r!†]Î^¨Ö=§ˆ`&»³»x©W]æmx}Kž°wÄÙmHšQc&mÈn‘Íö Ã[`—ƒo¦ö&÷ʸí€}p‘3Rb…&|Žö1…ãøn¶?Âé¶ÞѤHù2†ôö79=Q{q…°˜iÒÇ/ 6gX-•ò–Ý,ËÛ-bØL©¾TGÖcänÛI7õÙZ´¼!Dê‡pCݰ“!šÑdèèÂP*±4àqI`acÇ€ä`?Þâh^ƒ_ .œÛ)ͺÊ»ÐæIõ~ ])¥'¥ÔÒß$õ>o9„¡ŒÛŸÌÅfžB‡~º¤blÖ<]æèP¾ë¹ÊŠ‹aª}SÉp1ç›÷<™”.Ú†jìÈAp<òÛášd•塬ÿÉ­åWÂE?ÆÛÓgVGꤧ2'óShbÉiÖ¢AEXiY¤yO6£ãᥖB ;ÄÖ$Ç¢àç&”óQµÜ׿+vHÜü»0ç^ô‘zÔ2ÛÖøa.ÃAtÒN1›Ø0ä™pÜS#pòíY€=ÏÐ;ªå¢ÂÎGßL¾©D†¼2áz-ýH{'ÒÍM¸¤È÷©ÞÙáÑ“ý¾ÜX_Ѫxg_"iÑn˜üæë^æ“æ %Æ€{G¶šÃª­{èW5¦"tÒs úØÂ™fØâÙ8®NP<ͦãÔW[Xº9+™+ßvv–Õ4HÇ3Hx+úoЧáèßC£_æšÃ—W'¹+ÈѶ'%„„,Y’žÝç€iÄÁuLF'à@}6)ïrí¬?A:“£þŽ5›éFEÄ u2^oÃIeü-wVÇ½Š‘ñÖõ‡/Ì¥mäë.<XY¿³"/´…ãËÁÖ%T´@Œºˆ¶%£ÆvY`ÿÁécÖêÅ绫º‡oƧ~Ézmˆ•$wÉÂDÿ'!äÞj(^ "æv[=D̹«n&¶¿Ls>¶&áøùŸ@¾ôoÂ-íGþ·L;{/pÃû;| ¸éÛ7Ð4åÞË–€êžðKÍöER¥œoèi÷4t"PÚd·"Í1dŒSíÐâûdƒM”IAxM½Šá%âH±&%FÃOrnˆ^Eìü£B#]Æ'Ò~-êÒÅfd˜—FcÀ²ù›Š2ZÀYoÇX²\à›…5ñËÚ®ÔøÎ¸dä¯Rcºo‹%ØÐËJƒ†#6‹-Êüò¤XAâßE,ä›ûÓé”Mæ'mcG r0QÔÊÙÛääMbY zg9R˜ªÒ° V·†ºâ’°n8FY mß~“Û_r2åHò´VV¥Õ)Ç=ÎRûo 8s¡¤ö×tÍ|W[At(n§ì/8Ù­—]ØIÀH¦c¯`%£Ø ÿ´?€_Žr页IxHs* ­JJwÌùªTK)ÇdÃÍ9 D/ÅH~5s™š&.qéüª„uã¨$¤Ú ¶0¯Cá<Ž]š_ÖØ†]NUV>X2ÆXýwÚ TX ¼³eZí°™·cʉ¬ºæNŠA¿f%ŸnÏ@En ˆÊ5‘J±|ßB/ÊmhW}É`ëôðŒ‹eögY‡pWÕ}ªf–öç“õ{¨Ýœ‡D»¤ã/ë%{C|Œ$E@vTæ@ã]ÝXˆ [Îgma2»m“-ã>eŸ·× ÉÝë„aÈ…eVÐàC»(–Ê’ÕÌB±i^áÇ€}ù㢹5D¨Ë7Aˆ`wÊ&ŒûŽ¡ÈÒ8R&«f«‡”´1z´o¶ì7"©*~ æ“^¥)–*¹½h™¿‰ÒâS¶Ê`n#‹6?õÆ7û„iÀ1T)49åÕƒ¯1'WŸNUðçýJØÕð{Ùœœˆ‘hJYÑú}ÉɆ’mmüàwfµòÔJl.Ç·õáE…,‚l‹…QA®ö“P=Q{äªêS OîW–E-ƒB¯X;ŽMVˆ!§öÔ1Ãè÷§àüÎ%Z· M X”%¾ j*UõR^ú+ ÇB˜'Ý ö¦’ÕüÛ# ó,Ãá‰_˲VÝô16 :ðï_di"‹u_öáшÔôu€ “”o«‹=þÛ®ÕÄ÷#ÝÌ3‹¶±©í7[óuTÓbQ«ÁF¹Ö’Whp”p ŸUvŽŠX»tΚ§âF]0ŽÖ¥‘VÈí·®bÓÚ¤þ‚ˆ zÉO·!q%Ù¯”Eø¡·#Ëe*’`7?z#!úÆÔvÿè=~ÇÂó,¥åó%f‚ùãFf¡ø¨ö²ÉÛWïS&ŸLÆ6^‹µTͽ“× Ã! ™Ï#?Áö.wÃJå;ÓÌCP¡¨^ƒ¬¢,…¦©jmW±J`EžÃ¯® NŦî™>V¾eÑJÑô“ =gÃ'wÌ9 î®@B;q‘AËß?d 8LO¬ñ(4Ê“nr1Ë&üuJ[zF‰|OE˜ìPϬ¬vŸÜ‘•8“fk6vŠÛÍ$O zÏz ûûÓGO`š¡ŽFCˆú¸Z¸•»ôÙžk½¸ñð)¦çÍ]¸·7Øç]DïlW¸W ©ë0€GJØ$VrVýbRÌcŒ­ÁqlS%`+RôøwÛÀ99Ïa°Èšb ‹¥·:±7Cö^Rk žýõt…"˜ ±`ž…oUd.Zm µ¼ò=¢Äßoª_=[ÍÏÔÙæÅ»®¢”ÁÁc3ÙFfZ¿ŠVÈ›`°õHˆ{.îÆ&¿ò¹©”8 Í vÈ(+îØRQ&½˜)…kΡÛêd£_&®˜nt?pyøäšKhŠÚÖ%;«ÿ­ŸèZZ¿úvüëç“‘vú{ËziÅ·…Ù¥ˆÖö‰´©ˆÅwÜxËåsæ« ¡ Y䄿 §@²rn1½yæº:QÂ×r‹WÝVüõ³¦²>¬@:D¶D–ö §F†…Ä?Uãìëß?^8~*9Ìÿ›‡샺Îî\ëÙöááì™3fâ§ ¶Ó¶±"£d$`oÕÒó?PãuKEëÔ ô‚SåäÙw;?È:×”ÿÜ:<•|<ŒÌFe/Š“ šÐF_@z¯f¶µ…x¿YÀ^éØ_ïUÂÆÑ½L»ú’Ô¾…V¸0œ¿òê¢6‡Äpw–ìð ƒâtò ñfl‹p$ÄNAIŒIæåÒζPmÇÔzk>ÉOëì|säàFÇ™ÒKTæêY¦p€ÿWd ¥ìêNÉyªìxÜçrpÔ+Äj]ˆ+êùÝ:}AOD£ö)éQ;œÃ1/NÆÅBóî¦D=唵›á5¨1Rê`£ze=?ŠWa·Ó¤ž&híC½o݇âш ë±O²Ük\c—‡âòÝ”îÜ»0£ò&þØDÒ@¤><½ü- ,űwg¥¬±»PF_sØþ‚eÕðÜq{Ûš®\%H[â#³îcÙ¤ñ`£zå,£ùE¬ÝF[Õ>ÂË»7 êÙÐÍCnyIE.¸}¹Q‹9mâahÅÜÒžà+ñ‡’”¶~~ ÉÛ±â¸K:ÄnѾŸ4µ¸û/¤¤õ J˜ïëØËµ¸ƒ=bCˆÍà›<j.yx$Àg&@”Hf )ÉÒ´ÿvD]¾ –†dý?/UÈ‹ìü¢—¨æËñ ² þK›‹š:g1pÀM5¥@1ÈtõÉ)õdïûžòˆWyI~í[eÉ_jЬ •µˆ-‹ßH‘Ì!UK°ÌͤZ¤3Jˆ~\(ÛCHùußáá¬Q¤÷à½Áô¿ú²¬ZvÏF÷ŠÞD,\ÎÎ ÉLQ€VŸ‹›PÙº§Õ¶Á ˜èÃe9®m_ªƒ ¥}†$Hÿ»üð;%fjó qH $Ç0®ýŒ]CRF ‚?$¸ ¤0 æ½þŠåœ‘ÓÃàš]TâÃb8ÿ#¡wŠÌù*úÐâè+7gJªé5B¿É2ø¸c0Z1ÑäÉ}óMÝÉ/ÑGëøýû´Ñ´ ͪ¨çíæB×þÒÕÕ­B»ËÎÏ…H*qïB ZÀ…'®9Ë«‰Ëö4ö Rš•“D2]‘;zÝtë^—Oó§‹ýp!È ðŽrgÞ8d[‚hãKmFÖé½—sýPEvå`R«@Ñgó^c^5ÒÛâ<6ŸHŸÀœ¡ölƒ';"²9g F ÷C‘ ÇFt×U=}c —<ÛÑ‚AÆ;vLÔç‘W…ñ=Z¥.”˜©£ô”rÂÏ…ØNÅH)eòšÅÑW4\ÄSÒ—9ýyZxÂZ‰&è"ïÌÂw¼ï/K;e—Ž8¸8‚šêIy‰õ:éÉ12ø×/‚,‚}:‚>¶ý®Dlo3GñºÛ%&ëŸÛθÚIÑPÜ’cGó›]”eAÈZŽ{ÚW·K¾€“u‚kCnÈæíh [u&Þ8"tå·í #ÛÅæ`ïÑø™êÓ‡$}ÔíIÅúŒŠD²ÚÏðäémTOÕv›1$”kG¢)Ÿ“?¨B‘.0±öfòbuÚƒ¶ëÜhàmKYâ­³úºìuÆTPCÊö=0-á\éQF<âØÕ.Ì©"X“éá]‡gÜt¿£¾ìÓ1@­?zæ·¥Vsúz£V_ˆË)QçË=&[­ëØZ!°s‹U™äsðïšxñøñ¬ÂLD-|CÁ’1™é0P_|9¶wÂY›ª&j :Xkh,#­ð°%¿;÷ÿ4Û³ÚQåÿr6fÏAa¢tg>1FQb ˆË£̨Œ,ÕÖE´· €ÇÞï-Û{)=–_Þ 0t%Ì_,ýwâõ„9õ™í¹=ˆ¨zÉ]G':£|_Æ·â¹)²rgÝ·‡ÿKqà5¤îRÿÖNƒ_­xú|zE¼Y™äƒôB½cÇÓÏ<ƒ+xêY t“°] Ÿ;†‹¾àæ0hrÛ?`Ûñð×rQš4©%»`"HH¤>çÔß“»vÈõÚ­¾u?cœu&v³¥y ÜÀþCþéŸ6~¾±ôDXyorvå°šƒnæåÂûÒIQF’0Šøü’Á‰¿ìpT\0&ËÏ¢Y4È!üM€ûžª>İìã‚9íÜi‘JУnδ‹mݵVÒ-;_à1=ØÐЊ7„EQEíVª]?€Ø‹ÿ¸8^MŽj±sˆ¤0†u—å+0#{–òiq§¼ò޹6(/ìÔø†Ê˜Cñ,®„Êc(_Ä~öb·À]©áìâL¦4Ù7Ì’sáöM¹3A«‡‰ÏÁ›¬ø¬|,‚žÎ›Ò 0=gîÇ™$pɄФ€–S±‹ªÙ²>&}š°H¨ç´†ÌNkus}Ê¡ÔAã°w l‹€(¶ÐªÜ7ì“ëMºV>"#Ø|ëj¶ ΋³\óIÅh'Þ¥HÉHl|òÇ6ÿ÷3…r„=ôJ†„+=FààUþj¹C¯e„(i*pÚ*êæÅ4FÂãþ+ ŠU BÂfÞ6ÔûýNÅ,Îú‰;¶‡5òDéÄÒUlÑAÜyUY¬b}ËŰ;ï¡4ûA°5X®ÿ3MñŠV±|‚¹¿˜Œ Ö«#£€H6ÅïûcÛ[ÈÍ»¿¹†`שRIxKÑÂ;5²»6“öeçï‚Å÷óЬˆôWÕ+„ËTˆÒý‹;/`eïÎ/ˆ‚L÷_Ñå“‘n¹“†Å#Ä·Jˆ0…=óÖHŸ1ù„f“¨ÛFV7^§?µÔ5ÿÙ5âJQkI¶+ „ ƒh‚h‰W‘RM÷µ€ÖJP?"ò:¡Ÿq´²2# mb]­ë,¼TÞ£PB U¿#£¶öPl²»LGm Ñ*’Í.<¿„¤ýcŒçc²c© %z F…ö0äHz¯~¹?R²œ’÷¥‹r¶×Lì¯-r©©Íë(²“€ ~WôëTå8é¼D1î¦îÖ VÆÖ×j‡ŒóÍ0•ùí¨1@Ã!üïGŒ$ˆt‡^Óñ”Œ’ búÕ\W‘g¼ ;ר¶Ÿ#^æEW÷לݯM²úýzÙ‘¶°2òž ôw\½q)âˆÒ]t ÀTvl¤®ýAæðz>û‹tìõõ5lÔ9DpªðÏBwp$d; sšwÔ5 ó¥êE`ÙˆÂvC¬‹(²˜JÔ¼öÖzuߧ̓ߕ=àDÜ*¥³|‘‚¥àžïÖ0£‹–ÈÌ¿ü¬WܨÛCÉA6‰ìc…¬U_d¿‰ÈWª¯•Æ ó`ƒ£}kvŸAç,Vò ¢h‚ûÀ6°{DÎ+eÔqNÿ®šÐ&Š Âñ’"é(3+5æXÑÔŽü9±ë­34˜U嘮=<äžgß¿·rGø@¡cÑ’²clfqæšyÉžª´IB~oñi~>Ök®¼×Ÿè„+;DÁ=»]t¿ˆdÌ(תxûÂÕx‘TöõŒÚ±Õ_WÞ¼ji“™/”¬vl츚¼Nž¯}ÌÈËη饑ã6‹d¤(»‹×n«³˜ê˜â¡m\e -´K+pZòtáµFùþ²D1T˜Úm³ ;„)svèãÜÝ“©'iƒu<Óî¦8Œ½½‚ƒ‹`ÂëŠkñ‚FÝY&^àMnLr¼o®t–Åc­Mw R»±dpîa™Ÿ9«ô%¦%ȸ¬KÅ(jz*ÃB&˜Ÿ|Ž Œ Ÿ÷R”¬N-4…ÌGغF¥pè<†Тúhék](¡;veQñ·{k’MÿBÖ]E(Þ&—'¢%w ·\(÷·ŽêÔ5{(‡£6Ù[]ûQ¡§­N‚N»º |“7Üõ ÑrìÄç>q#*·°ãþ%'k Ø•ÃÆJ[¯/k²u„°/½.ÿ‹Žþ,Á]Îðçêv™ßª¤CbùqQ„²ÿ¬vÞ„¢í¯§®ƒYC5м!QïzI¼ÀÉ ÀU>óµ…ͪ’ÄÚSInîµÉ ìùqÒ³%ðh/C&ŠöÔ2­î#ú)¥ªJNC¡ùÜÉ%V÷ç`¸¥m›b^­»j”ùþÅFr˜3ìMZf‡p•þìynYß 4ÌÕÛ§o[~5¾m'‘JÿÚåÒ ^žÚw¨ýê1C®+g³?ÝâÏ´S¿Z‰ôÙQã+¿õJ0£S…·;Šla9zš"+%úÌ > Ó|}MÜ Çd&Úñ¹è—„ýj[ð´.áwσen8¿"VÁ["cà&f •Y nêͳ!R=‹ó6ùË–LT':†Ù€ÃØòþ):¯Òú£ +­Ô;©séû³.Ýî3®d±ô2ô&F) ïH™s¡¡`Ä‘.ØÁÖ¶°Æò¼.3^¨wÐOO—^|Ċųgò°~Ô†hÈJ!AR©]Ü_òê#©QD|q]7¾Ò¦Å8ŽGcí+€érh}zfÖˆæiË·ÿF¼×Ï|N¬” ÁUÝ¡H¿¦ö” P,W­E}<‡‰Ÿ,¾š[ãt"S«XtFvVå Àh€ÐA°œ‡KáÌñƒ 5»¤).Jœr¯Å=ü)ŸÒ`ÞFèÞ+EK’JÜž>›Xg7Ô÷s‰?2)Í9Ó5î÷•Š®2_f¯ÂwìA’V\ÉRÞsÖBV ê þg÷9ëÒ^ A[yé#A³ê•Ã’U«Ðd†ã7šn›¶W{m„kÞd®"²‹†ög£ARî¾ÃòÈœÞÈYÛ˜Ìݹ•)©}Iˆ¦U5«ò*IjcT¯àÈ®¢õ1¬ÆØeXpÜ0N—¤móH?†l]C›ù øï®ÿW9y&ÞŽ)Ôpn’4"wQÿ÷9fvä¦Ýt-2g_‡ë×ø‹Cg'µö ·>š³À÷ÈWK„O‰•Q›Æº¤Òp3þT§ØÓgUlòž¤åB½Îõ+àŸøõyµ“ U'J•-.[ÝÅÎD5ÇË¥bX׾וÙÂj öûÔ{°ø$£!Ú.n‚`óš(‹JVÇÐ@ݨÉ9¶ø‘)ø_ÂL¹^eàPI…¯÷æÉ~¥Oè˜ Ú:Ú£{”¬êõd›ÎŽAY"qN‹ªóV£DꦲËÿ*ENîç[©Pdú3×GŸÖ­‘Ï1£¸ ö™K$ìú' ZÞ×à(ž<@1ódA×'râs˜J5­:WˆÃµH÷Ìžm{hÔêÃa½µ}‹™mÁ7üi"5grNzß=1Y®uv%é t³,DUÜQë¥ë‹·UJ€9 çúÇ‹gÓ²Ý숇Ü×3)“6°ÌZÁ¯rñ;u9…\õ›±M…ÍC¡^ö&ô/dI•H;¤õ)ÐI™üÄ@:ƒá •±ÔÂvß~6"IŠúÙÛÆ—ªðy¹–Hè`6Õý¹"c7Ð~÷Dî%÷íœ!Hú#ì)Mf*Ë$Só_´Œ†à8ƒ<¶8—ÆîºdDÛeçx›í/Û¸ßj¼dø}Ã^¬®ª£íü´»9×ÈëT! 3p'H«DDÚ„:]–/Õ‘/œÂ}qè{Iö%nã  ú0…ùÍQÈ Û"ÄÖôÝq-3?ë¡I}:ºE®INy˜ZíŽ{ŠÄÎ¥ëÇl”qh¨ ó»ÌuR§ýƒ»MÙ?Ówæ¡?í„]UÆ ÜÑTèo"È6å|ìoJTϹ侪)‚+ 62 ©¦ü g‘Ô[Áäò.%àI§#¦8ç‚i$ÀÛz;mñ@ŽG}+!ÆO·|ºH P8«¹†ŠG]5 ß¹V4üÖ‹eåRy ‚}©ûª¥ÐR ¯„í®ÔŽø¬Ú±ìË ÁºÒ-_n¯sÜ6ZUCÀ÷BS¯‡éêÄ<­ÎìbXÜô¸–(m;’æcÎPbÌ Im(Ø·«ÔeËO÷kåæ{E“Gw ¤Å,åÓ‰–ÇSQ´f¾Õi¬{ˆé >ÓÔÙMÆjÑÚ‚Ñð_îç îã·µã`·žb†ŭ˓þÒ©ÃiJt6ÐB† £/oޱÛ>V%»Mâ [x>–7E¬l5H©¬t‘­ÐUšzB;á7êQ„è8ê,{T6¦íä`ú·”™'¿nÿ˜Ë´ÿV¬M¼ vÂX+E&+ÛJ{¦O‘ï¿áO{¬‰äѨ2csÉžbZH—zÌäìñw¥¶Ø7YT$ltá‹Íôbè&n¤ËÝK°mfN†5þœ¢%€s®ÇæüxH\^rbס“HbWÓ[!V/jcL„óŠ¿<0¹´ÍÀM;–±sŸ vË!øbëz—¬KI+'º »((2JGÀh²ùÞGµaJÉŽ™74”ê–°ƒªØ LjfmõÈ"€¡UÒ–×õ[Àé݆Ûp­}ÜJñâ>™È”[*F©¹Œ ¶SkiVhF;jq[kwL>0a:1ÊiSC!GÆ\¼ ‡úÒð,eè 'DTÚSâýŽÕÓ+’Œ}M{¸é?Ç¿ŒмP?¾.L vK–¢…*Êr#é 6#™7Õ.ëŽÐ\^] òt: Ä ÎeÄ?6™Òba¿®ySGÂjà¾M)42G"èFúÇS, ÇW|- aœÓãÆ‡¹z¢ê€ÜÁ¦‡ªNbâm¨½Í–'3qç÷’hÝjZŽÉ¢ÈáZkß½c¯.PW-8>aö“ŽuÚAiú”¬ôŽÓPïÔœÁ&ŠCöíþéHÜp2± iR´¦Tn(-g({©q¡tèÜFC1í%->,ëy”ÓPלs7*ΦŒ€><Ù´ø´Ò¨v‚dµÍöîšCÓȕٺ6?˜°˜"Ï÷9yØ-ó®·ö;ròlô„À =GrÈ"¹ B.Ôä¹ò%îö‹.7²ôÓ'ÒîNdä÷‹sUb¨$b {pú¾W…x– '#E'D‹ã!>·Ô?ã°ží žºaá4Ù,’½lð-íðÖ½8…H£,ZSåÂj¿ÇØÒ@Ô]n£ì’‰©¦ B÷/^‚Vu&LøˆÝƃÕÛ\ÇÀŠÎüù…M*Æ„§}í¢¼ðÑ H´i’¨³®¶­zk˜¯ÌFÈB„¦q)o´FnS/Ž ^ÿI~„üµn$rÁòâiló”sËkt£Ì&bNö?D‚µ(Зj@,”vq=Ü:G@` ˜zý´l4ýôö’õ%ð[(}ƹ\ƒÖ²r®½,­4Ù³ÙÿŽ[w¨\ïÁ~‰-y+”ò8=è™E%í’\E‡< äÞž endstream endobj 946 0 obj << /Length1 1950 /Length2 14195 /Length3 0 /Length 15401 /Filter /FlateDecode >> stream xÚöPœÛ¶ ãqwwww Nw‚w \Á]ƒ»»KpwöÈÞçÞ½Ïýÿª÷ª«º¿1m±ÖœëkJRuFQsS ”ƒ½ #+ @\QÀÂÂÎĆ@I©r±þmE Ô:9ƒìùþåwš¸¼Û$L\ÞÃìr®¶Vv++7 €……÷œø&n s€"@ÎÁèŒ@)îàèé²´ry_å4f´V^^n†¿Ò¢v@'™‰=@ÑÄÅ h÷¾¢™‰-@ÝÁ tñü¯4V..Ž|ÌÌîîîL&vÎLN–B´ w‹@ è tršþÈ(™ØÿÆ„@ а9ÿmVw°pq7qÞ ¶ 3 ½ó{‚«½9Ð ð¾6@]V ì´ÿ;XáïÀ¶ÀÊÄú¿åþ“ý§Èþ¯d33;G{O½%Àd (K)0¹x¸0LìÍÿšØ:;¼ç›¸™€lMLßþ"nU˜¼ëû:g3'£‹3“3ÈöBæ?eÞ7YÒÞ\ÜÁÎhïâŒð‡ŸÈ hö¾ëžÌ«½ƒ»½÷ßÏ {s‹?Ì]™5íAŸ\²ÿ‰x7!üc³º8YXX¸yÙÀO ‡™óŸâžŽÀ¿œ¬Ìïü}½ï€¾ àû‚·³‰àâä ôõþ·ã¿++Àdæ0Z‚ìþ©þnZüßOÞ äÐgyo¼÷–¹ƒ½­ç?á.³ªŒ²¦¼6ý_‚ÿ×%&æàðfdç0²q²XYعÜï¾ÿ]EÅô,ÿäÊÚ[8xÿ&û¾KÿCØí?§OóŸÁ üw-%‡÷Žhþið,œ,fï_¬ÿŸÛü¯”ÿÝý§ÊÿKƒÿ_>R®¶¶yiþ¸ÿ¼&v [ÏÿøßûÕÕå½÷Þ'Àþÿ†jÿWE 9ÈÕîÿze]LÞg@ÔÞÒö7ä,òš«€\̬þn•¿íšÌdTqpý¹PŒ¬,,ÿÇ÷>Uf6ï—†ó{?þå¾Í/)ioæ`þgºØ8¹&NN&žïGüŽ8Þ¬ïchôø«ƒÌLö.ï)€wy¾ '„?çÉË `6ùcúñ˜MÿA¼f³ÿEïè}Öþ‰þ×Ùü_À ü_øN‡ùïÍú'€ Àlñüƒ@ÿijÿnÿ`ýc°ýÇÿ'ÜÁÕé_åÞ,ÿß ZýC—óy:Z½_\ÿD¼Û@ÿ‚ïÚmþßÅÛþ ¾«·û²¾ký§ç{ªýûýËÿ.ÞáŸÕß“þËýÎÞñ_ðú§ÁwêÿÆúÎÓùŸµþ  Û¿„p¾‡;¿ß ÿ$¼ïõ?ûü>cÌ.VNÀÅ;yw‡%¼ówý|—îö/øÎÞý_çôžý¯ÅØÞË{þ ¾+óúGø{%/ ÓßKýW§š¹:9½ßÓÝ$ïmü?ø¯—è4CXšw0ã¶® n{¨%tgÜœ¡ÜÕþJËè½äÔîú6™¶23pÃéN4y¨muG’æVd™äÅû¸¹öKK¢jë“ϳQ¼ÚÔn+Ââ$NÿDÁ±hm1<£†ÈžÏË'­ÈfðN9ÊoŸ\yPTò0Ü{¥=jûÊVFCçwU÷*¹äŸË¦£5£>ÏRæšfÍá‘Á¸0ÃÑa\x ÎÞÞÍ`äL¼‘ÈÅÓ#øžD³zëm²Å<Îy­•k°9wáSàëáCÞbŒNQy‹¤Èá.x—®ö/z4 ’ä 3¤®2¢1°eT‚Ô"í{ªÝF—:X}KSöcþJ¬.mÄ2r"SÆ®l5ŠÄt©f·tXˆ­µÝiý´°N%Zæ®}Ìq“&V#g‡»­éðu!±çæȹŸœÆ••DZÞz²À×~Æ}‘%8a²qÕ6Z㬎.¶\ÑÖ»MÕ¾S~ö[5 •'óìX Ÿrr=‘›-Œ–[æ:~”ËÂý&Yp)f˜?eB-ÀÖoÿ+H½Æ ' Jˆ¹ÙfcϤ}{¨C¥‚Ìú²; aÏeÓWc™;Ußq/~×Õöô2SäPöt ëŽt¨ùÉy}œÄÕouŠ9ŒGH"ÎFï?ï‡JAWwâSø´jC›ÕX%ñûd`‰]|:")B3¥“FÂ}äñâ0‘9®'y*"¡<ŸÒ5IííÆ­um<àÉ/lÏÓånDÞœlxׂT/k"D˜é¨a` ðlôVî>OìÅvOæ&óÛˆ¤¦~°žT`M©±ê'­ñúîꃥ9_J6µÐI“±_Îï0ÒãÖò”#T^ç¬9Öûç’yí}bz2rð÷!ÅkÝîåWeŧ²|á#04„ XáPÛ¥1ép^”9PsòJrÏ‰Æ½ß ¦}çµ¹šòz¿á‰ÂE«¢q)FeEp·¶­&ºÎ)!䫟éˆ\Ñfz^=dW2é”™ÉRº\Xù)lGß(‘û1¹óOŽä¹bôy¾ ËŸ[Ÿ°©û«kŠÔÔ ¿ą̂ŒÔ§™|‘º=¬‚¥éð˪Á«»C!Giî* ^Ã*_é .[£™’%¢‚éFÏÙÛûEâθõ•Ï{×SŒ¢ÉŽï*0œzØ·h¦ÓÚðãÑ[o‹ÐŽóË>0eвoË š”aµ~9Éõ¢‘ˆœ·ÁÕ7¡_/ë =á8ÓàLAc¾O<¸ ¤Ê<9Ã[.@”ƒ2m|þÙÈ88ÍŽ™Ã5ÎÄ Êé‚´s NA I¼«-Ε å :ž¼ÄQŒ šCÊT›Ù£—€†mg´0~æ–éÓZÚŠPcóúÎëÀ‡èņ`Ëà¤ü™kA!"Öjÿ$Y;ÞߤÆOzT¹š¹èØêº™ª#@ôÝÁø…Î$é"!ÀKu†0ß Óå^>àPɼ?× »óA3³ò{™àYß4Ôc)áÚ¬×.Ôø,<(ËU *Õ*=Yýzídcኞ<?L;Ò_*}àãǧ‚A×ãÑ(©n¯«d{¿n·{.ã4W–p`+¸êé5g¡*¨9ªž^µå[=ü ¶æß=6»1Ò¬Ö…àïþ€‚@3]Ã1i…£—-S|Y2ä§Z¶wµÔÚ,YË€tΡ«,àúXãŸwT™Msmñ´‘–Òöí§ÝÐ&®ÚGw97ø 5Ç»ªË]¿Ðs€ bnX´&ê‘) ±ªf›o}l+!7ÕÔqSr‰þ‹½\ÔÌ\ç<ë{†¦…‘ü|ÃéÙâKŒ¸mt´ïY·'Ù²Ý.R#òåbÓé{GN%ýW:5OçÔ$Šc>SæÓZ€nšè°üo(Lo‹’¥ ¿¯Ü?fHîáá¶„2i–Ò,‚"áa©öÁ‡wr7K‹M4ЊãYdöÛ†wY6 Næ‚E½Ôöú—¶ 8’cJ~ 9Žih‰Mq ^“Û5xˆàºÝ(©¼¹ÉdÉT\…4m‘¦‹ì3|ϳs¶vÊò`\ଡsW=³Qe ³3â„?“EóˆV÷„‚ÇDu¬Ë¿bXÕUiÏ®~Úë^¥Ñ.=¥ƒ7pä@;Ç­wd}'+g>2eØ™ZÅ)ƒÙ9ðJÏ>ÞÝëÐ ì¶Ì·­À_á1j†–.±¶žð—Ò(ïÍ×&kcu#Ê¢JMÔÂñãIÒ..ÎkrùÍkgiù s¿¾뼿&OlG‹èë¡;@ʤ'n¹&šó¸RN2z y#Àë6ñA‚fÊÜŠw‚áC¤ƒüÇägáN !Ö¬,·^Éó.¡ð¤;ê ÞˆP¶Â[IfƇçS„ð¡ë(šCÈT6¡MBRºè€Bj‚ʃˆ\¥$\”yn"ˆÙú*¡ž—ÂkzÈž±””Û&>͘‘;XÚc««â5—åE?ˆBkV$ÕìŒì¾iÉù$«XꮌxPtÆÞ õþ4Z “­ûßH6Š–Ýê:{‚IHégçõ ŠnhNÉtì¿€º)+ƒ’Šu®•%<›Ùp]a"Ø šGž—[o#ö+Íù8‡4ÛsgT4݈£4ºL̸·zZ>‘‘ôÜ¢S¾e° Ÿž6›‘6«<Ûš1W¦Ù©hw8É”5Ó}†ìjsåjÞ雩&‰¯˜ ðNÀÔc¿¬ÆÁ®ã®óÌùNŸ½A}¿/hÿTÐ䪑3µäÄl­0qÙÅ(Zµ^!,<žþiü¶êA«½æÐäŒü;禇 ­&qìïž›º‘ØÞ1µ§[þ›q/z™ŒQÿB}Býl)èžMl”Ûç¤QÚWœš€–Ç)F&Å(û%·x¸,ŒyòÁ”‰QuE_S¬û9œ"¥GŲۙQ“òö§ùýmTˆ€G¨¢kU‘-Ȇ7áG 7–2ëmö8~¹g,·9~5Ô{Ók]ÒM]`…x/ Þïå:VßÛÓ &8Tfj¼fõX'—tÎvÆ/!,Ÿk†Ü«z”¢…¿³3AŒÌšþ”©è£‡`PÚ3B9aõÁèŽq®©\aaÒZØâa«´ß\ņ¥Øì;½æg‚Fö2fR_qø!¿/‹bŒÍomº•=£ Ù3ñs” $¢>•ª¢.{pß²¶ °‹N¶eðÁš|úÁ¿”ýbzÕÓé6@¢ö%âWìK]É2vâþØ9§ÖÌ Ô7 ]´åãSõÍéˆ €³ú“fáæ r¹ÆÕ(Å>Lú>ª-¢2sÏL¹ñVYý16^Hkî½Íô߯“PxaÝ 8Ó[·…|•Ô›©´Jß^š?ˆƒŸ0•ä}H?*oKð?iЊ}Z+úaç>],Ä‚ý“ GM7éP†Š×2<6Oèq‰uôaH»2µGV¸?5¸¯v°ˆ0´;ùB—ßs&ÐÒçq©¸¥ú©Â: ´ßdPX¡ý¤ú£ÛÓ¨“ _þk¿‘¶Œ·±GÀ>Z¬Çu‚‘eåÇ>ÙF—ð3’Œê˜È0N»^Ê ѽËi³?»ÈËý*è×)ô'ßá”B¥Û½Çâ×ÍÚWðl"YQ ô=² uŒŽ8ôÊ8OIÔ±C”ðܳYp×=5ÆŽNH¿÷Aš÷ ®êì§“)·$ôR„oEG–údÁܘœß¤„?Ššiˆ¼±©½=ÝEXUr-|£4ú1qªƒmMV 76i‚zÐÑlÑøë†±’0,ïãðb+ï}©h^1tÖ÷Çž4ªxÒñ,i UìäG ÊrE<>~[gdQçgÍs=Ê5–4½­Ûâ–§I­0¾*€ˆ¨T¶mx, Ã÷Ô]È”þºB¿ÇµZ•N#ƒolû×Pଳù=Σ^{+n2†»ÙQwia–H¥¯]jZ-ä ðChàn‡Ù¼WiAN¬Ñ<Ì)智}ƒº¬¢–š I£V‡š¯¾7;NM †ŒŠ6ôãk`¦;µŽ~¶+ñîœL(Õ¼&híp±"ó´ß{>`|#í@32§æ…Ÿ«áÆ3AþèÏýF.È'~Îó…´¢úMhàS³L«ójvþîÓ¸ø„‘lµ=%û8!T²2¤aeÔ·c ÑÔHtÓ¡sIä›éô e¹˜µ¦›—!Xéäà+3SFÐõ1¸{:ïDƒA:0yc;ô1ùXùÅ÷ØJ(¦Äœy&xJÓVùЉŽàÊžH”YbÉqÄDáOB¿"IOv¹3¨ÅÕ&jøB?|¤¹v’Öª–…®·b *®DeM6 ZÂË}@ø2×9|3¨îlêÖŠàB6ÕÓÖK!äy&x̸í³Q.ÑI²*#öýµeôCã3s÷¯µÝ@hË)»ùG(aõ^\©GeB4ÉŸöÜ3}ë'š1š‰GKky m’(¨“/v…­=¡Ë³Fi¡ÐÅj&ÇD öø?Çéæ ¶+Ý6’7Ø^N6o‹\ŽˆÇö°{‘pm:>±®Ö1Îñ¯tÞ‰©—.ƒ¨¦Øó?§m!©´æ ¤}ªE‡Q—^5×8B¤´iú™ùëkœT;]¯ÄÉEPLŠ-ã Ÿ)08Ç)¬`ƒ&øçIì>kz”Òú¤õíª9ZÀÓéJ$Ë`bv9£0!Ðîwô 2$Qp@{ï¢Ø›Ú\¹ ‡ÉiHz±lèYª“­k¬uJvÌ&ŽY¬}x®ûª›ŠH¤ŽsfÌ›‰–º\[à ‰ìøö`&Ð7\²(,10{cPùx—¾ ¿Û‰“þ&6 -ŒSÃCVGæ_â2Í+ù ŽG;ˆ1Ý'ö˃ÏÁdë(Äâ®2R‚*ÕˆPà•™ûö-C)Eº…rƈõ©Srë/¤§£TDÓU¯Ð&ÚÅÇ jqH?¥VÚé¾s­=èØõ¤ÛÚóÊ,kdOU¹é7á3ø¢€É}¥¨þƒ½îé¯c‡ž·^Jdì‰Añ¹ô&ºç²ddðúᥚîÒÝ _RhÆ·¶²k+ñn9 Ì´Û¡@uŽ†Ð¡œÏ@«OO(¸ŒÍîH壕«&77B0NË¡o˜eË%$&Wta(XjXôæ] îÉß¶µŠí¾ÕÅúµ]‹N½ÎÒž>øÈþòÌ,ôoL'ÁEÈ‹{¥ŒNg±·Â}iˆa— 4@-C!Œ$–¿˜-Óó¥í’{Þ›AÉQÛl¹Î9û¿Z.jC¯HꓨãºCbðÏÒàþÖÒÝúÉâÊ€ˆ««‘º>ssOÜCjËå9Aó§&GÅ>]¼;þÅK‚枨}w˜,Ù¤ H9m¦1•Qâ==*À¿‰fû4¤›M&‡ãxO¸Q‹ÑíVXðà=f¥A´öö0T»]8ŸÖY³T§#:•ÑI¹7íRE”¢C^[é)—ìh©’gÉñ÷–ã— ³£}âZ”× Pµ(…QD+¨þýõùU¥É|²×jM.”¨=0ÚEÅ•\Ñu#üR‚Àß]‚É™²èYõœpÕ‘O\ñ¼qPUJð5š+SwI ¨²9~±é«íûÒOµ)¾¯hŒùú1ˆew·2ß’ßø!Ú®8ç³#$FÏ«ˆBqù1: šÓTÂV]» ­5ÓúPHn×õ’&Vmµds2µïKâÓY&¦TÕäéF}éb+—™K/Íu×ȇ®ZU»C_Z;+øV̺CÌ–vP«Óæ¸} m¦jö¹8úb]gWíxDZ;s’÷QëuAüóf5v˜,;ÿGŒåÖ3CõäÞn8^ÖÏ´Ÿ+§æªÎH{m6aÄ'!FêôAž‘à UE!—BÞ‹„$…Xòì}ŒD^˜Ôâ!q§a ñ¦¤D¥(2º ¢S~/Ÿ‚öçqYNW˜,ÒcØìoÍ"X®qV: ‘‡6ÝùÛU²p®ÃŽìN;ÈÝ8öÊD]Š×5:¸z#žc¼ª°úâÌÃð¨4m~æ‘^ØèÛF‡íA,Ÿ¯yBLì>ù£,Ú¦7“F¢²mÖ]¼Æõëf`¤c¶:Ãú¦VIFã(HTJO¨ÓÑŠ(ñ„sÒŠ÷¯0dà¹ß>ÔO§s¶Ïr‘)z¹Äd¬ˆÊÑ($fÂ8ùGÑÉÚ§Tæˆʶcãâ¨j%dV]¤EìFéÕþV?Ûº#Ø]‚ŠÕ•u=ñÄÓq®ÆDü0ÊšMÜÕy=ËW ýürÿxÉ…œeôo{ç_ÞbŸt‡ ¬ñ“ë-^uÅ–Žc"Nƒo¯@x#ל5ŽêQ0ߊ×Ö|ûćÉËë4ƒ1P›ñö¯†üÒ"ì©Ü¢>Ï´G¿©Anü,GWHWòCÙil‘•±¦MÚLJÇ´ –íkŸ²½`‡X%Ök@ƒVŒÆ$PëMáXau«^ÂTîhô“HXØZ‡2_VÍ/§jØ=>Å"^ç2¤×œ©O"Át ¿u¿¡ùπɚ ‰_õÏbšE&‹ (‰‹?’ËsG’dÍý>T³ŽÏ´aÍÚ¥" 2¬Y;ÀWóš´@?L¡}°´]K¤öøb*¦b.P¹Sh8Ã0CŠÚ“ë6·k·ˆ(G_M'ð£šY½b°BPq”×W‡XE}ë·(½Rù1Ù¶˜¼äm‚þ9jîøŒž’R !ñN÷>‰vT¾ Æ…ü¾çt$'üÖoì!zØÐ zŽVÏ9‘ìu謘I±¹3}]’¦¶¤[ørbFãgô¨äð¤øË±xÒÂbFŸÒ[5-E'.xs tëèûïî?€9-ѧ4”LÆLwWÈ.]‰Æx—ƒþaÙwu±ö¬»VT{¯© ZÖægrûG»_XëÊU¯K¡xîÝîÊ®tJ(6`fYioZù³?yËeº?ñT± L ³_æ_]-øÏeÜä1¨§ÃÐâŠP¡¶GÄì2èÊ2ÕÞÈ%ÍSZ/t\Â6é9cI°ˆm³]³oA”ˆFªs„=w⻬º&Fß=QEƒÌÿ€µ=š¥]O‰Ããý!ÞN\s±‘¿QÕå•p'KÿG„ÞFºuz.¤*Éàž¸¶pbñ ×á×îo‰á½˜Ÿà8ÔÛ”× sæ›K?§7(/Lu ÂuúŽ ¹CÀ7²è»=„ÛIÓ—ÄìÙê‹ öÑÏàVáŸ3©ïVÀ´a²‰ôóçPãàWv\ÁfúUxê±ï1zE“w“˜Õ™SÁU„°®Î‰ï§íU‡/eýtylI]í£Ë×õ×T¡ôR³åw¦Ëù˜ç|3ì8îÏü>¶f^tžZ–[ÉNå®î9Ó´—´Z3( qÄdAÝFLSCó…”°îA1 $&ñ3ë8Ïd*²:Ï^öqIË« _µæöµŽ5yJNó,Jº&WÀ·ë“ÂÑW9敊ÖÙÍRgøy›¸˜p°2Û#;™à&ý—‡¢ýêÝ×S”’úä‘Ê•ÓrgO§¿Ü^·ii”ŠtG}Óêž\öç&„=Ö­v‰wÉ?¢&š…h(âT85äÕåjro5ù~]4k’ÂÕçÈ'ÇõbUÚiGB‘fçX~ò¿wAmÐ;.{õõ3ø®E¦µÆ«2¤HT•Ë"_‚J] î”ÖlïÝŽP¨üàc‹ŸÓÈZ8Áâ:Ž™“€KÜ™fÞzâûÑ>8ëœZŒR–÷Ö-°ÁÓJs}ÏWrpøM¬ ‘ÖK°jÙn+— ®¬*Á›g¨_ï¶²Š’7Õekè!'lèäp Çá C+"ÐY¾'žIõ0‡ªÆðÃá6~ïõž¿SÚô/=bí®ºxÔ>UYÖ·…ß„ŸíæYâ㊌: Ÿˆè›Ì­ý¢b´¯È¸Mç¹Â$½é?± w)JŸz^O„ˆ—È ü쓇Vµâfñm*'B†¨ø!4ósöêçŠX(œÏ–õ¢@ãò³qšøc'‹ëMK¦÷k_Îlªc‘‡í\•4RhÆT e¼ÛS™Ã6øƒx5 03Á{¼çG|DþОpãúY¼üÙêc’8Z’Ä'Ãè¥ìôd„p“7¨àOl+A»×Ã%m'@½è v܃§ºl)§x^"Ŭ#7×ø\­¹^Ÿ›áorË×8×xý±½æ[ÜÏÒ=Ì ,W´Ô#ô NßÌ©]kuM£Îw÷di4-hhŒÇ·‹DQU'”œLEª|3µå a¦ËKépà¯d÷1²â*„rwŒðý×àQË£7#à$ô\2yGŸ™ ŒY´z¡&a¤ÙËå#q×2ªJÊn®î'H­+çæ–,•„¸Ç,õf„t—dö$UôÓ%6pôBVöŒ#9^+5Û&³ q£ïƒ­J\®+#üê9›Ý`ŸÝÓN¾6¬ î¿êx¡'t˜”•£{CËœZÔuY³}ºÂ¿“O*vþ„ë¸Ec$»b«é£¤yU€ãöïÑÕ*æ• À°B<í–QOVÊ÷ûÔóñÈ›Ÿ5­”‹ºÍÇ¢ÒZ{Âæ5“°‰âD¿ óÔÒ¾*¤©ÓÍ™Ý ›>é[âZ\¬¿36ÜçàŽ¸8˜}+{7°Ã#CbÍè[ò|ÄiÅéư„X‚§wpRÌa'ùYºûÆ•¢Áö]ÿøW–Y‹Ogô~\}Yï/‘;V‹ŸeRÌÌÖéV3¿ØSèo0|"°TZøøL^Ÿc0áEüUeÅÔpBæCB!.0ãù÷ñÃÌiúä8S‰²2eªÅœƒùuŸÓÖš¿¥"ZcS×QÞ¾ÝÀ‹\Xu/h^B§wÙD |þ™z³.(øIàÖè®KŠÚÅïB9öEü^®ñ8–OËçí pX!Ïÿø›ÚïBV,XÉ@…¾ú¸\NÞèÑ’t›I{52çDœ:Ê-í€ ` XÐG½†AÓD}é9U ó£™S™Z_ ½S†p/GnFNýxqì_ú- ›Ð€ª³EÈ¡?e(¯OdûºÆ7œý®amÄœ„?³üJ0Ü3Ee>â¼ÆA/®†Â=G²º¶òôc¿v˜œ^Í å0^§˜ C „Ú³óoï³?¥ˆxQRÅZ`m扢ÁB= ا¿ -í?02JEF4ÇT0‰•ùhƒáæë©£uøÕC+‡ìÆ80k=§&µn*5$ï @øf;o<7ZÚݨ’<þÞÓs˜²ö[éÛ]PÖísË®/w¼Òýw£tF+Óî¦$NâîJÆ>ÙeŠwã̱Â:f¦ÌšJÞ‰*ë¦ÝÙ!Ÿ B°hJŵÜ,‡‚‰i=Š©,IIšUòÓñ·WTRèˆËñ$8´šÊàÙ¼ìy{¨B³ZÖ'ýÏd¢bÖ*Ÿ¯y×#Š—ªã†E3 ³"г5;;—!Ö¿9P— [6nLw=©öj KjGáˆ/’”4=ëa˜»ŠË•úm£ÎÊ;í~ãl‹­w fÀb`9¯Ü6Û b¶#§P(ÿ,l;s.ß6óâáß'ådKþÍuÔµC{°ßQL*â8…mŽ_ ~c3tT ÙdõAžÅüyá«`Žy–¿"ÅGx08§<;§¼ë¸& Ð$ýâð$¸¬žk=ÐOÔœÖÓ…”ýlùó€DNŒkr˜±¬q¨fW˜4ÎyÃÛvyG8-MÓ…Hº¾›5ï'DK ‡ºÅ ’*IƒËGÔÃ`‹ViP¾†¶¯¸ÃÓÙ -XÌM ?ÒñÖ<&]K; êÓ[Îð¯h-g%ûŠèj›¬Hî}ÅT5I~þçØXüLL‘ð1SÕ¦üoÇ£~_ôÌëÉŸ„¶ô6hg“‘:Í•|IšÂ6¿–L¿äô}%¡Õa5d-#¦Xoß/êÍšÜjq1þ8è é/‚¦Ç ‡]¾ú”2’=xüSzï3 ñÆئ{ZJ¼tÏeêK\¢äv{ï†Y¯1©ÀJJ„%倞™I×FÏW˜î˜‚IÔèŸt&,>˜ÍZþ4 _‹r<Å}Yœ±K櫆ãuFö0ÌExÊI}Ó7¼Ê¡raKI@›Û¨ÜðÿÑ º3Ù›gÜi€ê[,YªAJ›œ}-/þmFžÿá«-.:ÄÖ´YÙ×[»]Tæëß\šÃù¾™ &­…9ýv1qÅÆ mh„3Âëª*{Ȩ÷wýÅÅç9ü½ÂɈ}¯X!Ùõ, î`Ê´—uõ¥“êZN½3Гh$©69šÅãò×ðá ï‹!dŸöéHö†râ^Ö†ylH\`¾µˆ{ócc„ÈæfI,hqc–ÁÖ5ò½‰¸T‹ÞS^ ȳ]›–¯œÊl¤>4²ûj ÇÝ+hµ ÖcZŒÓ…h‡A'î +»·?ê¼<ñƬž¨c‘³_WвH§Çv§Mˆ_’噕<”¤¸vHéÊIî-#’ æ¼éÓ[)HoaåÚ“ënS ×H¾A[qcƒOŽËÞ·šÀÂk«ïd_öjý<,&Œ)Šý5[¿jwÔœ!gqÿt„iƒ§×Ö‘#(vQ‰$àKÚÚ,!Žº&/êõ^5‚`a¦Ðäªì¶|oÕbó°oÙ'Ç<û#‡Dð°á¹7ƒÄ%®†ŸL2HóM󬨕´ã j=a¡tQ¢š™£@”ˆˆÉŸÞˆôÉDKU©ä{Í’ cw»ž7 ÎÇÕ⺘@éÍF÷B82Ê£ NúʾÉÁK‰â)g)®k:¸@g€oˆ’`n) VDêaÀÌÒ±*XaÈ|s7á“N m¤~°’¯Ì#Ò<ßp[XDi|ââ¬3/¹x"K.Þ¬›<–¥1~òL{Ž\žVŠDÜÈO)rXÅ“7ù%2=‚œ üÑžh¦–Ì—â¾QÍÿÈúkœó·žçÄŽ™L'ñ¸D u#0B8'¨ ·àÆÕcâ‡r \eû¼2$i–¹üÃÂõÓ6þ˜q1*œOràñI pé1§Ž”8/> ˜¹ÂÊ’åÐcZÛ®à–“ëï³~Þë9fö4#Éê¨ûÃ) f/‡ ¥‰Ž¦›Õ°Ùc“phˆÆ!}$Xv¼xÞÏ­[&Çí‘Â0M9r(±[ÚHÿG¢y …Û}æÝÔ,@Âpo4vhïI“õÖV{–¥×köLR:½èd>ØÏ‰ÆÚ_¢ë±#7;7¬_ÊNŠ3 ,þ\4>ÿ°7ËLzs)ŒÁ•SÊxš@và€R[I‰—ˆÚðÃ(Vt¡]Åæ"}\mc@Üqvyv5Õݤ2àEZés ÏÝÚỗ­EÔ«Ú†k•¾Älj¯±Ml¼ÓF¸Uò$±qLjà )d—ì‘‘y´a©Ýè^tÔcÅ—p‰È]þlþ¯„\ PAcW¸±›Z•aÙõV…+=¿V G#sVK¼FáõŸ hŪ¤æ—««Áör\ÃéWØýµ\EyÁi8ð›äv>&M¢îu7\æ!süØ{ø…ÆLUÊËCÝ5?<Ú«ŠI>°¯JÙâtÛ<¡­]!]Yby¶WºBÖNÊKM¯6y[/Í?˜ˆãÇØÜÀy`CúÐXÔÿJê1†ƒ¸³EÄßÃFg9WoVâÌ;M˜?ô;ëjð]ÜzXr4ÞÕ–-à¡?ð…ÍUï¿YÕªÄPýõ®b¾¸Ç~¸V™©ÿí©Ìªv!“¹¾H0îÕ³êi˜7î˜Wì­£|„84âˆ>Ùˆ”!T µ¡ ".=N©['vÝʸç½ïÒ¢3êr#¦“?xz)ð1³Æ©ºÎ‡æ´þ$©rt/éÏ-pó4t_K¤¸ìŽrY¤^H#©V«Š$ÁÔAâK™'-ö´¨Îjë~É1îíAÙÜ Mç,Ýh-C¶ñKX’Gµbcmƒ2U²½ž‡™Ö\PÐå³'Å;¨”wœöK«m£žŠÓ)\·SóŸHñY|#T`ýÓ=|u&´û¾´Ù `Užè»ˆÝ)IôG•B·}\1‚8þV6‡gõ‰UF{~}bã2ûøØ1£þÓÈü\‹,UPﯪ‰Ï¹ŸP9á1ÑC5Õ¸ Ð™-z˜km¿`ã9òÄè †Kt·÷b "Ùœƒ¶'“¯:[“¹P= ¸ÊM¶‚‚wI^°Åqèi‹&3š >Ðg÷{ýî`Bú:óyÐÿg£ [ÝèuÆMé>ät:•™@óÔ2N›žÅ­ì«»r=lº€üf4UÍúqs…í.V’¼:6°ÁYèà'óSˆ¾8Ô…!뤎é¤ÀN‹^-¹_¢zÎÞó¾Ï%j2šœôG* ýÀsʦŸ}°Èg+²Ä¬©ºó%zÆ×rôÛQ¾r{ØyÙ’”ܦçºàŸ(Ô_†8ÊË6Ôùÿ¯&°4>û¯Üi«ÇËËÁabºŽ| vò Ø9Ðd–Kû~£ëÛ5ƒÍJ6$KÞ&ÄlÀîèøz vF‡×>‰4âf»Ãþ}‡ÛUÛ«|JÉ%»…ጰÑÔÙW:t”8H¿á)¬„R@ÑËHDÃV ¼¡å¬½æX^é-â*ñôpkîz16åu¤"æ™WZ"ej›‹zfãÎDFØ3±7atŽ­ÉÔar j¯›@7Xï¯ðV)v;ØÀLÿ âG¢ÂÁÚk œ¸pPl€œ¯0?&àŽéÆ?äʳÓTò²p¥Ã¿”áAJRMªOc÷}fÔ2UŸ&·Ã"º¿;Ø®ùAFEäo&.i ™Õ1að…ùn{ðµ|‡“Å6ÅkT^pOÍH:$'¶·‡k‘5Ј:03> ÛxW=+ݯq‘£ßðkû ™Lþ2I¢;¼š g}`¿føäªÔË“–×ww©×$ª–èù²Á7¡¯ VR?ˆò×èm´s[ù¼¥Ç]D¼ö÷ñº´¥3|©ÝεVGp~ºúwÝì­R4À¡AîvYŽWèÀóZw3}ËB£Õ(?@°_’`H@ËnúLi×íÞÑyÄuÚ•:Õ‘Ôf†cÍíÕ³FKB«Ü û¤5`Ø÷$Ã8§“Å­gä1”-MÕA×€ºyÏQ+göÒÔ [É^Ö¶ÿ!8öu•ŒèšFås‡S¿{ÙAÕ/<¬*6·›Ÿ{~ÄHÛÓñ­›2Údù†ÆÜÄ—â¡÷b-xo b/Ü”È"L\€Y Æò W"³Û>¯xËŽŸÎæÊp\lgžoi¬8ºþR;·Ý/J×(C·VW[{:~•C”^[‰Ÿ˜#Ç!¹€é{ÅÝS<à1¶6w7sÑ›Üýï85ê1Úou­¼ê´Œs’éC—ü”*‰ÂÝö–¥þqK_>¯ÃÆùÖ ‹>pš0x¾®Gl”¡ß£ºHÅ^&ý'‰Â ¥ûÜh0»ž»=ð3 €áÑz÷*'„bi'Û@sÇ;öýâ‚ *Ì:Xµ,DãHM_Ϟı‘±Í÷§X¾Y·@~»àcq"Ã&EµjjðŒoѨÌyJüôâ-íx:Ó5o-ƒ|ÝMŒÎ:,a¢õ†ß–?£´7èf¶ ãÖƒ°÷0A¥?pE"˜ˆqlfò=¡~DWVŽ/‘p>è$qÒ@ »†þbd{Šý™?OÀ2v2؇ôA;st}tûú3"s ™Ë©½Zò#ëú¾ŽIb½â O#$§UnjÚçzžUnIüMœüx24ò¬~@ÁúWÁʧĴ³uo ?£&A¸¾?ÙB#ŽøºŽþA¸wpäòwÏ‘n5Zý¦ªÝ&B01`NFÀ6^ª¦7jTÖ\£$«v¼L‚ZÕâÒ­rõ¦÷%°nHƒúöÌb@ëÐj@HwöYÔÑR´a×*}ÊÝL}fÀ(ÊNÐ…Y%1÷À£‡ÊçwxçÇÞ<ÒÏCÊȼ•ö°_/0ñqdK"Gœ¿RÁÌ;¤&œ"aBD¸R+_¤“tÑ^[ô«TÚVÚ½[¦x‰×:]”ßTâÊÒf™L¿¥HÓ+Æù(~0lö:öÀ)¾H¹Jío~(ãY(tGgu꓊ À³¥€ÌJMíüeCFku~§¼Œ3ê¶3‰„NÂi,t쫺Vag˜_H°©eh+£¬†àÆLLèaÄýZ¦‰v£+™É¨ÿÚ"l2£·ÿ-Áxpæs=;ðÖ¨ýCó„P§éðóÐÔ.1s²lé ñsé÷÷¿ÅiÔÐÖÜi•‹KÔ‹ô§áRllb4Ìùl¢¤_Ä#³‹êcºE:±Õ|Ó.ïÖëè—˜­é¿dÌ|3©â”pp:ýBŠ>CÞÝC¬qnóW\ítÁN [þL²]€Žñm`üT¼Ãÿî¦[ÃÆ$%ø–D÷òp*¦ò #S0ÿ÷*}ƒ·¼)ºTE¬±¦û™‚˜ÆLé‡*Õdªœ0Ž~ 唾pL«ü™±ó¾/áVS4¿-R0?¾auº„“‘ê¶Á§Fÿ¨&å«‹¥ÙJzÜ×ÎÌÎÖZ”JRÜKo©“¸I†ã+é5†£$"eš LpÆ+«–[W8³ÇXÈò vYîT›’eõ‰ÒpUòéÞ<n J¾®ý<' Ä’ÐBõénÁ=´}Rø¸k!PG'ÉfõTÝï­ùéRÆì·¡Ü¬âá-{ÍxÉ¡†Þ-Ý_*ð"±sQT#æZ”ÚgÝ&ë(:î´èÑÆÏ¯5¬ä¸eÒ?™îé^µW 9ÃÄ›{úK‚7ñ,© ®ø  ÷‘á5 òÕÕ”t¯j$;¶…´÷½þmÙ f›½¶M¡˜êvg‰¬¾îl<î•2Ìö0m{ûF—?áç—")0$J$9š‘ï MLJ£ÄŽþE§õmÖëb½_$·‚½÷[i%{Ö^AAxµê‘'úãÙ•×3z±È·Å[™ìZ®Rá¿Þj+UsâH²Ì/ceÑÐRŸ_$FИ¾íR¬w[a‹øÏ㪩¢ˆ+2*£c¤/.(D¿•-æÖ ‚1Èx/#¹‡¤}ú¤Œ~Öo=8”Òd¹sô¸mþQ±BmÞ¼ß)5 Vø×ßÉH¶!ÿK\5uIÿ:ýÚ°MÆr =›ŠðÛ÷`ãšfîÈ¥³é.Ãôöz^.5gu¨Èã3V5Ó© ÕÃbýìyWôíÆK²mAÝå±),xðŠé c„ uyRX!,±æú/v5¸Ï<{¯àšåù+^ fTuÊìÚöà)Â.+ņޛ0å8s ŸLô#~}°Ä>¹bf,çÊ© Â&Ýcé–‚Ú¼˜h:–¡ÌŒ½ÞX¬âädõ†‘ô£$AçœÚx÷«€wâ'Ô±¼É2»b)àùâÐ,¯oúSñ° ¤ÏuÅú2ƒ¿G¨À ¾gÙÈ6F¯›>÷¨<ßÉI 8£=W´—¶á&j ßR`EóSç õöñ8ññA°æò)Ã|ûÝqÊÝz¬–¤×~îÏç\ ·½!--ÀdÐ)­ÁÄ—e½YçE4éitzqòó”€ yáßcAy£¥T®ý‚gdÀpDÕF^ÂÚúa‚ðˆRLâüÂrÄ#G<vwÌž^oaJ9ôijǬ˜aÁ…w{5qá‚ã.ï§Ãw ­äny”‹J Ùºm¶ofƒ+æ×>»ŠCŸÝk>ì}’5¦Tƒîíìv ¶Ñaæ»^­µäw!J ½SJÚn( cvÿö˜»p­ß kùãÁu' Ì6˜d“¼ߜۙ‘Ù,ˆ&å®î·ÚSÄïKÍ/4·Ý&b1 |ë—Ü”o˜È~£ùþHÐV†«å»&Ñ{ëØ?(Ø—$0´ÁØ£ Œ`^ZIùžÜ0¿lW†Ü¬áŠº¡‡ðãÈ5Ÿ­‚_ÛsånÅPOei¦[ýläkÃIÐ|[~ueÝLB0–4ašœ‰¸±îß¶–+ܧ3Û(*ï¥Äѣ츼\®¹Y t×]SÕˆF‰©¼ÌàÞ Ðú±Sƒ-=¸—]¿cäjBâq¤²ŒÇº¶Òõ‘¯¦ez‰ëF᥸çq(¥Ž[±Ü·î‰ìˆÌ&ŒðÉšeQ:®½'&úíh¹ï!¤6Ývï÷/VÇ—ÀësÝ[<˜lq8£ìœê^I«èïCh‚Oñ “Ãl۬喹¡2Y¡$°ºÌXf–ÌÏ ’ØiA‘è_œn.5{ ¯ÒWÞD‡]Ì*6¥W ûŸ‹¥°ât*õd{·Û"MSÜ6ºê>7)ñèüCÔãeßòrAV‡ÁrÉ6ñÏÙ’¯,H>Ùj#G¸u`õ$l¢„I1Yð_ÖΆu®w±U¬Ë[Ø2]LïMe)‘æËÁY”E¨`ZT¸$K§LuïÃzØÃ³Õ• h>ÕvÁåµôÖ&„WXêÌSxâÙôЫÌ»·Š·w=FfâÀ9ݳáÍ{±.5î˜R1ÜKáÖg±my[ò$?4;€ Š&cÅ#¦sF_H6të&Q…8æš2Ò™²1Å| @ýò%:¤Ä#RÒš.·-rM`Àc+e%@O;üwß@ ðW´ÊwšÁð\³‹ç¯&¿o0¯Û±éF/‘C•;Ÿp"ΊŸÖ-CÓq½¡;j¡v[ ßrZx ûTšÖñç&„Ê5A”ceø¼rã©®!MíÁ´ƛ㚠žä´$Û7\‡LÃK*w Ã2ÙLûÉBÚ=Ýñ2jÙs姺#ð9ûÆgÖî”+ËI¥|®ÜbJ"ç. FØ3À~»ÓÇšL(Çjªöý˜E>zE>¨|ìb‹ëG¼, ƒÞØMüjã@Æ™Î~êÕ„'¨:mÃuŸvx“9>óÀ>i©ÑåÂ@#‘á˜{õœ E>^|àA­R6¸P¸¶“ß;Í'æOIƒ=3h;`e»ƒ^!õÿq¬âÆ endstream endobj 948 0 obj << /Length1 2154 /Length2 17482 /Length3 0 /Length 18763 /Filter /FlateDecode >> stream xÚŒ÷PœÛÒ€ ãNp 2¸»Kpwwwwwwwwww÷‚»'\ö>’}¾ÿ¯º·¦ŠyŸî^-ku¯w #RP¦4²1ŠÙX;Ò1Ñ3r„e•e˜ŒŒ,ôŒŒÌpdd*fŽ–ÀÿÈáÈÔ€öf6ÖÜÿ°¶ê;~ÈDô? em¬RN–&;77##€™‘‘ë?†6öÜ}g3#€,=@ÊÆèG&lcëfofbêøç?JC*íßË‚V@{3C}k€¬¾£)Ðê#¢¡¾%@ÙÆÐ èèö?.(yMm¹\\\èõ­èmìMø¨h.fަ% ÐÞhø«d€œ¾ðߥÑÑTLÍþ¥P¶1vtÑ·>–f†@k‡%NÖF@{ÀGt€²¤ @Þhý/c™Ðþ½9&z¦ÿºû÷ê¿™Yÿ½XßÐÐÆÊVßÚÍÌÚ`lf È‹ÉÐ;º:Òô­þ2Ô·t°ùX¯ï¬of©oðaðwêú1AE€þG…ÿ®ÏÁÐÞÌÖÑÞÁÌò¯þró±Í¢ÖFÂ6VV@kG¸¿ò1³~ì»ÿ×ÂÚÆÅÚã?dlfmdüWFN¶ ªÖfvN@I‘Û|ˆàþÈL€Ž6FFF.NÐt54eø+€Š›-ðo%Ó_â¼ý'eç÷å¿„ ð¿¾äl>: üÓèZŒlŒ†˜þ?·ûßKþÿuù_^þ_ýÿf$ædiù·žò_ÿ?z}+3K·[|t®“ãÇÈÚ|Ì‚õÿ5ý ü×èÊÌœ¬þ¯VÒQÿc­M>:šŽ‹ž•ý_b313W ‘‚™£¡é¿šæ_rÕ¿ÆÍǪ̀`ã`ö× cbdü?º3´ø¸D>:óoðc„þ7¬¨µ¡Ñ_³ÆÌÆз·×wƒû8êbx0} ¥Ðõï^0Ð[Û8~,|”è0¶±‡ûë\ÙÙ ‚‰þEì¡?Ä`þCœ‘?Ä`ý/q0Äþ3€Aâ±$ÿÐG<é?ôOæ}Ä“ýCñäþÐG<ùÿçG<…?ôOé}ÄSþC¬•?ô]õ}Äûú_âú ýÿë‡O}‡^0s°øcò‘’ÁúHÉðÏ‚@7ŸÕ'ƒÑ? Àü~D0þƒJãà_J³?øQ“±å?Ö~°É?ð#¶éŸL>Š4u³5ý¸ÀÿX|ÈþáŽñ£V‹àG]ÿôþQ˜Õ?2û(ã®þÊÔæO°Û×Ü?Ô™ÛþQ°íÇ&Úücþ*Æîø‘¼ý?ð#S‡à‡ÇàGâNÿÀÄÿɸüc?wý~$îöüHÔýO¢žÜöÿ*ì&ÌÐÉÞþãmó÷Mø1~ÿá¿_m@ +ÐnmÙÆ'м>°ó±Vð³ Ýþ43+âðMøÌ×=QçCEaÞ§[–‚ˆUÁÞŃˆ§ÔSæÒ÷ uLF ïžiܘkÆ?i=gQ¿<Ÿ:È81H÷ôhê±X™`^¶*ºÜ ,PaÑÚ]ï/e‹ó’·V?T™^BS4ŸÑ#€MGE@csr² €v fvU Õ .,vK’:ÜLŸ'à‹?¥ M0³í¯—Ó‚šýHû|r‚h+}—y—zÔÏŽ+­7 X ÛëÅ~‰¥ô¿ë ô£4p˜Tæ'áÉ’Ü›½‘¸¹ÈRoD~Ÿ‹ y’¡E†oä¢Ð±^îP——FïeÙ“Š“µˆ¸|À‘`m³RÒ[‚€‘¿WÕhØâ6?½uÔn÷dƒ¿läÇÒT ¨a¢øêß<¿Q©0=?-([Uj–ΰ̀ ŽT´š©Á[5V¦uÚf=b[}ïèª#å¼Â×ÕÆï³ “GñA4kÆ-ÄGL+‘kN FDa#5Œ¾3¦’"ê›°Wù\ZqknÐîA ûžc‚ œÓ*kl'„"uEDöîð×m™³_Nt²±³d4«7¨mÍßÙ0WzïG:)ý9 üJ£ÅÝè¢áäÝ£Ôbâíôx±I5QòsâVmÑä(˜g¼€$ÔŸ™'ÿPÞÍ){(Þ®¤€í×nÉr¡XaàÃ*0ßn‹ÈæÇa[däÇͪlaÙä0ŸíåÃÍûf/8‰K%I4ñS.PeQŸžŽ7’ÿb;˜¨%»ë•lóí³¸Q$–>Œ¨±¸—Ê/¾ý†#"è#–Ð¥ñÍm„C©&Gç ªÃ!jè[~ü(î÷­óªw‚7£·!̱ÈW-{þŒÌ_ÀÝ5×Û8¤¼OSšß¶¨úikÈ2bà3RޢߔLO»Ëäš”aA®‰Ñ.‘!±gµÂGêze£ É1‡°?£™!¯Þ7ƒùÚ·>s½Ä”ºPRšÉ)F8ÆÂ‰X‚¿w¢BIuãîùeï+½[ycg¹‹¡»À 4¼ë¬¥ë&®t–IáF„Èa ÒýûÂüʪƒÝ¥áÆn-'5,§ªÃþ¦œË™ë…£Q1 Äç` ûµœ.át6–ó6;ùÒ3ü~…+rPT;ÆEîÍ|Ø¡…á›pÄÒ{üÜ^‘u ¸°Q¼«qCõ„±Hqq å‚ ÙøÓåxhgXJÿè–fÚœMšý’JÖªÑRÒHšXÖ…xáih©ØÆ…us6¶¶HübTŸ¾¢Äqçî$ Â6ÛoJQâ“Ð4Âþ–žŸ‹‘MF¬EÀõÀâ5›>É‹°ôƒ8øÜ‚r0‚yÖCþøíêù•™B_czî¯;þÒÝO¿„ Ó.3xÊàËç¶®qÚ¢Ù9wçw=¿.Z­œ=¢Y6z!uí¾DZÈ©h<`…Òà_[^®ˆ™_»/ù@\åÏ(fmnÍqàIvU¤(ÀäG@;.Á÷*Ë,i¿‹~[È(ZÀmc¬ óÓF¢;yÖ;êyžÀ‚±+´ÐHÆ12‰NZNÚÝlù ËFä{ö5}¬w7Á£xû6x=Cñíû§Âp›Æ˜J>}%hâË/4G‹Ç°¹ÝEâS¤Ì¿áýÜÕV;QZ/zø¥Û…X [z1Þ)~ÃSÜ<Ä~W¾b²úåt+À ö©ÐG –å rFbŽa0|í0'³ÁªÌ½}™\çê é:-›g"Aƒ"kAªÉ•Z´;Y¸O’97¶꺠‰;Å/èÀ[h@»6¬Fë{­pàR²ø+…–b£I×!ö6QW®Nˆû˜Sb/îŠÍA:´«xJi7v6|]`CMhrähÒüéÚYÌõ¹ÌKqÅ]Ú¥!.åÅA?RçöþJVÁkÖ‚5ýeNëe‡E#ÿ¼žhQ üË×Ooއ6°ö8ánÛÔ±:ÄO¦X|WMäWàšç[‚szJóÜIû¬.k™¦×Õtz™+tsî_Ïu«¿i£+XLÌ´lò¾ƒ{×a‚UDê× 'šOEù…»Tâ ´ÓÙ\2}Z¯4¨£0|xJ\¹pvU¿º§]¸òà…Z)Ÿ›7ŠöÚâeö (LøWÒ(•¡TœÊ'òSÇ«û€k” þˆŒø•û ªc&H½$8ãùÛ°(Óñ³XW׃Ó9ºMâCé(äÎÖÊ/B¼)|ÐÏ$Õ’OÛÔ8v¼'ÀB9{ìu —ßh´t/Ñ? 0Z‘ÍN NèÑáÚÌ…4±¥54G¥›~YÚ‘b€¥‚¢^åm—o´‰UB\J3øYòtì°Bõ{##™ šÇNòÊRe„þ“H¬Uì¦vâ”ÇHŽMT(‹bfáðUd†%LÇþ(Ut* zXI7„g?£ë)áê$¼ÍV5õTÛwÊ! jdµtŽL=g¦ôÂJkÖ>uý(£BáÚRñgì}†xmD\¼¨`Wä] ¿ÝådÛ=”iëûCW…U€«‡ qßwŸµårav‹*ÔÓˆÖǪ_ Q@ôH¹."²º±-À;nùND-þóNrfÓ}Ò×Bkü(‚`Örx'·€¡·›‚}}®A9­À¯öf ¬ 0¸ôV-¦O­:ÐLT³C"&’Ÿà•´O Ž Ó”±Í‡uœéE–+¹I5_ÅÏ;:Ä•ÊÑ7Ê9¹ßÓ×{§—¯Ó [š/û›÷† Ð€³ÙÁÈ+mjÇO¼”íž\‰sßSCɶáì{‘€RÇêݲ8ã"Ö#\†óËèÕû8m°ƒÔzgÛ3=­)¤£³\5k¦ Kmdmx$Îu=Ã"˜çg÷Ùgòì4æõ«D+"eãoÉS×Þõ‚s?ð¢5†}ö òÖ”“Å„äuÙ7j¥½›W£ éÌ;ž ַÀ¨ƒ‘Äo›™á̶ç4¬\Ìy{¼ÝÏy£Fˆ »?Ðý*ŒtLS“ú18ùÙ)6ÜóÀSŸn>þÙÀzÖ1.Y à®™?¯ :Nïµûn0nøˆÓ\²ˆÅü¹ Ç­\÷èspÚkƒÂšÏ¸ómáŽNNç 7?°?zGá‹Ëíq|Å„k¸bça°c©p Šë^‹S|ù û!ÛM), kˆnÉ}æÙµ~áiwE¯ÐÛ xp•t¾q©á)å„ Ž`熱çäÑ©}f ¸iv“Á½¢²0q09®ƒËB<š"Ã7yaþ}šOu}+ÊEËA+#[°o©+·†w•¯¹/ï¹¢­Ut÷-wÙÞÿáþ€K"ˆò%&·˜8Ñ"µàšÏή9´¿÷I¡ÕhvЈѠŽo›5ñ×öƒJ·•ÏÅÅ!¬šúFsÐd W [˜õ+×LÉá"-t~^7ã³é!y•iVÈÀ.ÄnÈãîäMÜ åV¹×žO¦ ìú¼YîØ®`=üµŸÏ` UÅüÓLuÄEóØpŠèD ³UvÒ¾“×÷úWgÀN½¯jÙÜXâ ‹r,¿‡”È&ùÑ3`ÓÃ鋾Ԕ ¶©Õ%™•É;.·7ïÑåÌ£µ5úƒ·ž‡mÞû†˜çšú~’µâñ¯x}•]~ÆXLÍ|R§¡s,75îF»í¤Á‹÷U_Äa€-#ÉÛ 0u~;ð,)‰IMÀ¥¯ÏÝ<Ž;ò°Ô0¯qÂŽÕ3sùÙðT§™î0õ¿JÈZSªòNÕ%í¹Õy1H2GcÝ  Ù^NTI=kH¹Ÿ&þ'î#àß@ç9d!p@g\sJåÓ5‰?aSLªñô\[ÄŽsj>ôgŽï¼¸I_*Ó÷Q_÷ƒ¢õ½è»ù{xm¥c’ê°ŸÌÌÊœLì'ÌÅ[],\äÕ„Ù¨Бªý|®[Xó@iE Ål`ÛíSG3$},9ÝW8w„¤õ8ËóÐ[C¤’%2¿,LašÍ—d\|>Z¥D£Ö$ñX²—÷€¬DŸ¯Öýi+­,¾¸0Š@ç1Ä$ç^c¨ÐbLç 6©þ.4U:%”/;û)‹ò`¤{Z?½;rËïpyMl¯ۯ¼‹ ¹?§M¨WNOM˜w=\”D—<•M†(Aùî>i¬Ÿ–ït;°˜51åz7Œ[ÞExåmOFñlw@eܹ+*3r6w—Œú<ú%`z Aœ°Íq@ØÂg®ÝHESL7SÕ+‹}Â`CÞ^`¤Ø2k&…$®#íáÝóŒÆÃ­œ^^ß ¥¦Çõr¶ gÅZgv­ iU>Tþýuûý4õb\@æ{ÀÕx=M—¼“kQA°9ý!¦×mµ‡ÅzöÛ3ç‘kç>dh^œ´ kÿ*¬Ø·ŒñLÇÆ"æ£ùbßÚmÛú‚é©¢eû Q¶û½ïh$D·dÃ,ßä×üÑIb¡I§%Üx(¹ª»fÀ1ˆ¦P`•ÿônb@°fž }ÊàÿZS´cnPoGh!4bÌì²׿Øø˜þvå?‘ˆu25ÁóÅG{îòóÀ¦•€¤ÆëT&“R®g_6ÑiX›` Q`–ÌÅ]æ³öÍ2D ucìÏósI¬c¨/ów‘›_n¢jÖ€ÒÇÏFÊ‚š0ÐòÔÂëÖÅñõ¸Ü\Kå7î°ïö§+L³ã©%¬ž×qM’Ð?fR²,Í }&ði4çxò!Ë-éÂl¼’­ÞSîYümê | Sì+0Ø-¶]ßk6ºvÜÜ d¯VÜ0~"ÌL dÞY³}Ê’Ô }CTK)ÅtE×Jª\§š7Š7¥6¡Ý°ê·E'ÌÂØÕ¦q5Óî }¢L$>€*jÖæË!°ê´ ©fÎCð–$ª^£sè¦B®›ÂNïŸì&¢UÑ_S^;;®Jxk+½oñâaO­‡5k<¬ŒÛšÔƒ‹Í¤T]þ;ÔBSÎÅZO(ÝàÎð£`XD¬ó¬» Ÿ*{³ôy° 1ëA×.Ú±¡k%ß ÿ²Ã©x¥Dÿ\ÿ¤Ò7ÁjÁCåékÔž%ÒñI£¨cžQòŒš×(#j4–{³‰¼·ºGù<>Z­Á¯©y^m"ßá€ùG“‡ß² ¹Þ ¾ùÏ,o£($q1Æ=ÂÕ£²Iq_º^Öå ÖìÉÆwT®ß~ŸÞ!•²R„0‰LêCk.\ÃÙ­Êgó¨|ãÈ®$Ôå÷®º\­›eO¿n®ímÔM2+½c‰yB ¾-'fx׉ڡ;$ lIa%Hù òpW8¦´ag;ÌÆyÎñõw2¤µó:æMµ4Tlpå›×'JrÌ<"¢ì{¬ºðtËZ M¾‡pïÓVïÊVyŒ¯Ïb£ž·P‘ݼõËáüà(ŠjèTÅ|O½ F¬mN³íuCx/@`šÕc%c¯3] üÊ‚Od;´‹ï“½›U?•qyŒ.µA­·=‡µžŒ*?·¯Z·ª¦¦í¾ŸÆw…-k•V¥‡î~Ë݃­r«Žo’«³g­ÄÂ!Ð>3õ´ïF„‚Ÿ¿blyˆ_ ’ ‰lï ‹K‰‹TôÒ3Íq±³8Ç¡ŽL w«ŒÇ=bä åèÊʱ®ˆ%~‰|¦+D¨=›“IBÇ“ÖÒ«dºO²67í@ÒHqtož!ÊfpÊ웥=î ñŠí”?¼½ÿkhÐ*óš©´Ö¬íyJlê{õüaɾڢR‘viÁѬà,.c±Uá4_E¦òãàY¶O5a÷—ûÝÔ–I.æY>îçì.á¾}tÕˆ/h¸•,ŽÙ-ˆ8†sÖm=aåSP ºã@Ã/Ÿ6Î'µš-(–hAñ.&(1ñ`¥Ò-7s#«爮Îû®É¯¦¯y3C˜PwxqÈô³QfÃÔarœuj·§ ÝI¹CßÈ)YzèÐàÔg×1ÛíÐøVù ¶;i°`/È&t"ˆlè b›;ÆÐÑæ¼†ãÎ7ËpÑj$¥_"Þ"n&àM¸î¦Ø±¬üТ<øio]ïû%sžåC_¿Šù¬XÝ2¢¨‘|Új· þkRâg‹>ÞsD–õ>)(ª§´ܳ—|[F,~A¡íC݇r;kq"C¶ßž6ãX/ÃNIç> ¶*&«NT"R[ò~iH+ºíe[“мœŸW-cç Ú±X³â"1 š#$w@ÅÕTéÈIÖ”ÓdUí"nºçúÇÍUø&ªârlxb·WÉÏãÇòY!ÛçÝâ’^ö׫’es^ºÂ¯•]P‚K†`7U~ÂJO€öÖÿ i+–å¹  ¿¤lpyAn`3<ùâß~D·Ë¶5›þš¸9з, b§ËSt|”Ò®)ÍÓe9Ñïþ.– ^q´­ÆÞÏmd2e¯ìœéľ£Íµ…ep®Í¬zçÕ_¼Ùè uÄ€¢MI|º¸ñN'©S•×åúEÑÅò~5rÛö½D6xÜã’ ô‚ Âb;8Š™Œ Odo–”Éëé~¢¢¾%qˉbüíëÕ—Ÿ3N²æfóXIÚ`ÙP«FÀG,MµjSùFÄÐÒõ—§€ &Þ7Åz°½&‰NyKNòÁÐ^L¹ZaI-RÌÖf6r¸9¡ÐEΧot1¯gb±ê‚)?f¢s`óõ:Ô¸wü'G’Ûlaäs20øëgÛ‰âW!Óˆ=æ³`Ügèxf9Ò ò—Ëk»g—³äÛQåkçù±Íü™•(ö» F÷2>CàÐÚùqýH|+†€rPI²p— ,teÚ7´Û§Ã?Õcêv›oF˜c•¨L=©—¥Ê¶f‘÷x+‚_YnµUˆQR-Á©ìeÄððx(0Öï(§kÞŒb}jz<ã[Ÿ¾·š¹õµšú,gfS0žªÝYØ}ßùÝ£VDlÛ×ÐŒöÛ^Gq¬+spÙ|ûóžžO@•±,B© –âký±“ào¨`‘Àõ»TíŠ4µ~©æ†+á"ˆ¬‰>Òp²%_ôWT&mD ØþL¾ö¾x‹{­¶Kõ’]6ô°sÌD¹ü¥ÅÈÃÊ#ßyN¢z†å3ï@ôi4#ú‘ÏŒ\ R ȼ±9OËÙoîÉÖh¥­Ý5”p,ñ8oórô0elWÐI­¹˜‘ÀÛÃ÷£›¤üõ}­Ãv¶¹Vé%½ê¨wˆE}3 \u‘oôØ1ˆÊ Aü¼ø8S[úÂsg¶_„û dWŽí†âò¬W­¡W÷¦Ãö¾ÐÆ£kGÅ–U8ÎB_DœÞ]_©\·{„ÏkCÄ×áåy Ùãìì¾ËÌ—Üó]~%ŸœF|³ŸÍ ³³£³gŸÂÇÉÔ'SÅŒ˜ù©qÄjIÞÃ/¬cn'ÞùÙôM‰ ëST^xœ¬‘úâÐ,¯É꬀ڄ)¸†9 =&cJŠÃxj2% ½Á.’…ô¤-4C£:¢?>Ï­¼`Ʊ:"õ]ÃþÎ×(ÈÛ+2ÄBWªðfÒW«â¤‘ðñ ³øFMCÞCú&  (G2 É\I—†«Í·YÛ¾›Y8&ü^-½‰ž¹ÇÃw±´ ¾8A“'÷ÒŽàiËo‚4¡Ö ¬|$é>z÷ÀŸô=`üº‹[C¯W%ßÅÈÑ6wÃZØÙÜ•L¬kÝk³1i,á>gæ±M)ÉÄ Üm"­#Xty£Ï\ˆ“!z¯®¡o†øöj²îC{s9í °ëv:ï ˆ†¾’6¢'µEíi^_Œ4MN.ܼD“x*ã›3««@¾Ê þŒû‰§ÔÄÂ×ì˜ökU¬þætŠþ 5…×'(† ñ¸T4‹$Óí…ï›&4MR›ZZ§½D“Ž •2gÃExƒ €À¬ìÒÊØ >¸>gqÝ¢…RÕ®t´¯•´Ÿ‰Ã6w­ (+¿%Ý뉸¶?·g¼îEZ‘Ÿh«´ Œ"2oÁ}z{,m"QåcÎA[Mq$,ñE?C$aNUO·S`wîHëú(<§½Mo” ™3/—­â:»â!«Ø˜HçæBSʦèY8¹%2@~«·$l Õçoö:³ç2ÕÂ#„ýà­(騮@ã¨íé•ÿWã*ØŸ¶oæŠùð á Q꣊>GŒJÆè×–dZ«±x>ŒCïHÕàùò>°w}”ú7¡íFä[Ê(’ÔZüŸ…I¬€Ïgãñ8ÔQö|Øúµ…BdäÞÎÜ;Íî¹ä\²›¿ç謡½Í†$ƒ~6¨å8—hÎFrÛ¡Ñ1¶íg´ôÙAõÃÎ…• ôƒ?ˆ¨Þ‰¦ä΃Òa?xî»”'‹ÓÅ‹ºç—{´ÃdŽèOŸfmÖcf«,—¿ÛÉR‡,»óÛ(•ÑÙSÞte8LI;Ê;ž¸æ~¶@J©w-¨¯"šâ·øMeþÌÆÙ– s`çÓITAP@Ο·|ÈFVF6u œ“&»Óe‚äø8_/m?¹|ÿ^ÈÔjüó—@}Ø ÷wÕ¬Ç×a25òûº>líg“«¥é凞`H˜LOïÈÝÚ\Oµ:,ÐG7PŠÙ겓ÎRøa'ÊÀbf°þx£ ®0[1Vy_÷ Á1Ý_&ßx„sŸ[–$S÷4È–Ùê—ITó;Ë ib¦fù+üçå!«ý:aµôˆÔG|õÌ2yXtӌ⠃Á6йn¥’øl®·-¤ˆeû‡Í»óå¶±¢97V檆Èlè"Þ@=^¿]4…=D“ÚY uHûO` .¿Ý¸²m˜Ï-ÞE"èÓ ¡à'c’ùµ­¢—ñ*ÝñÅy~9!¼01Ý\«†Éך³ù3•\\š¶:×úzËU<3n¿å‚¡>G3B‚©]+T© ’Jjþ ˆîš1“ö…éÅvˆ«žIíøÖù(êÁŠœúbP¿ bm©šòQkoù¤]K—­_]¡[¹ ¬íÓ”Fï! {~ øú]¢ÜL( b–Ö¨j|þОî®\—À`˜ iÂùÆr@Ö¶A§ùåX-S3GôäwhyÌÙÊU“‡ž¹… ÿ tÎ ’‰˜©lºÒHKµ<ï\ˆOó§ö©Âiì¥6]àg~¯t«Ö‘îlðddKgmVÄ`´%cS¾ãuTˆ')/À)Ã\/¬E‹'­oíšÙDÙ.:Paà1yñ ÀAÛP•ZMyé\|R‘Cj«ú‹]ÆÄSsW’Ç&¾§ÃïÐr?åßtÎÄýßeYÔœ¯ÈR$šrVÔ¿Ÿèˆ8'DýZôàâ»Ñ›A ùL:fç?•г} ¦1¬ßƒñdÒ ý==ñpRªÃ:£Å…ï@Lß'|2y»å3³Ï|"z²…TiQÂä!÷O1<°)»µ÷ºù.‘ qÓÙ±yt£Pÿ~65»Êx3…Cv3] „y±½&a^yf×Ú£þò¢+h3"é_R›œ©T:+F¤íÕ΄—œÄÚ‡ï›\aè·ˆG¦7Pày¯B‚%‰ª)ÝO‡x±÷ò&ÆÒ¡‘Ò[ÍÞ_ª-–`ä?{„ër´NWÖ#eÈݱËäwr}Û3µ MióD­<ü^Õ÷MÄÑŠ;»ãÍŠf):Óå ‡¬µ!ÿ8½QM~TU½¦ÜÌ0Σ‘ù€ú9Z±~ÃM¹ªézɲÔäI¿¾1à¤2<’"ÒD!\Ÿ"ÈŒXx?҆݊î¥Ï+I{“ꮄŒYD; {S;ÅÃ!ý[\ìzˆüå=.³ý¼¦À¦†â c¥®€Š‡~¯Œñl7'tEöH½n¼l/uuÝ^ªÉ¡ l„Å:ù#ý,?  O…H`ç™Ý°W)Z_“<ÃÂ=’ Øð06ÛV·Ê똖n®« šñbt®iÙ…Æ.žÖUÞ'Eæ I·kæäI"ÛŸ¶Šª Ŷºžlž=d'A©„Õ[Ê‘cÑŠ\ûž_€§;ø¿ã”3}I¢U´åôz"Ç"-²ìß!µBP„øí5*iÅjOJˆ  ô¡ú’×çÌ‘Ñß‹)ÑöYWÈZWód‚ÿi^×»!P«ƒ¶¥5€` -«4,´ ´f˜mÐY*X{©.`)fJï žê‘U~IHî2ïŠ>Õ(vFt-]î!”¸nëÂÇ':Rfl‚¦›_ ¹€˜·K¾ˆ #® l@uuUÏä¶YÕž7ìr߸áëi¹žLäõ«é¸qsI€ä€Çw<´nÉ&©ƒŸŠf›¡~§i@ÈÀ”öšÒƒ™ÔN‰È&Ó7LÍ/ÿÌg0mÿ‡<’,ñç_l2^Ìuèi÷lÌR•U7td~â¶J…Vg–ŠSLJ‹Z?3ô;çÔ&óðö~ϧæ¢òCÌí "k«\\H4éLdñ%»î4ˆZse€` bˆ¼ƒ_ +´A®¼ÎÈ0¢éb*î¾ óàAù^иëÞ3}BŸS.\ú)tòÍÇn»ÊÁGL"»hÀdxãø)e+¶ø[êúݾŒxˆ0ä±’xw1÷'JQÒ zB¯§ÚãÔ®˜÷IÔ4,š÷ÐCÚÆ_Âô¶ì‹ê‰U#ô§°ÙÆi‡“,ÙÖŸ‡gfÏY.Î(~®d˜àfs˜â|ºßy§ºSNŸV¡x±\v%•Ò³ÜeûJÙÆ”$?q™ÔîÁ¼‹6>›(§½&‹µ]v*Íxo?[%£‰–îcêÜ–«Ú˜z&çePèe âS*ú„Ëðm×i–LÄ y=_w,ú¥Îì^Ad:”N“ ÑPÖ±/ž™2…"•/Q-C\ÝÀ}ߤf¤ä¨'a•] ¬ó„Ú”-t:KïgÓNb²ã€¸©4çX`ûà-c™Ø)“ƒב;„¨Õo Z8Ç3ß“8nÃ&ð Áû%WZäÇô§Ëîg óNeå®9ÏÏx’u”öb {ñHÛ2Ñ; ãgð"EGÜ pøNeƒPó-ýB˜º¨=ÕdäDD‚5z ­ÙO ¬>d>ŽÑŸâ5EbëôViÀÒuуÊJbL<¦"çP–ã;gkA=[Û¶ÜQ”LÈÇÊŒKy?ïáÚ/C÷VŸC4X”«»MBc@äD’Û¸î‰{ kçéMQ(ÀÚÑ"iùa0mfá'ƒ^ lC· )t)‡œã<œùâÙÛj$ ÓQGÛ—w,ûÒ«Ç®…èŵ¼Ì™<ªsl­‹wNW§h¢£ïÈño@Mþ&¥ýy«ñ´*½~ª6qã”ÞÀ€ŸêÝAUœ8yCäÕRÍ £ßȤµÿ„bØ|×— —ðÞA<Ò°ÿ4»ýPªgÐR·ú;—߇%ær8ªX¼º\ йaÄr$Äi†,÷å›u pœzqÉiiÜ}ƒ½FþdåÜÖ:#¿It 6H°""yß•{æUžã‡‚:öÂqê±Ço8&Nb†u¡]ÈêfD‡°õp_U~H†`emÌÝ}Ð@ÂÌJ]gÌ'~7ðK klkž‰àhÃÑ÷5„âVÖÛé–!1 -[ךïðþˆœ)ߨ±ÜP÷@&Ë7–M«Ol»¹(ÇqÇïÍJ¢i™˜¤ÇçŒí×, Qáé—N޾EÃÒüržeÂÂ纇¼H†§÷ðëŰ­y .Ò¼/å\¦NA?±Òû“ƒíx¦‹âË(ûµ»(£šÉœÔðx‰œ–ÄÏR"[°Ä?㔞¼ï2rBæàè©’§‚( @®éEgÆ÷¥‰½ªÈ²ljЍ  åÐz¤ í%„âJ"ÆõÁìVžIµ54 ™Òók®‚“£s,ŸgO¸“_.œ³V‹ôšp—ê)ÏqÍát¶4µŒÍ–„ÁýB+ÑÁÁ?¿Ñ4tÊU<åÙb1£Xeâ ÛŒuŠÞý-D4)7«_òê«{¶9!Ðö?•¸Ö\5Dæw5A¿ómó•/–#“Ìú"K-ù'ö0={/ÒN´~YO…«ez„W':öÙq›`“eîŒs½Oº{‰¤Ï¤‰ëÏ–fɞ̞ ©e³â8R'æõÞâ:Ù<½øDÀµlî8¶ÖÄÕ¦6¤Y쪴NËNo†`íîãTêWXSÎWÿrÂÖÀ=°)í@^¸Œùx¬Ø=ޏò1˜j«]zñ§°ÌV?ø¾e‘h…@Vð&¥ó_r˜ ½ZÏEoæ8Ù,výµúT6á†ÀØLç_!¢ñúÒ`í(‰qnè+ómòûç/ú”[¡"‘®ÍŠý<ó®­±Î@#âÚ–ñRæTGÃH:Ìwµh¸dœ×üýÃXgDAA¤ÂïþœD¬½Î*¹D%™8…;áQJ²,úbªÇ}qÅÙ1‹ Â>å¢ßž‹› ~‹QãkÊ«ÀýªÌ˜´Ìgðìt/³øížÕÄz}†ÕÈ‘’ÐÍò§¦Ã Þ÷ô# ´/+<9¥mÆjÌÀ#¸"Oàøâ˜<›cƈŠ ¹±£´û{n<\ƒîÍ~ÛGÀ'ÅŠåÐ0è¦4¨`¬”%Îþ²ÜŸÐßdÍÄ­ùFh*o©û—òõ½ºïîd¡ÛÅt³q5š±VpÇ¿jŒ¢  Qó(,¹®,£ño(&ï›1xKwœ4m(îò‡xeRvÎÁ÷è·ú QíHXï6b %¼Ô¹î?³÷V ~oHèUÝšZê“Iòo*J“²'#…(ÑE Pè¨Õ yöb¡k„õ¹Üû¯£ׇÌ^ûtà˜7Ão¸I§=,D°1çùN'ŠxÉ-ʧÕ;ºÏi'ws|&{bHuS:Ôß š»¬E¯]«Î],AÅR$‡:r`UË] y\‘¯MÕWDÆÉdR‰Õýh+ÝÆÚHv6P«âï`¾iÊ)«8ä³íú4£.ÚrgX;x ¢f/rÖWßû¨WòU·Ó41}*¡Ëš]ÄÓiŽÀQxÂÊ´5Yé@ìiùÎØHbc¤QûÄ®¬ªó7JþCK¹(…C¶°|µ­C&òÜ .¢ræ€Ù çSx?eå«+…4Ç'Fr–Ix8_Gb Ã~ô¶OŒ‘|*“£&ÇýSÖu¿UÑwÅs÷8…… ! ÁJv7Ç1ôLÝ«Šb-úQ.ìDToÜ)Î@ïÆ÷äˆ}Zý åõlb9¤^fM?Óéîä/4Y/‰Ä¿™í“Ü’AM4;ð/­³m¸lÍy.k†P² ëõ7Îð7™]Sœ¾Éõ÷K±-6 ¥HÚÿV"MÉë!ìhN^мÈôCøÆÂÚÿ««B€™õ(lÁÌÊ÷xiñH£®ë’yòš_ O ‹A5|!>…„¡‡‡E¶’óø œëÑHΕCñ•M(‹v¡iûõf%á$«¿…J!L«…nm•cœÐ ÿòN«áµÄ´Î1ÆpäT@2ç*ë«f¨Î”­Ñf#ù ¼D vXD.ÚafÊoT ´üVu}¹wXj~}àVxS›ˆÇAÃp`_©Rµh&ËT}þGuºiMp„™8oGk `„6Û"Nað¤¦!oJâÛÑ7ø¤Õl2£f§–Û¢ÎÁpíê±="jgÍ ^¸¬YGß//FÚaJfÄË&e¥ƒ·6>ÊVéa½[1#3Í€A_¬šÚs¾¯Ü)ï¨e8È:–Tˆ{¼Írj1Dèò3GG5øjúŽ`L&~rØøÂ{üj˜¬zH^¡×ZàøÇbjžfð5­Û¨ëÁX“Inú2Í­RW8IVËà‹ýD¨hÕ=%âx^º—XbB—Ž˜œ!ÜbóÓébÕíDgq8~Óѵwø§üù€ÍmKŠ-Ê7Ä[\‰|lcÐë%…œ'¸iÖí_Ú•EÐEtF|âë0FîæÄù”9²®ÀA)[íûÙt¹„F—uñ õVeºjÁÞÙgQïiÅ4½=ÏméÞ±°Ð&¨¹%(f"8`‹Ù £DsrÙ2cVå G±è´,îy&÷[וæÆ-?4äN1=#øCÄ4Σܧ [AÉl[……²¤Oç»ejh˜Hˆ8µ­e§µ~ìþÏÔÉÓ) ’( ý?(~%«=µjÙ½cœÏpZë§>qÝIü*2b_HçÛãHݪÿ…—›­>6{bìmH8²w ¬ð—áÿÎ&|³'1‹hfp©Ì½ŸPl) R„H4Ž&{×?Éý™Ö̪Ĭü'g!¥’«îAcgáè÷ž©•«ÕpýC­&Jò!*I\j~¥ Ÿ÷)ÊQcðÛU©¬° ˆÅÑÁ“¥ÑXb‹O+ð›õ”!X¦l¶†¯EÏâ6*&Ò?E´>^éXÆ#lFbiÞÍ¡&; ðvH ÷Ô6=ç Ø7ëýF8TŠæ¼a ¡Á ·ˆL(*ô£Bɬí“Ûã>ßIø?0Cy>}=Òéʳë1 áœD/ÕG-ƒt©ãm )?÷Þ^ ,ÂAƒ{"©‹/ØÐhò‚fºYuæsÿ‘Å¡† ð-ZÕ騯œ¥Rož=¸L÷…ç †î‡CžÞõ˜˜2¢ä7tKˆâUªÑhúhHPC”ß+{!*8̼_^æ1×P|g{¹˜}Œî´Ê³¹S™ˆ³u§isì¿N>áNÐöGóTñä£Äº®î–Ñ;Ûž«)°¼þµ£U<ØœZѦk䔳mSFF˜î3‘²{£ ˜¾t·8?þ&¶ú`Ç&à×õ»‡­S÷éKË}0f÷>zÜ$#é÷( ,  w$e&ãÃù¼ûw ‚Fèo•{ 3ÁûEÎÀ\¢"@+õóÁ,$Û« bÂÈ•Á[ü'ÈE­wÂ2•_4_«®1‚~Å’ÿz¹3POøö³GÑÖãuÄ׳­oÍŒ^”š­šÁÑ `•9»`÷rc¾,•)c×ʸçâ݇ŸvBI`WŽq€jas&™âC …ç¢ð€Ph\ß`D¶¢ËuæŽÆtö<Ù¸øMD¬“]†ÇLº£p‹š•›Ã…àâ¹ÖâãqÊkÀ8eLŠŽ„†€€×/5é©K_:HšxÔŸáXÆå’œJ™ahľãŠ~ñ †Ÿ¤¦½ ™ÞïÉÃïôk× XÃìþ&E¢­×½ÍÀ” ­Ë–“þ†g Qîìù‘½¸vê¨RŸçÄëýŒ2Gq‡¿J£à.­î8ç¹Úæ‰Ãã0]M1yYž¢GÂ.B“Èç6P n¡ª¢"\ɰeÐìâê3mð1œ T‚#(\áºÒýѸøèø¤Í;g‘ôûwÄÉ2)Wn"žÀŸáŸS7»oˆô5ÁÃ! 2)ÓoŽ®fPØJ¬§`¯_É;nB>9€@Òg¨ïĆt.r]NŠLWE\û’<‚ÚpÊÙHzµX„ìdZ]Ø.O:?Y„B~ƒx¼Qöõ ŸsJí»©¤þ™±Çq›Ò¥pލ÷“X«¿=õ`¶".Z õwf:Óäs)©Œµ>DÃ|wOÀ£p\nÍBºÂðQúÆa2)±›Îo]kæÒ¾c Æ0iJKe,Ú3N¦U:”èac¶ע׬L¯¹z¾¥Pƒäã9š#Ÿl"ÂUêÅšNÒW_&yyÈ> 4¾6ilß+¶8µk'fÆ1BêìWõB²uoÔñª©‡"šŸ±ÁMáU„çh"lÙÁ¯Ö3UãG}zSJ»úåq>§òB…Çs×_ |:VËâ2ibñ&p¤ÂEÙ)têÔá…„n¦WMb‡aädAvRî¨<ÿÜžˆCaŸXJP¼]¡>ÅálâLæ>1a'Îè}?„>Io´ ½Ÿª¥ü®Œ+Aí ×4 á_gH¹.áùÕ‰qöH3ëY ™gPnÐѤWÎù9k‘3b?ü/î9X5:ªakÁvL o{=y3ýûNžm/öw2€7zÎM£"–ilÉàeÆyša9#áà¼UË‘›ªÿ ÍYü:»3Ú9…ÐN™ mˆÏ7ìÇyë’.›õ:úd—Qoɼú Ú¿Xýóßå¥ÕÇ,m«ç'Æ=ž_:AŽÏÊôF oÑe“Éɦ³í2aÏvRÄ'WŒªŒu2 â.­î™‘Z ”CRdwñ‡› † ÏRŸu_^ž•±XÅx_`$¼•ÐpŠ—³#äíϘ†–ù:WÞŒ~ë^V„tÆ ï%Õ’ïÖc2ÁûÏp§€Õë:©ÎÌ©·T»½F&p¹Œ¾ð¾ /Š+Z‘‹j=õüäý‘13ÕHf”ˆ‚e3œ{m=–¼j¦;YGÈèÙ[¤ŸlMPzêq9ri²ìΞ»sUïÀ.í¨mSKŽJë3õ·Lö° J Ìhè±DnM?»³ê'•»!pTÙ?œ×ô8Ü]ÐÑË×Ýx‚/ÙµÎd®xøëHÆ¡¹>A † |ÕL§R÷D¤2 µ?‘‹¢¦ƒäñÙÝ Í„?"·å]X¨™ˆëü˜¤ã™ÈŽ_è]æNÆ*©2QþL&æa±—(µj8àò;ÆuT%z3 HÚTÑBs]ÑΕúêø!°D¹ÚºXhðâÌ’ÉMëù®â¿£ ¥ûó–܋GPþÙÚ™ê•TUR#ja@ÝÆ¼YøµµÔ}¦—¤ë'™^ïM ÑR¢îFØê²æ4`59„à†A:ƆÁÕñ­ê±¯óPÀZ8‹~Š1Y^ˆùÌKY9íÆ’vc’%ÊÙIPú<ÐÄðèè1my¼Â·ÍfÅ™›Ù’tj*L_ú”¶²ã8µø‰ÒKM“<‡€ÐÓ6Ž3×úQSŽo¹½‘t¼Lå¼ItÎ^a?L¹€‚1%˦Q±ÌÙªûóB]cÐuc4)oÜëô!݇V§ þÃ&Ò^&¤Êê×±s¨3K{¤6˜Bþ˜6«’«ÑÇê›!zÝÂR_-±%cx`Xèî:×~Ð:M€1ÃUhô ÂèÙ^„ËÞØßôÊs€xá1‡¾wxÍÏSá»$)Uìr­†õSKzÄm^,bvž’쪾„0nDÇ'ì2¥©¬äËTF‘ žèïØ¾î¿w{5°|‡Žn4#ߤ¼cÖ­M‘_œ?©ùÐÀWuÐõ¢,‡>ì‹okoÖ˜qȈÉ®Áý¯»~òœ»5éXìV7ÅÒ7"¥çg«ðfÃkKù!bJ·‡¶> µSщîÏ£¸5‰fÂÅ/3¢ó¾”c¥JdŸsNB±1º¯`ÒVqi‡ðã»_Ç8 ¨&ÙSÜ„ÿE-ÂuT0‘RB^ý^úY×`Ø Ç4a£-¿“ÞE†´^Þ r÷P1èO’ÿ™«r•ý€KOòôåô(ËË‹¾Eðbð›ò“§tÅ(ÚeKØöýçÂóp×m‡ªE -ûŽWX‘B€Õ5!çÐØ¸xToaðZqÀ€¨eí,é>"=¨AØ[ g ½¥2ø.ìl˜xdŸõF!oxÖ ¯G•¼çí±Aœ•FHºE[¬Š>²Öà1~¼®4`+üÖ-­ì>ÉHÂH¾¿ø[€pž›£’˜:Æ\œ1^[Ì!œËvKm‚lc/ºß#Àƒ}VÙ"or%Þ¦(ß•dCwÕЧ%û¡e+N³éè଄!oáéÞ!gqÇË›Èýí–ĆI"1—Òºl0¤JÜl$÷|x‚¨Kº¥fŽ*«z`Â`+VKtæ/•¡3EþÚèWZ³Ç–ÝÉ#P»  ¤5yó[û帺Ñx:ª XáÙ$3³N´÷úì1ž|¥¬ìâÛ9Àüoû&÷<í;‡vŒcÍ 0^n¯Dا¯¹±‹¥ñ¦ðíÖœñ bpçÛ‹mB°â¹fîÅ쇢Ӻ> ²Ì{Kè紑а1t~#¡ß‹ÎkèíÖ Lêûo͵"<05®% endstream endobj 950 0 obj << /Length1 1965 /Length2 11583 /Length3 0 /Length 12782 /Filter /FlateDecode >> stream xÚweT\ÙÖ-î48‚»»kpw/ )ÜÝÝ!¸KpMàîÁÝ%x€yÕÝ÷ëä~ïýx£Æ¨:sí¹lŸ¹ö9EM¡¢Î$f2JƒÁLl̬ü Eu 6V++3++; 5µ† Øø{…Z èâjräÿƒ#á4Cl’¦`Uäw³°qظùÙxøYY쬬|ÿC¹ð$MÝm,ŠÌy#Ð…Zääåbce †dúŸK­9€‡ñow€˜ÐÅÆÜÔ h ¶:@2š›ÚÔAæ6@°×… ´ƒøYX<<<˜M\™A.VÂtŒ°5@ è tqZþj dêü·9fj€†µë?Kê K°‡© 1ØÛ˜]!NnŽ@$?@]N ìtü‡¬ððŸí°1³ýî?Þ²qüÛÙÔÜäàdêèeãh°´±”¥˜Áž`F€©£Å_DS{WÄßÔÝÔÆÞÔ Bø»xS€´˜*ÀÒã:t5w±q»2»ÚØÿÕ%Ë_a -åh!rp:‚]QþªOÒÆhÙy/–o±#ÈÃÑç7¶´q´°ü« 7'MGg7 œäXÊo› àbeeå…ÜX 3èinÍòW /'àß‹l™!}øù8œ–V€~6–@ÈŠ«©;vqúùü¹ðß… `ac˜­lQ~G‡˜–ÿ`ˆ \l<ú¬²Xÿúü{eÑ™ÈÑÞë7ýïÍ¢­*ûNO“áߦÿ]y|˜ØYLìn677Àï¿©˜Úü§?\å-A¾ê…lÔÿÔìþ!ÐþgNèÿK 0@û[ï¬\¬æ/¶ÿoÕÿíòÿû_Qþ?ôþ¿k’v³·ÿ›Aû?”ÿ‹aê`cïõDÂn`È8(‚ Cáø¿©ÚÀ¦Xhaãæð¿WåÀ¦±s´‚H›‰™“û³«´'ÐBÅlný·Lþ1kþ5vö6Ž@«Í_G €‰•õ­AfÍÜrœ¸BÔù÷2JÿUÊÑdñ×̱sqL]\L½PX!¢bçâø°A†Óèù·ž,ÌŽ 0ÄéÐ` rAùëÖróX$þ2ýƒx,’¿€Eê_ÄÃ`‘ý8,ò¿7€Eá7‚ÄTüñAéoÉ`öAbš™šÛ¹Ú›ºZÿ¶Bòšÿ‹þÚ‹? €ø„„°ürX¬þ€2æä‚ /'kÈ÷›±Ùü!Øþ!ÅÛý!ÕÛÿ!…:ü†écù#2dâY@¿sC¸'ÃËÂþ€Âÿ…¶³"Å¿÷›éÇå)Þõ)þO2¤x·ß» áþ}Ö»šƒ\þ¬Ò“û’Ùã7„,ž@HO^¿{‚¸z]þiò¿diîæâ9ªÿ>A šýü÷sôš£,-€ÌBmC;ïëň=˜ö&8¾rkþxq#çD‰³‡Þa†ù¢D`WIÌYxË›–+©2j-\«« žH,ÇãaÇ'ÞÅŒˆ† #EtÊÜ$¨ÄvD;uÉú•()– #ÿHÂk@öœ¢ú‡.µ°Ä8¶z8/€ô^ïàÐY˜¬ºø²òáßëŸÁß•eíýUù憻%Ymƒ#2På{Z§häõP[Oïp>ta›Ì/ô‰£sÌ…Ë €/̈u+yø»Ç{ØZw½í†þÌX]@spÍX:|·¤›ìOõFÈ…Gõõ§h€Û—Ô2Ié…³qö·rqʆN“sô¡ü h™¶È–A'¥Ö²ßã½óx*O†¹geiÏó±gzlfÆL¨öàò•b_‡ʽ‰XÔŽž´:’ ëh;%üñbŸ´'ÍddÜLˆ¬û8Ÿ:ÞÄ@ Ôת>À:2¢Â»À*KöΚ¼3Õ/&9óe˜¢Í=|·µ€ë/%­¡ÏÛÉÖaꙺC³T<ÏoÞ7ãn¨wÑ[³_ëÞ4©8ÍÆT©ã}:Ý@æ>Éa,öðùÓ¡dL1éEè¹"²Ÿ—³òtÀ=˜x6‡‘-Û_5ØNÎÎÑúge¡ý:ôz¡^ªÄÆh½:á„kQÍ3jPDöfà,VhÞš/êãY¬=Eaê„dðšLL²êW.³ÎcýˆËZòpÞ8a¦zíK“t¶]*]{^8ùº £…™qÝëX×¢¾ÆÓ c ™¼+„‰¾”¢…†d%Ò·y“³cX……hª/Êc€0Ë‹s#./Aê2j®=S%á•ä8µ@h&¢Lȵ¡±„}¾³/Wظ<+îáÇc0‚²=«ìÐ4ØÖ½:¯uó^ã¡VÎð$”†iþYó–Åpvnˆ™š@ÙbÎÞuPáMfww6'ëó9Yõ(]ämY8öÞ¦·Ž×y'¥'‘“@²f2±Ë×@ó×{µå>°\ȵm§P,2ýiüzz4?U %Ù1 |Þg”Â)ç¼çq²)L¬rE¢ýˆ`×.FDF§ÈŒaxßÛ¤¦k4ûÖvóûÎ0ýל’ÄžûNçW1}q×ò¾ào_ÛX;FnÈIEk/ (à ¼L“À4î¯Á6÷´ƒinof±ù$Ù ‹è¸(m‚.÷FRÂp „ñ©¹2P«úGaqiN³Í}ø¡¼_õWFaг´EŸÎ‚÷cm¥ ^B¼;4r&¶Iu°;•Ù&¡5K=è|¿Õö¬¼òåZ©«£“ä½HësU/RYd¬+U¦‹K!´e—Øu †‹þø¬ÅÚ7ÇÇWc‘8×Mͬq¡|ŒôgaäÄò*¦NçBËEH0®Ô:Œ–G)'?TC¯¦@—Ú‚{˜/ì¶Ôˆò½zÙ³ŽÙüÏÄÇuov£›•T_¥²P`Õ<Æ_Zȱ½Š?ŒµòЃ5^RSí0DËÖâ°ì:Êú0˜Bu/ÍW¾a*÷FDSÂK(âUo+Ü•^*Ÿ¹Œ›ö ¥QQ9!â6ªcƒW"˜ø±@2Ún§õîÓ«e~B¾çûæ­LåÕOYåž„Yïß0/sÒ!NëÞ0{‹ÑÍãÂÂ$ü\t7×9LxPÁÖÒŒŸd&s×Ðÿ¼^·)§Rt¹A[§bE.²üT±½f-/ÍyÚØ¬çì‡v’¡z‹•«$ÞÆŸóí—'Ù4Ùó¯–=oN„§;>Eñ"g#laÁa„ÍñQo‰ô§-Ü\¹ž¼ú4gu_ª×ü‚k`uE»þòÝ×Þ©›$2™ÀK)x%Ý¿7Û+­Ë]ãyÔÜVšœže´ña5 IúQ_?˜Æ èÐÙ¨5‘– ›Ú¬ìiÜX2½áX‚Ò]Tû6ÛkȸìÇj&͈+È„ñòm ¢–ª—DìžGÚ% ~a•†þ‘9T'¦E’†y¬ep|`Y¾7su^‘œ¨œÑtc·ñ§ p gƒL»+yçãvˆÂ³Ä«¾”ãNæ³òßÍKÄzßðMç«%¹G'­IuõZ ©`…t¾Î/nëİžå$ñ7Ýfu·5#l~x„é÷}í$ÆMMdà˜¥.Ms Í™ÈõIÅœà*Ÿì'Ñ{…¨ñ}¼#æ•:~¨KºåW‘¯‡ÂÈPz.Wúˆy‚σ߰’.>Õ>ž)IDÑÎ:”Ì>ŒAA}Én`õ¾ :/™vHžîÕ·ixDÑ(anlÿÄg\*rç‘ó ÛM~$¥øž'¶ý:ºù|~@Ü~Ÿ9£wž¡³nü-ÎÅK—ûGöÏó‚(-$+Tf£Ú¦ vÊ‘í“Gmè ÃJø~†R¾©Ç%c¾™ÙR*£Fì ôYS§Æû³˜ENÔxõf%“¦ÏohšÜ=ŸÔ8Ðëqáy51ÛvEX"çÝ¥Ð(¯½¦6={å¸(™ÊÌ —½z…ŽèKœ WÍâßÁ.cy+*›8àpb˜D6„¬*°°‚M%:ÔçFßÌÔåXGd×2¥Á~wÎ×О è¿Û8q„éCùdâœ?oüܲ¸¥=«ïËBz¢©-š"x×ȯuÕkY$¬qÜv—Q‰¶ Uú´¥|UÆÞ‚dMñЊõÖ—!Æó!Hêzt²÷C4Êg¼&ùò¢[¾ š(Ö’ùå–>—KUÃ}ïiï÷…ЋÊS™äýôyãÝïs㯅)S7d%…jÙ{Íø4¥‚(¶>+W#¨]‘ð­&ã´uÎÓ •\Q¸~”)ðÕgÝxdHg wjˆZ:–Új}Uˆ©ƒU8JV”b¹Õó>úˆj1O$V›;‡cÖ¨"®ðL±ÈR ç8G€ÁhH NIx˜\…Ùƒ0)ÌÌÑLsM¼Ž°õê\Ô·ãËdcD Õ„¨M\x6ËâŠEÿfò\#¢ ÕïÉ áô©òN#ýqëÑÕD–Rõ¥FÞ];£-Êkq`3rŒG¤)«f[`~•ÜÑä^¿v b<$\Ù5T3Zt/&®ºïH$æP¹Ë[YÜlXoúåiïÈç‘–¨Or<|m5 El ´HŽð›­1ßÅ »H8ðÁ4qäݤ¶ð¼ b÷e„%“9í¥ÛþøZvYسò@õ3's‹¯×}¾'r{f<Ô ø|œ\Ùùž45ŒÔóQº¸Sÿ)¦Ü[‡‡»Ç ɲƜãÕ]°ƒŒÖ‹Ä£žR¦¯_bô­Œ œi̪KzÒ;¤SoÖˆw‡'9±äe(З]*w«U²Ì*ÕØoƒNr«{Ûs9Éó– £ç×ô±ØÂYlïªU_1oÿœYTÕ1W£fÀŠ$Y³ópð hs$Ád²Z픟¢ß_EYÌ IWg‰sF¥ÎNpéõX \ˆu­¡Ò–®§ö* úeP%[ µï];1s­ËÒ=â¦ÓdÚ€½›êfIoÓëÁR¢/V>•·×À¹‚ÿüŒiø–9È|øÙìG9˜´#­¯1Ä4ìÝ:C"ÕkéãÓU’dè]>Û Q•XAƒ³l:8î–²ðéÔ÷iZ½DÆy^0Ð.dï8Òô0¿o_Üä„Ú'b)Û¥,ÖáHìé‘ÌMfê GâïÇ`P„(Vë²2Šüæd%?UË’E¤œÅà¦í0† TøY6V½±¾Ç¹ÊºS"+ 9Ò:ézp…˜/ù˜®Óï[tò\nr41 Бµ_ØÊ¾`îJFøCSyào…ÂM›U ­IeÝ9}Á÷qb„ý)"ÓW)E©=›#îÔs_– :×]h”¿?¿V%ï2%}Vš|ÿëèÐgs¶çã#q&â  v±ª™£s8‡¯Ó{FΚŸáM£Ãœ'/Äñ‹°>k𤷵.ï¾4‡¬ Óü=ŸRÆÏ°Î…Sô1¾y½ƒOu@WË zŸ3EíEìÏÓ¢ƒÝ‘EœM¨ðÑ{¦mÿœ´~4Îêõì’ÛCMåM , LBUÇ¿ñÈ‚ãétÛm8 *x+·³º+·QàsJ=˰b~r” Ë›ü,- 抋Jzv…‰F½/„7·¯bó¡•©è»gÛæbu/’Mù|~l’€…/·}$±°#rÏj,Y|î5ê¹JQ°¾×ÑiƒÏóöîþ:).ÿ —361~«eõr)Œü±ÝNHo Õ õ–c¨4B;OsþTïö—#‚Æ Už’?=–Ÿ~Iû¥ÓúTß½˜5¾.p±-¥ ˜+¢pðs«öm´°n{%ÖÁkëÉKD4!è_%/vDð"ÑÜMË‹)r“ßúÖ‚Ô‡ß̦QRï“§«\¦ÖgŽ?é]A‡,ŠzÛcXtwXŽe\V²iumú}WöZŒSçpÙ3¯Ü,‘}¹Æ`™ƒ#ŽŒ‡æø…Ío»“aú§k›t¶W\7!+Ðr ’^´\¨Mg‰Â´iØbüÑkÎÎ!Ä1 Ñÿ¹“ oÁ\kEv¾>ì®umyBgƒüÉå{|íº­8ùúmèã½›Íòäa].GÎFWõ¡òa¼P‡ë¡à[ZD‚G¨É=öð‘Àk["<φ¯84p·pûkDšÖ²èÏ7ñ[¯3Ó‰5JÅGÐnOïÀTxÃll$³5o¿NÜgá³mèü¢È9 ³õY3^ì\Ì)‰< ±=fkÒ‹}•£¤TØuƒêûDt ¶êôm¹Á´ªiÞá–‡•H‰e»´ÓTBêC¶LvT·tŸ`Ü3ü~è‚;ï‰@ƒ§f–OÜQò¦õ]CÉGq¦z3Yú*B½æ²î¶÷“1¨¼«ÌÛœOþϼ™ó³¤½}_ÖåÛZ@«aü/†¹vKLJ¯ó™º&|¬Åä„êF‹e/¨õù˜„í/åIÝge[òëKEÄ6X¡öáTµçõY}óL±ŸZë1xÙÝ`i¢/ÛJùr“´Ã ý—tU-”„¹zÙ²×ù^Ì¢P—l‘"Áþ©¤a¬¤ ë1Aù®eão_ñ9·k;º¹ZÏ”: åáf)Ú«NR6މë§g.¤öî¡ñŽźNˆ¥ß%.ÛÓSÖW]“‘V‘êdM»®”tgC·€¡ƒÍ ŽBé°ðG”<ò××/ Ä[·n“^ˆqR¾ Ü૆¡«É®ùr´|è)¨ß±ƒr¦Oå:úˆ,VÖ¾ƒFkK‚Y`ŒñÂÁ‰ä£gR2I¥0ØŠSÈý âªýL:p4Q<…3 Hàqq3­0ÑyúŽŸvåÉžmÇÍe°Žs!O\ì{%+TN@Tñ‚L˜ß“úàXÎ. ·®ë\hY>ÛIúw¿#ú$êg£n«ÅÏo¬Ž.3áø¢îdXt±DÞ€1ÂÖ-D_ç¶Ým*YO÷’£-×#_ n‰ÔLŽ7€´³HõÎP†2hÁÁÆW ñÌ[üãUO(ˆW–H%¸\\È(ƒbÞÃ¥Ÿ‘_ ϯ¡_«ï¢ð&GÁœ3p4©&sŽZ™5øÀ$T«/\2Š¡¸LýÔBFûU)qW³|5 «ô°"¹Ï?dª9x'½J¢´\ûètìÀ]›š3®ùóÜð{ÔP{]glN"ç‰Wê2¿Ã”À›x7èÎÝ´ÐTãÄI7Ûk 5Q›NM·îS«/¡SÚrªá²6Ïæ&Uo½Ýü>|2x‘ë7öz—fÆø˜5T³†lm£CE;Ä¿#m‚”A× ÌíZúÀ”3áîIŒàrPÐ@‡ÊÐáNÙ߿ش/ΫK€ ˜Èʼngk¥ƒÍ.+,WêÚЯù­¾qËSøó²vÿÛâ#ËÞJE] ìÇÀ¦ >-æ×»÷€†DÒƒ ¢hhkJÉm_+(AB–/ôCæ)º r· \+×½Pßü†°'6¤“ ¡…‰=;õÒkíÍ„öî:ŸJ5uQb’o¶ À9¼[•¿ÜÑÏP#*fi—5y¾©Õxt rmÀ±LI‰ämꂊ¼ëwP4á´²&ÚØ%ÒyÞ“«µ½†7Mï]sü¯¹Hï¼_о3Û©—¾c×z¤yê¸=Šˆ½öÒƒÇýu òkë—5Šú©v©Rf°hÅ=c$Û·ÃNQq°ÝÂÒe~7=-nJÁa'²Á1MŒ&½šSßÔ]ÇZÖ]<àзçÖ åÃf¹Ë²-Ü—Xitc£ñ¸áÆ$ôç ËïsþÎG«ÐÑm<´_÷V½iÊSq±}—L0ü]=I«t2Œ†_¬7/'߸3 \oX†‚©…Ž„4dìP"ä/pjH×2 &ŽÚ¯ %tMoê`4:oö¼·òYà3κÆ0¨”µ :q*ã‚é¼:-cؤöÉMe2ñk_ç%þHlkØïŒ=ÊHn‰€Ó#¯YŸîGiõÃÅ‹YofA›´[GÇr˼ÿ”Y|"îSððÖ¾,f4áÔ@}Iz©b.=÷V¶ìøÐ+œÒ‚µ±ÄM,Œbž3òmúšÊsúwÿ@ÓÒ²–~õ"AßàÞÔV—á GѨ| ±ýëêðS~umlç›ôŽ M[˜Ee4Ps.:)bòÎÆ¦ѯCmvÀÒSPVä'ä¼±M8rê0?aæCip>QÛ$Í`÷P‚㨢A𔵼ÕpVç~.qÐÒ»ÈÒ`q!Jq?¶>tL ÞÑ­˜%2žÒ`&9ûAV÷ºràÞä=ƒØ+7ºðA`„ê䳯>X§î¨\ÛýYg®½¸çT(…ÞýU="— f°˜Ê7Ö ²L× tYïªs¾¢åR„Þ±Zl¦"§K2Ò0yïw°‚G`+@ñp3|…"ÎÝÚ/°º¶;Ú–Ý_jOÞ¬(žf|ïD£gJ¡°»z;ïºÊ–$Âö¼€ö́þÈ3sš…{—ß>mÉÕ(soÚ‘ÈÏ \±3Èïe¸|ˆÆMÂ+¿Žü¤Æ ½™°ßC5ÑtëD5ÏÅI›O‡É³¨É»÷d°%‰Ì+è‚ “–bÄgâå¬7•Õ9Üóna'«°=>é+Dì›Ù¦Ñ…¦v›“.<‚èQrÌRðÅ‹€—o2éÝâ4j¨8Ù”‡<½GƒÁ/å´ÑInFop„±®ÃGy½‡Õ=¢#޲%´üÝzë™3F7éŸñP„t-«ÑzÈÃ[[²¦zö)ì ÂöfÁ×¾åWö§ÚSá*h% °Gˆóµ¿~ ¿R[¬ëÈ Û¦ní¥•WÌ÷Ôw¨ zæ(=ó¦Å;À3‰]³‚|±ÊSP¨/‚Ç& Gǽ+‰Ìkªí 65N½É*£mDµ š×µŒºR"ñ¾;à_鑘q<ù£ÐT¤}èŽóÿêQ°[áýa¹ås!ÝU!ßµ& Ì´2–öÒ}0þ]ŽÏüK“ƒôFMd1¡]ÁÓ½ƒ–`ýxm®ds¢çTfD%ýOLŸ­è)Ü &¹pr•Æ~ÁcÀW÷ÓMr‡&QJ ØÇoºÍSÇ ì.|a@f½Síi÷Éð¶‚Zq¼”xTÝû,ê·þHœØùû–!0í¸ÛXLãg‡[¶D\âxc@Ô 0jš-ZoJÛ2w‡©«†t{¾®TÎ6’bòÎV‡u1#ܸý\Çã|Šc¹JÇÆ6vÑUŠ@W¢¡±kóÁ Ÿ~¿P8ýÍás¬ÌvÝc/Ì*|WÑq€'¦ÖE§åª9£c®ƽ7óTQP|&úMb¢@ £’é Rú Ù€"U½–0Xw•VºuÙ7Æx°ˆã-\L«3Ó÷‘ã©AG¹îfÍmÓRiÃxô€/1Hª®³°àÍ‚Š˜ 6®îÛÀv”`¨9²&ŽŒ|ž{Ç…~+è¦Rþz9çµÈ;— EÞ@Ô=¼’ñ–Ÿ'nÞ}Tqßf¦R?;‚÷Ê.IæCw=äLn?—¿~Fº—ÌܳŠÉKDÚ¼K×£}%û.瘥ˆî{büH .òôyH&=Ba—³%oûGà§È”-ÚÔ¨$úæšVi–¢ÊÖ8ËÞ;ê—ïëÅ­•bâEŠ%IDÜ'ò¾ê!èÊË7Å?mG°_ñíˆjºÏÔ¾í8¨ðqZ{/)ßÛ_È:¬5Úb¤3d‹‡ºb\ÐèLùH=ÙÓæùÊæîÒpOêà¬Æk XûTöšry¹Pó®`V‘º¡–Þk*_—˜Æ']¾˜zzW¾¶|y(߿ބ ¡MÔ~ ìãU”æ¶7Ø÷!ª4¢ $·/ºÖÁ¾â;fƒžñA)©Î<â1[†³v³¦7y޶Ê+gqN³ZU.ƒzM<¿f;Û°²áÝ›+Š9Û£ð©û&/+Q´¶’¾§ò΂äd¥L)†˜ÛE˜õûþ—¡EàëÌ ¾¥í°íªœúnÝWIy°eƒ,‰~Éš¸ž=[×g§Òæ÷IŸÞólÖÓš}o4lP9ÝÙ½ó3³ÙÝ]#:(—çÐD[ꄼD°ÅðÜ…ÎidGZÈ’*g9qMÕ›MJ•Rðº*~½ë‘ž£Þ¦}¼¯nËÿeªM!b–¹GûIB`“Ò7IšÏÊ·|9‰J CõL&ÇdæNcL'BÄw(ͼ$3ÔYQŽvò¼ø‰7+cn´\TÊó‰ÜYk,5ŒIDÐ{ÂOŸ¢ñÄ„Î4°*„-†}€ÁÀÇ$;ùkl+ï¹\YmQÈ](ÿbùTòùÚjvØö¢æ3[ÃèjÞ6†[âO<¯D/efAJzÍj¨án¬|ÌlÒí¤»–6kG¦ ? ‹À4ùÅ?9®ÕQ=éÕý_ †…­Q šS-Å“[:ËF<Ù4 T_®Y\Î6wjá–ÿø¤ÏáõtDì" '7…þã²,9±°äèµh§òåUÄ# bʬ>A/Gç7Pž,‚©€@s•Ø%Õ¤‹þ’Cóä6§2€­/:£@™—•º”êxBÓ÷žÇIÒ¹{Ö§YÕSù$LJÆ6?抰¯TàIHð³dj {ZglAÒ¦D%ˆ*ýª»?¬«ðEÆ “jïö ‡vÜÀ€7‹ÚÔbÝyÜë7öëtµòÉVМ¸jâßo^ç0Ê~^êÁÕN×˽Õ!Ý%È@/úµOÜΜüœb[žîq}ï>M5Çud±º†üù><ª|/¬H‘ $ËÞÅÑhE£Õ]6;…,»Ró"GvCü¶K-k`;j9íëc˧Á:òìÆôŸê‡îØ{âáfoú0wÜÞYÆ>ÉÑÄmº#ñ{çK71¤†g=o–ù%Ku{ EÙ0üŠíår42ýøÞ¹J®Óñ5¼ÌRvi¬ ølúNP=~ª£qÂ}ìŲ³ÌLß~˜ámhCF"m\Ž´C±S5æ¨XQÔº¼ÂõöVSoÁ/ñ+ÓÆÝØ›À¶Ÿ»‡dx,yøØ¬¸ ðãÆÕ΋ý”÷6¡[O`ËÚíßN«c›ÁE0/p¥m¼#ÛYL{8á}Ucý3QƇlŸÁ´yŠâÞšO. zþP\i“åÃN)äBbgK&¸?Ú;”@gÝåû~‚¾Q®g‰VCëÂú’݃¯^âz 4ÈÂŒ¤›9 HœúX®žÐ]17;ìšßQô]?hòñžÕe&á3žŒ¾sÑe¦•j_´wœyÐOÐ%RpÙãvЧ}KÅÞ² ùƒ``<‰HP½ü¸ýñëÑUß³£Ïò–®ä-N® ‹ÎÉ"ŠAÖF°vÄÒæ{ß²JÆ´= ø…°èzJüùe«twŽ›ƒÀ),Tt¾8n›„ô²ëëÌs¯ïG?œ«¦S¬œõÆ¡>«•Q"^¯èÑË äçÍü ´8œ³{”Æçn9ÝØ թlj;DoÙbâ.OѹP3Åüüjtñ†U1¾öÇ“oV?®°3SÍ7LîG×!#µhxßj ,džnT§ÀmöÅM¤ ·ñ¤J±=A‡W?±®(Z£¾«,tèÓ왎Õ^¨œr 8¹†‹ìéNö°Pèc•4B±ÕBÉ‹H*p>çó±Ï\}!€–gõ@•R굤•*ú¹Èe©xâócÿss¬á¬Ð8´cMhGh‡•_T ›ù€P½CºÑk•þ`É¥0{P¾ƒôKîÅC™¹Ê(0"ÛÊ;í†àøx‹çôa›´²÷+@©%€ðGHåðîféWû4/£‹V6}öב‹`åuÄqŒ»ö)YßÓGè~“‰/'#a¿ž0ÚÈR@Xol¥õ‹ÔhÕAÈø2:kV"ÌN~Àâø1•Ä íJ&̾ìÎJÑÆ7oO\oÇ'`›ÜšpØÇ¢$ ©›»“¢¼ûM•ßN®ÀâÌå¹ Vô[¹W‚Ò#¶¿Ëä×rpç™÷&òÉÐÓàò”’MLRp+½•Ž0eäAÑŠ¦ª¡ ›K0àíª0® ŸýÔ¸xŠGI ^Zom7‘ã Ø3~²ͬBIŽXÀ¤½ë&¨'ŽÛ¾ðë¾+%¦‹Ðc‹t—d¼^DÝúî–5Öîe6ýE÷/¡&«¿@ ¾’C×ÂHknà$ß+],rð}iW ñ7ùO¨­úáß±Ô±8n¾¯‹–cÛ:‰¿½°ÿ‚óhRþ̉R’y‹á#0pæ4¼£Æ‘ÛO«£ë‡º.¹Â¾±æïSI¿f½K„‰Ôjíó‹v1²fÅYÛF={¸µd²†Sy-OÍ»ûìmMa-÷ªEÃtß[çÖ%Ùµ‚¤o”keƒ1LŒqü$V¡fÁ!ËŸãõJfX¡Úó 'M®`MxÇ)‰Ç4¿ºÒ«Ê;µÜdv¢ f“M[jÐÂ>·^u<‹·ÀQ&# dô*»©‘‡! åÀFD,2>þq®UâÿÓOƒw}ØïÆ,hluJZÛ´)·*@ ÌY)X}€W5se¯ø:ž¯KûfN-ÿzÍV4¶½>-Ýh ™L®/`eNìx•i—ò(ÑøpSµ¿P–€Ë¢*Ò.‘…¢NòÁ?=AVNŽœ»oQt& J5Q‘0¦g-/@ÎWÐæT6å…÷€½E[ïT“ÜØX€V_¯' 5³ù8–¦ƒ·´¥òÖt鉗0Ñw·þ¾Š˜Ôi²ÌªMMಜAQ/+0ìÒ`/§Lä°V‹ÑÇÈ*IS´Xõ3¬cñA4:p×´‹æ˜£ýìgpýfêYp¦cgsÊ‹¤Ò([mBõÏ뚉Æo“ãSÂzÓFZ“„ÇÝÔ,´´×:iG¦±dÍ7 EFŽ‚Rž#ñùªÜtqH-ø‹·#£OÄoï™·õ9Š&»C›ýyawcô¥°*A¨'é¾–P.¼«0Š2ײÿîañÍ?÷#Ù}Ór2ñ‰%ÑžÚbþÙW:pÈÙÌq¸ÿ@•ïó;6ic²Kp<æwý 8$Ú­×·†Ç!ϲ= x‘=å‹Dt‰Hš;âáM}š{@ž„ì·’E©3zEø1")ñ¸ .x» YD:]•àÎb>Üî¾/²M^ „1І/ [6î ©ëÒÆ7ÇM±lôscãaPz$)×"õw£o£¢0í®Mp•ì …)fA6ùžÖ7ùó5ë˜tH·ϰy/gȶ¿ƒêrò`Òž™À&¥%ðòð_t£íì3Õ³µ:ÙÌDAIÏB^ïFdÁÿáÿ‘J‘HçNy4tijÏ&ìÝr†&OlÎäØ^‘ÎŒ¼I`zu˜ª‰—g*·Ê$ê~áÜ A‡aµ"œWF^s’®µYì—’ëãì1r] ðäu‚¢-ƒx=H VT$#&KÝ„!ïM/ߊš×»Ãx©“™êPüv’rN»ÊûÊ€Ôp8% gSá«ñÖB%Nœ·.ÔNLUfSÝØð‚(˜:NÔO¼¬«ô+:©üùƒNNñéúÄ” Zq¡ŒÈ"[EQº¯pƒQ/ÏꟽK Oކ;u’¼SÙðТ1{#™´Pg´PÀbic=˜Ý>“.豜÷ªëebŸ8 à˜µôb,·oq¯W umDV$ËÀå9¨p aúÅOÑ4ò–èèž,¿pGî9#lµ»À<^ŸÎaJP¢[+اéS_ÿÇŒtg°´DÇû±%î›ßhÝËJÑŽü)ËÖeÇ䄤öl ¸÷9Ëp㲟/Å Êè\ºjô¹O»—Ûéf}f*†ˆ Ÿ}®¢%®¨¯4¨t¿”òƒÃ0ð[ŸQ69ƒ¶>µÍ27? ’r‰žx¾>ºâ—R{–¿I¬ÛñÑÕªdЬ[µV)tÜòúâ¬MœˆYD>w= 7U"•í”ëKaôËañ¬—âe¢vÝäµó8æÐÛô6õit\‘1ƒ ›¥Â˜ÞJ”Ÿ¯{\~ð^SD' žw½ÕOÓ(ãøÅç-¶v~t3«cCMo7ö^ŸÞÀ®3yAšKXM¿óÃŽÇ)m†.Å<ã–îo"‡V¹WùâaË|ËSèY$úÉò"Ž€Ý386š`%xD}‘ì+1.¡ÂÞdÀ…ˆJ®ðè­„à‰œÌÝY÷ãɆñ`¾Ñ“eï~ afäÝÌÇ`s¥û}Þÿ!ÕàŸ endstream endobj 952 0 obj << /Length1 1401 /Length2 6058 /Length3 0 /Length 7007 /Filter /FlateDecode >> stream xÚwT”[Û6R"ÀC7 ‚¤tw0À3À ]Ò ¡Ò©H(%]Ò " %!ÒÝ)~cœsÞóþÿZß·f­gž}ß×]{_×^ëaaÐÖ㑵ƒÛ@”à0$?/H×ÐÓã /$€Ç¢Eº@þ²ã±B<P8Lâ?ò0eS#Q@ 8 Põtø~ ~Q ÄÿÂ=$°ÔÐàTá0EîæëupD¢êüõ °Ûrüââ¢Ü¿ÂYWˆÔ 4ÀHGˆ+ª¢-ØЃÛB!Hߥ`—rD"Ý$øø¼½½yÁ®^¸‡ƒ47à E:ºÄà büлBþŒÆ‹Çè;B¿zp{¤7Ø  .P[ ñ„ÙA<Tu@OEÐrƒÀ~ƒÕ¸?›ðóòÿîOôÏDPد`°­-ÜÕ ó…Â{¨ ÐRRçEú ¹0Ìî'ì‚€£âÁ^`¨ ØøÕ:P’ÕÀ¨ ÿ̇°õ€º!¼¨ËÏù~¦Am³"ÌNîê !x?ûS€z@lQûîË÷çpapo˜ÿ_+{(ÌÎþçvžn|0¨»'DEáeÂûÇæA H $@܈­#ßÏú¾n_NþŸfÔ þnp7À5$jAýáù#À^éá ôÿOÇ¿Wxüü€Ô Ø@ 0¼²£ÌûßkÔù{@}3Š~üèçïï7 Ãìà0ß࿎˜OIÉDÍXëÏÈ;åäà>€??À# ÄÅÅQaq ðßi´ÁÐ?müG¨ ̈ÿîµMuìõ‡ìôÁü;—&E\ÀþÏÍA [ÔƒÿÿÌö_!ÿ?’ÿÌò¿òü¿;Ròtqùågÿ øü`W¨‹ïЏžH”4à()Àþjù­\ ˆÔÓõ¿½*H0J ²0—¿7ŠP‚ú@ì´¡H[Çß|ùm7ø©4( ¢ G@Þ-?ô_>”¼lQ÷EÊ_.J=ÿ.©³…Ûý”™€°öðûâP\üùQz´ƒøü¢1ÀÇ ƒ#Q!j¼@Àî÷óL…@Ÿê€¹@ì‘?]¿­ü¬¿Ïï§ù_Um==PNä/f ZúkýKéˆÄojn+îTÞrV)Kãͳü{~±5æ‰IO´0’õsž¿£úÍŒ£îrÖve”©Ú“%‘#4œ;gC>æY!s)ʹH4Åž%¹=žüþóÜÚá£hjÌÒíÝDZ"k3L3¶$£‰«ÑNÁÕò•‚ï­ˆUSñMÀ(:e1wˆbå¾5bsc¶E·|–1Xx n î9½0cäjkçX/®¬b9YX£ÅšïàFÍi±}xñªˆp2ú ZíHTE-Ç͵8ó×Ìoù1õ!Ï G¹0g¯§ûº¶<-NxåÏç}:„lIÖ ŽEcºíÈ&s°Xs…ôA$ù½‰ŒqV]6í“ß6ÛΪ3ô‹«okb.„YÑãØnCZÝS÷hÍåÕßõ9iMýèæXùàè{Ó#”+»Å=ÿ O£"”p¥RªñMêÀú„ÓG¥Ù4®s·AÃIÎÝêë·zÒ ¶[&ä›^Ð-ñpµzš^ó¬&ë±3c\ÑiìŸ'%m=ño‘D+¬Ek{Uí¤Z\³æ¼ýŠó¥]ˆ„ž³K-b4'0X·°ý—zÿ#”ÆëýŒëºá¬‰­S:Q¯Ÿ·ÌqË‹ Pàngðì ’"eS?)<äš%C2ÕM@GÖH-Ü]ôD„´Æ)מjZF!ë&g¥ˆßãNHÝ‘kÆN¸4ŽdRydÚ2Mº“Êæ‰…}YçíkËâ ¢1štÖmbé#M½pš ôGÕ£æ9L Ó¸^ä‰Ã˜iº€fñÔ‡G¾¿ðÇÈz%æ`læ¼G³L{?Ñïu·ÊŒ~ëdúÙ·–Ü›Z*£ C½ù}¯C˜åe0±#¡Ážü–OÌ\é¶²–LGùnKRÛMáz~9ei#åæ¶¡hÏŸ|sa£ë>Æ9Ý¡ƒýÕ¦š°ºFÇ–«Ö´ûêËõ` ×r6el:&có³Ð’ùeÇS …Õ×öóˆù‡@Ù%µý…†Ó±ÉÐiGÉæH­C bÒÀø†Ø/×V½¹ÇD»~"‘ÆJ]“ƒVMªÁ¡ë¥$Q& ¤Xs»Wc ?J#íO¹õŠYj1šÛ¯ÅûŽžÁM©:¾¨éÕ'½Œ©u+¼EÆw"&¦¥õLB¦°–sÓÜ š0ݰ>$–Ï+jÀôDkÖ¡·)Ù)O*É®ð©øZ¯‡Žb19Èä+C‘ôôº¬¢îÕëoDXïÜîF̽žGsVíß°¥  Ú}¦G¶ôüùÐù«jÙd«"ÒL^÷äWÎÚW¸í/.ZiØð¬!M£9ÞÛÎ…îŸäMd[Ö®@©»Ë&sb}AäpP9ÛŠßM,šIΕÌSs§KJ;wØù!\Ž#-Óý)%tiépüFTÀ'݃@f & %Ì^¿nõ×›Wµ.ï›rŸÒÎv>K]7µ›$e%: :”…fàÓSnÚô“ÌT§¥¿¬ƒQ}´˜i—ÖŽ L˱k«¥z]#7 êœñ™û{AÓ"º¬ éÙlû‚ôì8û1`î÷Ú—Ûä†ÞÓ >&ðØ~ôæÊ„Û¡ÔÛei*Pƒ’ƒZÌqÕ *E€y” úF(ÖÖÔAš>ï+¡„ufÈjÝ\µôi¡{[—¼ï ,—ÑŒk¿œêÍ;GS'»AGçÁ‘)] ¾ê'Ò¶W2Ôªìš'(žlºã- {w“f4Ë Çž$1_N ÷aèŒå*å®`ÂÆßXwíMaÔ4!†d8Šd“GZÎò 'Åmuž&ÈâG‘% 9N‹pµ6~jõR§Ñ•\žÎå‰Â˜J›h^å£S›ŽˆpäÓÞé&Sˆ•*ã>_#ñ¼Ò%Ӽタ¼ŠÐJM¼­é[ñþ@(“ÒÈL¤3ŠîÎMhæÖÞÆcăÓ;?’#ž&¾$óèO3üyäjí!ýòXŒÆPoðᡘ¿èÝ×C†[<ƒy¸–§g^!ùiŸlå3‹%ìPšù>Fèiß7Üì ~®bæÊ©»³°–>ogNwãëv§Œq<Öîj|ô©‚É+‚šO²•ëÌ=Uï v&c'ÚçêÅ€{œ]Kg<‘¯9’¬4×Þõ-h±9)>i³'ÒÌÚÀN/4þ5)Pp°üeßXQ—~Gb¹wØ”µÝì1•g•?Z©G…Qê'K~.YNöab>Ž#|XñˆÍ¤ºô᲎o7ñ9W……ª©bq× ØGÃV¸Év$uW?¶s‡qYþö›|uR™È‘ŸOõqø!‰›ïˆÒ»kÑ܈x‡~Ç?<ÖÙO+ê¯^„3íß¾ì¾ÁÉ-¢FÜãæðDæ“æ DB6I}±dNé«oÒ‰§ñáfm[62Êõ—D°˜¡¹fÿ2K—T‡zBLe/<Ɔc{òå Ù)Š!EaèÖaÿ:ÕÛ7Í[xVÏaXƒ{™ Õ[U,¯'Ð ý"´Ÿ’MÒ*¼hI^v7ež2uPgÛd!ì¾Uî•#«y×)ó¼ƒQz¹U6Ú7÷¤’â9¥‹/ñ¼^ÞÇ(K88ýÔç-¨sûÕAÉYav‚¾Þ^5õ`QnW†ƒ-eA·Úh»?ñG%.È]š¡—SÈÕ _â‹À9s½nß' À?=s(˜o¼@Ó⡲ôG¯e›¬iˆcK4“ª8H«!eg3‰ Æ»n.‹¨¾ÄÓiês»°ñÉ5Aì2¹¸×{Ö±õó¾]æ­Á—µS_•6«³ûSõÌâÕ¹ צ—\ÊøEùÏåÍÌ«X„g#|_s¬-ïÜ2¥1g Qºf^äë&O•¡Ž»—>Oí¬6ÍBß2ß×µüîê÷úȺÌí¢¦ŸXpÖÆ<Æ»Q»jØ$]’ÚšøY$k'?âßÉtWtymшÀPšî4=±=v|8ìZgq1~¿Îy¢.5ñžËÝm/ p´š”îUõÛxl³á: Y•¸E²êè»d ›´äª†¶1ã÷ŽÉΑkr0Føð ÀmýUÏ¢JÞðÙ»ä>Å•8œ0AC¨Ía,ˆ*›à}lÿUŠ0ý¾€SX&\Žš•”ÃTss#œò-=µ{ûª,^cR2ÒËÁ‚â©àÇè2í…yø;} 7t¿¬o¤Q¥„%æÙ€]Ú¶š0†TÅœ‹ U†™­ûx1)êvCF ÆMǘNñ2H'È»d«¥È™·K2‹N™NºS‚ŒªóM¥ÊI-gˆqˆ ®·óù"8hwàÁTgeù ¥”äO–¯Zí 7 Ò!•ªy¨·ÑB¨C´&‡¬æ™̸,l°Ç—†¥ÛwW"ã•mJ7éáuY*_„2 ×V#ïHò›%–#Ô- ’®¿µu~¥Ù1Ó_érb*s roûFæ@cËU\Ê?‘ ÷„§*ÇËÅ0<¥N#à­»#¾zŸ+úË„ƒ&žÅ1ê‚?PI‰ñó‰×Ì”Do³;ïMƒ7z°ñažþOÝ(Ã= Ÿ¼×iërwÙ°Ÿ²wz ÒÀ1Ax÷‹Ï·øÛ ÷Þ¾˜Q™äN½¼=h{ÆkSx‘ã·ííFڌ޸ÜÀŸC;ßõØ“J±H_¹µ§¸†§µ“‡a 4 äôŒå&ï»qºöÄùð*ÞéÊ;µÐºÌöÖ‘åü†£j³Õt“#ùcŠÎ­ÐYYsg©Íâ£2I/¨ˆZýeDñY„ˆ3/—Þ¼¼­¿QôíAók‰§d4ØäuK’|{•údp¤:4­º&–ç¸h.[²§”×áMÞ²@FâîQ´4Ùø=®3PK¿Š–ß0z/Ò$‡ús’ò8&¯Ež 5ýbAC—J³gŠZÈÉ9Óáœt«h³Á¤~‹ó³Ïµ¡¡…¤G¦.Vþì”F•ûaÐ|£Á[2‹ wMM–Óú¥åÆ-dú7Å3CæÔªS­Hî,ºD²÷‹QÆoKÓǪçÇ»Êì˜Ji¯u®¾K÷'Ff…niÒÞSðï‚ÕJÊß1%OI×<‘-/âkzbåk{ý¾û®2œë g›ï=¬«·ÅéPLAÊ–ÁNA ¢ÀÑc!ß7Üà;Hsê3t^9-'!±ªÀë Ø9)¨èX÷:³;×;,ÝúI}\òÕ¦ù¤ÓÔ¶Et‰öáÔiß v*µÍ•ô>7¦NÒ¶C,fß[Å•„Ç ½!Ü+E]”Ä׿èŦ³@mX¡Fu¤­±vOG˜>ć§bÄÛ«á\æ[Ä-aê#ÉݶG.¹gÌæx;Ç›¥7SK³²U¸ŸÅ)Õóq†|†\ÓK:™¢Í/Ëcñ‘:Q‘˜$õºÆÑHI®Ú{œËîwêžÙ?„d«zjµÚl™toîc~=pt>p)UDç,ç~óãÅQg4&H'÷žxPnkù1ï~þõƒŽäµDÂ!t:j8ç²tśΪ¹‰J;Ãt徯Aœ¦cP Æ´=}<‡6ÏO ³¿ßÜŒ~wÊÇÍ%Ëd1¦wªŠ{„oÌÆ®ÿÆM÷f̤´¥F¸îyÊÄÒûUXÈ+ƒZyánüÜ|³È2ù¨Î·Ä±Þ4ç<«¹V9"®ÃV^ÙéYÏ Õ^©ë½­'‰räz>©ÔδÔö¢Aº%¬–Þ‘óÓ1óÓÍ‚!QŠ_ÊDH½Ž^äKëŽ$]—ÀÙ’œ]Þ÷> ZWöÀWÍŽ żè^ Óú,!°”c–å(<êþ`‰¼÷“ 5 ©¼“¦¢ûÀGñnEÎŒ:×ö˜S7CíS™ŠéR%<¥äܵÓü«••ÉK.{˲0÷ z¾ÍÌxÞ» "ià"h{˜ë¾ýfÞ£-h©TŒ Áí£ ¥I>–o²ƒÈÞ9jͤ€úÓSÇŧ—dcX~­Uk²?of¬-½Ávˆ»Â£Ã1~9³0?YÂ.žyÖ$­àQÌŸ¸B⪥ÁtˆzÇ~1¢ÐóÆ?Lj£ÛÚ¬Ö;Y¿ùòݸ2›ºª¤ž y†@6ãg‘Ûã`»¡6¹BóoÃß `geØbÓl¾ÊõÑõþK Õ·jvL [̤8Årܼ˜eáÙ œO V¥‰3‘꺣‹˜bóÁs5Jwú²ñdóùvc2B7*ð6ψ HjÍ{ã—Þ€)¬ÜÆÜ;zÈÝByt…Þ^_ôƒ^N°A9H¤ˆ~šÙõøCȳòQXe.¡øKΕº!÷¾oÓñgíaAf+¬ï^œû²³‡»¯*hÑ(>Ñ;í º˜ú›XÊ2 i?»ã9ÂRϺc;`¬v™0Aç¹|{§{¨PŒà ±òÕޣב‰š–}ß@Š,Té_‡Œ« R¥õZÅ ÍZ•±[ó—fŒrr®*RG {¦˜‹5ª; ”‚&_Ðô&È;Û?.`³âÆà‚OÐ^„jêã »Yàâ3|0ÂVø‚]Md[¥SŒ>‘]ÛÝk$ÖàiíQ4/.ì[Ôµ[Ÿrkù¢¶bßW¾¢eÔ=©·¨¶%ÒÙî-‘YÕf×PŒ…0õ”Ôó`?êš¼ÇÚÊ̜ީc—å~YÕÊDH]5™·ó ÞTYœÈ‘¤Êª3ÉB©o#ô¡ŸN—QyÂä–ÙH]ô„^‰È÷iËøçûÖò[[\ñdÙ”>q…]òPÈ>¤¼ûãÍ÷>U—tDñ‹0%þFM™4€¢KÍ' Ça幃Þ`ø¡t«´û|ÁóýIÍ3_wåó^ãx:|»,°=¨s°ô²Çêîæ^³ÞµE…è]ÓŽ±Éµ ËVÂ3¢Ù'âõhgç¡ÃG‹Ì6LtÈvbõigo¢Uãn¤ œ*ôÞ¤;†ÃȾF¯zâGùç=h­"I×c2±©’…QØ–ÍÂôÈœÇ ŒÙð÷úŠã5îÇàÍçã6£NÛ[L–ÅŽ—:‰—ÞÛÇGoö çkarj.Ÿt"·Ô´MÞœc·qéTZ7†u»|ç³bï2KëêЗ;mËC^’ñúI|Ç>HãU•xÆÒŒ}ÃQÏ%ò󈔗ӾÇʨ-zc%•ßþæËÛ\+”KÍÛKa5í†Å2ý&É·¸Nå#ÌŸ­E<U®B}·­1T÷*/û©—5 >6#†pvŠ›wªÃ5ÃLŸËsúo˜}‹PŸ˜Æêp¶±;Wà5T?ox|ÿýÇâ8…‡» _ºâ#`£³#‡ãï§,õŒÄÂC¶'«GlGüa®Ô]%ô£Ð·²aûñä^ÝøÍ…òä—:Là#& fþé—ûúRcR[– c¾ÝÝÜGLÏ\üu+¬'êÅaø§¦þN„z¦oEk#Ìøz-ên„Ö;ØX ¢€H‰¸µDmú@¾ƒKºÍ¿cŒðÙó3‘¹ú‰(‘Rýç˜"ÒγqööÅKéÕXW$E˯öˈqœÌ‚¡>vÉqr¿ŸöçTX5zSò†FZ}²®ýÚÕ™ø endstream endobj 954 0 obj << /Length1 1387 /Length2 5972 /Length3 0 /Length 6922 /Filter /FlateDecode >> stream xÚxT”ÝÚ6Ò"’HçÒÒ-Ý Ã 3È Ò)Ò  4Ò­¤€´´‚tIH« ßèë{ÎyÏÿ¯õ}kÖšyö}_wí}]{f »¡‰2åÕ@!1B¢Â@Y€ªž‰•(Š b$\\¦p ú·„Ëꎆ£²ÿPu‡‚0X›ƒê¡€{€¨8@TRVTJˆ2Qî²5'ÐÜC!¡h.U”›;ÜÑ ƒ­ó÷#€Ì•‘‘üPv…ºÃÁ $@„q‚ºb+‚A€ ‡b|þ‘‚÷®ã&+"âåå% rE £Üø^pŒÀІº{B!€_#ôA®Ð?£ “pLàè¿&(Æ ä` 8ŠDcC<¨;[`¢­ 0pƒ"ÿëþüÙ€¨°è¿Òý‰þ•Žü ƒQ®n ¤é€ÁP€†®0Æ#!!¿€ …y‚àð»u@CÙÂNøg>4Øî†A £áˆ_3ŠüJƒÝfu$Dåê EbÐ$¿úSƒ»CÁØ}÷ùs¸.H”Òïï Ž„À~ñp1CÂz@µÕþ`°&’Û¡€PFRRB}€zƒD~0õqƒþvþ6cgðsC¹`Ø1 pûAâ‡yBwh€ß:þ¹"@à` ÀêG’ü;;Ö …ýµÆž¿;Ü` ÄÒOüõúד –aáóoøï#±P½gj¡-ðgä9UTPÞ?!1€Œ$ *** ’’ü3!þ§ÿˆÕFÂP™¿ÚÅîÓß-{þáïðþ™K…e.Àûo¢?JÁØ7Ñÿ3݇üÿXþ+ËÿJôÿîHÃøíçý ðÿøA®p„Ï–¹¬ ôPX- ÿjýKºzPÜÃõ¿½ÚV ÊHG,£…Dïïüe‡£5àÞPˆ!vú‹5ÙÍ~é GB Qhø¯þ—+2° öAc©ùÛÅjèŸuÕ‘`ä—ØÄ$$ ww ö¬±+ €Ÿ(V•¨÷o2D„‘( 6€1C¹“ü:XìM&†»ƒPð¯3Ãüò’ü£ØÃÝ+·ßTÀ–ÿ{ý[ÛP¨7L27Ë…9¿ k»¨VföZ&\ZîˆN°ê’ÀpÏ<ósÒ%ÊÔœx¨byysè©áliÄø´?3ÿþň÷ƒ7ÙÁ‹iZyõÞU•C¡ü¯Ço¡l“ã¨ÔÓèUªƒD#V {k|kžd‹éËp©.ñÍÊWèÍû2»W@Ñ%{3æ‰rnÇ.îc+vÎeÌ ÕÊ8jwëtSm³Ñ+ÜÇð¸s•¶XƯ>«Öqƒ?¾Íîë}*~T Ó]%ù2‚†‘Ö÷{îPR?#]bö½F4·ŠÄ™jijc¡k÷"ž½Ôâ÷É‚¾ÖÄ~qzG}ÕàÞ5xÔ¢$¦ås»XìÖ²L¿ŠÝlJŠv¬~Ê©ÂUÁ9L?¨GäuãÓ³k;~êM¢ŠKέtqçb‰…ŠÛnŒÝ¼°’™(*f“*îÿô\EÒÁæ6³˜¿¼›  aâ¢1ÔÆÓgw^öº-(|ú¼^ny+y²Õô¶m°+òŹÏJ7œ`Ùž¹Û³“ب-qöžÊœ_]S£3ƒê´ã‹ÏŸ 4ÎËÅ7líД»¯$3;Æo.N‘oJ5cª»‰“®ÝJ6\9h’’œÆe¿”µr¾BòÝ3ù&ùTé ࣅ±ÃkjFŸã)kVou}%°Mpp?#¶ÕÉë¸ïd_¬Ïss'Þ°›p¹¥b5|(5½˜§òÃ,ÐŽ¦äу<Ø“ïq§›'õy–ʵQ÷Ñ)«vÏß±¶ßï‹cI=ö¹»'uÓ[«þÛþ!à¦l?GX!¢¼!^¢Eõc]´™uH·í¤‰Ø½ë¬áä+©¨õ¹Üµ`7Û­zý·ïeUÔÔ<³á2â«/õ‚¸eüðI£ÌÕÈN¥©É@cõ!bÓHa'XÉBQgž¾`ךóqS Uí7M·Ã³n–4-5,"÷ú}Áçx…!Òß= Å?|±4|료ê¬Ù´»icñY-D¯™0ÊêÎRñqDUUüÔ»KCõCÝ+±U;±æ/›KQZ©~$¢ ÞŒ´;´è™8%ØÇYÇádV¬§xR»«¸œìÆ?&åI>à ¿`(ŠXÕ¤HVz¡Ÿ$a{(žmº^+ k‰0ùE†6ð…Õ‘U¥&7&¸Èï‡i’¾ø–dìûœæø¶í9fK¥æôáäîZ_FÆŠJêÐÎtÀ·×}s¹h1ê±ÏâJµ]åd¥’ ˜M:¹É$õ'”qãšNÔåy†½åJÓf€¤’Á†(õÇ‹ .¸ï3øÉ¥ˆâYϳ~>ÿÖ82»5ùÕb;ÃÙÈ»~|dC%H_kD7s‡…½IXY±åËd7]ï ‘ã.WìÏÕ.Ó·›päËÅo¥^zØâ˜D“(KeHªÈS-x"2LW‰_fÄ׌¶q„Ÿ—ÒØˆ øE÷ (åM¦ 94þÉñóž·¨%¼ÈcëIQ¯ǽ5‡—¤×·;#òòŒ•~3Žw©ÍŒ˜3T­ÛöÔßßäД -úL¶O”—kS/š¯Ìð:6EÀ³šw­Ù|êËRŒfIB*DÆlAë»èžg·'ÿ]“çìÎP„¥ ˆ·ófwjMÄ£¯È‡Ú†9ß ÝîûaþÍÑjרúîQ|]ªï¹5Ä0Ý7ùÖt¬Ü¿YAUûv™q¶Iy-¥ùM;ÑQ3¢u•ocìÑ+` 7Œæ¯{…–ÆÁŠ:p¼\æ#o²]h‰òI—ÄÃ9žŒu„pYgוw›+Â;©©£}7¥ûzý;  ?}L3Ÿw×›»öo<]f|XüÎQu1ñ8ñ`öuKæ5_‚ÖuÓ(ÕÅ@‘Ì£–ÄÞô‚b+ÿÞS™Ø>÷Ñ)íÇù(ç*³=3oçüá낄âÕÓ¯¾vkg!ÔtŒî㉟7 !Q'mGíëc$"B'áJø[†Æã±L Wò}Ù`)0ÍßÃ):ƒˆê且—¿‹qþX^@ÌŒú2”iV².ßzÝ¿ *µ0Úæò ›¼yïUó¬å ¦‚.qŒ¶°§ã¹0þäíè^ëäÛ/XCÕn«¿Irs«Òà//9­YL÷½ ŠÀ“‚ŸVisÈz¦'„„ñSÜ%ü¶q¬ý‰<—`%Š•›—Üþw—Fz_<=ï`gÚ«¦þ¹3W&&Ôp7ÿ‘ëgôÝ ³í`7v»Üb£¶ùÓ5ž"ý,ͺƒe‚trÜÞ’á×Î6uÔÈcqK…{ù¾Šsj{Aòúá×Úd¬Oü28Xñ*pÌIóo=îv)ñ¿@­Ä\à|Gk­v‘Å«y­4_ؼ"mgN Û…<óSO¢,ì~ì<ǸœA%ÌIg¾¼éÄ„É>óuátqá´¹³[E‡†5å«¢lUÅ·HS::þ.žsöÔí¨êY²ÑFF4¾Ãr ˆÛñµúãg,¦É;4Æ¥ñí~L)S%u"wiŒÞý,pÕ‰óãö•»;Õ™Kìz´j —z7J_·›ýü ?ýÕCË ÓkÈ#Ì]æ©X—#bÅR1WF¾Ü¡QØIsÕ^êòJÁ…ÏmÞÕ*{®y¿2fÊbö6#¶l 7zÉ»ù¶©R.P1åþø@}éÀ3>ïh ÃòÄè9ç7ÎWò´LŸBf²w Jâ`>Jñ2¦4ò)–).~½-–n¦ŒíÂ\9UÈóåt‚w·vÆjQZç«< *&ÊÎ(p8š“º§És¾¢ú ­Åÿ%ßál»[™T|5S¼Íß² ëoèéµÔ׆‘=ìóän¨ÊyYšoöøiƩم!G«ÎHD„@yÛ„UTŠFXΛzF ‡03gêÖÉ9ºɼ¡æµÒJˆEØWžîËÙOÑmn(kÉÖU>[¶ÒbuM®_iÕê÷kò í7¶µÏd$$yÆ©Qò>MKmîÈœIÑíˆÈgüi3­á"—†|kHWŸJ$áÙÜY¾¦Î¬¡Sí#ý:ë&|íA»¨ UâCSzßÅ ØõÍëw'ÓRb/ƒ¯ÙßÁ~+«‹Nßãi»ZþÈi`|"„h>ðAIÕŠ¾˜ ¬tŒò¸'%žH¹Swä¹¼Óy¨³`á—­7¹(®8ÿ¤TïÈæ«¬£-•ç­„pÊtË9‚0•[I×£‹-iâ… —µåóØM_D„o4¢é?ã™Ù¬U†&É[Æü¸q•$Q÷:&È=H£à#_Á¿ì Š×ñÈ–¬Óˬì^“ài¸è-J½<¾öàä|6o€E7w74ß0™[ ƒ¡À=óÐô•Óq¼3<þ„M®Ñƒc»VîÛ“Ô´.Ïö¡ÃËSÕGµŠ÷B[E’48$Í„« ›„¸'tŒ&ÀŒƒ“åãò»Á_ÐÛ‹{¡Þ¨{6Ë3eìï¼.% > <Î ÂìJP˜¯ •Ö TP6V¼|}É*Sk†ɬœ.íóÙ\ìI&2Í‹U•¸Ôtw\1#ì¡”xÇù4–Û¿:¾¾3†øQêGͲµYéܧ;dùU„zžëK¼Î ˜âÐÕ%Ù—Ñä—½,››^#Üw7à f™¢\É…cŸÇ½<¼nlÝÁ0–ŽÒ¿ë|{ƒøOÈfO›èKšYò×r·(Ãè性yeg¡ñ5Šgá«4÷3î°éD9Fâ—ön½è*ݤ QŠÍ6­HLñ€Î8¸útüít>¼]=òP‹ÈNŽ&8æºê‘–¾š.nÝt`òT ªw (’HEq#dN,› ÆŽ'×µ56e»0)³ „&f#à>rg1UWëÂOåR Á.ß\ JÛq‡,«xB_í³ÑgSÐuÝ5+~5£¿ ­‹‚8/ gÈÅ)#H3n33}IÇðX¦BèdÔ¥jõ׉3 ±Ò~½6G±®Í9"‘Œ7ú¾Pæ¶ÎÄÑB˜<[áFZ¥ý¸å…r£9ÙÎ`ÏPï1Ì‘ÒPDÝíq6¤Y9zÉ‘õÆ1Y%&'v¤wÎp?îDNÅÖ(Þ 4Yük'¿Ê ñÚPd+gã’vùÎÏ<;Bèû÷$·Ò9_/Ù‡ÉЉô®ëÕBƒrgßôìLT×_c£üì´†gSäpØyýj»u§ÜnGìîøÅpZŸ>åg KWYµõhvMã½ü¥J/¸ôµC·É0Eõ³ž„¡S˜šEVÇ»ôÌ5è?G\´×Å,d`i¥Ê±‹ž†qLdCùÏ–|粈¢nŽâº“ý„i’¼þkºIݧ<Ü8+jºZ¾Y”„” ÝÒäÛ\DZIp+¼GüOÐUhï½B­Ü»:T«k‘³Ã{NÅ7šïKŽÝ Çq\w2²¸OOŽ7rï&Ocõù |ÉÚ/ýõœZ¢L6šóÂ@bÉp-Ì«Ûn,Zî³(=6Äa»>þÕñá` L½WÎCþÇ <#œå¢‰Þ›RÚ ^¹nðõË®=õ q±[Rº_ÓR‰¶$ƒjšÎ•*žˆWuŽ+-Qù‡A“÷œ•FßÙÆUuO Ž›è½Ó½®ê(b ×hZÌ"à&{ͦž¬0áß gOÑKêùëâÖ|•©õxšÐæ ŠáùÔŒÉùÉR9a˜OÌ!ÆÓ{JÖb”HïqßÇŽö•)„#¹ì¹ƒÀ惛YD•÷'I¯£UIËWª”j:lDŒo"aY¼ŽJ^6°"óŒ¡.ëÀG»±¢_·Ùl)”Å=+®÷¯dyNT±4ˆ]ó$%ñý¶nÚ´øm8÷‘ÖáöYÖ5ë,_ŸÑ¤)N|¨hł˔ÄSˆ±òg{ÞÞp%¿y …Îè5…o‰U›>J½?›Í–¿ÿþK¡[K®ì—vx×GÅAªÁÎíßrH Tùþ •X’¿Ðî±¶ó§kwƒ#=ðœÇcПŽ]aAü;°î CwÛsÛ©Ê”›|SB~ñÍÕÓßÄ(Kºê(¼ßníߊ2ê%>ñRqK\i»2¹jÍÍâ˜)Cd9žùÊ5פkûL=PŸ!x3´íæ^â¢GÚ¨D¨Ôå~ýL<5Ñ=19ßèáb ÞãÛq3î¿Xœ{]ÆqS¬Þƒ$]š$q!Ð3W.¾ÄÃDL[Ó\|šþiÓ!ÊèÓÉaµ ‚:Ϲ÷ ÀÈäKäɈC¹´òˆK˜FÇ÷>m~LØæåê9½ú‘à*Ô\l‚J^EÃG+|Üoþé…ì“ÙœØx“€hÔÌÛdŠN#‹–g¡W§ã‰wø |¿·ƒ›ŽÁ)åVÜ—KfgGiâ?ïÈïJQ§XÝ̨;»x{¸#¨,Ô^ÒˆIÉV¼|“±LfB ×éóo¾2m©ŒË$ünP”7e›`úıåº`«p¼ö̽ìÈòQßÓ³Æë$¨¶˜“EÛeWÒµåI2ìó……f9Ý^`{ÎB…‘ *¯diàÎÅy[®œ£ÝmïBUsq‚ôñòÎbÜím“èìyR4)ô~AƒWí“ó#ýé… 5ãý¯ÛIóýDcîéMèF5õQÎÙ¤¸|Ùº‹dÜ¢H—³%žÚÕÞð×>ØiT`Í&Â;S-V<»RDÇINÆ~i¹¨Z70l¼Ú÷TÊQŠÇ™ ¢ ¦5Ï rS†)w¸{EžZ•[¾çÖú:žwÕ“Å£HÒuÑ9TY!¿>ÿ8÷ù"AMðæ;èURJ´qbå«ð¸„’`Ë~a±§[($t_Y¡á\x¨†ŒÎÓö > stream xÚ´T”í6L·tH(Cƒt—t—4R 0Ä 0C§tJ‰t·€4Hww—€€”Ò¾ï{Îñœÿ_ëûÖ¬õÌ}íÞ÷¾öÍ@£¡Í.e 5ÉC!pvn.€ŒšŽ7€‹‹—ƒ‹‹‹A ·ýKŽÅ r†¡‘?,dœA@ø£L4TƒBÊ.ön^·€· €‡‹Kø_†Pg€,Ðl Pã(C! ƒ ÔÑÃlmÌó¯#€Ù‚À-,,Èö—;@Êä ¶Bj@¸ Èá1£Ð  µƒàÿ‚ù¥ î(ÂÉéææÆt€q@­ÅYØn`¸ @ 9»‚,¿[¼:€þi‹ c†ý­Ð†ZÁ݀ΠÀ£Àl‚À]\ – gÀcv€¶’*@ÝùÛXõo6À?—àæàþw¸¼CþrZX@0Ä`¶ÔåU9àîp6bùÛhƒ>ú]`{ ù£Á_¥òRšàc‡ÿô³p;Âa0°ýï9‡y¼f9ˆ¥ ÔÁð~×' vY<Þ»ç?õƒ@Ý ^ÿBV`ˆ¥Õï6,]9u!`'’ì?6"¬ÿȬAp?—ä¹[ØpþN ãáúKÉý[ü؃—#Ô`õØÈlzüÃò‚]A¸³ ÈÇëOÅ#,nn€%Ø0Yƒ!Xÿ‰þ(Yýçï v¼áz¤7€ë÷ïß'ãG†YB!öÿ1ÿkÄœÚÚJrÚ¬ÿ´üo¥´4ÔàÅÎË`çáçpsóð>ÿGþ§Ž?|• VP€ðßå>ÞÓ¿Jvý‡Ìÿ, à¿c½‚>2`þѸø¹,?ÜÿÏtÿËåÿå¿£ü_‰þ¿É»ØÛÿ¥gþÛàÿ£:€í=þ±xd® üq Ô »ù_S}Ðß««²»8ü¯V |Ü)ˆõ#£Ù¹ù8¸øþ–ƒaò`w¥naó7kþ–ëþÞ7{0¤…¿0^\\ÿ£{\2 »ÇWöHÍ¿T Çúï¼r ¨åïeãáX³~Dü/îÇ­´¹ÿEf' t<öè°‚:cý¬° €ø[ô7pZüý®‡ÓòÈ àýò8­ÀhyœÖ@~çŸZ!§ýð1‘Ãà#m9!ÀÇDÐ?àc&Ç? €Óùø˜öpÂÿ€ý¹üËpý>–áöGGy=þ‚ÿuÇ.ÎÎÎ_Ëð8€á¿^7Èd5?µ ²­ jºü"E鯾9ÂÃ÷¤ç8âCCŽÜuK3@æåÕ oNäœTÛÔÈ«UÂ=žÂ‡:»×¤\v&+ÞI‘"¤óÕM¨VæëlÞc„b×{0Už*­­†f¼KkÒƒz­>·SÉI26§£ÍéÔ…—Œõe¥6èLµ?9pF¢"ÑŸ ñâ 5K¥6—IWHMNµ(ÑÃŽ%G~Å=“ß¹JêäáÿÞ³P̆^K¢ÜÝ}â¨ršº+þi»C€BÅl 0ɰÑ!÷ôæsÀiSÐ[fsضhšÒÆØ±âñF”’–u½bï*rw"²ÌêÚÃUL© ws¦ï&¢/Ze ¿FÌ'èäyòò3w””(‰ÉcbwÍaÊÿ ªäÈ PñV­è5Ñ%¤M&å± ¦ÕjhŸxÍr[`F:GƒÙ¤›Ÿ­ûi"¤G¡ÛÎÚ›.ŒÂ+ts›:ñ±hð"ŽnžïÑèåRy Œî)ƒ³H‡n8›˜8úc9÷*öÉ{;-¯3¡3Ü'=]úƒ‘¦ a]3Xáé@WUZG ²öõGö‚§ÙÖ[µ¡>ðãÆ5I/rÆ„¢1ƒÉ³4³p%¬@ïÅlÁ8Øjò®aj0Ôø!¨ê%RØSÏÛŠŸà‡”öi‡ú‰ÁÏt+†¬b"°K|F³œ¢L,Ø‚%?'x…U tø¬HD(k·VwU¹žÑÇW‚«hé*Õßae'SgèÍkÆHì!,ocð —|æ(vÉE,1ó!¬tñÍ©lBøþ¼t=ç£ðYëfgݰšX!º‡9áñd_É:…_ã…ç“8u{E?7ÞfMѪPçP.\g'€JIF¯ª^´ljf.þzL,Ú¥ÀG†OLHÎeÈL?²3ýÚ•â…þ;XÔžÊý<¤ Óæõ½®(EG7Zðuï?’—/ºZ’ç–bv«Î^™m~‚„?Y×ͳµd4¬iU›Ò²ü%8©þ3Ð8ú:1cË›”Fí%žÖÙáÏW/þÂjkëc[Û2Vøšî´/ßÅ-¬ø¾²)`à:0[•-Ý\e vÚ?Z€àˆÆp¿®É,LUCøŠ€ãfhùÌ{С™ôƒ–•ž™×›#^ëb?ÚlNáM ‰û蕚0Œ±¶Wð©Æ ±ÙÚS†¸» < ÏØe^y)†=Év™ÑÔ«'–œþH%ÆéÖ']oxÏ{ó_Ý„3¬ÄAFõ™‰ù]”HW'¾Yæ(aæZéi‚—'^£¶ìòòPŸ!™ï¥£êá"ÕŒkûú«Ÿ•Õ<ÙfŒ7»Û±Y} S¢­ZgØÂ‹éN¤·Ùo|ùP­'(HXfC—™@G™„®3:‘ÇAQ•A|n6õUKëŽ7{ÑGÍÂǬãøcLîÝÛ$…¢r#N›qˆ³ñŒ{•0b˜ÌÖ'f¬›þ*c£ ûIoë¹eјޚqYmQŽA¡øá‹‚w±|#)Hƒ6f"Ö”šÖɹ[@tø«Õ}´ tyˆ²/Žè{‹›R ¿{xe …Õråð½óøÍœjóÆV¿Ñ^ÏÛ[ç°_ËxÏ: ØRÜÇOC4{ð¾pòÜ ´Iv’7‹v9M'-õ¤q0Þû r•=«êã¹Þ»¤møWŒi×-Bßq˜¡3Y³ðïˆ} °ÁË0ˆwVh¦IhðWL;wÚ Z¤mWk¬=‹ËV ä£Ÿè%ÃŒ…°³?ghmÕÊjœVéÛTw!Ì 7{Ëã“(Íeµz.VmÿPñ¦•‘ûâæ#ý#µ»9o§Œ«Œ—ÑñÄ5˜OSÄ¥Wå“[ó)+DfÊ×µõ|EH¯ IV±=ñ 6B'7x*´ß¬ €mV¶ŽŽ–“ú’Y¶6Åt8æ‹A$Ðd™pb6ÄÄÛüvÆÂýç=³^ñ߆aRäâàNœ° ÒópÒþBÀ#>±ò+ÈÈ¢f`Ñb0_š·-Ê @¥v8 I©q”Ód—¡~2 û¨R7õ û¶ô¸Æès€˜/Y?ɵ¥8ÁâHôžp£Z˜f%ÚH§Þ´eÕZ"Ærë½ôÖIù•>9c ÒÑAÀ•Ò™cšÔY‘Í‹†"@'›>ê—ÎmÊãsS¼Ü/ºv…ú<3 Œ›Qp»|V½—ôE¦:Öª{sµ.w(§žÂ&Õ“·Ì¢Ÿ³x*–~íž±Ï]ú –’u㟽Þu.-`ÔL˜åzÓ’2.¥fœn5ýú‡D­»ñóHpÃeÒCˆ®øõÁÛì%†ú;æñ6‰òÀ¤aâ'@nUŽj·Ú!00$ø›biÉýÎL»™µz™Õ2 –N\¥œBˆßM((EÉEŽ8*!Oi=ÉŸÔ.Žy_Kã:¦`àÜ@?“õpq¢ºÑÖ}IÜ,g#²gû Œ™*»iA*dGÅq¹oÿ«¼ÏÛÞ›€ §¨Š³är)Y”)‰™GÃø%æäb²bêËÞ¨KævÎU$'aí]*“7û$,À#˜d†´>([O "¸‘ ®ä]HÄÍËϦJ¸ìâÊæO€P-òw-ÿ‚Æð ñÖ±–•iÈwõ`´Õ¹ŸETY´!yƒòf¡È3­¥\[ul­¥À6¥ó0Çj°¶Ä'¿(®JÛÒéøt Žxx¢™¦¬'½–›$…ßò3òíe“6ÕêÒß·ªiŠhŒ6 µí·¸åŸ7rž¸JÚÖ‹<¬šª&H†ä]»u¾š¨G ò‘_²|-ŠÑ3±ïÙûã`„á+P­Ð¢3Óo3{ŸêÈÜü¹Ÿ +IJ Ó·++Í€è üv3TZ,È6±*Þ,”3"„É-j ã³É }¢ìx`ea^jX8´öè&bínB<žý>9K5#ˆèš$u®:ø¢Åú>'% ûî!h·…¦Òºú‰?“U§„S•[c8|6U%Ûpú~qƈ:Ž”Éö’áŽå»Á'6ÏOWÝž‘c­Q¨è?ò˸irz3k¿T…èÓ:ºŒÞâNZÎÜ…+ëη·_ˆ$eB™±MÒêžÀk×´L¸òC"‡Uà„^Ó­xÖÒU7´Ó+²V—4«+bÞ‘±Eš³XÈë"·GqÌ­˜o":} ¢`®Ïmý’âìJ4°­©Ö9ŸV‰¡Íàœ05ÖExžYÛžà¹K‡£sÀF¯W4.L`;¼¿h¸RsúþÿÙƒÿ÷–•ºxÐô ¦ÓPÙ¯ù¤ ;‹‘óµ}¯Ü4Lï­¯WHwªˆøØÛd=ÆÄ®2R6Ûô=xÌüYÂâB{RBBÐ]<îÁË\Ü/Å}ááYÚê}8R®‘‰ñ™+ÓHë 1zv01{Wóo£9ˆHBýÞ•}Fͦ ^‡…U⌌žTJè$©g_põ¯õšµ¯ÁºRQz9¬Ë“±ô}²>±8Mg g·Ûi 1+Uo¼ë/–U(~dš‰œÙy]qÝÎ’’k,áå¾à¿JS+¬1KÖ3“vÔZx_»ËÇÚ¾ã×Ò¾)".ñs¼Ö᜙¯g|ý=ÕŸ·œµ¨Í&©,êV‚}Q4Ež±ÿ¥Ø³¯i²`•tt×4}¼lk!æÙ{xܸR4›6£'ûxÎ×Ep‡5¹J¨8¯`’ÊÉÇÐп¸Ýq¡âaÞŒþTøöÕ÷~ä¨jÆ©rŸ…:º´KX3‚×!b[¡œÞ×52y¯yRý§õIÛhܤRÚõõ3騽”ÔŠ*k¶Ó²"/i—(Ù>) lê ðø«pÖ¬mµª´=_yEŸ85ß1;÷«BUûÕþy±o,á=4t³Bˆ ïþ¹á¸)ëŠ4ÓWe3šHõDgK"Y…i¨©q‹FºR·­Ñ¨–/%Mɪ—˱Öô‚DÕ2¿ð{Âï‘Ô>Ö€{Ãfç*Œ÷ÜÀíÛªƒYçkùjuã™vⱊJ¥ä•iy…éÍ®Á!g.ñ’â!ƒâ(†Uxœ±Ÿ)!mðâ ÿVa¹± B.ô¡ú¾2Õ‡Ñê oBª¦‰Ê&/ŸO X_‰…¾<”\­âQåë1iEn™.€ ™D ­ó·–|ú~žÿÒ£Î}ÏróV§.4‹Ùýæ xe[¿c¹}É´l6ë:÷:}¶)ix¤Þ>ð±ELB~}•&eNKë>ÁÄwõú}¿é¤©©*¸w@4ßx, p\DÈ2Ëˉi¹Tìüyã'Űó³žþŽÏ‚ ]âµ\ÀÚWèϤNû“™#=Q{ZÐíðçBWQå·Jøà+žêŽ…£•ÊàÉp_y`¬ÎM6šT»“r?JùÂä‚2º)'ëy±÷ÖFÏw’3ýN%Ò×ø“‚£º¾Í¥g¦í¨ZL}fÇHKrŸ]{²T{F-P:ͱPP'ôëþ±ó‰ßW3Ö¨!´ã)‚‚¯'}çèBLdE²œÎõ·WžO“L†û$P ¬éÅ—œÑñ¤ö.¥ƒ=µëÁ»K‰Ág¨ºê˜†]™ iÈãŸU{÷¶fÐì5ÊßÔ¢,;JBØ<ü:¨øfH‡aˆ"Ýî¯RjÒÈvU^yè®±0¢‘]àn̵·s€$ÁÐn¢Êêõ¡¼íÙï¸â= !D—lòß 'ÆVЦw&¢¯p=ucQ9—éhYžO?ÀëÑ8Šý‹ÚhFSÀnáîéñäϼüvqf¥K¦úá½>æE®$^ˆî»@hqg¾á+«iUOüFߊܭg¿ÎAêÕP“¿êÚézòá´Á¸ê¢úQ~î…‡ògÍ8ª6 Ddú—¯{›l˜d0ÕŸA#ÇMݧ~¨"•‚¼Ai‹y/8ȵK°&‚ü€8=ßKD +Á²‘8¨2±mØY r7)n.P©ô9V=˜Šóíô»ºrááEîyÕýV”sâÔ¤,r¸HH¯Ðs»†{‰Ð§:I(ûlךù[˜J 7;AUÒr;¨Ê-ŒÎM†æ˜¤_Ôµ{D§|ä…-úè.óK,,É¿Î$µXªöæšsõ|l%ˆLþfÓm8{X©H¬\Ð 1¥PŒ-ÿ~ž|ÝKT† d¯dñÚ@À–:*=“Äø=[Î!ñBŽÅ¡¥°þ0,ª,BèíÎÝáIÒæ¥"šX^4({"Žìþ¡ú†æŠ$;ºç ¶Ú°ÔYÒ”hùÅ\o„®ùÃ:ï“–lNžÅ÷a0¢Â%”sðyÑÇo‘©Ü$ZÝsgæÑ§Ý{Êz©ÞÇÔoS[óQWòÙs¶w¿ÖBfóV²2òʲÁ‘Ë 0æ|aKñ2~^.“ÉFÖ$=¨×OûâU@žáT]o¢u|ù·fÕ·‹ÐÓò4B"d°e‚ÓOXT§ådð;–&(´µG puópÌb£dt1Îù›ÓXßx÷Ywuäy-¼DB&¿JÃJž¬àneqØÁ%[29„ýø¯Ü^vj°Ù-´‘ý¼ï“|xpÊ]tMßYvu–’Ó1° +¶Ÿˆ~Ù=qPL"¯­á•müœMÙá÷€;Ê|ƒ:%ëÕµPAþö©É8ÂFº8®âä®|‹E×Â+Y™Ão3H`êXÜøázPmÂÓÊ0¤ÑrCB!)øxC5Êr ޝӧ2Ï×3ME)6\ž‘qÂM[±›*ËŒÖ3ÓÄSZž¦ÄÝ[»Qš‹{›=ÜR%õËö.je¦Ò¼6<Ç2I›^:¾Ÿ¦9ôã'‡Z˜P8¾k¦^Š<ÿ^Cbû çÌÌü»ã³”ÛˆÀ#^ýmZd(7â§÷r™¸æÁV¸ýF,^f5:V$ˆÝË~ço™íQÒуÓGÃáÒ$ûU»½Ò­/³òÐoí¯¯?Ы%<_| HÀ’F¾ÃyÞ‰×'(q›öù®‘âå³#U— K| ßÌâ‹ê­ÿìÚ¿®G¹r# 4˜tRbw‘—Tõ&¡,oJù$žk¾Ø‘vSˆ+”’yP³£ôv/Öøž;“ùÁn›£~AÔ­ØÈAãg¨g„äîÝ…×Õ“¹ç_ëæÙhj?ü'D“Øý\d=†ÉY\I¥’eʱìP!W'k!®LËžw#Ñd€½ðŽs—“g%·G´EP™ÛˆrZ#4µ}¯Ù£±Oà ¬F^5؈ˆÎAÊy£Ÿ7Óâ'¨SÈ˜×Øh AÄÁ/³Z©t*ßóÇ´1“O`UzŸ+Ì`‘r ‚B1ëÌHZí6t¯®Üs=pB0qGJÇSçf[h·Ï´*QÊùöÍ 5ãULš?{Ï)›j§öªœï6ˆSq)ö­Ðë\K"Üü’Š:jPa£G ¶»ú<]ú“PEP¸Œí Ž]³š­ y” æ¢T}ÈÕÄÚY­:#3ôÊVO°n“pMÓ¹7ÐK<€"¥ƒ¢ÄçŽc#*]¼¹‚µj^tñÚûS%‰‡#NRëÖc—iäóÑs€#ËÖ»:–«x™ð’÷b ?XØ@oc2³M{ÞÈ(–®x¯à×¶ýªÈƒ7z0ÌI!ªàëk~“CAT¼"h¼™'¥ÙÐ é¯5Ó|§”ÓvØ!Bõ´6ÆC%¯©;+â_¤>ÑÆÆÅ 2‰Cab¸×óB/)9^0ˆŒ3Ô3ÂË?ItÐå™¶1*M,{Þ”w¯PÐÍ_/^˜+Eí)T­ˆCƒž¢å¤ŒTd}¼’¤ÀQ0~†CSñmwéÌi$ì\úz4›Ê‰&6M˜Ü®LÝÍ{pÆÍn éJôë¥ìiØË÷º9Ññ§¼’ù¸v¼§\TS´=¨p¬ðÊI…7ÙýÌÁBjn9E®YÊ7ÂU îZ ¨Üè(é^àè k4¢ÜbÔR:7U³¿+Œ™ÞnÇÈ« iWð™3‘ÐkgZ·r¸¬£by‡h¨c×\Š6ûF£o1ç¨'Z+”N³ó®;.ÿ&gï{ óêýq@nC˜×X¥®ß=Íf†­öÞ·S—fϨäàvŸ ·F¨fµºÒÖ¿®86›Æ§Íma'æ¾$K'w–Æ6Ý~¼¢µãÃbz˹ñ›•´ŠÖ*)6UÅÑk±ó<¸nþ¶ä0œÄ35’¢©Mµ%«ž?ìÙí@¡Š2a›‰sëÜ샊çʬåݤ >÷Š­†–ÚŠQo>`ǬòBšNïcЇ礤¹£Xc^¯ô~ÍÁZûy­ý4[AÖÜt aƒ°*™Ru ' >üüЂõ¡öÐ'X^ºv¨¥ò"¾ 9.¬[ì Rö O¥?^\$ÕÅ;ó‰LÊøT§$ÙU£¨1A¥v¾§ŸT/¬BÖ)­æÚg·òý•ˌׄ¶sˆûÔÎF[(¼Ð'É‘ìGY•ÑÐ ó)%0~%À¿Ùð:½ó ¾ƒÉhñCc;_–x5½]°æ@egÝAh…ÚH¢Óñ%·i<¨\ôoÙë¦úÚ_ÓÌ#­fÜ"N²'ó#lã&%C 8Ož#Ч†Zµ+½½CϼDMl¯¿c;è~¾º†%ƒH9g¹ÚÒèõxâ)ÒXaHì§¡ò4ˆ8*« íÒõ‰ÜÍ”¶Á4?ƒ;á ¹ï_`áèÎù^ßH‡ÿÔ÷Úh~¶(!¾dšÅ¯ÑM`[²¤Â®~µ…¤p-jõ“Ðô§ n9VŸ¾rO=†Ž®ØƒËI&J‚“"BZó }_b:ëúÊÞ¸®ÎS–ŸLmß`+c¥JZŒNº;ÚLvðͳ+- )«˜‹Tm–û )k,å_Õ~²Çn°˜¹‚‡–õ¸óXEæŠ÷E®Û…tKŸÌ¨ç>QHè·—O®&’æÆÚÆ[Ðè—ç1d¡âðIhõÉNoÛTWk¼K»éžwÊa ݸ#ΑL @亮Ý%êí!*,VBÛiý– TѰbsµ”}SE6¢0:kÔþÊ:a;5R9ÊÊ^ª zÅNÿìû1bÙË‹—}§“èb7 dßùSOÕR6œ=ã Íøzrd„'tLX¹QÄBgÂc üËL’ Vp}ȰEDúg&ض~Ü‘ž½½!”kd`yu[W.÷³2vÑe}y³j§Yí£ZiÚŽì­vÒû;éÁþóÅñ(5Ä¢&üüy5ÉÖbôÅéŠx"¢BØÓ}Ãd%{²&ÙžvU]S+ïìT:Ô·"móµJ+Ç$§tÜÑ*%xÅEƒŸ6Üíšœ?H·1 ¢«"ï6½BW·¯·»&IÙïŸrÀÄú)^< -ê £=òÆšÔÉ!´jÚ¬‘ýNÂ#ôZ©~(ˆñyÍù@z&™?+¥‡wLg–ÕHÇtç95â=çJ{%§È›Ì”¾ÿZŸ“ýÍ/Þ@%æÜá¯Úøþçän9tz$ú!†R–Éç¡ù*Â~Z‚©»×V{Œ÷ÕZ³²,2øOD˜­×r&c¯ôûï2.orPlsëvC9èÜvGÃ…!¯¤‡áoì0ÓH{¢>X$ ºn{ùݲÒ4X:áÍþÂÌS¢ÊÔuo²Æœ‘†×n ‚}°Q‚Å|ú†„qÖqè·LAµÜ;oºd°¼òùBó9 •ž‚«®â³dIŽ®ú¾¸²jâ‡\£Â²B,÷+Ño´M*5ŸÉ”LÌaoTÎ5Aœœ=¥¨ø‚Kæ´€î~Îè;aƒDvÃ?»3’aa®¥ ’¿|ÊG·²^ƒ¶‘z¼•?ß!Ã"Ô‚…h‚9–ˆ™Í\ô÷,MS­ :BÒìì_ £†Ë|ZÖ×^2YÊɨšßBY9áSƒK. „ï›fu /Üãáoëm晢zäJ²Æ{èoCVFÎlŠQF$¼-Ð%äáU Ë w‰E2ï{§6zdÌFr³ íç¬ô\8˜”?Våyúµ¼=÷êßÀx—³Gú‚ÊèñµUÃ,YPž|ÝSúªco%t…ÖAr-·Ä–×Ózþ…ØD!4‡#VjtË.ðÙ铉ìô‘jŒ(Ë?ëO…ýçž)çÅT¢äDé| #·²ÄT$³ xVq4žßsÒck¦™"ÊBý9aÈQ»?ëW *Ã+v‹].‘EÈÿ’èæÊER¬¾éÝÀس)¤›°sî]I³éþ{Ý' -^O™0z¶ŽêPS#[º[Ì“'›4›Û•L׎áG§"qÅ~êŽ!ˆgý* ùC…ÔACµ ª‘Ž;º4lü3äwŠqÏÝ3œeWA õ¦ `àÄŒ»á•u¥rèn`IìωÜÇ-ìèê ®^°e^½É‰Ú.Ž»ÿ`Ýd¯îþÈ¢Fê8`áS-*‚ZFÙ0' œ)aÔ£w‡¼NØ žx†°”§!Ê|^q<„âmJdA–6— .bZ*<õþØkGˆ0þª©»_ Îö¼V‰î²JhŸý€ÃY+]Æsüæ³|ò\YaŸp2QÂô¶ù=sÙzà=5!ï?É»–ƒ÷¿=XiðIÀº\˜r¯z‚ÙœÓvC¥žOPã—^PCŠDN{-Ÿ¢Oè~înkÍÈä)œ¤Å¸íèà—‘ñ —gÛãŒ7¬ûªðæÔ°›ŠëoÙŸ3¢$è]™1Å8¡ïžÍËs¼³êòӢʦ~á_î|8 Á5~ò¿«à(XX·h›p¤Ý[( ÈÖôÙU•Ô+Ï]32Á{Ôd- m·ÑÇ1y‡¥½ïêA_êÞ8„F¤ðè¸ æüŠlx#‡¯Ž…¾©Þ'×*ú«[f-½K7õìzÄÓ!ëŒÎP[EÃOP7u.˜e†…GxÀ› ~Aæûž£Q«©0|ã{Ø÷L:îyǘWžú¼²LŽ£ÝëP¯øqËÍ”›~3‚1hØÞ:õã(DÏé ÒN“4t:iè“íš¿¥K¾—ÁrÀZɬ’“äkñüY÷âç^F‡"~€rt½iS.·ÇÕQR^©ŠåÕ1øæ;´}ù þuVÎD[%êJOèÝS1åþ”àT‚À4ú =>amïIÁ!úheµQ¬Fü$ç§>é]O[Ï¥òó—³ÎyÎõX=TíÇãõ tLS>i[x¼¦ÁI™·hÞqÅð` F } ·¼ƒ°œ¶u®DNèÀgVü¹b7>¾u}!xLÉì¶O{ïém!J~ÚÓMõ#êgKCíMF("üt¼ ÷ùÆŽ†gœ¢Û|Ê>zÄó/©Â“~?Îí“gì%_äVMà FÛiùò0F’›?8!×µ¹ƒÅϳˆ“i[º ø›®c4è¤|…ܼ­et²Ÿ¾@&FÍ}§©kÌb±:üE[ŘÀÏhÙ'ë“'· ý¬—ì†1 0»Îv— ´Ê:3^\7¾ÍU4sSlKÕÝF5oÏ.Ï4Neü[NÇy #íÊJò`H¸ÖœÆs-%h-(ÃÛGzh}w+ȽŸd/šC³.N²©ÿYR@ؾŠã»îÕk׌ïã`YÛq‡åÀé%ÙŒŽñKÑZ%¼,ñV¡{ßÜRµ:’Ù½m ´RˆAqê7_’l*ÄѨœ=ªÛ/AF¿~NKâÁíVðãB6eRìÜÊRjT‘}3B½±9 Q¾=‘œrú6–‚‚¹ÿ 9üï|û´Fê— †Ìéùþ€ßµ?òÇ iŽ&ó§ êÖ"ÙSí•êzlîùÎ+ÃKgžšu=Õv”–S­wâC¾¼D ÙT‡¡OøÒwÅ)1€Ž,Ÿƒš,¬ô œìoÐiÞ}¢ô”î`ü4+SànhvûuÆ©û‡›¤Í[áÅSoÏ©žÍ5¢Õ9¾°“W*ÔÕ€þ²“϶Y¤,>ò©¢¥ø™2•¤uÑwÇ~±õäüBc3½uò³“V Øå'í"x›Y3<:fy>cn"ªÐ˜c½¾)xèò‰‰zj=¹48çé7½g;Ê{ø,ðåÆ"÷¤}âÆÆæ!brá”NÆO?Az#7—.»éç¡Æ.Û1µ¬fÁÖï1|l½–Fûû¿r‘j—§>ù`­ D„Û¶Ü3Þ'FŽ/Ÿe4_ìY:;Û+zPühˆUeØÙ½ØÄ=à©ïÓÃÃj °±àP°Ôž—ëœ 3Oú2É$û©˜+@¶WœÙ£éM+šÖUÉŽ.R¹úe|9µås¤ÞŽÀÀ~òi £C™¡R„ZÇkߢêæH‚°Ø’É8IÍêc,î%UâÊúþ¦{¾y­‚¹?ŠÏÓÏ5‡‹5WÆABõØ:ýÚç®û&Áå׸lI©ž¸"ÝFðÕœÕ]ÜXYòØ*¤ñ˜9){UAPÇþgYÅv^qÓ^ر¯sÆŽSûâÏßb'™ë÷ú<ÉÅ%#£$aã× 3kVª™L>¹q.»‹õ€Ñ,”=_9 Ê„±5Ÿ,Ë©“Åë-s_ö‚{nˆÿšµ`‚£õWµV€óê~Ù\-´ö˜¡CÕ>þþ„„ôSuBŒ’êóŒï&×}“ŸŽ\pØÞðEÔ‚ZÕº™H3Èl¼eJã¬å8>jãά Z¶†íK^Žk’2Ÿ˜æðÀ#!‹{;O@[øB¹DÁ¶é“<ÏêXŽP>¾‹Œ—«ÿÇeÖyŸèKÄÔiC"‹`³T×j†ƒ@Èæ¢|àôC¨5٦׃~Š.7‡-GlWµøçN±_¢›\–¥¯™±a47ÝŸ¢ö5—FÛ#…Ó›Md:z”âõ¯륓H ®¦7ú·U)JÑJÕ–îݵÙxc“Ž–-êßöHô;y9õl“¢râ„°v”÷w¼KE¿£;ó;ßs°L ÿ*Œk^Á_óA2é4Óøº¬n)lg~£4ìSGÎ ËËä…ÍP$ejÑF>Œ JÕøèÖTÁ‰‰ ¤§?Jr¡^cŠ'-]O¯[à’ÇÍõ©¹ƒ!¡ß5†ZÐ.'Ç©3טìËØì½ið±¶(%îw¡ÿ,sáqõZ¿G endstream endobj 958 0 obj << /Length1 2891 /Length2 20642 /Length3 0 /Length 22265 /Filter /FlateDecode >> stream xÚŒøPHÛŠ" îî îî; îîÜ!8A‚»{pww'8!h~&»ûm²ÿ½UçU0ÏëÚ݉²*ƒˆ©½1PÒÞÎ……‘™ ¦ ¦ÆÂ `ffcdff…£ P³t±þG¡tr¶´·ãýCBÌ h䢉¹€ìí²®66 '/ /33€•™™ç‚öN¼q#7KS€#@ÖÞè G!fïàédináòó¿j ý_ê[ “¥‰‘@ÁÈÅh òhbdPµ7±ºxþÇ5¿…‹‹/“»»;£‘­3£½“¹ =ÀÝÒÅ t:¹M¿R(ÙÿIŽ faéü7CÕÞÌÅÝÈ l,M€vÎ W;S ä *#PrÚý-,ÿ·=àŸâXYþ5÷ö/C–v)™˜ØÛ:ÙyZÚ™Ì,m€%IyFz€‘é/A#g{¾‘›‘¥‘1Hà¯Ð’"ïF  ÿÉÏÙÄÉÒÁÅ™ÑÙÒæWŽL¿Ì€Ê,ag*fok ´sq†ûŸ¸¥ÐTwO¦škmgïnçý?dfigjö+ SW¦÷v–Ž®@ñd@$¸ß4s  €ƒ™™™›t=L,˜~9PótþÅdùEåàëí`ï0¥ôµ4‚þÀy;¹.N®@_ï?ÿEp,,SK€1ÐÜÒî·uhö7õßÉÒ Ã ?ó¯Ÿ?é&ÌÔÞÎÆó·ø_-fÒ’–S¥û'噢¢öov+€ƒ ÀÉà ðý¯e#Ë¢øCSÆÎÌÀów° *ý/`·&€úŸõ ü×–¢=hnêßc®ËÌÁlúÅòÿyØÿRùÿ7㿬ü¿ŽùÿHÒÕÆæ/>õßÿ?|#[KÏ$@sëêÚ{Ð&Øý_Q àß‹«4µtµý¿\#Ð.ˆØ™Ûü[HKgIK ©²¥‹‰Å_³ñ7ùý¯=³±´*Û;[þ:Y ,ÌÌÿ‡Z.kÐéá É¿X@Ðîü×£„‰½é¯%cåà99yÂ1ƒ&‰•ƒàÍÚFS Ç_C `b´³w©@ÙùÌìà~µ”“À$ò‹ô7â0‰þF\&±ßˆÀ$þñ˜$þE\Ì&É߈À$õ±˜¤#6“Ìoò.÷¼ËÿF ï ¿È»âoò®ô/âyWþ@ÞßýF ï*¿È»êoÄ`Rû@±¼ÿ@±¨ÿF X4~#P,š¿(­(íߤgô/béÙ:€¶ç×ø¯ ( #gKKK'WÛé,¬œÿ0\,mLÿÒÙY‘Ajélý»¿Œ¸ü¶ òdü4ŒL¬mŒœ-þ°Ïþ‹ìôTc'#  ÐÌå2Ç?ä¿wù_«,“­.ÿ‘çaû—þ@…2ùq€B4±·Íý¿‰±ÿ¢ØÚþ.د…`ú])6PALímlþŒt&2ý® h˜€ÿqÊù‹ïè :XþµŠ´6F”šT!³ßV@f–n˜ýŶwýÓ-HÄü·ßü×½üS”Îïj³ƒŠháé`´ûCD³ü‚‚·ú‚fÇúª×ï$8A…±ùu.ü惪ûGF  €é·+6';W[ã_·ù€n"&ûß1‚L€Þ*°Ay9üfƒL:€ž vÿi7;Ë?Ôÿ6tË0&ô,øC”ó/š¥ýï–²ƒêè`ãúG '“ãï<!W ó_ä¿¶Ùí]€¦Æ¿+ºÒþ&þ':6ž¨ÿŽ…dâ^±€êó;’3ÐÖò¿ãÉñKèöGÙA9þŸbEñÛ è¾cr±pþ1I º¸Ûÿ¡²áú; ¿`Î&öN6Ô|·? (@÷?dÔãòêù5ÑëwÌ K^@§¿#øÏMbâêê¢Ë_—=èšùþëízMàVíMøB¬êB:~Öˆà»3ìO ÌQìk¤Ñ0x¯8}q}@‚þHS´åôCäãH/Êúžõ­ð*ñ³÷iktX[Ò»öGŸ'ƒ•™ýv¸åi¬Á©‚S‘úBX5áŸgGõ@kÈVð.YŠ\GWn$å|ôŸîýRõekã¡‹ûïª9åàŸÊfbÞGëÏSäg/àB¹0ÂТ]x Ïßþ˜CË™z%–M ƒó=‹a+ôÖÞf½_ðÚ¨PcuîÆ%ÇÕÆ!„¼EŸ¡ô=J‘Å^ò.)ŠÞXúÄLö5>@ì3ÖEòWG^ ›ÙÆi…GjœÜ·½ž)P³6k_ÕжÎái ‡ÎÌÝ]R*_©¥¨_ÿ`8 ö.܉ÎTÁ-ZÑÓû`gåÍ­Öé­Üé·º)¯Q³]X¸]ÌõfÑ ñç0G_ (‚›înŸ«ÌRòZï>«©3‡9Õ/ƒåç®HpÐÓ‘QÐ 2š¸(FnkÑÙua«yÚÁ`u{htFpW%߯1:^¼°Ë×Nã–{ôrw'hô´Iž*’á0Fk&¶2Iø¦Y”IŸÄ•S°8R&WËû“LXvÍ´Jx¦]ò |B!ìð®Ç ,ïѕ̜®îáT ùHð4òͼvv˜‘KsªA¤â-F¤4‡Óê¿vÝ`ÁQA^Ø@8¾ÄD¡ÎØ$enŒ |/ûÑÂÝÄè¯P)È8ÖfÍáŠ:•YX¢O#£WÕ’½Bæ*ér¥õzñüªsÊA-ݯÈq…·e»:ã}I+z5d~iãÚs=ÚËž£ÃÕÑuaµC”â: sÇ`™”hûm |¤<í”}ï};¶ºúfŒn­ ž'crWǤ‰7ìbôO~ºÇÌ)4ÏÑzض,`hU¥bŒ ž­#2:í£WÄ;˜y3‹wûp —ægóé0UwZøLM3þ,Vy³9R#7i›eóCRc=;jcÈ›¨9ÿâÙV²oã{9avCjþêBú[¼¤œŸ Vh!—0–—Ⱥ£’2R$#_ìF|´ô(e¨fí'>ߺğŸ0¬´4o%–\ˉ;>s µ;¬Å‹ÊtíäEª°žJs¹Þ}‰ag6—NŸ_`¿pÕ9Ct×úÒ—’ñi?›µCÇezvd4eõstC–ÅMzd‹qÖÎ í !yœé`¡a$9@ù‡ÌÞ@Ò ÜËRšØRŸ÷3ßKO£Í°¡îËÑÅ \~¢Ì›¦öç TdfqL\wøÓá7œ[qõPœZ ¿¦bí¢£Òà‚Ï„©1M;†ã½_Ÿ–<®½‹oeIv‘˜ šmÞÈFœÉÀfÁíû\'©¯"”Âý1ûª·È+Z?‹ä1‚–ÅÜýîµ;©(7§…­K¸|W·†ËkÍÈëd†…à˜&¢™q;ýâ:0JÂ#H‹ªm¸ìî„#\ÒÄ_ÀΪ“u÷ËÔ¢ ÆQ¼; BÌÓÏñ#¶ã½°¬ÈÏ–:ÞØñ¯ˆf‹y¥ë'QIû'—E%fæg]yü–—ÄJDÔTÞ¥q ucHîå/ªªÀL*nñ×˱üÝzÖ©Éî_¢;ÉÊÑ…û¹˜¶„oèúo‚{Rϵ‹r àOW^©>ÆW†"+yÏH¦Eôídj >þœâãØÈ*P¶™¦ËU_õÚýœ˜i‚E†cȦ¯†—£ìG‰WS³×sR‘ w§¢’Y&V(öF¿šã™‡ìFäÛÐè)ùáú͉pbo1µÕ=dØ‹è€T.ƒSâ¸Z^èÇ,-Ë€7È!¢ôÖÙ%‡”(þ“夙®—í+ZÛ¥†ßQgô ‰À¨?VÎQAÙ¦?ÂËQ!ËíÎ!R æ fIl++Òó*yGª²I±ª sêæl 1\,èciÆP¬ÝúKb1:Z¤õ½½ÓÂϹz´ 2*+q_Q¬zï0QlXYy³›¡ÀS õÕCÖ|ÖØd7a¼Ã¹?pTm6¬R¼Ò8h„WÑDÏßr0Ͻ=Éðõ¨ ô t4Õ~¯á¶…>T/‚šZœL¹tÐækS>ꗉīػ¾\C´‹{i?–6T%Dá[HÔoʵXZ~”Gä¾ïš©(a:Szx«GaHyFàB#7ÀË(vf9!Ç“ßå!=À€î¶+ñ4ÏîaÀA¾—»Òö™ÑOó©Øt׆ƒÊxÌxÑ>Eú#@)©æˆ{`VQÑîN»_êê-´£ëQóPí¢B2DçMùãñ¼)$#´ý7?Úþ/)h;mÈ£]@ ‡Ÿcp,çu¾öÈr`gÔ)ß½Eð¦ö …¨ŸÇ|qQ|Ю²ÐÀÐJôgW‹©WYºÜrÀ5Ÿ–E¬âIÔß\[sœ RfjåY­¸_‡Žù`—àd‡º‰UG)½ö$ßÔnÆJïÊB+‘t—¿x æ õ}–`¤áþ,’åbH—:i²r’ SU‰ì…ax@âóâ_iD[5azø>þ 4 £‹ …cÂÒK8-3d®ãy@[m@µàaˆ"æÐ{ضAâá¸m.äþ%—&6Ÿ˜ 'fÈëV‡Áå—Çenè­iŽâò_:b½×¿Öa$ ›º'ãû,… Jɾz15gISuj“‡D¬€¥/+LpÇlÇÆ j£Œ‡Ç‚ÀðsmyWË;l¢öÝ©ÓP £íY®³‡œ¥«Ù<‰Ùù² 6k¿: ×x·;a÷¼×~å‘(ËYœ—ªÚqM`çYÜ6´Çuìœ` *Øñ;FòØM‰Sýà“eÆC¼T!Ô­yÉè:,êa&e,ñÄè®Á÷ø!Ýž¾»PTÞÚZ®ÑšÇ ÆÜü‰ÜæØ§œ²?`Ia؈öó<ùÂ.7²õ&Á3®÷g&Çþ}MÐå`TÍav-ŠÈÓé“,чE›ƒå/Ð%+¯êë¥iŠ®Pt<¯«Èì\¨QžRÈÔ3½/[[ˆ%ˆ½Ý‘¤•^£»HöJ½É>&Ú/^¢ÁÂÍÚ"Ä÷ÛÂFŸ)ûøÆBñ‡‚¤“˜Á_G µº?|?ÏZÄŽ8V+2m°yƒ¾ÃóþYòD¶ZˆMÇA¯~õí¨Ã¤EôrOîdwbÉeè{…$¯¼ÃÍNùP¡ú€ˆ$ì'^"¹(¾ªÛ‡ëkRSŸ67¾ëòµI#ÀÙ î@™°†oU{kNBaä²ñncî ¶¦ì£`¹õmc Q´ÎÜ}4‰Tíêxeä'À>øF·,hRÄÏ ­>À„ôŸ)…pºÝz¹Ä ÃF ÀZz4˜ n:­¡Q:u "Éœ@¡ÅáÆ­¶¢Â"²¨ž¨š¾½ÃÙ×"?ÿ`HSÐ[y;Ó³Äû6ë¼ë#ªüO4½iI™*5k‹L+sãOÒI¦0ŒÔ¼p=»ß˳£§!R) »Ên±ü+õ½<èW½õ'Lôœ2w9í«šCó†7+\¤“ÔÖÅž§–•ø¦wõ¸ïÉ1<[šEÃíå¼̺›*È©’?|ioƒ)îi£ÐÊ\Ló±2ÅÀ½LšÚ3Šƒ8¤ü&ü—{[>'¬Q„ó¦åhà‘{zÆÎ^T]üûSF" eé‚ì8tpÏE®[²DjW•IÒá˜àÜ%Z;ÍXv-èÓSÞOµ È?`>¹¼Îú*?%»ôcæËzÔä^žS!XÛaÄÖõ5tÝxÕÁ Ç'n,¾¡8neë {úÀÕ«»àdª(KÜxò5u•þœ+Yi]Q_ÿöªSɪ+õ ^ÕÖê]´oaÚ¹TaA=5ЦìgZÊuÏ6t™ì¥–úåX&wÃY7KÏ3”)™¬< –ºBð:é@¦qñø»$‚ï­f&ÍÓs9N _ªáùÍmüb¾§&phUËM ªî_êšÂ ‡@s,H;o=Þ®cž0]í¶E[«l¸˜õO~΋Z‡âçˆëµmÙºf‡Nr>ú*ãJ0ª7j£.´úe °Eªç7œãæB5೫“ÆbÔM7ž\ì !!–ڇʦÆjôPva¶úhhS߇œLKËÃŽ„Mr™*õ}> qÔˆ 5J¸Â­^¯ÄþÄëŒMíFDKªÀ?E”æy¼´kÅ£(£û6m#Æba™A7)òþ«<‘ñªÛ’é· úEŽÈüSÔ߯ýz8¤ºáC€Ü(ñF“úðøÄ°¦©t6åj¤ÞD–œ5nNêJkXù¡0àñfP)‡9AeÁ[æLéíy5Š3ßçÞ³ ]™‹c¼ ,Ç s€óÕ’–Ó º§ïœ»Iû®¢òàXpÞÓEÂ#ª¥fŽ’öjªÖK-OÍ(m2<(<§|  3sÞ<§¨}þåB³È€Î%™%•FdÉ{«äç÷=“ग़܄ò/eÚwc¥©ªK*û¦´Ä‡6Šß°—ãŒÑ­FÂJ1 Ü¿¸ Câ0oá°tÙö @2mù¿»¼©w5»Ù͇»¤’U|“ß¾+4‚îhUv™N7{š1WG÷©)Omh†pÚ)·½”“Rz:YŒgÑÖé­O—SÚµÔ=oØ•¬ÓKÿ&u¹¹”~oC½_µ‡ò1”~€Üîæ<.v϶փÖñ±$ÒŸ-ÉäBfÍ\D©«[¾¨­‰šc_íÂÙž²¨véÔ>}¸nýr<~òHv&.B&>b¸ÂOK¶Üƒ±ƒãQtAÅ%LüÀÔîjirà<ñU6ÀÎDÛ§©ã-¹Ø°Î ‘eäð"~–ôì±n»sÍG$ÁKrG‹ý‡ô²*ôhšìNñ§c¿W Ьbc.T%¡¾Ë>Ì÷°­Ö!‰JŽÏB¤Ÿ4ö}øªd8Ïc ’5!¨tM#äîoœ}Y£q½ß‰Ð¸ãÉž¸@knÇbZ²¹F« ±A¨e:r$ûù>$ò³>vsá‹ø~ÌIÇ+”לWâ<|dB¡‚0ä%žš¿üÑÐÕPBÔŽyÉm-N~+Eÿñu\ÁÐÓWê¤( {TˆÆ$qýíæuJÆ+׎< ·èè—XðÆuû[¢)¬Æ×p78¹æU¡ fmþ2ÂŽ+ýOö;‹ß“ù5ÃM€rˆú~CÛÍt°$HÛü¶R­n1žæÌ<‚Å ¤D,ÇEßt+“2MªÎ¨#¢2jÍÑ ónWh+À£ÆŸ”»ü(g9alòYšë1™yªöþZÎÏŸévv·Þ²…5îµxÆÿ?v™2<ýyŒgÜ j§14Ë8È¥)}4Üóxºl1Oý  §‘‚Ó»8;/øycòê­?±rhb³-¡¶ØÈ`f¤Ò§ÕÀØSæú〣8ì¶ ÉÅî6¨}ÕZŽÉw ¾\A0óƒX+ =™´Ø-2bUqÞ,í¡"‘i[Úõ_¡«p”¨¥`àñìÒÐ8÷ˆ1:âòy,÷8¶ŒQÅŸïꈉ¨Üå{Á÷éÑê¬H?ƒi¸Õ{*L›¹e¶ÜPÒ/„JCW…£Ì4uHé™}øÖI™TªÜíÑÒ@)ƒ†“‘þzZg)@<–š{äŤã È ?y\|3£×w(cãVå©|³òd=§Cä‚Úæ5ãþ•oÆ̤'¥úXA•û Í;;i![«B–ÝÓ¹õ‚ŠÜ‰.Ó%ã9쀋&„fË–2J^cüÝ<âž÷M]_.Üø9BÅQ”¹Cpß«)SWý¡“[«“ÊóY“Î5jøÁùÉðÀ2²èÅ>÷¯+ø,´=¬(mTk†¯¿Íî ô?ΖX†b\_÷‰½gsÔ[9ªzØ {V9H‹þuÅíæÞ2EÂzƒƒ÷ñÜ ¶PTàe.U¦D¥ÀNÃú=6é’cë‰l ¢+û²Á-XÆrt2(×!EÖPS9…¤>‹8#÷öËÓ²×§@6`bEß;3.ÅÄU@Q~M > b'núŽØÓ]j)N½ð.ÜÁŒ Ç û]ªöP¡?ÅÐì{¨ü‰E¬ ì0ÊMŠÊÀë’µç!Ñ0ž*š–=/«¼·Pðí~ÐÁßÁRAhòo·÷•D¼Ø[—ÆnéË¢]C°XL„Ý-YúÞª5Y°bÊry;ƒ[À«nYVmÍ„éÃ[hR„ô!c´}ê˜Úý¼¡Œ9(F®bcGYkƒHF¡¢…„®â¹ÈOÍWþneþ±H&KRгJ[ÆñöÄÍúüM GKÜò Ú'Bx8ñ /·4 ÕæS•S0*;WˆåÁ)‚ͳÔ䉞U4ØñÎj+‘ {3@ÅÚ Ê8"ÕÓW‹ÞÜÄc9$!ƒžÙjÞ³5ÓYíÙ/ŸkkUlÍÂÉ0n’¡ Jº>)âŠ/=Îíuó~®§&ñÓâîdAc3_ÑÁF^ [1Er+?·îgç0cÎÒBð$ÉRÖžÿ!ÑëJíÆëA5Û8ÈŒt0¾¶kÛaR‰OæGû`…W +¿Ü9Bþ?o¯›u˾ɩ†›ÐËÕIe…ÛŸÚ0DQSX*Ó0©~À§Žçlγ/RrnÛºÿì­rvØ@4.ŸXÿæZ¥HÉ#—'c†#n6Jr>Ü‹Ùö³nÛ:‚ÝP3Ë竦*ÑøÜ·/î»Ex›5ƒ!2UWµ'é»á½‘¡i0jñxúBåqË ŽøáÀì2æœ÷Ñdu½Ÿ–6v\#’§%Ýó=ßj*i•÷Ìo®C'§Éô xqŠBÒ RÈä öo÷C?þhS&ý5פ¥Á^íÛÒÒãA#Ž¥ÎÕùn¼X*a®ûå‰ÝþÛ`8ž fƒ¶¨øù¾jyµçð6ÏG0ÇsO´ˆø¸ÔŸç¤óXU¢Ž²¸–ßz]´5ÂʱI¶³[?#ÛÀ‘|?ø ZB÷àøÏ7Úå:óó=S 7üF u`í,›s^öž4X¿c˜ÎÐøãʉò&•ÙUf11ìu^Í'Oc/¼Œ g)ݾ<‰H±j!7é: ñùéÙᘜød™/K"fµ9Á­xEK¼C¥[QZ¥»Ý'h=ÇCtÖ°p§¸œìÆp\Mß÷c´…*á¿¶%=& öÚèÍÙÕgœsHLˆà=7ù“¬t’¾ps3UÅ%U‡y¬2,å À!;xô7~²WÐùØùÖrx@ˆŒ_²÷—P>ž5 ™l±bn²¢Ø‚ûê°ýWù{<²7àdrœ î†Å=„Ø:9&ÁÕOTðãŠLmœ˜æ¯ÑË¡ó0"ŠÛ ˜'¢ýOùFq[¥þ@“øî'Ò8Ë%Nj%¦2¡ïtp›W¿â“ÄÌ,œ˜rææë‚s‘Æ}½ñQ2ü¤Ü]ƒøhãW¢(`öÉHWo%L"*.׋æäÄPPÁ¬8¢OmJ1³Õ(¢;<‘Í¡ñA(;÷4ÔÜÈØ†|»£¼èFó‰Ý8lÑ7ÖBût±\Eˆ§Å¤ûÅÖceî­ù#ÌŠÀÛZ\’Ä:óS9)ªÃAëñ|œˆ Nƒå5^ÈuåÉ%TZvÝÇ<Øíeöº^ÕØ+Áz1ð˜§í£·^"Ï'¶#M^žš•üSZK -ÈÌæ‡<&ÒøðÃwÉÖ\?†T÷U“À?fø¹a½i‹„÷¾+Ö<×m2þ5.¿ìGœ«i÷ýE&ÚDu³†Ü)Yfy,›^ËV®f.s¤|‘œ!‹èç·æ¡sWßPör×qeŸôòõ°În>¤A ÆhF«JìŠ Œ¶>êç>Zþølå«w?D7>c?ÆÌ!gBB«Ó¼}²FjNï\ZÒ'¸ïy`[$‚ž}oôÈuQ°hÌ[Z(Â@Zy!?Ãqo3]œê‘ôÅh¶ó- õv™Imú¹Æ#ïOÎFþÁ8éË+¼C½É(þïFê2Žx[·f¡D?‹sºÌð] V‰Êï0¤Ç¢º¥ÜzB±ýȈê{Zß"ñ&(#1íiÁ@ï¼P<ÏÞ1?«ˆ4cŠ{ÑJ%ÝŒñI9,­Gm” C›ì`ØlzTÁ–u]À´™Q[3›ä)#HÔëQ‘Rüö~)­þ3[9[²Œà°6JOÜs)5rLÀáôÛwì! •/›G¾_‘ùzÙH(³ÙdMqM'¯¸¢%võª1†~¨šU{G!—®öO;Co¿FÄï1IS¢èÓg –EG0‡3šý蔚ìä!ÄÔCŽ_F뜞åÔZC™7Ó)‡¥7 6¶÷ä ý•Æf-˜£Vã-L²RS†…¶¼w5öñõŒnÜtwñ8Ù{4/h=YL8Béƒ4©ŒÔûuS ß)#»K¤WrcNTÖ1rßÞu›Ž0%±—îìñ4n ÿ6Aì“ñqq n£üïFd¯À½Í‰¤¨ÓŽÅÛÔ‰¶DÃTÿ|èNÃæSäã͹¾ý§âaÑ‹Cê<­Ý– ë’ º‰ï<©ý+Gùåë­äôìÈy§ß¿wäÝ‹ä¼SUÍÆQú 087¿ÏoÜkc úާÀ€òêX)£ÏµîÐ’üø~‹¶ÿhÙ^™RPzŒyÉzµDaÕÏ+rD·½àRWòóPÅ+£vµÒ·ëŠ˜Äɸ4‡}Ga1÷‚κ,9s¬Òí0n/¬ŽX»ÔŸ\Þ÷À+¤jÒbj·&Fe¢1Ó°…§±NAÔØÈáÆƒksu8íhѨrÚá0ä?ÔËØOáŰº…¯y”ð¨…%k YHÙ}7¯2žü¨+Tü±*¢&:ÎgHÄóÛ<Œßðö¶`\b3Œ¬JæÎÌÍ´¨¬ßéa&#$·,RG*ZWy’‚AˈƒªÆ7Vƒ‹γwÇbäŒÛµ¡ŒXš f×—ýæ¸Ë²ýŒi´ýüXÃ"aZ¼‰°éܸÏd=®À“FÓèŤ5êtdpÿî4 ÿr“T--´oió¶‘KÑG+sJ«“2Qö´ÿ.‰ÚáMcµÜUçeß¼‘‰Þ‡ƒU1ã“â<ìNhÝàÐXüJ-l®¥¡ùk²Ç ²/¥nËŒWUÊHü£‚’QGx´˜o#,g7Ì6ügÝCN ü:Ç$ì^¥I LÆ ¡J |íÐç2»l„™x)(ß™ê¸Åê½D29¨ \n ×~@×—Á¯³ñ­¡5bï>–:ÝŒØ"Ïnr® í`öH³Çøuˆ…ðé û]~8†È¡å2„?+ Þ ]»óÔ§E†c6¥‘T >Œ0èHJ Zj#çR/3[—O²²uÀ#R«B£~ŸôLâµQ®¤²dÔâšr}—À‚Mh“âÛ9iÕ#سG Ö-áÿÔšy1(@°Ò/¯¸¯¤ŽÎéȬåkwz.Iü19ÉÀk6^3NWOH÷&%¶ö=˜Ä§øIœ«È¯³f³^CHT¸Toañ›ã9¡oh g‹+œš¾“j³0ÕdIWˬÎyuÔ ØOÑ#ïejÁH^?$¡r'4~ñP€ö( —/çq\%áÁ…ò ÛލÛz³Yœnÿ-Lrb”? ÍfΙ“ >ñh5|ÅüºXD}µŒÈ¨ð‚gª2:yÝÃòì¾é°x¹ú“6¦‚ZºÉÏã‘c2¿=Ù$=T2]3²Ñ[ˆ·º¼•|[ü8S V͹u\H×í»2~ð ÁvÁF¬êž&èí…¦„^ÛGÁ¸ÅƒF´ã«ñºZ3//ïCüVq[¢*¤¬oÈ÷œMêÁwVë¬C!âKKŽ;÷÷Y=ëÎϸʋ}  ÁŠ“E» }° òµUIõ]pšßªÁ7ìDfBcç/ÆZöÝœmgŠe¦¹Ã0°ä0C‹t ¶ðsÆ=5H™` ¦uHe޾9Ð倖D—ÙNSÃiïÙô§U‰ùy·¸w'ø`.‹ £ƒ}ÜY r Utž0Úëj¿­Ç´HóŠG|¶öÞG1š=^@70ß…¿k“b¶!„AþëËÈ´¹áœi¸··Á¬‘h•σ@}Ä÷if$ç¡þ¸”ÐÁ€œjõGÙ`+:ægSŠûe¦yBþ"år…?PµUM97ÝRú à—½{ÜûH;ja 5 6f¶¡ËJVv‡u!>R4}°Ý_ó¥iSä£÷©W½›gä¾A—Ë…‡ª°µnÈ"/>ã›ÚãpÄ¥ïîÔ@Ζá]>´GZòà5øª–ø¥ŠZ©1[ã«/¯³Í52}oi¿½Vvø—@ø³÷µG(öœª$“°«ß,ù¢K©Ç!âD¥ ƒ¾‹¶%Ï´úÖ}(ËÏ«hK/¢@ÎiËrËÜÚÞÉî/8ã䨆 qßX²µ£§½†šùÑž[d/Àçu€Š`÷B›~R¢Ù8?(mž>é{[[Þ‹ˆZº_)—S½ú³JͶCñ›ëÄÝ}e"¢çÝA9é;7\ "—ÎÆÃý}]µ êˆô$Ã’FFÓ¾ì’fŽÏN¾'HÇKúyh««†’¶´eÐèþ"¦ßLÒ<•´ZÝ‚Oej§Sp°‘§f%<ãĈp«Âì—+B?¥õX\£mÃ>S¸V»ä•þÉ"“³÷™jó+zëóƒ¦4$íjQ=²yë‘—óKù÷É­Ð;ÇQU4[_bqijqš]'ç ‚¬3ücøÖO·“B¾uVê߯•k8¡\ëÙéRö·>®¶>ÆIå(°à⇂ïðé¡z¾{~  zP<~ ëõT1í®hÞDüCÃàÀÄr(~ºzT#øód²å¬B~b9,CÕÕ@Êy‰ãq²Þ½m¾¨l‡ö"Áª&Zõ©—ýBbñV²ø1›ëû T«sk‘¢Û© ¢fÕ›lÝ«3×«Ý &¢Ù‡Õ(òGiÛàŸ‚èïð­¿rve„hcת{³ù.#i•ÒŒžè¡‡á6°NÕ ØÑª{îÑÅÏâ–)H5‡ÔœBL¡¦O§w©î>Nœ“|= 𤋮½—ÁI¦Ä×ì2ÊlvżòèýaÔ#D²ÈìwøÃÿ f(r·Az|º¥qŸï²·\!g=#îSîºùØ0^c¯,¸óìš•7KxH<Ø~¯²‰莌`"œUMìíI¢è³ÍËyJ®¥–Dãn®õ-?ÿC[—=|æíÌÕx•ÈÊî¼bíÓH¦aL ‰’E÷ìe¡‹Šæ\î>Žy/©!}õ4WÈ;>[BAïåÐuÊÄ*¾!"5é\¶˜ËÛA™tmå‚ë ín+À¾þ×:Is,hVy+}J‚Ãé&¢#‹}Þõt=°Öµ@DêRIEÝn‡/3Õo bk ¡JÍfP7á &ÏRÇzw²œ>O\ÏÖf+Ü 8}îs’¼‘6ÓWFò)'Ó“‘̳ZVQÉÂ$¨"‘„ãïXh^ qªß÷ôKVzÍ7ÓŒsêuÏžkù„Ýôú?éK¨³JìàäI·-3Êû†Ã:`…Î_ói+[ÖÔL¾…B:Ò öÕï˜æ0ƒ…“å‰Bådÿ’),¡¤ÿÒp×ÀZº„“t øÁǶ–«uNƒ¬&Iw·Ü›\Ö³Á'âÐ1®(;EáïþøX=Ú¾-;‰eyZ´GD ôk9.Ø'ýwž·“1œA‘ïÅyêmC;cÝò"ÓGD¢{Ñ£>™×8QÈhlj`"ý…w¬L»Ý@FhÞË {JdÕ¨–U]Ëú´æËnŒá»{Å….&tG‹P0%=Ô™Oi„ï^ ä……>‘õÖ/íÌÆúñ9:V¾¡×iìÀ.ƒ+⎩·xæG¬×¤Öž$2Fµ«ûž»èl<±xJ(±y<¶u›&Ûa1÷5nð9‘œŽ%{Ó¸Õ<¨-b®«ÑóhÌ¡N½ÄoSTº\óUQ'”ŠJª<º“ÖÈÛ'Œ®‡sß5ݾ¤›d¥ÙJŸøJÉéiLâ]L¥ê6üÈà?N¿E$êë@¯~ˆÇ\ÛA<ÛØ-Š0:ÿ‰EŒ4T¡–K5»Üç$°Ê¶¹Ï®jÞ›Z“Lé-à ;ºÜÉÂg:oŽ×{5—Ã<¤Ó!䝯ED1 û±Y<*Þº?D/4š½àP‹–~ãñ¼Lù;KÉK§j\¨êníÚñØ\ yÔÔ‹‹dËËÙ›µ9Ê‚ÈâíUmÆš¶ê´äÆ %sß#¢ƒÈb/.«íVñ³N% ¢Ð8½|©á» øá bO¹ÀTcV6ír&ÜãY‰Ik¿…jŒ.¢—ÔmbîDÔ¶·l–)ÀénÍ> êú)y·1ÒÎÇ+×~9š¾¤ã¸/î½ùˆ$}ô•FµÑèPâ0`Ï:õZ¦£4Ò~Æ‹E4'ByêìB¹ãðïÿžQ¸ìÉiiIØ%*9wÆÙ%Öäçj >ŠÑ†_Âߘåkz˜aÕ€ †½ PKúaÔl ̹&Áæ1ó£Üc®ÖmT†r;®q‚Wº‘h …åE’Iz g7þgú=N>íöÑØÝQæj9Øü4¤gâ§’ck²O?çj6È„©mš–ÉùQÉ$Ä2OyÆM¸F.T …ðL'2¹BÝJõú`…9=Úél“M-¤ÑñbÈ J— ^èqê •Y[ Éï1ˆ d¿ŒÞ°IxÓÔ‡CÌ–óÔv3ð,åº5¨sXµjsêçÁj¥C9\—êÁ<±€ìÈ£«½¤õRx2´P«HÜŒTëŽÎ‹mZß>ðªÒ`|ß§=¹¸‹¸YrR™ã·:Ã%µ¤T÷zloggV±ÿÑŸ*ƒÑ2•mX¸Ãþá¦E´Ì>Šz8ÛÑý¸²Äå. íô§ÃÚwX«½ÇÎ[Û²ìxΙv™¸p·ÐÂ&b²22~¸GH@8:[AEãÝq²½ØhÒñ¨nÙ=øJ Kã\ ö Ö-…brK‰B‹Í6¦f#:?ÜwͼqJ>«Šéû f½Ìx0Ȧ±Ûµ‹5¶K®<>!’m¼¥lÝó+e$ÕÌNáÕì ¾bÊlɻ뼰úÀª[ÃÔØk£Y€£¢u¤Û6ŸdEA£ “Æn aîjZwÙÀMÙìsY³ŸÓü–á‡Ï2·CE/ãýõíšG÷‚·‘‡F™Ç…ŽTõMRù¾E “˜Ó_¤óe \Ňmz}¾Œ ~œìB“‡Ç«22M€ÛïZˆÑا•ŽÆöõ½Ù‰½Æ„±Ç¶µkÉ~B•¬dH̸© ! Ç1 B öÓ7 HPšt—mrq0"Î|®°¥óÞ-"ÝÂ}êP ÚP÷y¤ãh.­§55½L›og%®cññ ½J¹‹wðëLO»8v„­*QîÚ¦@¦Ûn:©£Œ&ËHÜIL€Cö+-IÀÐeo#«”ïÀÍ›ËÝ2Øk`‚FÜÔgýâ­/Y¿G7U®y•ìtpJ)f”Ò {fEN·©•fÅaŽù®#š‘2s⨆¥EEîöc˜„ u&C)¬.Ü·ÜK'ż9Á!´\Wšë—õ#ÃÈoíÌoeQªU¾dEXo¯"ÀhOvhGñSôùÚ O½Pprù‡ºðœâx(&¸Ý€-œ?\Ìܳ¼÷êk@õÂÆA@ø¬w“ûØÁk4ïÕˆ¹ ͼT•W¨54ÀbxÁÆËg±•`û³ÑÎf7[KÂéšUúGþZ!3ÿ¥/p1\ÿ˜?RÓ´¢¯{q4 ÜÇ5°ÝÀÿ.V²Œ8>ù)d·Òè^'™…ˆ‰™o´Ÿßï­¨ºa¡FбÂRRåÌPZe„IóÉÕ–üødÈwØøõ6ˆÆýÙJhúàTáœî±#¡}¯/… u! wÏeo­Ãüêç¢æÚtÉH9Äãg£mÐLu4ƒîŸ€L1˜t‡ n™_Ÿ04|;#†·GWÝekµ¶¦°®«¥Î7•óé¥"!àKõ¥×°|°®H¥FÕ~Å,B_$‰œô&“q[|Ëüèi…ZàU¶Q}r2Éuú¨–ã½tqÐd¾àï™5!]œæõSÅIå¦Å˜­žøD£ï…w&ñà]âÏ«sšýEð17Æ ›WXú³¶]²U‹z«@wTeU}¤×âLB5d…†îÚAºµÉïŒôãC³Ykƒ=s½íLÄ^:••ë_;™‡d[öÝÓÀ÷¯òòÝóÆ_Я)<ö:>°)KŠÊè$¢¡ãÓØ¹+ÕAy¦lÒÝÖ®òĈî¿ùjJnå¸\îî+êZVó “Mο•MÍQzÿ‘F\{Åð̱¾ëȲ†€6ß®e=R»O£“‘ÃÔ8†’I½ˆïl'“;KB´Ú/a¥{ë`Ø‹HÂ Ž´Lضúy‹Ÿq!ç¼Ú{bQ•¥ÙdbÔaÌ ÌiËž \\Q¹ÖÛŠÁÆ¿o jÐD­øYƒ•@v~_tF®r¹^@7\î?žãØËùrñß-u7Ôrãã×v4 Rº òâìR07Ð@Ë,…©\ãÓž@?ò3^À— Qc|s1”1„í© ÌïZb®ÝXFŽÜÐH°¦EU‡àÙôP}.}¦²ƒ(l‰¢ËÞÌïÔÂëœ9à}&è4z&™–WQÇ ~tUÑÇÖËÏËñèÞå£\}ðÙ–¹y |tY“êu¬Ù–|Æ‹‚‰.Ûûªµ«Ÿ“¡˜°ðîÍÁSE «DÖíM­¨Œ:9_oâ*º„RÌÁ›Eèñ9_侇_µÐ(ÃJœ,,"ö¿´úR:áÑôiãXºŒ¾–/©¬)ûUdt…k®ܘ"¸Fõ¿Ñ©££GP’Á W}Ýåµ4úI YrºÁ¶¼Úæ:Tì/í”øÝwÚ,7³×š‹ê(q"${tx±úMî&ñ)6Ü€s¯ |ö‡¬9;|JR»úî›^¦‹ÆIÑ˪vd´æ––*6Õs©ï²;`-ͱã˜sˆ"'Ã5¾Ñcó_MâGÛBÑÜ´y »Ÿ¦6óï±Ï)¸ÆÁûH¾q$]ê7íQì6Õeøá„ÉÂhöí+v¶8æñvcTä;<1Ý·Yq¿Yãß;â…Þo†Tœ_s·Áß÷øîêŸñækæ$w‚õò'p’]¬Íß‹NÂçY½»H^ÅÎÊ…×sW·â,Å…ŽS­Ë^4Jf%f‘ëÎ}æ|ˆzé5‹w–zRh îãœÊþ)=5W½|”»y=•muöÊàú “”³3gKüœR¨Ï!êöM ~„C‡ü«6s‘ïÁ ½†rÀã±Ï*÷º´úÄ>÷£ÖÖRÿ~-ñôPç·›áyÈ¥’ôñ “x”€Ä17M5¥ ö½ïÛ¬ý8ïØÄp.U—£: —MÕµI{[‘‘â¾·Ê­—ÖXfBBhΉh·Ã¾î¶e»ÓãÊìI„©A•Ölßþ,c ¸±b¨á*B%lôAVÁ1ú¢3Ï/ÝÞ|m±ð>ºhÈøõnÒDKzžÍ{çÛbø A«ï` äwvcÔóVÚ„3©Uª8DŸ„sÀ±¤¸T‰ïòÆê±oã,Ô+ØÜädE%iÙî™—>üô®¢¡ø& M†éÓò–5ù3™ý» e‡l¥ eVûÞ{w!¼ñ&аÌo\T3¼k׎Ú"ès¢wY~4AtS?³ì"]j&`“Ê‚18­þ´QÁñš¼µü:–ÓP®g‚L=4= ôŒ²HÂÍ7¿®c(=¢_–dâHøþáȬ×þ[~ D%›•ÃÛB+RåÓã+ NTÕÙ¾¤…7;žÊŠ©VÜ‘Híáö-ífBòèyÉÉám{Л¨HZÝ‚«e¡ÅU4yžÖr<¯ØušÙ÷½¢n(“5Ø >„Âg½°»å)ŸO9Þ®æë—§TÀ†Ð‰`^; »¢ê$od-W¹)>…ŽR>{p¹QÜ7ˆ+*i²G>_š–‘Èeµôí8º÷¡½´2›£üJÓùNk5m¸×O_ÇbÅÉ5°QÊt˜ö„f1Oö§ ."á›cê}XrÒmiiÖÙÊ7Ød6œüDs8VxNéßpZœðßɄǪø™PÁ«×.¾ÃòÒlŒÓúžóNà¯14ØÓt‰}Wn°b0ÓÙûÁÈ2ÐúƒÖ“ÓÖcÎ&ê26ŽÐ¼xW7î%åI}]äýØLx¶Sá ’âý ì`Ýñgqº`ô«W’¶W`ûÌBÏàLüUÚeó„mô´ªK*é¾å‘nŠÛ–mæ¢!alb@fÅ…×›G¤e=O:‚»Zó 8x_qP“³öÿûë†Æ1òøhØ„ÍÎQ”é¯î‚‰Ha„o{–Ïèz <Ô?ˆ>yK£ƒÈ¿v,IéÙо}ÂEy¬¾|ûÜéÜr U™²Îo¼-Þø"pÍgý¥«ôþ ãröØDÇúsrÔ¤[ÒÓUðŠS‘Å?€ÜãþQ³*º©á žDæî…·Ï¨S†ó©ÇŠ­9]xé}îç´ÝmkÄ•a˜pš³öH¸?d& ÓôœÎŠå뼦“›|G¦ÐM­mò¿!ÐQ©%á{-±hœö{§iŠøåè`Å2¶À%;dûÙÈv„Po|"ô xîWí}i´Lp¬fbšíøAæÈÐJ}|’ïÏ,߃m4;_Á¶væp ‹KS&®ÇŠäO¾ªÓ9ÆrjÅ»”w‹@¾\+:(Ô$X&Èz·/Y«yæQJîå &%à>™`xË¢ç–}Œš¿­^—ò.$q@ñ%ܯ´ò͆7*®j(.A‘EÑö‘~é [Ö`#ÄWmwµ£4”Ägf&p{{¯aøF-jëÈäm胋8!p7];„ü¤zâË{îP`%oÑ÷—d%øY99øÌYÍÆÏɺ ùjÙï vö„Êc¹l’¾¯B?Õ"oºê}+9^¹±ÊƒÉ ¡@–Ç•zk¢j&0mF8¬«–TÒØH‘¦3ß@,“eÊR•®"­œøß·ï24ö½ J]½°¡Ž 9y­’Xê…ß- ¤ |MN,ÍUfSK®NÒo?šï¨vCµ°|íâBãþß–äv d%.e¦ê~ï0Axƒ—u`­sfʈ¾5¾±ÂgÂHq¸~³» róU—üa±Þ.&žéEü”xŒÚƒA)Ö4±³’ž¡Z³ïš<_„éV&(ñxö®…L¬x_ZoÒ‹’2¯$šW‡=jCŒß•€Ó.É©ŠÂJ’£Þ¡_ø/µsxÝmˆë­ãƒ BÛ(•{q90ÉWÆ22ÍËü£å Åc2´ìû<㵄ôhÈDÚØ3¥C1»§Ï“wô>VJ4›Þ¦àïÂB–ÒSøáRÒö @,Éód1˜ r+»<2¶)úø^ßõŒ¡ñxà½0Ç\pˆ:‡ñ™Ðí¯Ù~½TìbýçåLÓÏ»÷C© 1qn½ 3©«ÓåØME…H»C7¥PÊ;qbsp“±•Ë@òˆÔTùñÛ±¢õWö„” aÞüØõæ'•¹?M¾ä>‚‘# ùæíSà(Dª¸‚×áyèt“,-cSÝjš&÷é„›Z3¢ØCر…=E©U¡+(ÿ:$ž‘ ®ÖÙ)gðˆgú.;ðbK>9.ŸÃ#÷'Ì˦eÄF ÿ††²*Ä3l€™>AË\+øÚõÔr’Ö4¥‹™=‹% ¡²˜·Äi073ER©Ÿj”\U@Xún¡†!Š×šŽe¯ïjAëƶ>.Ñ™Aö«h¥ ¼.‚,åϽ¡vϛŦY”eUY<ÃÆGƒDÏN:Ê)SEZb·fì2 ¿Ð € Ì[4Q üž!oë‰_宎“Ôk,>LÄJ·€Ù?©*ÙÃÕÿí’Â#glïU %ËfOj|@ºsðeYoÊæðÔ]à›BkLýP'lînhÛ/A'Û*d9#$çñRCè`¢¥o! 3¬‘?eù½jr*5{®`WÖ„f#RQ>ǨëØYØA 6*7wUUÈ̽#`L– 9ˆÀþ°ô@nŒÁß„bðÂR]]©÷ðÒ×ûR§EF†·¼” R¸MµËÁÕ} ?·§ëÞëK­_ËuÈ2Q "¢ÖÊJý'&‹2î“ö ‘'û"òµœdª_Ò©ÍZƒ>[VôÎ4¿–Qä1%FÒ¿QÅË>GôŒàUØPWDUo«çÊöÒÏ„koR¿ÏŠL€Ugþò~Ë=t]èaðéÈ4 åf!òi­ºMÝúÆÙu¯·ž,í´Å»ˆ3ËCQŠÄ›.vmVÀRtoGì{ø†T:æ-Âò ›åƒM ŸKÃwÞé …|¤ ÚFª;îâ#{_iÜã|Wï]–õòá³Bnp ™ä:çM ž¹ßm“Cm ×ñâã±"ÿ6GeÎç} ¢>ò´u/æ,CÔ–B^èþãJrDN?(Ã*ÊÅÓ]Ó7Œ¦9IîçB~|#›»N÷!ËL®´S?Q•²®_6B7VÊõƨ*ÏÐ^g«æ#½óD WÜr¢µèži>RôÑ]þйX–Ž_{`£0¬ü~¶’µkú“[¾UÌÖ0Pk|Ì\ ‚Ÿ:³­- 3 êõ @ÃLÚÅ' Bh阠ω´&»ŒµoÔ=~wu2äyŸ Ï]‘¶CËAHÀ?iXÅÊ-o³†â„”C&qSöŠ•˜4¹ÊTªln¬ÅàŠè╉Žì]l³“b{¦[Óîw¬Öá¯Áf¢‚(Dv`w¶—\åﱉÊ:Õ•Ê)ÀvÐÂJj¤¾ÚQh´áN‘¾Ý„ûúвìüöШˆb‰Ç‡Jà(èŸ%Ê1Ã:jåK 5I_Ö\ ¾5yáea꣨–·P9»«ŠOÿôÏ×7eõ÷¹¸)€‹Äg8]0Ûc¹|¤¡tÞÀ÷åQc}{‹°R A–«&È@µ‘ñ ”vN¤Ó€Ú4à/Í‚È;GgMð¨%¥v«úÜlhÁ#i†TAۯРšSVÎøz9‚A“6gèFÍ®âh¦V²S98öZ˜é[a-šÓG«qšR˜ý¶Ñ¢eºFtÓ›TpugHÌPGÉ>¸¼õžwyú%4±õ¤¹ml—« {áäõoTp‚¿Û× Pcût4ðþåù Z©èþzqùlV±qE¢xÛ^±‡ XœCzX‹rÂ|ÖQFý'LÄ<ç±ëiJZjvõÃÄ¡Nù‚YƒŽð1ºŠél =…ôÇÆy@÷O§'¡U… UñöÜrî 4æÊ^ëx9ø[=©åÚƒ v3oÔ¹S$÷ºQLß¼–EÚ‚³ò:ì²hJÍ㘂j …+>-dŒ‘¸C^ã©RÈš™o.ñQwo*rP<ß×Áñ5o%ßAkôùu¥P³ÕмïURýnŸ²Á•ïÿtXÅ£o~ûQ$dxÚØ $@^¨Å*Ÿ•´[±1üÚ5Ó²âËØŠÕûÒåhíV$̨ÝAÏœIúROzá!<Ã\+IÆ nJÓB—Éä¥#KåRtévŸÄ«’==*á„zÙÊ®Îä•B×›èÆ³ö½‚ìlï/n«r9A14Df<÷¹ËˆÜ´¨`gçì-¡¿Ó¢v?ò´B… )Öst ­áE'*G&p‹ 5¸c/<8Ç  ÚŽÉV"~îÈÙ—Fbï§FñšfŸš$†Åä®%m†Î×ÅX\#Ó¼@+oûµ 6­"‚=Þ©Æàòz„¹Œ•rCr‡óiõ´À §ÄŠ< ©â»÷ ªaÁe?‰F £¤€Ã»ÜÍßí}?­’¦Ê­Œô…¥«µX Ô9²D× ÉÕku¤ýɧx‚œ×·ð?(Õ—-ø±Š˜®¬ÀJ®ð7yÄßF`_ ÁM7º®Y:µ-½Ê-©ªÁáüÕµÈ À3.tXÙ5yάÀ_.“ñ ‚J¹ÌÆ0èQÑ„Ð:xÍC›#R JFÛ«sKH9ÂQÖpéðßù:]l•™äéIG×9­ÏO¹Ç_V-áR(}JÙ¼[³Š-:øƒ¹Ž¢5ŠàÎ$ð_sˆFMˆŒ­ùï¾!Lµy´à#vƒ'e’«SÎÄGRdÁLˆ)¡]5ßuWœÒLËZàœ¿»¾Ô].ªNí)vŽä-Á¥’?Ëvs l6y“OŸß÷ 2TÃÂV’‚O‚Žžâΰņ‘w.`Í7nò@0g¤ÖIã Õ-‹e‡ÜKHpãát¶XcÃivÙ5‹çÕ™5MšŒö˜H Yžþ*Aþ¨i—°¶q)[ό۲Z-æÞâá „t]•æÈC@óp^ƒ@Sm«Á·Ë†¾úÓ…‘½¶ÛØŽ¯)K_àŸWÈ9d2ÿ.¿kq,½¿uĦÑy>šL ¼×µ=!j~jqYðl2ALuŽ¥±b’[;’ª2†æ ³bÕÿJMÇ8“ØŽž9%û?o‚ã¼vâTpNÁÖ³Né\`6«ä[x±›Í¼l‹ôèšñH²ÃË‚$;ÂfŒ7[%=uUS©©¨ÉEK} °¶hkŽ ¾7ÀyË8Èø½×æžµõÆÝ¥ôGóTÐ$˜p;ëÂtòÈÇacåQY÷ô©ð]Õ8¡µ´àºEÑÅ`"ág»:™Óø’÷1È'ÉSH·çy»“¿{c†½R-ESì¢"³ÜÛ‡Ù»6•Ì`ö¢Cºà|Ò`KË ?WÒ±HÁIÛL𩤠ø¹ÜÏ âašO¹R/%PLOõâySlÉ0˧W -ìtæ¿I[Bº3»q1f](§Ð“àsw„ E†áÜu,[Ü/òMƒa J‚”ö¬ÎvË}¹û×tóG’½'IÃYö––{¦A,䔡T®·“qÒÿ'8#.0 6üjWK¸[Áº“5µ~\Â"` ]è|s ‚¡yÆ3CÃØIc€õ½JM@B%’K,<†®0œŽÁ)¼–H îÞ¶ð „GÂÝ}Òù~  ×¬–„Ø…Zn¿ÛÙ+ñhA1¼G7{]?„yÖÖ` Ô«~†»9‡¨áÐ3 -§…{ÊŒ,ðìFšÝmEyS„L+ɸvî=ÿdø÷Èð¤}£êß7èňå/QÞæ«æ\J¶¾ƒwIdq"Qra(«žU—âlŸF¸ö¼Z\ø‘<&výýñÿ,â« ¨-$aË“òŠÃ¶{fÑ€Jo›0òn7‚;6‰|£‰î/Z…Y˜mpÆÐ.ºÔ¿ƒÒ——A¬ýÏòvì¡ µzÈÐ ovBÅ$B¨KOüÙã<Hïp_Æ,ÏOž‚¥—I°*¢£àYA”±yày< ¢š€ F¹ïöbÞùmšÅ˜>svíÞ Ñaå .õ:Ä2›iödº}á7?gû´ïŠ4"ëÈëÎ'§Ø­yöÛ‡üŽM« dÁr Ï{:ÀÝ&žâð¢ÅJµjò¤wøTþ$­"Bœó|·FÛùŠô‚áØŸNG•tÞȪˆøô$ˆÐ™¸¥Ô6Uþ )Íz_ÒŠ«–”FBùšjËê”_¨Î´ŽÜ¸ |ï$oH0#kBIw]zëóØúAùÄô¾K¹)Sà”öT{BAŸRƒÅ<€ q¢„kkžPWÈ%ÖÏîÊÚÝß%ßÕ˜ VZ>"jn7K,”´ÄÆ_~«4äuîµl1˜’à|Ñëè;ÏdßÚÉÐC¼©é͛籚;ÁU$ë @øŠr e.’Mµ&ð»ì¦àÐj æÆÂ¢všZyÝü$öèE³BϨ݋ÞDY X'úŠæqpØì½Cð 8Ú?Q”.“Ñô>sM@ìÿl×8õhW±2]N³_ÒËOy?]ÁÌdoÎ_j½&Q^8—¸`QŒÓ~ó¢ò¬>ä>¹,û;h}“-šDË1cD}î·ß«' 5TÒd; k@Ý»É×&ʘø¢TuB³Kâí=Û\‚s´­ûô`»LU–D©“QÂ1¿ÝF/]*¾Kôn"î}?ô¦ª5áÚÿK4B‰çqMBYà„{yPo½¸”Q(U®Þqº7C°AÆx»A¼;Þøãºó…‚<É÷ÖŠ dE]ˆŒ¨£¸ ¹åôF-Ne“ýħT¢V¶ÜÆšà­|@ék0 "ÁÀM;âÏhØçòlv! >>s~À3ÐuÛqµ®K[ûÁ> stream xÚŒ÷TZÿ ‚tK )ÝÒÝÒCÃÐÝ‚tw—tw—t‡tƒ %’w<çüž÷ûÖºw±Ìóì_ÇÞ‰¢2½ È(²u¢gf`âˆÈ©¨p˜˜X˜˜X((T,œ¬ÿÐj@G -Ï"@C'0'jè–“Ù¤­̬ffN&& ÷ÿ ‚x¢†.&9€4Èèˆ@!²sw°03w»ù¿*cj377'Ý_ê! ƒ…±¡-@ÎÐÉhöhlh P[Üÿc‚ŠÏÜÉÉŽ‡‘ÑÕÕ•ÁÐÆ‘ä`öžšàjádøt:¸M¿ÈÚÿÎŒ bnáø7¯ 2ur5tÀ„µ…1ÐÖ¬álkt€”¥d v@Û¿…eÿ üS3ó¿æþÑþeÈÂö/eCcc¡­»…­ÀÔÂP—eprs¢Úšü4´võ ] -¬ ÀEnR‚ü'=Gc ;'GG ë_)2þ2®²˜­‰ÈÆhëäˆð+>Q  1¸ìîŒwÖÊäjëù0µ°51ý•„‰³£ª­…½3PJô0…ð›3:Ø™˜˜¸X™@{ÐÍØœñ—yw;à_‡Ñà ¼=í@vSp@o S ø‚§£¡ àäà ôöüóà¿™`baì0šYØ"ü¶¦¦cpó,ÜÚLàÙc0ýúù÷“.x¼L@¶Öî¿Åÿê/£”´–º¼2íßÿ{&, rxÒsèYXYìl,n.€÷(ZüÓoM)[S€ûïXÁEú¿x]þi?Õ?«A ø¯-yxfªß#®ÃÄÎd þÅüÿyÐÿRùÿ7ß¿¬ü¿øÿ$îlmý×1Õ_çÿ?dž6Öîÿ€GÖÙ <þr ðØþ¯¨:ðï••šX8Ûüï©”“!x „lͬÿ-£…£¸…ÐDÑÂÉØü¯Áø›VýµbÖ¶@E£Å¯;@ÏÌÄô?gà½2¶ßŽàyüë^›ÿz³5™üÚ/v€¡ƒƒ¡;xŒXØÙžÌàE4ºý5ÁF[XÎÎ` r@øÕPv£Ð/êoÄ`þ8Œ"¿€Qô7â0Šý‹8™Œâ¿3€Qâ7b0JþF¬à!ý،ҿØ»ìoö.÷½ËÿF`ï ÿ".°wÅßì]é7{ÿð½+ÿF`ï*¿¸ª¿8µß‹úoŽEã7Ç¢ù/âKþ‹XÁ’†6vàmùußýËÌ6nèhl ð_¼—`7ûõ*ÿö»nlàr˜»Û™mÿs@pç,ÿ€àn[ýÁ™ÿŽ™œ¢õ¯Ýý}®Ó 0ƒ~»b{²u¶1úuµšýø©`ýŽlüMâcp^v¿Á&íÀ¯¹íÇÆüûß¶±‚£Ï&øÕþC”ã/Îô»9là:ÚY;ÿ‘ø £ýï<!g ã_—Ø¿¶Ù~‘ ' ‰ÑïŠpsüCþ':VîØÿFÇÌ 6ñG¯˜Áõù;XÉhcñßAc«8‚ÍCgø?»Á Žá·ð{Äèdîü]PðEËèä úClÃùw à(þúväh rø³ àÖ»üÁá¹þ±h`£n@°W÷? ¸…¿c[ò:üÁîzcgpþzŒÁÁÿ῾Xn@c„å1oemPû]µ+ýÞÿ,Åžz 5½ç²C‡ó= l"õ猀 ‡[¡Ä‘^´µ1ªÁâ'Ï“–zØÐÖx¥¶¯GýO¦÷Ú–¦°' N„êáßÒ«î{=Ù{©ù[½j쒦ȱwæBQÌüsí—p«([YØSÚÿÌ!ƒøX6C­¥ã_Ý`š0T´©æÏrOÞÝ®’¥èîs‘ '+{3&·`—‘ßϰq‰©ñ!¿O•çÍÀoœ…ÍZÛ»íÐæ#ˆ')$-°Òœ !‡ø0=k„3Ÿ2m6p‡4âüÑ­dVMÎütN–œU*eõìÍ̲{ {Fź.éç»°ƒVš×gbA|Ð5Z/³GÅÆmß˾qE;ˆwïÂ}-f¬É¼w¸½>k^¿ëÕõ‹ç¾¹zµ'¥Cî“Ì?÷)¯þØo2,°)ïc öòØ›»áŒá.’Ýã¤Úž¥îzeh}Ù ÷]Q3š2a^q“7î÷ÜÈ.â ­n½”êk~8“3Æá2Ú3G•÷–וkß‘k7T2èÍ-›Sæ »ãàxjÇŒfóÜ~úL™YáB3ù¦éåk%éN”ÔSF±²šE}gÝ?vµaùÝýÑN8*CjÜ%œÇ'ƾBeó( Ü™o]âBJŒ’fZzŠ¡RË5dÆø4«?úÁ©fÍ3š¥Œc4oKáEÛÇôæÜ‰E”ØàÜÛÂ>~FÙCj¢ôÄs޹P2G˜Â+t±®UÌ=o.­ÎïéFôóK¸[»"¸éº´¢G¼Î§¼ïBq›6­X(µÛÕ÷|v‡µQšs°€Ã¶Œµªó¥[C¹ žÇñè€0´25hÈód7¶=&óû=•Øð¶à)¨)Oc‡ Æ £ÓSçq÷›æ¯ƒ°¸ôú2Oæ+>YGìÛOùͳ•ï ©’=“"M=HÈžŠ‚]ÖµœÛ7 ´öIÕúTÅF²ï]+ïžè¯!ßB¶ù¾ÞAa7.[v ¥hS?£wÕ(&½uòj´‹8€'„éÝ´ß,Ë£Ú Ýœßqnéõ,ã ó¶µÏ߬à!à›…¬æŽD g­DZê Ä-íÁûoLTÓ¼”ºêþYZ„¿Ôæ8á }FÛ à’šš0Zú>@m€µÄ&õ¥Š§'à"“_Ý®(ŒvÇz!¦Çv1”˜Õ,§„ŒsgTÉ·G°AÑg†þÔYp¶Fô\M‡ÀQ¹4Ž÷Ù!Pºªb¹ê]L2ä%B«»ÀøsŒžÈÈ ÆåO)äFòXI ͧY|ä 8Ô#UÙ KŠ'ÓŠŒ‰WnCG§Ê¯ÓaW¢N××:KÞ0=óògYóVïöùåÈMK½DŽHàm¿ÖÅ´]—I%êñŒb)xu93èmOË£8_ág¸œNs·²¿¯-¸û g"-ŒTÝÁtv}¥[t1Bhw› ­=átµ¾‰I3â|H¬G±Tti@øîIÅ7 ZÊž8˜Ã’?ïjÜ5b ~¤£°k%®ml€3ïn8å©óõäê)æÀÏÏû¢7¥¨7Ù­¡Ö’õí©Ô—É\1 U¦y6¶tuD)cÉÈŠiPÏK#º”(‰gÂnžø)ì„C¦oÅ:þVuŠ8mx,pÛŽ¹ç  ôÒwœháw٢ ŸG±PérìÉóÝ(Ÿ¼ˆÎûKØ$}Ø0¾EIs–l¦ñå¥Oõ–¿©QÜŸ‚Ìðïñvö8ìõÊüaÖ‡é@†ÎƒŸsè¼ y•‹w½©Ý'z¨Ã àÓ¸Y3pÅŸeŠ! ‘2×…ª–×uß!x±¬n5=¾ØamQâ "tÚ‘úF®‘ÍKHCÀ‹gÞif¢½áº„RŠ&0f·ŠaǨObžÌĆï0Œ?˜$›A´\ý̦ÓGKÏya:ïjWl¿¹S’¢7Æ"wüœ´ ýá<ú¡-~ì ÑËÉe‹._fÚ­Ô¤¯r)ª} ½H„¹Ê›8 Bâ['ò“€‚ÌÉÃo‰\¾Éeá/Â2±°î§ûµŽ®ÖË·ª’½ç)¯DE”%¦Z™#•í›Cz! àø‘¥ì`ù€–øñÉóÍ‹g6äòHQsË25 `ƒ…¥ÇnéWZ1Õ—Jö$Ñ Ø´¾¨Ç¦-—¤sÖì?^ ySöéÀ݈#  7vhgªÐ Æ|>q `ÉÝèa6Ì:Ü{ÉØºÍ&ŽC¼›V‘WP¸º’ Äù€­ìK…»xàÕÛìÚNé¦J¬s±i¨‡ô7‚m‰kJ¤–ã”… D~~Ú¨c&œš¬›õJ°ož#„ÎÀ}âa'þ>Ð!Ùàx}‡)£wqè;|ý5uœ@"˜dL85ÅN/“ï1eðƒhŽWÞ[J»Ú¨õ ‘d~;Ü ÔÃþõhÖ!Kѽ—£á¤Ê«5f„Áû×l‡E‹/Åü¸ðá˜'{^ºXÊ#¤„‰t}Z¬0ÇÄלë: ûsC0Í¥%!}òú‡¡KZÏâ‹¢wgò”r²Î¶`«ßÁOú®dLIä0ÔSÂ2‘tÐ_O=y$éÕýý˜knZq€_%šZ·"_ÍÁ”i-{õ†R‹qs“s”œßË ‚´ºe´Žó \nsk«WcNÇ«]¾9,~·²Mo6E—ÎÓ ì!›\ÂÊÔHæ^)gÙAþ¨|ÝÌG¾öÛ8fø2Ö–S†\wÇ<¿ÌZVÙãÿX[b‘ºõT„`º½•äÔìÕuªUKåEs¹ï¯GN.&Y·NàÆµk¡X ÇÓ±u¿ƒÈhþY•a µÅ¬¢%›Î¡tL3ný*¦ó3‹| `?ÙÒoE§Tûɼ—€èõ{ЧâLa]½šøÌ!sþÛã;<É×}âüÈ#ÝqžA2O«1F£äU†IHKeÜpÚ^˜|þotZ}@꺻)c9Þüv¼Š’ œ°ˆèj Ãí’äÊ…dOëÊ׿Ÿ[+ –ê?¤blcª‹¼û–a†"¬Ø^= ³@ÂÒ~-6q0åláîÒ!èf×ã–<6«Wø:•Ng”éåëÏ]Š yKï‹BÈ£Ž}½Jdº¢± 1†¡]úÕЫoMd&fž¥Í|ÃÐK^£µ+EÏ¿0£øÙ/Á"(>NêBsgÛ¸EA®†ý šÃK9I¨É«l³/[S~ntÞAt?V±ÏòÒÄ%mÅ:ˆšÒ4ˆDI΢èæC>Y“S"cl.ºt0h¾÷öÇÈ©1R}ÂUöLaá\áÿþªtæI\8Ý*èë;„¢?@è+Òþaßë]§ì3\zÖ¨ûËMZ_´““?ÅSÎ쌘‹>ÿðªRÚ‘ð輋h60ŒžÜai¹õä弇q†ž¢üÈôԲіÀ ©bbÖU›€`1.¹+ÈøXg–/Ò/ÍìÁ˜=-ûYý9EÓØj¤¶  | †þ¦ÏÛ¸˜kRVÄ«¤fÀ,¢]³œ˜›!êÓeƒ@únd0¼vŠÖ/`¥OqÆÿö\ŠÎ›,ÇBl)4õV—BeüýøSàÅ †7]2|‰/oÃU||ŠKŠÓÞgÈ+Bm<…¦ü^âšÐwåš¡˜!#¯Oo’”3”çÊØç³¬iߣ|ùØQÓlÊñyOµJ³õ¼ô]eÉOý<; hØsþêG]=+À®Q ëL­‹3”Îs`LL²IZHÕmæý Ëxd  ’ÿ'L—iï9vV›Í¥´KÆÁ›’ÏuÙxõú¨áW>]GS¦8§eŸâÙè +#ù‹Øî(rWZtwÅ2%#LmGVýÜ"?¼­¿¼Ï–e$~×à„cÈhÚù„ù1ÙQû94”ÀpFÂ{/÷°Õ¡6Áç5R¹.y"ÌÅg熾'¾ËEyEL¯<¡áG |«‚qDXEÍÊÁéY"Þ’¶áo©+KAGjÇÕ}ÊÏû|ý)¼†JDÌQÎLa2ý„F\ mÍx?yV¹ÜX•|›ÚõY ·Ó † ïæüÚV¦yÛ4ßLµ„_åv±œHå4DL©¡yIßVÉISNpÉtîO=.öÍI¤Ë•×Ì”™½_W۴Κ~óP+z¿`\Êè£vì¼£ë¦J4eyi‘Öxóµh°d%^ˆS©qœ#¯Ù§—ýÇb£@þRUNýäÌÃVO/ì†UØ.að[êÆDëúÛÜÄa7ýZ"0¥JõiV–`Ø4*ë’dˆýi/…E#zñ¤ƒi]†¤·U2E±øæjvD6EašÓuE{«zeaˆù¡÷R‡óºQnzd¾¡ ÝTV,lŽˆš)éJ!lcÁØ>Ø+~nkm*×§J1[’ ¡´éoujöè=z¬Ô‡,!.°{°ÐGsÂ1[› :&ƺ–è¸!keÇq½ªG>r×IMûÐE·1sz1i 1.8Gä·š|µ¶ßÛPO]òùâ YäA¯á»&Ϲ€X‹:LkËé=5áoß¿Å{¨Öû2j0#)çîÚó7?›Sr:_•CK\«• éÏõ°öË=þÜÞòéÕ NwÚ‡b ­…‚’ ä~˜[LôžÁ½¸3ÿÚй{Ï4R`¼¥âÒwUµà+_íG´ Àû_íÍ(s=@G”%ÓNb#•»LÊã¼­Õ~Õ0!†5Üëe_ î%ûˆgâÚ {¤N¡iÞéƒÃÃXð¾J«„8'Þã)O–ã9sæ=*Àé~g†€™bާÜœ‡´ià¤UDŠDƒ‡}¨$B)ãøÚÙztNº)Í cÊâ+¹C˜Ø‚¸†™ÙDç¥Ëè°¤¾TyuÝкìÜ-š5M0J½f#Ÿ!œÓÔè¦âHË(ôcK ce'‚ HÙ\ÖZ {—K]üúÚ´†nH`öæÇ¿=lh ÞÉF„¿ñôwÙhýDë9!O£‰?Fko¡{÷QO–z‡(¢>‚0ŽÀÆ}ƒŸÿ*,Tæ¸ó#rêgO‹'ÏÛw!¡,µ&øt »éèSaßœ>mÔüH¸¥o_ ®,ˆ(x&n‡( ïþÊtp_\@îÐO?/`ư=)Šˆ e ª¿Ÿ}¾uw¶#±7Ф­"<ߤ™%rg"Åâ¾Ä•‘t’×ÞTý’ôc²\Õ9º(èü³¡úU®Ë± Ãã—<áÕnFcÁ,Ož.R?¡û&\—É;]EoØ JX+·QÞë\+?޵·‘@(ŠÖyd= –iÙ(3Ýܸ;‚«àq5›ÏM•Eræn?v³)Ï©¦<³ ö/Ìò¦ôòq†Ÿàû æâƼÎjZ©NM¬†÷ð»Ns'ÖZ£%ýæ^ÙOJ¿s­þ–ïTÕAPì—ìï›e¦°n P“S¸aúJ9 ‘ž×W¿|{‚ünÒ~½ÉñEJk̯£Çc3‹—i%þFân ô£‡Yè=€6!Þ ¤ƒ,ÕlóUp¡FoFZŸ”uC90ânöÉÏu°{ú•€V•¼M€ˆªoHýýòã§…˜D^k¿nch^=þâ²íŒ£bþd'›ÁöäÊvóð*ݰ8$F{!±/ˆDûI1¨ß+‹ÆŽû ¾(‰âM–M¾[°- U(y’˜Ù!ß‚ýwM¬­ÔvÀåÈ'/Ê‘bÆóY>±Ä;†+æK‡s¼w¾!Ü®f³Æ‰ñ3Inñ¥÷Ï.ôç RžVg„0;.á]\éjÌ(Õ›{å6i¬—¶B©ó”Gt %6Àu5í¢P~Àꗣəv¶Í¾•xÛô†rÝí¾Ý¦§¹k¯5Ÿ=ÚzÝ$k¸Õ<§>¼åN"æ©]%F1O6dгBܤW€WµJ­¬sSuµõ¾Ý5ÖÍVvPìeÞÀ†.-c l;ý»î‰ôä!ó`ñDsQåLὬº¼ÚÔŒ$O‘$u×ÃÁ gö\[áuúîo¢my½žÐ€ÕŸ‚¹©øË¿.ܳ©@(søÒŸKæt½å¢4'x%^[<±‚½Œvciìiû4 ¹¯ºˆfo˽5[—®…F¿WòÚU‘W¦¼ £ì~Zj*Qýšø=ÀiG©'ÓÐ5µ†Q?ß(¡Fk0™—WŸì]OÔg¶ó˾JÅ·&ªpóá>µm9%N–g³%drŽYýo›ƒ ¢4òÑ“,쵌jŸ)Ô ˆÓ øu&ý"Ö/w8â½Ô ¹MGÆü$fb^6Yñ‹—1ÉX9ž%íâ y›íœFÇûCÔ§5çæ´{F¨{Ÿî¶/@Ø,2ôBVfxx7†÷ûXgºÐ¥AÌ#wÛ¾»;Sœ;D);ï5â¡~è~+,îÌçÊ›Ÿ¥l;øj¯S„­„×wVÓ‡|ƒËõ8•ˆtñÈcô¯79p?U IÐ]öÞ{ÚâÐmà†NÖl)—ïÖE"'.-yXæT Éí§)¥M±ï•B씌üaàCÜp¨*9Aàºý§U¡[¹q˜ëÇp§ˆhùFi¡ÊXK)ý¼ðz›Içˆm-ƒâ§&;té\ê3ÆúýšÄ¶È•O ܱÍ×ñ*0îf+ð˜¶Cܯ¾¡2”„€XY‰³†_ü@A¨D8‚ü2:<æ•åOù3]©l¦+˜f®ÄêçïQºž7¼æ;ÙÅ| !ø êqX•ÌÎFŠ9¤èÓPÙD„Y °úNc5)-G»ï_¹ÃŸ¯ÂB Võ{ß¿ïrGÇ7Ï“å_ Ci¿k=–øÚ¸ðZP¯e6[¸èâÍšïëTIs®;’Oé¶# £6ºt n“ѱ åUç¯æqL;ùiÊz6ÒÑ¥/×Óýˆs´{ª Y¢·^Ûaã)ýäpùb¯6.j e‡Lˆ† gbÀ¸c,³˜ÏYÊ› K’ë…By@©L'R´ÉNC—CXš¹í0ûlúqØP­Ù£pÁû³d)ÕÇOô]ußsìã\ýý±—r•¥>÷ž¨X+·k÷3)+>XઋìTà|Kìó|fD]ë1o!6™AûÜÈCôˆ)€03ÎÇñTÍÕ·?à }‡ë{%£w.)¡F¾¬ˆpûPbÔª ÷z¿BJbFÒvùô¦€ZñƒÌäÌY\ö'aÀýh3Ï{Ý“¼¯ÒÍy¯- ù"rtJ˜‘)hH(нگV޼FÓß}ð2oN¢®ƒùv­Ù€k]ð-|ÀG!»‘?ý6ÿö`åu”—XNÇኪ4¤YŽéœ»Û»Ö…é/A¼b5Ü5¶'úz-†——(D©8ç=7ÅPúððSßfk²ñsÓm7øš±r(l/n!?kŸù¤ rîÝÌ 6U8L™:Æ_×[ŸÞ'/°ÇÀ '¼E.âlzÀðUæËåÅN„f_ùÞ:}©ù|[à2ì¯ìx3‡têJãN¿ý=µ±yÕÒ,tù¡3It™Ya*hçtÑh|ó“vžÌK4±ª¿ôkøœPïå>5¨q µ CŒ‘ã<çºv_kß‹¾dëñ§RSà‚¸KmÔG‚’ÌŒìÖøÇL(¦cùT.eÛ7èÚÀÿãLQê \QÑ| ªÐöÉg.ðJAÆ—m ÙU|DA©ÀÁæe©ÆH9@Üc’…$ùf$bß"<ÑC›y)€b9É•¨½ÐJÎ}š÷YQ˜jë²²?„K{œ­C!4}•$xU*aì^«Á;éÀé½*Ú5£¢2H·¹Ì»‚ÛË*ôgøÅ[(,eÏ4êMØžŠ»‚¢°Ã þëƒùåZË€)Í6mÃòj²¯«?­È ¿Êkvr¡Ïé±ü©Ñ^õeº6~¢‡ã3‘gŽcÚ¿ üÂ\}¬ÌÉ­ti_šÁñeù!ïûÇ Öþˆ¦6múN èñ¬Î ¾Þ–½aˆ±<í<5b Z“²+‘«ó¬aÀèSÇ!s(ô3‹¼Î^÷Ì}f¥IÆÕÄ­©9”âê[|5¥åÕ×» ɯ k·_D¸%ZwÏQòWUó§k‡#)zÐÛ2>8î4Ô"L1Ð(S“ž5ÔМ£VË’ÂÄ)Ë+ŹmªØEøÏ¼ëùÀ‘”ñܤò´âøâ²Â(ÕV þ–«ªd·þèú<³_®+þKãʤQt_Êyraøëô’7oã-›ÊȤŸ›!'M:ë#Ȥ٠í-÷æÖCýBQ¡ ©’*œŒZd#Y±÷EŸÛB{ŽŽáôÍ5®Ÿß¹‘o ŸªÜ¡a°t_tÂkì|!ÙÆUõÑν¨–¢Oñ©»?Xp* ò -ÚTXá# kbk¢ u~J ˜7GÃlK2R|KB5£‘÷#1Z)SE‰œCØô2€R’$º¥uv‰ù®rÝÿZ¤NýTgæA^üüÆýGØwù³ÄÕižWÏ/EÕpu{Ù²SO·øXˆ 6éN¾<¦u Lj.¡éz@`ç1<¸'ðK¸Xh©mбË_S8S½,¼ÉÄ…¼­{7Zu_Åàì«Ldßóس*!Ý“ûÞ‹Üö϶½§¦$!“Êç ýÅuättôíÆ¢ÛÖ ü@˜ø+ŸÂÈ!ÄâÔÛkbŽ4hÙØTâ¸Z­Ó_8/s¸nB¨å\Ô’†„tO79/ãUdü&'$Ùõ-Bò=ËWž!¯ÂBå=t7ÇR/%q÷F„6p(+)+-U¯Ænƒûà×›1:í+õ 5"²°Óë\áŸyg™·¢«;9ܲêÎrdzôï5d<ξ#vv¤¿Y›/á9q†™uÛe­L—d„›“Òv…QÄ÷­\‘{ìé%¦) ¸"˜¶…ˆÁ)Ç ãŠ)¡ºMì3pRï‡kV[öåj–]»£NþÂ!.#—'?Åf*ë]IXÄë«{"„Ö%xp"´èr*fxF{"oOáäGZÊ´ü(?‘çr§¢a%Ë-tôÀ‹¾aÇÁ%í@^áË^L©‹û$,ƪkæ³{·Ö-›/4µy‘ÂBGèQÇÕ1Šr‘õŸ;aäDóÄ.VËi3:yT‡€Ì½²¤kèxk]»Ób´–dȵ†(µÂ O¾7ñ“f½Š˜ø†É mv|x1Õ}:XŸmå¨5mg·sÄdúç½p]±$³]¢0ø~f> IFë² #ý$) ò…²ÉI$ ·âÙßÊžáØN#ñ÷£Eh½žŽ %I•™°¾­kº)m4(ç.sÎŽžùÜø<r!+]”õ0äá¾Në›· ëÌ¢1·pŒôݯý‰a$Ÿa_€B·ª"ÇGüQàY¡d«Œêý]|‰ó—˜Ž3د&ªNÇ_QHíøÄ$Z«|77>×Ì")Äõ8Ò5Žì¯)§î#¢ÄKۤᷢ–úŒLÕHCž…kAŒM!ÔxϘÑoˆ']£?TÒO«‹VÅä‹7L]q¦’ç“¶µçL4äËzuè†'&³oš Í›y3Ñì4X ¾Ê©\ZxldJ>£êÄ,(Qdgÿá•·~]ö:e¼úL\ÍÜCþÆTÊû§TÅ׫ÐOJmó"›ÃÛxX”ž'Z·ÜµÜ»TfÛ‡•qº jk…kÍ£í]Fó·úrŸ®è[CÏbÂ4¼ì*}Ñ<©›Æ³/CIŽôà}7Z¤{¢ òŠZDM® G{“O¢´R½ºç¡'üÌññ_f°:bÓ¡Ey÷fã´ (+dID:¤0Ò½¯Ég&5ãkªÞk¾@ÏXÒ˜µèÞö6%/™‘ *&Ê寗(&=4•¤9Ùä~ƒÇ°äÉèñÚ®-ö(/÷}¹“¡z°Jo45ꃤÅhZ8éY‰éňu뉳£Ñ%Ϫ¡wû¶ívjbÌz \ѨêÞfbÛ~×·Ü8…׈&O눆ºhé&dÂ[¶DÆ[¬O%ë<ÃêqŽ+™öŽQÃ5Ò: ÉÃrJñÑRD Ö}xÈ6)|Á§þgr4az²ýtžGR´Qi-”ñŒ«øù0i…‰7\Xá§_Gtt£ £÷<1ów¯æ êÖµ¼Érâ4× +¿ÕpªN|iß+^ÿ²¼‡DßBeb+.j/p“or -¼ODO ²ÛW˸¬di °]×Â}Ÿ¥9Ì"V8`T’¸„ZënyêþÞ»‡Pò†#rÀØz‡^àì©‹H¶ˆÎɯ•02^;¡ªðð×’;Lm ³jùó2…a'`y!Bd¼Ý dñùÐÛF†²Æ _o•"¯v9«]!iÜAÐ`åÊ·¹#LµVh†'¥à˜øœÑÅ ›/Óv~=DŠ"ÁÍqA¡ÒÓì.#2îݾÌ4®ŒÇ Lð=ôØeÊn jÊ·„‡ƒ?ô+¡+Tò—)¬×Ž$; ®Ä 'bKÞâ”Âù‡Šn¢.’‡L~8Œ u+ZíjwºNWäð ”#K@æšè¼ƒCâÒʃM(d fÌãè%´Œ‚$(Æ-ÕÑócíXEŠâÉÛU R@š>â`ÿÃjöä®TþXñ4gÕ³.–}Q}/l®¿¬AÓ=tt´Œ "P„{ùƒ v´¢Â²-½ÿ¤ª1”•jÕËîh¦È(ežYŠšÚeV2î­,£˜äV£n„31K<'_]yðS&‘“wHšð¼ð"Ý —:,¾ðiRú';lV>É Õ=ÅÉH”Ž«ëØm €læó«º…xº §¥Ù™ƒ©²û:}ª›’½—øi½UX?%†&†”ëŒJòTÀà‹Ÿ×ÝHÕ‡í-ë#E¤TZÅí‚Ù`TLÖXR3*Qà*‰?e¢ui£Jý|5ç·ˆQÆ«³êw}î7³º÷ŠŠÇ C¼Ü̡؅¿mÛ…€ôÆZb³õœ¾\¬øŒdAºÄ-1”|ž¼ƒ%û.æüþ‡ù™ß½kÆ+zÅ£p[AÍðØoôM˜׳7õ䨥Z¸pû ¡¯It´Ñ¥…”¼Ì`´Â^÷ÔÚà!ÅICÇÂYYv/f ;˜¹låvliÁ ¹·ñ”k°¯¬Zp]=]ÆÎIÈ!зÑOw ãѱى<çczÊo¼ ×t*¸iÈgð䈣,o0” ȉ/Ù<é3y‘£ˆ÷ÒÙà‡^™QòñkÔ ›3›<ȉ$l(ÔunÙM(qé&ûš?ÿ@F»H–qÐpâ´²,«DÿhÍêæ!Ú÷9ý›3„,mÛX¦`øÔAqq˜ÿ2Û‹Æ}¬årg!ˆ÷xbñ¨÷[¿ß²fÎO…÷íÈÎÍW™ûþË/¶m•T'm±ÙÜ?*Ïöá=vT2êx˰ w<+v8ël±š1ˆ­#Ólœ•·ÒWÑH˜ßÖ;ÈPkõo=©È m'XìZNGÄñ«lÜŒ5·y`$dpFûU,K†ŠtÞ†H¬ -Jk’´~^‡ôõòï€Q^È"0Â.IºMhÍåÿ ¢z}•D‡ ÃY¥e‡·-ù±]CQÌ<²(±¡ê¶š‰Š§4ñ­”$iˆ7sB FçƒÙôTä¼Ï<:ÿÚ›ôÆÛæ%.:bÙ‡ÄËøöתï8j°p ·™Âeö=ÅÚ-f±nûýjR2Øv¤‚µCÔÁø™_"“·é¨V´ x³ã«Ä¦´ =×á¸]€ŒtÐoñåGùPçÞ|ÄPµÁEq¾lRƒ)Kæ16ëô#eh3ê =OD™y>#4²h^Q0¾ºEuwºÝ¢s1º¯mŽvPÞz¶i¯¯Ö¯¶aQq»ã.œ!ilϱQŒ › i#[9àÍ8À©Êî G¤<›–bªÆœ\F0“"±%!\ì‘¥|rÜ–Ä:}]ç÷ÌÏ\§VÅm Z.ƒŸ^¼°=ª+®¥lãG5ëÂþY?&‚k¾°¸tñÅ ]D/•ñ<ŽJ.cÌá…ö» ŸJ踷0ü³!6gÕ3|¡b¹F=lúœó6%|ëÛ:Òuç\j¬Wܰ-k¡|·ßwšåy×w†œ¯ØûßHžãd„w'd fœTíqª]öíQæ>ȧö¬Tk§>ôYipÖX7ÂÎSÍm½5ÞáÚBÛ”I5“ TÝÆ°u?ÃéÝ2ÐÁý€67ß‚{êy®obÿ,ÐY£‰Ýó´gÍR<|a=àÞÆ¹åÚÂÜË+Yü…ʰÓ;‹?(„ΠÎ/BÀ‘Oò¯ ƒFk¼ån²k~1oãf1:v¼Þ4"[Ónv«Bû®Ö„ý>”’Ü¿ sž‰W–NùÙh"/a£·¯3ÕëRÛoR/žÕ¤©#ËÙýxÒ‘¯*×Ù“˜FQ -ûNNFH>~œÆÇ γa@i$¥<ƒ¾ñ{ó€_où*㡦ƗΦ”'ÍþÓñ+.g+8ÖÙ§õþo³³¸Þ…þ5˜ ê$ÍÚQ BK bf ŽÜÆ@ï„î&U²‹<4WƒsshÃô8^_m9_ü½hµ;ð­°çµøeÍeG“¸@g*ŸŸI_ÕÝ.tc¿2îæ“X ÆõÙ²óîž^Kp¾(0õy¨ô³ÀãÕ5•"áv·@PvZ¯“>:¿A‚zÓ7 , ƒE*’R º÷”×ÝQÑ¡òxß0›wê”N²­Êôðb_yƒ™kD”_dü$ÏB³P`â …å…ó‘Ä6N¿Ò7¢@=D1£™m8<â“ÌË«k]õp ë"¯´]\ݵŸÓT†Òýû4&"í)p@Y¸Õ¾"Qhkï^Åñûo¸`)&ƒœ¬i?4Þž­±T†%¢ *’ç{è( ÑûòX´ᳺ?l("äû„ó¬6{Ïb\ú¦Ë®yƒ¦ÓqÃuᆔbÙ/ê…Ù¦i%ì¬N<ú¦åø^{ÛXæ;.E=SElÈd°6cYã÷ì&³-ìŠ{Ëíƒgˆð§9].ñÐ]ÓÇŒ–zJ¯ý÷ó††Rø¶\"[Ñ=w:Mç­«(²D‚-":Ù lزË\ZZdªCõõ¾ÌvÜ ;‘? ½µÙ¼¥†Ý–l¥Ñ(Ãø^<•j{«Èú Y—÷ãhê¸óØÓL“JI­ÕЄ÷Ðçi„fÎaáüØ+ªäWœÓ[Ù)'²cs ÈÎ ŽÉ½X,]Må“J®è á¡zËyÉ1Ù¾6;¸à“‡°¯4nDSHµôSAùÒ#ˆÈɪ/`_×Õ{ouÏ(Ù¹ÁúöD&o&NDxNç,Þ¬p¦˜¸ }ò2o5ÀÃÉÑÌã~êR¦:Þëó“E·]­u?9ùу4³‡µ7“u9‘?•Ý¥ÉoŸÊ²Ÿ,¡‚ë«éT³’8qKŸ;rNeê¸ðLmR÷€àCdÙ"ñÁÚ1vã±vK4 ¼’.¯[+T·XoÂ\u¶SÑÕZÙl£½jÂ5•X¡Ã(W'oðÌSïR‘iɲÃV¨T‹aΜócwŒÜ±¸™êLΆ}±ô-Zmp ÝÔ3P \HsÀ7œA½[éŠašôLjÿª¯±Ÿ‘ÿˆ96¡{Ëxa‡À„‹}Ú…º†¾©&_nq¬Jr I8Ö²‘kíƒåâ*Õ™ÑC4/þú•|~ï¶ý}Áº`‚$ŠÀ´ô¾fäÇÂczÍT âz3rÛœçò>)rœœh"¦UëÒÏ&{¦™JòAÐ?ýuW‰ê¢Šä7àŸUP;oøYX'k Ž«w°0+û_üŒœ Yª³1d¦MîKr¨5Dë¾BAGa\h.¯R°£:ã±téëµÖ°f#¿&FVÖ¦“²…îÎƯùèEVRð㑯§ßìÓãz8”f—&|›)‚@áëa¿AxGÝè~©±tkPùÇM›¼!þžFšë™R/I0¥äõÃ1ÜË™/7ö›wwÁ†dŽ^_Y=z’kAˆÊÜï5¤«ºo–Ì.éW«¸ƒzn#Ÿõ·rlÝÞmÑiü¸áOee[ØšfzZ“,?w 9pø³ÚÇâÓhs?Í^Ķٿ‘©Ìˆ±Ä_%ÖÞw²ûBM”,¼| •Pú°¸½Âó†Ü–¥5žT¯çö¢ó¾õ.òf™¿\¾Ú”M úýûUE•3H«d;Φ­Oj4ÒfJëj{Iÿ"|–û¨’&ýÔ¬E;PjiŠB•nÜ$ çø|zD^񴔢 žÛȤ(/ìp÷¯Lß9¡uT§a©e©¤EµGí‰Á/õö×ñ:Vdße‚/áíY¿Á8R¾“J.=¾Rj©•ùiª†˜1¬Æÿx:Ýíð,*Ä“Æ%,n¾1ê ƒŒf%ê-Müm¯5$™pŸ³ºèW!2«Élj:£§á!êåUŽï4Ù@£_H;»ý èÓ@óœ?;™ejã÷¸QÈ~—æG±éhSë9{c”æ<÷¦âžÅQ óZ7L,_ÏwOÖÌ“,¾•}*2áꨗRB;Œh¼ÿ4¬mDÕbVˆÂ’„¦îd©0$«ö€ˆCôá*4­#Tl("KªhÓ„¦ZÓ+´HÇÊõéÇè­³ÍWäâê¨'â‹nÝ {<¼i")~ÕÐeQÖUÌ£9›*¸ÆíU(æ5lòÀ¸ü7BßÛdLÇL¡ß‘¡šº‰ãcÄ¢^×oQ&´xÀHœ"$ÀÓ´ Åkoê\R ¢|ç©þÀ­!d*é%,fóÓÜãxeøå¤uO²³±áç¸Êü¸´+JŸ†äž9[ÒjõvïM¾¬k¶uäîìÕ6:G‘ÎZÀdÎë~Û¨A´gWSȧȟ“³„q °–Qów*2±È SC‚4³áâFö˜Êíû]i,s_¾vå'Sin´ÄøàHQwABX[ŸáŽlõ™q> Ìb/Xa–x pÀßµm1uób.µ¸+’=ò¨ ] °(}¬ Çïï*+GpÔó¤ :ž± ‚öàåö7tø׉o$ƒ‰cÂ’Wø…òѯX6-ù¬¥C¢<”Õ ã^y܉fm§¹vÀV´7ùYy”1£±Ëås^Ñ£ÍRïÎeÔÂB½û×sDÃ-Å·s_¥&h•¡ôJo—Ù0‹YHUPä"+I öͲåA‰í+£= ޤȸãH‡öçðíÇ¢YM„©óz8½Û ¥_ Ìžº >kvvÊéy¼I $Ù,ÔǨÎ7ŠÀçšxñ k¬+üf],#ZŠ!éP׫TÔmOA¨':gîíÔÇУFaôŠî4×é4×Ý>r ¬Ù¢Ùx_`å2œÛŽÌâC¡D0;¥Iô$qi#2O^œñ@Ô;ÔlxZ”7,JJùï¡BG|_„ȱßåšÛ™´8³ñîëÓ¥ßçf¬¹‡T\nKæQü€Üf?Œk=PÙ*ïùÅgïÏùxe\hv:ªâáÖr©÷g¨ÀZÎ28 Ñ”‘~ Ú83Mk.[!צÖÎ{г•I%ÆÇDŠg¼9´JÚŒ-«þ(ñ˜ÿÈ1‡Z _þ|y’öƒN°? ž1­¶¢ßƒöœÝtûðüÝ8¶wMKµ‡pm—7 ¨‚7|ÂÒ{]åå2W.KG£óIQ8,iQ :)[˜ï>Ä^$ `0¿÷ˆµšÎºÛN+â£mÝ_ˆt‘ƒ+ÇQ6©¨Òаjs<ì,½øtöã‹ÜI¦"^}\—ä+´´­þÐÚ­ëTÆT…©àn†àÿ'I ¶õ']$§\Ô²öLD¢¿˜vdµf+bíš4òÎYÁÁ#qkô6=É` ¹Š!ß/iöí±…òÖ¿ÀfÃôKû8E~uRm³¼ø³$ÍDcãž&øŠÇÁÕŠ©R°b¹ßªÉÛ9&RÁ<—¦_b„W*—2Öä^á{oöP±{/-2ä'ñ©• ž™Þµ\u‚Eí@Xß׃oçBx[ G™V­Aº1/Ä÷r ÝÙГ1¹Çz*Åлél 4r“” _ýK’tˆtTló(ËZÅÖu´+¿DKff-¹O£zw¹ËEïCÑ.²‹]Æ-蟴‚¯jÝDTŒ7Œèâ™*s=#–Î@èõŽÜ€^†¿ÓÆðÆÑYcåù”džKµ àÄ9©ÎÄ!/Ôhª:Œ1¸¸+OøVœJóäŒ2ýoÈؽZè‹X™$ÓHÌÂ;`äê«)tŸŽ9¬uëÂÃjˆÉlgžkC@G"óVÕµˆy‚Äqƒ¦s­F\AϼŒÖ€×åÅînÆú%C‚ÀcÁЂ͂WÑì\êí¤¢ŽMK `w{öúzâ *Õ$ŒÐ¦y´-)E¹oP=ØAd¹êm³,5ý:—ˆ÷÷9‰>ìí]Æ q@ž ¯£ ð÷œª3iÖ2ï‚q:‹D Ÿ+(¤‡½VÙØÍÜ!`Kà¥5jý 6AXÓkùw‡ªjjAΘ†}‘oÒ%áåº0 'Q¤;2Â"”°[ .¹>Wè…^Y'Šî&ox(öÜòëOí.'^ÞåÞ YCY±† »Ð ?žTqûI‹òŽóJM‹Îh碑UJ"º éþeèâ–sȲ´j‡¸"‹O°Æ£ÏT:=&NÉhU &:‘.ç¾kÏEŒ}YèÁYS)äð5ÉV¦Ã¦ú6xL'/ój²jB¾²DóÁ&ÂNüòÄ–›ÅDý:1õ+Ë´ÿøÐ2«Òˆð•j³¼zk]&¦*‹ |^0“¾‘‚?<p('¯. p/˜ˆµé‹ fŒK²Þ |VtÂ…¯šü!\tÈÁúæ°Íµ8éL™[XÝ$›0Ó‚V²¿õÚ<H…·é([a§ ŒGy³¬$nœ5\ǶBýƒØÐRŠ6¥À^ T·_È‹_÷l‹ø÷ÖhY~+3MOmŽÔñÅ.©8èn/Ž,¥"ñÌ÷;9¡v¸…¤¦Ñ E¾“0žc·PGÓV@æ*Ó-0@/‘-$¸yªx‘ŸÜšF¡V±ãÄ™¦<ûÌÓ½¢½y¤X \5†XA‹D‚w?·áRH¸eÌQ’%5SE¿¶ }B‡Â¼ß  ÀÌ_f`Žv+š¥N2ÍX§äËqÐx=kRµÄU©F’àtŠíG«]MnJ°]#H™çý~Þ¦eÇ$- R’¡fgÑ•Ôé–GŽ·ËþO¢Ýã%~Š+è§•y­ôäé‰å/ÐË•SA¬óEàâð©_| ÔyHˆ®+·uñ!K.8:ø°¿Í¸à9á3G—nµ ,Ûp—YÄF~qúm:ˆ‰ŸÃˆŸí¬(ñ@f þ<¯6Ž×_þ¹^³;E¯„z^LJBþüäKf=j¨¸ŽC¼äq‚òŽ FNf‹¥åçâ¬_ºÐB… r’­È|Iƒ”ýÍÞºk‘)t¬#g»_…ø™T•S²©i:ÚÑ—4ôG㪥˜I¡§™Wj窚ÄÈz*^ÿÕ»äO¥ñv’¸+g5šè\Ò¸%“mœÖ¦iD\>îw­0Ì&I8¸¢{Øð5L¥f°Ý±M¹q¾^ Q(Áž‘ .^'ZFyù©h¸³H­(pN¶ f‡ôHÑé £¹’Ì5Ñâg Í ]PSÝAq¸8ý‡- )ÚhÞtTš¦ëÁþS®x·ˆÝÆ2χõƒ£w-ÊdŒŠÏØúK?j•vw¨ÜËŠÐñ( ãMU@µK¾¾Ý``­þˆº[ºÑÁ yr¼jÍŽPÝHIÉ +tb ÛÙ³Dß]*BÅjsÚÎC€1\šÔ±« šðAfâhQA»Bì:¹æÂ Ñš*—iø—[úSˆxìë“>üù ¡ÖýØ\&¿¥¶Fé:õìhU ååô±Öz8ö§»Å´ÉuçìØkâ²~TX=믽ºÕ7ÕÈDz›VOb"âèK… ñ›+éçê›L+¯}‡ù ‹hl}é´ª¼"zÏM‹ÎŦÜÙ/ÿ¼çœÝ7ý°q14{È«¼âæ˜LcUÝUÆ3I´)Ü`UàîÌÝzc™>ªÖ ú%š†«`]ÍÈæ¿JÜ«Ñ?Nø 5ÉúÛ˜X_4t¶}+H¯¿Æ`¾<,Ì…±ÿ:ÕÐZ'ºÞ²µ¥6L¡…žK7ŽùÖª-Á–®‹çôîKÍ,¶ÄX¬í¢´uH§´Šjœö[\%—¹¯¡³ÿÎ%Q¾(÷€Ù±þ®úz‰ìðÝ'Äñëo›ÎânS7BrŸ¶È“*WBœ¸dý@ Þ:L Ø?Üý‡ÉìÖ}ÍVVzÑ|“šœŒÝZfâd æClgpˆÚ•îI® ŸQªfÿb}Œ4_ýTâDƒ]„LK:?kîSÉßøsÿÛÉ ç|â: Üï=¸x¼;é?óóþJƒˆÃ¯!<¡pµõÓZe°Ð†rRÐIbíêG€m\ôyú”`–´S9ƒ$”dm-Z@e<³É”Xš uΜãVìÍ¢n$Âïµ8V÷nyW/¿ñ=ʸÚ% à<æ!ûó2áÏcÎ o²ì…½ø®^nçäºêbÅà'L3J‹¦T2«¼À©‹–¼}V¾iæRxJ lÅtòз´Þ†Æ¤‡9D²ƒ×ø|ÞŨÙZÆ4±ƒÂClh׈ys}o¯s—æ©é0£¨Éf+êM.z•Ö™¬,©…Î3áv&o1ž£öU•ÉO‡ÓeGÿáÈý§0ðéÈ—{,´E‡gS½su*{¶±î9L4Ÿ­M8É‹d endstream endobj 919 0 obj << /Type /ObjStm /N 100 /First 915 /Length 3736 /Filter /FlateDecode >> stream xÚí\[sÛ6~ׯÀãvvBÜo3™ÎäR×¹4Ml§NšÉƒb³‰¶²äHr›ì¯ßïDQ¢cÙÒî>dÆA8ß¹ãf¼`‚/™”WÅ”V¸j¦MÀÕ0ã ®–YquÌEº÷,zXT4?2)´ê… @È`DEeA2(&µÃø ™4D$&m”èX&]¤'ŽÉ é‰g2*0SBÈ”4®¢`JY`b¦Ò`;D0k€¢fÊâ.€5å…FÇ2$¦GÇTT`#z¦…10- @¬•½(Ó’G!IjƒŽbÚbj-@AHa˜4 ËtÔ4Ø1# öÌHKƒ3ÊÑàÈŒ ,3ŒEÈfˆE©˜ñ`,JÍLc7&jÌ’Ya!¡l•f­„J¢’è@&R Zö¢ÒÌ)àDeÐÁ]T–9¼b$­:žù hV`>ѱ ¨:³0ÁG(“D ¾5©/½ÂLCÓ¡µèI. vˆÆJPFFRÆNbˆá˜Ô¸–,pn1C‘³E‹Ju°gÁ›h1CyÕa†6ÐÞéËjˆ!„ª&e8Ôà,½³ÚöèêœÀÌ3 apð§!¿„jcrjiD”ô£áÇ:‘ÖÂÐ4ÈÁûM ž‡ý`>x,¨k¨@ÂpŸu’z4Ì)ô <@:Â3DÌêQh9K½HãzF“ÎS4”Ìf} Øöþý?ùzY3þ`4ÏzüøêÃ,Ý?Œþìñ‡ãÉy=aï(pÅû?ªÏfì ¾ p*Må)¢¯äUBUÖYŒ{Àîßgü˜ñŸÇ'cƳhýûñÇ~îˆL¥ásL„p%¢Û/¦×U€˜AVNù˜FíÓéJSfšczYÁ/6Ëw„iM%tÓ‰Êm†4»‚4ª2 kZQ)%7BZ±#H­+¹DÔ±òVmÖk¸¢•ªòr¥¯({Y¤T,i•v/v\àyWi)3âE„Íò±#DGªÑfGxJWÞ¨Œ§ee¥Þ/žÔò˜ñ:‚}gXX’<9„%EeÂæ¥ÂªÝàaåÆò”àlŒUôj/«ÄŽV"¬ /D¤Ò¸_<¯*m²kZªÃ~ñT¨œÈ™ÌjW ¿Ù5åŽ2'Jàʆì.VÙÊvèSÝY>_i{V`òOÚJ˜Í+CÜ œ‰¡Ò¢À ,DZí.Àb&{'ŠâJȰW8ƒa—à–!aö—}u=V…ì›qãæT¦ôŽð,ùcŽ=ã° m%w‡«9KiÁÝkè! ^†¡òn_‘—át¨u³65 î^ÅÓ>VÖ<Ôƒ¾£Ü²%öcÏ`Qj¿úTH'.»‹Öô,îÕ=5²¥.+ƒVªR~³>ÕŽj@téËJ‹Úþ)÷Ч/•ÏÉ rVÊ„ýâÚ»gùbÿWÿTK‘Êò)_튇]ɧ<äËñ 4ö+a¿ÙZaQReO¤PI(ç÷+Ÿ Ê%ÃISáö GÇ&KG'®+Úw‡mW,kŸt²’Ñ.w´cOÇeKDgΩýâaÛCÁ3™û&Ùå1{¥Á#Æß¼ýEÁ¼lt5¾Ÿ9f‰Ì×ÇÐ aˆå&¤ÍÜWé,3÷±Xå.(ñ—“ñÙq Žùø€ñ“úËŒ%w* .yß{g©Âo°®²¥Mïè Õ­®bgë=2*W…ùX@3=Ô|nD:Våq&žÛ<$ƒ6ûÍ‘}_ÚÒ| @·Bí.m“·Üf,ƒ¾.m~’E÷n!4í[Ó;‡w!–i~§SÁ*™fçóÍ"é$ÓÉó2åÜf`^¡žÇ¥V ¼T+\"ÞTÃzEI \ì–zÈzM{{ÙôŠªrl-Gæ÷FPhÑ+¦Z¼Éä~KÈä{Š*Çï¿ÿå_h^‡ë¥–ì€m,„Š+mÐô$·ÊScJo…Xû XÃ3Æ}%3•¼“fÑ}*e€’2è±j´‰DZöš£¬fòÍw 7±Öõ«Ö¸ÈTiC¨J›Ÿx D¨çb9’Â,.éT#‚¡0Ä8MKÜ"5Òl…#×—÷åYš[¨£Ü—Eå…>ïj_'‰ôRÐv¯¡‚D¬X£ÑoØ/=]±ªZÒ(¦°«£óeJʼn^6Hãm ÷s›É¿\zý@4B¦!H5´ï s”¬¼ÍmÀJ«é¤é< ê”Ie©-##" {G#Tâ,#XIhA&.]¤Ñ¥ŸðÓÚ½ÆÒfŠÍ·Úfmej×qz“¶Ðl´«9&?ñ&…ƒH.•e¶ô—rÈâ~^ÓÓ4N‡l ÒÉáåõ”Õ<¿ ¨´V' „<2µ1†´À-ŸÐ1°^ÑkS+M™ò²Y²Ûâ®è{ñ¬9‡žfËe Ïiè%ÑSra±â=z>Û9âɤ0¥Û}_gv¼vd°ö‹d§r®IöÒd;gÒóâ))¥¦1NçxÍÞ”<1õËóD!÷]ž•iÆ%µÜ†<†úà'å­tEµÿN !¾›üèw+&h±û^J|/%6–‰J p=8ÏÒ…z´RÜ­-s›¶•飶Tyä–e[ÓØàÒMÚ눴âÒ×.ôÉ©LFú{žÑ¦Ðy[чpÎS’HÓ‚mK?è˜Ò*`m—–4W€¥tªtsK_),tœ¦6šYäÛ˜ˆ’Ó5çg¬ê¾Œ§§sùÓÓHm~µ/#–có{c‰ƒ0ÓrTz—5”û©}ß8r¡CŽÇõôl2¸œ'ùÐãEÿož¼úíôŸ~yøF*¼ö?N™É#>aïîYÍî©ô͘Žä×tð2=«G3úV£Çõ/ëÁÇO¸ ®Ç †ÞÝ“ôòɬ?œ=}ÖLôøñ¬¾ø F‰=þ¦L‚»Æ§þ„NOþÁð‡üÌâüg~ÈŸðgü9ÿ…¿à¿ò—ü?âÇü„¿æ¿ñSþ–÷ù~ÆÏÆÃñíÅEŸŸóš'ÂüþÇ௚ÿ1¾šðüð?ù_ð F5ó1ÚK~YOãs>áS>­ÿªG|:øÂg|öiR×|ö÷˜_ñ¿øßü ÿÊÿ]OÆ?dÕ PÔ†ÎVO·ºU}xttòóK¨úÑñ#)6êZR5Ež÷«ªF¸ªj½TµèгW 5kÙTsjƒn ˜2†¦ô˪tné½~zøâ1¤ûåI‡p÷´šKgÂ7I_çH÷Hß1vU¢°D?¿|ðâäM–¨#4´œKDzîD"g·‘Ȉm$zùêÉó“Ã$QÜ,Š ´»2‘ÙJ µ@'GÏN}Žº| *‰xAåb§8ë¹ëé5Ùë ò×ïÄþ Iìäög=ÖÌæýIÊbíìv>û“E’«/ÎûÓO¼¥ Rý xú¡ä7\æ¿O_/?!½ ø¿:aR©—áKvüÌ?_gõù‡a0¿ÉcÒÝòy~˜óéÅ s¿Ì¬Ó!1Ú‘_×3¬Ù*þ:üõõ3ZÌŽ:Ü[/Ü[»xÃ5Î=_›ÖW¥kl³Ñ2Ÿo¶:mÐÞVüŃ¿½~ í?ïŠ&7ÏàRé;¥‡¸PàÍ©]Ìé”hJN7ý³¥ï ÒóF· €¬äÙ7ºÕrúêðÙﯓBONºTª(AiÚocž¿Ó.•rE£t»Ð¨RªK£×$¨¬ÍC¤%Ò$9褚’gEi©bé‹­ ']ÎëÉôl<©»k%»ÕJupðöÙª&Ž;}±¬½1RbÝ®H·7 åÐY”nJ«Âmµj>zzrú„„{ÛéHTÑQ IÚvÚ¥tˆºÛ­ÃFtúÅÙ`r6¬ÏÆ—_'-¹¶J¿ÇÇO~:¦÷¤»´‹bvU0…k«ÜäÕƒTèÎ=ùr%Ô¿®J¼UÊ|{øôÑ‹‡$qg|›ÞVß)¼oW~Ü ø¸@ú›öGçÈ¢gƒ9ÂÕEîÏÃóz™\s™²HP„P¡R/J–’n]É|¾êyýålØ¿híÝ>Nê>¸XOLÃz:ÍËåÕÅÈ1ø8úf9C žçüËáÕ4e´z:€µy]³EI³¡œÙ” 7äí–’'O?}qœ­£´qÅÏ ýŠpg?»¦°ÙTæ^çgk^¶oϪלéÿÙ:Šâ›y‘ëXUŸ×ÐCØïaZ§o]ÖŽ|Vœ.ýSC"É“錬Îh1|Þ/7RØéà|öiÊèß'¦±'ã×#Ès^3¹=?kç"m†|›¡èWK†”ßCí£Œ6?±Í ~èfÁNؽ}ìÐB7òæèq{ôÖA\ßüžÙÚηÁדrYÃLÃ1Õü`u;ÙæfÍ+ÉZ nTCrÜ´·gm~â7´ÓäÇ쀟õÝM‹#»æ©:v%åÚéí9joÚü¬9/•Ä ~L“]äµv™ßfgÝuS=ºáÍ·ˆ¥v1ÞFÿ–û6µaÛÚPÛóÓ.•Ûü¬¹¯^цr uÈ8K«¢j±ãäÍÙQêì¼ì¬§¨¢ÆWT“õp?¡ ,º2ùÙà|ÊÞ%EÃôé’y ³ªtÕ9FÀHŠÞ÷·¡¯óZJt+W[®ùcW7|ô.ÜÃ~]þh–þ7‡|-üû‚Ôí1B¡e¹¾c–ÏQ®úÖFd úòU—kÁÈY>¸¸=F.Pagþ)¶Ð.·•®ô †Ëú6¾`„"O˜ßy².o‡³®¬åšýÊÊr/ç÷áÖ6dz%lΊÌÝYSî¹=F^Õ™µË¾s<0[|Ûº;Èá _°BÑQ(XåÃs—¾ûá"~+ endstream endobj 997 0 obj << /Producer (pdfTeX-1.40.19) /Creator (TeX) /CreationDate (D:20181218114422-05'00') /ModDate (D:20181218114422-05'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018/MacPorts 2018.47642_1) kpathsea version 6.3.0) >> endobj 964 0 obj << /Type /ObjStm /N 89 /First 786 /Length 2726 /Filter /FlateDecode >> stream xÚZKÛF¾ëWð8>Óï°õzáDZ½9ds`4ô˜XdPÇóï÷+²ZÍG‹cä`³{ºê«ª¯ª«›’œ•¨œ²•ÄÈ[)<£S•òO]éþi+ã=ž®²‰ÎWN¸J+U9üMËPy6Zš*ƒ¹¨B•†L4 O|©0ˆSIi¢’ÊúJWI­5Öžx/7ÊCØÈx;•.F ì=„-„ƒ•@8*[AÁ@ØÀŒð†+JZk¸¢45\ÑÂÓøç £ ld›²€äwoÑ)GKOAðŽü† T I¨…Ž{$œŠÐ4µ²Yi­"9^i#À½ÏFL•¶`C‚qí$dàöš€°n#¡ƒGÜ‘–#0“FVFJàhAðÄheÒ(aÏh‰ìÊrLAØJ)!l}ØD*ã@T„ƇPEnBD潬,‘aØJ©0ЕUð0";a`Qš(Ê1b›ˆTZïI+V6€‰ˆò°‘¶“¶w‡P1ЕóT:ÁT^’±¨/؉(o©›Vm"¼ DRÏÞWœƒp”U ’ŽQ¡-é*DrÙ‰B’ &I‹ö¤Œ›Ÿ~Ú\|øÚT×ïëÛæ¸¹~q¸ßŸ*·Á¼k0¢M!ª_7ׯۛcõ»E ˜b?(~ºá‰4 OÃÏ@Ï?6?ÿü#6ìØ†SŒ­Ø–æ¹f[F Ok³¡/Ù𦫠Œ¥{kì°ƒqìToýsXEÙs#ÂðÔâïÛ@g@âjÕ@´5<÷–ò¨‘xÉ5F *z#ȤDݳgp(”DôLùß÷§]»'ý—mw<õ»°·ü¦ÆLOàö¬Ûžv V¹Ÿa(†á9†yß5ßúÆL³©¶ŒgméVµÍ0{×|Ï.ͰlÆR+XJ¸1VÙ/yÆ äŒEÇÅÈ/Æšj ŸµÍª¶šx"JX™_!V°è<a•üRñÌ¶Š®ŒÅÚª¤m³ö”ß3£ì û9TÓÙ±¡š8H®¦§fnäL¼ a͈#‡“ûS¬à3Ö, I{À ¥pƒÎÚbMÛ‰§»ÃËgâ½[Å2¬’_>§Á«U¬ C>”°2Û.¬a97Á*±í2Ûn•m§&X¢„•¹w«ÜÛ ÷®Ä½ÍÜÛUîí„{WâÞfîí*÷v½-qo3÷f•{3áÞ–¸7™{³Ê½™poKܛ̽Yå^O¸7%îuæ^¯r¯'Ü›÷:s¯/p?hëÛ:³­VûŠš°=keÉ;•¥­žZ™œ÷2•³¢ÌšÍÉá–¢™aå¬ÌŽÙ³6c•¢ÏǬš³3Û¥ƒUåƒUÉÕÆ/'yHL2wr| ¨é¥â©š›ÌéÒ5‘¥íÏ_5;§7óE‡Ï_3uXŒN$;ìæ&s~fÇôÙÈ`’¯ºm™f9;˜“©ø³€«§êI%Åð©ÂýÝñP<©ôЋ0‘41<†ç0®ß´wí)aÒÒscRC\²ªNH8–&'RŠÇcvOŒÍÜaÒÒÒX„87Î0D0žSpÔ§¿S(ì"?ãÂiiaI!”Àô(D8D…@¢Hà@1:ùT“>ÂÉÆ“ÖÆàšc75B1–A5b1޽Ð&q«¡˜Mžº¹-b+KS Ó£)–d—b‰<¦Xbò±Dv–Ü‚BB¼*X2ˆ$2kXÁf ‰L¡ŸÉ’¼UÉ”¥º]„E ´¶´æH™ƒ1ž”“9DcSf ¢±†S–²‚TÂÂ`imaÏJ’gÂ,m2Éž[„dm‚¥˜³`-M8m–^î3Â¥µ¥AŠI&$ŠÉ'ëSªC jËRNÐ{â(C>&öKk {N‘<;ë(&þÜóÊQ®Dgi¼;G>2»ÈN.2H¸´¶4ˆ˜\J¿‹4ažbâzA ì‰ï]’¢† $XZ[Øó´ëR)xCž3‡žjO&XÚ$gžjš£°v B öªÐº"I3Ïþ+Œøµ©oèYÿã{}÷u×<Á릉|ørèN4xq åS{ØO¤u*Àg»Ýá¯vK«Ÿö7 eΫ§¦Û×§ÞÔ¿ö˜|®·d,õɲÀ̱E;£Öù¸æ‚ˆgÇãaÛÖ'v÷åý~›ëEhPïoèñ¼Ýß@ìH±0uÏëc»íך/õ·öÐa-±@âõŸ»fÎ.Ø»"`¤3Y”xÝ<ô˜ø_ê®Þ"!¢¯÷',¦ÌH´ô&¥î¦=õtËe­ÿ­P׌,ÈL¡õð‡nZ+ð)µ÷‚Ü«öx:tJsAèu»Û ѥð ôöðmq—­}ĵ†L¹³Ä¨ 1G*éÅŽz$Æ‹X%²F‚ÿ©»–ª¥7j“[ûmóõ4¤þ¦ùþ„¾J=/Qûz7,·¼3÷ÇSw¿=Qu¥&õâÔÞm:*±tÐååQà*uŸY• [y¸þÎX)SXP1–ù­ã VJ.]àJLÆÔ$ñ¾ûÔÓ5ýò/‡íýî´u‚xÓn›ý‘úUŠñÕá¯q‡íñÛ¡û_O3ŽvÒnîçž¼; Èà;ØÂê®_~[o»%#.(+]R^Й»ú+9§Ù¹·íqÛìvõ¾9ÜgM&^’§;Ý€ßnÚÏLÁ°KTº=¼ÝÐîžu·=©„Ÿnï»ÃmWßݱò_íé =9©Rƒ\ôîs@? ² dÜ`ÇÎñWÓõçxÇéÛØñ©¶Þ‘`º¬M;õþ[³o›ýp†ŒùJgþXô7‹B¤W¥MÝm¿ g’áÍò±éPã7oë}}ÛSJg;‡÷éÔîÚÓüî–/<#—ÊJç Ò÷ó¿—òùµ;òksäó7z]|ë6 @~Uü*ùT|Ÿ‹üΗï»ýûÓø6̈|ºG¾~F~ÅüZ¹åÄå-°¿ï®õÐd}ä÷‘È7“âåÞôCìòËiäwÍȯ–1–Ù\Çü¥9B4Î>éî@ñ¢>Õ»ÃíføFþåFúaÅè#œ¾vc<ÂsÛPqWןŽÍùgÀþ?7€p endstream endobj 998 0 obj << /Type /XRef /Index [0 999] /Size 999 /W [1 3 1] /Root 996 0 R /Info 997 0 R /ID [<1F81533EE8881D446C45723BA173F06A> <1F81533EE8881D446C45723BA173F06A>] /Length 2376 /Filter /FlateDecode >> stream xÚ%˜[lUYÆ×ŸJK[ ¥\Ê¥zƒ½½@K¡«WèB)´(ØÄ0f¼Ä1f4fžÆcâD£Cf2šF㘥9ÎŽãDÍø4FžœLt=ø0D“IŒz~/¿¬õísöÙ{ßÿ¿×:Î9÷?sn»3—½VFqÞeÎU(O+_/O á X+æšžH»ÅG 3Wõ5iËL‹` ¨[A¨Û@ ¨u`;¨;ÀNÐvF°ì{Á>Ðöƒà 8šA 8 Ž€£ ´vÐ:Á1ptà$8úÀiÐ*ÌÕüI©››žsåiœ³à*XÉœmÖà8 ÚÀ1pô‚~pŒ‚ 0ÊÈ·‚z°œ*çTù)pðÝÜsigÀYÐÀ çÀy0zÍí™Ó s‚+` ÜÍ\Öî@Ø Nƒ›e¤1¾q[,?ƒ’Î7 .¢M¡é‡.>§ÑtºÈq´4]ϯzmM×<¦ÑxÎ%ÝÌ ¸Œ¶„¦»¼ô쯡éö1¥zí&š\‹h·Ðd-nUs¿›ÛÑz™^×ÑÐd¼â}í Z7Ópíšò¢ÒXE;‚¦ ­ÛhíhJØ:¸ƒvMÑ» î¡BS&7À}´>4…õ·P®Ð‡%ÇÓ Ê‘ÒÚ”i¬@;Fø#e· ]D£*"ÉÚæ%4Ê%Rº±M&SG‘"Ž5h—Ñ(°H9G¥nQ¢ò"…‰í&Í£DIFJRì‘ꎪÐ1sG;ôrà¶÷n€%ŽªP’ñйî¿Ð‚âu°hnð«úÚ*Ó@£esã]úÕ×ÌÍ¿­émpÜ1·2(bŠ*M7ÌmlhôÀ¬çN˜¹O¯jªÂQU”»üÞÆ³ kŒª@¥¹3P¥¨ ªÍ}ýCiÛ€"_kîåÏJ#Ù›;Ì}§[Ó= Ñܣ㚒ñM¼¹×Üë—¶ŸT·hûÍýð驎‚s?y¬ih5÷‹÷5íæJšvƒæÞ¹©)Ùì1÷çCz°ëLÁYsý>Bûß2÷þ—4½ÆÀˆ¹¾%mLoî£/J›ÓfY®é<¸ æÌªž.Ôæ®e Ž¹dÖ𜾡W¥º­Ú«z§žø] +½evp^ÖsQ‹”µÈ=r™wǬÓkjL7ʬєþ—cm^0ø©´"À²¼Òlø¡®”ËÈkÝ,ßÔ¯jÌ&žÕG¸ª\ýJͨÁl¡IçkjFûæåûÌVŽª#á`Þbö±_KÃÁ¼Õì“ufžK®nÑiöù:}„•B®nÁJ!ï2ûò?tà$ßàAä¬ò>³—¾¯¸šŸfßzGk‹|Œ€K`ØìÕ·u§óI0fö£g¥±üȧÌÞ|¨é4˜—Íâçt¹LÁ¼Ùo;ô9-Xô¯šýîi¸šßËfï.HÓ­b|ŽÓ9&ç«f—t“sü͈þ}@küÍË¥ûä9ýø}ËÞú½l˶|¤i¨´¬¡NÓ­ ”×µÍEiÛÀvPkÙ±W¤Õ`¨·ì̸4€`/h´ìB›®àÓý`ŸecÏèÃMà8`Ù亴ƒà0h¶ìò¥µ€VpIJùÃÒŽ‚ÐfÙÒÏ¥µƒã Ó²•­ÒŽÑm5: º,[ýŒ¦'@8eÙú/¥uƒ>pôZ¶q]ô"è·ì4çÁeÏÏJÓ{AMز´~Ü]£–½Ô«¼Ú'Á8³ì›A<˜–}ïWÒ¦À0cÙžÚxÌy°ÁU°®ë`Ü+`ÌZöãkræ*Ð nƒuphE{l€ûW¸­”`Ñ›Š€„¥J@š KÕ€ %•jJä*ÕÒ”HN"C‰\¥FÀJ:íD*í$'‘¦tšDR3 /‰ ¥#€¨$â“Ú)I$'u‚c€Ð¤.@,QI§‰H¤$õ²‘XÕ§3€”$‰D$R’†aH$±4H#€l¤Q e‰HD áoÂó4°6awš˜œ09)*k–ýì,¾•2Ë¿ +0/á~Âý„û ÷î'ÜO¸Ÿp?i;r ƒ´0>a|Âø„ñ ãÆ'ŒOeã ¼+ ž5’Ï@TÞû~ ¨[kVÏ"Õo5 Ô¶¾°fõ;Û¿ 4‚Ý€•–ß xÑû&°l.<‹Yß ZÀaÀbÖ­  °˜õ Ð<» ßN^žÝ„g•ëYÖú^ÀÂÕ÷¶ ~ s€­‚T¼¿Fk[ÏÁ+4åšþCbŸeÿþFc€5¡gÑëYåz¶žM¡gèÙöy¶žý‚guèÙöyöy~°iðT²gŸçY;úë`°Šô+€ÝgUêWÁ¸ ÖÁp°`ö¬ý}€ûAÝ÷îܸ´êÃý€û÷îܸp?à~Àý€û÷îܸp?à~Àý€û÷ƒ–y¸p?à~Àý€û÷îܸp?à~Àý€û÷îܸp?à~ñg,ûàÛºÕ“Vü[¿Fúó‚0ÂØZ¶‘5 l²ÈF l²†­àöêT#V˜|M£ VxæUF­ð•÷4ºh…ïÖhtÉ oŽi4f-ohä­b}^£q«x´S£ «xïy&­â_‹MY±þ]¦­8Z§ÑŒ¿ñ‚FÚ‡b^©ÂŠOVÕK´ÇÁÁ–ˆrI//¢\"Ê%mÓ´×%±%íb´MÓ¾L^ý¡ÿ-ôG…~H;\mÓôG…þ™ ±%msIlIÿLh×FbK$¶DbK$¶tÓŠŽ:+þ÷Sîÿ.æX endstream endobj startxref 392816 %%EOF readline-8.0/doc/Makefile.in000664 000436 000024 00000017342 12416766051 016060 0ustar00chetstaff000000 000000 # This makefile for Readline library documentation is in -*- text -*- mode. # Emacs likes it that way. # Copyright (C) 1996-2009 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . PACKAGE_TARNAME = @PACKAGE_TARNAME@ topdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ prefix = @prefix@ datarootdir = @datarootdir@ docdir = @docdir@ infodir = @infodir@ mandir = @mandir@ manpfx = man man1ext = .1 man1dir = $(mandir)/$(manpfx)1 man3ext = .3 man3dir = $(mandir)/$(manpfx)3 # set this to a value to have the HTML documentation installed htmldir = # Support an alternate destination root directory for package building DESTDIR = SHELL = @MAKE_SHELL@ RM = rm -f INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ BUILD_DIR = @BUILD_DIR@ TEXINPUTDIR = $(srcdir) MAKEINFO = LANGUAGE= makeinfo TEXI2DVI = $(srcdir)/texi2dvi TEXI2HTML = $(srcdir)/texi2html QUIETPS = #set this to -q to shut up dvips PAPERSIZE = letter PSDPI = 600 DVIPS = dvips -D ${PSDPI} $(QUIETPS) -t ${PAPERSIZE} -o $@ # tricky # experimental; uses external texi2dvi for now; this needs pdftex to be present TEXI2PDF = texi2dvi --pdf # These tools might not be available; they're not required DVIPDF = dvipdfm -o $@ -p ${PAPERSIZE} PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@ RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \ $(srcdir)/rltech.texi $(srcdir)/version.texi \ $(srcdir)/rluserman.texi $(srcdir)/fdl.texi HISTSRC = $(srcdir)/history.texi $(srcdir)/hsuser.texi \ $(srcdir)/hstech.texi $(srcdir)/version.texi $(srcdir)/fdl.texi # 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 rluserman.dvi INFOOBJ = readline.info history.info rluserman.info PSOBJ = readline.ps history.ps rluserman.ps readline_3.ps history_3.ps HTMLOBJ = readline.html history.html rluserman.html TEXTOBJ = readline.0 history.0 PDFOBJ = readline.pdf history.pdf rluserman.pdf INTERMEDIATE_OBJ = rlman.dvi DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ) $(PDFOBJ) .SUFFIXES: .0 .3 .ps .txt .dvi .html .pdf .3.0: $(RM) $@ -${NROFF} -man $< > $@ .ps.pdf: $(RM) $@ -${PSPDF} $< .dvi.pdf: $(RM) $@ -${DVIPDF} $< #.texi.pdf: # $(RM) $@ # -${TEXI2PDF} $< all: info dvi html ps text pdf nodvi: info html text xdist: $(DIST_DOCS) info: $(INFOOBJ) dvi: $(DVIOBJ) ps: $(PSOBJ) html: $(HTMLOBJ) text: $(TEXTOBJ) pdf: $(PDFOBJ) readline.dvi: $(RLSRC) TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi mv rlman.dvi readline.dvi readline.info: $(RLSRC) $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi rluserman.dvi: $(RLSRC) TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texi rluserman.info: $(RLSRC) $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi history.dvi: ${HISTSRC} TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/history.texi history.info: ${HISTSRC} $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi readline.ps: readline.dvi $(RM) $@ $(DVIPS) readline.dvi rluserman.ps: rluserman.dvi $(RM) $@ $(DVIPS) rluserman.dvi history.ps: history.dvi $(RM) $@ $(DVIPS) history.dvi # # This leaves readline.html and rlman.html -- rlman.html is for www.gnu.org # readline.html: ${RLSRC} $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texi sed -e 's:rlman.html:readline.html:g' rlman.html > readline.html $(RM) rlman.html rluserman.html: ${RLSRC} $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texi history.html: ${HISTSRC} $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/history.texi readline.0: readline.3 readline_3.ps: $(srcdir)/readline.3 ${RM} $@ ${GROFF} -man < $(srcdir)/readline.3 > $@ history.0: history.3 history_3.ps: $(srcdir)/history.3 ${RM} $@ ${GROFF} -man < $(srcdir)/history.3 > $@ readline.pdf: $(RLSRC) TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) $(srcdir)/rlman.texi mv rlman.pdf $@ history.pdf: $(HISTSRC) TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) $(srcdir)/history.texi rluserman.pdf: $(RLSRC) TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) $(srcdir)/rluserman.texi clean: $(RM) *.aux *.bak *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \ *.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o \ core *.core mostlyclean: clean distclean: clean maybe-clean $(RM) $(INTERMEDIATE_OBJ) $(RM) Makefile maybe-clean: -if test "X$(topdir)" != "X.." && test "X$(topdir)" != "X$(BUILD_DIR)"; then \ $(RM) $(DIST_DOCS); \ fi maintainer-clean: clean $(RM) $(DIST_DOCS) $(RM) $(INTERMEDIATE_OBJ) $(RM) $(PDFOBJ) $(RM) Makefile installdirs: $(topdir)/support/mkdirs -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir) -if test -n "${htmldir}" ; then \ $(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(htmldir) ; \ fi install: installdirs if test -f readline.info; then \ ${INSTALL_DATA} readline.info $(DESTDIR)$(infodir)/readline.info; \ else \ ${INSTALL_DATA} $(srcdir)/readline.info $(DESTDIR)$(infodir)/readline.info; \ fi if test -f rluserman.info; then \ ${INSTALL_DATA} rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \ else \ ${INSTALL_DATA} $(srcdir)/rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \ fi if test -f history.info; then \ ${INSTALL_DATA} history.info $(DESTDIR)$(infodir)/history.info; \ else \ ${INSTALL_DATA} $(srcdir)/history.info $(DESTDIR)$(infodir)/history.info; \ fi -if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ install-info --dir-file=$(DESTDIR)$(infodir)/dir \ $(DESTDIR)$(infodir)/readline.info ; \ install-info --dir-file=$(DESTDIR)$(infodir)/dir \ $(DESTDIR)$(infodir)/history.info ; \ install-info --dir-file=$(DESTDIR)$(infodir)/dir \ $(DESTDIR)$(infodir)/rluserman.info ; \ else true; fi -${INSTALL_DATA} $(srcdir)/readline.3 $(DESTDIR)$(man3dir)/readline$(man3ext) -${INSTALL_DATA} $(srcdir)/history.3 $(DESTDIR)$(man3dir)/history$(man3ext) -if test -n "${htmldir}" ; then \ if test -f readline.html; then \ ${INSTALL_DATA} readline.html $(DESTDIR)$(htmldir)/readline.html; \ else \ ${INSTALL_DATA} $(srcdir)/readline.html $(DESTDIR)$(htmldir)/readline.html; \ fi ; \ if test -f history.html; then \ ${INSTALL_DATA} history.html $(DESTDIR)$(htmldir)/history.html; \ else \ ${INSTALL_DATA} $(srcdir)/history.html $(DESTDIR)$(htmldir)/history.html; \ fi ; \ if test -f rluserman.html; then \ ${INSTALL_DATA} rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \ else \ ${INSTALL_DATA} $(srcdir)/rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \ fi ; \ fi uninstall: $(RM) $(DESTDIR)$(infodir)/readline.info $(RM) $(DESTDIR)$(infodir)/rluserman.info $(RM) $(DESTDIR)$(infodir)/history.info $(RM) $(DESTDIR)$(man3dir)/readline$(man3ext) $(RM) $(DESTDIR)$(man3dir)/history$(man3ext) -if test -n "${htmldir}" ; then \ $(RM) $(DESTDIR)$(htmldir)/readline.html ; \ $(RM) $(DESTDIR)$(htmldir)/rluserman.html ; \ $(RM) $(DESTDIR)$(htmldir)/history.html ; \ fi readline-8.0/doc/readline.html000664 000436 000000 00001324042 13406221743 016450 0ustar00chetwheel000000 000000 GNU Readline Library:
    ' . &t2h_anchor('', $href, $entry) . '  ' . $descr . "
    ' . $entry . '' . $descr . "
    [Top] [Contents] [Index] [ ? ]

    GNU Readline Library

    This document describes the GNU Readline Library, a utility which aids in the consistency of user interface across discrete programs which provide a command line interface. The Readline home page is http://www.gnu.org/software/readline/.

    1. Command Line Editing  GNU Readline User's Manual.
    2. Programming with GNU Readline  GNU Readline Programmer's Manual.
    A. GNU Free Documentation License  License for copying this manual.
    Concept Index  Index of concepts described in this manual.
    Function and Variable Index  Index of externally visible functions and variables.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1. Command Line Editing

    This chapter describes the basic features of the GNU command line editing interface.

    1.1 Introduction to Line Editing  Notation used in this text.
    1.2 Readline Interaction  The minimum set of commands for editing a line.
    1.3 Readline Init File  Customizing Readline from a user's view.
    1.4 Bindable Readline Commands  A description of most of the Readline commands available for binding
    1.5 Readline vi Mode  A short description of how to make Readline behave like the vi editor.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.1 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. The Meta key is labeled ALT on many keyboards. On keyboards with two keys labeled ALT (usually to either side of the space bar), the ALT on the left side is generally set to work as a Meta key. The ALT key on the right may also be configured to work as a Meta key or may be configured as some other modifier, such as a Compose key for typing accented characters.

    If you do not have a Meta or ALT key, or another key working as 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 (see section 1.3 Readline Init File). If your keyboard lacks a LFD key, typing C-j will produce the desired character. The RET key may be labeled Return or Enter on some keyboards.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2 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 RET. You do not have to be at the end of the line to press RET; the entire line is accepted regardless of the location of the cursor within the line.

    1.2.1 Readline Bare Essentials  The least you need to know about Readline.
    1.2.2 Readline Movement Commands  Moving about the input line.
    1.2.3 Readline Killing Commands  How to delete text, and how to get it back!
    1.2.4 Readline Arguments  Giving numeric arguments to commands.
    1.2.5 Searching for Commands in the History  Searching through previous lines.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2.1 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 mistype a character, and not notice the 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 bare essentials for editing the text of an input line follows.

    C-b
    Move back one character.
    C-f
    Move forward one character.
    DEL or Backspace
    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-_ or C-x C-u
    Undo the last editing command. You can undo all the way back to an empty line.

    (Depending on your configuration, the Backspace key be set to delete the character to the left of the cursor and the DEL key set to delete the character underneath the cursor, like C-d, rather than the character to the left of the cursor.)


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2.2 Readline Movement Commands

    The above table describes the most basic 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, where a word is composed of letters and digits.
    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2.3 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. (`Cut' and `paste' are more recent jargon for `kill' and `yank'.)

    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. Word boundaries are the same as those used by M-f.

    M-DEL
    Kill from the cursor the start of the current word, or, if between words, to the start of the previous word. Word boundaries are the same as those used by M-b.

    C-w
    Kill from the cursor to the previous whitespace. This is different than M-DEL because the word boundaries differ.

    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2.4 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' typed 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', which will delete the next ten characters on the input line.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2.5 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. To search backward in the history for a particular string, type C-r. Typing C-s searches forward through the history. The characters present in the value of the isearch-terminators variable are used to terminate an incremental search. If that variable has not been assigned a value, the ESC and C-J characters will terminate an incremental search. C-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 C-r or C-s 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 RET will terminate the search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing.

    Readline remembers the last incremental search string. If two C-rs are typed without any intervening characters defining a new search string, any remembered search string is used.

    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 be part of the contents of the current line.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.3 Readline Init File

    Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by putting commands in an inputrc file, conventionally in his 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'. If that file does not exist or cannot be read, the ultimate default is `/etc/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.

    1.3.1 Readline Init File Syntax  Syntax for the commands in the inputrc file.

    1.3.2 Conditional Init Constructs  Conditional key bindings in the inputrc file.

    1.3.3 Sample Init File  An example inputrc file.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.3.1 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 (see section 1.3.2 Conditional Init Constructs). Other lines denote variable settings and key bindings.

    Variable Settings
    You can modify the run-time behavior of Readline by altering the values of variables in Readline using the set command within the init file. The syntax is simple:

     
    set variable value
    

    Here, for example, is how to change from the default Emacs-like key binding to use vi line editing commands:

     
    set editing-mode vi
    

    Variable names and values, where appropriate, are recognized without regard to case. Unrecognized variable names are ignored.

    Boolean variables (those that can be set to on or off) are set to on if the value is null or empty, on (case-insensitive), or 1. Any other value results in the variable being set to off.

    A great deal of run-time behavior is changeable with the following variables.

    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.

    bind-tty-special-chars
    If set to `on' (the default), Readline attempts to bind the control characters treated specially by the kernel's terminal driver to their Readline equivalents.

    blink-matching-paren
    If set to `on', Readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. The default is `off'.

    colored-completion-prefix
    If set to `on', when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the LS_COLORS environment variable. The default is `off'.

    colored-stats
    If set to `on', Readline displays possible completions using different colors to indicate their file type. The color definitions are taken from the value of the LS_COLORS environment variable. The default is `off'.

    comment-begin
    The string to insert at the beginning of the line when the insert-comment command is executed. The default value is "#".

    completion-display-width
    The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is -1.

    completion-ignore-case
    If set to `on', Readline performs filename matching and completion in a case-insensitive fashion. The default value is `off'.

    completion-map-case
    If set to `on', and completion-ignore-case is enabled, Readline treats hyphens (`-') and underscores (`_') as equivalent when performing case-insensitive filename matching and completion. The default value is `off'.

    completion-prefix-display-length
    The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions.

    completion-query-items
    The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. 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. This variable must be set to an integer value greater than or equal to 0. A negative value means Readline should never ask. The default limit is 100.

    convert-meta
    If set to `on', Readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and prefixing an ESC character, converting them to a meta-prefixed key sequence. The default value is `on', but will be set to `off' if the locale is one that contains eight-bit characters.

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

    echo-control-characters
    When set to `on', on operating systems that indicate they support it, readline echoes a character corresponding to a signal generated from the keyboard. The default is `on'.

    editing-mode
    The editing-mode variable controls which default set of key bindings is used. 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'.

    emacs-mode-string
    If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the `\1' and `\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is `@'.

    enable-bracketed-paste
    When set to `On', Readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a single string of characters, instead of treating each character as if it had been read from the keyboard. This can prevent pasted characters from being interpreted as editing commands. The default is `off'.

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

    enable-meta-key
    When set to `on', Readline will try to enable any meta modifier key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. The default is `on'.

    expand-tilde
    If set to `on', tilde expansion is performed when Readline attempts word completion. The default is `off'.

    history-preserve-point
    If set to `on', the history code attempts to place the point (the current cursor position) at the same location on each history line retrieved with previous-history or next-history. The default is `off'.

    history-size
    Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. If an attempt is made to set history-size to a non-numeric value, the maximum number of history entries will be set to 500.

    horizontal-scroll-mode
    This variable can be set to either `on' or `off'. Setting it to `on' means that the text of the lines being edited 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'.

    input-meta
    If set to `on', Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The default value is `off', but Readline will set it to `on' if the locale contains eight-bit characters. The name meta-flag is a synonym for this variable.

    isearch-terminators
    The string of characters that should terminate an incremental search without subsequently executing the character as a command (see section 1.2.5 Searching for Commands in the History). If this variable has not been given a value, the characters ESC and C-J will terminate an incremental search.

    keymap
    Sets Readline's idea of the current keymap for key binding commands. Built-in keymap names are emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command, and vi-insert. vi is equivalent to vi-command (vi-move is also a synonym); emacs is equivalent to emacs-standard. Applications may add additional names. The default value is emacs. The value of the editing-mode variable also affects the default keymap.

    keyseq-timeout
    Specifies the duration Readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, Readline will use the shorter but complete key sequence. Readline uses this value to determine whether or not input is available on the current input source (rl_instream by default). The value is specified in milliseconds, so a value of 1000 means that Readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, Readline will wait until another key is pressed to decide which key sequence to complete. The default value is 500.

    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', causes Readline to display an asterisk (`*') at the start of history lines which have been modified. This variable is `off' by default.

    mark-symlinked-directories
    If set to `on', completed names which are symbolic links to directories have a slash appended (subject to the value of mark-directories). The default is `off'.

    match-hidden-files
    This variable, when set to `on', causes Readline to match files whose names begin with a `.' (hidden files) when performing filename completion. If set to `off', the leading `.' must be supplied by the user in the filename to be completed. This variable is `on' by default.

    menu-complete-display-prefix
    If set to `on', menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. The default is `off'.

    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', but Readline will set it to `on' if the locale contains eight-bit characters.

    page-completions
    If set to `on', Readline uses an internal more-like pager to display a screenful of possible completions at a time. This variable is `on' by default.

    print-completions-horizontally
    If set to `on', Readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. The default is `off'.

    revert-all-at-newline
    If set to `on', Readline will undo all changes to history lines before returning when accept-line is executed. By default, history lines may be modified and retain individual undo lists across calls to readline. 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'.

    show-all-if-unmodified
    This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to `on', words which have more than one possible completion without any possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. The default value is `off'.

    show-mode-in-prompt
    If set to `on', add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable (e.g., emacs-mode-string). The default value is `off'.

    skip-completed-text
    If set to `on', this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If enabled, readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. For instance, if this is enabled, attempting completion when the cursor is after the `e' in `Makefile' will result in `Makefile' rather than `Makefilefile', assuming there is a single possible completion. The default value is `off'.

    vi-cmd-mode-string
    If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the `\1' and `\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is `(cmd)'.

    vi-ins-mode-string
    If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the `\1' and `\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is `(ins)'.

    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 need to find the name of the command that you want to change. The following sections contain tables of the command name, the default keybinding, if any, and a short description of what the command does.

    Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, a colon, and then the name of the command. There can be no space between the key name and the colon -- that will be interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable.

    In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a macro).

    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 example above, C-u is bound to the function universal-argument, M-DEL is bound to the function backward-kill-word, 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).

    A number of symbolic character names are recognized while processing this key binding syntax: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.

    "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 again 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 GNU Emacs style escape sequences are available when specifying key sequences:

    \C-
    control prefix
    \M-
    meta prefix
    \e
    an escape character
    \\
    backslash
    \"
    ", a double quotation mark
    \'
    ', a single quote or apostrophe

    In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available:

    \a
    alert (bell)
    \b
    backspace
    \d
    delete
    \f
    form feed
    \n
    newline
    \r
    carriage return
    \t
    horizontal tab
    \v
    vertical tab
    \nnn
    the eight-bit character whose value is the octal value nnn (one to three digits)
    \xHH
    the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)

    When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a function name. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other character in the macro text, including `"' and `''. For example, the following binding will make `C-x \' insert a single `\' into the line:
     
    "\C-x\\": "\\"
    


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.3.2 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 four 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, after any comparison operator, extends to the end of the line; unless otherwise noted, 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 both 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.

    version
    The version test may be used to perform comparisons against specific Readline versions. The version expands to the current Readline version. The set of comparison operators includes `=' (and `=='), `!=', `<=', `>=', `<', and `>'. The version number supplied on the right side of the operator consists of a major version number, an optional decimal point, and an optional minor version (e.g., `7.1'). If the minor version is omitted, it is assumed to be `0'. The operator may be separated from the string version and from the version number argument by whitespace. The following example sets a variable if the Readline version being used is 7.0 or newer:
     
    $if version >= 7.0
    set show-mode-in-prompt on
    $endif
    

    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 a particular value. 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
    

    variable
    The variable construct provides simple equality tests for Readline variables and values. The permitted comparison operators are `=', `==', and `!='. The variable name must be separated from the comparison operator by whitespace; the operator may be separated from the value on the right hand side by whitespace. Both string and boolean variables may be tested. Boolean variables must be tested against the values on and off. The following example is equivalent to the mode=emacs test described above:
     
    $if editing-mode == emacs
    set show-mode-in-prompt on
    $endif
    

    $endif
    This command, as seen in the previous example, terminates an $if command.

    $else
    Commands in this branch of the $if directive are executed if the test fails.

    $include
    This directive takes a single filename as an argument and reads commands and bindings from that file. For example, the following directive reads from `/etc/inputrc':
     
    $include /etc/inputrc
    


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.3.3 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.
    #
    # First, include any system-wide bindings and variable
    # assignments from /etc/Inputrc
    $include /etc/Inputrc
    
    #
    # 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
    


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4 Bindable Readline Commands

    1.4.1 Commands For Moving  Moving about the line.
    1.4.2 Commands For Manipulating The History  Getting at previous lines.
    1.4.3 Commands For Changing Text  Commands for changing text.
    1.4.4 Killing And Yanking  Commands for killing and yanking.
    1.4.5 Specifying Numeric Arguments  Specifying numeric arguments, repeat counts.
    1.4.6 Letting Readline Type For You  Getting Readline to do the typing for you.
    1.4.7 Keyboard Macros  Saving and re-executing typed characters
    1.4.8 Some Miscellaneous Commands  Other miscellaneous commands.

    This section describes Readline commands that may be bound to key sequences. Command names without an accompanying key sequence are unbound by default.

    In the following descriptions, point refers to the current cursor position, and mark refers to a cursor position saved by the set-mark command. The text between the point and mark is referred to as the region.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.1 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 the current or previous word. Words are composed of letters and digits.

    previous-screen-line ()
    Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width.

    next-screen-line ()
    Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if the length of the current Readline line is not greater than the length of the prompt plus the screen width.

    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.2 Commands For Manipulating The History

    accept-line (Newline or Return)
    Accept the line regardless of where the cursor is. If this line is non-empty, it may be added to the history list for future recall with add_history(). If this line is a modified history line, the history line is restored to its original state.

    previous-history (C-p)
    Move `back' through the history list, fetching the previous command.

    next-history (C-n)
    Move `forward' through the history list, fetching the next command.

    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 currently being entered.

    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 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. The search string may match anywhere in a history line.

    non-incremental-forward-search-history (M-n)
    Search forward starting at the current line and moving `down' through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line.

    history-search-forward ()
    Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. 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. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound.

    history-substring-search-forward ()
    Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound.

    history-substring-search-backward ()
    Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. 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) at point. 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. Once the argument n is computed, the argument is extracted as if the `!n' history expansion had been specified.

    yank-last-arg (M-. or M-_)
    Insert last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly like yank-nth-arg. Successive calls to yank-last-arg move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, as if the `!$' history expansion had been specified.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.3 Commands For Changing Text

    end-of-file (usually C-d)
    The character indicating end-of-file as set, for example, by stty. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline interprets it as the end of input and returns EOF.

    delete-char (C-d)
    Delete the character at point. If this function is bound to the same character as the tty EOF character, as C-d commonly is, see above for the effects.

    backward-delete-char (Rubout)
    Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them.

    forward-backward-delete-char ()
    Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key.

    quoted-insert (C-q or C-v)
    Add the next character typed 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.

    bracketed-paste-begin ()
    This function is intended to be bound to the "bracketed paste" escape sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters are inserted as if each one was bound to self-insert instead of executing any editing commands.

    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 arguments have no effect.

    transpose-words (M-t)
    Drag the word before point past the word after point, moving point past that word as well. If the insertion point is at the end of the line, this transposes the last two words on the line.

    upcase-word (M-u)
    Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor.

    downcase-word (M-l)
    Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor.

    capitalize-word (M-c)
    Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor.

    overwrite-mode ()
    Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only emacs mode; vi mode does overwrite differently. Each call to readline() starts in insert mode.

    In overwrite mode, characters bound to self-insert replace the text at point rather than pushing the text to the right. Characters bound to backward-delete-char replace the character before point with a space.

    By default, this command is unbound.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.4 Killing And Yanking

    kill-line (C-k)
    Kill the text from point to the end of the line.

    backward-kill-line (C-x Rubout)
    Kill backward from the cursor to the beginning of the current line.

    unix-line-discard (C-u)
    Kill backward from the cursor to the beginning of the current line.

    kill-whole-line ()
    Kill all characters on the current line, no matter where point is. By default, this is unbound.

    kill-word (M-d)
    Kill from point 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 point. Word boundaries are the same as backward-word.

    unix-word-rubout (C-w)
    Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring.

    unix-filename-rubout ()
    Kill the word behind point, using white space and the slash character as the word boundaries. 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 in the current region. By default, this command is unbound.

    copy-region-as-kill ()
    Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound.

    copy-backward-word ()
    Copy the word before point to the kill buffer. The word boundaries are the same as backward-word. By default, this command is unbound.

    copy-forward-word ()
    Copy the word following point to the kill buffer. The word boundaries are the same as forward-word. By default, this command is unbound.

    yank (C-y)
    Yank the top of the kill ring into the buffer at point.

    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.5 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 nor 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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.6 Letting Readline Type For You

    complete (TAB)
    Attempt to perform completion on the text before point. The actual completion performed is application-specific. The default is filename completion.

    possible-completions (M-?)
    List the possible completions of the text before point. When displaying completions, Readline sets the number of columns used for display to the value of completion-display-width, the value of the environment variable COLUMNS, or the screen width, in that order.

    insert-completions (M-*)
    Insert all completions of the text before point that would have been generated by possible-completions.

    menu-complete ()
    Similar to complete, but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of menu-complete steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of bell-style) and the original text is restored. An argument of n moves n positions forward in the list of matches; a negative argument may be used to move backward through the list. This command is intended to be bound to TAB, but is unbound by default.

    menu-complete-backward ()
    Identical to menu-complete, but moves backward through the list of possible completions, as if menu-complete had been given a negative argument.

    delete-char-or-list ()
    Deletes the character under the cursor if not at the beginning or end of the line (like delete-char). If at the end of the line, behaves identically to possible-completions. This command is unbound by default.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

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

    print-last-kbd-macro ()
    Print the last keboard macro defined in a format suitable for the inputrc file.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.8 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-lowercase-version (M-A, M-B, M-x, ...)
    If the metafied character x is upper case, run the command that is bound to the corresponding metafied lower case character. The behavior is undefined if x is already lower case.

    prefix-meta (ESC)
    Metafy the next character typed. This is for keyboards without a meta key. Typing `ESC f' is equivalent to typing M-f.

    undo (C-_ or 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 executing 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 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.

    skip-csi-sequence ()
    Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is bound to "\e[", keys producing such sequences will have no effect unless explicitly bound to a readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[.

    insert-comment (M-#)
    Without a numeric argument, the value of the comment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value of comment-begin, the value is inserted, otherwise the characters in comment-begin are deleted from the beginning of the line. In either case, 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 output. 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.

    emacs-editing-mode (C-e)
    When in vi command mode, this causes a switch to emacs editing mode.

    vi-editing-mode (M-C-j)
    When in emacs editing mode, this causes a switch to vi editing mode.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.5 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 standard.

    In order to switch interactively between emacs and vi editing modes, use the command M-C-j (bound to emacs-editing-mode when in vi mode and to vi-editing-mode in emacs 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 consistency of user interface across discrete programs that need to provide a command line interface.

    Copyright (C) 1988--2016 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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

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

    2.1 Basic Behavior  Using the default behavior of Readline.
    2.2 Custom Functions  Adding your own functions to Readline.
    2.3 Readline Variables  Variables accessible to custom functions.
    2.4 Readline Convenience Functions  Functions which Readline supplies to aid in writing your own custom functions.
    2.5 Readline Signal Handling  How Readline behaves when it receives signals.
    2.6 Custom Completers  Supplanting or supplementing Readline's completion functions.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.1 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 prompt and then reads and returns a single line of text from the user. If prompt is NULL or the empty string, no prompt is displayed. The line readline returns is allocated with malloc(); the caller should free() the line when it has finished with it. The declaration for readline in ANSI C is

     
    char *readline (const 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.

    Readline performs some expansion on the prompt before it is displayed on the screen. See the description of rl_expand_prompt (see section 2.4.6 Redisplay) for additional details, especially if prompt will contain characters that do not consume physical screen space when displayed.

    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, rl_command_func_t *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 (see section 2.6 Custom Completers).


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

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

    Before declaring any functions that customize Readline's behavior, or using any functionality Readline provides in other code, an application writer should include the file <readline/readline.h> in any file that uses Readline's features. Since some of the definitions in readline.h use the stdio library, the file <stdio.h> should be included before readline.h.

    readline.h defines a C preprocessor variable that should be treated as an integer, RL_READLINE_VERSION, which may be used to conditionally compile application code depending on the installed Readline version. The value is a hexadecimal encoding of the major and minor version numbers of the library, of the form 0xMMmm. MM is the two-digit major version number; mm is the two-digit minor version number. For Readline 4.2, for example, the value of RL_READLINE_VERSION would be 0x0402.

    2.2.1 Readline Typedefs  C declarations to make code readable.
    2.2.2 Writing a New Function  Variables and calling conventions.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.2.1 Readline Typedefs

    For readability, we declare a number of new object types, all pointers to functions.

    The reason for declaring these new types is to make it easier to write code describing pointers to C functions with appropriately prototyped arguments and return values.

    For instance, say we want to declare a variable func as a pointer to a function which takes two int arguments and returns an int (this is the type of all of the Readline bindable functions). Instead of the classic C declaration

    int (*func)();

    or the ANSI-C style declaration

    int (*func)(int, int);

    we may write

    rl_command_func_t *func;

    The full list of function pointer types available is

    typedef int rl_command_func_t (int, int);

    typedef char *rl_compentry_func_t (const char *, int);

    typedef char **rl_completion_func_t (const char *, int, int);

    typedef char *rl_quote_func_t (char *, int, char *);

    typedef char *rl_dequote_func_t (char *, int);

    typedef int rl_compignore_func_t (char **);

    typedef void rl_compdisp_func_t (char **, int, int);

    typedef int rl_hook_func_t (void);

    typedef int rl_getc_func_t (FILE *);

    typedef int rl_linebuf_func_t (char *, int);

    typedef int rl_intfunc_t (int);
    #define rl_ivoidfunc_t rl_hook_func_t
    typedef int rl_icpfunc_t (char *);
    typedef int rl_icppfunc_t (char **);

    typedef void rl_voidfunc_t (void);
    typedef void rl_vintfunc_t (int);
    typedef void rl_vcpfunc_t (char *);
    typedef void rl_vcppfunc_t (char **);


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.2.2 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

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

    A command function should return 0 if its action completes successfully, and a value greater than zero if some error occurs. This is the convention obeyed by all of the builtin Readline bindable command functions.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.3 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 2.4.5 Allowing Undoing. The function rl_extend_line_buffer is available to increase the memory allocated to rl_line_buffer.

    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_num_chars_to_read
    Setting this to a positive value before calling readline() causes Readline to return after accepting that many characters, rather than reading up to a character bound to accept-line.

    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: int rl_dispatching
    Set to a non-zero value if a function is being called from a key binding; zero otherwise. Application functions can test this to discover whether they were called directly or by Readline's dispatching mechanism.

    Variable: int rl_erase_empty_line
    Setting this to a non-zero value causes Readline to completely erase the current line, including any prompt, any time a newline is typed as the only character on an otherwise-empty line. The cursor is moved to the beginning of the newly-blank line.

    Variable: char * rl_prompt
    The prompt Readline uses. This is set from the argument to readline(), and should not be assigned to directly. The rl_set_prompt() function (see section 2.4.6 Redisplay) may be used to modify the prompt string after calling readline().

    Variable: char * rl_display_prompt
    The string displayed as the prompt. This is usually identical to rl_prompt, but may be changed temporarily by functions that use the prompt string as a message area, such as incremental search.

    Variable: int rl_already_prompted
    If an application wishes to display the prompt itself, rather than have Readline do it the first time readline() is called, it should set this variable to a non-zero value after displaying the prompt. The prompt must also be passed as the argument to readline() so the redisplay functions can update the display properly. The calling application is responsible for managing the value; Readline never sets it.

    Variable: const char * rl_library_version
    The version number of this revision of the library.

    Variable: int rl_readline_version
    An integer encoding the current version of the library. The encoding is of the form 0xMMmm, where MM is the two-digit major version number, and mm is the two-digit minor version number. For example, for Readline-4.2, rl_readline_version would have the value 0x0402.

    Variable: int rl_gnu_readline_p
    Always set to 1, denoting that this is GNU readline rather than some emulation.

    Variable: const char * rl_terminal_name
    The terminal type, used for initialization. If not set by the application, Readline sets this to the value of the TERM environment variable the first time it is called.

    Variable: const 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 (see section 1.3.2 Conditional Init Constructs).

    Variable: FILE * rl_instream
    The stdio stream from which Readline reads input. If NULL, Readline defaults to stdin.

    Variable: FILE * rl_outstream
    The stdio stream to which Readline performs output. If NULL, Readline defaults to stdout.

    Variable: int rl_prefer_env_winsize
    If non-zero, Readline gives values found in the LINES and COLUMNS environment variables greater precedence than values fetched from the kernel when computing the screen dimensions.

    Variable: rl_command_func_t * rl_last_func
    The address of the last command function Readline executed. May be used to test whether or not a function is being executed twice in succession, for example.

    Variable: rl_hook_func_t * rl_startup_hook
    If non-zero, this is the address of a function to call just before readline prints the first prompt.

    Variable: rl_hook_func_t * rl_pre_input_hook
    If non-zero, this is the address of a function to call after the first prompt has been printed and just before readline starts reading input characters.

    Variable: rl_hook_func_t * rl_event_hook
    If non-zero, this is the address of a function to call periodically when Readline is waiting for terminal input. By default, this will be called at most ten times a second if there is no keyboard input.

    Variable: rl_getc_func_t * 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 (see section 2.4.8 Character Input). In general, an application that sets rl_getc_function should consider setting rl_input_available_hook as well.

    Variable: rl_hook_func_t * rl_signal_event_hook
    If non-zero, this is the address of a function to call if a read system call is interrupted when Readline is reading terminal input.

    Variable: rl_hook_func_t * rl_input_available_hook
    If non-zero, Readline will use this function's return value when it needs to determine whether or not there is available input on the current input source. The default hook checks rl_instream; if an application is using a different input source, it should set the hook appropriately. Readline queries for available input when implementing intra-key-sequence timeouts during input and incremental searches. This may use an application-specific timeout before returning a value; Readline uses the value passed to rl_set_keyboard_input_timeout() or the value of the user-settable keyseq-timeout variable. This is designed for use by applications using Readline's callback interface (see section 2.4.12 Alternate Interface), which may not use the traditional read(2) and file descriptor interface, or other applications using a different input mechanism. If an application uses an input mechanism or hook that can potentially exceed the value of keyseq-timeout, it should increase the timeout or set this hook appropriately even when not using the callback interface. In general, an application that sets rl_getc_function should consider setting rl_input_available_hook as well.

    Variable: rl_voidfunc_t * 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 (see section 2.4.6 Redisplay).

    Variable: rl_vintfunc_t * rl_prep_term_function
    If non-zero, Readline will call indirectly through this pointer to initialize the terminal. The function takes a single argument, an int flag that says whether or not to use eight-bit characters. By default, this is set to rl_prep_terminal (see section 2.4.9 Terminal Management).

    Variable: rl_voidfunc_t * rl_deprep_term_function
    If non-zero, Readline will call indirectly through this pointer to reset the terminal. This function should undo the effects of rl_prep_term_function. By default, this is set to rl_deprep_terminal (see section 2.4.9 Terminal Management).

    Variable: Keymap rl_executing_keymap
    This variable is set to the keymap (see section 2.4.2 Selecting a Keymap) in which the currently executing readline function was found.

    Variable: Keymap rl_binding_keymap
    This variable is set to the keymap (see section 2.4.2 Selecting a Keymap) in which the last key binding occurred.

    Variable: char * rl_executing_macro
    This variable is set to the text of any currently-executing macro.

    Variable: int rl_executing_key
    The key that caused the dispatch to the currently-executing Readline function.

    Variable: char * rl_executing_keyseq
    The full key sequence that caused the dispatch to the currently-executing Readline function.

    Variable: int rl_key_sequence_length
    The number of characters in rl_executing_keyseq.

    Variable: int rl_readline_state
    A variable with bit values that encapsulate the current Readline state. A bit is set with the RL_SETSTATE macro, and unset with the RL_UNSETSTATE macro. Use the RL_ISSTATE macro to test whether a particular state bit is set. Current state bits include:

    RL_STATE_NONE
    Readline has not yet been called, nor has it begun to initialize.
    RL_STATE_INITIALIZING
    Readline is initializing its internal data structures.
    RL_STATE_INITIALIZED
    Readline has completed its initialization.
    RL_STATE_TERMPREPPED
    Readline has modified the terminal modes to do its own input and redisplay.
    RL_STATE_READCMD
    Readline is reading a command from the keyboard.
    RL_STATE_METANEXT
    Readline is reading more input after reading the meta-prefix character.
    RL_STATE_DISPATCHING
    Readline is dispatching to a command.
    RL_STATE_MOREINPUT
    Readline is reading more input while executing an editing command.
    RL_STATE_ISEARCH
    Readline is performing an incremental history search.
    RL_STATE_NSEARCH
    Readline is performing a non-incremental history search.
    RL_STATE_SEARCH
    Readline is searching backward or forward through the history for a string.
    RL_STATE_NUMERICARG
    Readline is reading a numeric argument.
    RL_STATE_MACROINPUT
    Readline is currently getting its input from a previously-defined keyboard macro.
    RL_STATE_MACRODEF
    Readline is currently reading characters defining a keyboard macro.
    RL_STATE_OVERWRITE
    Readline is in overwrite mode.
    RL_STATE_COMPLETING
    Readline is performing word completion.
    RL_STATE_SIGHANDLER
    Readline is currently executing the readline signal handler.
    RL_STATE_UNDOING
    Readline is performing an undo.
    RL_STATE_INPUTPENDING
    Readline has input pending due to a call to rl_execute_next().
    RL_STATE_TTYCSAVED
    Readline has saved the values of the terminal's special characters.
    RL_STATE_CALLBACK
    Readline is currently using the alternate (callback) interface (see section 2.4.12 Alternate Interface).
    RL_STATE_VIMOTION
    Readline is reading the argument to a vi-mode "motion" command.
    RL_STATE_MULTIKEY
    Readline is reading a multiple-keystroke command.
    RL_STATE_VICMDONCE
    Readline has entered vi command (movement) mode at least one time during the current call to readline().
    RL_STATE_DONE
    Readline has read a key sequence bound to accept-line and is about to return the line to the caller.

    Variable: int rl_explicit_arg
    Set to a non-zero value if an explicit numeric argument was specified by the user. Only valid in a bindable command function.

    Variable: int rl_numeric_arg
    Set to the value of any numeric argument explicitly specified by the user before executing the current Readline function. Only valid in a bindable command function.

    Variable: int rl_editing_mode
    Set to a value denoting Readline's current editing mode. A value of 1 means Readline is currently in emacs mode; 0 means that vi mode is active.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4 Readline Convenience Functions

    2.4.1 Naming a Function  How to give a function you write a name.
    2.4.2 Selecting a Keymap  Making keymaps.
    2.4.3 Binding Keys  Changing Keymaps.
    2.4.4 Associating Function Names and Bindings  Translate function names to key sequences.
    2.4.5 Allowing Undoing  How to make your functions undoable.
    2.4.6 Redisplay  Functions to control line display.
    2.4.7 Modifying Text  Functions to modify rl_line_buffer.
    2.4.8 Character Input  Functions to read keyboard input.
    2.4.9 Terminal Management  Functions to manage terminal settings.
    2.4.10 Utility Functions  Generally useful functions and hooks.
    2.4.11 Miscellaneous Functions  Functions that don't fall into any category.
    2.4.12 Alternate Interface  Using Readline in a `callback' fashion.
    2.4.13 A Readline Example  An example Readline function.
    2.4.14 Alternate Interface Example  An example program using the alternate interface.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.1 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 (const char *name, rl_command_func_t *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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.2 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 (void)
    Returns a new, empty keymap. The space for the keymap is allocated with malloc(); the caller should free it by calling rl_free_keymap() when done.

    Function: Keymap rl_copy_keymap (Keymap map)
    Return a new keymap which is a copy of map.

    Function: Keymap rl_make_keymap (void)
    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 the data in keymap. The caller should free keymap.

    Function: void rl_free_keymap (Keymap keymap)
    Free all storage associated with keymap. This calls rl_discard_keymap to free subordindate keymaps and macros.

    Function: int rl_empty_keymap (Keymap keymap)
    Return non-zero if there are no keys bound to functions in keymap; zero if there are any keys bound.

    Readline has several internal keymaps. These functions allow you to change which keymap is active.

    Function: Keymap rl_get_keymap (void)
    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 (const char *name)
    Return the keymap matching name. name is one which would be supplied in a set keymap inputrc line (see section 1.3 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 (see section 1.3 Readline Init File).

    Function: int rl_set_keymap_name (const char *name, Keymap keymap)
    Set the name of keymap. This name will then be "registered" and available for use in a set keymap inputrc directive see section 1.3 Readline Init File). The name may not be one of Readline's builtin keymap names; you may not add a different name for one of Readline's builtin keymaps. You may replace the name associated with a given keymap by calling this function more than once with the same keymap argument. You may associate a registered name with a new keymap by calling this function more than once with the same name argument. There is no way to remove a named keymap once the name has been registered. Readline will make a copy of name. The return value is greater than zero unless name is one of Readline's builtin keymap names or keymap is one of Readline's builtin keymaps.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.3 Binding Keys

    Key sequences are associate 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.

    Since readline() installs a set of default key bindings the first time it is called, there is always the danger that a custom binding installed before the first call to readline() will be overridden. An alternate mechanism is to install custom key bindings in an initialization function assigned to the rl_startup_hook variable (see section 2.3 Readline Variables).

    These functions manage key bindings.

    Function: int rl_bind_key (int key, rl_command_func_t *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, rl_command_func_t *function, Keymap map)
    Bind key to function in map. Returns non-zero in the case of an invalid key.

    Function: int rl_bind_key_if_unbound (int key, rl_command_func_t *function)
    Binds key to function if it is not already bound in the currently active keymap. Returns non-zero in the case of an invalid key or if key is already bound.

    Function: int rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *function, Keymap map)
    Binds key to function if it is not already bound in map. Returns non-zero in the case of an invalid key or if key is already bound.

    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_unbind_function_in_map (rl_command_func_t *function, Keymap map)
    Unbind all keys that execute function in map.

    Function: int rl_unbind_command_in_map (const char *command, Keymap map)
    Unbind all keys that are bound to command in map.

    Function: int rl_bind_keyseq (const char *keyseq, rl_command_func_t *function)
    Bind the key sequence represented by the string keyseq to the function function, beginning in the current keymap. This makes new keymaps as necessary. The return value is non-zero if keyseq is invalid.

    Function: int rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)
    Bind the key sequence represented by the string keyseq to the function function. This makes new keymaps as necessary. Initial bindings are performed in map. The return value is non-zero if keyseq is invalid.

    Function: int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)
    Equivalent to rl_bind_keyseq_in_map.

    Function: int rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *function)
    Binds keyseq to function if it is not already bound in the currently active keymap. Returns non-zero in the case of an invalid keyseq or if keyseq is already bound.

    Function: int rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)
    Binds keyseq to function if it is not already bound in map. Returns non-zero in the case of an invalid keyseq or if keyseq is already bound.

    Function: int rl_generic_bind (int type, const 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 (see section 1.3 Readline Init File).

    Function: int rl_read_init_file (const char *filename)
    Read keybindings and variable assignments from filename (see section 1.3 Readline Init File).


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.4 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. You may also associate a new function name with an arbitrary function.

    Function: rl_command_func_t * rl_named_function (const char *name)
    Return the function with name name.

    Function: rl_command_func_t * rl_function_of_keyseq (const 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 the int variable it points to (one of ISFUNC, ISKMAP, or ISMACR). It takes a "translated" key sequence and should not be used if the key sequence can include NUL.

    Function: rl_command_func_t * rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)
    Return the function invoked by keyseq of length len in keymap map. Equivalent to rl_function_of_keyseq with the addition of the len parameter. It takes a "translated" key sequence and should be used if the key sequence can include NUL.

    Function: char ** rl_invoking_keyseqs (rl_command_func_t *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 (rl_command_func_t *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 (void)
    Print the names of all bindable Readline functions to rl_outstream.

    Function: const char ** rl_funmap_names (void)
    Return a NULL terminated array of known function names. The array is sorted. The array itself is allocated, but not the strings inside. You should free the array, but not the pointers, using free or rl_free when you are done.

    Function: int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
    Add name to the list of bindable Readline command names, and make function the function to be called when name is invoked.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

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

    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 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 (void)
    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 (void)
    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 rl_free_undo_list (void)
    Free the existing undo list.

    Function: int rl_do_undo (void)
    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.6 Redisplay

    Function: void rl_redisplay (void)
    Change what's displayed on the screen to reflect the current contents of rl_line_buffer.

    Function: int rl_forced_update_display (void)
    Force the line to be updated and redisplayed, whether or not Readline thinks the screen display is correct.

    Function: int rl_on_new_line (void)
    Tell the update functions that we have moved onto a new (empty) line, usually after outputting a newline.

    Function: int rl_on_new_line_with_prompt (void)
    Tell the update functions that we have moved onto a new line, with rl_prompt already displayed. This could be used by applications that want to output the prompt string themselves, but still need Readline to know the prompt string length for redisplay. It should be used after setting rl_already_prompted.

    Function: int rl_clear_visible_line (void)
    Clear the screen lines corresponding to the current line's contents.

    Function: int rl_reset_line_state (void)
    Reset the display state to a clean state and redisplay the current line starting on a new line.

    Function: int rl_crlf (void)
    Move the cursor to the start of the next screen line.

    Function: int rl_show_char (int c)
    Display character c on rl_outstream. If Readline has not been set to display meta characters directly, this will convert meta characters to a meta-prefixed key sequence. This is intended for use by applications which wish to do their own redisplay.

    Function: int rl_message (const char *, ...)
    The arguments are a format string as would be supplied to printf, possibly containing conversion specifications such as `%d', and any additional arguments necessary to satisfy the conversion specifications. The resulting string is displayed in the echo area. The echo area is also used to display numeric arguments and search strings. You should call rl_save_prompt to save the prompt information before calling this function.

    Function: int rl_clear_message (void)
    Clear the message in the echo area. If the prompt was saved with a call to rl_save_prompt before the last call to rl_message, call rl_restore_prompt before calling this function.

    Function: void rl_save_prompt (void)
    Save the local Readline prompt display state in preparation for displaying a new message in the message area with rl_message().

    Function: void rl_restore_prompt (void)
    Restore the local Readline prompt display state saved by the most recent call to rl_save_prompt. if rl_save_prompt was called to save the prompt before a call to rl_message, this function should be called before the corresponding call to rl_clear_message.

    Function: int rl_expand_prompt (char *prompt)
    Expand any special character sequences in prompt and set up the local Readline prompt redisplay variables. This function is called by readline(). It may also be called to expand the primary prompt if the rl_on_new_line_with_prompt() function or rl_already_prompted variable is used. It returns the number of visible characters on the last line of the (possibly multi-line) prompt. Applications may indicate that the prompt contains characters that take up no physical screen space when displayed by bracketing a sequence of such characters with the special markers RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE (declared in `readline.h'). This may be used to embed terminal-specific escape sequences in prompts.

    Function: int rl_set_prompt (const char *prompt)
    Make Readline use prompt for subsequent redisplay. This calls rl_expand_prompt() to expand the prompt and sets rl_prompt to the result.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.7 Modifying Text

    Function: int rl_insert_text (const char *text)
    Insert text into the line at the current cursor position. Returns the number of characters inserted.

    Function: int rl_delete_text (int start, int end)
    Delete the text between start and end in the current line. Returns the number of characters deleted.

    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.

    Function: int rl_push_macro_input (char *macro)
    Cause macro to be inserted into the line, as if it had been invoked by a key bound to a macro. Not especially useful; use rl_insert_text() instead.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.8 Character Input

    Function: int rl_read_key (void)
    Return the next character available from Readline's current input stream. This handles input inserted into the input stream via rl_pending_input (see section 2.3 Readline Variables) and rl_stuff_char(), macros, and characters read from the keyboard. While waiting for input, this function will call any function assigned to the rl_event_hook variable.

    Function: int rl_getc (FILE *stream)
    Return the next character available from stream, which is assumed to be 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(). Up to 512 characters may be pushed back. rl_stuff_char returns 1 if the character was successfully inserted; 0 otherwise.

    Function: int rl_execute_next (int c)
    Make c be the next command to be executed when rl_read_key() is called. This sets rl_pending_input.

    Function: int rl_clear_pending_input (void)
    Unset rl_pending_input, effectively negating the effect of any previous call to rl_execute_next(). This works only if the pending input has not already been read with rl_read_key().

    Function: int rl_set_keyboard_input_timeout (int u)
    While waiting for keyboard input in rl_read_key(), Readline will wait for u microseconds for input before calling any function assigned to rl_event_hook. u must be greater than or equal to zero (a zero-length timeout is equivalent to a poll). The default waiting period is one-tenth of a second. Returns the old timeout value.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.9 Terminal Management

    Function: void rl_prep_terminal (int meta_flag)
    Modify the terminal settings for Readline's use, so readline() can read a single character at a time from the keyboard. The meta_flag argument should be non-zero if Readline should read eight-bit input.

    Function: void rl_deprep_terminal (void)
    Undo the effects of rl_prep_terminal(), leaving the terminal in the state in which it was before the most recent call to rl_prep_terminal().

    Function: void rl_tty_set_default_bindings (Keymap kmap)
    Read the operating system's terminal editing characters (as would be displayed by stty) to their Readline equivalents. The bindings are performed in kmap.

    Function: void rl_tty_unset_default_bindings (Keymap kmap)
    Reset the bindings manipulated by rl_tty_set_default_bindings so that the terminal editing characters are bound to rl_insert. The bindings are performed in kmap.

    Function: int rl_tty_set_echoing (int value)
    Set Readline's idea of whether or not it is echoing output to its output stream (rl_outstream). If value is 0, Readline does not display output to rl_outstream; any other value enables output. The initial value is set when Readline initializes the terminal settings. This function returns the previous value.

    Function: int rl_reset_terminal (const char *terminal_name)
    Reinitialize Readline's idea of the terminal settings using terminal_name as the terminal type (e.g., vt100). If terminal_name is NULL, the value of the TERM environment variable is used.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.10 Utility Functions

    Function: int rl_save_state (struct readline_state *sp)
    Save a snapshot of Readline's internal state to sp. The contents of the readline_state structure are documented in `readline.h'. The caller is responsible for allocating the structure.

    Function: int rl_restore_state (struct readline_state *sp)
    Restore Readline's internal state to that stored in sp, which must have been saved by a call to rl_save_state. The contents of the readline_state structure are documented in `readline.h'. The caller is responsible for freeing the structure.

    Function: void rl_free (void *mem)
    Deallocate the memory pointed to by mem. mem must have been allocated by malloc.

    Function: void rl_replace_line (const char *text, int clear_undo)
    Replace the contents of rl_line_buffer with text. The point and mark are preserved, if possible. If clear_undo is non-zero, the undo list associated with the current line is cleared.

    Function: void 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 (void)
    Initialize or re-initialize Readline's internal state. It's not strictly necessary to call this; readline() calls it before reading any input.

    Function: int rl_ding (void)
    Ring the terminal bell, obeying the setting of bell-style.

    Function: int rl_alphabetic (int c)
    Return 1 if c is an alphabetic character.

    Function: void rl_display_match_list (char **matches, int len, int max)
    A convenience function for displaying a list of strings in columnar format on Readline's output stream. matches is the list of strings, in argv format, such as a list of completion matches. len is the number of strings in matches, and max is the length of the longest string in matches. This function uses the setting of print-completions-horizontally to select how the matches are displayed (see section 1.3.1 Readline Init File Syntax). When displaying completions, this function sets the number of columns used for display to the value of completion-display-width, the value of the environment variable COLUMNS, or the screen width, in that order.

    The following are implemented as macros, defined in chardefs.h. Applications should refrain from using them.

    Function: int _rl_uppercase_p (int c)
    Return 1 if c is an uppercase alphabetic character.

    Function: int _rl_lowercase_p (int c)
    Return 1 if c is a lowercase alphabetic character.

    Function: int _rl_digit_p (int c)
    Return 1 if c is a numeric character.

    Function: int _rl_to_upper (int c)
    If c is a lowercase alphabetic character, return the corresponding uppercase character.

    Function: int _rl_to_lower (int c)
    If c is an uppercase alphabetic character, return the corresponding lowercase character.

    Function: int _rl_digit_value (int c)
    If c is a number, return the value it represents.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.11 Miscellaneous Functions

    Function: int rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
    Bind the key sequence keyseq to invoke the macro macro. The binding is performed in map. When keyseq is invoked, the macro will be inserted into the line. This function is deprecated; use rl_generic_bind() instead.

    Function: void rl_macro_dumper (int readable)
    Print the key sequences bound to macros and their values, using the current keymap, 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: int rl_variable_bind (const char *variable, const char *value)
    Make the Readline variable variable have value. This behaves as if the readline command `set variable value' had been executed in an inputrc file (see section 1.3.1 Readline Init File Syntax).

    Function: char * rl_variable_value (const char *variable)
    Return a string representing the value of the Readline variable variable. For boolean variables, this string is either `on' or `off'.

    Function: void rl_variable_dumper (int readable)
    Print the readline variable names and their current values 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: int rl_set_paren_blink_timeout (int u)
    Set the time interval (in microseconds) that Readline waits when showing a balancing character when blink-matching-paren has been enabled.

    Function: char * rl_get_termcap (const char *cap)
    Retrieve the string value of the termcap capability cap. Readline fetches the termcap entry for the current terminal name and uses those capabilities to move around the screen line and perform other terminal-specific operations, like erasing a line. Readline does not use all of a terminal's capabilities, and this function will return values for only those capabilities Readline uses.

    Function: void rl_clear_history (void)
    Clear the history list by deleting all of the entries, in the same manner as the History library's clear_history() function. This differs from clear_history because it frees private data Readline saves in the history list.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.12 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 accommodate 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 (const char *prompt, rl_vcpfunc_t *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 handler function to call when a complete line of input has been entered. The handler function receives the text of the line as an argument. As with readline(), the handler function should free the line when it it finished with it.

    Function: void rl_callback_read_char (void)
    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 installed by rl_callback_handler_install to process the line. Before calling the lhandler function, the terminal settings are reset to the values they had before calling rl_callback_handler_install. If the lhandler function returns, and the line handler remains installed, the terminal settings are modified for Readline's use again. EOF is indicated by calling lhandler with a NULL line.

    Function: void rl_callback_sigcleanup (void)
    Clean up any internal state the callback interface uses to maintain state between calls to rl_callback_read_char (e.g., the state of any active incremental searches). This is intended to be used by applications that wish to perform their own signal handling; Readline's internal signal handler calls this when appropriate.

    Function: void rl_callback_handler_remove (void)
    Restore the terminal to its initial state and remove the line handler. You may call this function from within a callback as well as independently. If the lhandler installed by rl_callback_handler_install does not exit the program, either this function or the function referred to by the value of rl_deprep_term_function should be called before the program exits to reset the terminal settings.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.13 A Readline 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 (_rl_uppercase_p (rl_line_buffer[i]))
            rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
          else if (_rl_lowercase_p (rl_line_buffer[i]))
            rl_line_buffer[i] = _rl_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);
    }
    


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4.14 Alternate Interface Example

    Here is a complete program that illustrates Readline's alternate interface. It reads lines from the terminal and displays them, providing the standard history and TAB completion functions. It understands the EOF character or "exit" to exit the program.

     
    /* Standard include files. stdio.h is required. */
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <locale.h>
    
    /* Used for select(2) */
    #include <sys/types.h>
    #include <sys/select.h>
    
    #include <signal.h>
    
    #include <stdio.h>
    
    /* Standard readline include files. */
    #include <readline/readline.h>
    #include <readline/history.h>
    
    static void cb_linehandler (char *);
    static void sighandler (int);
    
    int running;
    int sigwinch_received;
    const char *prompt = "rltest$ ";
    
    /* Handle SIGWINCH and window size changes when readline is not active and
       reading a character. */
    static void
    sighandler (int sig)
    {
      sigwinch_received = 1;
    }
    
    /* Callback function called for each line when accept-line executed, EOF
       seen, or EOF character read.  This sets a flag and returns; it could
       also call exit(3). */
    static void
    cb_linehandler (char *line)
    {
      /* Can use ^D (stty eof) or `exit' to exit. */
      if (line == NULL || strcmp (line, "exit") == 0)
        {
          if (line == 0)
            printf ("\n");
          printf ("exit\n");
          /* This function needs to be called to reset the terminal settings,
             and calling it from the line handler keeps one extra prompt from
             being displayed. */
          rl_callback_handler_remove ();
    
          running = 0;
        }
      else
        {
          if (*line)
            add_history (line);
          printf ("input line: %s\n", line);
          free (line);
        }
    }
    
    int
    main (int c, char **v)
    {
      fd_set fds;
      int r;
    
      /* Set the default locale values according to environment variables. */
      setlocale (LC_ALL, "");
    
      /* Handle window size changes when readline is not active and reading
         characters. */
      signal (SIGWINCH, sighandler);
    
      /* Install the line handler. */
      rl_callback_handler_install (prompt, cb_linehandler);
    
      /* Enter a simple event loop.  This waits until something is available
         to read on readline's input stream (defaults to standard input) and
         calls the builtin character read callback to read it.  It does not
         have to modify the user's terminal settings. */
      running = 1;
      while (running)
        {
          FD_ZERO (&fds);
          FD_SET (fileno (rl_instream), &fds);    
    
          r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
          if (r < 0 && errno != EINTR)
            {
              perror ("rltest: select");
              rl_callback_handler_remove ();
              break;
            }
          if (sigwinch_received)
    	{
    	  rl_resize_terminal ();
    	  sigwinch_received = 0;
    	}
          if (r < 0)
    	continue;     
    
          if (FD_ISSET (fileno (rl_instream), &fds))
            rl_callback_read_char ();
        }
    
      printf ("rltest: Event loop has exited\n");
      return 0;
    }
    


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.5 Readline Signal Handling

    Signals are asynchronous events sent to a process by the Unix kernel, sometimes on behalf of another process. They are intended to indicate exceptional events, like a user pressing the interrupt key on his terminal, or a network connection being broken. There is a class of signals that can be sent to the process currently reading input from the keyboard. Since Readline changes the terminal attributes when it is called, it needs to perform special processing when such a signal is received in order to restore the terminal to a sane state, or provide application writers with functions to do so manually.

    Readline contains an internal signal handler that is installed for a number of signals (SIGINT, SIGQUIT, SIGTERM, SIGHUP, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU). When one of these signals is received, the signal handler will reset the terminal attributes to those that were in effect before readline() was called, reset the signal handling to what it was before readline() was called, and resend the signal to the calling application. If and when the calling application's signal handler returns, Readline will reinitialize the terminal and continue to accept input. When a SIGINT is received, the Readline signal handler performs some additional work, which will cause any partially-entered line to be aborted (see the description of rl_free_line_state() below).

    There is an additional Readline signal handler, for SIGWINCH, which the kernel sends to a process whenever the terminal's size changes (for example, if a user resizes an xterm). The Readline SIGWINCH handler updates Readline's internal screen size information, and then calls any SIGWINCH signal handler the calling application has installed. Readline calls the application's SIGWINCH signal handler without resetting the terminal to its original state. If the application's signal handler does more than update its idea of the terminal size and return (for example, a longjmp back to a main processing loop), it must call rl_cleanup_after_signal() (described below), to restore the terminal state.

    When an application is using the callback interface (see section 2.4.12 Alternate Interface), Readline installs signal handlers only for the duration of the call to rl_callback_read_char. Applications using the callback interface should be prepared to clean up Readline's state if they wish to handle the signal before the line handler completes and restores the terminal state.

    If an application using the callback interface wishes to have Readline install its signal handlers at the time the application calls rl_callback_handler_install and remove them only when a complete line of input has been read, it should set the rl_persistent_signal_handlers variable to a non-zero value. This allows an application to defer all of the handling of the signals Readline catches to Readline. Applications should use this variable with care; it can result in Readline catching signals and not acting on them (or allowing the application to react to them) until the application calls rl_callback_read_char. This can result in an application becoming less responsive to keyboard signals like SIGINT. If an application does not want or need to perform any signal handling, or does not need to do any processing between calls to rl_callback_read_char, setting this variable may be desirable.

    Readline provides two variables that allow application writers to control whether or not it will catch certain signals and act on them when they are received. It is important that applications change the values of these variables only when calling readline(), not in a signal handler, so Readline's internal signal state is not corrupted.

    Variable: int rl_catch_signals
    If this variable is non-zero, Readline will install signal handlers for SIGINT, SIGQUIT, SIGTERM, SIGHUP, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU.

    The default value of rl_catch_signals is 1.

    Variable: int rl_catch_sigwinch
    If this variable is set to a non-zero value, Readline will install a signal handler for SIGWINCH.

    The default value of rl_catch_sigwinch is 1.

    Variable: int rl_persistent_signal_handlers
    If an application using the callback interface wishes Readline's signal handlers to be installed and active during the set of calls to rl_callback_read_char that constitutes an entire single line, it should set this variable to a non-zero value.

    The default value of rl_persistent_signal_handlers is 0.

    Variable: int rl_change_environment
    If this variable is set to a non-zero value, and Readline is handling SIGWINCH, Readline will modify the LINES and COLUMNS environment variables upon receipt of a SIGWINCH

    The default value of rl_change_environment is 1.

    If an application does not wish to have Readline catch any signals, or to handle signals other than those Readline catches (SIGHUP, for example), Readline provides convenience functions to do the necessary terminal and internal state cleanup upon receipt of a signal.

    Function: int rl_pending_signal (void)
    Return the signal number of the most recent signal Readline received but has not yet handled, or 0 if there is no pending signal.

    Function: void rl_cleanup_after_signal (void)
    This function will reset the state of the terminal to what it was before readline() was called, and remove the Readline signal handlers for all signals, depending on the values of rl_catch_signals and rl_catch_sigwinch.

    Function: void rl_free_line_state (void)
    This will free any partial state associated with the current input line (undo information, any partial history entry, any partially-entered keyboard macro, and any partially-entered numeric argument). This should be called before rl_cleanup_after_signal(). The Readline signal handler for SIGINT calls this to abort the current input line.

    Function: void rl_reset_after_signal (void)
    This will reinitialize the terminal and reinstall any Readline signal handlers, depending on the values of rl_catch_signals and rl_catch_sigwinch.

    If an application wants to force Readline to handle any signals that have arrived while it has been executing, rl_check_signals() will call Readline's internal signal handler if there are any pending signals. This is primarily intended for those applications that use a custom rl_getc_function (see section 2.3 Readline Variables) and wish to handle signals received while waiting for input.

    Function: void rl_check_signals (void)
    If there are any pending signals, call Readline's internal signal handling functions to process them. rl_pending_signal() can be used independently to determine whether or not there are any pending signals.

    If an application does not wish Readline to catch SIGWINCH, it may call rl_resize_terminal() or rl_set_screen_size() to force Readline to update its idea of the terminal size when a SIGWINCH is received.

    Function: void rl_echo_signal_char (int sig)
    If an application wishes to install its own signal handlers, but still have readline display characters that generate signals, calling this function with sig set to SIGINT, SIGQUIT, or SIGTSTP will display the character generating that signal.

    Function: void rl_resize_terminal (void)
    Update Readline's internal screen size by reading values from the kernel.

    Function: void rl_set_screen_size (int rows, int cols)
    Set Readline's idea of the terminal size to rows rows and cols columns. If either rows or columns is less than or equal to 0, Readline's idea of that terminal dimension is unchanged.

    If an application does not want to install a SIGWINCH handler, but is still interested in the screen dimensions, Readline's idea of the screen size may be queried.

    Function: void rl_get_screen_size (int *rows, int *cols)
    Return Readline's idea of the terminal's size in the variables pointed to by the arguments.

    Function: void rl_reset_screen_size (void)
    Cause Readline to reobtain the screen size and recalculate its dimensions.

    The following functions install and remove Readline's signal handlers.

    Function: int rl_set_signals (void)
    Install Readline's signal handler for SIGINT, SIGQUIT, SIGTERM, SIGHUP, SIGALRM, SIGTSTP, SIGTTIN, SIGTTOU, and SIGWINCH, depending on the values of rl_catch_signals and rl_catch_sigwinch.

    Function: int rl_clear_signals (void)
    Remove all of the Readline signal handlers installed by rl_set_signals().


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

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

    2.6.1 How Completing Works  The logic used to do completion.
    2.6.2 Completion Functions  Functions provided by Readline.
    2.6.3 Completion Variables  Variables which control completion.
    2.6.4 A Short Completion Example  An example of writing completer subroutines.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.6.1 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 bindable Readline functions: count and invoking_key. It isolates the word to be completed and calls rl_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 rl_completion_matches() uses an application-supplied generator function to generate the list of possible matches, and then returns the array of these matches. The caller should place the address of its generator function in rl_completion_entry_function.

    3. The generator function is called repeatedly from rl_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. The generator function returns (char *)NULL to inform rl_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. Such a generator function is referred to as an application-specific completion function.

    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 rl_completion_matches()). The default is to do filename completion.

    Variable: rl_compentry_func_t * rl_completion_entry_function
    This is a pointer to the generator function for rl_completion_matches(). If the value of rl_completion_entry_function is NULL then the default filename generator function, rl_filename_completion_function(), is used. An application-specific completion function is a function whose address is assigned to rl_completion_entry_function and whose return values are used to generate possible completions.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.6.2 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. `@' is similar to `!', but possible completions are not listed if the possible completions share a common prefix.

    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 rl_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: int rl_completion_mode (rl_command_func_t *cfunc)
    Returns the appropriate value to pass to rl_complete_internal() depending on whether cfunc was called twice in succession and the values of the show-all-if-ambiguous and show-all-if-unmodified variables. Application-specific completion functions may use this function to present the same interface as rl_complete().

    Function: char ** rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
    Returns an array of strings which is a list of completions for text. If there are no completions, returns 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 * rl_filename_completion_function (const char *text, int state)
    A generator function for filename completion in the general case. text is a partial filename. The Bash source is a useful reference for writing application-specific completion functions (the Bash completion functions call this and other Readline functions).

    Function: char * rl_username_completion_function (const 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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.6.3 Completion Variables

    Variable: rl_compentry_func_t * rl_completion_entry_function
    A pointer to the generator function for rl_completion_matches(). NULL means to use rl_filename_completion_function(), the default filename completer.

    Variable: rl_completion_func_t * 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 defining the boundaries of text, which is a character string. 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. If this function sets the rl_attempted_completion_over variable to a non-zero value, Readline will not perform its default completion even if this function returns no matches.

    Variable: rl_quote_func_t * 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: rl_dequote_func_t * 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: rl_linebuf_func_t * 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: rl_compignore_func_t * 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: rl_icppfunc_t * rl_directory_completion_hook
    This function, if defined, is allowed to modify the directory portion of filenames Readline completes. It could be used to expand symbolic links or shell variables in pathnames. It is called with the address of a string (the current directory name) as an argument, and may modify that string. If the string is replaced with a new string, the old value should be freed. Any modified directory name should have a trailing slash. The modified value will be used as part of the completion, replacing the directory portion of the pathname the user typed. At the least, even if no other expansion is performed, this function should remove any quote characters from the directory name, because its result will be passed directly to opendir().

    The directory completion hook returns an integer that should be non-zero if the function modifies its directory argument. The function should not modify the directory argument if it returns 0.

    Variable: rl_icppfunc_t * rl_directory_rewrite_hook;
    If non-zero, this is the address of a function to call when completing a directory name. This function takes the address of the directory name to be modified as an argument. Unlike rl_directory_completion_hook, it only modifies the directory name used in opendir, not what is displayed when the possible completions are printed or inserted. It is called before rl_directory_completion_hook. At the least, even if no other expansion is performed, this function should remove any quote characters from the directory name, because its result will be passed directly to opendir().

    The directory rewrite hook returns an integer that should be non-zero if the function modfies its directory argument. The function should not modify the directory argument if it returns 0.

    Variable: rl_icppfunc_t * rl_filename_stat_hook
    If non-zero, this is the address of a function for the completer to call before deciding which character to append to a completed name. This function modifies its filename name argument, and the modified value is passed to stat() to determine the file's type and characteristics. This function does not need to remove quote characters from the filename.

    The stat hook returns an integer that should be non-zero if the function modfies its directory argument. The function should not modify the directory argument if it returns 0.

    Variable: rl_dequote_func_t * rl_filename_rewrite_hook
    If non-zero, this is the address of a function called when reading directory entries from the filesystem for completion and comparing them to the partial word to be completed. The function should perform any necessary application or system-specific conversion on the filename, such as converting between character sets or converting from a filesystem format to a character input format. The function takes two arguments: fname, the filename to be converted, and fnlen, its length in bytes. It must either return its first argument (if no conversion takes place) or the converted filename in newly-allocated memory. The converted form is used to compare against the word to be completed, and, if it matches, is added to the list of matches. Readline will free the allocated string.

    Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
    If non-zero, then this is the address of a function to call when completing a word would normally display the list of possible matches. This function is called in lieu of Readline displaying the list. It takes three arguments: (char **matches, int num_matches, int max_length) where matches is the array of matching strings, num_matches is the number of strings in that array, and max_length is the length of the longest string in that array. Readline provides a convenience function, rl_display_match_list, that takes care of doing the display to Readline's output stream. You may call that function from this hook.

    Variable: const 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: " \t\n\"\\'`@$><=;|&{(".

    Variable: const char * rl_basic_quote_characters
    A list of quote characters which can cause a word break.

    Variable: const 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: rl_cpvfunc_t * rl_completion_word_break_hook
    If non-zero, this is the address of a function to call when Readline is deciding where to separate words for word completion. It should return a character string like rl_completer_word_break_characters to be used to perform the current completion. The function may choose to set rl_completer_word_break_characters itself. If the function returns NULL, rl_completer_word_break_characters is used.

    Variable: const char * rl_completer_quote_characters
    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 rl_completer_word_break_characters are treated as any other character, unless they also appear within this list.

    Variable: const 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 the null string.

    Variable: const 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_query_items
    Up to this many items will be displayed in response to a possible-completions call. After that, readline asks the user if she is sure she wants to see them all. The default value is 100. A negative value indicates that Readline should never ask the user.

    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 application-specific completion functions to provide the "most sensible word separator character" according to an application-specific command line syntax specification. It is set to the default before any application-specific completion function is called, and may only be changed within such a function.

    Variable: int rl_completion_suppress_append
    If non-zero, rl_completion_append_character is not appended to matches at the end of the command line, as described above. It is set to 0 before any application-specific completion function is called, and may only be changed within such a function.

    Variable: int rl_completion_quote_character
    When Readline is completing quoted text, as delimited by one of the characters in rl_completer_quote_characters, it sets this variable to the quoting character found. This is set before any application-specific completion function is called.

    Variable: int rl_completion_suppress_quote
    If non-zero, Readline does not append a matching quote character when performing completion on a quoted string. It is set to 0 before any application-specific completion function is called, and may only be changed within such a function.

    Variable: int rl_completion_found_quote
    When Readline is completing quoted text, it sets this variable to a non-zero value if the word being completed contains or is delimited by any quoting characters, including backslashes. This is set before any application-specific completion function is called.

    Variable: int rl_completion_mark_symlink_dirs
    If non-zero, a slash will be appended to completed filenames that are symbolic links to directory names, subject to the value of the user-settable mark-directories variable. This variable exists so that application-specific completion functions can override the user's global preference (set via the mark-symlinked-directories Readline variable) if appropriate. This variable is set to the user's preference before any application-specific completion function is called, so unless that function modifies the value, the user's preferences are honored.

    Variable: int rl_ignore_completion_duplicates
    If non-zero, then duplicates in the matches are removed. The 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 when completion is attempted, and can only be changed within an application-specific completion function. If it is set to a non-zero value by such a function, directory names have a slash appended and Readline attempts to quote completed filenames if they contain any characters in rl_filename_quote_characters and rl_filename_quoting_desired is set to a non-zero value.

    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 when completion is attempted, and can only be changed within an application-specific completion function. The quoting is effected via a call to the function pointed to by rl_filename_quoting_function.

    Variable: int rl_attempted_completion_over
    If an application-specific completion function assigned to rl_attempted_completion_function sets this variable to a non-zero value, Readline will not perform its default filename completion even if the application's completion function returns no matches. It should be set only by an application's completion function.

    Variable: int rl_sort_completion_matches
    If an application sets this variable to 0, Readline will not sort the list of completions (which implies that it cannot remove any duplicate completions). The default value is 1, which means that Readline will sort the completions and, depending on the value of rl_ignore_completion_duplicates, will attempt to remove duplicate matches.

    Variable: int rl_completion_type
    Set to a character describing the type of completion Readline is currently attempting; see the description of rl_complete_internal() (see section 2.6.2 Completion Functions) for the list of characters. This is set to the appropriate value before any application-specific completion function is called, allowing such functions to present the same interface as rl_complete().

    Variable: int rl_completion_invoking_key
    Set to the final character in the key sequence that invoked one of the completion functions that call rl_complete_internal(). This is set to the appropriate value before any application-specific completion function is called.

    Variable: int rl_inhibit_completion
    If this variable is non-zero, completion is inhibited. The completion character will be inserted as any other bound to self-insert.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.6.4 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. */
    
    #ifdef HAVE_CONFIG_H
    #  include <config.h>
    #endif
    
    #include <sys/types.h>
    #ifdef HAVE_SYS_FILE_H
    #  include <sys/file.h>
    #endif
    #include <sys/stat.h>
    
    #ifdef HAVE_UNISTD_H
    #  include <unistd.h>
    #endif
    
    #include <fcntl.h>
    #include <stdio.h>
    #include <errno.h>
    
    #if defined (HAVE_STRING_H)
    #  include <string.h>
    #else /* !HAVE_STRING_H */
    #  include <strings.h>
    #endif /* !HAVE_STRING_H */
    
    #ifdef HAVE_STDLIB_H
    #  include <stdlib.h>
    #endif
    
    #include <time.h>
    
    #include <readline/readline.h>
    #include <readline/history.h>
    
    extern char *xmalloc PARAMS((size_t));
    
    /* The names of functions that actually do the manipulation. */
    int com_list PARAMS((char *));
    int com_view PARAMS((char *));
    int com_rename PARAMS((char *));
    int com_stat PARAMS((char *));
    int com_pwd PARAMS((char *));
    int com_delete PARAMS((char *));
    int com_help PARAMS((char *));
    int com_cd PARAMS((char *));
    int com_quit PARAMS((char *));
    
    /* A structure which contains information on the commands this program
       can understand. */
    
    typedef struct {
      char *name;			/* User printable name of the function. */
      rl_icpfunc_t *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, (rl_icpfunc_t *)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)
         char *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 PARAMS((const char *, int));
    char **fileman_completion PARAMS((const char *, int, int));
    
    /* 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 = 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)
         const 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 = rl_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)
         const 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;
    
    #if defined (__MSDOS__)
      /* more.com doesn't grok slashes in pathnames */
      sprintf (syscom, "less %s", arg);
    #else
      sprintf (syscom, "more %s", arg);
    #endif
      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 = getcwd (dir, sizeof(dir) - 1);
      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);
    }
    


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    A. GNU Free Documentation License

    Version 1.3, 3 November 2008

     
    Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
    http://fsf.org/
    
    Everyone is permitted to copy and distribute verbatim copies
    of this license document, but changing it is not allowed.
    

    1. PREAMBLE

      The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

      This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

      We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

    2. APPLICABILITY AND DEFINITIONS

      This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

      A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

      A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

      The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

      The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

      A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

      Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

      The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

      The "publisher" means any person or entity that distributes copies of the Document to the public.

      A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

      The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

    3. VERBATIM COPYING

      You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

      You may also lend copies, under the same conditions stated above, and you may publicly display copies.

    4. COPYING IN QUANTITY

      If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

      If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

      If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

      It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

    5. MODIFICATIONS

      You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

      1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

      2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

      3. State on the Title page the name of the publisher of the Modified Version, as the publisher.

      4. Preserve all the copyright notices of the Document.

      5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

      6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

      7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

      8. Include an unaltered copy of this License.

      9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

      10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

      11. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

      12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

      13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

      14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

      15. Preserve any Warranty Disclaimers.

      If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

      You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

      You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

      The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

    6. COMBINING DOCUMENTS

      You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

      The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

      In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements."

    7. COLLECTIONS OF DOCUMENTS

      You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

      You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

    8. AGGREGATION WITH INDEPENDENT WORKS

      A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

      If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

    9. TRANSLATION

      Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

      If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

    10. TERMINATION

      You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.

      However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

      Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

      Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.

    11. FUTURE REVISIONS OF THIS LICENSE

      The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

      Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.

    12. RELICENSING

      "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.

      "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.

      "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.

      An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.

      The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.

    ADDENDUM: How to use this License for your documents

    To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

     
      Copyright (C)  year  your name.
      Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.3
      or any later version published by the Free Software Foundation;
      with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
      Texts.  A copy of the license is included in the section entitled ``GNU
      Free Documentation License''.
    

    If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:

     
        with the Invariant Sections being list their titles, with
        the Front-Cover Texts being list, and with the Back-Cover Texts
        being list.
    

    If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

    If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    Concept Index

    Jump to:   A   C   E   I   K   N   R   V   Y  

    Index Entry Section

    A
    application-specific completion functions2.6 Custom Completers

    C
    command editing1.2.1 Readline Bare Essentials

    E
    editing command lines1.2.1 Readline Bare Essentials

    I
    initialization file, readline1.3 Readline Init File
    interaction, readline1.2 Readline Interaction

    K
    kill ring1.2.3 Readline Killing Commands
    killing text1.2.3 Readline Killing Commands

    N
    notation, readline1.2.1 Readline Bare Essentials

    R
    readline, function2.1 Basic Behavior

    V
    variables, readline1.3.1 Readline Init File Syntax

    Y
    yanking text1.2.3 Readline Killing Commands

    Jump to:   A   C   E   I   K   N   R   V   Y  


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    Function and Variable Index

    Jump to:   _  
    A   B   C   D   E   F   H   I   K   M   N   O   P   Q   R   S   T   U   V   Y  

    Index Entry Section

    _
    _rl_digit_p2.4.10 Utility Functions
    _rl_digit_value2.4.10 Utility Functions
    _rl_lowercase_p2.4.10 Utility Functions
    _rl_to_lower2.4.10 Utility Functions
    _rl_to_upper2.4.10 Utility Functions
    _rl_uppercase_p2.4.10 Utility Functions

    A
    abort (C-g)1.4.8 Some Miscellaneous Commands
    abort (C-g)1.4.8 Some Miscellaneous Commands
    accept-line (Newline or Return)1.4.2 Commands For Manipulating The History
    accept-line (Newline or Return)1.4.2 Commands For Manipulating The History

    B
    backward-char (C-b)1.4.1 Commands For Moving
    backward-char (C-b)1.4.1 Commands For Moving
    backward-delete-char (Rubout)1.4.3 Commands For Changing Text
    backward-delete-char (Rubout)1.4.3 Commands For Changing Text
    backward-kill-line (C-x Rubout)1.4.4 Killing And Yanking
    backward-kill-line (C-x Rubout)1.4.4 Killing And Yanking
    backward-kill-word (M-DEL)1.4.4 Killing And Yanking
    backward-kill-word (M-DEL)1.4.4 Killing And Yanking
    backward-word (M-b)1.4.1 Commands For Moving
    backward-word (M-b)1.4.1 Commands For Moving
    beginning-of-history (M-&#60;)1.4.2 Commands For Manipulating The History
    beginning-of-history (M-&#60;)1.4.2 Commands For Manipulating The History
    beginning-of-line (C-a)1.4.1 Commands For Moving
    beginning-of-line (C-a)1.4.1 Commands For Moving
    bell-style1.3.1 Readline Init File Syntax
    bind-tty-special-chars1.3.1 Readline Init File Syntax
    blink-matching-paren1.3.1 Readline Init File Syntax
    bracketed-paste-begin ()1.4.3 Commands For Changing Text
    bracketed-paste-begin ()1.4.3 Commands For Changing Text

    C
    call-last-kbd-macro (C-x e)1.4.7 Keyboard Macros
    call-last-kbd-macro (C-x e)1.4.7 Keyboard Macros
    capitalize-word (M-c)1.4.3 Commands For Changing Text
    capitalize-word (M-c)1.4.3 Commands For Changing Text
    character-search (C-])1.4.8 Some Miscellaneous Commands
    character-search (C-])1.4.8 Some Miscellaneous Commands
    character-search-backward (M-C-])1.4.8 Some Miscellaneous Commands
    character-search-backward (M-C-])1.4.8 Some Miscellaneous Commands
    clear-screen (C-l)1.4.1 Commands For Moving
    clear-screen (C-l)1.4.1 Commands For Moving
    colored-completion-prefix1.3.1 Readline Init File Syntax
    colored-stats1.3.1 Readline Init File Syntax
    comment-begin1.3.1 Readline Init File Syntax
    complete (TAB)1.4.6 Letting Readline Type For You
    complete (TAB)1.4.6 Letting Readline Type For You
    completion-display-width1.3.1 Readline Init File Syntax
    completion-ignore-case1.3.1 Readline Init File Syntax
    completion-map-case1.3.1 Readline Init File Syntax
    completion-prefix-display-length1.3.1 Readline Init File Syntax
    completion-query-items1.3.1 Readline Init File Syntax
    convert-meta1.3.1 Readline Init File Syntax
    copy-backward-word ()1.4.4 Killing And Yanking
    copy-backward-word ()1.4.4 Killing And Yanking
    copy-forward-word ()1.4.4 Killing And Yanking
    copy-forward-word ()1.4.4 Killing And Yanking
    copy-region-as-kill ()1.4.4 Killing And Yanking
    copy-region-as-kill ()1.4.4 Killing And Yanking

    D
    delete-char (C-d)1.4.3 Commands For Changing Text
    delete-char (C-d)1.4.3 Commands For Changing Text
    delete-char-or-list ()1.4.6 Letting Readline Type For You
    delete-char-or-list ()1.4.6 Letting Readline Type For You
    delete-horizontal-space ()1.4.4 Killing And Yanking
    delete-horizontal-space ()1.4.4 Killing And Yanking
    digit-argument (M-0, M-1, <small>...</small> M--)1.4.5 Specifying Numeric Arguments
    digit-argument (M-0, M-1, <small>...</small> M--)1.4.5 Specifying Numeric Arguments
    disable-completion1.3.1 Readline Init File Syntax
    do-lowercase-version (M-A, M-B, M-x, <small>...</small>)1.4.8 Some Miscellaneous Commands
    do-lowercase-version (M-A, M-B, M-x, <small>...</small>)1.4.8 Some Miscellaneous Commands
    downcase-word (M-l)1.4.3 Commands For Changing Text
    downcase-word (M-l)1.4.3 Commands For Changing Text
    dump-functions ()1.4.8 Some Miscellaneous Commands
    dump-functions ()1.4.8 Some Miscellaneous Commands
    dump-macros ()1.4.8 Some Miscellaneous Commands
    dump-macros ()1.4.8 Some Miscellaneous Commands
    dump-variables ()1.4.8 Some Miscellaneous Commands
    dump-variables ()1.4.8 Some Miscellaneous Commands

    E
    echo-control-characters1.3.1 Readline Init File Syntax
    editing-mode1.3.1 Readline Init File Syntax
    emacs-editing-mode (C-e)1.4.8 Some Miscellaneous Commands
    emacs-editing-mode (C-e)1.4.8 Some Miscellaneous Commands
    emacs-mode-string1.3.1 Readline Init File Syntax
    enable-bracketed-paste1.3.1 Readline Init File Syntax
    enable-keypad1.3.1 Readline Init File Syntax
    end-kbd-macro (C-x ))1.4.7 Keyboard Macros
    end-kbd-macro (C-x ))1.4.7 Keyboard Macros
    end-of-file (usually C-d)1.4.3 Commands For Changing Text
    end-of-file (usually C-d)1.4.3 Commands For Changing Text
    end-of-history (M-&#62;)1.4.2 Commands For Manipulating The History
    end-of-history (M-&#62;)1.4.2 Commands For Manipulating The History
    end-of-line (C-e)1.4.1 Commands For Moving
    end-of-line (C-e)1.4.1 Commands For Moving
    exchange-point-and-mark (C-x C-x)1.4.8 Some Miscellaneous Commands
    exchange-point-and-mark (C-x C-x)1.4.8 Some Miscellaneous Commands
    expand-tilde1.3.1 Readline Init File Syntax

    F
    forward-backward-delete-char ()1.4.3 Commands For Changing Text
    forward-backward-delete-char ()1.4.3 Commands For Changing Text
    forward-char (C-f)1.4.1 Commands For Moving
    forward-char (C-f)1.4.1 Commands For Moving
    forward-search-history (C-s)1.4.2 Commands For Manipulating The History
    forward-search-history (C-s)1.4.2 Commands For Manipulating The History
    forward-word (M-f)1.4.1 Commands For Moving
    forward-word (M-f)1.4.1 Commands For Moving

    H
    history-preserve-point1.3.1 Readline Init File Syntax
    history-search-backward ()1.4.2 Commands For Manipulating The History
    history-search-backward ()1.4.2 Commands For Manipulating The History
    history-search-forward ()1.4.2 Commands For Manipulating The History
    history-search-forward ()1.4.2 Commands For Manipulating The History
    history-size1.3.1 Readline Init File Syntax
    history-substring-search-backward ()1.4.2 Commands For Manipulating The History
    history-substring-search-backward ()1.4.2 Commands For Manipulating The History
    history-substring-search-forward ()1.4.2 Commands For Manipulating The History
    history-substring-search-forward ()1.4.2 Commands For Manipulating The History
    horizontal-scroll-mode1.3.1 Readline Init File Syntax

    I
    input-meta1.3.1 Readline Init File Syntax
    insert-comment (M-#)1.4.8 Some Miscellaneous Commands
    insert-comment (M-#)1.4.8 Some Miscellaneous Commands
    insert-completions (M-*)1.4.6 Letting Readline Type For You
    insert-completions (M-*)1.4.6 Letting Readline Type For You
    isearch-terminators1.3.1 Readline Init File Syntax

    K
    keymap1.3.1 Readline Init File Syntax
    kill-line (C-k)1.4.4 Killing And Yanking
    kill-line (C-k)1.4.4 Killing And Yanking
    kill-region ()1.4.4 Killing And Yanking
    kill-region ()1.4.4 Killing And Yanking
    kill-whole-line ()1.4.4 Killing And Yanking
    kill-whole-line ()1.4.4 Killing And Yanking
    kill-word (M-d)1.4.4 Killing And Yanking
    kill-word (M-d)1.4.4 Killing And Yanking

    M
    mark-modified-lines1.3.1 Readline Init File Syntax
    mark-symlinked-directories1.3.1 Readline Init File Syntax
    match-hidden-files1.3.1 Readline Init File Syntax
    menu-complete ()1.4.6 Letting Readline Type For You
    menu-complete ()1.4.6 Letting Readline Type For You
    menu-complete-backward ()1.4.6 Letting Readline Type For You
    menu-complete-backward ()1.4.6 Letting Readline Type For You
    menu-complete-display-prefix1.3.1 Readline Init File Syntax
    meta-flag1.3.1 Readline Init File Syntax

    N
    next-history (C-n)1.4.2 Commands For Manipulating The History
    next-history (C-n)1.4.2 Commands For Manipulating The History
    next-screen-line ()1.4.1 Commands For Moving
    next-screen-line ()1.4.1 Commands For Moving
    non-incremental-forward-search-history (M-n)1.4.2 Commands For Manipulating The History
    non-incremental-forward-search-history (M-n)1.4.2 Commands For Manipulating The History
    non-incremental-reverse-search-history (M-p)1.4.2 Commands For Manipulating The History
    non-incremental-reverse-search-history (M-p)1.4.2 Commands For Manipulating The History

    O
    output-meta1.3.1 Readline Init File Syntax
    overwrite-mode ()1.4.3 Commands For Changing Text
    overwrite-mode ()1.4.3 Commands For Changing Text

    P
    page-completions1.3.1 Readline Init File Syntax
    possible-completions (M-?)1.4.6 Letting Readline Type For You
    possible-completions (M-?)1.4.6 Letting Readline Type For You
    prefix-meta (ESC)1.4.8 Some Miscellaneous Commands
    prefix-meta (ESC)1.4.8 Some Miscellaneous Commands
    previous-history (C-p)1.4.2 Commands For Manipulating The History
    previous-history (C-p)1.4.2 Commands For Manipulating The History
    previous-screen-line ()1.4.1 Commands For Moving
    previous-screen-line ()1.4.1 Commands For Moving
    print-last-kbd-macro ()1.4.7 Keyboard Macros
    print-last-kbd-macro ()1.4.7 Keyboard Macros

    Q
    quoted-insert (C-q or C-v)1.4.3 Commands For Changing Text
    quoted-insert (C-q or C-v)1.4.3 Commands For Changing Text

    R
    re-read-init-file (C-x C-r)1.4.8 Some Miscellaneous Commands
    re-read-init-file (C-x C-r)1.4.8 Some Miscellaneous Commands
    readline2.1 Basic Behavior
    redraw-current-line ()1.4.1 Commands For Moving
    redraw-current-line ()1.4.1 Commands For Moving
    reverse-search-history (C-r)1.4.2 Commands For Manipulating The History
    reverse-search-history (C-r)1.4.2 Commands For Manipulating The History
    revert-all-at-newline1.3.1 Readline Init File Syntax
    revert-line (M-r)1.4.8 Some Miscellaneous Commands
    revert-line (M-r)1.4.8 Some Miscellaneous Commands
    rl_add_defun2.4.1 Naming a Function
    rl_add_funmap_entry2.4.4 Associating Function Names and Bindings
    rl_add_undo2.4.5 Allowing Undoing
    rl_alphabetic2.4.10 Utility Functions
    rl_already_prompted2.3 Readline Variables
    rl_attempted_completion_function2.6.3 Completion Variables
    rl_attempted_completion_over2.6.3 Completion Variables
    rl_basic_quote_characters2.6.3 Completion Variables
    rl_basic_word_break_characters2.6.3 Completion Variables
    rl_begin_undo_group2.4.5 Allowing Undoing
    rl_bind_key2.4.3 Binding Keys
    rl_bind_key_if_unbound2.4.3 Binding Keys
    rl_bind_key_if_unbound_in_map2.4.3 Binding Keys
    rl_bind_key_in_map2.4.3 Binding Keys
    rl_bind_keyseq2.4.3 Binding Keys
    rl_bind_keyseq_if_unbound2.4.3 Binding Keys
    rl_bind_keyseq_if_unbound_in_map2.4.3 Binding Keys
    rl_bind_keyseq_in_map2.4.3 Binding Keys
    rl_binding_keymap2.3 Readline Variables
    rl_callback_handler_install2.4.12 Alternate Interface
    rl_callback_handler_remove2.4.12 Alternate Interface
    rl_callback_read_char2.4.12 Alternate Interface
    rl_callback_sigcleanup2.4.12 Alternate Interface
    rl_catch_signals2.5 Readline Signal Handling
    rl_catch_sigwinch2.5 Readline Signal Handling
    rl_change_environment2.5 Readline Signal Handling
    rl_char_is_quoted_p2.6.3 Completion Variables
    rl_check_signals2.5 Readline Signal Handling
    rl_cleanup_after_signal2.5 Readline Signal Handling
    rl_clear_history2.4.11 Miscellaneous Functions
    rl_clear_message2.4.6 Redisplay
    rl_clear_pending_input2.4.8 Character Input
    rl_clear_signals2.5 Readline Signal Handling
    rl_clear_visible_line2.4.6 Redisplay
    rl_complete2.6.1 How Completing Works
    rl_complete2.6.2 Completion Functions
    rl_complete_internal2.6.2 Completion Functions
    rl_completer_quote_characters2.6.3 Completion Variables
    rl_completer_word_break_characters2.6.3 Completion Variables
    rl_completion_append_character2.6.3 Completion Variables
    rl_completion_display_matches_hook2.6.3 Completion Variables
    rl_completion_entry_function2.6.1 How Completing Works
    rl_completion_entry_function2.6.3 Completion Variables
    rl_completion_found_quote2.6.3 Completion Variables
    rl_completion_invoking_key2.6.3 Completion Variables
    rl_completion_mark_symlink_dirs2.6.3 Completion Variables
    rl_completion_matches2.6.2 Completion Functions
    rl_completion_mode2.6.2 Completion Functions
    rl_completion_query_items2.6.3 Completion Variables
    rl_completion_quote_character2.6.3 Completion Variables
    rl_completion_suppress_append2.6.3 Completion Variables
    rl_completion_suppress_quote2.6.3 Completion Variables
    rl_completion_type2.6.3 Completion Variables
    rl_completion_word_break_hook2.6.3 Completion Variables
    rl_copy_keymap2.4.2 Selecting a Keymap
    rl_copy_text2.4.7 Modifying Text
    rl_crlf2.4.6 Redisplay
    rl_delete_text2.4.7 Modifying Text
    rl_deprep_term_function2.3 Readline Variables
    rl_deprep_terminal2.4.9 Terminal Management
    rl_ding2.4.10 Utility Functions
    rl_directory_completion_hook2.6.3 Completion Variables
    rl_directory_rewrite_hook;2.6.3 Completion Variables
    rl_discard_keymap2.4.2 Selecting a Keymap
    rl_dispatching2.3 Readline Variables
    rl_display_match_list2.4.10 Utility Functions
    rl_display_prompt2.3 Readline Variables
    rl_do_undo2.4.5 Allowing Undoing
    rl_done2.3 Readline Variables
    rl_echo_signal_char2.5 Readline Signal Handling
    rl_editing_mode2.3 Readline Variables
    rl_empty_keymap2.4.2 Selecting a Keymap
    rl_end2.3 Readline Variables
    rl_end_undo_group2.4.5 Allowing Undoing
    rl_erase_empty_line2.3 Readline Variables
    rl_event_hook2.3 Readline Variables
    rl_execute_next2.4.8 Character Input
    rl_executing_key2.3 Readline Variables
    rl_executing_keymap2.3 Readline Variables
    rl_executing_keyseq2.3 Readline Variables
    rl_executing_macro2.3 Readline Variables
    rl_expand_prompt2.4.6 Redisplay
    rl_explicit_arg2.3 Readline Variables
    rl_extend_line_buffer2.4.10 Utility Functions
    rl_filename_completion_desired2.6.3 Completion Variables
    rl_filename_completion_function2.6.2 Completion Functions
    rl_filename_dequoting_function2.6.3 Completion Variables
    rl_filename_quote_characters2.6.3 Completion Variables
    rl_filename_quoting_desired2.6.3 Completion Variables
    rl_filename_quoting_function2.6.3 Completion Variables
    rl_filename_rewrite_hook2.6.3 Completion Variables
    rl_filename_stat_hook2.6.3 Completion Variables
    rl_forced_update_display2.4.6 Redisplay
    rl_free2.4.10 Utility Functions
    rl_free_keymap2.4.2 Selecting a Keymap
    rl_free_line_state2.5 Readline Signal Handling
    rl_free_undo_list2.4.5 Allowing Undoing
    rl_function_dumper2.4.4 Associating Function Names and Bindings
    rl_function_of_keyseq2.4.4 Associating Function Names and Bindings
    rl_function_of_keyseq_len2.4.4 Associating Function Names and Bindings
    rl_funmap_names2.4.4 Associating Function Names and Bindings
    rl_generic_bind2.4.3 Binding Keys
    rl_get_keymap2.4.2 Selecting a Keymap
    rl_get_keymap_by_name2.4.2 Selecting a Keymap
    rl_get_keymap_name2.4.2 Selecting a Keymap
    rl_get_screen_size2.5 Readline Signal Handling
    rl_get_termcap2.4.11 Miscellaneous Functions
    rl_getc2.4.8 Character Input
    rl_getc_function2.3 Readline Variables
    rl_gnu_readline_p2.3 Readline Variables
    rl_ignore_completion_duplicates2.6.3 Completion Variables
    rl_ignore_some_completions_function2.6.3 Completion Variables
    rl_inhibit_completion2.6.3 Completion Variables
    rl_initialize2.4.10 Utility Functions
    rl_input_available_hook2.3 Readline Variables
    rl_insert_completions2.6.2 Completion Functions
    rl_insert_text2.4.7 Modifying Text
    rl_instream2.3 Readline Variables
    rl_invoking_keyseqs2.4.4 Associating Function Names and Bindings
    rl_invoking_keyseqs_in_map2.4.4 Associating Function Names and Bindings
    rl_key_sequence_length2.3 Readline Variables
    rl_kill_text2.4.7 Modifying Text
    rl_last_func2.3 Readline Variables
    rl_library_version2.3 Readline Variables
    rl_line_buffer2.3 Readline Variables
    rl_list_funmap_names2.4.4 Associating Function Names and Bindings
    rl_macro_bind2.4.11 Miscellaneous Functions
    rl_macro_dumper2.4.11 Miscellaneous Functions
    rl_make_bare_keymap2.4.2 Selecting a Keymap
    rl_make_keymap2.4.2 Selecting a Keymap
    rl_mark2.3 Readline Variables
    rl_message2.4.6 Redisplay
    rl_modifying2.4.5 Allowing Undoing
    rl_named_function2.4.4 Associating Function Names and Bindings
    rl_num_chars_to_read2.3 Readline Variables
    rl_numeric_arg2.3 Readline Variables
    rl_on_new_line2.4.6 Redisplay
    rl_on_new_line_with_prompt2.4.6 Redisplay
    rl_outstream2.3 Readline Variables
    rl_parse_and_bind2.4.3 Binding Keys
    rl_pending_input2.3 Readline Variables
    rl_pending_signal2.5 Readline Signal Handling
    rl_persistent_signal_handlers2.5 Readline Signal Handling
    rl_point2.3 Readline Variables
    rl_possible_completions2.6.2 Completion Functions
    rl_pre_input_hook2.3 Readline Variables
    rl_prefer_env_winsize2.3 Readline Variables
    rl_prep_term_function2.3 Readline Variables
    rl_prep_terminal2.4.9 Terminal Management
    rl_prompt2.3 Readline Variables
    rl_push_macro_input2.4.7 Modifying Text
    rl_read_init_file2.4.3 Binding Keys
    rl_read_key2.4.8 Character Input
    rl_readline_name2.3 Readline Variables
    rl_readline_state2.3 Readline Variables
    rl_readline_version2.3 Readline Variables
    rl_redisplay2.4.6 Redisplay
    rl_redisplay_function2.3 Readline Variables
    rl_replace_line2.4.10 Utility Functions
    rl_reset_after_signal2.5 Readline Signal Handling
    rl_reset_line_state2.4.6 Redisplay
    rl_reset_screen_size2.5 Readline Signal Handling
    rl_reset_terminal2.4.9 Terminal Management
    rl_resize_terminal2.5 Readline Signal Handling
    rl_restore_prompt2.4.6 Redisplay
    rl_restore_state2.4.10 Utility Functions
    rl_save_prompt2.4.6 Redisplay
    rl_save_state2.4.10 Utility Functions
    rl_set_key2.4.3 Binding Keys
    rl_set_keyboard_input_timeout2.4.8 Character Input
    rl_set_keymap2.4.2 Selecting a Keymap
    rl_set_keymap_name2.4.2 Selecting a Keymap
    rl_set_paren_blink_timeout2.4.11 Miscellaneous Functions
    rl_set_prompt2.4.6 Redisplay
    rl_set_screen_size2.5 Readline Signal Handling
    rl_set_signals2.5 Readline Signal Handling
    rl_show_char2.4.6 Redisplay
    rl_signal_event_hook2.3 Readline Variables
    rl_sort_completion_matches2.6.3 Completion Variables
    rl_special_prefixes2.6.3 Completion Variables
    rl_startup_hook2.3 Readline Variables
    rl_stuff_char2.4.8 Character Input
    rl_terminal_name2.3 Readline Variables
    rl_tty_set_default_bindings2.4.9 Terminal Management
    rl_tty_set_echoing2.4.9 Terminal Management
    rl_tty_unset_default_bindings2.4.9 Terminal Management
    rl_unbind_command_in_map2.4.3 Binding Keys
    rl_unbind_function_in_map2.4.3 Binding Keys
    rl_unbind_key2.4.3 Binding Keys
    rl_unbind_key_in_map2.4.3 Binding Keys
    rl_username_completion_function2.6.2 Completion Functions
    rl_variable_bind2.4.11 Miscellaneous Functions
    rl_variable_dumper2.4.11 Miscellaneous Functions
    rl_variable_value2.4.11 Miscellaneous Functions

    S
    self-insert (a, b, A, 1, !, <small>...</small>)1.4.3 Commands For Changing Text
    self-insert (a, b, A, 1, !, <small>...</small>)1.4.3 Commands For Changing Text
    set-mark (C-@)1.4.8 Some Miscellaneous Commands
    set-mark (C-@)1.4.8 Some Miscellaneous Commands
    show-all-if-ambiguous1.3.1 Readline Init File Syntax
    show-all-if-unmodified1.3.1 Readline Init File Syntax
    show-mode-in-prompt1.3.1 Readline Init File Syntax
    skip-completed-text1.3.1 Readline Init File Syntax
    skip-csi-sequence ()1.4.8 Some Miscellaneous Commands
    skip-csi-sequence ()1.4.8 Some Miscellaneous Commands
    start-kbd-macro (C-x ()1.4.7 Keyboard Macros
    start-kbd-macro (C-x ()1.4.7 Keyboard Macros

    T
    tab-insert (M-TAB)1.4.3 Commands For Changing Text
    tab-insert (M-TAB)1.4.3 Commands For Changing Text
    tilde-expand (M-~)1.4.8 Some Miscellaneous Commands
    tilde-expand (M-~)1.4.8 Some Miscellaneous Commands
    transpose-chars (C-t)1.4.3 Commands For Changing Text
    transpose-chars (C-t)1.4.3 Commands For Changing Text
    transpose-words (M-t)1.4.3 Commands For Changing Text
    transpose-words (M-t)1.4.3 Commands For Changing Text

    U
    undo (C-_ or C-x C-u)1.4.8 Some Miscellaneous Commands
    undo (C-_ or C-x C-u)1.4.8 Some Miscellaneous Commands
    universal-argument ()1.4.5 Specifying Numeric Arguments
    universal-argument ()1.4.5 Specifying Numeric Arguments
    unix-filename-rubout ()1.4.4 Killing And Yanking
    unix-filename-rubout ()1.4.4 Killing And Yanking
    unix-line-discard (C-u)1.4.4 Killing And Yanking
    unix-line-discard (C-u)1.4.4 Killing And Yanking
    unix-word-rubout (C-w)1.4.4 Killing And Yanking
    unix-word-rubout (C-w)1.4.4 Killing And Yanking
    upcase-word (M-u)1.4.3 Commands For Changing Text
    upcase-word (M-u)1.4.3 Commands For Changing Text

    V
    vi-cmd-mode-string1.3.1 Readline Init File Syntax
    vi-editing-mode (M-C-j)1.4.8 Some Miscellaneous Commands
    vi-editing-mode (M-C-j)1.4.8 Some Miscellaneous Commands
    vi-ins-mode-string1.3.1 Readline Init File Syntax
    visible-stats1.3.1 Readline Init File Syntax

    Y
    yank (C-y)1.4.4 Killing And Yanking
    yank (C-y)1.4.4 Killing And Yanking
    yank-last-arg (M-. or M-_)1.4.2 Commands For Manipulating The History
    yank-last-arg (M-. or M-_)1.4.2 Commands For Manipulating The History
    yank-nth-arg (M-C-y)1.4.2 Commands For Manipulating The History
    yank-nth-arg (M-C-y)1.4.2 Commands For Manipulating The History
    yank-pop (M-y)1.4.4 Killing And Yanking
    yank-pop (M-y)1.4.4 Killing And Yanking

    Jump to:   _  
    A   B   C   D   E   F   H   I   K   M   N   O   P   Q   R   S   T   U   V   Y  


    [Top] [Contents] [Index] [ ? ]

    Table of Contents


    [Top] [Contents] [Index] [ ? ]

    Short Table of Contents

    1. Command Line Editing
    2. Programming with GNU Readline
    A. GNU Free Documentation License
    Concept Index
    Function and Variable Index

    [Top] [Contents] [Index] [ ? ]

    About this document

    This document was generated by chet on December, 18 2018 using texi2html

    The buttons in the navigation panels have the following meaning:

    Button Name Go to From 1.2.3 go to
    [ < ] Back previous section in reading order 1.2.2
    [ > ] Forward next section in reading order 1.2.4
    [ << ] FastBack previous or up-and-previous section 1.1
    [ Up ] Up up section 1.2
    [ >> ] FastForward next or up-and-next section 1.3
    [Top] Top cover (top) of document  
    [Contents] Contents table of contents  
    [Index] Index concept index  
    [ ? ] About this page  

    where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:
    • 1. Section One
      • 1.1 Subsection One-One
        • ...
      • 1.2 Subsection One-Two
        • 1.2.1 Subsubsection One-Two-One
        • 1.2.2 Subsubsection One-Two-Two
        • 1.2.3 Subsubsection One-Two-Three     <== Current Position
        • 1.2.4 Subsubsection One-Two-Four
      • 1.3 Subsection One-Three
        • ...
      • 1.4 Subsection One-Four


    This document was generated by chet on December, 18 2018 using texi2html readline-8.0/doc/history.pdf000664 000436 000024 00000615666 13406221750 016214 0ustar00chetstaff000000 000000 %PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 402 /Filter /FlateDecode >> stream xÚ’MOÜ0†ïù>ÚÒÆx<þ¼‚€ªªJ*¡ë-9ìFxSZþ}Çq€¨ªª*’3ãÌû>ã‰)z€EÅ<¢Œ&°oûFÍ»ù;«ÁõeKAMï–´¥¦…ÿ0k‰Úz=ûvÍÉ…wL+él°¬Û•ž¬éC`Ý–}å—W7¢Eoù‡á8ù¥&Ÿ†‡ÜSrß}lλæéͽÈM”AÁk¥1j‹Üsb»æs…ZË@ɨ"(*- mY R› >ßÓ0ˆ‡ÈƒT›íÆ\¨äàÖÞ‘ 7kß{%Ū×?¹ÁöMu+ò”kª,2¬—,½µŒjùÕ(tàÏeI{¡=-­I´Às5Ð BåÒÁH4Nn‹6H‡Ž‚è¤ñº:ž=¦©Î÷ºß§ ßÔü¬?¦݉HMði!?,¢’ÏŸR~|‘܆šÒѦ̳ S·àdD_á§y裋BKå¯Íj'§Åð˸›}~–¥Ïi­úqØöóûÛÕ…×WdŒøz5~ëæ¶Ù endstream endobj 14 0 obj << /Length 761 /Filter /FlateDecode >> stream xÚ}TKoÔ0¾ï¯ˆ89R“Ú±ó'Zh)B¢ Ê!›xw-òXåѲâÏ3ãqv·° ìóþ&Âãð /ç^*e˜«Ì+›·Ú~ãÑåóíB8œ’œÿ…qyÁ‰·«åâò&Ž=ÁÜçÂ[®1œÈy(³Ä[VÞ7¶ÜšÁTž²ªóƒ(cåÔèÖ‡ËèÔz(ý@°Þø‚­,D[ @lA¥é~{ÿ…ðïÍ0výž„Ú¬úby̟гîÓµd—…üÂb™1É vß!†€¥6h Fdq‘'ᬠÿûòTŠXPQ»¾ÛôEÓ˜vã2l¤ÚºE‰#=ÒF3…š‚Ž²k¨[‘2ž Ü{¹ C¯º_¥&̺so½¶m+j0ª‰ÀmÔ­çô“馡޿(…*1»ýŽÚ^”u7ᜄBøºÛYxo6[š bbF©ô`æQN¸õ—7‰:%F C.C'¸G.b‚¾äPa¬nQ"ϲ_0•„²»ñ3 Åk’ºµ-áUôúÓMmUŒ@„ RÞµ%È$ŸTšt¹|"â4f îD‘bÈ\ŽÁvÆóê!êA—h=Ø­·Fï %ÓQÏ‚ë“ß®¤HÙúçˆ^dÄqöô€9àyU”ˆÿq4Nqr4!#™³7dr ˜•ìN 7b¼Ô4/LölËzª ±gº¿» äA*6På¤u„0c=ÿ …T–Gˆ=ò¥ñÍ^Ù[¼[.~¸® endstream endobj 18 0 obj << /Length 153 /Filter /FlateDecode >> stream xÚŽ= 1 †÷þŠŒípµi›k³**8J7qðãîÔõÿcÏê!¸H†7„‡÷ ‚ɃÀ‚sš}„ÃE˜×õÖAYÖKo®Ê`õEN“˜,ˆfé¨9ŒuéyRÛ´ó4öµ òÇjÀ -’Œù§:zÎ[RìånnTåɾ-9ë¯Ê¡|4%ž¢/7 endstream endobj 23 0 obj << /Length 2561 /Filter /FlateDecode >> stream xÚÕÙŽã¸ñ}¾Âû42ÐVDRgÁ ›ìA°éÉËd€Ð6ÝVF‡‡’¦»ÿ>U¬¢·úÈcà‘Åb±ªX'-6üĦˆ6™Raç›Cý.rP{·¡Áo?¿Œ·ÄÝ ó‡Ûw¿û)I6" ‹¨›ÛÓ&i˜ÄÉHïö¸ùˆíçÛ¿¼ûñv$”HùÆóÉ‘YºY(Eã‘ÀTšÇ¡P±?m—¤2øØ•ÍÝv§²$ø¥ìúÖ>Òä×f«DЫ}ù ǦzD¯EYe QÙÛsÙmwqš‡­Ìƒ³¾ Mw°å~»¸qHipn·2 îiÒ·„8t†ýÙБ©˜)Š8ŒAŽˆŽ¼k†5ÆdÆiî‘Fáî_˽Õ4Iƒ²AFI‘94ƒÐP$‚“ÝŠ ­i§9´ï;<¤œ ú* Öõº9^œ¤-Òσ>Üîr¥‚_{¤ ‚îÜÕÇ2`•Сmºòh¬9Ò\Ó‡Otã»8&ùÓ6WAki­lN­­u_¶ è+€»h=£ÖXˆ0•¯©uçÑH^q¥^ŠÕ«òÕ뀨…v°mqvÏKÛÞY]w pUäAg̵'¨H„R¦›TEa&âW¼Ácïfè+NxMÔ ò'o±È˜$f?ý¬ÉU`á¾ìÏ´öóß>ˆ5ðùÆ[ó0×ÒEßÁ-+¸³øZB!c›\6IÕ+zìÝ }EÂk¢Ž‰n£C*0 w«Š Ê<£çrøe»ƒëÀê¦ñ#Â.ºA0ZÛzlç2÷±m¼ÈfÎX¤A5:#¬\œ³¡C~ïCÓÚy¾Ë¸£ÉÊaídt?XCkýY÷.™Bç¨ËJ[Fi ¡?óO//ZÞÚâ(uÅ"zi. öìãcº¸‘„…Þ«ÝyMSpA"— »ÒÇR8³3‡~dàI…óYÀ|¤p£hqƒY$‘UP림 •îyG”Y…Q¡–ÂJG«gEhAEŒ¡ qß«P âIwÍ9ÚÖq†à÷.:Ø#£,\9Áppž“­`² Ø^a—Íe`Œ®·F×74©õtb’×3?·ìIR£;>ŠH«ÀŠçF3Ê¡­A•ÇŽ)—` &.XÆ`n †Û»¡6Äi·$«és±æ[ټȤ½Ò' Õ$áa°–I®í¨ÊjÌ 1KàæE"~`I­mm7å–™hÉ£}J—Ü¿`žTÁL!ŽäÂ`Úë/[oÀ0½Tm‡¥Ç Ò ƒq´í;ð4‰8–DʉŒZ4œ—L°çMGá"7¿?ïgšVã‚3¹gí‚ü+™™aœ(6Cé S:‡ö?Kч}×—ý@ž´Ë£„Â5%ïqÂ$d-´VA$ 1šc7Ú“w!¨=-LÁ³N›°°J¥Á‰ ³ó¡èRh:ÙÆQP,›Cm¬?âDçsú Å[Ç«9Ä{tâ-8{tâ$ÅïAWíϧpY\'–y„¦²mò†•ZP$cxEg;“E1ʉc.Ú¼V%Ô# U÷%E∥­¦­áÁ¡wQàHÓ)6Wh,èŠp2Ï]AÉÜN¡qM°,LÓl–7bðÏbõª­‹'+ôã4Ì ï©9—èHÆ®ž”ÙU5ãDQ©€†Ép›@¦† »¯ì̪‡yÂqpg°ÐMàQN"‘›Uê}Qœ‘ÀwoÛ/x¦i>™-àÏs -:0 1M×fÅONº;;G^ø^aô€itl9å‚ýHhºö·CC¶¬®0cÅ­ƒµC㪜sÕàÆ_‡¶7ŒGFƒy3€ó¶1KÂáZ쟅ÝeÆøèhãÂÓT|¤ÏŽ)îÁ@_(Þmus` zÆkŠŽpÒ"àǾÄ6ËØ›5¾g±ÙgTÎ?ÿ^«¬âšÛÑM¾[3Ü$Ìäèï){íñЏ 9š“ªž´¸SºŠä™&ól.NËúR—×3—×ÖMUíª’’Áðj]èÏÆ+Å¥yÄÂËù=( J>M;öšlW‘õè "°§{  ¥\ë6{YS·Ó¡h½†e 9…/öP:«È"cE ÃÌå Œ;óÐÓ耢ÃÂMÇ;÷`ð=+T¼a´mÈ8mÇ ÄÝCIY37æë(¦[ñP47%£¥%¹ú 5çê%\EEá`ÌÃJ¬(»0ß²9—{WïÁò”‹`e¼æïqÏH/fd’‡1°1,›5ã>¶EFUŒúP*jT›f—CÀÄ6`B¡€-Xð—öq™’óœc˜Œ£2â•` W¦„ ÒnëúâÍ œ›‹7¶CJ&×n 00_Wz¢7Åz’å†éRn4mï¶§#÷ÒY)/S¶!<^ƒºž²žÄÕ9ZqÅ[ÞrŠ/cÖc­0¿m© ßû†Ø5¿ß¶J¢ ã;õÄ6]y×è¾]O£Èäkÿ÷GÔ`Rœ4Æâ @Ç‘¦¬ˆÀ5}¬9AN %¥lѼšF³î`>yFþg2°Pò霣™A¹m]ïò° >6•éº ù©_ÎÙQŠK9p›}×VCï{©H˸ âdDÝÔ¥Oóil¢|šÜ×paÕ•=ׯ¾™uIXÙ]7ŽáZ2A‰ò0SùKÙ.Ï'“ôÚµyô&¨Òy9 °yCÆaæÂ[îÏTº`%^UôæŒàHÐ1G¥)‘Šh˜T¯÷~D·‡æÃ[¯z€yÿ²hcnÕzrMò0ãëéžK®#ÆûU­î„”¡ˆÓUå¦òÙT½úš”ˆ0Ï”Gù Žo»]i›á¯T¿BÈ0ÒOJÃ(SQ½*X–†*ï¥`»5É„¡9{ñ@(ÉQKÏ‹6y˸*YfyþâAE˜£–QEìˆ.KdÁ—ç„ÍÃ(O®„}ÕG^’cþà1J…ýKœð»×Jø•$ÆÇ-ªžk‚ŸüƒÆª Ë©QÚïvâõ—·gÌXÅ*Ìù¿šq×[~mz“-Ktè–¿®Ø‚AÝâެ9Œñ磹ãä‚«G*ÚæÛ}»C\FM•ßÄ}pöâ{¨|Sø7‡¥ÊÖ½áá£øŠ]æjn–ÏëzY•Ư¸\éÓ‹øðºÛ-Ž]ÐTñüØO>¯Z‰äRÿ'·¶¸´¸ð H¯ËfÒÈâÂ2¦"~ã…©ùãCá_ƒàœÞê’ºœ­:h&CUŒ–ñáMЪDz&S¹ “¶.{* aRž˜‘ó3‰ “ô v© …Eã{‰ I@už¸ó€^r6Ø.„Y–\½ÅÖ5\2ÔªÕãÓ”€sá8ôÿ ý <ãó endstream endobj 35 0 obj << /Length 2170 /Filter /FlateDecode >> stream xÚÍYK“Û6¾ûWÈ•¤B¥L˜xð5>¤f“xãTíaÙòa³®`4ЈŠTHÊžÙ_Ÿn4ø’¡Çd}Hé@ݺ¿n@|Á/òh‘JÉr•-VÛg‘mîÔxû÷gÜÍ ab8™ù·›g/_Çñ‚G,r¾¸YOEÝÜ-þ|·Ñ»Î4ËPJð«e¨Tü«-ª{ú±h»ºy¤Î›j)² 3ËÍ’z…­®ø€Ã¦„YBp™bùŸ›Ÿžýp3( q¡8óS’’L1.™ðW{ù:ÓI1KE "팶kÀ NóæÂTİ=M”8*ê@ÒüP*ÉxrÉxLÿ¹/Vßo±Ê‚Ÿ÷·mWtû®¨+»‘åÁ[‹÷ÀM£;œ—Ýð7Ô.uÛÑ׫z»ÕÕÝ èÅ"hÌ®Ô+ÜJÒ%Ÿê"Ò„E±òC4ÓZ¦LeI?ñcKûäÅ,âÜÓ\œ`pb8€I9“©†Ó«~߃gÅI KŽ—yaWûÐORئ¬ûüùUûÒ·™"c‰L.uŒ~ÞËÿÛ/ø¨9&3QÌ'$*fqžD`(Bf~á•–²Á›!Ô„EãúÎU¨S•V€1øâ£s6ô;7£­é¹ÖÓ/ý$X(¡~vÑPH¦”¤¥9ãL,Ã8Á»e.ƒºAYi|oÚâ¾ÒÀ+­O}à0Âúð~·ÌÜ·"Oƒ»É·v@£AØØ·ÆÎÉÐAìHkJ³êÆïš~ÂG4D:ë¦ÞR«ÛšaˆÒˆï0Áôkšó«o{¤È™êr¨_Ýä¯{wºÑiægÌl}"2f\åóiq§`âªø%âj¥‘6@ÛH9£°e…bã#z€E{#’`_§Á›Ž^l5Î{¤Î-ɧN½-ºÎ¸ï‹õL|< z(~&辨ì¦Û]žbi%”°°¦‡æ„ecô¾?22!,ëÆKÒ¿üœÂ¾ùœÂ‹…!ÖG…Açé@C_Šn¯Ä­ÛK а|²ß⦻½µñ…¯È÷°eãöWT[ +®&! YSò‰?à[c,Q³ì‰^ߨì'øÄ¿±çVt«‘™ªîHC/‘æèEDC¿Dqô?ÓÔðäÖtަ«ÁtÑ›ÎðaÓ ² ŠÒšÞ9cD°Ú7MÀö#YxÕGý ©7OT`V:ÂnwzeZÊ—\A}„HÀžF Í}MûäØþAow%€éK%Ã×ÓLòü\&é¹Jæ.î±±kÌÊÜÎÐu‰IE$Á» ``Ç-=ìÝÇCš±äBòŠörE~JtèƒiLdEKi JŸ¾^²(ÃPQõåCWûS,¥0‹ ʈ/Ÿ‚ $iÇáЀ²Ì–ÇÔÓÍý~;øŽ ûÏ>°ÖRÎE»ÇÑd‚§â1äó­ƒ4m};Mc§ÝÔàîÁÊ_=Á Àf¨ž¼FsÎŒœ¬R2Ád–¸Öº¸Oò®iµfUW.PæâQˆËahoëžÏq¶˜Ô<ð²ítÓ ìÐó ø&šMi ó õÊ<)AÍ#¶^b`¥,¶§ X?š¾@#¶‘} ÁȘ`qx’`Át›«‹£="SÊ»¤ôe15>:–U†ÂÜ¢<±…щó51-Y{ÔÓ3â°Û•U6È6„7}œÓSŽÙé´´ò”ðaÊÅbNu9ùq(¼RàÈ•p˜¶`ïŽ|–Åsfzqá?¦HÀkA¯zèt×“ç š5u4 uü9¶§J(ŸNîÄz Ð¥ë|uñ:“Šz[ÝÙ£öƸ—xçäèÃ&‘ }À­–å,æCh{줘ÍOŠ^"QL&ò@Òé3„- ŒnVhÉÆïã",rŸaøàS`&=<{æ}ôi¨8¥ ;qM*6ººwlf{—í«àæ|𖳨>^Š™¾½ṁÂåPë×#w I2|y×·Ì®ž Àñã½åÇ7çýº,AýÈ¡õ^!lCJ*ó°2»ŽÞu~*çàqú*·cåj”Ü?5iÓ>V5Qù–Æ×–â£c¡$–'–<ô—!)㙘R@‡7Ý\¨õi%]Ñ€iXÜæ]‘)¦”ú¤.‚ôã55üÐØ^à]~Ì#YÅšž€|ãÄ[E¡@þ¨+÷jB¿8±¢‰®"Šçw¯èÄ7¾ÜÂ.;Vƒ®#›ÉŠ1ÐZ·o*3Š· ¨ˆ¥‰8ÀdH +Ý?»|Z4Ÿ§?nœeéë×óäî\À±2k¦8¥$$–²¬žÀg<¸÷ÞÔvÓûME!¡N7“q<‡œ(¸J™ÌÕ®ýUA_Áç~½9W¼5`(Jþ1ÑjtQæít·©ôÖE:¸$]’Ðôç€C¤4öjáÃð]]•gÑÑw—Þ¢tÊ[Ú6w§-«èøÏŠŽÖo‰ï ° Ð\zäh>Û´{p¿äa^ °B´=ågiÊ„’w0§þ–Ú¯×Ń÷o¸Ùaãë)`)f£h¾ç·P ø¬ÿ{÷à|¨ endstream endobj 41 0 obj << /Length 1027 /Filter /FlateDecode >> stream xÚ½VM“Û6 ½ï¯Ð©•g"F¤(‘Êm“iÓôÔIÝS›™Èm+•EWÙì¿HZË«­v/LB <<¤A ?äq ’„ä\åé&¶Òîàâãûêô"PŒ.4ßno^ÿš¦Iç4Øî/Mm«àïðݱ8ªÛDI’„ôÍ&â< ÿêëö€¢ßê~ÐÝ=n>´&ÃAm"v¥Y õW#V h1F“,L6Ÿ¶¿ßü²K{fFóqÙU™ä„&CPæ¶ë8SA2°h>ª“6‚›´m(EÓàb7¸Žö‡®¨› €~ü'¦Ù7â.™yÙ["šÊžç5gþèjDñêÖVÝ¡¤Ô§SÑV3ïxXi´ÚTßT9îp=<׿þ5*fìR‘RÂSî]ÔMµd B%óJ‹vR"˜ð&¢çš™ã•‘MM)êý9îú¡LÄx ŸÝ›À‰äñÅ3«,!›‚ÜkCúq&+\Cªy׸Ä!Oe9vjа……å¼Õ¡Þ/yC™ €=†sæ•DЉ@ ç3­°¨ZÃÙE@JE6QJexk9tòJ5õ©6U צI{üÐü©púL°pgS¸{U™µ.ɹ)J÷â³ÿŸISÂÒ½˜É!~ç9ãáöèÌ?8n·œÞÉÿF= ›Ì¸¹„yÆçÙæúŠ×1E¶`‰Å$åtKŒdr ì®Yç LAÂ9™œSØ4ÕÆd7–áZ'„÷oßýÑÀ]óÿ-‚gòî/üik´UœÏ˜ì¢ë$¾T’\°• ±BN>¼{4Öãìöxc§,*”î0£ 7J ÏCÉ>•/¹˜’êpºEÓ'T£C4GD¥CÔ‚ŒIóyîjÛùeŒ¤Â%V¤ËØ ˜FÙ  75*S¤¹±nºJ[4xÃçÍ7 üëóPk§Ò½ûð×¼IÒ}²Q‹®('›ºÅøEnIzÙܸ´µg?Zš©}µ:Aòÿ`6n=çæ3. ÏúZë±Ç{{ßÒ!ð环ƒ,ž§´Xóè]]{ƒ«=¨ƒÆÿ©)š ”MS›ÍÅÛ¡sgŽNOá(¯;¿Ÿš¶ðFäš¶ žUÞ¤iµÖÝ~ÛÒ 0 ì²­àiÉ ÜÇØ¯óò•{ú8ü§N0³š¤D>4šÃï…Ù ÿïº:ef} ¢´ã¢\‘ ³|Qq/1•qx\\Êû5ZÞË{(FÝ4ÚÐínz„.Ïß8†9Ÿ½€hì„›ª6}É?ýu[úç¯{i*l¨G£Yë®òÝãÊíñ‰þmÍ endstream endobj 46 0 obj << /Length 2180 /Filter /FlateDecode >> stream xÚXmoä6þ¾¿b¾Õì8–ü:MQ -ÚnwE±M?zE ØšXX¿ ü’ìÞáþû‘"e{o³8ÌK2MQäÇԈ]?±;»4 ýc”íòúM`W»Ç ÞÿüF°Ü ÉïïÞ\ÿÇ;øÇà(vw§],?ŽâIß]±ûËöÞýíÍw“¢XÊ/Ü%_l™&;‘úRÄn F%Yä‹0¢Ýäþ'Òûu^×>vj/¼º6Íãþ¦±÷l†’F?ÿò; Þ™~h»OhåúïÌÃþëÚ ^Ùîeê=ÓdhIÐ4ø)|wR¹¦¥³µ³fÕC©}BÉv¤Ésg–§3X¥¥&³±4;L…ÂI2û±·'c? ¤Zxaw‰ŸÆéî B_Ä‚$þn:Yèùàdy·`hfôe;VÙ4ÉÛ¦7…î´}),Ä72m­ÔšóƒC$Z"ðyüÞøaÉ™k'·+Ÿ¥ž®>ýÉÇ8«GíÔ¬ŽG?–éÇI¿rœµR{Ÿ€ùùa”H”<„‚5BfD)é}Ai‡ $<‹1gÜ@šc¾žî \H&®(ë"öל¥8ë´*hdšó8ÐðÔµ5ޤML»äx(zT¦áWj¸x1˜ Š"à™í´B_¾ŽÐ [#”÷¦ &»ù$ê¡‚LÒœø˜5N.ßzN$Þ›XúŒ3ð'Qó¦SVh(Û^ÓµG@‰£§ú¾µÌ5hU݃Ø /Ô è“4¬iÚ£œ:}MA²ã`ÀüÊü›•.ùâeæ»a8õ“iÇž²4['@Ñè]Xé™·õÙÞÎyÔègú¬…Z”"BQ{A< W.Ц`"øÚB! R ¬Í Ä"Pð¦T=­*ôÿÓ>Ž=e*k?…9KZÞ¥Óµ®ñ¦änÚÔ†>Ù½ˆ7fŒ” ¥³LB$*˜@d”^†Ôê¶ÍAEùÜj㊊ëB5@Ö¶ö|“&²Ò~xê@ F'Öe$À¶d@»ª£š‚Ÿ/ãî0\víøˆ8ÊXPŽö,)÷¦a¨a–(•iÈ(Ôðs`P2X}d•ý€#ŒÅ+¬vúõ°É—º˜d.¶5[ðeZ™ ‡Qa:•+Ë ãÖB7ó:¿0ˆ·¼Bß”x¼¬+ ¸ÄчþxVPÂ)—^t{ŸÎLã`H[»¤›˜…åçÒP¸h B±/4Gñ° ,Ne‰\Õ¶ý )@”’3á®:-Ëu9µ…='yaþˆã1i˜‰þÕÄNÜfvÄÙ•, ̰oC ac/ÍÊÓžÞNÓ"ý“eú'.ý²˜Ï)‘ÕÄZpŽõ’„%ãÀ¦>V~úlâÓq"Zw©òèºNiQ„^4ÀÝðùLMDuøÐØp>7´Zþ{šÙÈâÖÌy¬˜;pÅž÷ôǕ7r›‰9ÒlI±!7Ô¸HjqdÙžÄä0°À`;1ÂÈEYzª´Ïa’‹´¬n>)n¬º­æ³75dcÔ–VØkêÊe½îLJ~0ÃèÒ*¤DI!Q0³m๠y ¡,M.úìó³é2÷åV.ÃJdS_ësÒA7Êðü·ˆ-éL†ÁEuƒör8É~¬,•[Δ6AInRðz)&>MàçžT,ÉL“W#Ìú¶f}åò³ïU¼f¯Ùú¤Æ ooi°„1QL%xUš_ªØ-±,…ej›mRûP³"<hoX‡Ffn?Ï2ßkHL‘q9`†E,j¾[Ôœ"òa›GšmJªÊ ‹eÈkË"8žx'áž—¯¹Dm÷૎º¶œº„ÂQ•íà2ª¡ðZÏÜ9("¢›.;Ý,aLq'-¶-y€ÜWéMì'ëù"üMÇH»f¬øå·›ÉÙpL§Êfœ¥S¥¾Øºf¸Œ‰0\•jd™ Ù6&aüàÒäeœ°—¿êizÒj;mYH {ÇÆå~D?9M@dºkè aC1¬ ¤X¨ª"y„#.LÌ›nêy|¨,ãáfÑ]"Ü– õÁšÞ¿]½$“´û­˜“bÁv˸ýGÚ:¸¸‘6n€ô§LœÝÝÿòyg‹kU.{¿Ásò/.{ÇeM¿dàhê³×¥†) ëÔâvèòýâk.¸¡hÂÍî;zqÁòNêâ^6ùÐÑ oj«ŠþVê¿ÞD|æg—42|:kà6úkå©5®Ðôùýpã0 ®ŸQDh|ÞëÆŒ ÿ!~¯û³ëœÝ ³îf£.Dðܪ>ßlar6—Äq|Ãü³±õIêÝíow÷?þr÷þŸ7[ÀO2{Ý}ÑÝý†^WîÚÀbn>‘ô˜µ©¼¸ÿÂß‹xFÏèm™3ýt»Ü³m÷hÖÿq4ðóÀuÈ!wJÊw—ÇÞøË®/êÜc%ÕÅÜk§ÜÍLÿh` Vñ.SNý¥ç¾¾²Ñ¡YýyEŽøn‰Í}ŽS`[F8ZƒÏ³ÂvG î€{[òùØAÿ?8eÖ/8lO+AW3¶ÐyuMP\ZûEy´Øðóyô˜~À*74¿füښƖÎåñ'ûù›iµ?Yf²:¯Ý}ÿS„a{ endstream endobj 53 0 obj << /Length 2109 /Filter /FlateDecode >> stream xÚµX[oÛÆ~÷¯Ð£Tî—ö©íIêää´±ú¤AS+‰Eª$ÇÎ?3»³¼™Ž4…k/³;³3ßÜÈüñE,")Y¢âEv¼ìj½_¸ÁÛ_.8Ñ­p= üisñü¥Ö °$Høb³^µÙ.Þ/>¤§ÖÔ«µ”r)¾_­•ÒË_ëj_§Çc^îÝÆmÞÜè—7¿ã@-/ó¦­ê»Õš':K½ú°ù÷Å‹M'‹â‰B#å}©Ã¡Ô\LhµcŸTNô¼lWpX/«Ý®1í0‰"½|þÌ­nÆ Š*KÛ¼*ÝìTÁ9|0Nð]9mÀ¨q£´®Ó;æÆÏžãÃ@Ð5—Œë ç”ûö0åüæ|¼ñªû5…9š²m¾’/Ÿ0nò¿ ° cñy¶MQyžiaa¶Ä¶úìwEºo~°$kΙÓ õó?Guùêjó߷ﮯ6?n^Xê)ñP ¦^󘉄ìújç Ö¢j\?·z4Ç•ˆ—7«5ü÷ÀÍˬ8oMC<&؉ÐÀ[ìí—W Ï«—¯_ükN 1u´ßM9xÌãê!%‰HSºiÓæ(°Ù2Ç i“*öŸϵŒ éø&AcàE—àNK°_@ÕËU"—ç2C7s2£‘¸ŒÈ@2†c|\™vqï™ø¡h\À„€•eU½íáSõÊ¢X°$L¼˜ƒ×Œå˜{¹'›ÍÉ#Åâð~fWI¯ûµ¯ÎÅÆ¦'ÍG‰H÷ Tê¼`›Ì·ç´p{ÆÅ±:7Dlë-MÙOôJÕÜ*«J %zí–k"œRHjBâ-j}&|v^é­¤–yÛ˜b÷O%Åt»ýlJ 4€üË<0Â2ŒA‡”ªyp…šÞ=å“8|4W‚ÏÄrâ ¿iff¡›°DÛ3_ %{(;è¦({‘)``lEëWIÜïô€ Z 2g(C×¢âZÚ4•-”³Üuh¸¸MÛÔ ŸP¦Øú‰râબ;«»iKÿ$² ²Ýä*=ÉÿŽÛ$Y(ô{óûë׳Þ+pØ{ï:ŽÛ°©ÈQÈý”Û.í|t;%MÀÊTEÔŽ²¢£}‹#Ÿ²»iãv­®[×Áu[²Í½J ÁS÷¶Íw…¹vª‘!(… *Uü¶4gZ©a‡(j„79 JsKÿôQÏŠÕÀÎýöàÀÍQ8¡-¦«sA÷›O™1/ A ôMùªkMâŽPPLR¹ !ž;e€œ ñÚ+4+Ó¶ÿTÊ„˜ë6?Îgz ºN¾¨öúê8>^“!P»Ôûó!-÷ÓFÇ>È×XÇ%Ö{n”ý·¶.È+äk“™¾³’ãŒM¥œŸÎçi©Æcñx´”r”¨ñëƒäúmJñëo6oßêpDÚGóÙD©I·ôx¢É‡s `îv]-N/IÌb¥§¥8zI¼ôÍŒ¹_% }Lé< —Б®‚/)fO Æu%¦—©ïãæÔP¢WWGÇÆi(-Ü׉’.!MÝ‹áyK"Û¯–¤=¼ oè£_°0УàYÛ^ÄÁ`^9ÄÞ¹Fþ—R¯²«™ôE^úà†™ï;·í"+­œ)t˜¾õ­Ž™ Iá׃µ„"\û¯ l™LÙ>€Ì8bê˺Bô‚™æÈyØš* Åßk>¸fZJ{—¨ÒE¿s ƒø4o噇Å1 žÐžÆPrr„«{gé $KÃr(ˆ9gû_#1´ËHÎ ú±[èRƒ0 éë°û´ewNuî>=´$%•_Á\u‹¦áš¼¥àÈ~Hæ:ôf’ÒÓi…Ý@†1¢ô.U¹¶ßnN®@Êð+²Ê¨ƒw²tn5¸ ?ÝúÏà{mó†>¼6“vž„EÄý`λ„ endstream endobj 62 0 obj << /Length 2399 /Filter /FlateDecode >> stream xÚ½Y[oÛÈ~ϯÐ[© šå\9ì[»Hv³Hƒ6ñ(²AK´=(Eª$e×ýõ=g.¼ylyo  ÉáÌ™ï|çJºJáGWyºÊ8'¹Ð«íþUjï¶W+7øôÓ+êçm`âf2ó¯g¯~x'劦$Osº:»œ.u¶[}I~¼.}Ù®7œó„ýy½B&o›«¶ØïM}åÜšþÚ~úø+Dò³éú¦½[oh.KÔúëÙ/¯Þž ²HÆž(4Îýk ÛÊäµûkËCUlËókw¦ó²îádv9•Nå`T +ûå~Keêwͧ» “L½f:é=×f»fYrýÆ]o›ºóÜý«âueêò .¾ÚP8=Óå„J·*Šº+ú"ÀþŸO 'fL¬TFA Šˆ~ùš®vðð—UJ$¬pk§îWœHØT«Ï¯þáqŸ„êŒ(Àg€öÀ{yÃîKŒ8%ZÓ DÔC4Ó膦)ɘö‡¢nöߊ#X%ìò¤¿öƒëÀ5ž2|H‡i¸Uôn^ó[JyWö£NÆ ©äDñ N:¹Ž ÇS¢³íÔ|¦­QR‡“c15z¸[™à;/<ÙpÊ®¬Ê~ˆ\ÀÚÅ¥÷¦ìÈ\JB³—ĸëÍeU> 2l–¥êùd_ü7¶®pþ$Ú0O)1ƒûs)­­Ñ`~lDï"â`‚j ìÞ’uB]8›n buå^lêên±VUtQßÌxN bg[”^g›©q£DÐË>™y’àí[\pOÆÕ"ö@(¶+p ±=@DZň`â”°‚¨œE„u$,úà_9;ô¯4I¥ðlÔÏg£©{GÆcý:rŒïßßè™&>ÓÃç¾9`¤JÑŒ‘ΖáÚòˆåù `ÅF?>D¿týÒýÒäЖ7¦9vÕÝó{4g,{{w£öB»xð‚àYhDÃ,ÃÂŽyÒ¡¡à¶xá}U$®€þÒ‘Xs­árá˜SÈlfFoQ¡Î"P#þÒx¹Bì6½ñé{|éþ=Þ“ü ïÞâÌŸҫ¨Ü ©*ð^æslêòªw@ú ñ¥†ÌØ-[ÿ©xå—°ƒÜ›îÜAe.sõÝ-²ÎÕ·O•Ÿr§ÿ•mãQ»œE5>Œ!­˜hÇÞïsÿþˆ¾vqðÿð.P ¡,ü%¸àXé g$ UÞÿæ–r^¾;u'BCp¬.—Ÿ| åAè°ËãŸ}ÂìÍdzäÓÏrQ×#(·>ÃÁ@N´/cY·ÿ‰ž¢hMqQ•ÝW_Ÿ2ˆ‚"[䨇©Êt–äË#Q¤JÙŠæà`3qâHaöf2=r¤å¢³²åÖG£4ÞGãÐVìð>¯qÃi„ÒjpÓ,ÏlÍ‚÷Lܤ$ö¯Õ“L Bçè̓PKufWBºÁ؇·—ÖXyÔ6ðþaCÚ}"l€c‡Œ<§3g/•î`Æ|Þß‹çx?Þ?€´ž²ß•ä`€ŠXV¥ª9H¿å;ƒ ¢i¸”ܾڀˆ€„ hŒ‘seØ¡=ÝXf\æñh¥B±„Àßì­Áýõþàž]g9žl¯ñà¦ÿ=®1Mz•HÒ/ÌDÇv9wÙ¹d0`’’+—6M÷Fý[7Ķ=_Î0 颗³7]7–cCOaöë^’àÜ ë›¾¨Î/îú²{)6¿H7,ƒã²: )¿j>вõ%SRíÞ&öÅð­Ø/Á’Ckö…û’üÈ—fV(Z¿õõyïãkhMÅzÄm´Ôëlû9VåÙ š½î†¾Æß´ð£s`|2ƒz„/óˆ‰ endstream endobj 69 0 obj << /Length 2569 /Filter /FlateDecode >> stream xÚÝZÝÛÆ÷_¡G*°6Üo2}Š‹8Iá¸}y(’àÀ“V:¢y%%Ÿ‡þí™ÙY’KŠò)nÜ…Ór¿fvv>~3k¾Há_äéÂJÉr•-Ö‡g©ïmv j¼ùöóV0qÍ|qóìË—Z/xÊò4ç‹›m¼ÕÍfñsò×ûâáèšåJJ™ˆ¯–+¥tòcSïšâp(« <–Ç{j}ûú'l¨ä»²=Ö͇åŠçÚˆÄ.½ùÛ³onz^´W23ϸ¶fÁ%KíÀµÉãRׂI¦–+$üpÔK)’wÄ®ÕÉ×M}ª6Ô>Þ;jô ãÇ+ø@ާâùqËŒ”DçæÞµŽ¾=UëcYW-¿Øïë¥È’G%*п>5Kž4¹ªp‘&”ÕÆ½ïš¾¿¦a¥Lî{þàcüÑxM=wˬ s[¶­›@·¼/ªÛ0<×Bf O»X Δ4tšŸ_.3™„s—¿ €¨9˵(UX™Òš²JZ莽[ }ûP·´Ô¤±ð¸P̦¦[úKªÓ@!)(&”ö„ôàÏ8¿¹Ô,—"Ú›ÏÝߊKÃÒŒcƒqÍiö[—J [¥¯©q@Ú&Gêè¥Óê_R.Û~Q=œ":¬Î€¡ŽŸ1çcž¸a\ðnæsØ”çIQÝâ®­÷§£#RAK¨ÙiɈqT ¶\&oÜñÔ >âNÃp¯xû Äšˆ‚ˆr{Z¯]Û>'Y§¤8åvîp:gŠk'R&ÒA[Ú ¾@§So<)öýæšz¬´»Æ½ï&ö¶ä%p:àß ýan½=3•8XSº–L@€ pùÛÀwß¿½¹ýæõÍ›)|A?{WÖ§ö¶ccÎ$2Ë”ýCñQ—›¹íà$9Ïž6𕙜Á‹Â;‰‚´¸INôK†FgdŒÐ1>‹ð‹êÉâN3+»kù°Ì*¿)(ÿ†¯ÂØÖI¶"e ê7ŽW™Ž¹s‰ 2ÇñÝ{"Œ‚Ø÷Û^šà6Ë ”UØ b¾‚?8…¾žAtùƒªD7¢S&Óþò^ÿôêÕ¬™¦•žTFÒW›1‰¡ð3©kåÞ?ªª¢ªÑ×èªø3u|z¬«xwB„à-ÄD;±£×1œ6h'5nëš–ÚÇ%‚ß,èçÝRC{<Ó>0Õ‚ÓTÚq¤µuA( yݸÈ‹ÀŸ¾Ìß¹övÌ¢š‚†ù£æy°¥4õÊaÁÛz¦Ê;àjÿah¨ÂmhÙ øˆ¬6ê倻×ô[ÐP,„é&gföv&ÜT1ŠÜƒÕްKg¨rë_hFÖùX¶îÌÞä{KóØÞ^\28)f"ØØà¦ Ä¶lA Km¨©jJ€b»õR"^èÀæ§L5˜ w˜°ûÚ«"{K1Ô„ÏÖ Á=b!Ï(ö:”g‘†Þ€%¡{ë#o¸ã+iÄ“­©·(«~ç"Ð$¥të4L­C'¬¯vlN+ÞNx€r(ðY˜2€Yøx±¸; ZjŸuÀ' =¢VM§‚CTo›ú@­`Vbßbć£Ñ•(z6cµ7~¥"ñÓ÷p.ø¸#1ÍAª\1•õz[T´Gݸ͜š(Á¬Î"Ì(•I®7£TgSªË ” ØòØ©=vLcžÏV†ûØ•Õ@À+•"8F˜RZðýT1ÊZF^ó³ç!p÷³Œgl€SWű5äuÁC­Q‘î‹€4¿ ™>enäº6eãè³ÁTA:›?ýd™ãô·±†q; ¬WYoËsiIj˜ÌzÍ *1‡H,D{k³öX4GÒ çÕ$f`”5q4 l¶9þrÃ2Û£Œ‰'F ÁÕ‹Qnd|náü,ËE>VHÊ#S-ã´ï þ‡‚[1~ãÞ4¡©O»Ð9 CŠ\fØ·]4=Z ¾ñt׺:‡3ã"Gé VsA`€/9·Oß§ÕV|œˆ)Ð’SµyÞWªQÍAMœ"tŒ2ª¸fökA% ë} £˜[>ÁPþÊ2ii6RwråÆzæƒ6Èö'è =„ \˜ëù1]bl }p¸š ïËÊQ—wkÆC›~üѧ 3!yÎô5Ècð[¸yÑ),(¯æ,3v¬ŸÀ¡ t¬/ÂuwÕzÂ4¡OQü÷ŠWt² .YkÆ?ŸK¾»Ù–ïÿ¬ãæšÁõ@ 6]3æ˜äP”ŽÊGðqÉ5ãóOðÌÊÊÈ3#´7¢O‚íqI yò©ÍÀVäŸm–¢Áþvr¨²íâ=@m­&x?._‘¯ëÁiªÞÚPõ„ˆqˆˆqúºòŒ¨D*™tàZYyGÊ/Ež `÷Õqǘ‘+^÷Þõµá+”« •úØÙ… ˆIä`iÁFÈ`¤ŒarA!¿|¹«O(5‰@R"퀵ça‡IòÔ&aǪ Ò’F0ÑW¹»TÅAš¼œ|ðn4ÖÇ"“wÂ2¢óÃr‹`d&¦¯ŒúfK¿>Ava²E~»"ôLSx$bì Û}Î ‹Bb|r1)™¤³YÎÿ‡·¾PËWöJóßsÕçƒiÆxfžvãà"Àå_FØÖ\rØZ0•_ñen¢¸.ƒdøÀdš™l[ïÒ眖2¾qí3ƒˆ=ÐðN ÈÏ H«3&ˆ£bžé™œ˜Â6?+ÐÍF8¦3{5þVb››¤r»âXúª¢ó%]Ÿë=£‹Ë±_{‰¬Û„-¢‚@ Ðë sF¡RùIòEîbœ›P§ðt;˜ùXnÍXzÃËMž;°=eýƒ¡Ê(ÍÐ|¸}T”ÄŽ‹VdÀë+rCŠ6ù„ÅÍ;'®÷ï8Ø·âá¬"…˜1vú½€.”Ü ý=¯·ª·ýPTXpÛ=Qj{YîÝu¥6,p XLµ5ЭæêÞ—wMAEPž¬Ñp°·qņºŽÝú¨ZÚUš°»@O¼¡öcSM(ÔEXîËÐð‰u´½ó©2B±²¥î6XŒŸº Ê}êî·‹Býòä…šŠ}Ð1îú¸TÌi8乂Rÿ6(î x .>…Dz+ÔC3³æÉw1ÍÁ©z?¢ÒÔCž‰–WÝAðÓÖÃÝÃu«â}ÿý%)à˜mã§/$5¸h$”l^é!Ýg[¬PìC¥GcAHð u®iªú鋎`JÖýךßÚi7, endstream endobj 78 0 obj << /Length 3045 /Filter /FlateDecode >> stream xÚ½Zߓ۶~÷_¡éÏõ!øMÒ}r;NœLši“ËôÁöxh‰wâ˜"’ÊÙyèßÞ],H‚u’¯×Žg,„ˆÝÅî·ß.N¬8ü«”¯b¥Xª“Õz÷Œ»ÙænEƒŸ¿{&üºkXx¬üëͳo¾5f%8Ky*V7·á«n6«·Ñ߶پ˛«k¥T$_^]km¢4õ]“ívEuGî‹nK£ï~ú:zS´]Ý|¹º©±2J®ÞßüðìõÍ ‹‘òB¡qå©u Oã•M4J“äo¿½JTt¨Ö]QWW"zÀíJ–#ñ‡×*q¿äô›¢ê®`?5y¶ù°%>4Yu—Ó¯-·Z1£LÿëwÜp¿In¢™Ôª_´®«¶#[­¯dm3oÜçï¸Ðe^e»üÍÕ•L¢ŽìyÛÔ»ãyuõ¢d©d±ÖdÂK6±Ûµ1c´¯PLZü3èïæ6ÊðŒáôw3õ-}–E•·4DÁF­d„U£½vK‚¨”©tõ"Ê6ò0Ø¥Ûæ;?ªI*˜¡‰mïi$XÛ1ðRe¢_º¬éh³@'ðoË:´¶13&öê Úu[RHr&øà*ÚM¤a2IûUY¦”Iå4ˆýÖówŬ©?ÓYh2;z*ê(ÓèûÛEÓƒå¥ú:I‹–ý#oj°¿Lm3Ü íˆ3ÿélÚ|Ä(¿+ª Žêa¡LÌ´´ëç9—©ÌÛ–öë¶Yµh?øNÏj,á”åèeÎ4‡s¹èW§Xå<‡FŠº¢¤¯ä~0p'‹áry0Šø=uR±½,HmRkã €¼P09ÒO¿þøã C¤< Ã-æ‹J–œl“À ̰Ϳ¿a}.lç.c9:î±Õ{ÜéMÕ¬qB½â–¾¶‡õœàöPz ¬›Eí¥eF q”7MµèfJ†"õ›TuGÒ‰Ô:7„ÜŤOOË?LŒ4l¾©ž<•,îÅ-‹Ï¦‘Âf©Æ¿Ð¨ ºLì]=N¢õ¡iò!-ÁÄÊðeˆõ©ïè›8}l‚HÒ¨Æ Çÿò-ŒÙba# àÊ c „Œ'ž T9z_ú€úРûr@ǰ¿0éa„1 GSŸˆkÎL".Šë4´%Ê =!/Ä¡?9œ ¿`ö¤ÑpdvNxàøº¸‡¤¬Æ G!8íU{ñ|{±OE¸Šw>ÀK’êŠ@G¥‚ÙÄLP'£ñSû òÆÂ!lS7 2Ã-DùÈí÷A††„é‹aD´9¢H9¦ò²ì|¨¶L $ R"ÄY(‘q vW»¿Úï‰;¸ô™p%0(³v‘#AΣ«¼Ì=ÝÎz¤.9‡»Œ…[:¿wÏ—¡ŠK€ø1P…h‘˜h”2‘éåÈ4’—“Ù_'_ŸüSI AAëà°<(e“Ó ÊŽéþ`óD<´9€& <Œý·=CbÀpq PF¸wf´wê4áABbÁ^ö ÉB_wv ¼ Þp[”Ëñg%SÖ|4<¶þ¬¨ä;!…”ö|­ ”«™cÝ8BAzbõ )Bq0D¨–Ä¥ÁŽe¾\jBÙ&dØÑ(óÌq WoâæuU~™È£Nâ’£nrØ=4ԑé!ØÝ*ðú ÝepÀ\–ðgÀÁ õ08@œ–Ø)é¾$”@bþfȶFØËÂÞòðÅ…§û½«oÇq-Ðã€iÂi ÀNP"¿²è1à6+ÊC“3ú”g`0ŽÄŠHR1ˆw0ç1ýN–ŽVFo¡@/(=6Ñkœû¼Ï*œ.êjIçi²o_ÝlóÖÓ[#‹Ý~L}´bLfÈVh3¬Û«~æ‰ aÍÓ£TŽzmžˆ¸¬Q)I:zÞv µm^ÐDøëy}èö‡n¹5lÏ7À¤²,Qv¯f! C5뤻[ŒžpyZ­$ѾÌÖÔÏ+§M{(;{À]¦ `L>ˆ¡æG.-¤œíÑ”Äk¿kë¢,5}úE^-7ÆCkCåó®¶)Ó>yÊ,œàÃMÜ~õu°|©‘;{©Óá—œÔI$˜ð<Åpfña:yû&Œ„ï{=3÷‚÷Þ‹öÙ,1WJÅ´µ$,Ó ÒÃJõ«¯ƒå JÍ_:xä”ô¼\m¡Úq)=8ð„jÀ`È(×2  žûtAÚ†háh®ó„Oô]3§!žxÝ`ZTÜÕ¿8I9>-Âȇ¢ë ãwð©p)lA8„8HOî‘ndm¿ìÊû”¾à›|çëzÕvÛdJôÊÛuæ™(Môˆ'œ7-Íí(×}ëXõ”^ $-²ð<›¿,ž†³ñä(Ĺ£è»Ká n0øš³Ë>]õ:):³û{°º¾X°Cã ì=î–ùôšUAÞh×Ö‹j&ú¥F‘ÉÄeßÄ—pêù†¾¹<Œ€ôoëCég±ÙGþÁ¦hÁN¨Çgºk$ÑÇCG 0oÔ~œÎׇnXã4‡úk+®w<â6B‚¿Ü/s[¿jâÉ; ²MÜ­¿C#D=BS©cÀŽ ÜshÚ¯¾–/Ïì¥34Ed‚):ì·¯}{qÛc¸”s©Uª {'Jݯ>#õü¥\:à—P j|Mèqß߆ÎÜ—hÄÝ)¬]‹r3T6SÇ>&¸³6}^¾<| KSÔZ.eEô¾Û´kŠ}Wü„ý ²ŽvØm¼Ë}7Zq¦ãä¿§nkÇœ»=§»¼.9óßój™IËx’„ä¸Eêi0¿¦ñœÑMSY`^ÿ¦4åiZâ )&{úm½|ƒŸóKÓÇôv¸íÌá%ô"PTÂ ÝæeIÃ]q·u®ˆpf9öˆŽä'Šñf켇Oì]¸,:ìÿ˜Çõ”ñlÉôhudËÁø½bAë™âo#W’ÅPµ É<6HþÞ¾ç« <‡†³ºw+w+åûòåê—gÿô q Ųœ_Õ÷Ë\`×ÍfacX•$é“l¬5K½ýÆ›¼,v…³ÖRÑ{Û!CMkáŠìcIMvK!äN¥?gýv¨(€ThYšL»¶žX†y¯/,UÎ@|=,é1Ï1Ð6¤ ~…§Åþ[éêïûÿÎLa&kî>»B[¾]ê­ÅW!Íä䦛¶{1”´ã#ìè÷Å 8%6™ùùÛOd”§zŒ¯½Æ@K\rÃÜ ¬éH"~Íïv#“ÔÒÉF+úŽŠju*.%ÞKèÉ­HÓ.V-oÆ¿ÌÚ6õ€f©ÿ)™VÑ"ó»>""œïa¼¨u’*N‹U—»1𣨀U³ ÅWýî1‘¯0>ÔÑ¡=Aµ±ý‰n97ÎþNO€ÐSJ€ô :Ím endstream endobj 84 0 obj << /Length 2187 /Filter /FlateDecode >> stream xÚÍkÛ¸ñûþ ÷>´r±fE‰¥ô…^÷@Q´½í}IRW¶¸6qz8’œ½ýñáŒdÉön7è(‚ÄäÌh8ï2r¹ÈÂ…‰c‘©t±­nBmw Züý«Ét+ \M(¿¼»ùÅŸ´^ÈPda&w÷SVwÅâuðû}~èm»\ÅqD¯–+¥tð×¶ÙµyU¹zGˆ×ïiõÕ_þ |íº¾i?,W2ÓIdË·wßÞüñn”EGÑ3…FÊ ©M²JÄ*‰Xê$UBÆŠ¤Ž„Z®ðدáüÀuK0±ÑÁ÷Ë,òÖå›Òv(Ö¹ ÀH22bÜíÁ*ÊtÐÙmïšš6…í¶­ÛÀ& ¬'PA¿·„´?‚Ñê¼,?¬Þ»ÎÁI¿ÔÉél&=xMÛÛ‚@›%ì?ÐYz9•1Ž#!´‘—qW¯iÅBgÑ@4ºùþÙmÚ6© ~ºˆCaÀš«HÂç }ñúûe:Úê-Ÿ–­½åWqš-õp†«{°|¤ƒ=¶Þä½*Z*R°s,¤–ƒ-ÅPÙìÜ6/)Žš7¡Œ;Ûª¹§ßžhUXÕvŒµ5®÷ކ­«‰¦ïøS`Úk# ¨ðÒª—¶ÞA^<­ü™î^ƒcµŒL€¡eÊ=5j>èè0~±=¶-KV ÇXú0B•ÿ¸¶5Éûü0С àKW±9 O¶IN»–(Ñ6ø;ª†›‰¡Är•iÉŒœˆ-† R23ÚlµÏëÇËܨú$zÌÀ®w÷¥]{[®5Ó‹…{êþÊkÆÐRh¥ŽCZ&Bùâ~yh]o×½«l×çÕá™Îù,­²0¨¡ Ê`õË«m›[ä Æ>qóTyki‡õà•J3¨Äô‰€ÑmÅ„.­g˜]ßì-£·yM ÎÚZÛÙö=º܆f géÅî‘àÁSYN‹Îv”t ¥Ô‡*(@=‹ÚÝÃ"?–=©~—GÎ%Ç9ÞÒ¾²y=6Å~ŸóWS» ÆÛhƉºcĨD"Â$›d† åáÃÖËGQŽp}:‡Èî›¶Êuì°^ ”Ì®}/Ò¬ n!‰(²Y¨X„ gA<4ówc—Ž3- Ä®J#‘¨ûôë·á¢$è!”Ydæâ¸õÝHrŸš0À,Ù›¼~LB,DAHÌæ$b_rø¯«-)ÔB©1rµÉ“-SüŒûÎö=.¯Æp†3BB]°®4jVZ]½w×wW†‹Ñ¼ŸÙÝqÓõŸêBHô1¯Ù…â¼Qƒ ½kš–C²Â7¦-hçwý‘.þCLA…å÷X3ÑÀ³N†\h{"k~JWc.›T{9Ï®yº:I2FÃ?‹3‰9¤ˆ£èåEEüY®"8¶>*•„âÇ^ ¦õÔ`YX65Ôk²½ÔÂøÙ¹9 :? $gùGêÓµ‚YøLÇI`‹‡2'<ñ7§¯†È`a€[}ÍùÂE4÷á ,†¸À`²ïŽ\ 6S #Øñ@¿¾Ý_Up[Û fÚòÂíj¼àH%%qÀi©#»=mé炎 L±óÄÙí«µUîêbx¸¸q0ÓdåºyÈ®ÃX*†òOwÞ«Ã×g* ??‰Áuë–®rÞÔŸÐÂèÂOㆫÎÕ{ZI± ÓkÝÑ-{%e “ŽÏ†¯5|mk÷Ñ>u•!ÌmÙé*©N²žJ>™纫¢„J$£$_p?È Wñ,eßÈXõøO=ˆ÷«ßüò§ÿþâšI Õ'™ßw¢4Yš}6'w6o·û“›}1ú_GÐñÚŒ+?5{H^[>[D4Ì¢a{G`&Á« ò`Y˜ýŒ ¼Ì¾ñ¾Ç²xK9®žKp-‘}LJC¾µ·”dwøôó»/oŸè&¸b“¾úïýƒ¯7uñÓØ/‡O~û\¦ï[|Xš”_…½’Ø‘Ûñv2ÞüŽO)ÌØPj¸0ÙêÐS5‚ ã¨ŒˆùÙ¢²nh->9ãÈp8âÊ›"2—Å`“ðÃ-n´9ÍmX–P2‡ï­M|kE,5ž´óÂAU+? ¸²lü%ûôf’?­žjÅ£·I©á"—‚ú_}Íÿr¡“:h’ž•‘Ñyc»8:‚B‡{££0³£Ÿ¼K†ârZ´gO—sß<£û|Ã×-n‡Li!FwcÏîm};KÕøzªF&™æê¯Ÿ;@ÂW„%/ýfõîØô¶[sä®g^|ÞÛUœdøvµúHV±É¸ ˜p’@4}`ëǾÆ?9LîªCi‡7‰Ž`ÝÞ–åªtÃ¤ŠŸ¢Ð ¯pü‚Á–¥]yMŠk¥z˜!ýDñs]ÑÒAߨqjB¨ÉpÁ“k4yèD Ä]Ì SK(þ^N¿Î_]ÎÒwÆÇË0fZÍqsRÔƒ¦ª™(¨rùwöð`¦Š˜¹"°=ðó/¾pÑdj4íöê…‰lNqN!Äý¢µgo3Þº¼<ýÏÖÐz¼J|-‡-±z2KgÏ…jLÚP uç?ßò7< endstream endobj 88 0 obj << /Length 1899 /Filter /FlateDecode >> stream xÚ­XéoÜÆÿ®¿‚q ›+d'sñªÚu‘&)Œ I•|‘•Zµl¹äš‡%%ÈÿÞ÷æÍpI›r„  ÎñÎß¼cfEÀáO¥X¦Ó`w8ãvµ» hðýWgÂÑmp;£|}yöÅ?¢(œe<Áe9uYWáß÷ùq0Ýf«” åŸ6[­£ð_]{×å‡CÕÜÑÆ}5ìiôÕ·?à@‡_WýÐv›­Èx,CÁ7×—ÿ<ûòr2&’ò™V#寘­“˜E" âT3¡4Ù~õã&UaÞUùmm®Q?°Å,‹"‰l[•'Žª6 . ÷dýÍ»±ÀË›~Èã$,Ë”¥ÁV(B¬ˆ¿5à?Âüx¬«]>T­[8䙄4éÍ@ƒ4Ñèý&м±n¯¥oÕ(ɯîsËÃÈ-íÆ®3ÍF¦¡“ZWÛºÝlaÙÐIÁÜ<ó¦0ú^“åÂyß#qö#p1ÿ5»VÐüšÀÅÊ’i:p…ÌÂoJÇmLqøŸò'ÜDš0!2ü«5l#–Èd¢ø¤eÎi¿÷†:¬[½Å÷ʱ٠Ó쾪k"Ëû~<ØsÏ3ÉR/! pe–:=0 ,qdñoN×f‹îv 0u4;º­¬ € ¢?|8nD8$cƒ0T°\;&§³3yÑ{žx®fW·¨|qxd8Ù„é)치 g;%­ÙSÁž ~×O$JÀÄaþâY§¢ãôt(zv8%øqäà';ön@øâñÅoÑŽ·'_¦v°HîàDʲD-n¤ð¯ÑÄ!šd¢‰C–fˆ&'DíÄ+F2KdC;¦Ð†} mØ´¡ ?™®µqÉ]¼ Sæc=àršùålBh%ïæÁ«ÄƒG41o¹PPª÷hœSáL!™-аޙާ°A çÝÔIT–YÔ#H}î@/¹ºæA›à$ÓIpo)¤Dêàßgß¹†³P©9’&Vw½ÒÚ¬V+Íb‘þ.jUÊâH/Ôú’ó±Þ•ú]ô&rn¡öµ+Eb«¢˜‰äãþ‚wH#fãJE KÀ°­ÔLËßÚ´»ú#ñv,o0un\ ?_vr‡ÒÍdöÍ”gÏië.XchÝûv¬1¶ãØvWŠM˜PO]ߎ}†…¼(:Ó;þ¶¤Ýœ¦§l·¬ÔÜ‘9ÿŸMÇ5`Üol"‘ÌîªU½îeÏ@äJMW2õhí ÍéÎ×Α/Nî-øZâièÒKî‡Îõ¦4¡{y:&°f ß5q°f¹†/îfk²9SQv"*Ìɬ¬Ô™œ»ðfÚñS~ ž²(š,®Ö+ó…O¶¬ñð›4ú8A=Æ®q¾Ò§i›-¶šÑ寳½¤/Fíy’'ÊËC™z®’|ÞCpÚc¿ðâÑÑ}MI«¾jÎÒ4YžâUu½æ3ªÓ¥mÊPh»\ñ'GÊ®l»ƒ).p1 Ék¤E7‘ŒeáuúT0ÉãåEÇ+æº`R´í,pGÄ#P](pË…‚±_»Sâ­¢£ñØ/Î]Ða<»¾;!uE IL¯ó~Oë.eç‚ÈXy^ÓÇdÜ¡lßéU¶.Q¡|ThH^Óü8vGꩽéÑe­Ã×Ätº} ¥{]Àhöº× Ï 2-@¶¬Vh¯Rûcÿö‡7oV3QâÐS1"I@’fJÇTº5”- Þ"¶%ZRÉ"¨_ðHü£ŒÂ[ª ìä÷&,|ùŽõêc !†/3_³ ùW¶umï÷Vȧ‡«$È s€Óº|0˜ê€xƒ¯ftȰgë¸ÅØÙ‹±b<Ž»f\ÅL3.¦ :½™Qî›ê¶ËaÝÐa©D7ß8ÖJ¥¶koߘ»¨úCÕìê±0ÔûþÜEÕ²ý_§„®¯RâE»è.dgL‚ë·rÉr`é„´ûœ¦0|o ;2IÅ";u⃧52]¬DÉvîs”vá*ߊ¬ŸíVÆ´ÐË“ ôåJp©¯çÃRé‡fÕ¦q”XHhôúð‹ŽÓjàן¢t øÂ¸™ÊµGáZµé~_ÕæD÷4a‹^G àžDã•|(O‚^8þHK/ž4 ,ëË›g„0jÇáIòaAyg†þÄ‹09`ûê'Ó–Ë-º àÊ–>ÂCè6Oª¬fbœú—/ýAÿ¬àø^@˜–¬’ç™r51yw|€8¹¯Þ ¥›W«&z8Ÿ2“Á_]ø&ÉR¨xs/¡'{Šsc?>e°;>®žã‹wc5Ì¢g¡h—)ŸÒöŒŒ>Ÿ:æ§nÚÐWS–¶Xúçý.¶êîËIñä2¾³þÁ!~± endstream endobj 95 0 obj << /Length 738 /Filter /FlateDecode >> stream xÚ¥VIs›0¾ûWPϸµãB%¶@R÷ÐNš´O'¥‡N’q)ÈF3¶p…lwIþ{I6`ð–á íé{ß[ôPé(熡¹¦£³ÈwéDá“Ûërj*¨$ß{­7-K@s o\„òBå®û!òç ÑžjFW¿è©¦iu¿ÐxBýÙ “ ?XañÙõð[61»78a1ýÓS¡ l½ aïÁûܺòÖd,]?u&¹EÛ€Š£¹¶mf¬¡miι®ØŽ©AÃäÔñ¸—^µº÷À%‹)Kg9 ÅÕLh)jj·isáñœb 7"J_óv'¹OqI[¬Ñï¹O“ ñ2‡T¦žú2åÛÀ€¯ßòðáñ‘E‰Á€z-eÈáÿ5ÙBÚ(®á Ê8AL& T6¤(ñ´m¢8ñÃpÉP®2a”ó•)&¨ê\±Nð_Ë¢¹[ò•°QÕ^oäf™‡ŒK9BƒÙ¼Öˆö¯fí MP°+ aLU! ›C‚¦‰=”Qâ/ѱŒV3´à¶Øñ”cÖ=•'E~x,ÏìΉ4Oöç4?–çæÉšU&)\Vh3Œ›O_½ÑÕлýÎ×gg,B£La9Åëî¦eLLֲŚ$Jy&ý´9ÈŒm|REI¼]µ5¦y\R .ù(QîðƒØÁýþ.GVËu»^ðU¥T }ý²¡?ýDƱ Z}'k‹ÈÝÑtsgi8(…Hc…hŠ’\ígg“ˆLU„ƒhos–Ià“J‘-yÎ^·ÂPÒ}™Ãg·yÃã—8ØÊ{D˜|ÐÙ%gñ²¦$­¹Ô½¢µ/r̽J„÷ü cÑ—A$:Ö†e',e_…U]«É³¦I££*M-Ó_M^°ëŸ@º`oË‡ŽæèîQ/ ¾4›²ÛÛ$&*YÌÅßñé„O&x‰ˆxÃ"$?ø{zÅcð\÷%ûžäÿí"ƒê2 endstream endobj 100 0 obj << /Length 2818 /Filter /FlateDecode >> stream xÚYY“Û¸~÷¯Pù%TÕˆ&xˆäæi¼>jRÞ‰k­$µçCBbŠTrÇóïÓHJ¢“­©Fh4úø£Vü©U¬Ò(òó8[•§WQ»ÃŠ¿~|¥„oŒ›çÛÝ«7’d¥?rµÚíW‰R>6×®ZýÓSáú_»¿¼z¿WJÂðn‰œ7{¦Û•JýP%1î Rm³ØWQÌÛÝŸÏëM¤<ÝTæ;´ÒÄ»_o’mä}|ü÷?¬óØë´æÞ»–øËᤛ54ú¢7mÃcŸL©«ñ×gUqâÑjÆ~ RÒÞ_g‘§;Ëó£ÈS~tÇ­?±÷Ø®ÃÌûô ŸÖlwÌA†›­6Jmý–W‰Ÿos^þçöŒS^:s8b£'Ö$öÃ4\~ _Éònã¹¼›ˆÄ±} T²|2?‰¸â‘‚»Q:uÇç€f8QÓ»™ø4þa9CïK»ïQàgü):ÍÜP[íÐT¤pYâ¡)ýk{Q*ó³Õ6 ü$ÿÅ0ïfÆÌvº½8áÅ‚tÌcߟzófo÷~ÛÞ\‹±ŸTÇ}+F² 0‡H@1Þ³it/øiÑŸ±¬œ³ËÉô½®˜Ö·ü-Ñ8Rï…{E#Õ±}gž†^”þ;2éî t~'mÉ”ÀÁUä«D„i÷²Å‘ˆ½Zü—nIv4G¹BØŒ¹K¤‹æ`š™^¾²^Ó ¡¨ëv´]ùìaègY"N á$ð×›í6ð>ÿúþþ—·ŸÞ'0lGF1ïÝ䌃Ì;kåu¬»Ö Ï©œ )Î׉숨]쟊o¤8î¸àã!p…Êq™†7ètµgÝ-+1E+Uíé'6vVxèIyvèd¢fûEbZA1ÅŒ·<Äf=‘†ã;îÙþ W¹è‚¥¤=ã„-=#K‡[zŒÑæÂÖaÈEÆ©÷lú#“ð"ðK8™*ôOl˕ٿ°±Â‚24|m¼ù餻ҀÁ¾0›[²i›ÍÒ ^Ì€ˆö›Àç‹.[}a*n•+çjY0™#vζºcmÉøžöMsÑ*PŠ¡?Û œ®’ÉÃSm,Ÿ‡xÚ3^MÁŠ\š”o½ƒF å`u¨ßž‰¼wŽÞ£MÇ4òܶ#‹W¡÷|4µf&vr`‘\Ç †>(ÀšJwÊ€yf¿ú“›.›m§;ë‰KJ—a‹%?•¨§Y@$ϳþÈ(PçaO:ÇŽ#üùfÐа…߯€9\Ô­õ¾ G·9½Dâ‘ÙNºhd©þXôÜ‚Sƒñ'[¯˜œét+ E{¹Ý1Í»Ž¹KwGÀb°¨õ4Ĺ'«ëÉx€&7Á=†GrY"(<“¶8ÉâD+NrïA6#?×Ú e¯æ òRÞGÝè#R?£]–K{|2Óç”;"²cL2 ðx`–¤PÑÖ—,Ù–°!Ø$òè8-ê ÇMD¹´É=ÿ |óÂòš ¹ÔQf[…±óä­ /Ik,ð’ŠC ùe(!HóÄœ,C'4¦|c¯Fä8вWP u²ë e10š½Ö8/J¶7X © ÄfË͉õ&‘OB†Hºž9w1¬=tÅIv9¶C]qlGä8ÌtÔ”º .¬EÚ7µcƒ†+´$£XǀΩdÆJgM縨r, ÑbG¹÷–’­`d­)8CÇ9ÎÁúµ€Fv€“Ú…e18´‘éŽÿŒÔT0DË¢áÆä¼Ðû¬¸%¶½•^¸ƒd ‹.b4®ÜéCÑUµ¶–‡9ÕƒZ†'ônïߢE²§,Û,ÜÈóQOIÒHV%ÍÀ×e JR¶ í ‡ 7>A(øý†·ùjô=`è4%ÕFøå^âdv/²niÎ.S'¤¡%ÑE+‚IŸ­C¸çaçÁÇ45†R*ÅHP tz ­)%€l.©«ˆÂÞþüéáçû·Ÿv¿ñôûÇw¼Þ»÷v}üò?.ÁÔhŽ]¡SœÏ5"z2^°HtF)pŸài4ÁÓ(¿HçÛ˜âÕÕ29d¶Ê ¶&»Fö2d…ìN·Z˜F¤,–´^Â$Ãs]”hq‚F %âÛØ(o*`â=¶5…Qd±Œi(.`ß¹F÷Aê+…r”WJ¦]ÁôOKHƒjå@¶äð~ÓÌû2pÄc£ñ¼@‚x8&Ì‘E9š­«Í3 $Ô- dzT5®—ÄW˜UI3¬=4cÂA¸¿ÝWCçjïâÙ .¼S+x Î]äŒä<ážÓUîna"€ZÃÐŒ,$ÆÀ¸ürr0p.Ï€aÔ»kXXjA^¹:)ï8À¢ž½ì]£cù#Ð6%U¥f1Qa¹âî{sgÀ>yòÅ-PýÜ7Pâ´›÷%Å’r…4ÎŒq¨Íy‚n9šîKË1±ßZáÐphU@¦pO]!£úøµ`xrøV„¯,õ¹ç6ÃÈt‘jöü•U¸3Y\›„™àï”j$æAMáw^w]l3šËÂ]šæÆq&Òÿ ¦“—ƒØãŸ>¬ƒ®àøüqèÁ‚–|^Äý÷ÀpøË¼´ 4”øšËkÞk¦Ðõn]É„wBÃkÜÎÛÜÁ~䚌o›Ï\{³ ÉGM]™ ƒ7^!R,f1 /’¯:ÎL±Ø$ŽP9‹aÄ•³H¤ÇŸŠÛòôDOCÄrb@_``L‹E@!þÆñ÷Øl-ž{³üKP¨h$ët/šÃPôî+ÌØà]ñü¤/š2ñkì1ê@jÁŸð`%”³¼ ñÛ0’ȆsµPËhvãPŽ[-Éž&íùˆž%s;˜^fnJj®þðåL„Á@õ÷²¬Ô€TpœÕü¹CÍÊ>š3SHˆ9ËXç[a蘡ÀxŽO²%OŒ¦‰—vv-ýôbúØX4ý?Yœ½rC¹W3ñV"åkü4–ÐAÉn Ã7`O1Á½k`û `M‰?IZôËï1\yÄPœ@̇@Ìʬìñ °‡W@ ']þêí¹€8?DàJ[<ØîHŒË¥„r ¶ô€FzŒ£Ó¡= QÄ\(bÿ\t"Ã"Šº|yDØŒï™< "~Liï$/ðÀÜ“€º(l%+Y;Í•´‡ Tä U´f„eŒpW{ùrs*÷v¸î‘Rô­u]Ywžs½Ü„ 6Á„Ûp¸`ÚX—œqÀXßv¦¤|t8_3:/ŒËc`à-4® ž `ß¹`vv¹ôÞÂVŠ7°ÛEYÎÉ"¼ÚÁ’¿ÑìIP磩[Û§iPOÉ!p1YTÂ{ ks%Š‘j$Ë¥²CWXŒCú´ø¼±ãp¦(Ä>4lë –¢3…K@8,áÖ¾æn! ÛåÀz6fŸ‚õ4›{Rma³7}­­[Sˆü¨‚šG»Íâž#Crþ0G—åe¡Év¡¼r/~t›XœHw|Õ$x.ïWØp˜‰…Ì’JÃ^ÓÇi?@8ddX•.,›þ¿é¿ß6Æ endstream endobj 105 0 obj << /Length 3156 /Filter /FlateDecode >> stream xÚksÜ6î{~…Ç_NžÉ*z?ú-‰ó꤭§ñ]Ó»ÜZâîr²+mE©Žï×^äj×rÓñÌŠA_Dð_ÔÑE™¦aUÍþYDÐasÁ_ß=‹oˆ«æ«Ûg/ÞæùE…uTÇ·ë9©Ûöâ?ÁËÃáj•TîZóíj•¦iðòþ¾ûùŸØÈ‚·WU Zsﺇ eÐL{Ý]AcT£é;žòÑ4º³€—ERqzõßÛŸ½¹õæIò7·‚˜ßÙKÇaqQTY§ogêZ=/QŒ[s–;ÂXxµÊÒ<ø°Fh(´º‘-@§íY–Qº~dø—(ÎF†[Í0uG¸ýüü‰?o5bwÆQMƒ~Í#ŸtÓw­ZŒ,c,Š D°ŠÓ0ÎyWÌDVj·ëQæ÷´XËÀ8Nó(¸£sÑÜiµ5›NIY†è˜Ù¼Ô`Ÿ Š¥N‚Û­L¾fÈW¬¾WØy`Ø )ÓñèÿàÔ=ôÜóëän$3ßZÌ{ûÄ·ÈC’ÒÑ$eÄ2NÊ8¸†C Pã´Fçpp®pÉùÕbÓXò/0¾× Í 1”@X¿¶¦Ó«A«VÝíôÙ °mTíOþ0h+A¤@¾ <âϺö$‹:î·½Õ ¶r%6Ýxãî7A¥áùÞ‰šc*aOŒß­6ºÓƒÚqç0ÝíLCÌ¢Øsšv2ã‘°¶´Aÿi¬é6èd+Yí¹“Ÿ]v”Ùl 4ïQ“Ô€ø»Ƹ7ã–[Ä­i„6i¶tkFà†ïÒ¬"ãÇï—(Ö®cöì•°ÝôûՂͱT{¶Í""µHŠ88˜ozgZÌ}Ï ¢[6Þ/ôÃÐoµ·8bcAhð÷ÞI–%«5|9 …ÆœîiÈ%ÖüÈê±ÅZ Ša·=J”hÈa"ƾŸæÄz!†êÜçp¿¿dÈì¾ÁñíŒß§¢i8Ó¿¸Ã`”ö ùNA71/3~9(8ŸËÓË1eÒo¾©ýa‡~0¯X‘òjnHõ6&Æ¡‹|ƹ;Ä€­GÐtÍnj5Ï8ìÐ//Þñ<-J³$Œêxc»·#¥`äÓ*CؤÃÅ» Ÿ8N¦a–žˆîhqêbÓ­éÚ+½W«KÙäs¶Šê–(ÆeæQ}±JBHDb4R„ìaþ|F±ðÝê°†·PAXú-|z÷ÓÇŦa䑸r=£ga”{±}^&“”aìq&¹ŠSż®èšß=ˆaÝüÜû¬CnœÇ¼dyXç©[çúöz‘—$ÌŽÌ °‹ˆ/£ ôí 2Ív™ XÅì×ÔÑ%UXÅ~Õ÷·OH2 £ä|Ù íø©Ìad¥\aUÇnöÍõÛÅåaqÔJÎe%¢[¥E–iúÈIaÔäj§½ê8ÝYpà9JH¸¦ŠÓØçË]zr±À »Fj®1Ðû¥!±ÈÇûLó:Ìk/Ì›Ÿß=q„Qy傸Â*óD>#S¯%†Q3Wqb®¨ Išq8š?Þ,2ƒcÏÊ,Îv}œ¨¯b˜9&ì@€vÀø‚ªP%A…VC‡”ÌÒ$ìà=Æ-Ödh`°åN?‹‘ÅÓÃï; ærHîäÀö pyæ€Y[ÛvIöq ‹Tõw=KÆiõ×®¥n“ï¹–:Lr/r¹€í­á$ˆ»ó/¨I4ÿž¿óμéx_H’weXdÉ©Xç"çQ`õƒaýÎrŸª E)¡B$çÁ#!¼Ëæñ58Œ}&Ü-Ï¥<‘çùÓ‘ƒ?7.à7Íþž§:5/Рæ–'vrî¼ðª_<Ç¢¿T~ÏyeáÑu;!¶Sã‚§¤Ø¦ü›ò’yæÍ½3 åh„Ã'äoùnDÌiðÉ••a´ 8LYÕ1\[åi°Âå¾²à8ÈŒ”¥@ÐDÒwÉ£”•c¦S̓7óé6\A”~¿Ê¬Ñ-4ºE`&¹TŠÑF«wkA=ì&ËvrZ½uï*Ÿç ™ˆY²O,ÊJå–4Ö-ñ‡¥ÛžaÛ~‡é®G2lÌË !QíJ¼˜.ŒÔbtË)—–e_ðN©ñÇdW9vK)WaWƒ”z;_ü]ÌXHÆSò»¡õ)Z¸lçrQ—¯.è—H~–Ä%sï]W(€¦Ï ¶b¢Rªª]T‹9?’¦Ä$dNW˜:‰-škb5iaŸ®Ú“"mlp ­ŽÅuÌ9k¤âöÀ: ¤ñ¡2‚f’V”ÍátJæk8©ýÃ-Žü>çöaÐ`¦ÔɜǺ&×ÕÆt`J}?uO`§\ŒÛ˜#e)•Df!`Ó¬X T7²_2Ì—É¢ãAaçÀåðÁR âÚH0cF_“‹\Ž-È@ÇÁÜM£¢.ãÀ6±\Å®tÍ_f¹ÞBµ?í´¯am~¢²˜³×˜$§ý¿á3†crf˃Ÿÿ÷%Ïq"¦â±NíÉæ‘àt7uô¾pÚPâÔKµHßoÑR¸ Ì3ó‚Am°>±X`$ãGít¼6ÆR­ -æá^Þ¨f(2QP2ñ@É£[ÍÞ=Ê;”ú{6ÈÕÌ &•!½@|©BÔQÝ8 vªÛL`»T Ï©¾ö^>R&DÕzL2,¹B@Åý³2ªLp§‹xH v‡!.Ýû¨PöI³[a‰}˾uæ%¿Kt<ò÷vKЙ^’çç„þ,žSËàLÔ®…[÷8ÍñÙU„ól§.C®2fà3¨ Ð9¹Ášô Þué!uª¨r›¨Î…Ì6» ®‰#ÐÛtîùFÈ­M öi¾{!@–Y.½ã1 ¢vê@#ßAïEA‰‹Ñy’"‰·Y)ȱͦ©³Y|„hu¼e‡áïV€Ì_QŸ~\Cu^ÚT4{‹•çƒn„’ÿ†ÇEE<žxœpml³SfÏuXŠ#¾§W»vOY؞ݸô¸<:û“Üg±@È…µdO@X ÷ÙŽ=q)o øÝ²gÁö£}cU,¯Q0Þs'öˆNöXÊ£!Ž€g²¦ƒoýòOÞ„\z$à–á.ÜÅö ×@ÒWZQiOÆrGD u×»IJ¸Ð’ÐQÖÑÛ¨¡•N+›áBGœòØáö ¢üaÙí9#©> stream xÚYK“Û¸¾ûWÌ-œ*k—Dro¶7v&µko’qª\Ù0$$1K‘Z>üø÷鯻AB#Î:¥F£ô»[ÑMH¿è¦o²$¹+Òü¦<½Úndðw/"ÅÛâÆÃ|ýðâÏo·Û›(¼+Â"ºyØû¤ª›¯ÎçÛMœ¶­ê¯·›$I‚W?È÷Ýû¤ÁÛÛ< zkeöcG² œN¶½¥ÁhƺkeËOuiÛ£lï‚(½ýÏÃß^üåa¾á6Žÿϧó;o‰¢ènw³ËÓ»(Iå9Ÿnó$è¦ÛMeÁÉà~ßdRvgofÚ ƒ<¨êaìëÇi´²0­,ð3s÷Ì<\·ò5 ü&““­êé6 Nôðà%ÁbhM¤zY/»ÓÉöemšFwt=8C/ÝDÉ]´•Ë·]{IO!bÛ0 Î}‡ã>וŽw¸§ݨd¤Ü×=ò’Ýòò¾>ÝKÜv#áŠ- Ùe˶Feéß3rÅVyƒaFÔíAærŒfeHŠ$0¤gÑ´ƒÌÇΡ+~lz]ï-˜”j*Á! ÆjÐ[k~SBÈtdµöá^\D$Ab SUÄô@t"C KȶcŠ5~Ì/Di{Ùϸ·Ã;AxÀÔöTù‰Ù ;``ï =á¢ÇÀ:Õ5¹šÞ|z"}™-|lëÒ€';ÚnÍ0õÌø](Œ'h÷HŠ?•£@IZvÂü¾kåC+½5•ÙCßO½p@Ö³YvòÞ "5|ÃN~ï® ÷þ©X™á,|Kâ$ø+ÛÄFUÖ¿„ â§ÔÔî11eiÏ£ŒÉÖœïÔ‡\ë×~-±ñhÚƒÞdï®"ï¸[{È=Þ¼M–+$Û”®îä;ö4Rwƒ#ØéV†¶í&²S³,¦®ñÈN—YMÛ:=EúôÄ$à=Ó0ÊÌ4PQŒö]Ó(Ûx.¢!Š$xÑk¾éµ^Õêá[:wŸÉ‚Ý]˜%O|pgžîÒGîQcáo€0[lœÁÔVl?±ú! æ¤#½ã-ìpÐEŠ>¶Rê£O}PªÆµè}/nv†û~$—GnwEª¤{çÆáƒ â àÒ˜ÿQ œØDÛ»]¾½äqi³#3xóá—O÷ïß û÷¿|õþáþáo_Û …гwwšœ'ºëpÔI_‹Ñ2#à´ã_ÃmÈjûÎZN_„.#CuŠŒx:u-bfG³pôÙ9<‰tf$pÒÓUï ¥#Á\¥/¡Œñ¢÷9ë=ˆŠS¡=§Ž#Bšã¾­À¢0Ô,j€ôŒ•8þ§A0š9<ÑdŽh´£·¿Ou¿î§Þx…ØaôÎdH øJ*1š$¹§sÀã'‰YfdÍmÙppH˜û:˜mš0Øê®ø+k".^5}ï²Y6Öô…#4hì¡~l|lˆ lHxƒì‡ëXÒ ìÝf‹ayÇ"–ÃQr~B¯ ¸ß®Îò/7Ÿõ¬öÅað¨”hÌâ™"L¯)þ¯¬²ß&a¨%øÂþXó*¬;ö3”ò8yt½ÿ&Ës´ô¹*ÔÞm¿ö ¢A¢LÙ 6Û, œfy¬¤ éª~º°ÁfNý³Žî'N¸ph=6zè—š¹“Õ Á¹n5\nêÑ‘Ý×:H(¹rB™4å}§º].’äÊÕñ@\åŒ`›/‘K§Å_ç’Ùa  ŒäW8KÂB+_¹[’_Û\’kdr,ïÖ}„Ÿ3chä2 rvƒÀ›úT’Ôfš;.—‚§£Ùl#JD]@¥s':‘ø&#–eïhxäsQÔËH—W·V…®ž¢2©J‰s%a¶äœœÇpZ­¬¨‡×”f2#˜è _•Á#‘>9j‹¨•˜ˆ÷Z¡èõšë•ã°šµHâæ 4 T ·‚!§¸ãYF.I+´tÁÞNΆù5]3‘NwÓ°`àûk¥£ gw²»Þíü¯†c75z·ó4>ïèèDPíÙ¨‘”·® ":Ç(Û•õÂ\ÛbÅAÝÕD2ºÖÐí$ÒsEÐ>ÉõM9N¦q•Á¥COvª1~É!)Åd:+o"9Ž’@u’1t23ÕM鹈$8›ƒ}^Òqágƒ…ŸQÑ 'Lô›€8›ß'+ks2|¥(9+-®X ÖŸËk°&y 6K^ç5T-%¤ò^¢Ù¬“le3UV&F±%èÉ¡nPÒ‘ƒgoÚáLŠ+ÌÅÂÎëœ`fÔË„³_éJUfʦk+tfër"—J2ßJ"/Cv²ô•¥ÔC>& töé·Sïš43²WÒ‰§÷ãì<7®æfȨe$.ó›ìnT~®µE =¡S ’É—c­7yÎîb2؃mmÀ¤µçl¦AD¿SÝ+e|„½a€JuÐ1;úVRºµMg*ÌT¶JeCŒl+ÓWOOÍøu+×¥ð:ês»7feaMœk,·ÆâL29OA4g[¼±Ì` Ø,®ŒS:d~Öú[èØ íJ%D\Œ¦ŸÅ[˜îµVÍÖ€ œåxÊ{Í8J2J ÈÅùiq¹o±"Þ> stream xÚYYsÜ6~÷¯Pùe9Uš ï#oN$;ÎÆÙÔZ›T*ÞŠ5Xó˜Ùú÷ÛHpDURó@Ü@7º¿þ\ùð ® ÿ*‹¢CçWU÷ʧÖñአÿ~÷*q{¸wF~w÷ê›·Irø‡Â/‚«»Æ]ꮾúÃ{s:íöaÖ_wû(м7ßò÷ÝÏÿÁBì½Ýå±7*ŵ›&d^uîT¿ƒÂTNzèyÊOºR½A–†©$»ÿÞýøêön>a†Sù²Ð^¥y|¢˜Å¹gaà4qäµÚLªÆrìéžÛ¦£â† sŸ¸Õ¨J„€ž¡¹JçVâÜ›>ùIpØíã,ñ~ßå‘7œyFWb÷Ï:u±Ž);)Mzjw'µÒ š@ì}‚„%)Y£§Q=êálX÷¸¾ͬpÝð—÷€èt_¶2û|J8ª‘«Ã<ºœ^XðAs“l(Æ1vÚà˜n÷P$9|ÓC|Þï@!iêƒ Z;ñxÉvQ¡|‚Kñܧ|P×\-|ÏÓq͵]CF#»aT룙¡7ë1rKzÒJzFeNdµ0VßÛ40å™Åq´Ï§8jÚ%%Íá—ôŒ…Žm¢ÖŸü ®È ÷ ¥­†~p‡¢=bã¯èSè(ÞÚ1XÀ;<<,`öð &º8ýEƒ©„‡ßV•FЏì#z¢Z™QÀ’ÐÉÓPŽ“¢Eé¾Ò'4lI¹ïbpøÜôy8€_¶²O[œ 7leY,¶jYêXʬF}Ù±ï¢N6$«#‰a0zâ5Ûùo•1³;Ê­åM-ð^ v—§Ó8€ýñ…@Ãú dÀØÌárC¸1 ©m{8mRÿ¯¬f <äk¡~ ßpI!l­´½u¨ÈÊ, %áZî·"÷û¾jÏ5AgÀÑuªF‘[4z@¢™ÈhüDNm[{B³ì)+•ÜØÚ0¾ŒàÕ :èþÛç•O`§h>••—íZ×:Š ¿ç¤3üRœ¤â¹]cï¯hm¤¢y}Mðèα;ÃmŒJ¹86–„œ åÃ4N9Êö`Ýì˜ã€úúÒó%éþÂÔÁ<;® iyÎâMP–ÕU¾Ûô¦0ñùdðå(¥ù>°b`!.¼æLhLc á0I Z ®þ¸K º‚kÌ@]™ø^¥ìkn ”Ú÷ϧ;´Â9zº£ ú:™5‘xImÏœýB9ã›cQc\xÄkàYeoC˜fÙ‚UPT©×Øt‰B6ˆð¦ñ!ŒÃ5Óy¿ƒ‰„M,,|*·–Ž´„ÑÐò øªðÏ×èyI¶±…S,P¡a)ß6–µzާÔÑÛºbs€g+rc²³çD(ð+„‹âÙ¹CS‰—DAˆ D£© ÷A›—9O0Ò2· ’“úùŠƒúÅÜMžG1íí>Y »F†¨Û_À°¾P´te!îžzï›yø(£´±ñA(»›\\$´¸éæñFò°ßÄ?*­€h5*Ž\PL}óй.håu¡u²VQ§!ÉÊ‘)$.æ0éÂÞLtï·id½£ìûœòm$'¨&`©¤ÿŒõÕA¾lºÅÂ~ Í¡ûàĸ]ÏcØ’‹”-—f«Ž»jeªQß³ð… 9Å¥ÆÆU„ Í&ž#[(ÐýqÓ-L 9ÃUý‚AÉ!Ò5ýø ØC¡W®D w?sc+šæšï ™qc}a ¤’×ÜÎ4V»l°ulf‚…‡i^½ª˜.ã#…•Íõ4´âÁ=öƲ7§rt˜Oè‚iJêl­4ÞÈ®g¾Æx cZý™¤ú¢Ì’éÁ†Ú q¥6Ã3V@¢f6Z6ÛÔSœ["˜¹V5'G6<°6–s•2ì¾4 pÔR³»£2²'¾ d¬§Ì}¦€ÝZ`“5—>®¾v»5܄ẽî:o8bÞ+CGi”Jü$¬àÜQ06¶òÂ#;ØDª™çÅ8!³bËTl;etP±HSoB8ê°ç¸ņ¹w  •£a캧ó¨†sÿÂH±™Ÿâ Õ65ÀOY”üÊ켕k\,Ä”eôÆñ/Nb¶ J5Ú4tà¾Õ£JôÒ£ pª Y#Ë?YÞÒÛõg\ Ê °rËp% [ÐbÞT8þsÏ”ºæä–ã×<Ô.Sn Ÿÿz}ÍpÁSSK>¡À(oyal<@‚ X#ÓC‡åœÐ|ZoPEߘɕ©I{9â|øÞWRŸ(šb‰ãK¸$Õ×=Û¾W ¬2ˆGçi5œŸ½¨Z¦¢õ7<:†p6ku“#ƒ®ª¡ì<·ùq±&¡?mÇœ<—d<· ïÉ,€ÿ§+þ] ÿÇsgæ|Ç~ÄšYuÍõxž¥™€œ§¯mbÈR8¶A‹xžXðÓ(æÀûÎüq¦_ÐC'€<+Ì, 0>ÈÃ_aÃ80}ay[½@Ì+„qá‹`-¢@â›ô0Ä/˜ÃB ÑÏåÌt[¡£õe}˺Q­²/E³cÅY-»¤™Ð‚.yÛ×@æóz`ÝdzµaZõÙz©×‘¥;»±ðг„¡CeP|YVˆEà‹.Þz}ŠÝ×§­¤Môñ³ÕÇÀÏ| óÎI#>FÌ‚Šú q‰`àVeaò" 4^(Z6•È]d?ÎJ` T¢«IXz‹n,Ê¢{\P ¿ÑÒsXïä—/$ߨ%Ö½…ÿ¢¨½üäæîñ†‡ríêKÏ6U[ê®Äšç!Ïq—â…©$´hé©å‘é½N“ z¦Ö` ×8„B3 Rî»râw(h5 Ф’á[:ÿ>Uv%ùwJžËV7O/% ~‚*úºåáË3è”4aìÆªÈˆý„Ó;øÂ \J;?‘i%SäeØ}A³|¡;žÉ¯Z †²<.Óâö"|z·ß`΋#ØÇp² ¦>ú¡çdªfè„ã2˜ag5ü„kâèE ‰ü³_½e‰`` X<ñûw¨A¶ÁfÚþ;A)ˆoßlù{ïÿ³x“x endstream endobj 117 0 obj << /Length 2581 /Filter /FlateDecode >> stream xÚYIs㺾ϯPÍ%T•¥âžœfñLœÛU½÷*•É! 1E*\Æv*?>½\Dû¥t Ð^?@ÞÂ…Ÿ·HÝEìûë4H»Ó;—¨õaÁ¿}}çɼL\ f~ܾûã—0\xî:uSo±ÝYmóÅ?œçórµIUæúy¹ò}ßùð'þ~½ûóe™N­÷>W° vvÝI•Kh´Y««’—|Ó;U60Ñ‹£MäxÑòŸÛ¿¾»ÞZ ÃÍæÿ< Îü³xž·ŽQ¬=?àã´º-TÂ$‰ÓVøMö¨˜Pè¦åVµç¡8Aâü\†‘“Õ:ãóð”ïj‡ç^ºœðº­Hm¹þázÊ™øë2ñU7°îÙS4‚²j¡»^®"Ïu¶GtМwåùk/œôyB:’zl)îäp]îdh_W'6OFGzaròÖÜ$«8»ÞV¼ÏÚJ¯Ý4bþŽç¨ºå*ˆBç” Cìdy. þ4J8bçš¶&¾2ëæºÌ«ºQä-0Ú¼¿‚±4qÎuEÊ×¹™­[þî*žšiT?R@qG]¸óе#µy,´šì§$KÃ÷‰UWsï–}x`= ¬‡ØµÿÂmð‘}¤ê&œ³ºÕªù゙ê9; u…½Øi ,”‰Y²\š[ÂÍ´­Ôê§VOÜ®ˆ†N—µL!÷£†zÒ1k¸!Þ[Ò¢ì¼ôXÇ1#¹™ÇæÄv&“«ú•ú?É4ÒLv̺öXÕ£ÙÍÙ W¨ÐR÷^Fú‡oÆÞ j)ó¬Îßv;ÂúïyìvHÍøsΚÝ9;(&Ð6ðíμ€bú(ŽˆKô'rƒ:o„]#ü¹û¨ÅûVŸØ?QD³ä"Ï-Ù(/Å‘¼¡H3šB7iìlBþÃnf¾üù˜íPŒÇ^¦Äa‰G2¹e,†‹1.¸F8‡Þ`/érÂdš/=|W˜ú6s_hج]*nôªKÅiàû¶=`Â+…‚ŸbŽ!WÈô—ˆþâþ€ÂÃ7<üÛ¥}±x$å wc Û?ÜÐ¥„íöXWÝáȬ®³ò0ÊN@=e9Jêú–{2¿påó@C™ ˃ 8h4€¸ºÙ›=eæg6‹T鄪²-j•å/s'‚bRt9UžxCûŠG$N=8‡S_lv…±&;)&¢k‚¬çR•¡ŸZJÉ `Ñf<Ð&%ió€ÙÌfåøB«3Î'N¢žq›2¡%©Ú¨–hýþ Å‹3(yX‹HiŽ˜“§³b/{,s®;æÑ{t ¨ CÊn¸EIûϰÒC—ðœùR7Ð {ll4V«s‘íÄÖ,U‘K£¤úAC‚Çèøg€(ºåž£ú¤)ƒ±ÅC†g,S\ ±×=@*9ZÁrõFÈø†ø-Kæ“d³5aKy&N¥þ`|5%D¤Ü +Âd%¶Xp6fâÉyÅ_² 6Œ—ñbÝpËâ[ìL!d &ª›vµ#8èSØhAg%ø¡`>Ž*¦3íz‡ŽU²Îð„ì©êv<¦޼0Éb# >›p®)ÏCÔ8EG3¶åt_yá:J±ñBÌ÷‘ë|º¿ýxsws÷•ù¾ÿôËíõÝö;­œ[ØP¨ÖÁ±³Ã€?‚´Ó"ɺ ¬ë"ùI·Gn Æf>½Ç4̬V…Ê-çLéÊÜ,bWÀ–¸ÂÕœvÌ/5¢¹6ëSÃ4AI{¡‹%¿#„Ž„€?'—ABeŽä 8á4½‹ QR/Z¨ÁTxSÄíd‰ÌLJ¹t[© ¨,)ÿ±)ÿ1¨ÚÚ€GÍŠ‚~vzL®xtá’Œ.äkV¾Î Àèv•á|jùæËL”E¨É“D%ß`"ÊQ'n± Øhøk¯áø048…àüö· à”^gJvô÷È=ÆXðm#§™ñ•òÊDqÎi•튤¾Tø”¶!M0‚’x4ÉÈœ‹ç7UTYù\&1ÀÕ_7»"Ó'p«×“5¦•ñ ‘ÒŸ{¥2ôª49jpë3CÄÍ“˜?[ALÚò$‘bÑz¢ˆCbtE«áfÆp~Q;ðKwŶ>xìàI Œu7ŒWsèHιÇÉÇ Ì#¡ôPÈÔ ¹€Ê!Y†ž@9ÂL%³z‡Éq`h^ÜG:f B‰›3‰¡’JitÕ&…‹õ¾X‹õ' öÑÔÅ40üå½i&,Ãò£Ðzò²0Äúß ‘!\€ÁÀ Ûí²Ð5ˆpäž ºXªçÀ^N‚/3ŒZ¥`[ßrèñ•MEJ ©˜‘¹+—6±h#6A‹-ûª‚-Ã%Ý]žÊ+ôµˆ_€® $]ãÀªÛtžŽž‘¨Ü©zÍõë¶·Rl¬„[Óµúd8æÿêšv^ﱑy'ˆbf`åbûž…³(³ gKº$áÃ÷•'9œpŸg`^уÙÛÛBôlÞ¯ƒtÆ-™>‚ëo`ñÈ‚÷hÞé%š¶C²½=óliè2×€™; ~ž>k%ŒðD³¬ÍÒ /“×0öæÞOg@“ Lñ»{l1¶waO =LÕ²X|nz<*"Å£:B×½x˜ò4élFö=ðáHÇêØ¨;ÊÿØ$uјÊ7| $m¤íñq¨æ¶<÷á[ÄÚ‰‰5ñ_ndù*~'=Ž©V’Yõº¢—/3y²ÿð³Üówíïüu⃛+vÔs[gôMrÀ„=„ñ|.Bóú‚“->²‚±õ0YIìôQ­Á)^ …!¹3¦ß¼[Í>Ó„È{ïÅ&¸ŸG…ÖN㉻àøàÉ àK)/ üôK/Q{´&üÍzRFeä²hsöÁùB“W\tX5£‡®Š• ¶†ã5ÜéwÙ3ºS’††qhŽœ×ÚΕ]£¡}}`ÆÕF 2%žþ;dð•½É]œjmþ\ýeXþ§ endstream endobj 123 0 obj << /Length 2774 /Filter /FlateDecode >> stream xÚYIs¹¾ûW°æ2Í*Ké}ÉM‰5¶<%3åJer€Ø ‰r³›š¦õïó6ô"µÝ³ˆ_î6X‘»ûw·¿Ý®£¾÷¦}ÁiŸþù_EÙu^f+Ðæ:¬210† ~w-ƒL7·@XÝŽÇûƒfÂÄ\8¡Å zæé,³˜Þ1¡ÖÖ|[gy ~CÛj¸˜þ s`a™æôIYÕkPm-«µµ>ÑžàSqi±%×Q±"uGŽ?‚P¸Wž±Tð½ ±³_Ý[è ¬;'s•»ßˆ½!5ixÇ_v}gÕ^Ï—¨ë­y<‹ù€rÔµ9ýŽ"ÑV5®—tPwað;ø_í÷VïÁ?1ÍìøËž€Æ¶;¡ŒOÖìÞ @¶Ú›Þ´{îî,zöÙÄãit2.íøÛv²ÆÙéZ&uümÌÑôã:SÙYôdmÀU°@yûhº¸Ša"D—æöD†Ÿ… 6µŽG9‡ŸÈ8~9¨Þ/¤™±a¾™úìw¾à¶ècîJ)° :¤Q ²9@p,žVLãøµðN㈬„,¦Ý6ç Ä=U-÷·ÓÓ4…•y^4d“hÕ²&Yž–9š'¦¡é‘4ÈÆ¹² ýÚœôFª—8<eâñËÁlqÆAF­°‰ûQf}tº¡ ”…AÉåLr¹ dÒÄ䨥4÷^(¯×ƒX…rÖàC$­Ä³Yü½Ã=x#ˤ >ý½gN«ÿw6Vûdg–N–qzËÑÄ„iè종ÍV=6Z¶ì˜ÞCpP[ŽQ3ÚÍW|¡×Û…¤è1Ü`^FÙ§¹Ì»Y¹*HäsÌ×hç˜ÒTË´®•¹ÕÈr,Væ—Í1‡±Â: Ç8OFÆwÏËåϲóÜò Ñæý IvTT…¸#‰+éר­–ä%gÀwëW‡rne…^¦[E‘ù•vïý°¬·d2Lz8LLûŒw¦wUQ‰ö :é"Æv-$ÆU胋£½ éÞe6ªQ²H£]¦úeúÒÄÂçx˜Ò÷ší»Î¡\eU|ÂŒ¿§yÄÐÌý2ØŽ¸ÇÙI«“šÊ2Ácš“5, —ø„t)¦ºPúªž[ì’btÉ,»/‡®a™hOotÎñ«ÞL/Ðlnî?ÁÌ |’O¢ÍªÖù+MJ.ÅðÝv­3P™¨'ÎHþjÚš[è/üÙµù=ŒÒ-­„õòŽ9ø¬9 »B•Ÿ¸3œêšûý([Š%ڳȄ…8@òàŒ}ÆÚÃaå¸ÉËäW$©gHHÁ‚U˜Œzä¿k9$nY£¦;}æé²0¯¥3pª×UZ 5VzNŽÓ­Áã)ap¾:Çâ‘¶@+c¹9Ç*”ºi'P×€ ‘e)dÿ¹gîÑÐñõåeÀËAŒ…í™W€Rqm„×µP,Sqã®åÐf3›¡á{³Æâ%KR™ÁêÚȃ[w<ÊÅ'Ç£ØìMK È>³~/ ×pJt ¯È…\Þ—hŠ2ø7¦š § a‹Á:8K1­Ÿ&Òǽ©*‹ „¬i)(Èd2‘rI‰f7¡è:î@Ê´aãE:`&–1ï… ¬ïw¾àeMYë y‰ë·m”9r¥%8–˲atF›bÖ©—a¤®Õh2ì°¼I5ñ&önÛ}cÜ;þ“ÂTI½©<êƒÖˆú°>µõŸ¬ç†ájG¡R¤£­“"wµmƒGINåF¶ŠgŠï¢†) Ê÷Q!Ó#§8Ù`¦Ö²ŸÅó ÂÛúUŒ@uÆž“po€T£jÇ9‡Ã…œ¸¹Ph åµø«˜›­1mA]U^BÍX–bšª<÷b î_†ÌÉjNNÓ¼ g“ˆM ŸY G‚‘/K-CäC•£ ‚ŽQ]ßС #xC¼a¬ÔÒù}¡ýà<÷ê•Ä÷.¡|æ d²,óÁ¸«Euöé'‚Or@Ååì.a“0 é•$ð°ˆ)P#nR„É¿ÁY¢­w8Rè©Y6¨Ûdµ©Å«‘OhvOuâdðBýă"ß’>|çQí^îÆ£¶=Ý!‰ˆ’üÀTÀÜ>üzwÿÇf¬Ðq>©ÐÐáû^"ätDNtP<,»)Õ›±>ÇâGX¡Æw›¦ ‰•‹á’õ÷­>I[9–ˆ|ø}•”oB®yZ ÿY“ËÄÉpá^ÏÀ^„ÚÍPÕaHõ½>žzît#Ê¥:þ’UÐXpÐe:g«S« ¬"7”øxe—*Â7pzYz.šš Ün7žŽM~2õ[¹'SqEÐKH¤sß!³$)|µÊ/ûD×ã³åÞðT#0[ÌÆwnãfŽ‹…åþ2”L)X(añ .-~J Fm5W|ºÌ4Üøfº¡`g|‹D²È­KÆLòPn´8I6±ò! ñæÁ¢}ˆÇýÑœÈ$À–„ä Ôo¼à-¶òâ±ÅO†\ðÄ䱘<š‘@‘a<‘¡ü`„>ÇÔ@@4>ª#…ñNœœÉ¡/îÐ4vSybN_½XQ.Ä&Q5FÃH™GRüóq*x›¸&Úa‡v¦÷’hú쨢Ò#ª¨š"ª0¤[ÆdÞâ%‰êo6 ‘(/¶ôNOŒÞT5÷)ãRÀ*R–뎌•‹n ’‰'™GÏ1|S‹Ë±:Íå­¦äÿÔHûòÔ]¾Z+œ: ä¢?2UïØÁƒò?ùÛeòGì'ÿi¤“„#Øç³Fž8þ{,Åÿ®<Œ¼öÿÿ¬Fé endstream endobj 127 0 obj << /Length 2235 /Filter /FlateDecode >> stream xÚXÝoã8Ÿ¿"è˹@“Zþö¾u{¹¶]`Ò¹Ááæ[i„qìœ?šéþõGŠ”­$^Ì¢@-QE‘?~(báßXäþ" ÃUe‹bÿÁ7ÔöuAƒÏŸ>æ[ãÒáüõåÃíÇ8^•û¹X¼l]Q/åâ?ÞÝáp½ 2OÕ¥þq½ Ãлû…¾Ÿž¿à ò>^g‘×*E³¿7°!õŠa¯êkô²×MM[~Ó…ª;`i$žÈ®ÿûòÏ/£†qüÅ« çOﲊ’E’E+FtX½^&‰ï}üòòåóiõùá_ëÇߟ×tß?ùåkVûñþáyý€Ê.±Ñb)š“ЗÜ(Š4DH†ˆâÔ[_ ¯Ùöhƒã5˜P¶.[3Ô%[i{‰,ï´ó0l*Ýíh¥VÇe)H~Ó*‰ç ùUÛ„Ž›-­ôVã ½ð®D,Hyã®Ìº+›Ü“»ÂXxÛ¶Ù¹×{Å£f¢€a£<÷ÖCbv´ÊÓàT]¤uU‘ä !ŒÈÞëJ¶´¢Y‘î [ÝŸ¨OÚR¾3­êø"DxCûÓÁ`Æ̸x mž¢ÍqRêo¾UK3s0RU/uÅgðY²,áŽ&tAsp³©ÔžÉ Ë)šºPmÝ­æL¿&¸ø!À7I­â(üI Xî¥ÃNq¸qp.Ô¾ëûÃ/··ÇãqõZ«¦}½-šÃ{¥¶ýí¹VA.V!ÈükZYîK­N¢ó\¨ÑŠìé!_¥( ³9"+]@á_‚B`Ð ‰ÆcAwÄñªi3o”ô)u×ëúu€ÀƒÏŸb5ìñ?£¶EÜGÂ{ÜÒ!||xXsè8»ˆ¾Ha$çˆfÙã(CÝpm¯‹ÁÄ’gÔ0y!?Á;LZ0BuG»Ç°ÆÉ7ÈMK,²¶I*Ù«v”iÍp5w y8TZ™¸N8'$žî1Þ’äÁîf êÎä9R’ùwYä£dBz6&EÇèLä8~XUL¡e®Òè*œŽ®2rXIÓŒ9y )ç.^ùÔHÍ ÓJd'¾´cl%L N(žu’˜w’?“|™`Šë’>PÙÐ9?ÞiZÈš%l,ù„ãNOeß÷¶C?´j‹çm@ÊQ‰FÆ™Ûx¤öÀÔíRo€NÈ$˜pÔ8%U3Põo,Ýø¨ q­ ¶žžk«ä¢P‡^B½>£ÏyãÐ4LÓ IÖÜöb$¿Ó¢ú]Óê?Œ‰¡Ÿœ@ ‹&_ñáx5`;;1„ÔØZž³Îïˆá»§ògîÊ…u¦{‚[âÏÔç>>:ït¹{ÆZñ$»Žë'æß{‚“†ª×tI ù¹w'7š@’ךÖ6»°¼Ö½º¢Ý5v—ÿtïðpvƒé^IÓçú¹›p}ï« €¶*ií+"rÆ__1§© æè&Uk/aI46t‚'á>ÙQ /2'¶úuG-2tz´d¢±i¿3'Õ!'«®aqÉ7P¬£5 ìu=a˜¶²ÐÔ-`¹Œr´Ø‹oŒ— (å;-ÁWAõÆ1ˆ£’˜'wD¶Õ¦`.ý]³0²‘ʳ'RT=’û+Ò“V~Èý¡b%æÓv7½RJ8ðýƒ½U‡Fa _À‰O.öp-ƒd tW¼¡6Š‚Û?Ý_Ùœìcó@îï”D¢w¥Ò9õuÏÊø4Ñ>Ö wŠãפ“ðÏÁ,.˜L\›ÈRÝj‹6 pð‡ž dD¦ç†èxçûûå¯ÿ^®ïÐ$Y2jÅ,h÷­«&FJ³ß7–ïÎ(Ý·žQ`ÛåzGÅøî*ýÝÙ®ÀÀ>«1¡g¦ÍYÎYÓÞ/È£±>âøT#C±Ѥ=¸9æ†QH«P’—AKˆ:¬r=Q Ú“Ny ©GèiÄ›­® }Õœº‡Jb­2r.~7CØÁ·!Î<ø]KP}‡£»¢¹aíe¥A¿ZK&HÞmРðŒ3KåÊjÆJøf#Êiyu5»hz­É­_B'›\àÖ!´Ü3\áÉ(kýwàœjñX®w0ë‡á„»Ÿ a<ýæD*m ôB'dI¬í z<äG;°w …”KøbnÓ¢áÁ@š±ŒW ¢'ÄÜo[s÷¾3ÞÎ("ƒ,5y hUéWm")Ø£Š8n9:WDÑ[Þßóœå°ÓJZ…æO±j‚qô›Éãó× +¡ê4 †6’Е:™g¶µ6ï–D0$ÍÏX0Ãpj;^r°ƒSV ‡cc‡“éé “Ît {uÜ2Ãm s”`æÅè!AV Xö†Fx¥KßuæSÿ¦ ËÄÛÄ ~ƒvZ…¯Á“‘gÜ%ƒ3Ò$¹¡uNV/a­\Y€c'K¢× }I ~ ó“ȽúÑÏúÀöztðÛuÃ@˱‡0•¦0ß[…¸R *«šŽ%%ž×”~­,²`Óž6«ÏŽî{”¸áþ—ØÄ ±¾ŸÍÖ"úÉ4ÂG?o”½i#~XG±i#pN-!Ö¦Úâhüå'N’˜ÝvVÖqM×´Ô[5ºQ4!wƶtâÍ×_aë¯ób06€Îž¿SG ì¯§áø»'d&Ü ¯CÇ{È„š0¿!’ÓJ–g§sõ76£û”uœ—C䦜•ýÍïÿuDZR endstream endobj 131 0 obj << /Length 1335 /Filter /FlateDecode >> stream xÚWëoÛ6ÿž¿ÂØ—Ê@¬Š"­G÷)Mš¬ÅV›»/ë€*s•Eƒ¢’ø¿ßzø‘-ñÈ»ãïž<³Yl–G³”ó0Ù¬Ü^Dn×<ÌhñûÝó| `\L8߯.ÞÞ.—3…y”³Ùj=UµªfW»Ý|gl*õ<_p΃«wô½ûü"¸g"0Ru£A Ên+›9,la•nHäWUʦF–&q°|þ÷êÓŇՀpǯ49OlI“!IìmI22.¼-77>ß|ý ñ§Ëà=ç,x"ÂjúvˆÎmlTK+=g?Yü@$D°Gº3tT¡æm‡…mÑÀcCX²Ø»x5Ïxà®ÏýõY4\Ÿ>ÃmÕÐfA$ÞÁñ¾ÎKÛ{\ëŽX7R I;OFY+›K r*˺«¼þ‚8J½Cþ=QzÝcòN€õYTv#Ñ^g Ù’ì;r¡h*J˜]j-­Qƒ;]ëºÖÈý¤š:s ²`oÔÃæTê07ÚÙÒÉ?]ëõkK6°ÀÐÙp£U¶öË]ñ ßQä8›eaž$dz0fÂ'¼q×zçþe¼ ¾EËèþ1’†<¥Ó(L¢œã÷² øƒ½ËoŠ­ÛžÉeû”û}QþðÌg08ÑÐçÙÕ÷"1”Ð4y|ƒ¨zêH¦%+ˆ€ayÞïß1´g`½&ÐoÞ„çšç"æaœ‚º{Nê>‚‚gcß‹”ÿ…³~Mðgˆ?ìëü ý¿”ß endstream endobj 140 0 obj << /Length 522 /Filter /FlateDecode >> stream xÚå–?“Ú0Å{>…J¹ðF»ú]È\rI™Ðe®`ÀÇQÄ0Àd.ß>²eƒ‹S›0ÆÒó¾Eïg!d"|yÁ¬”à•c‹_ÑŽîV,~ùþe‚® Âr œÎ&>kÍP€ÙìeXj¶d?ùÇí¶(Éñª^®ßŠRJɧñúiS/ªí¡¹Qük½¬Â<)'Q<ϾMgGgM”Ùb£¼êцµê{„Òƒ%{´šO‹R›a‹a,¶‹õHe¨©W P&X+Âw%£Ž˜oLëÚ‰0t†2ªæõ¢ Ï_7»j<”äûj¾‹c±€0 ¹ð+ÛgÃ"¢Åx¡³;|îŸxàòŠ0,ƒ ÑÑ;ôêr oQFrY²]X{mlAÏ6Žê+ãsfœ-CM2€Ø9?fASýnø¨ê"¼U ™Šø²Ú¯Wõü°Ùí¯±±¤Ã;À&Å  ÷Ù¼œäi^:M»¢˜ä%Ó¸çåÂx”í$ êHxÊâåu½`ü‰ûË Ï#°h JÓýì1çs ‚´ñ@2 “:ÉO'¹O¦kGÏ ×ðw§µkÇxxÛÎëýzS ¯G¶ Âèÿ™†Tâq½r?ªÓ‰H'žçÚ'žvmWdyFþ£š‡´›S† ,Ô«ÑØ•T÷{·h¹¹Ÿäéà‡9$7ÿ{Re endstream endobj 10 0 obj << /Type /ObjStm /N 100 /First 813 /Length 1612 /Filter /FlateDecode >> stream xÚÍYMoÜ6½ëWðØ^(É!9… i4@Sù(Úº>8ÎÚYÔÙ Öë:ù÷}£µ³Ž´±,É1zðR¢‡ä›Ç7ñq&q†‚¡Ä†¼ñœ e¼7$&RÄ?LŒbPÁ0óΤ@Æg“s©`0N(‹Ñ.Á-” ¿P2~Ô“”Å€_J¸"¡T ýH&ºC; ~d¼€É„ΩË?0 Aí@g@ÿ¥2™AçXØgàSJжƒK‚Î úa“A…y .p5 :)Ej*<ìJ5‚þ@ò‡ùŒ ò•J†R”NðžáŒ ¿,:W NßÑ^‚œráÀ²kæºTJe­ˆ†Õ%R:¨G§5°A÷F™`¥ÔãA´Ý$8NPV`„\\ExBspˆ ˜ ´ä A‚°’öAð%AxH&y ¤ UOŤˆ #å% Wõ%ÖÈ#%Ö1…©9 Z£d&A ȳ§º  ›Xk0>k &$€rŠ„r®ÚÛ«êן?ÎLýâðdVÕ?/ëÙb}f¢èeU¿œ-ÏWG³3„TSñ|ön~øhùÉì;£ê‚"ÄTh¾B;xܘ=xÐôü½™½=S?Á´gý¨\=b^›GØ×/VË£W³µÙ–ÇOLýzöim®ºÚ ’b%ðLy ›ÎOW:àÒpÍ>]R÷ÇŸideq~zzp#þ/Œ„ïC¾§!ð뇋ÅýìkvU~§5jcUÕ¯Îß®›÷_狪úÑrõn¶Ú àÄÀ#AYß„K¶‚ÁU¡Ø" 6 ^™úéòõÒ€·àõÉêðÇùâäoÄÅ|ý^˧¿½Ñâ—ùÙz¹úü£4’(l£¦wï¬hfõѲĻA„Ù÷þæÙe’\°¹»Ç,8ø$~ˆÜ9XrR;Âñˆèê9a5¡)ê ÜVgã‚+Ä^îZ&É Ï{¬¨€:Ê· îG[^¾ækj0GêÐ%ãèŠnD.êõp¬[ÝUêvË»VŽŠajr¢ÂÖéFʳM¬»±Ø^ A%‹ ÃÎtðæì2\F¾>>ƒo«Ã£õüßÙi;DîÕêpìF­Ã¶¤Ç »?›ÞƧ‚kzžºðsgqb2ñ[/¹?u¶LXØ 4ÜgË÷™…˜lIÓÄ7ƶ˜ó]ÅVòmŠ“[¼Á‘xòúŸ£õØóãücƒnã±ZyÊ6¸¼3¼®EÕùáÛÓÙÙäåž$X¯§µ(VHÞEKœF€õê¯e‚ã‘Eº–uw*cúº’¤#’<.Séça°Iä`œîzÌ({›P7(µõ²;’ÒÜ96ä4.îòfCR6òÉ“Ã/&O¯,~¢§_„_DøúÔÿeQ[.&`@f½¶à`£^ S¾?>’u8Q{)º°7x¼Þø`Áy÷¾ÿùòÝüx>[µ£?ç^I·L"´ê]þ„霿‹þ%ôÑg2ùX2–„NÀ–Û¬ø6 ýj(]5\ v*àk~°½‘Iç3éœÏ$Œ#EâˆiŸŒŸœë8P†8°MÃrÓ½Ç7ÎTliΙ”J³ÃÈ®4Wx?hå)³Í7o^>Ûüüð~½þøS]ŸÛåê¤n¥‘^¡õ™ôFÛ—ë³»6reéµí(ié ðp'·q2ÚéºÇºP»06u]D46ùûƒ»°ù–—ÒÁî w÷–n}ÛÁíïoßåÛã{›;éòîxPò zg‘>“Õ½ HAzƒ÷!éóââž,Λz´üøùtv¼nçRòiÊØX–uY–±ênZ²ß.·wpµK±³ôR(c´¹n>ŠmJ¾,Óe9ù«„o£~Íãh]ôú9Õºæóœ³>ÉÎó@žx¹’œúå÷jHì¢ß}Aw3$§l#v¡WCrf@ÈßuHÖ¡¶^rŠðïëel.m·Cbn9¤þ¹l¢é†­ÓºßåÛ endstream endobj 161 0 obj << /Length 858 /Filter /FlateDecode >> stream xÚå—Ko›@…÷þ,í…'ó~t×FMÕ.++›ª²°!1RŒ] júï;6`†ßdT©Uœ* æÀ™{¾yAlÿHbp¢C†ëd½àãÝê>i/¾~šN7·Â¹£ü°˜\Ý‘Œ 6$Yܹ¯ZdÉ·éûý~6§zš—Yñ4›3Ʀ×ïÚß›™fÓÇrÝ»²½“–Y{q{hJ«"]=äíÏe–Ûç)&RM)™}_|™|\œz&(,á  jP2! Q"x_ÖsáÔÀÈ©%¦×³¹‡ wJ° m öâöÐ4”`ï´%ØŽ_Ý0’hd¤<ÚÙL™D˜vn›¢nvÕ¯å*­óV­±PHQcŸ9jm’D‘ö‡Žþ#/·]àuj(â”$RQ›ß à{ñ|PÙS']ï…ÇŒMèªl£‰umžëhØ'%AB˜ñXï¶Û¼l–ëMZ…CÁpdôåˆeD,ÌAÓt³…qF÷<=㨠=š?íÓ²¶‹€”`4¿¤½®êXzƒ¦ç Ó‹4îéyÆ=Ž‘d½¢Ü«¢q(ÞõkHRÚÞ[ƒ?GéªÒ„zöB¡zîÈĽW{J0qœó)bÏ9ˆ˜aD”Gü—÷Í&ŒSj$ô°ëAÓªË*vZ rxZ¹ñÃÓ*Ò¸gî̉AŠÈ1ómú´´»\Uäõ™M[ðêÒÉCX»8b±r«›0Œ5Ò¸ÇêX±ATxç×r×.”Ùq¯;ƒ–ØÏÊÉ«f ë Ž7Èapn†0¸HãœgìƒF#e> stream xÚ÷P\ÛÖ€‹âîî4îîîÜ%hhÜÝ4HpîînÁÝàÜÂeï#Ùç¯êÞê*º¿ácÎ1Ö*¨ÈTÔ™ÄLíAÒöv.Ll̬ü Eq6v++3++;•†¥‹ è?r*-“³¥½ÿ?,$œ@@—w™$ÐåÝPÑÞ çj`ã°qó³ñð³²ØYYùþchïĺYš™röv g* {O'Ks —÷<ÿù  5¡°ñññ0þí³9YšíŠ@ í{F  @ÝÞÄäâù?!h-\\øYXÜÝÝ™¶ÎÌöNæÂtŒwK €Èää2üÕ2@ h úwkÌT Kç)ÔíÍ\ÜN À»ÀÆÒdçüîâjg r¼g¨Ë*”@vÿ2Vø—#à߇`cfûo¸{ÿÈÒîog ‰‰½­ÐÎÓÒÎ`fi(K+0»x¸0€v¦mœíßýn@K ñ»ÁߥÒbªà{‡ÿîÏÙÄÉÒÁÅ™ÙÙÒæ¯Yþ ó~ÌRv¦ö¶¶ ;g„¿ê“´t™¼Ÿ»'Ë¿/×ÚÎÞÝÎû?dfigjöW¦®,šv–Ž® YÉÛ¼‹þÈÌA..VVVn>Èò0±`ù+†§èo%Û_â÷|½ìfïm€|-Í@ï_ÞÎ@7ÀÅÉäëýOÅÿÀÔÒÄ` 2·´Cøý] 2û¿ß¿“¥@õ}üج}þûËà}ÂLííl<ÿ˜ÿ}Å,²rjrº2 ÿnù¿Jqq{€7€‰‹ ÀÆÆÁàábøþo å¿ë`ýã+kgfàûW¹ïçôŸ’Ýþ=´ÿ^:ÀÿÆR²Ÿ\€öÏ ë³r±š¼ÿaûÿ<î»üÿ›ò¿¢ü¿úÿ­HÚÕÆæo=í¿ þô@[KÏ[¼O®«Ëû(Ú¿ï‚Ýÿ5ÕýkuÅímLÿ¯NÖø¾ bvæ6ÿ=FKgiK©Š¥‹‰Å¿Æå_rÍ¿ÍÆÒ¤bïlù×£ÀÄÆÊútïÛebýþøp~ŸÉ¿U ÷åùß”Rv&ö¦m;7èäôD`}%v..€7Ûû:š‚<þžb ³½Ë» à½9_€™½Â_7ÊÍ`ûKô/â°ˆÿ!‹Äâ°Hþ!>‹Ô‰‡À"ý‡Ø,2ˆÀòáq¼êzϧð‡Þó)þ¡÷|Jÿ%Þ÷ *è=¦Úz©þ‡8,è½?Í?ôžOë½çÓþ/ñ½ð½g7þCïÝšü—¸Þu&ö6ïWö 'ç_[Û?þÝ%‹é?ðýL@ÿÀ÷Ìþà_dù'>Ç_èöÇœë/½½«Ó?üßMÌÿïù-þïM[þßëµù¾7cûÙÞ µû¾jÿ§±wÛ÷÷×?Ôï¥8üQ¿Ÿ§ÃûÛÿ£S¶÷ZþQ)Û{-Î:ù‹@n ? ¹ÞÍߟuÞcºüQ¿—ãbáúÇa¼×ëânÿ‡÷‹sý¾wëö|ïÀý'ýîýdìïá=ÿïÝyýÿ³d&®NNﯚ¿ƒïøþû½y€L–ìMB¬jCÚªÅÝ™ö&„f©ö´S蘼—:\ŸP`éª2‚6œîć ­íHÑÞŠ®¾z·ÔÃ~nMPm{öy1ŠS›ÞkCXšÂ˜Ì?«ë'†'bÒÝ÷yuôÑ ´†lï’£ÊvtåEQÉÅ|pï“ñ¨ë/] [ØSݯâ–G|)aŠÖŒÒ,š£Ê1ΜÇ#‡qa"†£Ç¸ð@»½›ÅÈš|#•‹c@ð=‰æ(ðÖÝdyœ÷úY®ÁîÜO‰¯‹G y‹16Mí-þ+IwÑ»¸ð«\Xd¡±áB“p*Б³†¬kY°ttrkïÐ(P¢ug:쫉ê6•øð¡zV'FvOÑÌ+›Q‚³jçÁ+ŽWdÅ\†S°È€µË© ûçÔÞx’[Z˜Î_Ÿ%-r/áçôóùÍÐÔÇ¿ù‹Æ-±ç¸èõx=O;!x.}''eìà¾ëÝh|<Ö˜#¦Ž°Ye À|:ý®=4P‰ñf- NX= !o5V³!×å…òÖ«ôýØ$XdÅPpÿQ bsÑQcÏ5dÉ´T4“fÅ/×c5*ÿAÁ®ž[­÷í¸?SÜCd¬\<È>¤–§ªÌO Ï¥!hþl~St¯BÌ?Q?]2óñдJÜ4ÞgZ¶tê,ôƒ¡ûEÔʲI…¤ä9[f‡vB^w8óØÔu—3÷bå±`оâð yƒpˆ-~¹RÐ ö÷$¤í`Štá&]«ž;‹Üá†ÍßîUo—;/õ”±»½SÛú[ÚJÌ´Z3úçJûûDÙ?š9ÐQ çÄD®lŒÐœ{JÃTšîK;c<ÍÔ=‹·ºŒ7ÑÇ{?ñ¹;Ä Ü©lÅV+¹:-Ð)¹Z”ÄÌÍ IN,ç´ö¨ÌEùâ55“BwwÏ!ì2OxiÒ¯’p”øÝí|(pÇ öÚS凘†m#EYØgþ6mâÑZŠ“ç†—\J@›„!¨+Á½”Æ%¿:—V>Ëàõ‚.Ó‘Ã N×íïô±ðza/[û­%]͹!ƒ¯ZW7ØÖÇ×>äsMlàp¬¾m˜X˜Ÿ]ê·£½S¤»l|V}üW3¤t'¨¥¨Äö@å¾7?¸•Ÿã§1éݨàà!´#4+û¤É=f5ÁÈ/,&ÚÉÁ’)ƒ¯øÅ¼àÁ#Oj´ú¨Å!­˜¹P}Ë3]i/”˜ dSäÄk×|uQj!Ý+ß’ŒµX†c/P(ž¬^ê<ŒmS'ýÆN÷&g!åò7-I]¦ª¤žÊÔ9íù$‡†*¤³ÜæÆ? ×û‚‹åã:6ì¸r²Ç@"?`:5g~ðtÔáÚLW?,£P+Ãh©–4®É>G?Gõ(þ ¯u?¢Å‰ô)ŒMö˜\ì0m¯!¨éN©{y®‹ÿ"§H/•r<Ë”ÊÒ{!ÕêUâY‘}÷Ó—S¥Â×kþ<¼Ýºü¡§ÍŠÎq¿Íß&Ù‹ŠŸà‹7Ã1ÉÌøŒ„UŽª|á¤óKî*„¡—öS0S`÷à8Ú‰y½@šp rx§ÐøÖèøH‚ÂŒü* ˆÀ5…«üÐ1Öýè øp“d²˜°ŒB&ç>Ã$³?´ÇÚ¦Yî?Nd²9Õ$–œÜô ë–­‹LÆŒón«è‚ÛþŠ…¡°IªÜL§án%ŒûöÈWè&d!Õm¤C;à¦ôKËGPt€kʵ ˜»®ÃY ÝÆ…IöõIG"¦ZŠDî.¦¬³ MiÎ@' ¯5‰¤¾2ýeÙ†¾ynŒÿ#Q“0‘Ã0Ï]b³Bësýà’î÷A ¿ºA›ÛÇÛòŒ6ÓT¶üq~–À'€9#Ö BÇšotŠêÃ,‡–7 3Q5ÚfáX¦²¡q™ŒL€ÜÓ‘ak¿ìyF®>Ñ_ì~ßíÞŠÅij~%#X—X޳ÚlAÙAÇè‹‹€+I﫚.¥ E¶Äº{Jéå3§Šæ7w ã.ÿ–R¾!A z¨¶'^÷‰jØ”ij/zRٜޘ¡}^j,Ú‡(LðmÅ@#Yèý†[‹„RÙM{sÀžczSsæ‚«+‘fî=ñIuéÞ*£Ø4¼;9gåzðLK~ŠE%HTž^¢]*¼ÊÊh˜I®ãÛ ¢1ñDÞç¼k]Ó¯%Ÿ“bk#¿ö {(–ä®;ì|u†,Ìl‘QXV.°¾Îšµ¾™=Î.Î$è[‘¸cзE˜ %’ÃæÆùa³`ÈG£„ø$9Ó£×qøeÁíî-†j"(´^éæ›>†ª&Q°7Cáã,¶˜|b&?ÀpSÁFX]” n÷˜ß¿ãGío„Nf@ü½Aßò‚ ûQnÜ2cÄq4ÅV _0ëÈþâI¯þŽâ{n)£ÅílÇÝ¢´­ sDóÒU%4T˜?`U:RsL»#[¥çvUPnŸ2ö÷;{1ú)ÿ*$+"ÈuY¨äå\Têëªð)Iq) ´“œç»|ç,"äÙýAÛÕnØO^Oe@¤÷ÕUl¾O¶Û':’Ì’aDD9Ëû‰ò”‰øXy¿àSÛŒþµiI3?{3%qÛ6gÕÞ ~h 7Œ™ÔÀ–±ŸÄS¾xJê+Ö£«ó}XºPnŸÏt2»‘)2|ÑçâúœH±³ì†­úq²žûG~W½À¨ÞÏ®%µB‘@癑—:ˆ<`Jù;ùg"¢¡ ‹6Fà’çd—W^Üu9g³ª¼7ݲÐ8X¨¶d»©p›=èhE7Ýa9‘À2„ „*ª¯ðfüÕ§üŽÂšœ»K>ETEgtÃË¥0K7ÌdæÞ÷-𔎠WaIÞL™õgeàö&€Vi®^3¶Š©ôÖáäŸu劤VÖâ¥amƒ#ÜJ³Yûátio:ˆéÝc׳k B·+–M½éí.gÃa³W‰‰‚óçœ 9=~èr· ‚—Ðý(íp¥‡HElúVäj%hËó3³k3é9–"Ä<°±oöhcFÀq²ì5ämñ#ƒ[¯ ýÜtèòõoj,©NœùÇ¿ŽqŸŠ“pæÁÒ¥Ýý‡ÎA\41WþõºÝ*ã$Cà1‹‹…NU"C*±ÀaÔ …&HÂ~„IlôÒȵ{ß püš´•œ¯vÝC†Â_g²h²™Ò›¡ÖÖ¤:Ý•5b«$åRFU [ëŸz‚½aáŸ;4Ö;›nØ+µðã*•œ7fbž¯Pý;©ÄƒW,¢®V)‰·®…³ö?\ÛÊ'¯Èœ¬B™CÍ4—±Oˆ£kŽóÐÈÕÐ6ž·¦O_U˜°©ÈþŒÝºg¶ÉV·–¦²Ê*V©G`;kó2f®¬ÑXWd°•o i4c$_cáðËë«x¾KâÉeá驵g:P£ ˆØß´K"’o$µÛãc=üaÑ¥&ÍW¥±€äK›KrA¹ëÏ?zcÑEpÿvûUñͪû¶8 i‰ð„*VW+ämå‹Ìö[SŒÈ'uþÍc~9ƒÚÀXã0êƒÿ6_zXTöèOÁ÷zvCÉ7ƒë1ÇpX³›[ Á¼G”O]ä ¸)!ŒykbDâK³u³œ¤¯QY£ˆ•%AõH*î„R |E·“”Jm!+‚¹¯Åo_È­t Ûtœ!_–ޤªêO2ç^È‘Лá1¤“kŠ…ÇMŽ@ 1Šp`tïxð$]rSv½É®#„¾ìP a>¿"'»àFç6³$lÈtÕ­Q>¨Üë—è2ÞÚ™§¼s꤉e)$¸ç‹L·Ç×D;:^æ©dÎæ*ÙÁoÜQ“¤ÖðÉñ´È0w¨‰=ÐÙÌ÷‹ŽËS¬…’ÂN¢˜ºlíaÑUí??èW¦íJ![ÕÝDgò,Ýf<)^MÓÞ ~Œž‡¡Q9lø¥ëC‚Ãf hcÎWø÷®€ì­ù"Ó˜kkÞ¡Ù{;2Y ßáDkùrlÊŸúû¼¿–;eZg´"ÌÚnäÐÛsÖ: ÆdÁ?µœÅ0‰œÝ0]ãÀÈøªS’}î·ì‘­]iÎÝÓÑ^«’=Á¤RBÖzëÙI°Zú|eé×ëqÅ%&…=EÒ”†Á¡Û9“1^ø·kŒ¥²µ BØg´.ƒÉ?ËÛK³šÇ ZOð߯²ÖÍ8e ÇÊ­ãi½zÇù×àR~¯0äš–Œ GMçE°k²^Æ,†ï0&rý#žŒœÓ¿¨×âfþ"fº{Z‚×\N9ýn¡ª¿’æÀ1G+È*X¤ÎUô]Z-âÈ’´²ø­Ÿåäj*¼q)poÙ"FhÔyŽ`/m4jb}«”>ù@j÷)÷Ém{žŽ=-q55~—’â™ûqÚû÷9ÜKÙÁve£¾´Û­æ‰61bW€Í•´žyýÚi¨·_†âöy|¼¡µDí¹'jëÑoRº)*»Fíyé e0,E´TÏ ÿa¬¹¿k]ÇŽÓ’RKÙÜÐ@ÊÂ,‰QtzàÒ~ƒçÒƒ$ºRË,ppNÝô$-°9Û½ð@­Y°¸åç„À€ÊÛv:s0Ëß-WTLršÙzfÕ:|>Ì>v4fuP§î;óûTî³â´sXÄ|ãnÄÖ‚.|ñzŸWº‚·£˜>˜ÚŒ%]$¿—’ºœÂOO"+Ãï}ßã‰ÀcˆHèf4¦ü¦äu!ŰŸTX¡¿ÁÈ©àøÑ ûñmS÷¬»õl¾‘ÃCwÒu|Öá: ²€Tš *¡-Õ–PE³Ao/¸Á°­™»‰pr×ñ~¸‹Ã9&û}Ý tóÚc•»­ÌI\ܵÜiüóm/¿%Ü%GúÊój¿nïö’úÜûÚ]UA7B.>×±¡eKñ|ÇÖŽqÃJÑNÊLɱXM†¸Jª¢þ#Jï´¥PÜâ¼·Ly´~Bƒ¾|q²Ò~\%‘9ìˆóšE1æ;ënoA•¡É"{”,ƹ;T&jõa[vídPôÁ;Wi9|XX¼¤kJ¨®F™GilH¤ÔgôР|%Cê"WYŸÛdž·Ö’rD~DðXS\uØ‹Š²Ü•šî·ÊäR‹ÏþÄSWÇBÒ_{H³Q§õÈC=X±ÀÐw^Sou½½ƒ¢{oÖI™CðNyGiuáë{Æ€Tæ¦È~mþ±Æ;¿äµçÊŽ5³½Â®Àïr#G”2ÃrïeS 3KøáÆ—ƒŠ-“¼°nhñìi?,H¯Ð{¦ýlÄN%è mlLm“6§¯S˜‡¡á¸Q"þ?´MÀõ) Ë]ˆ4Ôº©°y{$Oü›§²œ?z‡KÖSp">KzKô­š(í ÐLG²hÆÇ奒hö€³$wkFè¸àl ¦((/#/@))”5Nò®BA½£ár_hžª¥ÖÔƒkvÙFëpšŠ"wHcÁ1ñDŒ;ŸAÛqˆ•]6ÝÒÞK¥ŒØwû|˜4ŒÂÁ6ÇDyºŽŽ¢ÕŸpÂñ°$"«ÏQ¸ñW|®4ñÕê±–x?4íí{ßÕE¼·Mf»^7ímÊšTùNhlu½<3«Ë!]yA,šÙÅíüÜ5O"LŒÍ´]š¢ûžŽ`¢Ï0r×CNóź;;EÛ¿ÏèT;÷zÎ"ç‡Çê‚9k§K?Ù0©˜Û›¹Ë4·Šð*cÆzi¥A[ChCE›R6ˆp›ºižH9Fù?ˆñH|õÓa0ÚOéT£ÙÓês1ˆ\7Eî¬'ƒ_` ئtÝ€^õº1ÞÅ­J©&<.sú8}ZX«QÕHu=ov5D ©Cm1þ…;vI¹óàúisN{‚½Æpï!ÅK¦êô`©”=3QöúêiÖa¤þF¾,üÌlþéŽ@œ[æáuèX<‘äeÈTç,¶ë6¦EGʬ&ã44t¤Ñfô+ËÆFµ“ûÆÒ¾8$0^Z°.–€c.õEò÷Ïm%*œuUC÷ ¼ŸÁ‘½ÞéÔRQü¹ÖBÔðCÂË4"ñâš&YŸ‚D„,¿ù•ô*3ùKkÀ×3¯Û†fâ,ÇÓrŸí©5‚ZSÓŽSÛ‡šc礕ð•Ý¢½òRf(ƒß=¸¹‚dØtc€^Ÿt3½Ø¥6ka«#zŸ½PúY0EçÁ_‹Ú’™NÖ¿îâ¶N9­š[êþÕB õƒLf^mŬ¾ÈS4€GG/ -öÐC›†»MN¬øYæVŽå‘ÒO‚8†¬~Û7y'JQ¾Q¬I—ÿ.¿³9.ÎÞk¬RZ5g?R= '¡IÅBgbÅ­å5M3ϲœ· o弞ÛÀðþÛ…ìXo{yB°+j(}šš`ÏÆÕv#ù9?3ä±ßDêuÅsØrƒü70B%¾:?!àD0‡åi1¬¶á ¡ rdö͉¯Ô¢yrhŸx;Ï®c† QÞOpmÔ#eÛÕ¨Dq©j‚Ë;e÷H™¤gTô£¢õ·{X¸¦^¢éÁé±jgêïu³úpØ©wþŸ?)FQ¨ ~)¶ ¤Ó7qÇݾl*þ˜ñ|–1m¹U *â&«¥"‘_wØŒcLÛ±sèÁ!QðÓ–dðq1Ֆᮬõdƒ5.ÂÕá„–—)¨¥è;ã™>à˜grÂAC‹ã$·CžK’»^Æ „IÜ"Å`öÿ*)?>ºf¤[8%çnìqÝ~ŒLöòC›Å6ñÇH×a²Ôf;›Ë9–®›G¤âüƒ!÷ýÒä½Å÷þN²zuÙMæBÜ 'vÏ & 8LØÒ¹*æ:¨/Æ•nN[\á75Û­^_c [•w3ZlÑÚ§Ž9²i”‰Ù‹o¢BRoèŽÓ °žÃ‘“"¹R ÀQéŒmÓ õl°›ÆãC{»8P¤0y}¾,û«:¸°Ãî6;,äâᕾЈ´ßÕÝ\ö¯ú µÄlK÷¨*Ï ªZ˜˜ ”B‡°Îc‘µùÌ{ l²©_ËëOÁ ¦Ž>åfñhÒdJ„;|– ô»´ðç`;Ýš½ VóA!‡èyÛ÷™&½,r%ísÄ Õ­ S ,šñÂw’ÄŽ=¦ºY~ÓÕ‚0X‹,Ê!¥ÔɦJRŒ4 ÓgI˯ ¯S‹ñ%r5k đųˆðùxzþÕWã;Y>[#ü¢ 3ò°°"–íñtŠ“T;ÞåvÍýcOˆ7Õʼn«~šCí<”1BC;6Wžß'Žc6a‡Sàq…Õ³©½ÆÄàQ*õ’ÁfœœÞÐïêŸz¿D»¨)¤y-wà ùÒ¢ÀCܧaA 9LE6Mâ9¦én˜ç»â%°±ì[$zä¸8×xV‹Àª”Ú•I³uðoNVÌ ‘ Ô›ŠO‹‹ößó0¦ã çAá©èaˆÊÁSËÀªAó¹XÕkYg=››Û/ž²A_H½^&×=ú–UÊ•uqv”¤>âº>šcÁˆ½ÀDmº$Í Cv;¿ j)/„mÉPó¬Âc½4í€5 úÙˆgfW›ˆBø€AÄ‚/F¥5s–ýq%_þrÆh±Ñ«»`XYÈ`õ‘9^¦ÇªÕ©E@f¨õܲ¡°›zˆ²z÷d*Ífê繸EưaúÞ†(_ óüž™ìð›É¾ði'>VqšJadœ"ÂÙ±¿2ÛU® ZÈz‹Ìgmÿ6/I˜ää p”(‰¥ ‹=Ì ˜›€=¦® ª?! ÿd cRT èQóé¥Ó9EJž›+²-¥1>…CùÜ4–ÞTÇÙ–ò™$ŽlG Óç¬uþƒ‚<§iÏI­³&E´cø~KÜHéBº¶Ñc²-ÇòC}\_Õª¾yUž³£Ã+™Æ„zRwA|¸’6ϰWØç[GÛ9 ù;3óÒd2x¨L“z¦»G‚çUçË_³ÛWÝzëda‰ d'†»±CvG‡U31z¿ô›ì¡ ‡Ñ1 >F^HðGªkzüòd5 óåòOÛã>±!™؆jrV'zz9F02\W÷ûPÝÏ2E²ä¶¥ù~|‘SûÄŸ9o¡Bˆ[ŒCD@¶Ê¨5=Y-“êŽÿ:#'EPó=ß|£– ‰°ñjP쓸 LC)Nž2ÿ/:بâòfHT‰ÀRUq †x.âÓYÂÌã¾W‚Hqˆ¨üçáE'@£Õ(måi\²‹a /ÝiIÜáìÉóˆ -ú!ZR fòøA­ò Ïã1~¯ޒO±q>™e¯?P`’+1e;ì¾å+ˆØÜf-׬ýÞ Ê^t}ÈÈÁA¡D3`ä¡dAÎèf!öøâß`àç¤%åO™-K«ˆ±>DçðcÓ•.8×á|.OpñbëHÁ3¸.¦m=‹‡Æqðƒ¬r¼Øç¢*èÑÔMtȉ(­'t·½÷Ìò@S¶`™ÎKw³¯ðßÜ*²HtøàP¾Afs'2O}û ¦à:vCQû¹ly$Pýû’h…„LÊp—ÕQ¾¢úá%ïðƒ•“úR"³ »ß7÷(OÐU˪Ëç6ß]ãÛ©ÛK¥“¼)WŸ ôöê½ç-º"üâNuhàq8é`jq'¯Ç®Á ÅcšÊ®ß›çjrÛ8û+2äÀ¨ïlûɧøX‹Ù×î;2D° ±#)̦P|dÇ \5ÂÐ ŽÀë‘z¡QSªéDæL¢`¥G»È-lé¹Õ Qáš“EÎþûJðŸgVîî¿T½J¡$i†¸ŽêØïEÚ§Bú·…¦†HýuÇΠLê‰>Ö(uQ'‹b>Xh%üÝZ»û^Ò狈=˜ÑŒgý4¯¿E}û”N¸N Áô5yë¼É?&.ñç cÅ]»Ai›PÓ‘‘iÂXrBÝ4+²^~±Äh‰ý2ïÚ~ª¤ˆWÊNp]~PB„”CóˆÜɤ ŒÕů3½çïÇà2cÝòn¥/uÛ=M_,Ñwì0T:\§ïÂH§Ò­x£ªÛM*}>kf$ãþVæÊŠB¸MEï«7øü-»$:TN•†ɧ4]UÁqfMé‡^ÊÞÐÁåC)±+}(ãõ“îqxå`ÉŽ·Žó‡z_¹0ÅåšÝ‡‹$éú»²ÓzO^Oý¶7¸!þ3Ó¥Ò± ãûÞæotÂâÄ*c ɽ¦)åû±Z¨A¸~u{ÇÎ.ˆm•IH,.5Ùq_B¼ÉŽ.†åj›ÆT¨É2HLô†âÈÝb Á£âåš[°m¬¸/†yY£xÏÎi·¥ÈvPæk}Îêaäq ZUú/0አFàŒî¨Ã:PD׎N;Á¥×ùPÍzüäG–ý¿G0‡_tý”Ï‹«®ïGÿ„}Ö÷…RwOJó‹ø‘éãVÅ ·p 6ăƒs!\†¬‡ßUüo/ÅØðá®±­y)hÊ¢¹rÁ1²Îà²kã& O‘×;I•“ˆÒ›ì[q¾Cà"ÀjT²l‘ÊÀQÓ$ÑÓkêò-DRµ|…<Uý¬îRHUçªëuŸšÜ;(•­1bF9n$²ä¶ï )­62€'4”‰Zæ¼UÊuOPYíC!•)éOk'Ùfl£ˆ¥…ÇÆìO¤>sBQäè÷×n‹µCÎ’ŠTt÷N eý=üñEÂoÎÌ}T‰UŸ&݉¨¹±Ôì± ¨3øýM)†M‹­Ïø±MºTÊŒ›¬:±¯Ý>B RrX[¥â«•:`°mTQÊúDºôõbÓ6Âwà:dKê¥õõd§Œ¶í˜¼4\-kÓH?PfºA›oúE¬q“rBH‚®¿òNæÏÖPÓ^ m–‰2Tnì ¿ò°åþ`u½èY‡Ä>£4oöÿ˜™4ô”—íþÍJŠ˜WAµ:F}¹ÂQ)|ªéüÉ-£?.Ê“5i-p¥§:››ø»'4üÓ1ÜQÝš¤½tm"qlf!®ù[»çY;?fÞà>C”s°Öæ@z«æå·CrÆÂÎöÔeí‚ÔCµÎžWçc®ß«$_ô$ÌíW Oᇇ¤Ë¯EÀK#g8eÓ´t4°¢dm¢¤!$ë wKe‰>^—ž²Q78{‹Iöf)žÉ7ÍDÜË­–N!!-RÅyr¨škëíý¾Õ«¨lûσ ôñýkOu6O7E?Üp˜ßÑ8C¥á’–sÏ}P~ûl¯Ï|n2¬.n Î•Þ9cxÏ•ùc§»ykKðq•ëwAôÉÑ †ÆÈÙbö[tU‚ƒ‹«= 7*=ûMýGðZË._UuÈYÞá0ëd­ŸAt÷ØžŸlÝŒ¢P}°›òÚŒŽ×ç)}NMŒ¯1hÚ˜`Üaë÷W¶Z*‘sšð#7#$·.i‡ÁÞÎ4Î5È K¸@\Žy6ßY|̽GòBírÆ ƒ[‘ôËôÜ8y¢³uÑŸé?ÍÖ”Qàƒ|?˜“sÜc¬õy-.áÌú'حؒõ׬Û¦d[B NѹÝÒUµ;Z"×QŸöPÄq )ñóÛÚN XöYíD¼7ìËòÂå%Ä=i¬uÁÛ±¯ã^£<ýlòf±jœ(Tª $¢´ ö®ifžóßFŽ¥ÇM+ ’ʺ'ûp©e~#­ëȽNfÕw+w²'Ø¢tKϺ¾W5Sî+om–ç1xóK¾J³~3E‰E©£)Å7Á<úÎd7?]3¿®,¹yB·P¿ àΞq\ºGºšëºš;¿bVã©K¢dõ—ÕGA¢‡‘öm'vhp¨¸ÍFuz™—fmÕ>q g„oz©?WI¿9V«v|z w;Çä¯n/€€b_L‘ߙڬŒ·‰k‘²C Ãî†ç{èì­lm·xW¸ã~‘¸äw6.ç/xß[êº}òý|wì“Í´в‹dœE{™A«p#”´OO¼4†£Ù„‡UÃ7Å:Âê•´YgèðUP´"§œ5‚ËBDP¥ë ªxÄQÅc­DêbX©ÍTsñqØÃx>ɬ“DEÐý¨°Qþõróƒù˪3²”¡ƒgͳð‹øH˜¨V44÷‘ãµ1Êàwš‘“3zösq«ë8ýîl ØXâ$•Tدó öšuïnFùŸ'ÊøùÇ)¡@™¨56)è§‹Ÿ¦ên€Àí–Cø(Ä*ÍÕÛšÙ¯Öð-kE6 AQ\Špù#!j-5Äñé;Nh½åþS¥zà¡KK”š¦;Û›¢wÍ{£®ì¬Í-‡vH8TÐÆ0/ 0JƒB¤…‚TTO³™”• 6.ĨÔ02ýîa{xŠ.¤+âñGåCÚ µ'ÊÖetO|ÍÒI¬¢ž3Ñ¿§¿ñ*Ë-¸2ð}Tw/“¹)¿³É…y›{Šç«ÛEßv•±É\¸@Ö0¶ÇÍ¿êæhX!œ°çí@8HÉqtõ‚wÅkŠû1|ÓÖÁ˜U©pN ›R%à÷‹Èú÷4q¢õb3 Dˆ(™q¯ÀYÞ{æåMÇÒÀÊC’ù›…ûA o%”92Tœ K³ÜåNLÆšUzßGþì¶$@µ5ïF’pgðÂi‹øÎÜS—Ÿƒçtè‹Ép€táQ«†goòˆ¥Q2¯ÑŠÛ1ñs¸N”¬§"I}Ä]¼:òÐl¹¤Üù3C/ÑÛDúõ ÓÓiGñ¯LÐw‰¶Ü'ZŽŒŒO”F¿€ý|LݟѶý t"®O.†ôÓnÝ·hوؕcI.yH¤Ceá ì4~­Ú/!)¥IßgV¬wñU÷7‡ôpM8áõY‚'œSŠB„ý1ìÓVš,«ÑR9Óf"ëLæ’éÄC-æ­ 2v:þ¬[±<Ê?(HwöòyR';Oô–ÎÞW« è™é¤–>Ïhû|Æ(WgbŸR-j€ÕïÂ)–…zyìŒÎÏ]ÂûÁoìÖÏ’×òûæKÛÜö@¤¯AEòÁ2c1R_úN+6!O}ŽVf±®ÖxEj–]r!h\I]•J\Ü?Üò7ŽJ׊÷vý˜6¤š´1€UüÃøn™a™àò-ëÓ—äDÏ:<ìÄÝr|P…B:hµl•²ÈÙ±8}ö±ßRbÞ×™ëþ9ð™"»vJý‹&Ç‘±&tÕå 0 ÷*lGüñI¾VHO•S´d’H‘îCÔ¯F´|‰Ý~i!¶&ND‰´¬à=8uKPƒm‡Œ(ÒòÈd%qq«„"Ó ºDQûBQÌ^J`vì =òZ—,HÖÑY+BÒ5í$Ä2ZÌãŸóñ~ÿÏÁÕZÙ»šˆ¯G/FlWK9’a¿·.tzÉxâ÷Ä ·oKj®âú®Œ—.ÎIM£¿ -†:¾º ºèŸê’ùMgŒl‡X²¯;ŽŸÔê&P@Š@¥ ¹°3>œÒYu3ëx‡:Ït^Ïwåý÷Ü)ŽWfù5WðkîÖTM<;|ÍÐOE0@韤*­q¡ ʤdGO]­¯É«˜Ôm²³Ò`ȶˆ0V¡\>¢YÅ:È($/äP6 ÄÏn}ª0VH•w,„Ç5‚ƒx1¨£¥Ä=òUªõIé’^½{ ˜Á àeµãµ©k˜Ïתí{n+¶ ¹ï i Æ : œ9à}ñzÒ¤ÌIu$ìï`Tz,ИeŸ•x^¯W +ú€WU¡WÞÛþá£á4Z@‡„ñN›jÓ‹S1öW|ÙAÀ—³¥'üyݹqæ)I÷2Ÿ–\bãÚQþhuƵü ­ÁGúÕúúvïET||Lj¨…è c~¯ /ÛŸE((ÐIíΚvÉXŽ7!¬ãtðm”“ÑûlKXÁ`yR¨ÙÐOoš%œ\]'—J°µ^7ÒØ6'Š-(‹4]Ûl'dÑîW“mö…ãY¢S¯€PLð†yL{£ÜΘ½‹a@z(â8|щÑFÕj¥©N6ëµýæêq¿X]ôcÊÈ¥`üÁ†ƒ3Ê}6¦¬[Õ•ãqÖú4™FäU•ïøžÁ1^Á.o,ÇÙ»ý úó îâWŒÁ‚õõ®Õ‚\åºÁ—J·˜mÆoÊM•r´8K„ýs´Â|X§%Ò2Ÿz2yÝh„» Î:Õ[Ä–ÄiÞÄOÌ=}Ïô[Ñ)î >„ñX¯f²ì>¤†*‘D[‹¾žòĹ,”c×ðhAû :È™Šz›õ)Z£ ˆ5ÊéA,áYXˆá“½Xųá§D¢AʗܶH2i¥4ÈZ\!»Õ±¬‘:Ì|»'ôͰŷüØO}'ÁÀFÀÄ–•'‰ò©z‘Ó×’ ~ÿ§¡a£‹ÏËÜ]N¢Ìó .ôpjx­Ø ᨈ±¯•ôØé€guÊ'9©|JÁåâEu8½…j`ªv?.Zöôø`˜md 4â[·‹¶Ú• kM‹£®C@V„ÌÊdý©^KTöÀk–ÁÖK,Ìc¥“òÖÆ×o¡ç´PRƒó‘„Å8~L`½"Ž+ºñáCµ6YNF:/|¹ô’~CŒêºrþ£8ÝžX‘Uh‚mÙ–ºÿpœb¼ÛÖHXýQÆ$±rùc(œÝ¥þcyíYÁ ¬ ’FrL_aç0”¬ä ¶H%šñQ” †ï—z„äk™ ðb³È±—ªa¬rAO¯Ô7“¯ Í®œ&è¨ÜòØþÂäŸ0‚ˆ-”<)ãð÷3·b§ZO°¹3uÕT}ÇKÏ›V§IÀoË_pwÕ×VÊ–\Ä®lb‹*\_È‘w¬pv{€";‰iÓÐ/RÐ@L1ä÷ ÊWËøÅó\¸ÀÄÀOºì½ôÃ1MÂä–Êè€ß$×Ù0ªƒ!Ac×rMÚÑÃç´€qˆN©ðhÌÇù5e%¸KXà¡…GGm`ögq‹AIMõê­2?ÿ —æñ¥?†òƒ1/y¬ôÖ¢7JPzê÷ö(trhõGŸ¥Lµ¬‹qê®MÜ¿Ÿ¾äAäóãêÿBžÃÁúFDtvÕzO42È Þ¬;Âøéõ«1ó#˜/jbÿ”u­4Íçíùt»ÿÁãd°L•]ÐçsóæþI þˆ8Õ~æÙÜ[¯r£ ö2ÎvF}ÄŒ«ÞvÜòtд?eÝî±󊮄0:%†0R{Ñçwi=ͧהÙ}šŽ8}~›t¥=|€D‘!Ïí¹=ÿÜRbGCÒ ;áÄC[ü²>â…žX¬C¼€Å!G´ŠµBýÃ:Ê<ÙÊ9J6h–a²1»“XHùNá´œÄm=d|í“Pd¶•1 xª†@Ƹh”ϱ|V lMQXc*)³3÷@(çþ™º&Œ'efkQ‹V³”lŠz¬ö}÷¤Áé¸%š¥ÁGi»Zd÷åBÜ&7Ÿk¨Ž¯Ö¼,‰…}©#^ßo·¯iP=[îò”,j‘z`ûs@ øî7¤ß}¸ÝΚ¿¬cqÍ3·ŽòÉLJáfÍP…Ö ­ÝÕíŠÈ*ù?«îY²Þ‡¢Gx¹Â+è&pýâÚß‹ÿóFIYv3}D(´Ï¾vÁö\~’EJX $YNÞM§}*iÖ¤ýzýQ™;OSåU?ÿ§X©Õá€(fvéêÇÏ~ߦxÀÓ&,,X í*šÉrÑH4ê{ $ßj‡&ŽÙÌ¥>i<øäŠB¶GG`ôGý3ä?—ŒÚ¡ŸTÇÇ‹Í蜌WkrÖΠnΊN¨¨ÿøÚb”ÍO>&*9¥;m[>å}‹zƒ µƒë·Á6BWVJKyÎ~Ö‹–&îPÌìáæä>¹Ù¶bÃ~DÏ EXЩšmS€eºY jxRUp½„íöÈ~c¿€Òß1Â…‘¸Ä•s²&2äÒ¥†óó¹@â!gÃÕ íòx^±m"Á§Åó#>$:àà9oFÑPf¡­÷ü•ž6añyyÅx«‘ÎÜ@t@?×;ݨ°é€’ÏŠUñ›xÅT ñ+yŽƒ3O(Š74µ­:iPè¦,‚»”«çkSâ@}[Lfø™ÖR”||$qúÈÏåZ¸—Š©Ž ¡ê%³;{Õöâ rú_œaóÑHPï¸ß®ÉæË­9Ã߮׌VöWª¿œ¶…ŸxWBò¢m›¨U-+a{Ó¦=¶wU§ïiÑN'2ŒTa{N.Ÿ¢õ/Í~ŸüÅy Ž(¼àwëOISԬ긮îxb•þœGNõàO£¦L7zsqš„2ï£I×7¡Z•Õ:Ý*.ÙÏ2ü¥†!³¶ÿËn”–ð›ÝYÒ½6×ÅǧšÏII¼écÙÅx ó’„Ë(ãž6†‹²±–ü¬!>½M$IŸÍŸÒjá:lvÐ41ˆØÙ;á‚xÑ”M3õÄéfrüe,;4’9˜û¸ûÔ4ƒ CÚ¿'8"©=¹ÍAÄ|•Ýé='ggï1>'&WçhìyclñW±þÚCQ³‘@N ÊÏŠ;þø9—#£Å˜Á¶E¶{·ç ¹À^°“‰<îó¶Ç+Añúà·Cèz!è5mCøÄ¢àySÏÎï¦ê`ZV6ý˨])me’‰üÜf驲Î#lûü;œ9tø)ˆä„$EœULLìÊëí.Šd5x--Õ¬ TÒ|ÝàWó~†‚9‡µê’øº>¯Áø¥»šðp&Ÿoж±w >ÒWu që^W‚…4¤öÌ{IÕ¿ìq‰,õH Y[~ídÉ9ÝŠ ŒVÅËœËøïv`¤{”oœ7Ò•nr°tY†Ço X­“”RT´|²Œ‰È­ƒíxP<²ã/};àæ ¡ina2åD 9»Ä„¿ÒöÛÍ>– 4ž'G%‰ohS‚±¡}»û¤ßi6}ð†–…Íñ­ðä–¿3̾2Þç«|ï ù&])@B' 6„\é²qXÒ~/ÂâçîšP}Wç^§w#†â:¶zRñÁÉ^¾øR» @}0Ê@‰õ0è—Tšnÿ¬æëïu3ãvÙ®\ãºþ Úl@/iWÕwýÔø°…~yøõ×6Ó €¼ á£&£ÀIÒ@ §É?.d ÝtÖš‹V;úˆÈåM§ceÞçâ\ÎÙƒ>²”yáHznü^~_C¶ ê¥k¥(ÄåÉINà´Èw'ç¨á×sk™ävY*œLº¨ŠÒø‰w?û±>õ,7o®<.JH/,· GÖ çyÞ2gÓc%q=Já´æ£Õ¤td¸Ý^b b}âëA…ª@1W þ`«|à•µˆ{Z÷•®5¯Ž¾w¬NöÛïÏ9¡‰MÅ>l‡ó,ó’^ø¯yÂÌ 'jãïÝÏž +¿~iºÚMߘn"†yÔÃ.ëa+î¹ðæoc™1†’«¯Bi1Bô£¯À=Ä•·2*‰PÞ®[Eéú—ŸJ¹¦jâRÃQàK·´½±smJ}¡¿µsøä ´EEËÒTSõi*x0аR= w¥œS5À‹G>4?ƒ‘£~©iFoÛï‹Ý-:;1´ÐA í™2c\̦•åߘý<å(CBžs¼Dø¢¡ï·¯=?Ö Û(»0P?Á¬ªó Ú"a˜äëç™Ñ i]‘ÁZêN2ª˜ª<ß¡X€q/©nžœÏSaÓÌ %X‚‚ü®-˜»º¤^º}Æô⦺?îEñ&O Õ øA~”rüÜðÝH5f•ÍO§Å½ ÈXæìªlÅéêzª}:Mòó@Vú^žÙýõ)9ƒ;÷þ7?Ñ.gP 4½‰}!Øžbïq8oèÁ>7ÄF_Ò•b¹,ÞôÝ€®w˜Ê"ýîo¸ }:³yá¨K 2IÞ\5 ¼¿®g\`†‚¥\î7I‡…舋ÝÈ4Q;ÑA16I¡ ’YšˆõŠ»·$ñõω<Ò÷„Íq·ŸênŽ”¼Ú0±ð‡´è{+"A}rʈI8l=“î§¥I¼ß Ù?‰å û(TsCZ*5V¡[ÖÈœ ñYV÷¤žÛ«ó¹_û*ù$Ÿ=3J3^áxðäù^µYbÐýÄè\ºÝ_(Z+ö:¹Szû .ÓÊd–¨ë‹"ƒ{Ú’µêfÄžÆN»A"ݰ„õ„`^¸¹@?¡øÁ8;5a)ª>Ÿ™HµÇÄØQ1˜°aÉxãØBo‰ÄÓí\-c gu_Œ¦q/&+¶ÔO=ÜÊÇcˆ¦¦ûùè>þ·]ý¾CkQŒIè;cäNU{£ÁÆîËëpz _I yÕ |Åñp2•Õg ¶¢æþø@Æ®£K™Aí¹ËQn 3‡o%ÝHßÄÏ Žä¡Üt'`JqáøV<ûõ’l]–CÃr| ƒ‘xóKqÍŠ˜þ°¥–ÚÈÁiGw$‚%úV™¼ìWÅE+¥æ›ö›Þª« vT¬Îz]ªE@Û¨TãùªÿÓ“yL“ò¡â©âc>x1)U™Î¡¬²ŠÀ~&ol„¡ÆÒË[ë®–ëipÛV8îÌ•ߣºU\kÄþc/ÓN›e÷¦`ePÓbÌÑ®2[Ú$2ù7Y˜¹Ö”„œFm'ìè0@×è¨î›ÆbÜšD™mFv#ÿä§«ÖOXÞÜà|a}ƒ5+ùÉ,9Ž9ÌœVjÙÉ‘±ç=ý®àl’Áym‘¤î}Ê1oåÅ9š€“ÔrJyÓ=Œ_lÌ.*úwüŸ0Ôàç’܆®Ú%x¾ï’êÊ‹~)ÚÅa|f˜*n"³wl’¦};!xuê]Ð `N½¡®©³ï-ϤŨlå¡Sg˜öà6CâC63Y$ª)½`²äŠòûI³ëNnÎtõŒ’Æ#‘%fˆwÐY:; uiÊÇ*@Šx Û9‹^G!‹é äNt ꪼë=¯ee,çÛ·s]ƒÎv€[M€³s€Â€¿¦ìw¬à¾%š#`ãÌP4½Šmf÷·4Óq+J× ¦mƒ°I7ùõ¦ˆñÕÌ+q8E3Ÿ‰áÿÛóañ endstream endobj 177 0 obj << /Length1 1484 /Length2 7407 /Length3 0 /Length 8396 /Filter /FlateDecode >> stream xÚtT”]×6ÝJ‡ä€ ÝÒ-ÝÃÌCÌÃÐH#RÒ tJ+ ¢tHwI7 Òé‡>ñ>Ïûÿk}ßšµî9×Þ×Þgïs®}Xuô¹åÀpkˆ2†àæçá“(h*è+ðóøøyøøðXX  GÈß<#ˆ«“øEÁDÜÙˆ;¦&Pwwð øE$øE%øø||âá®E  hòÔá0ˆ‹ÜÙËjk‡¸Ûè¯%€ Äàåús‚¸BA@@ˆ°ƒ8Ýí:ôá (áõ¯lRv„³/¯‡‡ÐÉîj+ÍÎð€"ìz7ˆ+üj t‚üÕ ÀÀêö‡GnƒðºBwG(s»‹q‡!®€»íújmgì²Æ.ÀŸ§àçáÿ;ÝŸÑ¿Aa¿ƒ ÜÉó‚Âl6PG@[Yƒá‰àaà_D £ü.ˆBÖw„ßµÊrºà]‹6èr…:#ÜxÜ Ž¿šäý•æîœ•``¸“†pÃûUŸ"Ôº;x/Þ¿î×÷€ùü m 0°Í¯FÀîμ†0¨‹;DMñOÒ ï?6[ Ì'&*Ä'€¸ ž ;Þ_[x9C~;ù™ïºðóq†;lîøAm wx>n@$€pu‡øùüÓño„ÇÏCA€5Ä ÃûOö;3Äæ|'W¨'ÀŒïNü¾_¿¿Ww"ÃaŽ^ÿ¡ÿ¾e^9E}]9=οzþÛ+/÷øð ¸„ùü|¢¢Ñ»…ß¿óè¡ÖñP5˜ ð+ׯzïꯚ‘Ê€íÏ!aü;™üN½ÛÄnÎ'̺ûðÿŸ%ÿ;äÿ§ô_Yþw±ÿwIÊ¿ l2þÐ êèõ'åN¾îˆ»QÐ„ß ì¿©Æ?X†º;ý·W ¼ 9˜­ãßg uS†zBÀ:PÈîÍüa7ü5oŽPDîýõĸùùøþËw7d ‡»gÄíN˜¸€nw‡ø}‹¿0än¦þ]‚ ÿ>aÐÕè…wwówHøNwS †xþ–6€—GÜ…îÚõØÀ]ñ~ݲ¸(€øËôð‚þFü|‚^Û@a/ô?ðN,¼°À;¯Û?à]b÷ßð_õ‚Ü]]ïú­²»fþ¿_Ä›‚ƒ$Cì«BšÏßÉÑxpo Iaî§ž›på?ÃAt)Y®Äëg¤Ï=)QžíäW~fߢ%ïrž¹8}ä³^ÍPã%tÊÍ ¼mË`ýjêç)êD‚Ï-ÓaJŽq²<½D‘kŠ]$Q+® ضKŸ…Зµªc&ÁãÙ[eQõÐf­O­ïÞ¦kPЊí®ê!­{ 6„©X³Vbƒ×¢Ì#R´^3=‘útïQI´ÜÓ×;OÜI×¨Ž Ú8`C+IöÒ* aWÍçÞ¿Î*B~{Mâc­B*û ÜUÂEºá ap-õ^I˜wʰ‡*¥íåC–Rûj0â€c<(aÞä¥Öº ñ‹,É$Jèê}[v¡ÊO¶¶¼^s5ždÍ–E‚=ÄÞnxH¨¨-äP†xK˜±¡öQÔÏbDÂêäösh¡KªòÙÉUÁwrïW@y€4ìgb_5½tK[B´²ÜK…GG;þìm8Þ@äMâHuþ[ê/öÊŸVê•=N),$~j(Y%~Þ”ìÉÙ,~U›’b#Ï2òžn‘é»L“òÑ7ïž?œŽ~ Ä))v¨:Êl_i%º‘Uî> &ÝW/›Šr‹¬ùÜqôCŠé)8ÄG{’÷ô°û¥S2R²,—šjG¬d{ãD[æÍRùˆÅ&ïu0u4¢+™CÑŽã™ã»šXT‰„^eAsÆ-Â;,ü¯Õ}чÚzü™âØ‹›‰3ªâpng§Y„dPQNõ®Ò-Uz.S°at˜Ã5@h)“$ès^/Õg÷å€Q˜â†8çX–³$H£žJ;Ýý½}‡qymiiñ‡jê Q’GÄ!ôº£õÓwKR‚a®s`é‡È »âXÁùå€J!ŽÛš{ûãMl6B•gb¯3½Ì;{i&~ËHœ£òZÕöúîn“ÓŸU S®Q~ 5à@„ ièéírÄôX}§:!áÌJÔQ÷¥ìú³WùÞÄDuÒhx&Êä8{h>˜¯ùR9ùâk4LiX¾'Å]ˆŒ‘Abk3³3)uá{ˆeŠ0î¥á§°oZgÔd«Õ3t*ð¹m‹…‚·,¸Ím^{Ç„~ÅfÝ?ÍõתœˆC*‰êtoh©?F­ð¢U5«iiÒ´·´Öxyèz…¼$ÎLdÈÞõ€%ïÊ*.RrO¹à”q±ðZp¶/®xü^¤ŠÅi±¥ktåÚý«½³ä=üXÖ“ŸåýP¯Õ{†¾t€yFù¡cyeì˜(—/¾yò…áŸTÑݸÓYÄœ½lè7€ ý—?öiâEÆ5ì_ö‡åœ´ã†}HÍ39ÆSHXE¢ åÓ¤ÂL0W½P÷U©U}FØÎ%e4©ó¹©flËGCÞüÔ€"™© §åŸr{¿Rô¨ˆ¸úY 5<º4\Ííre²¨˜Š&ÁÌלí;µ §±ìH’ÂA+0YÙÛM£ÇjÕ+mñãUÊq^ ïÕLV!£ÔåVÚI¾ŸÌÊP¼2Ôîž,JŒÞšRÚªàOÛÒ9ç^§d¸ÉCÖõ^ÅÌÅ‹˜:Z–E>zoã°G¸ájUQúæuõàðÈç2V¾ã ¼Ë%¾p»Û²i¬Ô˜‚'º¿²f;ì vm:G]N0Üké¤o v©éÔí“wxpŠºÓ¼<ÌxšŸ ˜4Þ?ga¹‡Ïݳý¹þüõ4©žaiÀ¡ónx1‡ò ŸÉì¡cx`¼ýé’1K¥ <®¿ïú‰\‰6g¹U>·øuï> >!´žÍ^³Œƒkø$Žò1C *B–z0›¹¹â~¾½Ý[(’9Eî9àðÀØW«Ž·Ù…ã÷ó%Ãj`¶MÛš¼¹¡ €ŽEßÎV9÷Iž;eý*-Ý`3^Y¬þG»¼Qé ÒG»ìX ,÷TFŽ/µ,¶U¦šŽÞÕ;ùÑï?l?é>žñyÈaŽ#¨½ÿÓ{&'ôqšºïñªdË*ãÐ[ Ù·âjºàì=#ï«Åæ5Úí¹áB8$3ýéÏŸo¦ä³½Ñx1É&‘ïÀ¤J©“çQ"lŒ4!xPͨ6-B-2MYêÁûcÌ‘ÂÖž|Å™b(q¿CÈòý©’ÂnøÏÖ8I#*ßžü pI“½üdòÔð³–Ç6÷ò XMÝ‹GO¹¬D4°ñˆót$XKÞÙc j¶’ZÜTÊØ’z/Û'e}¸(@¿«D“h9«cWK·g•ü@šÞah3ª¹{!Rº}u1ë—¢¯d,ˆU9h—;8þ`“՚вEd™I6^…:Éh–À?Ôî“JW¿veé[68¼¹ývLÊø9’ÙfûAäuu±€KL¨ûU¯Gwçye3]µ;&M›ÞKlŽñyñ++ò“—/z´BœPpä«J½lÊ‘ °œƒ“†1­Q­b´ãYNb ` ü¤g‰}3b"w‚•ê)I ;IÏXˆ¤wa rK :V:½Œ’⺯¾ rÔ%È)[0 )I5¹)”–+5cJ ±CåTñõ°?9G0[fÑ*pS©¤¹ ®Õ’Ë_íaåwy™¾°Çª¬Z“,EñþÄ—n g ç¾yµ2y3':=”™¿’ø<Â2‹ï1«ì!äÙæÐ"lœ²øäÅ˵ȣ÷šZ©RÛ·4<–á-:Jý¦Ø–IMÁ“ƃî:ø;ñ¥§sü Úœ$?nmµ–ÆíÈÍÍØ$¥YÊRX‡øôZãM±Ý _‡k…Kïréo¿;Áó°ìèt\)Ög· “%Í¡/)­•ù0æÀEÀÛ·ýB’øål{¢ÙoÞ©rdi*ጉzV¯Ð¢k?gûõ)šîšOß5*Ë"A¹åW…›ç3Œ°³ÂçaLÏn9Eß;ÑzªèÂð$_VêÛœ¨ÛTš"›ƒÖÒ €l/˜Bó­ÌÛ÷ëêո^ †LëÏMÆæ·wøl á´<ÏísØÖo3ýfoHœ©"Òòø¬Ó™pœò–uÍÎç~±Çä·°0JÛˆ–G OK‹ç_cßã{ÑøÓAµ:ߪ`/,«ºÌ“ “ø—óbž0Ñ=º¶èÈ?tŒ!³ÛjìÐDÏWʺoL­´¯‹-É™X(¾¿]°F^:^|¹s!×¼vÍÜ\¦aÖöä”÷(;»’³•ž8uÔï¹wÆäðøttZ:ãýixI1æ ”áÒ"“hˆ‰åYÔ)#ûlêý™weåJnð„p•š=òA׋œa‘%ifKôÁ»£•%/°¨(Ø‘&à~ÙJt´}Á7Ih ׿i×XU­’NQUUä3á…2ŽÌY‡~²Ô ¡K×àß}BD¤- aædïè²l6Îò&Mø`tÍ5äMü êaH5ÔÔ{šûJßSVèõªîÃæ^7ŸgË_$½;嚉–Fk?ºixdDXµ ßú@jÜ7;ÇáB÷·ü6]šƒªìÔ-3IÅï7ð™TU`8#GlqnR; ߞׂ±Yñ2Ò\¼}s®ñpYÕ&ÓÞwû„™±›nx×à Ýʤvñæ‹ê:OZnÎÊú3µsÎ`Õ÷¶úÃ8A“~]ßCgz=Ëï›&D®a`’s–3C*uz Í*²³8~$ Û=[ËgxùLAms³ ågá?ø#¯ÏاÅEÃ{Æaßøu‡uÒÙ²·ÎIP™°·t„ߺŽ:ǧkJF5œÞYå=nÎÚã~~n¾U´ñæÆ/ÿº®f›m ºçìv‰Úhˆ%imP^I u¾'<›~ÌÙWì“ ­é‹€}¢>Q><,æ”/÷ÝjKA‹'¦Ó¯cy>f8º„·îà ï2p0Åç¸M#Ëœö´ Â´.xNðø/‹ÃöÈäšè‹ ÅŸL¾X{XŒÁøÙèÙÉ[Ë¢$¥OÐ:Ñ6#ê:ô âcwŒö ™bc%YÎd\")iNÆ7ðv0ÉÁ‰5+Ë2g ­úu5²˜My­~¥Ç$…(©dTX=Œïóeñg|õXⶮηÊ\~er.#³ý7r?&1+«u×Ñ„#TD@ò¤3g¯Ò¼ ;äë2­Åß1&¹žÕšWåHó^5i” ê\½Á©º¿a©Ó/4¼µËð}µóŒml¬žË+þ…Nö:Ôt¡5a&¢Â+Ù*€¾6=)Ðo¤*ôÍvæå¨]šÍ}V’E’^².ñúSÀÕI¹`0Ý«À:j¤iú{$ï©sPó°éh¾kÅ˃ˆÄR‘Ù¡½›Len«f—át“ôjy„du_dÃ*½ ß"®kò%ãËK°øïâyÈûIFL%“ˆÑÖ8--"êlÛ&ðPRÒ<âëãÕ¢8œ´Zã^ë€æGMRd~¥hø?xˆY“u)žñ!Ïžm|Úcç#žI¨R#_r\{/ˆºÒ•%Ï´JÖä¹=ÙBBSaý™ú©îÐ{”áÓQóÆ«4ª¾òP-嫜Җ×É:½ß|ÜÃ?…~ð±#ô ÈàùL· ³¹t~°!æ™0›•›Äl:nÄ’Ò¨ `Áª`Øj }Àeµø¸æ‹Ë(aÞMƃÞ©6¢‹n~:é3Ç¥ìLóè—ÍÀ[6¦+±c»{è[çCŽH?…•š~Ÿ²¸æó{ÍC™:À«§Û/KØ}¥¢†“Ûx;ÔnßùˆŒPïÉ¥L8|s²žVÐÕ“`4=ÀÍÍVøÞò ÑÕšŒ¶.oŸYµM ElŽ]MâyZ]1¡Ž÷`¾^H}ô„KC”4äL‰Ñ}€Ø;,—‹“OÔ4;s‹¢ë‰^ñim}¶“÷CCp§É)Ί×ìa@Ü®×SU»§I#™š1fÚž¦1>ò6ç;õTé Hòùj°©ã1nÞdǘ`$kO>ç¾­­)tÐÌ9U|»()yùƒß±ÄÛMêÌ”»ØæëMŒ€RÜtto^-šÉxìíáЉL+¼µ<¬Y£÷ëH:÷‡0š°ðY9“wÂûÙ„ËÛ(R¬ˆ6ízmGIÜÇh¡°Tµ1pÊiPúÕÛÕ²ð¼ÙŽÄög󣺧ÕöZù*ÙŸÍ}m)Ì‹,þ¨×í¶¥IP·¨Ã<¶Ø¥;UÉ8)¬Õ^»äyœu²·É2Z±¿4–*2(<®æÜÓ»fe– ^$űvbxÛö «ýãxÄî×ðbÂ| ºÂäîºéðÃ#Gôçʈ©]¹Ëg]©g~]£–åÐ$»óîÜDûa±9GO[šJÚí5ß¡¬%C쨿ù«êvþaI¾)I60Gvî׌2äB!L.”Üu¾§/PXSkIüÔÀýúm,Ÿ¡,³¼”÷À¸?-«ˆz>yê}ÒRQ>(§‰¸ß’ {ö¥gS%fÙ@aC,[¥CÞËGq“®_Uœ¹™jãJ†bÈÚ Y 8ÍP+§&,#ü…œ2‘PÀ%¹Í™9³Ä#ßSœ+œox+e0Ÿ©\Ìž>9ñwœ¦dÊoàÒõMk8ùŽÜé´…¹þøù“–«bô›)”Õ ×(gdÁ8dž„‹{˜žl*Î÷ÓìNä¥D+"+D0ðêKÚSpkÛ‘™NH½Æ/BÅ/‰iý£Nfõ`arcÒ?=ûŸÅu¿çd,ûæŒi$íÕä>²qæ3ÿ;v[ÿú‡OpEì.Y<>ÚŠŸ´º*Žî®⤳òÉNu(²Î(ln–NØ~I7)ŽÇímëù‡f1R$Ë' [ÄÚ…À¤õÃrŒCM8œt{“MgJßg«*rêœ×3=ù<ÅD@Ù’‘®$2M·âOõæõµ*Éâ}0™Æ÷˜~Χº…}WŸŽ9’÷òm×÷IU"K49»½"Öá{ן\- —é›N§MVÞ“¯·T‘Ÿ ÌÖ>û˜g‡Õ™N!Rä p—Ø)1n( ƒÃÜŽq´ë?GïÜÆbÌ'öÛ_&v1+(Ž÷Ô܃´Ä½y^êá¶ž0þÙ¿N[ʾsÔŸA'pˆméF(ž_füsàËÓ*Ÿ›>ã†ÀëxmÏZvš~£ ؈ 7×óG>™±”J!Äö^)Æäʇdåæ¹5­Ÿúì—R!1sAö/–J”èRÚ i'æ-ÙóÕƒq–¹;!•ºô]·üRk/ެ™>T×]å¾^.FØJ±ÃK­$³…UtãåÒ6Uì"°éóMU“ƒìòíI'kó4dƒaQC‘úxOý½ƒ“VtQ|¶™^$î&&FÐ ˜é¢[ ßö„ˆýO ΋Óq„ØÄÕÆB'ª¸©;÷1DGcÞklk®Ì{i×1fâØ÷^Î(“ŸƒzªùŒ¥ßøæ«×\j€ÒM­ŽüöíÈJí ÂàÞÕpC }Uă7ì]Õ/¦UrëáOŸF—=G®¼1G‚V1œ&|ìŸÓÔæ(ã 3æ/“l¹{¥}’;N. ËÔß[—A´}RQˆKöSoˆ†ÁÓq»°ÄÒ™ðaÐÕF9 ò«Á(õº ]ÑýÁ‹ÛOòÑÝ–‰vh‹sZ¼T–Œ\®{HѦ¤Ï0R¯hôÝRdY)‹õ&v\6©XLm*›E#tŠ!èJÊz%PÃ0-£vbQy$ë½úzÞ€ŸAWyØŸ>ò>zÈðõ[îPEò7îr7×'䘓å`ؤ¿9å­[±íÅÜðýDÕܾCòů×ÄíÂ¥29[d£¡?§j#s†9›Ò@Ê:«JQcÀ‚áûŒ8™Pœ¯Jiýι—h5Ãr‡òY,´+ü ä×­é΂•;ÙçÏ!¤õÚYŽ ,ÖFY´Ïp|Äâ" ¡õˆk øcëƒí o•K‡gd¨Bº——*Ùð6ßG}\;¯p)¤DhP_1gA<ŒtÇDZkkb²-˜—àÆ]án,ßy–ÉóÆ3ÚŒj'3¾§…W¬.\Ð.hÓÊh^½'™uÁ\÷0˜œ½èΪ%uô;Ù¹pÀÊ Åè|Ÿ|ì J¡k‘&˜æãêin¼–=1o÷÷…‡áTø¸XâÁÚÖ×½µƒ¦XŠéÎ)뢎޳‹TGed«“W¢n/é§ÏUŒC•êæk©F^x{dÓ d<®¼jû"¦1;êh©c)¦Ýx¯-Íëy¡J[ŠÛByÿ$…TY? 0Îê,Rf¯é„±`©Oamçc£ºU‹ÿ­ž Y`*«õ±—&E[ô:åX>‰åú]V6Я/m"º¾Âhí¥"ßSÁ¡"t{QÓ(c¥.NäÿÐ1︯¶å­ð[ùèŽ ÊWºÉ²ÔîÞ†ïQQƒgoqDK²cÔ¼" Éö÷o²_Eh §R¼ÊÛÅÿ¡°ŽÁ•}Ùr?ß™9B‹›F€¦ÓKF%}ô±n­Éê‘óËSΩâͨ;`ÅFV7Ù/Ç(! ‡<€ü™‹*¨Ò–Ðà úî°ut6Ü`“ÂJ»‚0©ÞeL5ÑBÊÈGQ—¼8 ’}m©‹Ü.d_5ncÓm‚(÷nˆÿ­y|b§rûW‰utêl‡”á·ë¾}OÙ½!HéÎ'íïΫµ¿ã#åcVfnYµI•ûfÞS„ÔÆâIY l°Ozj„ô†@)6v³Ü”¾³Ø1î<ä“ézöcææºÞ ¦ÎQ†Åû›tìA9#úzLèåkÉ÷ÕeÌbÖ<Óô%loß_Ó¥x:}ᦂá°3>½×Èß²ëqº§1ZIâMå7?¡¼™S’~Õ@æ_þ0mvdªÿ@åÙUóu[§%ŸùíTÆëóQó~Ã>³Ã½–&ö¹ª¥`›¢²à‚g‚`¥h)Gñ´–¿Rõôé2óŘOÖTn:ƒ)kD»…Ò—,æe<úË+ zHeÖˆ7™OdìD\|yR¬Wd‘yôÀ¾m ì]} òµgrÏÍë¼™Å~„Wzoõ?HlÈÀâ ÷ 0ƒ 6^D¸KŠí)¹FafR…%`okŠ}'!&E½¬ÃØñ ürá…Ö}î8ò? æVç endstream endobj 179 0 obj << /Length1 1390 /Length2 5891 /Length3 0 /Length 6846 /Filter /FlateDecode >> stream xÚtT”ïö.‚€ C "0”„twHˆ„0  13C HKJ*¢€t§t#©tç )¥Òñãœóÿ{׺wÍZß|{ïgïwïw?ÏÇÁ¢«Ï+g ·‚(Ãa(^> @AKKM ñ‚$P”#䯛„Â@Bá0‰ÿP@@@(ŒO„Âà´à0€º«#@@ ðPB@TâÿÂEÔ ÅP‡Ã H¸³'jk‡Âó¯W˜ ..úàw:@Î ‚€‚A0€eqœ9ôá`(åù\’v(”³?¿»»;È ÉGØJs?¸CQv€Ç$á±ü  r‚ü™Œ„``EþñëÃmPî €q8BÁ“á ³† ˜ÃújšgìXóààïÝøþ]îoö¯BPØïd wrÁ<¡0[€ ÔÐQÖäCy @0ë_@#ŽÉ¹ Ž + àwç €²œ„ðïxH0êŒBò!¡Ž¿FäÿUsËJ0k¸“†B’üêOŠ€€1×îÉÿg³0¸;Ìë¯a…YÛüÂÚÕ™ßuq…¨)þ…`\$ÿñÙBP ˜¨˜0â€x€íø•7ðt†ü ürc&ðñr†;l0C@| 6̉䠮¯ÿø§E" °†‚Q+ˆ-FòŸê7ÄæY>ê0b¸'þúýûÍC/k8ÌÑó?ðßûå×ÕSÓ4Påù3ñ¿còòp€¯ 8€WPŠŠD1/>ÿ,£ ‚þmøŸ\5˜ “ñ§]Ì=ý«e·¿ àú«nÀ?‹iÃ1´…¸þÃr3 ŒyüsýwÊÿ⿪ü¿Xþß )»::þsýŽÿaÔÑó/ÃZWFZpŒ`ÿ }ù£Z-ˆ5ÔÕé¿£j(F r0[ ›y„ù€ÂüP¤2Ôb­ Eíþpæßð—Ö¡0ˆ. ýõqÁdÿà ì€ù€ 1Äü!1jCý^ã/‚ÑÓ?ûP‚áÖ¿„'(òB @ž$˜Õc,€—F¡ÖßÔðóÁà(L 3³ÀŽ ùµf1¿3f7pë_~’Ô»"˜ÃSsð¿ìß ‡@< `’é 8øQ}EPãI™ƒ;ïÚ$þ^Ò‰± ïPö3"T—ÒˆÅrœ~zÚŒFòt§€ò3ûmy—“Œ…Éï^èJæ*Oá#^få [f«˜‰ë#ì±x¯cFÖ Š:¬¬' òL]Xºw#n¶ËXÛvésPx߫蘊wç¤ÎSUnÔnn-ËKÓ¤e7ÚYyŒª·ê5XùAw/sÅ):p5Ò,,Q;…UC²ù”$νôæRO_ïeçݶu·€µ}ö—(J¥G½ŒŠÂ„¥FsïÈ/2?¸m§PyY©Ü’ݶî*\äN8©Ð>´Cn›³Üwę́¥ë$ÚÉÑT‰{‘’Õ';[ö=Öl¢(¶@í!0Ô"ãåçQJ?`uú2§/X^HC  ÝÕ¢…#fý"½ú¿.oþ ÆywU\ •–Ô@¼¼4äeÚŸvAµSe|µ[)\ç°ý™„ÛÀäÈÊ'F3wbžqd¤N¨F}õÖ ‰5,ð‹(É#¥N­Ul¤û`vk,mÂÑŒúH¶0Z¼€Ý»Š_0+>«Ê¬üNŠ÷Ñù–@P¯ÖÙ'ooü­RWHÒͲhŠ˜EÈ'B³ yߘÐkÈÈ’œë¶²jçéýºr±©’§¯Ðñ‘ÆÕ³žù¡¥8Láo–äŠ6e7:ö¨Š=)îÖh“ÉÈrh™Ô§'§Ó0, ˜ó7’Í”øaõqúªÝ¶Q.å:¦›2*ÎíH°—º®%³Aï yÚoïEþVd+xÜÇEåG Ѝ¸žØI£veÞ ò„ŽlyEªšØiû±s蒥Ƴ¹8D'änLv>ø9¨»«QPFF}îåB×òÚIÐ =­ó°®`‡ÞbÑ[‚ÇÏ×UÔ|“ˆÔ(?LJ”²P=T¾êÆÜtM À)õÓ0£y ‘y7{­°Küjéën¶¾¢ÀyzC•‰På™ÃfEÓg NC ·)úøÖvFÏ•‡Q‹Í¾Ý…ï±[¥¹å è¨=M°—¦Ýë Ô›N­ýè9ÚvyÖ®"ÞV´Î`Ì–ý#Ä,Z&¹§¤8E‹±èà…á}Ó冷QOž› -çóV¢E\ۊǯê½È®X÷’{®•¾8ͪû7›ÞMƒ©¥S·gíõžtÍÇ¡d ›ä(å±5†Ôðûë&twmáxÍ ²°ÎXß'+ðJÉ£C ëdîÔßÜYç;±Æ¹m@Fò¸Í!7 w÷ÊyõÄ)Fy~£‰‚½ ïd!ø½$gdÜ–NZäÁXPéWÜØžB•ªºLÆ·œSãy»:¹ŽDvjøü‚ûq†Õcœ/I/}”D›÷`wÖ±c±ç’™$ôà;=¬X7ãŒâ·Ï\]›8“È%A±t|ã á—>;Ñ5m Qûçéã??-z’Òã+}äRê*¼^pzmxÖ̳œÓÒÆ!âìxEÄVÝmÊ2ÓŠR§ÒÖ5hÜòãZªØÏ`Éæ—]Óêï0×îæåC8àBïXK“¿œw§­„äSP=ÑÍ£’6ÊBÍR–çOƒLV’Y°EnkD ê¨ØëízÀù>ºã¹rLIsðT–KXêë±ù i|O¾XI•z€&lC¸òÚ·¡gêXìœOÊ‚ìÌgÆ'[CíêC¦s& w›Š?a¯µI“ܧ üÖï WßEMå:û§þ&‹›ð4½‘ª9R#;Æ~ÃWºI8aFéæï öüJ×*Öíסsån§–cijË?UKûC¾Jn®ë¸;Ç.§½âÊÑ­û ×Þñwã‰ga·Ë•Yº„w.¬$¨†{enj‰û+„–É£gnMÈ– ·7Æ6\*=*¸A˜Íkç•yâ_×cƒKÓŸG|öÂú#pú*GpiKÚ/pûIB6˾&õž‡±…­gÆ7q1Ÿœ ¾•‘Ì—Ç~¸z\Á”| ;âœ$.™Äµ2TÄÓX›¶él¦+Tkû6K ʉËÀظI…#üPŠ7m\âÛô<«x.|~I "Šyèù` Ûϼ8…ã éè¶+G9Þ,KN)ç1’‚…&DŒf }þÂ~p1†ýî.Ń缒1ˆöñÅBíÎ =e¾lÛ÷lm±»–oÏŽ®^N¼xnõÝž <:.‘àëˆz”/¡– ô§ÛòV Rž±âµôö)îŒY0•çüøåÓýº„Z‘*•»Ë¯”íªy%ý̈»ëÀÂïMüšý3ƒ§lW+*)F Þë…c=†V™f=¨[0ö¨µuo)c|qe,X5.¸ÏÏžL+ÏKAú˜WÏ–öxw¶Ãm—8 Ä5ôÁþ s7.Ñq,àZûÕ¸È 4¬@OUl»úã„!c²©ô'aIð±ìÇÛ‚â8POe’D*3%­A;Á¶Öù·g¾œiMÞºGI5''xÒŒxô#Ïý£àÄŽÈ}Ç-ó^ç?dQ#ëâ%x,x:îÄdJ,{¡4¤ ®ÆV#Jˆû9-uÍg$h7·ËÛ,l°Y«÷—±ˆ’<Ún$gñ@óøWd|¢æå–ùW-\³P–:; b:8Wú­~ñœycOßLÞm›‘­šAúƒ™Éߢ­=>*“Ë'![0@OSº@yê¢ñêŒL¿g“J^u˜B¿tŽç|P_=BõM6Æ¡è:FO{%sýQ†…1Ôäýé±Ý‹1ÙU‰3׃¯ÔC]†¢%øñyTãR~SàµË©‹|¸Ø¨jÒÓEwßœxÐAú"©™ÝFå¡ÁN˜ÖXÜJUÂÈ,)1•s¦9 ÷ñâö¬K( c™dBí‘ʺMo[»U÷ &6,?ÛPqákhpÙnãuÆWo¦6ø®’ï2¯m0‹z°‹¸0ˆE’t—(8ÚM‰fîÃK7ì¦5ós­ˆY㨠|{Ãᵑ¬„P+®ÃÚÚ´ýÃÆ‚N¥uø š&Õ—·vÑ U²¶ííi–2ãÓÇ7¯×ßqd{sˆ/¤^å”W—ã ä¾²OÜ,jgaLX~)œ2e$`yLì‹;oÅX/*ŦnZñT,°òöŠ£¡_˜"F[íªŽ|8W&4D¤IòžÕaê3€SÚz¯±¡.4Ínr2Çc‚x'òÌoÙ¿Ür<ô:qµÉë+ã.h$»à8*†ÄT7©Øœ|+ÑR<_ ²00¸o±Ä®Ï?*-ÎzÄvSmҽȃ¥1^àtS²tw"ßV?ôHíõÎÍ_Ï”à˜s _ &?£YðÒS¨µL¯ô Öë9Ú‡Í;µR™P)39Ÿ JH&Ž¥íÕùãÄl7_y_Ó=tµÈK -RÌ‘,•u~k¼ìp‹S×ó¡hÿêƒRWk5ÃáÉÜçê!)÷F»¬ÂmìÐç_p—Ê©ä†m’‰TýµHãX]˜—¼o¢Q(`áÅíl?éèIì~“ H/°ÇL©Y°Ôñ— á0ö¼Í“OÌöC«<ÃÕv•ªÐëx”R©ïðä"AF´RSÉé#Š€Zâò`íªýœ8ÔH”¹HíŸíÀ=~¡tQûÕï§bãëš!9““üÜBëå]­çþâÖäí ï EÌ5É'm`õêd|Ã[&Gè”×﬽òôn4lãÅÊ|¤Þ ¸ ¡DGŠšÒ•ï ”æS}¥å}öÎ kI¢Æ­W ß­ê¦ì~$È"!õðòNWÆ…1ë[5½¯Ûã Q^Sj¥›_kdóŸÑXò¯Ê¡5ÔÕ²_ôÊÀ}à¸dÉ Dý4ÚÉM/jÖ²vì”®”bÞìbl¿ðÇsy`/ËÁ©hWTüóà~W_~°0o"Ëè¥Kèã³®qxÀ‰ì3©C—h5¯_k_ÕðÓëü+¡îÉæÁèÅsjöWЂ×È|~^FkdÓžnBËÜx\Û|mö çä½gßoåWíLH®f(Qáô!XÛÞÝÍ2ørÖqjZØùAß§réŸMÕß~91"žžXZ)"»³'즶’(Ir.ò¡P9 òî „’©†.‰6M?%•àG"[!ÏVÉ•¡²Ò’“HNæow oR_@‘7|xÅj(AÙ”yZbEã ùÏ._:tϯc/œöëñr+/ªm÷òœä»í6’ﬕ)Ä[rSþhwXWKôÙr鞘Ù*’¡wÍrµa˜ÒÆ›ý(ÏÑ©„U‘S£YÊŸ‰Rág0«ƒÆPÁƒ¯e~ê¿€J¾GŸtb×7²êªóÄ ËžXÅž1áäy÷ô¦æ&pMOÔŒµ6¨txãÉ„×tô·Í¶\ýŽ¯È¥ý$’ÂóÚi48”N‰ ój»a7gUR‹§Õ‡Þ˜¢7ûqÇOÞÞïƒ<ËŽü×Ú,ÓíÄfÞÂ(Þ÷’rôc¸`ï”\£¡þ›6|iÂ8­6`šÛ>Õr%XœU0$r|ù º]JÕe¡Íq–;òMÉú6%ïŽëåÚ“ ¯äÊe¯´$ 5ïø'à“R~%ägùxiÇØÅTæ¨4ðbñÞ´?ÏaGùƒÓ\á‰Dâ€GÊpV’¸È‰@Ð÷ðݧ—ÖÞx°ÂÚÍ¥ç´ï^O"¨øH$—éžg@©K3²aO}DùãØLÆÄëï=„»|OAÌÇû/5ÑÃ*wv×?JT…o›Dç~2Y"¥–žòÕ N{Ps7˜ì>šÌ¹ÚÓñJPÖ·7Ó‰t-BÃ`3‡/NA­¥Èývâ§9Õ=Œ?{þùÀKPºe|sL…À¼3ÙÄrwz(Š”ú\ ïÀ>¿'äË–ïƒá®ü’O+JÜ Ò6 ÷„.û¥'vä°*ëԪ͓Koݸ=¢éürevy—ÛÕÒßðÉ>.$|N2ˆËr!"¾b×~J¶²ªG‚ŸÌñJútÈcD]0È@³zþ°´ <7¹+†SŸÿ¾OúXã¼-³Û´Ó©ùëÃbuzåé¡[ªŸM•å]ÆIá&$O.NÑGQem㸻b>ÍLé7JV¯%kò¯‹qÕÚËTÑ.¨p|óÈ×¹J4¹ótfIÖìý-‰i|®ùúЛô…Ì úJØ?Ó'ƒ€’`Uœì˜+Š5¸Ü¥2(ö¡ï#O’±q»e—Í¥¼9iê7ÑÈ‘äøœ…®&CÞNÓÀÃ}ŸQÈ;c•j.g"¶V»£Îjöô¼-eÿUN¹µoùk@ê] o<È›‘ÁæÀ¹Yã¼ì-x’ɾ‘zBh0[¤»¤XA€Ö7®ND_§½©£üBv5> ý|¹“‚{1ËH÷Ö$Ý)¦³”·QþøKœ– ßÍkõZ2Øâuõõëí6ƒ0ÜŠÒ½§¨#Â?SÌÆh-ëÎÂ`±KŸY¼‚öÂÖÑTQòæ@…݃–zþŒ>/·šÁTÉe¬´ù J6JùÇæu¹U¥êëR_Ò])Ò®b;ùC×»µ[ÜGšb†²Ëã…ÜŠ”Ó«3ý]nGo9 T<«xrzç.Ø=o0º?ŒëÖ‹ -q¦nߦ€.>Ÿ¤w4hÊUñ¢ÇAÅF¬ê¹ž;¹Ç†Ââòá KŸY§jòYóf5o¯±®"öAÈ÷ú¹™VΟ²%°–öÀ/FU%W$\7F¾s/W{œÝsܨ˜¿/ýi<¡BFk›øÝëú†ùÉÚ)q»bà£H¼øæº,Ÿt)ûGFÕc…P¢ûŽRˆË¨lN6J&ÐÓ¤;4@áë\ÈJìsŸ;ŽV¢(û&jµkIz“YÙÑ©*<\Qsx §ë«œ+¬þ$FãV~ ™²feDÜ=ì¸a½„ î§Œ<úÒ9ÍÅÐëÆŽÙDæÆÆV¶{«?îœѧ29ðuæñ÷¤ñµ€j©j½'̓]¹QuûéäjLõ(:=|îÍ(rjE£ øEéT){Qrøè~QTøCÝ·Vá ŠšÝ?î Ï91˜&Èîè¬ß9wŸ£v/Yliz¿WÄØ‡&‰«ªn½µÂCxå†î€º‰‰ˆz¥si5H´¸Â.ïè-|è£üü.&Z|ÀÌÌȺ?õ<µàêVõp>¯$p›ÌË–çÑ&N~ßøÐee«âð/»­Ö‡­5_Ϙ›(®Ñß6Št¼%Óœþôµï »WUzûÛM¿qê:w¬¥4q¾¯òFõfÝ_p"9—ƒÒ±ïRV‡h¿5–/霃–´žI¹‰9UMu1ë°}ÌêËJOTó^ˆ“#LO¹i KiPÓÐÜeÄÖxëñá‘ äÄŠ'ùÂ3:Óž§føõØj¡Ë­›^šL!Å'÷×kwˆØ½‚6ÛßdÞ-‘óe&ß­DjÛÁ´iäU¯³Ž¨Rù¼­ð$R}.®CÙÏâ¦*V™±&Î#»¾à´'á²Ï»<¹zÄÀðé4—-`­Q¯5™OÊ‘ú$ªm};“YíV„côöíCö©–*+rd]F%©5).Ü€jwØ{¡Ê3ÒÑ+ß´§ï°úPì®MëÒùdòÖÿ¬ììí4Ôq)xyóâÓ~o ïlÇûÏ}»{í‹)Ó”Û‘?-¦ñ>jîê?Nbû”õZ2 &(3Œ¬ç‚Ÿðz€+G²)Q•²Df󺈓Ù§PM?û=âépYñ£vËGW~ãÎòDblñoÉe«(QâgÐÁ"CVVÉ– ìK0]¤¬k+¶íMò”|*_i)Úf4þl¹á¢jP³F6ä–Zñ² Od9«bB]ŸÈb[õfxާü2ž3JëtI3&c†ükIq.‹é=Úo·ôÇÓÈÁ‘t3z\–7«~0ø‡-£¶s¬ü§Þ˜ŠiBí†üõÝfêñp.»¿ÉLM½À·Äaß+i}4<ô½HY¿u/LŽaŒùud`3U׎%ùpÿý!*Ÿ‚Ì­g5_ù[Œf»9äx„+rßÊ™®îp+èɦ*êN:Ý2…î÷OÝ¿014ÿ¹:Aì endstream endobj 181 0 obj << /Length1 2675 /Length2 23277 /Length3 0 /Length 24771 /Filter /FlateDecode >> stream xÚŒ¶tœ Û.œÆh[ÛFcÛv2±m«±Í 6Nm«qcé»÷÷vïïÿ×:ge­É\7¯[Ï3äÄŠ*ôB¦öÆ@q{;zf&€ˆœ23€‰‰•‰‰žœ\ÕÒÅø·ž\èälioÇó' ‘ H&j䲓³·H»Ú˜YÌ<Ìœ˜ÿŸWý?.ÿþ;ÊÿmÉÿ7!qW›ÿ¨©þ£ÿÿ¨l-m<ÿ6-­« èäìAg`÷¿M5€­ÐÔÒÕök¥\Œ@‡ dgnóß6Z:‹[zM-]L,þÚ–¿äj¿¯ÌÆÒ¨hïlùû± æé@§eb zt8ƒVò?* èrþRÌÎÄÞô÷‰±°sŒœœŒ<áAC!v€73èMÿYb#ƒ½ È*Ï`fïÿ{¢ìF¡ß¢¿€Qøâ0ŠüA\FÑ?ˆÀ(ö_ÄÉ`ÿƒ˜Œ €Qòb0JýAl ­ýƒ@\dþ Ù?ÄEîq‘ÿƒ@\þ‹¸@\ÿ ¥?ÄEùqQùƒ@\Tÿ µ?ÄEýqÑøƒ@\4ÿ ­ÿ"ní?ägôüŒÿ Oc'#k è-dæòGÎú_ù_—ô_(‘É;(˜‰½ h‹þGÂÆö[bkû'áïõb4ý¥þ‰*ø¯ Ì, @[S#g‹È@|@Kø/¨«f (¬Ù? Ûohù ü²³þ†nx0ÿØüÑÿ6·wuúG6ù? (þ.l ±Yx:Xíþa’ý#?¨P«@ÐP¬ÿA´ùuÙö¥:ø'2;ÈÕt¥ÿЃj·ÿCälÿ/5¨‡?jP0ÐË×î_gcþ[úïq³X;€—öÿàïV9þYPpGW{ ©±Í¿"²²ýQü¯âø[óo{î¿¥ÿ6fþ=ÉÌÔVç?½99m-ÿ½„ì¿m€nÿ˜;(ˆ3èÍöߺ@=t¶ù×:1ƒXýI ze0ºX8ÿ±© ¾¹¸ÛÿÃÃõ4B·@3÷¬ÈÛãÞóÔD¯?ä@‘¼€N¥ú×c×ÄÕ 4"—ÿ¼Açð?ø??s€@  üÒ¼½ oˆU]Hû}ž;ýÞ3ä{éÔôÞKNß]?À¤PWgm8Ý ¥ ÷ ¯îˆQÝ.½xŸ´ÔÄ·&)µ=ù<$(OíµÁ/NbL}ë'€Ã§WÜ÷yqôQ´†hy×)MžïèÊõAñ3Ú½{Ÿ„Ç·þò•±°ù=¥ýj„çòiúµhÝÀ/³äÆ9sØ$Ð.ô°4¨H³7·3¨yoDÒ ´ð¾?cX‹½µ7Ybæ¼Ö¾ª²8wááhc@Ü ŽMQx ¦Jc-x—¯,z´ðå!Ò¥­Ò#3²dU[*GÙ5õÖº-u0ïæ§B(ñÐv“j˚РœH0ªÛ ¢Ð\jY­‡fÂkí·êÝfViøËÜÓßÞ³ˆZ'ÍÝÞOõŽkÃ#ôwai­÷ÃM#;ݾ_úðÍÝ™iÄ,t"WWx²Ò Ê]ÆÁ»4€RèÈtËn)\ÏPF¡|ÞA—¸ÌÛELLÚ\P½ïÆðÏØó}.c}+.ä;6gQlÜQõ‚ß‚9äߌ;Ó..Šp,XÅ ³Ã¨ ²Äº?¬ÇQ*ñÖfƒË/6+1DË<‰d·Ù/ÉŠÙ¤$z÷ª†#uƒ<­¸ ÎÔ+ÕÚâÙ •ˆwFÑ6 ‡öqßšnßVTëcÙ«?\TºGÇn©r†|êPÈërVÈŠ/¹Û™ë…3&=Uv#¶mŠCÒPýø¸3ÞUòìNW.%JNY¼$×/sÄ·(ZÜ‹S ˆùé¦)€¥î»Â=ØûläµXòìýRƒïÃMê—¯¸Âx*ª÷ŸI½6Áz¦ÇwˆG§vȼm*u¿°õ5xÙ£3 l(ˆv2¯7>REG¾šE6¯«¹ Õ/ã×fÍ7~A “Â|geBçÿñSPTF™½.[L‹þ6Ÿ”kµí•#øH×ü±ÊY·ný†/´â£n—Ö;² Qµc¸ÉýgŽ”¼i‰%»Á ¼ÌHœ]Ëjòùä\â…)xY0¬ZÜL”_;ÅþÔÄÑf¡šA°&‡(Q°`;|s”èCuq©—ÊhЬbÄ!ô<µ(”(›¯“B¤‘ª –úêD¤€I»”ƒQôzsBÇsÔ“ªOöNvÌÍKÎá%]G1–|_0w'gOŽs¿T‰ ó©~ ´Wâûqð# aÊЯ‘/‡™©Ì6ã¯íÈö¼¾éa1{}Øâb=?d£ò(¶¡¡¦&K`ÇPàš3õÁ`,J'¥ãšËC‘yŽàú£ËĽ$Ø2"/GFK³¯“Œ+óëS¦š”e&f½¤KeÝÔŒï­'6áü«Ÿ !¹î†ãy€nkë>››±N–ÁTëçšóoÕÏû&Q¸LWrÒryZL_Çâܼ96°“çuï{àNyŽÃ™$¬8ï ’sT§µdVe°‡©»é°$Fd¼"D´…%r¿Ãx®P}ˆ”¡ ëeQ`šQO«âR$#³y:züÚLŸ„µ©Ó…}2 ŽºÄ…Å‘[ `!7O6®ö ¿“ÃÉ sµ÷“ûÊÒ‡íµîš˜‘>ËA“ÙFS‚ØßƒX1õÆÝù£tC ¯P&Ó„{tânK÷Â<Ï¥’B l'v¢ïד´ê‰û÷¤ýv²|Sy]‘欢Ë ·ó‚Å,D‡\ŽÄ²¦ÓU;xö'~»ÌêŒÑCÂk=ž3%vkØ{=>LÞ ÷UvN c¸o­o±èÙ—÷nª ^¤,F‘\ „mÏÄ¡±x˜?À.¦šÂ– yrÜu-¯ÄKC°eíØU®Ü)ÊèOfjªs%¼îK¹±?Q&îR½´K=[È?ÖÏ{ï* >¤3CȺ™ÌÙb@Y6”tQ ‘Èý<¶ílÒ˜ «Ä.ª´]5&gZJ‡¢y4Ì<é+HÚHb4»éͱùN®(ÆRÀC¨.D­",˸ÏWŽyÆŽV.’+T¸q—cÃ[å=Ú…@EÚº¨ e'H–Âå­¼hŸˆÒݧŠEµk qn,ôê/ãc/‡`€6?“¦²ñŠŸðÑsWîð# "¿Vÿû‘K.¬ óIc˜ø%Qr#«'!iÆŽ ’œÜ¤D¿öËš„í×·V¯‰hqh8T›ò‡ ’iþ* 䢺pœ†0¾ï:u<äªÊЊ%]Áyàú—seTÌfÌâïmâ1ƒåßs¿ËBNxÜC–`èüÐT@Á¼þ¥”_¨ªøvãœÿ¡Ktx]Æ vò·HzlNrżŒ‰6¤µñÆ…½*ÝÍÇšaq°âJn(¹Myá¨cÔä£hW0Ò”ïÆ VÇÉÑ;„ñz¯•ÁV*±bª«ó.´GÌ|@D­R`PÈÝ´¤kç⪘' þÙjž÷Q÷㦠‰øæ£Œø½jñSzB‡z`¬ •yUwβñteÌqóaù\êܨîÖ˃›3V͘ ‚{ÛQ½¸ùËX1 ÑYßúô³³il–ݯ„nX˜Êƒ"žy|Ù\/½X”‹r'„ÈâÏåÁnò¢QrœÜdR²–¯IB‹æx[v6žïÂ¥áâÄ®ødàöNÇ‹b…„°GÜÂ’ü×§m>S4Ükí-ÔS.ýÓXžÜ ¦èúÌ(xÅÁÈd´„³\šv…3ÎÅíçìó’,žËc}ïÉp¥“ïѲ½æÂ,äZYžóÞAh‚A‡­Pe‘ÅØ=™ÖàRVt&ÄŶÀ«[Cè'É &ôÛ­à¥åtÐ-r÷ÀAÕÚ–€×_c«_=LÂ@ÅÏ3XmI•h¸Ûº8  "zoÓ„6uÆl¸ÊåÊpíJ{¶³DòxÍÏ{Açï5\?EoßV½‘ï1Ä”î„2?„ƒªÁ,î1q6{˜¶0µMˆiðP÷¼iXF™Ê!Ñ#õòÃNûâàvÕ˜C–q»Ø_Êà$Ìý‰ îYK¤R„ù±Ï¥ÜTô®” lÒZ>|6J¦æ]þ oa×ñl’M ø#4Âb´üudÉ;ÞÍ­bÓׯ=O§ï+‘Ÿ7hÚ#ùJ RvúÑBÐÊ!œ»J¸ù$âEÄ CÕ>[l~î#ÇPJú!^l¯ø½o{ %ØŸ¬<þ;É+kû"÷÷Oígîðw”†;•„ˆ?–5xä“‹9ÏÜ &7 B›¿ÏÖ'ÐX ¥`asG-³ñBØ'›eÑ8G«s_ ø©ÀmüV¸G¢P’‡62®ÑK#Žª·ÆXbèY­T 1œ¬«”Òƒ'NS¾j©Šys¨/¸55(”3 . S!Wý&ß*ÃW K«œ1ÿSÇ©8ëyHë¦íTËèÛ^»ˆÿ¾8ênQ+\ññüñwjbŸ^¿F_ÌÈwÍ!IFSÖ5ð¿ÓVü$µ´éB^¸û–šÝ¥SJÍÙGÑñœoñÃ.ç}-ΑåìŠQO£jï%¥¦“ÿìF£] „´l&,Uª |ÝAþèd&|eƒ<·ŒxÃÆÊ…¾u–ñzݱæ©¡lu¡ìŠQ‘ZÁ»–~ïçT·ísÙÕÖýÏlI¿˜ÓÉüÑœl…ÞΜSÐ{®¯ì´7 h2Ú>–Ý8ß\Øg¡ z'xÎ#À‹ˆEyc™À2høk7þ<'Üg²CØ4v5wVL7%£ŸÒ½­þ1›E!ËçÐ ‰ÚŒdƒöÞ§Å/«žëð‘a¸/µ‘ÖìÇ —g©[0Ñ–A°WÕHx^Ø/·ÙvXhðãëö›…ð^ÍwF…Ä\8sE¶ð©+áØæîKÄ0ð°÷œ{âpZ‚ž*z~—¡yà•6öÂóG_“àˆRs܈™›"Å“ƒÞ¯m<ž•‰méD™Ý+z°H†æcøÃh<×ó®HΣ#k¡‘° ÿb_º~Þ¿ß’Ô%™©Ð¾gNý‘qjÂ.Ï]îÀÏÂ)Ý&ürÝàÌqÙhNõ«ÌC‰îƒ ¿NÕ6×x’„ss ‘2·:EÄ£­gµeN¤Ûð‘UÏ­Fi”lŸ²°>²°‘Mç‰Ç7ƒü­ž:v¹/Õûg+èç‘0h±m•H xþ¥OŒVE¡›ýKľë†Ég'¢øCå»óJš-dÐ’_Æ\¤Š*Ûáü‡æ–´ð/í0*œR‘ ~ý´[ ìEìPxÞq’‡¢—E´KJ€2XÇÔ7]1GOlðËňã1$¬™<-•_¿àö5v¯U'4Ãó'Út*9$„áV|öŸ¡î kÌyh(¾bŒá…QÁ¡|¯ßróë)]k%xŒîQñ-XŒŠIb„÷G+ÆŠ’#xlÙ`²µ*eËE.2o._¼#žÝâ®k ‹¬s’f€}7 Þ1a¡Ïqº8P`7jÒ‹YD…¶ ¿P‘¹×8 ®Â2ŽÀZ!*·<’bCu9Ó@KØ VÚc´ug—á|§ñŒô¡î]Y\7Š”L­ÜÔn™©fsQóíìï;èýU ®˜"MÕJùy ö@<ûN vVk¯t&G†üФX¬ºù'áSÖGá¥1)=¼hæ;éõL+ŠÅ‡1¥0Y‹r-ú½ ?§WO#v€œ¢–DÙÜ$/!7d ¾dÙ–fT¨ {@âÚÆ.ü}v?BNopÓ°¨¤Uøgäg 'Œ ÕTø}†þåÉùêê‚ ë´ªe›>^ŠÔjR¾ƒåÌš+`<µÙÔ®¸W–aÓ`“Àç)0AIŠT¾7¨öÄ3H ›Z`Žx¾îŽzm9kÿµQ¥±§gûÏå -z® q¡ÇTjñ„Üëü§-F3_ÖÔ¬“Ñ’Á‰²T”ÊJ39ç)˜Y"M µßçÛ†¦f­¾†}„€Ùr«ñAbÉŽó(É7ØáñX"ƒ‡Æ(ÞÃðºWþ ÛÒÍnêõVIáÉ–`Ê‘V(E,Ù3øBT°_ÚNGkº/“*±sà2¾ÖУgù›D†ÙØk¼«—£ºŠƒvkúBºb¸0i§åmµbÈêcîFPeØJ)e“ÿâ¿YK¼Wÿ\p3£Ø3òÓ;ù3´XuúùÇF‡ú‹' Ö†9MgY;÷ï+¹\=WÉœ®R×®S\áÍ|M{iÙ»=ýˆ_Öôærñî»~~P£«|×á’O½oÉ#y•ߡڷBUeT<"Wïxuœ„Æäÿêz¸ÙG/Á±uÙ眚%©­K§vê¶ØFˆ8éµ£½9*ãI ¯ºÝÜÈú»JódS Ý]:ñ“~†5äŽÀrgARp5>Ðl"øÅºY™á$ëæÅ2`Ж•r\e§G´mlÉÆó™›3 óó{­›y‘o•ý¶G úÕ®ìY0÷ KÌ%OH.ŒÑ³¯›1cÛð›lŸj™+í" žDù} i÷ÍÊ͹-ÈKûßé žË=.êO·HÈÜò²W@¹ž´AîJ99ž •²š mh¡Xº~ èYÛí½ú>uþsUË ùˆ@ôæ–'.fÙ”F¹b $ä‚òþ„¾<žz»Õ¨¼h¸Õb{‚[gö‹ë¬Ê6·L"NJŸªL™‘&Ù®»ùpR£B°Î6¸Gžã`p¡'¤Uê[»2»ì—r©.“_ Â.²/Ñm4µ‰žx÷6­Úï/_µy~œôMõg3w^5Øø/»ðßºÞ ‚ãú@~ýI„1¿qXŸ9 ¿ÌwƘë9õdhtQ€Z2„©Sý#ÙpºcL,·°Ç·ê§!Þû¯}Ë+Y£,T_«‘šƒaÁ§ÂÈ=ß~¤ýsF(˜Œ=»pçØt&;šÞªm´Ë¼®£RFP£ø›¸N‰èe§(† Ÿ Îe ù†õ¥ä=†©ŸÏÖ:‡ËZÝFÛôuŸ?Ñ$bÌ¿(l•Ê›…Ò®´w¬‡äÚ“ÀÅ,}Qƒk÷šº6?67Úw­ÏŸÊàëEÓ|ô\k.ÿ: þHÓ>d~ûÆ& É¢×ÏV*™9þ9ká*S¿{ÒQh_—®vzí÷þ®81q’“ÿ'õ@Ñu†¤]|.xki¥'É‘·h˜2#‹Ë‹\ÿà¯ç½’€'kn)Í_‰f…eÙSÛo/O´hK%šb?¿¤"1owMö’ÐH¯¨p~èZÖ"¬†Å?„:·ZA$ ˜^:”~O[±ÑÙÒ‹ºŒúñ&U¾`ŒÃ­NWU åé v•lÚÛ/gY`”·?ïzüűLÕ%dçéh01¾J¼mê36—9Ö÷Bß¾³ˆîGúúð MøÕ+D´ÌEð=ë53+ïPnQߊšOÃÂpW®=‚ÿmáóð›ßpóT]TzÎ'­µUÉwꋈSäÖ€êÐÐ!‚ö xzab²¢//T$ÉL»Ìí éÕü¦âwº¸/wú³I¸¼p]>ÇÊQݾ DI×YŽ7¥þ—ÉtÊ%Ö!c^ÒæX"Ök"•1žr+c”ÓòféFþ‘…·³l'õõÀ½šèv~êíó¼î½›œvûdƒ‚Iq^d:yŠRJ4˲HÝZy¥n©+ÉÙñ_“D]ª<§‚‹âçXòo0*šÝkLµ|_©Û,65æ¡¿³™µˆ‹6YÄ­0,~S§ÖWš¢' µs÷}¡CˆÐ–oØy÷«úA !F ØàÕ3{{ÁÚ>­ ߸èrúúªµÅn‡%îgåÑ ¡–ëE©™Ø0"!ˆ¤6Ì!… K”r°zËÿÌ3¬nð>Ì?WÂM#Åä‹9Ó K⽈{Ϊ¶ì5p9ìº+žm1¶Tz£¸Q:B-Á…ô¬VœýèN]uaŽ9Šá8˳ijEZÜR½Šaã8ˆPœÝîlHß"˜/!Á·CRé£4¾_þ¸оòrö ò-ì“«WA‹,æ 0+Ÿ³mÿÒ#Äz7¡‚ÀÒ÷'a^ç›iÓbÒ³t¶îê7LÂJü+L“ŸËØÏH>У.VÌSYBN¯‘U]SU¯8cÒn=t2D>ïà®êC'RÔ×ãã³áÓŸ³”BêuV×ùÔº5yð!ƒ–WLhoÉ7káNåÛV…UعÃ¿½‹)Ï%éïËþf~¨zÔ¾¶«o\¦Ñ ½BUGCˆv‡þzH´ª.OìTÙ«åUÌWF唯+d*%‚gÈè OoxÇá¥;js…4ö™-ÆK3(C³°¦Q¬²§5^%T.A܇ٷúˆõmrzLìœeqRR‘³«šðTkWc˜¾N|UL.aA/sHøÓv*˜Þ% 9ŸRËþ¶ß>„…þáÎÑØÏÿÂAÒåAoÓ÷©0ËGËc"{Xn§¤q5o;¯Q_½ëŠ;§˜ŸTíJªJÅòÊ:_"ïì‹^48ÊL¶*q‰Ò…ôq«°dªVEšxÉ]VÇæCÛ¡öUh›5ºušÑ ˆ'ï­H “Ï0ÁùI< ˆñÆ–e@ʧM‹·ctýÚ5µ¿°è]ô|'Ò$ɪd·½?°K7öÁBS„®±?Ì2ÏçõõxTï²ü‰”>Š´*b‹°:b»|^8Æà,[º-)Pä 5š _ÒêüóÅYÃÜØÔ-ÒÌr/t*^”ꎠUs½¡R´"—F'´Ð [tS:¸ö7š±ïßJXÒjÎЪD´€ÜSÇx9Úm¯¿È–4(ÜQ¨‚š£ÚWÀ>H7ÝxvÊ|¶c§ëÌɧXõšÈŒµæ!ÞÝ>Ä”ï® ;\8ÇðŸ´ès“¾ÿ„˜¢:‘Ó9–Ú€¡ëš>¿€‚>e´ÅÒ‡§¢Æ ÞôÎwÐ=$uê 2bf‚Mܱ [™ÉÝí ,Ù%ËŠx-tʼn;ߢávé&'õ‡¯½Kï™òÑ¥&¯ÏµƒÛlÌZÒ«×Ø;Î7uO]ÎüÔ?"Ž´S¬âž¢o×±ªg½aÌkGí¸‰ís›qzl<~Ùžx&"o¼¯ç÷Íík~þÞWy@1¿jwñØüÎæÝzpúZˆ«55“r yr·ø%ê»e!Í|¹H§ú›³ÑRDå°NMö†Š Xóqa[ƒÏï§çªŒB à<^ͱçjêlS⮂¹D(œÜ>"9áj<7ŸÝVt…i¸Y¦BP7Ž“L&rWˆ®…¸ ÓD„x¤(ùjãÏzœvG€>3ÛcV‚+Q[ü)ÙzýkD'ú¨hr§(:¾5a&¦ïAfã ñ£­âHy„ƒ>øñI0-“Fl¢´¾VOWK£]×'Ñ9B¸—îTJ ±î‡öOf©Íµd%J¼ {ÕÜz¶#ÔvC¸É­˜ŸêA·âp|6×wþæ’¼ïmUØ3HÈ% ÆDl´‚ëIfÊ&H<•„ËrìŠÃ_h’ÑK­zß/$ìóGS=1r•õÁðDë?ãàßtÕ%!«¦Òn_»ºª ðY2ú‚ 7MËÕÈð™qºÙÉúÆôëõ©v…Í“À›™¯Æ.bÌ5Z¡w¸>6˜ +Šç–»7äZçÞ[Ô—¯ô‰ÊÀ¤ûk{éiæUŪÀÓRÔZlê”Cn6F(-sª7p‹˜øN1­f/à¸wϬ`¢üì©Ù=òµKÜVÈ«¿w],…ðjù¯T30„\'\i@¤¬Ö·q"[@ R÷5²«[jï%+KÝ­dggVßܰˆÊl’ÇÄT´‹Ö:çÝž^·üàNtWs+y:»y–¬ėבnÂ3u|íq1ÎCæ¼ãŒC™)¡Ek¡B½¸0yOÂÛì¸)¦‡WFÞ$Ìgó×¾w"’­QÇx—äõ°{l|-¼Î²ø%Æ*2Äﺒ¡ §‰Ãe˜È,jÏÙÀ¦î>~‚ʆ©¥úø^¼­ ú®3U½Š­ì(ô@Hˆþ‘,¥¢ÅhþjHµÄ: Å1"au4Ô+÷’Ú«Pi’°[…|¬†Ž)E)#2¿n´§úT¡Né)Ô*T–é᜷rœ!¥Ï÷r—V}Ú O½…”’Nˆ€ž„Ù+Ã=†tÆeŸÜçUûö×u©·R  ‚º<î±CϦ1 ©÷èdlñWÀ¯”/ËÕ-«;Ï]ßS²m=̺]¿CÊ-¼ì¯³?7^uóf~4æçÀZRcÝþzUØÅGŒlYÁ—ßðÇ RÉk[ÔÝ+qjU±æºRý"óvÅÿúÅØDa!]Øš^ô|é ³Ä2;²-T¢r›#¤>0¦Ÿnz¡xhW´õš=boºYV%µ5„y9¬‘þ&ž£¸ñE‰‘û³ÂÔäbJoçâ™i1µdþ¬öÄW1oöU—t¯¬8ßÝF"#ìHè¹cÛmóÚÀj|å·Â/HMyhë‹vqxʨ Õ¿z›Äéõ•íÜù€ü?YO7<Ý]æ_¬»¥Ö ð,_:&ô«ûÜ* pñF´~V0Oê$>L³ƒOýÄ%ðÈãÏfÁFШnëÅ{)_ÝÆ™%d¬î _¦)¼îôGL6”¨y*½ÌHŸÂo¿¹p©g ’æ}‹Ê³¹×fþNj¾NÖVmŒcßóŠ}ðEG°)]ˆÿƒ#J Áq…ê7º­S °ì•šOfæ?ýc_K/©Í¥¾0z'lÿ1ÓlÞíÏ(Ñ!‚X¤ft˜EöÎ Ì‘1¡?ðM{ê°8œƒÿÒýt¦T§Æ–6Sô‘~õ@íª(¤¾ÜÐ1‰§IR4 áPÐr§­“šó—€,tm ‰²àòׯƒë†‘×Ó×ÕZ Ó^ÑUóqçl¤»Ë¬Õk“S¿·s~`üqõ d7]ë~íd~úš§_Û‡Kuÿô§b©A0•™9µ–>¬!8"¤½t®3tþÊ­‰½«”N¸ñY?x‹Ô[™ŸDÉ‹–uZkIyh%hÌî[0A[›«^´/%S¤1UB*Ì<ýҘλZd¥5 7Œ-/ 0å?ÓÅÿ‚ðA àN$áO‡3²„”%@=AgHj)Åd{X6~)F€™iåá7=£ÈÞŽI ˆtGÊÖ:>œÍëº XùmWeiÇF( µµØÑlÙ•˜’°šOÅu¹¨úÔàÙš:’tw_Àv/Sš7þÌjÆ‹)|Õi6ƒðÅYÛåÝÐý׌ Ê0¾ÕˆüI@µ8˧òwg021©Í[y£0ˆÉ’®‡í Ýs¡®K—8œ0Þ)väWãö…i–J°+™~wý \‹Ak‡ë–œvcÍ‘qÎoâÏVhÌsnÄr[ŽMÆ”$‘S™ò7Ï‹†DÅF5Ê}]Ónn—ó§ÕÍ®D¼/—ᅥ¹Bj :é·°×r$IÝ-ÏΤ٠õ’éƒK»· ±­j‰°*¢Røêt2Œ€×,Ô}yýœ ±8´ÁÒ_Xùj½åT¼Ù>û© ~êP%].gRMóáGõÁ|t¶i€FkºŠà~D©'ëì8EµûVƒd}¨©’%,,qBÞ>`|nþi ºV!R|o>bî $Uû!²-ÿ#Š#2ö˜0ÜH`CH6–Ë]R' ¤û£ØÜ3çw ì©É4ºÙ¾hl/ÃïˆpM×cFã½™”Žak·­¹©|xÍ?ÀNðE˸nh;ðŽ)ÐåeD¶žF{>J8TF!öS-+±jºE)Z9?Ù»ÿÈ ©=X÷ÏËŠ«Ñ ')ZÖ³.­Z,|ΠýÔPK´z•,eÐz,,Wb¤0LSñLüÊÛ*MÄ;Õ,…ÐæQO<*’,^ÍÊ"|½ßl]{:¿¼ái&Ø\~2‹·ë:¨åèÌ$:/ÁKx‚@Ô@³Å:Æí¾Vö²+°è³ ûÉæ}žH¾Š©õ¾äâ’y C£ïP©ˆü”g›üi½GÐ_g5¢¾ªƒ…‡.k¤ï½f¶çi´XRûÈËýYZL Ûn·Ï7Ýø8×Cê ½> û2tè”æ‡P,9þ·oÅ5eÙo5·Å­GùÒܤŸ`bZ¿øx“ÃÒEQÇ8¢è„8ñ Zg¤¯½¬üŽˆqíÀÙg¾@äeóJLòäòŠd…f'O\'¦kËnd¬þ-|J#êò×TÝrÉ×ùÚ™œºÐ…3\ /\ƒÐªÏ2§_àq;袀h¾/^Á”„Pr½–Q«ä¸¤Ê3]Ù’elEXs¾™7Úï0Ö›B‡$ˆå-~9eôÞxÚc FÝñ_‚µ€Cèî³ ð&3ªPŽpQ׉°æd15c¥ ¼ož¦, $()‘h†bLìB§ú¯$õ¥×ö3;#y{\D’Åm ")‹ú}–R-­Úz ºKkAžâ·U¢ä¾#7NšEJtç÷Þ{žB`ô/âfU}kUùÓ3øGJÒ_}d]¨ mâ±;ÕŸÄl†èúD¥1Xs}û½_ìKôݲ;æ‰î¡B`÷•·d¦¨]¸÷4³€ŒÀó@?2Ú“vD,2žô–`&3ŽX#;T‚þy¼ð³‰ïxef´ce0˜]on‘Ù>–Ý«õ°ö˜®¢5 ‡–€k-Khá;ÉÏrdl¸½}w Ýlí3=q¾""°hÝ“¤3}³™²ßmÏz ԇ׀â4íîµq*7œvµÞ&S|IgYºj$ÞÏOuÅß>; DkÜRÑ Àr»ÛxÕóirJIÓwˆ=kš:san)úª)• Chî·ûì=60͇ØßÞÉk¹jN‡u³0 ‡»<€Í\©C‡¾LdDÉþ窢çXÑkß“)Ô.¹F”¿1mr–Ѭ¹ƒ…øâm„2ž¦…´cŒTyU/ºmÍ 0˜¶ zê>¢6î£_(«èηN ºHvØWãV{å?èò­e ð ƒYù«rž«“ÃT­uòôŠ-ÂúžÞ¬‡±¹¬ȹOù•³÷=×VTtz‚Ý·ý±ìÜÏ-ìàP``…aüs*I„õ}íæ²Ökгo’Ê(ÚØÑƒAÆÚBéû$œÛOíË«›È—ð!ëåù”†è‚ÚdBÂôqÔG؇üÓH™~g¢+ó3©Ïå?¾‡¡t”ørÖ%^¿C_ÚNBòÇçÏeÊ2}r4#®Ê°ô„5[9'Ή|=Âí¡á[‡M§éãçSÁè-R.݈à‹/œj×­ EN°¯ÐBܳ©ˆÍ(l>†ƒÏÉ*!¢¶Î<­åb |ÿŽ=êÙª*ùˆ û`NêC™f§¾]{š•>fkÜGÛˆªü<—8X:œý­C‚›…Sù”ÀXdûù÷wI}(oÞû.àÐŽ‚ì:Ð6u†‚HÚÆr¨”ê$ߺ*á>.ÕBýRêÌ—%¯­ÀðÀ5B‡­x®cl“äŲuR{øQüÞ/I$^sŽ5ª˜£´ Oʼ¬Úglm±ø'fÒö2!mäýé’'‹ÜKg:ŠÜg·ÒJÑIõøöŠ?oa{®]‰ ךkÂrxØqoÁtc $$o¬Ü'ÚÉã3/޳ìG=£^ÿº¨”É·ø’…{ßMÉMÑ=Tðe^¨¶®‡0¦Ä` Sˆ-⓼=!°ª>-m|§$×äqb€¢Àœ™Ñ½ÞÀMÓAÝpùÙÚ¬¼¯Mçd,0@ëžðAò»<=N_T¬ŸÈæ F€ä‘ZþDs‰WU;Â_¶ƒ.ðåsPÂøhµ@Ä÷K~Ò*¶oŸÍo#¤$oÃdüŒ™ç—pª'G©‘ƒWW½WÞöÖqëŠ>‡ä'6V~\G¢„_ÔÕš3þ¥>TZÙºîå¯|¨qáÓþ˜>§¯°Q_Àᥠ¦äÙŽÍÞLUêY¼d6ÁF¢¢¢LÍ-æQLíñô68B)âT­@Í·3S±ÓŸˆ 6œ[´hÕôåÑzÎÿÊHHó=²K_2ÑÆÆ¸ŒÝšxíþÿ.å~Ñ}D/fQÂò#MæŒÀ×Uf}*¶z«B ÛN®ñ'AøŒ[¦Ž=j…SÝU¤ ƒíئlL´.áîsÀˆÔÍúwbgüΗï<ØD—†Üˆ‰J½¦Ã®nü¨K:Zò7¥i,R¨óxâ$•a‚Ä/ϹF˜›À“׎FyäžéãuH.#±mð j\›™H—E=PÍEbFÃØP–úm®A/2d °lãþ*5cK»½=a7Xì9©&¦õ•[Ý6¢¨«Yü2²¡)|Öñé>™¿„׉±§CõyD÷¼€2a”Q¡×´…&kÛ/¬¡ùÉ-Dï }oHp­Ðë1²9AÖ° û¯O)è9±^U…zùjn!d6ÓïwØl”ÂÊèÞ „cu[øöÅÍÍ-®ëÀµ2*#÷µQ›ì¾þâ®`(É[¥KìþîÊh50<Ó½€ÄÊv9‰½=ä@íq-W¡Ç=6Åhb5¬ƒÐ46µEX‹†Ú'l~"õVósc¿ê.h©Œé‹î-® ú9uîBÂÁÈÐ'[XÌ*múè~¦‹u‹Œ×ÊaŸúüµ½÷V¾°§lvó[˜ãœöuG€íNK¡Dª÷çP;nîþí3Ìs9zû•WPãOQOaSòœ$ïI•*[˜R…·®3 —]`ÃEÑ×OÃö±Æt}÷Y`Œn´-t ž©SJÉ ¼“jã6ÏǾòzÛCa[nN ŸËö“Í´´…Æ”&ˆn‰{E¤¾Mkééž×ÆT¯9Kj‰Î»Î0¼Ç >Ì”h£þqIië ÑË-B'²érbLc΢~a~ý¸©oŽ9ä´¶{ha"²‘¤dÔhtûëwÃѼʕ?2 ÌŸ.˽üô}Y;Àh¨Ë½E˜[PÅ4éâ“™ËÇ~Ö¿ƒÃµîþP7ë)n˜ƒaååÇÃs #ÝCýß~¾–cÈÆî#ÜårÆÞ¨}œ5×:~ÓïKv½­Lbºa_Õ™20¨’Ä}–LÈ@ld'¦PÝ<ÛBg‚ß:0SÝÒ¼—¸¿¯Û¬ÇåĨçuë³Á¬Ø4Íå§­©?©ûJó®ìy«eúǹ|fmjw=›t{ÀH$÷9feì :ÅÕ=>YXþ„‡WÂÄ«7­êt7fżnA8û[Y°ö'~/±!’É’`s5s3i+ô ˆ$¥1©A`Mí>—e~ÊDs´–nÔk¶?iï5'R±«çwÅ8ÖdÉw }/0Zj¡UôEcö¬Ò¯ÐS—³?Ók¾.õÜß™4+ËÖø!6S[-îøNRþËFGòUn"‘ÖÔ|A&pRT!<‚ø€4#¨Š­Tª~4C}Ÿ—ï4&H:M?FÀôYòKm«Mk»Ö,Ò=¡w¸ˆÛ\gL•ÛÝ /Å.´í°Z¼ö³&ufy3”çŒ\þòã'o‰RcŒ5åžWî þjÎ+èÞcš«Ö·¨qâ4#Ñ.L2ÈœNz·cÕZ˜þ¥|Ö?O«Ò³Áó£;1ïhÈÛW¢ßò 9Ä ÇRWg0Xvv yûœ?)i<]ÊØ°x .î&ÆôçÁœšQü"¡OTwÁ¶ˆ§¶ÛTɘ.P¾0bSS ë·5EXœyåé܇V½´‘˜|,á×Jï=ÊŠb£,HJÊ 5>¬}¥WWz¿ÕÿY›y™$²Ÿöñ[e¸ûƒtíŽB¤¸XSû±ßã/ÔÔJw8êú¼Æo'Ë+>‹\êÇ0æÉXL¨ù¬ÙzÛÉ12’pQÁåç|Å%«s³ã‰’ÜpFfˆ«™rÔªå[“}ÃßéìDѦ0/“ Ö7Á'}.”° ±ýgéÔgöIX;ÑV·B39oÙ©‡4ñéØ9ZÒÅÕ/I8ª»}ú|äŠXrlEt#ªË`"…*^©õß¹Xî½ΖÄ<ô¢_j ”ˆ:F|#ÞÏÑ-3ƒF[‹öO:{—¿6ÊŠq?Á¡À‹ŒBØYv°kð&ÄòÃÝ Ïó=MÖá䮦jaën­ÎøAŠmY¥ìó^r榓 êHÛ/ÈZÓ·oYPz·5ðÚ8¹HñZî–¥¨jÏa>IEÃð¯/g,[›ø6~ü±ƒþ]v@3v¿X6p• ÂõÓÀ>#N/æâŽ˜úKŽ Êc=ž~®þëyë"rÓó±#-E8Jxú+ ysƒ£Dê‰:1@²Â2çî@Ò¸ÌÆ‰#HX;ýÜìJLTóݪÌ[Y/™ÊïšïÞne¤]åI̯“ŽÕïC bm™NÙ‚æïîQ½\ U§>9: 9áôÉVÈ}ŠÒ©È røf½Er͘ÖM9T#øO¢¢µ1l¸J”Rñ+¦àu¦±Â&ú†Êzb‘“ï>«`/ŒêLPo”;pŠgP|¾]©•l‚ZDµŒÝN.ðÑŠûQûÒô†=Ð;i)|J­ùEnR·©èH±(²–kÆÚ¾ßä;œwµŒ¥<>1øGdŽ»Ô‰~7‘ÂnóÉpN%CaGk½ªÈÝÃ,0„õeR”‡²ÄíI½Bõ‘çÙ^æâ£0”w¯=¸Œ,fÀk"DJô}BÇwMÖ§®ã$Ű–œvQ3ç>ó®0”/aRÚåô»fOûŤU‰6Bp ½Lâu)*w”ņh”-ûßü %;Nîtíaäû©F±j¶ü Œyv—A„S¢ VLs«7íìclòÝeNºá¶ȶh™<×h»Ÿw¨ ¯—R ž¦Ï Owñ»<»š1£¬(¸©¦Åå crù?}Ï^„ëcWGž·gýêy#}ócºü£WÎŶ\…>̱“÷8V*÷hùÁøèLo W¤`Õ=ª¶Y¬Pî%œX© 'ÏjÓª¹¿›`Ê_q¯ÙŠ2±¥D}8Šñ,ºÒÍYÎWHyÀšØ›3ÞÃiœ!3r.…µíXq{“úØcá@ÔX†AJæÔ‡;Üc¸Õ¿‰å<»þPqª(yÊÁ¡M89‰q%’uJÔéPèõãNÝ-Í ÕBJe4FPØý2h tŒy®ˆŠWJ&mb'®¦xïb•¿"Ý«‹^Ëüñ =GÉKBV*J‘“ìXÂmTH{3ý„Ö½:‡ÆöÛ¶§kÁŽ•¹›‰pƒ/E öWW̬.;¨‡ŽKQ>÷+ÎÔÂï7Î%;u!$† w!s1aÈÀ£ŸÎÊ‘íP»!õ`/[žFÕ`îU(Ê3E†d M’p®nþß:%Tßß mȘ®e,WJ½³‰p`áE…1-wß¡áÃ;®žh“9›¨tAÿóáCÈ)W}v‹m»l$û\¾€õmLçe¢”6‹ ú蓇Hí-Ö¹” •ØR”hÓFyNÞe¹5y~n^C/Ý×3©‹q¹FHzs5AŒÍCEãXQùQ7‰!Âd=%+Ÿ¬µuJhãÍðbÑÔ ˜|pö’ úgé…öÐ÷9Øá¹ \GplÕMÛØoÊ›Q8C e¼MBr—š·¢ãÄVþ³ úˆÎ&¡¯ÿÑU=ž9ëQ6Rx¦dµ7HúHehŸ ÈËÖJ ¢%Fé³Eówö%c*äÛLÄ!q³T:‰›êõ:+°°0i³Hû¹äDš*~ÉýÙß•ËûK#Ž÷ε}êPÎi/‘bÏg)âsö˜m¤SC®c-è'R“\ZôÈ>:êùy˜Jf½9ÓEØ«‰6ûç¿"ô¨£lôc¨$aŸ[jÓÏÛébÕç*°Ϙ¢©&q=þ¶­Zõ^[á0~€m‚pßÇ…àé .Ũ^šEBx%¾§{ÐÞáçEdyÍ8±:l¨Á}ÇÎR¤^çðr©ýùWªíŒhh3#Òp©'椭v=ô^M,+}gìϧ|,áÒœoz™Diqø-Ê‹=Ê£«sU9ÏŸ •E§½vhûÁF$g?´K­p‰àü–'p}1W.š†¸°v×ÓÅéý_µzC½º–fT>³­]ºZ44AËV‡Žé™¬ÌÎþ¼Ô6§Îµziú4gŠØ‰½ß å“Kkd÷>ÓÜøÅÔ\Ö _ÉkÑlÇ#[¦oÂßO½:Št=cú‡GB¸gK¯)~ðPÿ³i}«çÉÃÒèÂd‚³ºú¼÷WÞZØ«Ï>Åý¾¬D:”‹¶<ذ*Kßß3¡–*­ÅÀC˜¾8É-yÒYßzâ®ê¼“—ú¾Óΰ‚×WûVoõé•cO€Œþç±–ûŽ’+g›gè`±&ä³–m_Ää½¢ÕëMsÑêØûCþ—l²É]Ím¨ê÷v¸:åõ2¾È6&ž#Û^Bgbx4HåÌà\ü-BÄX%ÝÐ( nm ©¾Ìn.7SЧoçÊ-5¼wžf/ã‹Fá#Ê’É*ð~àÆý±%ð¨oßè³C£CÆ!®ñHŒ•ZM 6fÐ>™©=¨"Ñ]v•ªXòoÔ ÎcÛÃ6õ©ª4H‹›ršóØ –¯ŽÀ’â¡  éúõâÆZö·|h+%móÓY¥éÎ}gÏ™AÑv#«¼Í ž@Ûv]ãjy¨ƒy*ù}ñ}¨ó|í"VÛ—ýè +;! áíÑZ2Øqñ4}û£¬’zmcMš «Ã§QYöÛ+5׊ªŽ@°ÝáÍ!êPºdËv ×ÅZ¬9t×Ô1ÆÏ-bnÓžå=þý씺Aœ7\®$u…˜‚ÚˆªbÐ}éCÿ9îù!,¦êüxþã8åݳà¬3öÆmä£~bÜ÷"+ ¨-Âa™ ,@”°‰`Šær3lyIÍÒɺàBüþ#€6ó]¬è¢Ó,½þÚॿÜ4N®ÕŒŸãm‚Ó ±°J„:°‹ÀçÁìȺ¾ ‹LJõtU´‘ƒø· ͨ·ž2-¡”ê¥ýÛ{HœyéVìú¬PÏÞJD€@€y4o»r«k#gT¸õ ¢ûîs*â­ÿ1Á­(X‘i>`³ Òz:Y”[¹×†„õÑ{‘§z1ùLú“ní—%üêD§_êá°…q<¿iò>À^,‘éB/ly™m™Õ–%߀zªÓ!wٲ熨 E‘ŠPC‰Æ¬òñlŸî)Ì„–@º“”›DªÔ2®Ê¨(Mc´Î •ê-ILuBV‹LK5.-O©Hß«ðRmmHÓŽýωm‹ ÕYCùÒ!PV K f ªÈŽf&e®e*mX.% ý^æ»ðr±.òì¾QVQX}ödKfæàc>ƀά™4egq^—uצ„W`Š óiÒlêJAü@…;´s¹0ö˜ú3Ü1(¡}ŽTº³Ñw~ƒß„ 5mýL÷à$RüÈ­‘c¶=Ió«oá×’[û© ê?ÏÚ`Íø¾Œ5sÞåRüOlf »Ru„WqÊÖR›.èûò{^pRÚÛ\=Gô¡Ÿ*.Ìs$ÀjŠ‚»æ¸3{¤|> ZèsƦ÷ÙFƺ8Õ!98ð ^nd6JœF,îglØê‚¾³K¶b‹Ô ©ÀðvXÔ‹9ÌùI¡ã¢‹§õ1#OŠ_ˆÔ)Lãks¤Æ¨¸>v¡ÍjgoW£Á¯/nj®3“r‚$éø›D—ržùƒÅæÈ–é+˜¶5¸ðõð–¶ÜD–S¨$^£aÝpªøHÁâŸJÕÞäº÷{ªKÛË®ûOhÛ¤xFë’1Žß&;'мæOóïnl^*ˆcK•øyÂ,O< 7•ÛHõêÇÑãt¢×eìß/ %ÐEk„ЍØÇß•§.LÓǽ?†¾!ý]£éü‹xõ´à}Bþ¡×GÝŠ·Å¦ž›wÛ »ÜpüÈäåý'0êRìÙ·Ze6`CH–¿¾ìx…ý\zÚR|£ç«<ìÇõ½Í÷±>%EýpŽHµ—©•0J˜WNàÇ…ˆdÝh†ÞªA5~??e? ½‘Ë~+'PaŸb—¾¨* ¥ÉÄŸ©Báæ~nþ¾{yû]ÆüÜéÖÕEÜ]˪ ›&Ÿ ¿&(øSìß8íñ™ËL9 J5däæ@)ÓpÆg`–*›ø|øëHÇãkë×LjˆWÑ[¸h˜5加v3&½ÃÔïRè‹éwó™ÐvšCf»6¾!,9XbËptû=°‘ ‰ˆ¨hUg«ên,òè°|ÕHì´¹œ'5£b£^.ZòFÃØ˜Ü}s–ïBà·þ¢E’EØhv³(îŸO£êZëÄ(Šó)nYˆ\ÿÖ^Á/éÐ#w.+C‘ç³´A ù§9Kn‚:±Ô ²ÊeȈo#q™6Ã*)š¬ýÝ‹>l½¥J•Àmžƒ¡Ãu±òmÈÞe|êŽúûl®AÄI­8¶/óŸÐ2õ'¤ÞNc-Ô 2©Tã=^’‰M©å×´š=ÛáNÂçx>`Ë%¯…vùÙkãøÞûA÷y©åCãþh‘üZÁû·ö3øSlò±ŠHák/ãNˆ£xâ»þoÛ»N©…B÷ƒé%8Gªbõü/scl‡¶éóĉìSñ@”[#oÇöŠ•'Plæíù  wã7qô|j–f¢òֺ̈́ḌC.†ôK×Êx(˜P|b›–'@3´p "ÐRKÛÁbȱ¬Ã®óyý޼¼l¥ àmª{1 §·zÊ[ãk’röï/6é<®¨ÖŸRÔ—Ñ;ài7Ç“ÏåÍHF@5}@E/"0×Dë¹Ñ>ú¦¿<% ñ ±ÉÈ9ÊS¥Vb☚2=¤úqö\'Âq¡ÑePñîЧ.ÜÖÕcó€•:Ä3^¤.NHO„)¡óˆ£q],·p¶FjâkÉ{&ÔÏ8mÑ7Ïó›ìnî·µŠ™­¨op¢’YÁw­yãáá4"upú'ö,ÿÑ´¹(Šžüfâ$øT—S¸^>v 1Uå&zõ¶ê;A7'\Ö'ùqÝä/m{¸Q7ðß]÷V@µA³6¿½à‰»c§xåo¹^xxFjªðë&Úñp)SÓBOÖyͱLÃQí€!µ˜ˆhù Y´îÇ_pm2½¸žHkD€µ§­îû™„É: ×NÏZ{jëSCˆüãÒßßîZ­hdQ ºæZV>+ˆz%L ¶\NiŸ‘š 96ßõz{¬Ò ®Â*‡‘¡£É/´&41ñ3E7ÅñkZ»Þµø„êV¤—8›’# ¨öÅP>Ë}ªa-PTº—.Ñ— iC‹BoƸÌãšF„c]f/g 7ÚÜš— êLÊ (Ë Z╾XrýþtªÉ6’xoR@ý!<©)Hé^5 ó\ÃÈ7¤4Þ(¹¯¨ójWÇ9öNغ8)ñ¯7Ï1‚` ž Zuœƒ¿‹œw˜ú‡¡íJ„ºO‘²+Yž§Ìç!!þ"ó®_ ’ ÔÓD£e.ĪÛïY‘6»”ÙHßñ—³É‘ x&~šªœ‚D+­8$š•ayœá<«½o¢è”ó««rcò$ xÊ­›CY¿E5N¬3AÉ÷¸.RÌC÷è?ÆÊil°;Ä]ÓBÚ ,p³Dh iPI"Åv˜Aˆ ~«ÿÞØ,²ÄîfÓ„r×j‚­)Ž»Ð?„±pì¿ oùR=Vêñ ÒœõÈ <ùC~ðii^cL@"æq†ÑWØx]e®Ä¦)õÊe}šåZÐ-}Û¿HÀ{‰ï“ùþc—ƒ¨¯ÌþÐxÅAÌ¥v»uqäÿì÷]§±es6·© €ÐôD,ÈDø·¹~6±·W1zÜ;«‹! …@Ô£ ´u‘}x&ñé 8Ã&Wš%%KöÜ;›dw¸j— Õêº~M8¡VÆ®8õÁ¢…“¦-uíˆhæH—DZÅ݃&‚™kAÀƒä×5ž¨#õä_˜10ì§|…ņç.8n*×PpÇä5þË•Öu ñVBÄ[C3£Þ“ &S¿7F+¸‡|ÊpUÍcO,ÂÏ{L{2}#ø®ïòÑ%ðý!_Hp?¿í¤ùS:o$ XH_/¼jæ^PøÄ"a{âœÈDW˜I:ø*LµàÏs‘Øßà x@Î€Øæÿm}~a¦J£ÍÀº'†Š£Ë`Ïûwâ<Ïî±Ó'PïËcK'Éõ/Û‰“_†Ë+°g¹Åèæ‚@ü°ÐðìM ˜¡šÿޱQó>œÄæëGj³ëþáõ¡xã«MiæR@Ôy‡Xó”jü2.8«¹¶ò0ª#K›‹+.ˆ¢§Ý×œÝ ‚/û숳Vð oIDþ¶úCI¡€ÐH²yó|$k¶+¶~`°´v2wCÕ²%œ.ßçÚM Kõ ¿ß,»íàYÐ&¥·¦FéØ5òMÇåÐghÚ¹ Ñ¢x2Ĺhbš^Â1kÂäpéš (Ò95ò)³ó*Ð$¨98u_\3;‡ Æ%ÈÞ·È þŠ£#*\ÇC¼%w ‹Ÿ²Ž£[NO3Ú—ôq‚}”§Îà>i°–¤0" ¼/«glP¼¼³%hÃo´¥"½Înç9%d;6†ŒüAà‚“ ôƒ€c‘M˜Ì^)¿\j³ŸOR>J_,zަqš*ܸ"”îP”?Òkøk¹È.b9lwÓf³nt9½ú­Â‚UíÆÃ<ó¿Â2êÊœWNu~¿æz–1§ù¢ €P“•ÞÉ h@þqd»:÷§`Ïc»ÀŒBŒqD - ö¬c¼¦¨Â65\ܫݛ<¢jíI æ×á²^ó`;6Þ"Žò;ˆêÎ=i¶ÓPÜÅÇ3ïp-K極k f3ß18+ïUD,ÅögÒ©BìЫiÀõI¹˜ªº0§½‘Kú£Sk„rF3óƒ˜75ÕÐ/€>ººöq°,†È@„÷ïeWãÀ¡]Ä8„d µ}] ¹B‡ý·Ýv†WÍ3§XîlU°p¹þ»órzÙ#ÚSćIÖà%•Y’clµWø•­ÎIsj£ïãÊßÏ-œ%- fý¡Èr—M9º3D±UrC3â&Cؤ€{¸ŸwàñѾࣙàêoä¯`÷XÛ»£&s}ÿ Ñ LRkãg’Ì{E=k’¬×ËMð\+Ó>‰¿ég²B³T×%¬®,`ª›¦7³óãN»xrï0÷÷5ŠJ¬6)x6Ag}öYÛ‰¾ÍÎ…f¯®f·ú\æ´Ô}a«×«ýHÒPdò÷†Ç^de{a*Ì ÍùÀíi\*VºsX’l¬ûoA€o¬d§ãÕ·K\½E'Á¢éZ¹r.ü~¶ ZØ*f‡[d¸4°Ä}UÌQ35Y–½§´|=ãæÆï|i§àÆM¥(ºÞNй§ñkF P8D]B_J˜l]½÷ÿ"?­Î>{q×j!uÁ}% ÷»gI%÷ € Ä.²í߸µßw9+x¬Ý|á"{bÃcó+…ŒE^FÙÂ%êöq2ãiÃþj,yOOðÜb ….q´;áÃB]Xòr”š 9¸ÔÔx€SÜC)7ß"ÀÀ!¾È_ÁÀ“îÏ™¾‚«³#DÖµÕð„ ·qÖV2ѹٚéG•P§¿xµ–ÄY­Î‚}”È‹®iÅo~RàXAWx3LÙ[¤èm ‚·ÈÂ5ÃH¶"hÂAdƒñJÃxi°~²ƒìÐ,‚PG—¢µ‹b‹U«yAB‡ðÙY˜ëô½¬~‰Þ˜ æ5]Ó»ïŸ+ɦ¡FM»*;ÅÈi ­X2ÖC£Öœd &Av²é†ð~Œlà۰¹ýú›cBS~‚÷KÑT_'uŨ(ÑÕ#õ,ó}ÆôŸj Îc™¼Ú¾³ôq2swÌr|÷ÃôÙ'ü-‰Ïk½!¿šã•ÓS[]…Ø>÷c‰Vj(ù€è£Ê¦Oº×ö܇´Y}f™]¡$m®1.ÿ$l¨ÄOsôNVa"DÈ m°ã{²"ûNÿI;cwRwz¼&ÿgt œ¡$ió¤i æcIýòè§÷MQ@/qZèȇ†ÔrÚ¯†•ø'Ь—ó:½HÜÓCpP áïQa ´kþŸ&¡¥ce4, ùÚäâåÒ‘ š¿ºhöjrLòÖE ô‡ØJügôeAŸ]шôóò”i3ÕÄJôZ”Ÿ îDÒ\Y‰Eô|i¨U_ƒoáEdØœiv=b9Ž%2GlØê¿å–þáæ×ñw™ß¯u|*È·žÔ9,/ªlÔßWÂ9'à‰/^KjÞ¢C,h3dЗ ³åñÞ9Ãs?É.üõÓg)l=3)ð#\ÊÆ Þ!¸_Ø~BT ªƒ0Wà¢IáÍgjL1žþŒ3 ’;S„8o+¸0axB#§Ñ5'H9›Dð˹×ÌÝ6bVÝ Ä8yEíQ$ ;¿ÿóü¶K m[t4J)]TjѨœOp;ªŠ1 ÙTÎHhÙíÿ7m‘U‘HÏÌDQ}ìN1‚»r³®["ÐУí1‹|oò\¨xÂ\׃=VuI eÙŒY˜‚‚x°$@Ò¼»·ÂbüW*õÐÞGµ•¹ÂÄ$ñiŽCNódîçÿôÍ\,í:)X4.øƒžÅø<™TßçíÄZú ýö6˜pùÀ\Û~² ÄÕÂ(O?ßt(±qûËÞJ]õ³ âÃÎ •Ô°dåG£ïVFƨ|ã€Uy·Ÿ*n«KM Y¬¯Ò’Öª˜ª¶®’ÛKÕIÖ3“dŠ¥Û½?s‘J7z½œùDK§Î7 å¥o'@þŠè]6 å/,i Drv³w3PDBÒoC<“¨Ú_¶ÜñC(s‰ÉWÂw“ñ÷Ñ9PàÊ—(‘Õþh‡väIe£„yáÃIŒ1/BîãGèK$b–9IȆ%¯7x¿zU}q9èEXº*úGE—³&`SßíEë™}jI帾ýˆ­Wé5½œª5n¨¶gŠ3è‘&´&2ƒÀáw«0x·¿|¤`†ëiëj½º#û `0×)ÄÜòéL§ ÉVw#(È„"‘?Kp]brl…oŸX- þÕÇ{ÔoWáUíJĸ‡ØÁƒ,ìŠé´qý »URǦ'·&¶0° w»Ôd“ìEII”gùÇöd¿É#Céå±}›9ÙJƒëyUù„må%úr`¤+ŠKïõéno ägׄÛghmËÙ¬øéaû>÷rû÷´šÖ¤äÕ3e2Ç*^0.ã˜ü;zPùA3’wHegñ„‰ùäJO§1®á3Ý>ÕGƒS_¦-±CLDªaI±¸cجcs÷qÿv\ԩϲ_&.Œq«“æì:Ø =™Ø ž\Œ×1!9Ù¢—V®F㮿¶©iåòÐår‰‚Ug@jºc•ÊóŒŽ.zÉ}™X¯#õz’²7vo+qC¼*ˆ# s8i½Ë L4#eM'¼k;±S=7—H\Ršu’~¥Ëw@Ë™8³ši¯ÈÏNY+qùÀãqægÓ25·ÍÚë?Fô „¢Ðf!—Y¶³=ÃÞ²¶²!þˆü®Ú¸?!¸g¼¡?O|xzjê„‹”GÉxXIœ°ìlëu~æöçƒq:%zQ L!Ü[šàú4ΧŸ¬y’³#ÅÆ×xüÀê¢b±,(î)H¤(4£oô°_nŽAç VP]x‰3eö„åó]oð’FÿÈ¡~ùWÕ?þÜ[•§’|£¯Wó[Õh〷°°ôó švë$>?òÊú-¨EG¯ƒHó:&éó¸—Qc)‚yÒ/†QæÎ¥KбÁ=ŽÀV¡ó»O«\êå2SÓ¹•Oó$Êó›»ýAJnä&Œ,3˜½4ÊÈ»~ìqAÂ!ÈémºIëòÎ+@„Òûï4 A2wôðAAKëH›ã_.†tÖy7`»j× mÅCÚ¯Etþ› éÓZw6ßtî·5͘µ(#uÓóá:»ÞŒlù‡ Q¨éN«‘‹æÀáù¦ ‹; ä‹jñ#”´£F¦piþªWP¹ø0j/¶|3ž;çï üäáMèSH°l\BQ,.¥ÛHc8¶9uùõi¥jàUZΊ`(Å9a}=#¹ÅE‡¤¯Ç¦6d•zRªtäÓûn_M |Açùc¯é诟N¾ðm­=Ë DéŒ0ÖžñõÛ©2’u‘^WMt½ÐËúøN)œèV"W­‘…%yM|øLícåÜÔ†3M[Ú zöÛzré1ŸÊB¡¦æ0RŠTâEÎMn‚0*^%Ýì;C‘ùî=dÜs_Dø£‘³•íïKß éƒ<ÂÊ.¶Þ] òì ´ÅìZ øÀ9xÆ÷.s`ðx0ˆò¤U •f ”AZº¯ØvMòäaò«QQ ¢=zͶ¾ì+Å¿Þä…ã·uÿœÆ¬•»ô§Ö›(-·M¦'Ýî³sMMXÀ˜ÇÝ5Å~Ôápu˜Ð¤˜X´E÷`•¢ý͇Ÿ~æoJ‰âb,¥/°›+ Ò(†TQ?Ø­‚IذÿGñ6S¡÷®"–òl?£%YÉ2¢½©äÅØäÀ£„ÜOòNñp(î8çŽïtaL-/)ôc#¿”ÖWŸ»ÑdÜü$„6YPþzµñpêO—e}Ü8ÑT5›†¥=Þ‹ÙÅAð3jˆ¶”o»ªFÀØò*ƒΆ×·HXÇCè‰|[Ÿœ%QÄQ°´çݺ7«5õ† ŽãóÏVycQãžf£÷áH²¼ðz¾ˆÏÌÙ -Öø šóš5Ò`øçK•æ~°rt‚f÷Ÿ/ñ²œ{w †µáŽ4<¡‚Úï\é(§Jª´Añ™LŒ©Ðz.G iŸÄÂüe­¼ðîàXì[ì’Ë–µÊ)ZÑa8Y²¸®rp¡øáoó)î™ y -ì ‘Ñæ„°ëµ°Ïï›Ì×4xdØ>¦8¿’Üû|óãTI(®9¡†¿èŒ\,är½FÄ2á;;m±›¸E2nGH;å ¨AVP­0c‹XM‰¼òe¯ù¢'è2D>_KÉu JK}$?hsPYà_ÁA ¶@ô«¤#„½ËòÇôh;Ù~;ÕÀénnœÌd»jnó¦­ŸK=­/„ èu­‹ æžP^à!Óû\_”µO20ŒlÙµÔDÊó„»Í¾–|»èæT|»UÂÀC§y’ó] BõžT:ô¾ÕGį÷€Ù<§Ê±ŸáoT?‚‹Ç©hžDxzÙÆ›^ç;°Ó€4›žv|ô£ì­GMpj.ì/#{«UËSèBaT%’cî ¸Õ‚£ìëM|ã_Ùpw;¢”¡Þ(Á&Ûhdð@ª‹$ñE‚ª/åF]9O¼—{QŠ VÐJ ýõ¦9l =RšhHàCcÍ›¥˜2û6;_Üì†(‹>4ftÏ0K©K^·>5íc1)t“ãðØÐzþkáuµ}=¿ãþ • -16 ³nnÎôMîÈ£lÃX&äŠËc%}J[ 8]&óÝï–)•a ›«AýëH™4«vƒ€aË’*&2fìò DÌùš°<ÁåóÀÏ^%;­DÕŸ^’PÅ9¸ Z°äó%|&‰´]µò½frjTàVójXÜ oí`Vò´!|ι٤̙¢úÓ>„6^™˜õ½.ɉÌ| Ëîcñ¼qàíÛûQp?›UjRBÊ'¦nEBŠÂûɯ­ø¶oÑùihÊAŒÞÙ™ÇãR2¢kK+€dÞŠ¹(gmN|còg‡:^Ó‰×Qya±WD0JA=Ï qÓ®¦yìB)Øæ'˜ lõ›»ê½¨w¶Q,´º7ÐýíËà#ÖJYnEbµl»}ô>æ‰&{Âm‘.oLÁ‰y]yØÛ㟷ԽС®¯v0V°>èMï””…Zsó˜D1‰,äç9ÔÎ$d¾sÛfmxkÇ=b¯P iWhͺ¿xä^ß ‰’\ë¢Ã[ endstream endobj 183 0 obj << /Length1 1675 /Length2 10946 /Length3 0 /Length 12034 /Filter /FlateDecode >> stream xÚ·PØ.Œ»C$¸ î.Á]ƒÃƒÌàî H H‚»…àîÜÝ݃%8ÙÝ»»÷þÕ{5U3çkýút÷©š×”ª,âP3 âÂdeH*©óØÙ9YÙÙ9Ð^¿Ö»Øþ”¢½Ö99ƒ¡é%@¦.Ï2)S—g3%( ïjr€<@^vv;;ÿ ¡N)S7°@‰ …€œÑ^KB<ÀVÖ.ÏYþsЛ3€üü¼Ì¸ÄíAN`sS@ÉÔÅdÿœÑÜÔ 5ƒ\<ÿ+½µ‹‹ƒ›»»;«©½3+ÔÉJ„àv±¨ƒœANn Àïrʦö ? cE{ д;ÿ)Ö€Zº¸›:Ï;°9âüìà ±9žs4ä* ÈŸÆŠ0þºøw¸¿¼Cþp657‡Ú;˜B<Á+€%ØP‘Qduñpa˜B,~šÚ9CŸýMÝLÁv¦fÏ7Ȉ«LŸëû«:gs'°ƒ‹3«3Øîw…l¿Ã<_²4ÄBjo‚¸8£ýæ'v™?ߺ'Ûmµ…@Ý!Þž-Á Ëß%X¸:°iAÀŽ® 9©¿,žEhÿȬ@.nvvv^~Èò0·fû\ÓÓô‡ø[üÌß×Ûê°|.ä ¶=ÿ y;›º.N® _ï+þ¡ °¹ À d† ýýY ²ü?wÞ ìxËþ2®vvhé«ÿ?ZS{°ç_úçyuuyž}%èó@þ×Tôçº*,À®öÿ«•s1}Þqˆ•Ýß—v–{€,TÁ.æÖŽÊŸr­ß f†€T¡Îàß €ÈÎþ?ºç­2·}~4œŸçñèyiþ;¥4Äjñ{»8¸y¦NN¦žhÏ-~FÜoàóZ€<þ˜`+êòìx.Ï` uBûÝO^ۛߢ?'€MãoÄÏ `3ýñØÌÿF¿¹²Yü l Áç@Vÿ‚\6ëAnø|ùr?g…<×þ/ýslèßë™ô¿ÔÏ%8ü >çrú|ÎåüOðßä‚üË€Àæò/È`sûrŽ Í÷{4g¾·þ:GÌíŒ×J©&‡s1 ±>ü%Þð­·Ä~’<áœwQþò·yF¡|ŠLLæäeÖ}ŽÔr°ú{H}w¥ÛðBp;+BGò ûceq=±•Ê‹òfã÷ø.•œ¶ ²ý6K‰•–+íNK›dÒEþÉê'À /åÇJÌŒ÷‘] ÎìÌȽúÎjë&94¬c¼Â]]hµ¤£™¬s¥òËoÙRÊ£¿»o>bÂÉõ»üt~”¨ÌÈ"ÏÑ­|:¡cŒ|Þ¹„Qî„%G[œYÜv<©ÆW$¯—é"l¶k»¦­›mª_©lλã—‰\Ö}ßâ-R¿H~ë°·cŒmŒŽ||žƒ/v ‡|¼@pE9Ðxï<Ž;Jáê·<‡ÀΧ¢ä`òŽ›õ ¦a¬ùî“¿fË^_!u÷½oƒSr22!R+©ŸIÊ}èöìà#Û‡îÄ‰ÈøÒ\^x× ާ ·æ•ÑÀï~Ở.WC Tƒ;–”úéc¡¢¬‡u}}ù'ךöµ9v»o.Ò²†¤µÞ†èËU›¨]x2˜¬N.ßXY€ˆeä’ó´X¾Éû=‘¼÷¸´:æ SÐ=ùŠëݹà_Z}ý1%3d—÷€æ±fçü“Š˜Ò}I®¨Aê=‰"AÂfqL Š×ëL„™W Êò¿>šô|É›ôÕáiÈéÉ"G‰V%ÁáQ>ˆJ¥Šä5inYþè:£Œ–«q¢+öƒ<ÕÃüè!·”ƨÂF•Ô^椱 ê~zÙ ˆÉž½w Î–`Êñ[ h¾¿yA÷­²ª@]Ã(+ÿå”êPígÓw2—Èôm~éUD5WXÔXÅ!!+¥Kí!%óôr¤´Èb]¸™»[#Û¾,Ÿ¼w<Åahìn‚"è} ¦ ñmŒ ŸzšD¶œö@IýV½^ˆ”Ì˵+l ®gõ¤,°üu®¾ñù ¸Z9OÄ1‡©:g²‹=²þ9e5¶ñ)þR!ÒL¬I“ÓNLc“Ïö‚‹\®L͉<œ¾R¶¯ (J`Hv´|p¥Âz‡K¤ u£ŠMšh1¿õ²Õ´k%NÛ0¤¼_ù<·$R߸ºõØG=_b’;j#,B ¬ôO³ç¿£4¹×§ÍÖÊÆ}¡¡—¦6áîôW¡Îµïc°Ëˆ*SE¾³žïæ”-¾e&½h¿ÑŠç.ÿR"|’'0‰0ÃRL²2íENÁƒ—N„`µŒG«¶U¡/÷¶VH'ÑD´Ž¦;ê‡oO¹­Ú ;zt,%üs4+Ùíq¹jwûr³§sñecåpQ × å}W}ý:ÑtlEuµã-¹Ö7e$ƒ6‚;Gæ† úåÚ‘Pâ2Ô{8³âPÓf&©á¥‡#AÚEˆ«•özÑJî ¼°s&cyA•Î!lpy)ÒOËûµÏI-Yöë„êîòn¨cêWç;ô~a§[ôìðh-ìC3@}EÕ¦ÀêÈF|v²™ÃºôÓ1;îWXqs ÝGØô/©Šø–Æ  uÇ'ó1ò¬°vÑѾ']žT‹öe”ÆÔ‹…f“×ÜÊoÕ=“hŽÌØŽ«ÅzŸÅîð½-‹Öü>ñ–MQ\£Þ¢lˆ¤1tÓÏÃc¨õ¢Ftñ5ÊJŒÕ1HY¦}³‹è°jÏ=€‰z¨îñ/ÍoBës Æ—Î =Š©kŠM‚¾ƒ[5ùHQºÜ˜_ÓzóÌSÉQ©ºŠhÙaL@R}O327û¶Jr‘ç\Qöm³—=3°ße¤~  Šæ¯ìƒ‰j[Uxij6®©Ð™^vÜéZ¦×)>§À6¼âÊDtŽ5^mKÿBUÊv8`Ƽ5±ü²ikß+%ãhg·M;¨Ë*×®ö†x‰Ï¸Q¶ÈÆfÌCRF³´'W‡ªèFšN›üQ›PÌW‚/A§°0§iÀ% ‘ßÅÊêÒõê²óꊙ=Y,º¯ÇÛË>JV}I«ñÌÛ¥RŠáKø !~·1r)ú kþ1fò÷P… ®ñÑv]Á´ìKòéÓ‘ˆ„:${°ÚÑH†âSQZ*ù¯c´ˆŸE>ôðÉ"ë$”ŒÑ$t¯"_ïGf+bbÍò’ÂMç8ˆàbþÐqÂo"·À +{+.0Uˆt?äÿd‚ïIJºlЊºBf8²þ1$T¸â²8ï—oÄPË(cáôýœ˜K±¬‰F áÊbH„Àx†gâÍ\ëO¯]7Þ¼—E±VÀ¼èVÓÞBAÉ4=«oXpAL¥ yîz]œP¨×÷SYXʳ‘ÓD‘Ð)’óÕ\ãÐ¯ÅæËȽróyî M@àæÌ -}ú0½+á¥~»¶Ïû÷L¼âA¾\%Èuh÷këž-øK“œ·´ ó[ÜóT*Z)>öÕÙòUÏôÌÕ$—,„øÆP k_<,@^%\å›ñ<9|Bør×ê˜×ઙ9µàÄf£8vÞÅ"^±úUT,d4Åqô²âF»µ—þÀô†ú Ÿçºö+!®7 ZdÝrwñ|u¶5C±=#ê÷—>‚£^HLoR‡ýóß’¼ÍP‚¯9$†y}²˜á?"ɬ Œg¿`aUŠ‚,¸Å)2£¤ãÍR÷' k(ùš\ϼ,P¾U*¹œ6-m½ŸSØÛĆ ¼EX+ø©&¶_÷$z‹ç¦Ênð&pµòÒ/û„ý2ӝЋnwr¥C¶¡Ã &ŸˆëÌÿ¥T×ú¥5åÕ—êT•×´>p|A÷dkô ÊP5à^Ñ×­-ú…“nhÚ¬óÍ×^&8få]c¬£P ^Wd¨sUeÐ;«æÀjß/ø…jëÅØð$Û=§ÇÜ4ðÐnêTò#ᜠü—I#¼p¿Å¥m& ‹Šg”gq¦rTº¾û¾X Çhу÷’3¨UÔ#D|¼%UÙl0ϱLp!ãÁ.ìGw»[…vø»ÈíØ‡š¢ Ì÷FN¹­ ¦¦²hôpŽ5Öeçà‚Î÷~¯¤ðóËØ‚©åë—£”z=Ò˜zi7HK,4X³ã¬Ó¿ÅØæy½ÂXqïidÊBMDÃâGvÅýÙ¡ySÄ'HY£‘V»øéA¨‘\ö;kAQyÊaiKJ ÿ÷:íØû•‚2{÷ÉBÙ`öœÛ¾çu&ˆôÚ‡ý¸ƒÍŸSìåþ!xûÑÑw0)_ùr÷¶ðq½ú6ƒTN${)L£+ ‡85ÊWu2ùå_ÚqOþLoÏ(ò¶çF–¿¦â¤ÓœÕŒWq!Î÷kÛWôÒy3#ò~ãRþXêf¡¨&fÿZƳðŠÄjÔzYÜ#²d¨CU&A8ï ÊxàÃé‚ÑÇ5(†(2ÿmYD¡µ÷žL´-¿.š"°ìúè«'”^H6ކýó\…!çWêC8fù>¿ª¨Ó±“Æ™¾n•*¨}O³Çþ¦äšÕqB3—¯*9›j×BÄ?xM×YÿÚ_OänT»Yú=°oþ}È…Ý·,› aAӨǞ¯©ƒ]œØ; H ”²?]ªšç-å ‰CéQ.9¼—ÀNÀh>¶$‹4½Þ~= ¸•Öí\°õÖ£ïÅ–SC¼‹’-Säè ŒÙVµƒŸÝRœ;7+V{%¿)Žf+J¬Ø,CÞ—nr¼,Ê6c :~Ô™*^"SLÞ'jaéˆS¾w”_+ŸDúß»:—ÍùÓq võˆ‹ÊPßUv¡‡|Aæ*ÁÂD{¥‚ýÔd‚'žüŠëa6p*y1™’ªB/³ÒpQå2€,›ÒgmjnÆþyë^£Á?Vg˜B/J]ߊxD=RzvÃ;²†/5cÍÌLö 6©a£t`î»®ðÒ"±(óQe¡£è¹DE¶ßS~ßáM¥“Tès 7 ÿé$«])‡0XkÍ9\XŽ L4^ ʾA{7Ó>rѯálæÖŒæB>ÑÝÒC#ây"|IJé³Y*ÕN±üFâËcÓ0yý[×öÊN¢Õ„ýì-‚¨F¡Ì­ Žt'„wªwõ»ÖZL¤ÖÇCË…•œ¹i,ìq‡¯öùÍÝma‹ÓÆŸÃ ¥òÔMHçnÖ Ä£Œ3Â7pp›ånk‰kñßûö×/ æ\ÉFö@È»ïQZÖt}b]mcÜ£Ÿë½?&Ÿ»xÔ÷c›½˜íœ´ƒûH«=› ìU+8ˆ:÷ªúùR„’á³ÇÛ´ÜÕnÚ­ŽG2j1,ÓB«ð¿hð¸Gi¬‘ƒÇg)ì´<Š|>÷î¨8X¢2êÉ %¾ÁÇïpÆzÅŒFÁ´×Ö+Ìœ@Ã…èu´ƒebf{Fê&.¯)힦kl¥Aµª¹Ò.Ý6ýqÄr…üWÍ'½dtR—'&üi8É‹ÕyÎpÈï1žnÌ…z‹æE¥&§/ Ëo¯RvPwÚ_¦ÃöïïqOy9ð¼ôR¦âü—Ídªw*GE…ú6¢X«ÍK¶kî]ýèÆFFõ|9Ñ%œ…N+¸ÆÁ1ŒûÈÚñ˃¥Ñ£t¸|ÙôâìBÉi1ì ¿d±ˆÂ4õc8:“Å~³{bVߦv¡}VM¬_ËOñ‰Çi†ã¹mÏ´|ÿú1B´œO⯣SØ!6 ”wuB1œR$†Ø%X$ï…ÉΦKô}$À;Ôž×æò´G¶®³‡ÎþVó:ˆ+¯¤ßR¨“ºÃã N3äÞiÊè­Žw²»2£*†#k&¯Å|¹&릴ãq€£¿ù .OË1Y¸3úÎKŠþš¤sùá QºA„tÜHoöF™ÿø0Ofô"šÃq@)6ƒ*\þ¥Ã5ÉZ5^ x8¶Kq΃ÿHnâía¤*†r9w:=©»b¥ÁHzüF7éÚ¬ DYŒ‹ÿÓZßX¥h'O[:ãP^°§”¸d–Ç‘g^A7PͲxpõ×N‘Påݧ_ت ã=Ö»8òa¤­A±ð6¡|ÿ¢˜Tžä]:€xg)s²{1XÜsÌUL=öó€”¶\J ÞB…¶CFH hìðζ·ú›Ä»o´ë’‹qJ&ø_X‚ÙwvÊc‰­Mn¢íkÑAÃ|¶D$˜Øc•°H#Ï ¢£¹Í¤ìÞ®ê4à4§ÙˆÈ︞ÓǪ/­'÷¾ëVº?I Ö’©?^«-žoæ1wé¡ÿÙ1DÞQ¤fàË`oÚŒ_s€ßÔ ®:­¯ÀBâá(ÒÔ2Ný#pçkÚ;ªGÛŽÜÙ¼›æÅýZ¯|.Ç)8ÆcµqáÌ\9¾»A”Þù¹séØBÍc·Å6œì{¨±S°ç{ØøŠ‚Ðsïy’3 ©|Nø^R/|:ÉÐÇáÌqf”¤ÅXo,õÅ'üƒ÷f Ù—X-Sb8 —æPæ÷eV+ÜåNÔa W>!öåìÜ«ÈC;“Pù ‡ž7Qç’5õPWoôc2¼¼GU ïËYT0­&¦mgå™­>¨exŽd¿ øÉjjïè5o—ÒHù›c½æì1Ž´·P//?¨ÙÙ7¹B:ú¥¢T¹ì˜#ƒ˜2_7ƒä·%æT"÷Ë›ÚÉ.áÖi*%/—˜ Ã%qyCÅiHNþQŒr¤òLI£=5J¹V¼B—jÚñigŸ#w¢ô«~á™Gr,Î|Р˛E‘ˆJnÇ’1;—™)OŒã»ð'D€èfÖ&Ë‘Å#ˆ+Œ¢.㻂RC ¬Iw'W¯vbõä\¿{é:ÅG'fu´ÿÈ“E,³(ßs„-ºP¦‘·*A¼ƒ(:o{K8ê Ú'ÖZ>êI,:ÅD‡\þ· ýä®rЈBúÒ)Y]•å(€ÏÏï2G2TŸòö’¬„×$ê©Ò¤1˺˴®ImòKž±&ˆ±¨LÅidNÈRÕ"kŠC%£kÖ‚Ìñ©WE†I°E¦ë@ЧɠCo¤ý¤€F“_Ù¬?‘=}/¾Ò¦"^µíTi³+ TÀï\‚ñš9á(Â(§÷ÉÇJFÎLDòôö$¦Ql¼ÐðuYA µï{Šôéûý~u›¸4[ñT‘ZÒ`£ª•}bu¯ aK܈ƒ$†+ñ•tïÌ$T-„Ê·ò&c˜§(±»³ÝfvìçÑå)ã*…Ê*Ù4ªàú»à„•†ù}uÉÞ.©sn܉s0)[QmºÁÈð J_Æ¿=eÅÎÒWV’"!ÛêÚ£°&z•ëCw¦°'Â=ùž•›^aãîÅ”rX0W³çŒXÑ‹UÄô˜q‰™“·z - —¨¥d,&¿p£#âÎGâ(ó Y|Š/Õµ•œxP-hpm¢¯¿¸—^e6}>¦ÍjÂzõÓ¥ã#š Ñy¿xÆþUM,¸c À†xM,ÔÓר!·öÛ«*p aDî]î*®ŒÊ}7X¶0æ‘韟´s§;ùKßt9òUp äáržçŒþø1ç?“z‘̨‘‚ÄÔO(F‹ÝgÐ3aØ‘n¦³–M™£¼šï°ð´û„=Þ2¶Å.vÒ<…&-Q〼/é$p^ñ“ wgú»‚pî6LÜ>ÁæpºN- üK>oò8{I­ùzÁz5—G’­ô·e‘úk%x¸6ßRj|ôàÕ¸(úw%…^èƒÆæO¡Û;wR˜)Ù?„éÖŒLáÉb6JÖÇ6k«óã.=R þÈNjÑå!` /öy(^±z7I|ÊSŸ'ãpXMÙQÖFäÎüU-œùÚ±ý— +SaHÛ°÷ͨ¦ú·—^⫨(IæªìÄîT_,¤¯Ã°_ðñˆR  ±xÉ>mE¸ßÞ4)Y‘)ˆ¥õ|¦Ú÷+]CÌI¸(<»ëýlÅØû`\Ý‹™îM¿üB÷öµ[]ß´pâ× w™˜”±8Î_…9D;eqwÈúñ¯Ë"&æ2™ÞÙ°Öc@Ä«­J &Óð1C_3Ša=å«Mi³?gy"ñ[ìUê8µ²+ —Á —;Ï¿ZÉù¡‘õý´krÏ~íj/&`õ{ êz¥žÓ‹#7û –;tx€ydê7“WÙFŠÍy¿ùR$%ë8sˆÖ&õü·¡H7¿‚GT~¡˜Ñê†E’†zÉ’K,ºzT'åèDíey"êÓ'èþúÇÐÙ˱S9„ïoÝò|³IÚe´¶¸´»dJB¢l"‘ü¨=Þ3ÞÌ’õ,$çÚÚFDw®†²Úާ®P6ˆ’9?Òq5<ÐÕѶòÒ.UBv òb—­cî$£=ýŠÐnût›W»mÎŽào…C«f8ðnóG5–GJÝ µ¨‰Tå[¶·¯Li\âÃ^à&k.)†»šD°Õr€)Û’J)[ÏÖéÂüäíu$tm*¤‡ŸAûõrO]Ñé#â" 6Ÿe&1ž^دÇ-øp>TºØ ]ŽÁqŒ‹ Š0­žª«°¯÷N®çaÐ’„ašÁ´„—‰¨)cœ÷åØaßâ¹Ã_ÍÜ Ý²~ÙOñ»LÍk’(ý|.¡ÝÁRæ¤f´:·¹Ž˜4°áOÄÕ^TÇú°‹vÔ!µÜ?¤š—mÁæ>ßàK:Âì™Ì¸ÄCp—Dà@ò€ÍÖtÃQa¥ Âyz¼CÚÌÂÕB.^V\‘Èæ:E† %Dê^Øqw>”öT£'ι/ž’(øPðÉ»ê׊n‚Á òc`¨õ‚x+²ÄŽ}qR’•4w(í®eºÍ`JÕ:R{ž%½ø‘έ_ó tZˆsòéf³ÆÚ€aî‹4Qï×¢«7²ãÀLÇåx!$´ïà®O~ÕjÍŠž±÷çJD9ß4NÕ×fZ‹hËd1ìô ±ƒ¸RÜê=q´„.}Â-­!Ë÷ðÖ4u›AêW^@“ruƒc¿ Ì·Du”©rÊM>bÉrò#õMÇ‘r l×)2Xêëçó³îŠwäÌv•H•›çœÖ¦8gÔq AqVÉXdÜæ¦¢]S4Ê2ø_QÏq€†Ùl Ï9 ®–c¯0ìƒ9e{Áׯ@ß¹ËÉl`~ކ±¼æé÷N\hkÉc/Øs!%–šÇÊy¼-¼Ü3ªM%ÕH]¥=Ê$l õ‘5^Îþ±×vïAþšèfuC^°ÞÆ‘ìa"IéIçRXrµV3bD!yr7U³H“4§[ÖÞ*÷-Ëû¨ŠØà¨Ãå#v©0¿€ªr>£¬a#ô”Äm’úy]oÍ©¥·/ü}ÚæÐj|¶@ƒÛ(ò›¶vtlZ‡™¼QE:Þ A@!BPbŽû×tãØÅéò¸ñÎÕ*xÇ_¥2¼zœ‚tkU8Xã2r!i/Z±Ã„? Ÿ6å×RÑ¿’šPîõ6ÒÞd¢,ØXu¡§²Xér÷ö‘¼2uúr ¹šC2± gØ÷¾¨²_¿›â©¤{çÜšhôK¯»¬È§l <׸€?u ‰Æ#Ÿgç§«©š Š’=*±Ã€DRÉâŽÛŸWo뎈p¨ÝWöÞ”åÛmqq¿¡ Þ›._v §î²°¶Õ[†×Å÷Iˆd`¶X°Dt4’p¦üL5ßß•:G[Hc'¡å€å¦Û-«í[sPº]S$KH˜Ã%<æ5šW¼l‘WFõ¼½ܵ&CØÖ•Í-•v@Ãæ3 ‚¤hΠTÅ »‹¼™ÍËš"‡ ŽWœ«[…Ÿ¨0©á‹*šÚõ8ï6Ê7› ¦m€²÷©Ãy5Q¦-I°ø£Ösåð‚ÁÄ÷×tr¹•Ôz{]­Á0“34æqCm³¯(¦µ]àˆ—p¹RA\å»<ÔÜEûÄõm†BP"FûÀŸkѸ ŠþŸ¿¸ã2¹òå6SèRDê "faVX´2ˆTl­4yö™ k$Ûôì̃¬9AußýŠÃô5º÷¨Æ4á}˜ZèJÐˆß àSLDžwxò%ɧ"yž–‘좋ÚäËFi|&&…HÆÓ&ŒGl^ apµ'IŽ›+bwR‹z\Q:‰&õVð ÷„ ìéMõ[Ùª­$ŽÅo…‡ßxÛ“¤3ìšê’ë;£êÂSTUiÆÒ03K1úÇŽ°îñ¼ ÈÙ/Ju­“NG€†;TfŸ²š<L»¢4•ƒ$‡ù õÉ%%¾™Q〘s¹_wgû¢«o\N|êÇd8¤ß©žZº†ùÕ‚Ý›$cè¢#DÛ@íÅÍáxät>儆íx–Àކù2ÄB?û¨½¶¸„GaFÛËA­ —0E¿½c”€sœ7¿8c%ß½#kXî¼íÚáYkÌ ‹ÙxÄžô›â'H¤se©–ød‹nQ±,žádÉ_m"ÓýEî† ±ÑþÝð~µÎædƒIˆŒ¾Ï¢æz—4ÎGÌøh •U—øîð]¤«{xY]éÙ9­jëa½* ƒ©2Šp,I¶aÝs»³](dõ^v\ýW:iýœqØbÇ繞• ÃhîoãÙÕïªÜöŸÀðÔŠô‡hŸˆ»×"Ú{IìÇHë×åE‘Xæ°—G¯eaN:No…‡é4­Ö§OiÌæø9¨ßÇ%ÔÛäŒdwö†Ç°œ7L,'ÛÄįÚû*lÀÙMñ &ÜOUå«£®hÝWdZeö‚Ì®ò%DKu”-Þà~â ~eœ_÷9âò‰ŠN8ÈXý´ªÂÀíóm™Ñlê&0jï'ø³”ÓÌÍv»‘¸ Ú 3Ó9”áGâç†tÎôQlñW0Àb¤¦§‰äÏw¶“BC_‡Ÿ´E?̾¥†”¼p–§Ð‰y¢—Švz`Šl´–h1šasˆñ{,Èm6›*sNÊØ×¤\ÖßJ¯U7 ¿øQ[à17šB<#f*ï!÷Ò©\ÉœJPØáÒÉ ÎmA»èá¦xç4ä‡<¶gËY͈ Bÿ*iòD7%1\¸ú¦‡ÇPˆÆtS&£u ŠêuF‹ŽNså b,‰ë´Æ_Îru-厙Ø*ÿ ø ôò¦8D¡ PõÎjÕ…rŒf’»—GþÈTžE1:×FÔ{”óð6ŒÔmr[Úz-f…¦ëTIÐP˜Ù[.}6›°ÔÊVøråf¥QT§Y§ ‡Öý2äo%îh‚•óö£ëãIt|*™„¼Tx™}‡x“Óg2•_úÎn—k=¤9n õK›3#….MºG3êP#št8¡æEÍ 1]ךá„w/õ¥äëß)H0;s¦Ä| @þÖ«R[ˆì×ÚII‰D­lÓr˜[˜[R2치°Mlž††ôË1.JrÏ¥üÝ]œüýÃÖjݲPJœ1NRÚY# ž`žGèF‘à&ìñneþ /^A^_‡þj&K Æs·Ì/úñ~œOµTQ¡ "4¯'¥ø*ê/ßi]q«H«3P r>îmˆ†9ÁEÐ_¤¶WÈpO Z³®pç}oôŽ/S;Ê#º’ø®mí¨é\s•SÐñä@aN—/`.}øÁÚÒßF™È”±©SÌ®WÿRþ£!ë#º:p©†ïle—ƒ­>ãMy\euÀ¬D²ªañ7ý;ພ¤º-å™NAmµðct|”öÜË‹ÏX0yØ]’×Gãê\vB†sÀƒ-ø¬0¿Zwyñ:È ½8™_ÔOœxÒÈq~&©;,QòãBOØLÇF’eÀá×<ÔŸýê´ÈО¥GB"XºÉÂ9‡±%(â$§cÕu{µ{„y¿ËÏú²~áÙ™·€b­“ÆzÇH·E‹Œ÷qð’LLGr ~(£Ö•Ë5øk9ˆW&ƒñzöSêGFw÷U±’¶”rÉúÍìò´mÝ€Aw(Ë»`¼äŽ Å@´ï~¦W4F¢™œbÅ”’ÕzV¡ØÛÅfqÚ ½ûÉswj°J Ê%K:þo))¾–Šð1½*rlMoi7ÃLOÜ覲FÇ ¦å‹ˆ›óWP׫aîŸÂN¹Ê ðågøU*£§AL »[ :úEïGj¸õÆÿ%±3ûV¼Ýr=÷-Í1A.¼—§¨aP}`ÇÄÅtëfxØÁ°ã%Çl°cDýIÙL0C>óÕáìýCË–iF–£ê&¿zÉ~æÞÊÔº=á»á²_sÒݘfOj€¸p¬fÏ,q V.ŸÓªaÛRœÓOº ÔÆ&‰H#ÈèÇ%Ð{Ñë1C$Ø#Œm*î}x"#ˆVú†ðC¿ôÃö?T-5_izzìpÍÆúfd¦]ó¨U¶Ê¶­rèV&Tý:Κs^¹É›F6!!p›lPŠôN€ÇæÂ¥¢ë Lö"®AØþ™ˆé¢˜˜¾ØäT܉î¸0G!c¬Ažþœ'ÝK²c{©>¿÷¶°&>½aÌÄ)¬[#j=LF®.4p?¢!ÓCÛ«<4J©•O † ‰[£µ•ï ÐÃ?ûíŠtñeè2ðÖf )µtM,l7¯a\¿Ôz+Ü?HÀM–Øžœ_9d_<ÕòÒ›ü«NÃ-¢}we@ËÎì·’ û÷*ï`…Ž´5ýPä†üº³°~håc)ò_ŒÜ®Ht‰ÜÔÚÎÚÄzÎß±Ð/å£Éå)_îéРÇ;xq^ÝÉ–¹~@ àž«ÈV~Rt«ÊVÕýº TX¡rµã(§Ô[ <æøÊE–ªëœ¤8ê=š±^|¡É`w1!4‹/HˆÎì\ÎWþɆÜFjy#+oø&»ë§bŸ î4øPÑCs(™r©2'»)^þ}J|*¹vv§}xBa8þxöi›…Õ•J3òÞ8­R›Ùö-£éµ¾Ë#o¶@±ôZŽñFuΑKöŽ•ÕdÊ…|ÑÚC êk†ê¦ *a>ö¥÷Öôij3:l®ð.Dž`´öT)ÇZÎRýòÔ¬…dçú›ò7s;dì×,”*—#Nß¦Žº²dü$…¯èûõßÄ•ö )V¦••úe‘F«Ü:üeB³yDO`­è'‰8ǶPÐz%ºsn™Îl—÷Ü»]X)>)‘úî·? •ž¨éäï³¹ C;³4¶îû®U3“8pÍJhÐÈõOxršwÊŠÇ€…‰Âó¤úÔ„°è– LCfMpö!Å *ñZ<Öþ#@‡KrĬýÍ^gÜÓfB¡³$̺Ylu1 •Kë.]ïœSÎ4Ý2®Ùc4®õĪÍÒCÆóÈw9S('Žr< T¾‚J»‹ùÄÜ™Co¹Pœ¼ *õÜC{Ê•¥6ö.–+WýØJa”!U×kÍÇe„»&‹iãðÑ9ÓøT¸ hmòüwœ±ß ”«ïUþÀõvÓß»VÜ%Dœ‡KïpÖ[臎-·å„×Ò-ol½Õ (“'/~÷¥¶§ÜBÒi“’sÏ#³‘Ê«˜.~hi¦´²y*M1Õoà¨GHa¢ÐfÓ\_vÈš›Þï}Šä&¦–Ïl·¼Å°îÛ¡+‹ña(í)s[Yñk(ôLh,y5}J I€i-Š4Y=@@ÊüäƒòÍŠ¸‹z[‡9îŠ`€áš!«ßJC)œE[T°ÂÄ©©4þu.n+b›R>[gÅ#ó®(±aã‡Ð!7ªä¬S±'Ò˜½ª® ¥9¯M®6+Àöuò¤ÛÇÔt^2×jƒÀƒWBZ{ÜtÃMKïB1’¤`‚?Ž´ï880à¹ãXÿhq¼xC.8¶¾báßΚéÉìÄÛ±Ò±;Âi (Ó -Wœ€F¾½æiJ±_Ü:9áþêpï$„98]î*]Üü^˜!wñÇ'Þ Üó ÝB¸[õ·(s™yôaë€k±Ø/óztM]Í?—Ïi^¿Ìåü¬´ì½>ä©tü]¼#bÛ)IÍÍ÷é®Yo@~WõÍr öY»„4O ·z{RÚfƒ€dD—¸¢ ªÏ ,DOº~D:0°8×pKÒço|2¼’ÐÈ\ͧzÊ›cþyhmc§—êê;ŒÚ³ü,¾J_tœ¿¸Y/TáëYÑ”ž’åzûÿ3©tJ endstream endobj 185 0 obj << /Length1 1993 /Length2 14644 /Length3 0 /Length 15860 /Filter /FlateDecode >> stream xÚ÷P\ÛÖ ‚Kp·&„àîîwwk îîîÜ î®ÁÝÝÝ5ØãȽçÜïÿ«Þ«®êÞcÊšc®5æÚÕ¤ÄrŠ4F  (ÈÚ†–ž $­(Å@ §g¢¥§g„#%U2s°þÇGª´³7Ysþ+BȨïðnÖwx”Y$- LVN6Nzz#==ÇAvœaýïfFiZ€ÈhG*²q±331ux¯óŸG¹!€ƒƒúÏt€€ÐÎÌPß ­ï` ´z¯h¨o Pš\þg rnSN::'''Z}+{Z /5ÀÉÌÁ ´Ú}þh £oü»5Z8R€’©™ý_E±ƒ“¾ðn°43ZÛ¿§8ZíïÕŠâRY õ_ÁRPþÞ-×û;û…̬ÿLÖ74YÙè[»˜Y›ŒÍ,YQ)Zgj€¾µÑú–ö ÷|ýïúf–úïR׈ Èôß;ü»?{C;3{Z{3Ë?z¤ûc™÷m±6YY­ìáþà'lf4|ßwº¿×ÂädíödlfmdüGFŽ6tÊÖf¶Ž@qá¿cÞMpÿØL€zzz6vÐt64¥û£€’‹ ðO'Ãæ÷<Ül@6ã÷6€fÆÀ÷87{ýï@€ƒ#ÐÃíߎÿEp #3C€ÐÄÌîŸÕßÍ@ã¿ðûùÛ™94éßåÇ ÿãóß'íw…¬-]þ ÿóˆéT…¤åd¨þnù¿NAA3À†•@ÃÈB```d°½?xüï:rúfóøW®¸µ1ÀñÝ÷}úåïk€üï¡üïZ2 wåäÿ]‹ž…Þðý‹áÿ³ÜÿLùÿ§ò?Vùúÿe$êhiù§Ÿü¯€ÿ¿¾•™¥ËßïÊutxŸiÐû,XÿßPUà_£+ 42s´ú¿^qý÷i°6yW4 -3ë_f3{Q3g ‘œ™ƒ¡é_¢ùË®üǸYšYå@öf\0zúÿã{Ÿ1C‹÷KÄþ]™º€ï#ô¿eE¬ AFÌ# +@ßÎNßîý¨ß Àá}(€Îj@Gk rxO¼·è0ÙÁýq®¬,:?L!È#€NìÄ ÿ±èdþAïy²ÿEìïy ÿ ÷<Å3€Néôž§þ_ÄÁ Óÿ/b~_Eßþý4Ìì-þ y/kðbxGvú†À÷[ÜØá;Óí‰ð¿Ž÷z†ÿTxçò~YYýSó 3ú|/ü|§dü|wÿ þá4ûWð; “Á÷b¦ÿ‚ïûþïà÷¾,ÿßyZý«Ð;+ëÁ÷ ºx}ÑüËýNÄæ_ð‡í¿à;»Áwöÿ‚¬º¶ë]ttN ¹ßOÈñ_ðõ÷Áw&NÿÚ÷lçÁwÖ.Âÿ°¡£ÝûeþçEó®îÿà?ß@ 3ÐnqdÈåo^íßúðSωfwŒ‘±ÿ*ôFuGçû¾¼¯÷ã5SnØ‚@çÌ^Øãê1cÑ[ƒ…&½…κ{J'æbm+¤±Á6µû*Ïïc{)GÆ=ÉŽ =&k#ÌóF…A§þi ,jÛËÝÙôÃoÜ_+îËMÏ¡ÉêOhÀÇ" ±ÙÙ™ÀýÛÒÛ*«¦gÚÅ¿Ø_ñƈ>¦ô 3²lõ/•Pƒ™m¦à!ÚHÞ¤ñ&t³âJêM¦IwºE°Ÿ¢É}oZý}È ìGùH¸2Äw&®Ä®Î2Ôj‘ß&£‚¥¨‘ák9Èt¬çZÔd%Ñ;™v¤ûb¤-ÂÎï1Ę›¬ôf!`dï”Õ›ÃùW9̓¯´>º3ý‚?oîåÃÒPö«d Sõ­ŸZ.“›./2K ¥›£ÃýˆPȰ®Î]þ«Xë¸Éz]qçh«úÂ~A «MðÖe"‹ã…hV›G€˜R(SŸˆˆÂþÅ0\´ÿƘB,€¸kØNI8;?àR_£Ý@³že‚ œÔ*®m&‚ú쌈ÚÛïÙâ«Û0i7ï²µ¤ëè5«6øÙ –³±l®ðÖtT´ÝT¥Òâ¬uRwôì¾ÃQh0qŽt|8[¡.ܾV™19 ü0ÞõCìNÿ!{_ÒÎ.½/Åšª ‡íÓlÉt&_jàÅÌ?ÕlƒÈâÃf“oäÃɬhaYg?•éáÅÉýb'0uŽK!N<üUò‘¿Ü¢:5Ùn gb-¸!³í™|å–ú÷7£p,}ãoJ·¼»5ÄÐLÁ³C+ËkûJW ßÓÜÊ÷û(¡¯ù"8§]WOËß_ŒjÜ*]ú0§EßµìøÒÒo~º‹Î×1H›Ü£š«ÝÔ•¤iQðitÓI‘/ ¦GûíÅ2 òƒç³øH§ð è³“ŸBjz=Ń`‰Qû°›µ‘Œo+¼Í«xOQENääf2òaÑp–ßZQ¡$Úqw|2wÞ¬<±3\EÑàùëÞtSuã–öZ‹%pÂd°h6CxŸ™u°ÛÔ]X 2e$úùᔂuX_³Ù³}"0£”ÂJ'àxímÂaUKhâŽ'¢Ù¯3ýÏí1Cïæù°Â{E´£œd^Ìûíè4…š fßàávò­+? Å:×Tü‚0.(È€!Ÿ‘=ž—³‡¤ Ôñ ®j¤LÙQ¥ØÍ*e,Í& ¤ˆfœÉ}Ì;.]>³®ÏÄÖމèÒ—;lÝAXcy%ù|œBÔÝб=îWgÄœ\ò/R_$u‰…¤îÅÀgç–€vÈ2ïóeÁ¯ùQNÍ÷ŒoysÑrªnøJ¦µ?¾Ö¦œ§q×L®^â4E²²íoÍLmù»«ÎX-ú< YÖz µm½„[È(©ßcSàŸžö.>3>·Ÿó~p–=!›]›ãÀ“l)IË€µœ=|Ü)+¶¤^ÑœëIËŸÆ­‘¡ÿç£Dsô[ï ã÷0|mžUz"Ž‘IdÂ\ÂÖJÃ+, ±Wô‰jêxçVœ'FÁÚuàRšüËú§¼PPmT¯¾ô‡Ïçjœ® Lê)Lq&ìž1;-¦›^VÐè¥ÏÓLž¹ªžêVhj£ËY O6¬p¿}ô¬Â/ Ò¯Š7Ëð u*ÃýÌßL:gø´TfPEfxÿ?æ$ä­vqG=}ÙçÆ 5_29e &ê´ÁOï@ö-£ÊU(F)=–ùÏû‘2VÍë£z‘ÀþfxØmö3˜Ž™å¬À¸'æ«a~ºžh[ÛæÞq’ ÍÊç}ÉäÖÆ2Aî$^èß$âk”8¶ÜGÀ<;ì%2§W4j7š§ÈmBŒFd³#ˆ#Dt¸&$sA lI {Aɺ[KÛ/àÉ`èx ÜͲµ6ãÑʈ³©!Û…‡öó¯Ëi‰ Ð\îpâ–J´Ÿ„£­ºã`W´ãGÝú„Kq´¨"‚™låÓóú/ÂÓ,aZv)"“IÐC Û!Ü»é‰FàA«”£Mëä}8@Ôð\JÉ,9.©jötÉéùÆŒ]ÊêAz¹î¼ÅÙ‚ÍïØ»tWrðÚˆ¸ü-üJøÎÈ[b>[s‰6;(cÖwûÎr g[6Ï]ë^‹ Šq_…Üš-ÊQÃü(nkø#€èá2=ĤI84¿Vo¸ _7Â~ü¾ÒIÌŬy´KPͳ&ˆ To,wtñë{¹ÊÝÕçè•ÑòWŰ3‹cþSŠKkÕ`ZúبÍ@1Ñ'l"þ ^A;þ(÷P3F]¿_ÅžšoÙ3ß’ Rñ–ÇÛÐqû\Ö¢y¥˜•½žºÔ96w™jØPÞ-_¿Ó…nœÈ DžoRI;|ä&oöçwçˆÏ\O&]ƒ³ëDJªµKã  [pNÍ¡Wìâ4µÂª÷Rê¬w4&}yœà@¨\4žm"mÂ'ù^ÕÁÖ/Œyzr—y"ëÏJeÞZ½@R@ôµªµ5óJ¥¨såbp:•±vÃ]®Çúº±7¯¹’ÊhsJÅÌÁøc‡»ý÷A#D~¡š­žMtŸR#Óä„nL#v>V²eד¯6ËXÏc:Æ…ó~œ•S§•‡©¶ëC†Ïþ8õ…+þXŒx¹.%ºx*Ï5r‹^C߯ó6_´ŠÚr}ÀH GKˆõ3ÇLáf¾:g˯nn“ñÉXŸ¬Ò3¤b;äa{â î°b£ÌsÇ'ÓiV}î Wlg ð¾Ÿx'0ÐÆÊ¢¾)¦:ßD~°àäÓûe*m¤È­­îô­Hã‡}[P7²‚9²Ä%ìa›{ö)ŽðÁ¦Î„ÒæóT–4©T%˜Ë:Ì5×ïÐdM¡5Õú~l< Y¹ó2Ï6õþ$fÅå[úü,=0ÄØINT£¢q(15nG»n¥ÂõV›Á¡ƒ-&ù±ágúýeϽ°0*9—¶:{¬÷0æÀÍRݼÒû«šNˆÃÄU <ct¼ÁÔW•„±&Wæ6ªJ$Þ u©ò gŒÄº9è#´9. ø­.áz¿ùñs!ß2:×>¡=:«À¢c2¯®Ñ‡Ø#ù„Jw÷ÅìÇú}_ÆØÖ³«ÔÙb}/µ%(jï³®«?‡wßF2*¡ ûÑ̬ØÑTÎn˜Ðü[C¼“…“¬ŠË=å4:R…oœ×eó0yjaHQl³]RÜM¿ö`š¸—…<»ë‚û† ¤û~É8ôÆ ‰D±tžiƒQL³©Â´3¼ƒJ4J ·YÐ7Y7È2¤oS•ýºªáÙ’Šßf¦h<Ãúd\+ åŒiÜÁGÔÞ{¡ŠFs¤'>%c‘ï ´é‡¹æb‡¯ºâïÏ-J‚û´ûüüØÆ‚ÜÕ$Ô+¡¥$úqÙ_‘ð9&±*.“QŒüÍuÄX?%Çñºg&c cÔù¦·¤èÂÓŽ”ì·í…A`ë–ˆToÐ~ÈäM"êïA¿±Q„oDÍ,=Bv8“ÍFJ¢ºéÊt¬Ã˲^ðü–ãI$1Õ)÷oN˜¿‘Á©Ü\Jheõ­P*;œÏ'š¡pæ­u&ЊÁ‘Ô¨áƒeïYŸç°ßŽ“÷Év¾òK­û] USuqÈ::ççšÓîcz\W¸,–27¯O¸¾\~ïB†æÆI)µö-ÇŠ~IJw¨Íg<˜*ðþ¹cS;6š?÷áîJL„ång„Xýš´ŸIÓ^vÑ$ú˘˜+9ç¶šsHVɶg‚5ãdðcvŸjETþb”¹Aµ-‘…àäcF§y¸&‡zÿçhÿ„ØÐ— ßáx¬£Ña./íÉs¼ž+~qõçÑt…l÷®Lâã:ð&#ÿ ©³šôßÚWs¹R”µÑÛ§§â$X‡P½w5 oÂAxã7ÊŠee_ãƒáÆG}-à |Û-lt/éSPõš·º¦GQù’ûiµÙ‚r3Ú¤ÐÇ}ècÇifÆÛˆ€ˆžÂ*pÇNüe±à …º uÊñ×Iƒ#)²ÝÚ˜éÀ/¶¥bì¤TΑ@«ÒŠxb•Y7ɧš”üëN–E1Ý~À3áé‘qùv?¢m“53ª¹1BÂP TLe¹ŽŒxe UFùâZþ/×lߘÉR_Ãxe\vˆ+zmáëi,ý¯fÈæ)—Xû„»¾Œ§Ý¥Š¸Dé¬é烶ÐÃKEg~”À¢½>Ø¥mXÉa°ÎêÛ ¦i®s?Úsò§'äÆ0ó‡#ßæš-–Õ‰TžПë#]sÒlu¹ò¯’š5$¹Ú,‡»]ßD“?–^¬©€³vs™ŒÚé~Ow` ÑæXCÀ28ÕfÔ»‰qƒê.˜‡¬u‡: CÑ&ÿ|<³üF#®Sõ£Ë™GÑÉòn!|Íö­Púð°Æ)N*à)A˜É¦w3žØÎ,!ÛÝõHI9tUìšÅXSõ‚g{ÜQÚÜl +A<jÁø€¥¡Ra*;O\´ôôèwÆÀÄý"¿ÜA ¾S'Ö*ëkÉþµ7¸S槸ÖÌÆz–¯p“‚Á3ê­š4QÏ'¢ÑjI›r‘Y°9z-*œ¾#‰M60²Ù÷i|ÕÍı¯åÈT¢9Lwi:ž€ ¶8„Tœ¹’Ÿís²Í¨²?§ø°Í|ÈvÛ öwÒð p¨m}86“ßÀ  ì•,\%üóœY°¦ mwiŽõÚ]¦ê†1‹•%UKSdZ3ɺ½äÃÏÌ5ÚÈE)(â”u2öˆöb¸¹Ýçë·û•ÐÔ¯±>Õ= œð.ÝY_{[âɘr‡’µ[óÚïZ×Ý~ ‹Nc{šQkî´D;3O5_Ã[J§¬ž~ VÈŠlÞ¼ì“e_ð]=X3±¼Fµ ŠÊy»Èõ뻟<0ÖCà½`Iù^ÚµåãpS„£>puKÓc”UÉ50}èáÜT¼–QR~Þ( ™Ûü*:Ȕըö8àZ6(­IÍ Ûˆˆ}¸²ÿ»%ï¸Íq£‡#R] dÏè0Në ^ ÿë'XÉ+Ôðà‘´(w(ñG©©ð¬á,ixëWpPõ~1&xr÷)[q{2“@îø‰¿‡GþðIÈGÀQEd¢c”eJKÀ-U9çº-Ç–éÉä\s¸4?~ø çVXÀ"K~ÒýCˆßµ;ÂròòÀkÁ3ÂÆ‹ÄíÏV½Lûû306˜ÏMÉMºuûÞ&•ƒ*gèÎþ5p\άÙÝþ`¦Ž¹>*lkm,L8±[²%¯“–ꬔñá8ÎøÕ’ø¿VD ÍšÂ4¿¸ø‰‘.õrŸHLª:ª­t£‰ó>*åÚ¨Lï¥fn…6Û¾®c³a{lØû-ÀÌ-x_+}δü’åu¹´ÏÁ¬·ÅØðs·Ì𱥕ÉÃIǶ]fŠ^JÑ»CˆÐß³î£\ /Žlì7Õâe[=»%Rü2Ž*K.YZPŸª¦H`±ø¾™Ü¡;ËØh¦å¬û›üé‡iD*äšnÔý.ˆAŒ}«¬‹„orø†­0‘rZ¼ñÌ¿øãºF©ßZJeaœUHl²ÃŸàëüì1wuA¸PËÐOC5cIë÷î°Î#gøžµŠ.FíÎÚüf„ó‘Ê€fìJNR;”Ž1bzÃ,‡%Õà[W-\ðtØw®4Ö¡ÏÛ<1¢oØߣ ÈøJû¼&³ÔD¹dû õtç ÔQà¬JQ,².xf¡jFâÔ^Îo妶øù‡ä¿¯‡Ûužh3N´[ºV["vÍNö&ÉŒ_‹Ð³Uœ’ïvÁZ^WU´ôøòPë·šqh(y–²nÔÁÇE›l“s`äÇõ‚d¤R%œcA©3O‰jáßrÀS=ÿd[’þï[Û`ïŽ6vnàQC:”Qô› òPëxÉ[¯ÕãØQn ¿\ÈÁä²›É}ú޾Mç¶eC+Ø[ jÖÈ O-P4T K$ö¿dËhÉÿâp="P°’ Ü<}¶¸œ`…[™ƒîà÷øô ä»5S‰Q€~Eý†ßB †óçÎñGAu²{¬Êg?=\D>kŸ˜Ëº·çk»»©üöŠ/Mfc¹úüb"ãDÄEQŸBJAHìÝÛhp´æSu,ÄSº…¢M6òm£Ã°ÐJ©þ…1BÍÊ9¢˜ ‡”˜O«Šð¯ú‹?–4d[+â»®ƒ>>÷GS¬š„}"É-œÅ*aM‡ú:ú“¥DQvb‰~güúÙñ5D¯nÏû˜†ÉeÞFtÒžu¶œdÜø9`A<1˜Œ¦e†‹ãî;ó<êôÏn/{¾ÏDŽåíþ"ì4ô­3uÛŸf{ð37÷`Ãm¡@Ç5Oôn9É>é¦ T…i2;4ó„JW(¨3š>‘"I°õO2e‰âBÙsÆ{‘1RWøKqµé*U›‹uUdË´™YóLó `f;š­îÁdªp¥Mâ¨(]¬Y u¶pÏDšû¿J(°áŠê)¦/G6|°¥ß–TÜÛRI(ìæëËT;˜cÒ¾“|„á»<›®cä™ìß÷˜`ùàÀnÁGŸô]¹)}GCye£ÃÑrÃTö­j8=1åË÷@›¥ü:ïGŒùJãfاÚñ ˜cìêù&2D­Åß=],\ÊÉêýÐÏtô"ß<ŽŽq±' F4ݹÂc Ù ”mt*t?£L:ÊIï"rB¿²Øú&5«!Fq.­ ž{{Ÿ¹â~ (¾Dú%xâpÒmãD2¯FÞU"}lL„ÜÕ8¥Í76¼¢¸àµ'GuÆÄ…82_ÇÜZ¶ò ƒÎíHvŒo-Ý: M·º±°@L,Ð{%i<Æ'Ü’ä_C€1ÞšŠgX?Ъ½ ôÔë¿ñ_@ÝœæªôèýìôȨGc–ƒ’ý¨Áê«8.â\šØCB|JNå<ÌB¶wΫÆáµ¤–Æí(ì3][«'h×òôÄ•u‰…|[ã™Ï%àO$`U_2bF1·}þ çaõ@Ún7ƒâŽ©òUf‡ÜÁ’ …÷-Xå­]òè!P¼1]6ú‹-;òë<ëRºÿD–VòžÚ0;7áÈ'ý †VùŠ‹¢æpÉÈý{è¬Q}9Gbì/Ήz&Þ—Ïw•1„Þ?ö£ØÏËMjúŽX¾*¡U Ün‡ÖÉëuÕvËJ†e±\×-ÖÕc^¼¿ªzP;<"½‘è :_¶O34`_^•‡V?^V£V@²r¸`«í2ÌÁ£ s΄›îš¼pç+†Ëû!êdQ­Ã¹EJm&Fh>?»Yep®Q¡wÊah,¥Bp²ï甾¯˜^FÓ¤Œ¡®ÈßèÁH¢CjªŒŸr¥™ž©Ë°#bî9¿‚IB4oV¾í§¡Mëí¢ðËf|ŸbJƒS‡C-ó!w¼e™ ±§jŽqÔêBÔ‡FŽgõ^«Þ;¡õÇd‰ŽV²/¾lGWÜ”"Å:}Xg„€p@t¶XñVe|íê*U˜ãÁÌ[C K®ˆáW°š(y¤¬©6{žœù…ÛPÖ®©çìï$ÒÅ#éÈd_‡ÃÛ¼–2‚™ÙŸ&EÒò³¸GR ¢‡´’\£Kí7tü.OœžDxÆ )½SŠQMÆú1 KÔføQÄ) I‹ôˆ_øÖwGæ¬VÛ68=wÔ¦\Óã®G›Qû!ÅØk&w¡¡#÷ñŒôÁÚoû쥮 ö kOÀ8Öþ!Uû:ç½±f:W;»uµ|ŸO7ÌÃ÷àñ‰³¦¤ÎÍBEu·€õ¸Ÿ²¯_¡~EÉ;”š=#¡Zx ”×,2‹³rXýb}é"9kÁ“½ª‘¿œ½`vt…„r Ÿq^ûݹÚ䣷XTÍjn¿úKëáAxÞP¶êϘúa<­3Rpw)º} SºH”‘ü—NÂá“SÇþnB¦dÃdÃ÷= {QŒ°ÒC€C;zn¼Ù'œ¬;zö,±µ®Owï:PI65[N!hWµš)ýF®}.\zˆÜPÆèé<ñÄ7ømÛ¼fÖbÎÖÇywÓ9¬y[uØÛܹÂÿ•1^ŠæBÔ&…E\(ìS—Á ¥®gãaê¬IgIå¨1‹ñgÌidh Ü ý˜sGÓ×ÑÆöÕä“—(¨0£=¢AÛ ¦^œ¹+ÞÅM<†rÝö‚ƒ,Õù^ßË+ƒ‚ê·Š-‰^Abömÿ\p"¶{#yc´Bù’†ÌjèàŸsšðÝ«| œ½cz°›øEÕE6çâ"Ííþ#·…6é'KÀËgãÊÕ|9‚YKD¾È¯ŠöF “±¨!h“p}ô¢óVfÜòì¤Á}Õ äÆÊMÊ×f DzÿÃÙh=„ya!÷šKëÉVüPZêÍc q´0§¸²'{'nŒhhÖÅ-iZYpº{Ôzº€î$Á°;#Q¿ÂWˆZƒòxÏàË™gЊwh¸aצmå;#–h Çç “§a/2"g‰!?aÍkD3'¤È;˜.{7Žˆ‰R©}›Í§˜¯×ã Õì\ɆÎYÃùÚò5H°þåë¡Iš]Œ‘ Ê6`¾Aä¶Ï+ø°XÒóQ9¬;=b{Û~È&c®¤G„}B¤ü({»•hÄ/[±àíþð9í  ¬lÙ\[a{jÓ mä8;ôô„ 4¡Ì•ãIÅ‹²Ê›’¡x¯gKÑ ŽþÏl(†d$g1øµNdž  m-ظíþÞÙkv’4»œHKbü/‡ ê™ί0® t¶ë_HÊ”¬8öE=Á¦!õS<ËXpv‹e¯+¿Ió;  ¨¾~ „Ö}P?×¼@¹ìZçÝxϪ^ܼ”Ó¿ýõ†±ÓGßÁyøCkÿ؃2rècÿ+§S©¸qö›rî̱n~gL*]LoƒÇ‡U<·Ïëú/4²¥ÀÒ¢®¡SÃÝÛòq¼I|âòåÔ/…‘'—~H˜Ç­’·nÅЧx™6xÙ&»A’Ü›¯­WV޶³ßqª79Þœ›g ¹&>VLÖÜŠ'ÚR Q—ùj Õˆc~„—®”ÊÖ0׉Bj®I§*ˆ&=zªæh%X“ÍIüí®àw´§$ r‰…ƒ®å¸ßà Hôk6ÈG£¾­ ½JGxŽÄGº®DP"¯xS N¾Âà†¢—rbÌ!ð׈BÕƒÖõ5LU¨ƒf?™ ú¦—JGGQUM´c+ÅÙäÆHjëhÝ À’lÍ’Zµ«¤'ú øjÒ›¸ÔDdMmqµ=¿]h²QUkˆò ¨ö4´F»OÈËg³½¬×ÖÄÁ$’ƒ•åqºÅ/ã^bò ;j‰&üFDP¯Cïš>_jÀ²¥&á‡v“Ǭ ž¸‡£¹ÊßÜ¢°º¬wb‘ÌC(Щ xµ¶®­ñ\£òAM3Ëø$ò“Òή:ß¾ëü‡¥÷ãðolƒ•l¬­ ¬öd®¯ÚÄræ¿=š=$Æj-¡ÌÒk ÁÖä+ Øtë9гœÊÒÁÝaÔ°œËº¡oÊ*` aÓK¿¶‚š¡´YYöL[ó-î—>hºÞP˜ÊulÆø©ncÏ:¢ Öig¦c?~W|L½íic5ÆÔ6à®ñvHpñv/1xƒlV÷HˆûÄbmFš=3­”³åš4x¬IŠ0¥èMy±š:ÎÂ5mØ«xRtä*éSˆð  #5{¿žÏª½J{C7§Gô|ïÉ =˜Ð2eÒe0'õƶŸsg]'ú  E œÉþâj‹#ÖúÌÏIÍeÅôP­ Ý-ûkå«ÊÌœ6{Öªµ°¬Ð~gçx ä—«¢•¨ý\8ŒþuºiŒ xÎ>þ[Tlc¤?´ÅCÛ&N]1º ¤ÒÉ¥£¹†ÁsT…¸áݾ{ĆEéÕ½A7þl‰Þ”c‹U˜Ê>}3² §N´°DW*å-»O šñØr÷ÏÑ×Z‘ ­gZi_5©‰}hÔ•½¢hMþ Ú&¢!íïŃu1«ÙȄ؄áØÇLk0ò^¦pº£²©G`m¤ëD³õTú* Ç¦ŽŽAaQW…Èé„êZ¼æâ#?ñ­âH(ñ»^¢7}ö‡H0z?ÜUußÌÜùìO3 ¾$‡1 îŠU¨u‹1=ÇEÀãê ɧVø©ç½ê"¶"÷Ä?/Ü §­‘t¡ Ö5_ì›g|¸‹J‘“Y¥’™ŸMÆÝ|Žë0”ÞÁ]kMLŽõma+c}ÅÈ!Cñiu*Ó³¤—:º£††ÇBÌv¾‘¯XzŠäßš…såÙ@Ãg®ùš\?5i”®ü¦ñ©2gÒm™ ª…f{{´Ü.çä7Œ]¿*ùGº\¢cÅÄÊPÍñ_zYõ•ËZ$GÉ\2)1ŒÒŒ¬¦B: …–u÷nÃ6n‡Æ ;Æ!‰;l¾à>¯5|æ¶ÍJàÔéu`l1yU'óG¯OÛµ“On*TìI#ɬ5¨[?¥£kâò}R„¨S¦½=áâˆQߌô¤Õ“¢åp¿N•Î[ã½VDb;l²©,àõ0$Ð äš 0÷ ±>CUî,ÅíÄÌ|ÂJ¥ñ}q¬ö`®ö®a)'ãÎ|k 1Èoø*ŽSu}¢¢)N¹mŠÇ<9 Ã@\‹u$?'ëïþ;þf®UVß^O€Ô÷òL⚟è2û€3TŒl¬½ã7ßF‹´¥JíI±äƒ×ôõ"þ‚^_qý<«:8v b]¥f_c‚ü|*ÎÔž!¡Q^-z\›‘EÿÑ|ªdòãÉ7¸\{·³ ‰»°u°„˜ Éb˜ëWã¿‚c&!üœ\'±Iìä¾”j´²L–¾ŠÌžåde¨G©™_JÔh¼ÊÇê¹ÝY`?&¡€? 1³!{Ñ?EåИ)øIöÙ\)‘˃y!ãäþl±B6«ÅLÅ5:V•÷F]æÞ´DàÁ7?p¼AM©k, Âô¡¡PҪ߱FÌ}½ÊZ¾þ÷ìËš¬ÞÒZºÏ×8,-Œé¡ÕøØÊý%½˜ßå—ü怗l?)üQf;ŽmÖÕp½m³*Wï[!(ИÅ÷à^½hSÙÚz‘Wx—ô9x^™Å™–O›Z´æD7iif¬øg¡·`šà¬Ì·ñ+OñNÛý·Û*ˆrHb–&¯9,¨¨n?Ý0Ô¹¸ \$Üž…¿«Á)2<þ°M°ÇHô]VI'‡0P | Ù!³ŸB¼%ï`Õ¬N¬’ŽV߬a@Ô‚ƒ©¬+F²³&Â&í=úå€}QÆó(©XÑ/Þηþ¦ƒf.žuýQÏ×ÙzzS0¶ž¢/7µ·¡è:Çá«,"úZÖaîÒ(kY¨Ñl8RÝ/Àªb¥‚vJÌi‘Ö´öÃnŒ7Ãzé¬Êñ@Íü£•õFì˃Eí/®ßµå3¹•>¨ÆÃw!#7Äs¾¢—9 wz›¬}G=$žÆÊ? œº±Ò$f<@eí“.¶àeÚWø­»êBù8÷µ_BÜZ%:60qîl\¥ƒò£s©“¿ { ÑóC''µðÇ7µzmòbÛWV¸ìÊéÎhȬ†ŸÝ<}•µ7ÖžZÞ;‘#š‡lV\±Å±¨ Ì÷K¤˜¥É*+ùÞOõ +åÇHºNa!Uh=äzH?«²²MçfÙä`©o+]¸Yai>‰°Ñ ŸëêµW£G¦¹Óˆ«¥Ðé< Âl"¢ÌFâ)g‘FϨÈÁŽÏøkÚ¦R C¥§æ×4|¶·W¸°ù¾øV}ZòƒNŒÖÊ}¼Øn¢"ßAúÙG&3Õ74Ñu–­@¹¼¯‹÷ÉR·ê/ŸùÂO®“7âïR|ŒŸˆ e`g ž½q"¸D\39hLQU_ ÷þ7KñFoƒñåÇÌÌOÇ!÷U,Õ6üó(ÏßóÆ ™PÖmrZ ¡¦ãyê] 3gkkê8bœÔTÁ?ËST REÏ¥{òQ¤a¯"«¦1P‹Q²X gkÂﺚ×õŠ+5ªÃâO›‡8–?ç@\²cY¾Þ;-…°VدDÏC8¦;¬¿Y“ãödT²­ SÆw í¡ÇE‡äk¶,-*.Ä^çms˜tÜÂ>8ÝÛgü^ÿ-‚NOJƒ‹8l–(™b?ˤ‹\{ …WñsºD©Ç+%YF Ùþ ŸŽB c:-/šp–ZS¢Å¶gz 'Úi¨öyGÝ{—O`ZÁ!QZÒMO$ B— o²^Ù‘í²xóa}¿g·Rq´BBWÝ\ÎÊð'˜ ùeù2Džå w€Â´«ì–†‰Dtżxa”wMe,-zq@H¡¼†Å†ÀÆ3û>æ L—þN§6./8<`&äHýÀ5ëÏÅj ð:Ô…"éc§§¶½É•z;úóke¢YúõÊ'hÿh*ðŽê[)°(,à| ÐXÝ×A«³+›$š´œ·?Ý?BŠÍ»ìã£#âDP’¼aO˜â´l¤°½jé !Aùýƒ)1@òeÎëZo•¿x•pNæ ÏHhx&&ðÇ& Í×É’”ÆbªÏ–o”MtˆÚ´9AŸ¥Š Ï±íîMxC–ë¡#š©Ü9>D`AâÕÍon³ZÉëºrÏ›jÔ², 5ßëtd‘5ç9ã‡/É@Àõ8?pš~mˆñÜÚq]ó«â¬íB¼-Dï}€¾sžR·Æ,o5EWQÊ8ŸN*„Í.®–û­/Td*tºÚµ¢›Ñï~BùÌþ¥?·†1ÕÂ…Ïpd«O)&46ŸUÌ9Uæ6@OZâËŠdÌ\jñÊÐ#½î‰EÙF»Òèøˆî€VeÇxÏç‘»àWuÔ¡òœÁJê|”/\Ñ’Ñ\êT]ÀîÐMm‡T€®(œ4ˆ2Eìr37‡‘ÅÊ"Ù˜>7þ3=Ã¥ÿŒW{ï%ÿˆ•¼µ‘ÕcS±Dg7ÕC¢(.G*Œ›;ÔêøT#Õ…Ø\7[À~‹{ŽÓ>ÒN:[üêguh¶ì¿êlZo·Ë^2ÅMßæÑ1v˜sy ¼+¡HäFg—õ¹æÎã;ï2ÞE×þÕaL”¡ÕṎL/Ì“Çé¤b›€Ò5üJÔ4ƘìĆ.²¿³õ®ž˜°Ÿø…2‚BN~X›@²ñ8íᤱ¥ò¼`æGåß<.Ç—æDþ™ MTËÅEÔ,)—Ì9¹îLžO¬Dm/ùÅmƒ†x6ݵªŸ¾u›!+.•)=á?µ“¢Šød9Þ¬›¬‚w×8ùjB®>â§JrÓ-š“Ø:ÿÊßjà]înb­¥Ë\Ҙ蒟°~4ÂÃÒ•\ ¹Ñô8ö§x0[ìÕfZ?¥zú&ðõ·Ü,\ "#£äfv-L̯,/óüåhÚî°Ž ‘@…”@–„áÊáPqŸàÛ•Gïéç$ù!Äøxy hòÍaի„®¡ºÊ«Ê›ÎØ.gÛW «Ì´Ó!„"f戗ÓN¸’JŠ3 …0x(RŠ|ŸšÐ îeÍ‚sûÄÖ¹¼Óæ°,ŸYA‡cÿ×vÙô$mæ*Wëvíh„*e¡„bÔfEøé*÷‰h&ØùÕ´F¤})›à¢ïƒZÅ¡N̉ËükŸèëë[vÈñb8SÓÅë¦1~Aà£lÇ©8qn¿v Í/ª˜0 Å&êJlÝn?¸î+·„Ñ|,î5ÝD$+¶&­zljñ“Ù(+}l¤'}&3†j8™D¶Ç[Î)Ì[íjÕ:§n¹ïÆg/‰¡í˜çY½òÇïÍߺ’ G–hj¢Ú“pÃÑV…K]­Å‰Õíª Ýö [Ò…¼AØpuGå=ùöëGNòn)TŽÉp±þ­ÍóäÆÈz ´@ü¬€UMZ-Bùc óŒÓuôïFCñÓû"ý^º‘µÊ®˜}EÂdÊšuOž©¼wëOÇQ_¤úE0¹ |ŠÈò¶ßçl½õÏ”Àe4ÿƒÞ’ŽÒçüÓÇˡ¯iié°¦±ÈkTGÏS:=?Ð1ÛÎv1o>tàƒèꉖñî” GÂÐô‰s`B9d¨¿•¡Ž;—I}ûÂDndp´Vòp4ÖÑIP¥ïùW°Ro§­Ú·„`à„€{í#ŽÒæë»aÌ]Å"¬¯a<Œ ˜áÚ o²Áqð_ĨÅN‰Mr¼ãž‰T”0M—KËz:$’<$¥$c³Ü}ò².Ñæ—EÐÅ‚ƒ$ÖØó¾9j0‰@€¶Äè ÂB§÷XŠÅŒ1î2ºw¾_œ¥±@×/%FÛë:_Ž`½ ¼¢}vl逧Z#õ«ÕÌîAŸtc^¯Àûà4q©.™î•¤¸äâ7æ‚aM:)¸Öi‡†#„¼¦ŸÞ&Ê6pÌNÖeòZé·Püá+€±×Ñ¡þVrkWÖw A¹f‘x¼ká«B墴 CÕ íßÛcü˜zEÇÎ_dÝiñúù~F& !+øÄeó¢|Ç"‰,;åc=²!þƒ~šaüœiöäù¥Ìs„_OàÁ}ˆ€n¤)ÑbÓ YÍ’Ér©[M÷”ˆLÊÇÇ`ˆ'±=6Ï¿ù¼¤¹K4ÁC¹¥å!ogÅöK{èÒä©–¸ª¶Ý]>Ûmz ¼º9¦¹]ºfc¤Ô£BòÚóÿm< endstream endobj 187 0 obj << /Length1 1676 /Length2 9268 /Length3 0 /Length 10337 /Filter /FlateDecode >> stream xÚveT”k6%ÝH×PÒ0t(ÝHw 34 1t£tw RÒ JJ‹tHw‡Hׇžóžãû~ßoÍZÏ<×Þ׽㾯}¯‡FM“] 5ƒÈB`ì\@a€”²¦’–òpÜè ZÖ0;È¿tˆ³‹5ÔAøŽ”3{´Iƒ`Te¨@ÑÕÀÅàâæÜ@ ÐˆPga€4ÈÍ Pæ(B .è RPGOgkK+Øc¦ÿ¼˜Ì™\BBl¿—$ì!ÎÖæ €2f±Ìh²hBÍ­!0Ïÿ Áô sæätwwçÙ»p@-E™ÙîÖ0+€Äâì~µ PÙCþiŽ eeíò—Kjs9C;ksˆƒËã"W0Ä𘠩 Pu„8üEVú‹Àø{{\\ÿ„û{õ¯@Ö¿ƒÌÍ¡öŽ OkK€…µ *«Äó€±@à_D ôq=È dm2{$ü.•P€{ü»CsgkG˜ ‡‹µÝ¯.9…yÜh°ÔÞâsAÿUŸ´µ3Äüqç=9ÿ9b[¨»ƒ÷¿ØÂÚlñ«°«#§¶ƒµ“+DAúoÖ£ ý_›%à‚ q@<Ì­8%Ñòt„üvrý2?öáëíuX<¶ñµ¶€<þ¡{»€Ü ˜³+Ä×ûOÇ#t..ØÚ0ƒXZ; ÿýÑ ±ø ?ªÀÙÚ`|!øë÷Ï›ñ£ÎÀP;Ï鿚SSK_OOŽõŸ¦ÿqKJB=ÞìÜ@;7€ŸKÀ/Äðýï@j ë¿ ùc©‚ƒ ôW½õŸšÝþÓßs øïX*ÐGCLÿêÝÈ4|pý«þ÷’ÿ—ØEùÿÐûÿÖ$ëjg÷›ÁôÊÿÅÙ[ÛyþÍy”°+ìq”¡Cáð¿T]È_S¬ [»Úÿ¯Wz ËGi³ qðòÿe¶v‘µö€€Õ¬aæV¿eò—YûרÙY;@Ô .Ö¿®;ø?¾ÇY3·}¼N\ÕùÛy¥ÿÎ*ã`ÿš9n>~ÈÙä‰|7À›ëq8Áßzpr8@aKú, Î迎VHÀ úeú~UÀ þr8!@n§ÅÀiùäpZýùœÖ@A§ÝPÀiÿ/|.§Ãð1/ôÈûÈ}¼Tÿp?frþ>frùò8aÿÀÇㄹCÿp?vìú| îþ/|N?àc!ž¿áíº¹«³óãMô{@ä?ø÷µx@ÌÑg§¡æÏßØÔ¼i¹¬’ wgßæéâ×>p¥æE¶ƒ_ç@ø¬Bb[BΛ{&˜üVZmÐJ´ÂQ>$Ž\&ZÀÝVH²•Ÿ A>œì€£ö…Š0æT¦Ñc`Y|Ijή”g¯üMé¹>ƒ¨Ô¾f”ПòÒ`{ÇI™œª4¿MugšYˆè:軪¼Ÿº0òä@›4Ð&(4C±½aìŠQÑ£áà‚ ¼ßtjº[‹Ï2DVóÃŒ\¿D@¸m¨ûÚªõ¥x|[AÄ;ÆíS¶‚‹Y%Ä?:zgu¢O×ÏI…Ò²Ó‡CÜÏ¢UÝEG&YÞOc¦Ù Y¸îXÉñÊ(ÙàŸg:ÊÁo·ÿjJ·‰”£ù‚($W>TjF7bÄrW>X¢¹ñ€ôüÁ.~S–?þ•I)šþíTRl½?@KQ§tï†ñÄQUºsÂô%È0ŸâЇu”)cpçåêôS?Y-CÁ®fGÒ:ãlþ”°y÷¸›±Áβ­ ÏÚå1.Öø=¯ƒ±:*·ã ‰rÒûOô" ¸Æ£3ðÛ¤“yT×ÇŠÌòvl\Bë°úµ.-®ýÃ#Ìž yxßfƒN¸‡_™<[D+0ÌSËÐYŶ®Æ‘ÀóŒÏÌg Ÿ‘ïÂwqõ^§ šõÈKæ€SxçÑé³îNËûtD>Œñ‡ó𲕈G¹#De¨XØõ$OP¶Æ °<÷´|hªÊ<ŒR{ë¨[_³³ÐÔ3ṘùÔmâ ávbc¨ £“v‡»£øŸü”T”¢tG4×ÿ åï0:Mj&¦JÀ·¬5‹´¾¥[37!éî+iô}m0⩪}m_cÛÂèŸYjØW Æ{P‘d\óí3Nã‰É~RMð¤KŸ}Z[[/6ðþH€†ªt9ì¬0„sÅË’À•‡ï¨…Ö’—Ìñy‚v¹sW€ùyÍ©ÿfjr‘7" ZEãÁ-§\O²°£Öµº±”27ö;oä¬Ô$ÕÌ,Gëܸ.ƒ¨L±‘m›$Ȩ˜•9°/;k5ô_M<³Yö¨À¿0N¹™T‘º t[oé’0”t)êúÖÕÀ[功·øÀŠK%LÓÚHæï ²¸%oñ{qH¼žŠ—/WÃG‡ë’´ºÕP’†@¤LÌU!:¥ç¹ù™uÖ—!;о¥]l¢¦Ð{Yp·Þ!²×m%„k¾ð‰”dÛ›°ñ¨Zõ¾¶$ëØ"ŒtÍÀ£­›Ã¢’‡S•ÖæŠ,±†û|¨…aQ.tiÎ"œ¹ðF­ö_­"± ‡&À‹ßnq¾†œÖÔÖi£ß±±S“+ªDRçòPI\ôØ-vöÏÕßœŒÃ’AƒÚ9Ž·mW5ȲQ¼b;¹Ó÷¸ü%‡ônÔDÔ©¨ã$qÒà•ÝÆœî€¸pbv¢,Ý MfÕ$Ô›1$ÒEux,ZwÓËûé.e¢‹–A ôbÚRž"¡8 H'IØBærJ\º?i_å‘"£œsÑíáˆáGA¨˜Ú—ÚNæôzH…î—/{ëVÓT>¥y¦gѳçÏñ2£Žé_ìsxI°M=EÈEð뽞q3×Û‰½RÃ×ÑŽá rÓ2ìØ:ú½¢ –w¼Ì”­fI-6wW¼¶h¥(Ë{PS§ƒä䋹Ÿª~†÷VE²Q8óÛÕÕýMý¦/òÝ…²džÓ+|ÑÈ+Cƒ^R)w«¬Æç¼|o= +?—.ûß U]0O?÷±sl£K ñT šOñëÌðÂKnu“ƾ4·‘¥fᬹZHG•½54 b4 ÜqzÕÇÄ…Ï`Vx7d"R½'Eë&®Ž–áÙoRx¾ÆøE5ÞB9~V¢§î)U&¿éž¼LËIœûAËp×®¯eeJ•ãÅQš§ ®€ôj¬¦ÍäS1¬žŒ·Z®•Û…ºåvíµÒ½N™PâÞ>/ÇaQù÷ó÷ôBc9ñnñ‹2­`Ô~5üÀ×-D9ù-ØVü/(¿øÖ€NC6&Á¤õ¢W·=>DŽÜ dFéê!²ŒÛº¼q|ŸÔÌ I~ÂåP]“e)…mîrÌWúy ÕÏê„õS¡·Ïw“ õÑ)gî+nU¤Â™&ìßO\}…ƒûœQ ô: ¬‘W2§ƒ#å脵ŠEygBeáÀ÷SsõÝÎÇêÆ[zõ^c^Y¹ð3ª£$iÔ=,ÙCmYocNEi“–å¥E*¸ÛwÌ„´ÙfdiV;TK‘5Ž_Q-ì$4¶L1÷úŸÐ¸|”{çc\¾eMá q©ŸÝ“YmÀÉÅÕÃ+¤ÊK´X ¯EÈŠØ¥›É‹ÒåÏä™xU{¨Ü a{]‚ä0M‚ÍfL¢IKº“ð·yD”ƒ§Žá”| yçHܧùÏtùËóS²FIщtð §áÏ‘#­ÐB ß;£Øƒ»¶ÇoÙ«·Î¦Šˆ´êeŠnº©áž3½+a_ÄjÓËÖžO-pšký°ª ì};¤óÆš06pÛL܂ۺT\&m¿›¢¥å—ŸËV+¾ÙºëŠÙ»”ïŸkŽð\u51¡4€B}'ÊŒ$7ßLþˆÝöÆ5uÜa{œrû°!RÉt2¯}$’Ÿõ(ÙÖÆèàå¨÷1à£74µº£³ã ÄX~2îMLðV~ª=Yû ãh9úÀo”ýíº½¿ýë{ج ò&¼C¥­ˆ}5lV3$äƒ2 ¢‡HC«W&FNŒf¥ïÛSše“~.’Çm ŒðÆá)¢ÈÑ`Í9—l”ª¥›•hpŸ=ß[ÚÙô–—:{67bjÑ+„“Äæ¢T͇5íz|F]Ï\†‘úQ,Þ’œ[€G]—'! h¹ùe»èëò$Îå/¼ïÑ.òn´hJ˜Ž¹LŽúî|¯Íg½AK,[àãžZV4šîWágÜ éP?x:í§ù«oFƒÌŠQûeÒ/œ >°Ëh ÒžD±±“ļ¤ö{ä/n “Ÿgášk–œU¿ß©S·‚(ïUF²nvw¼W&Ú?Þ’§¡Œ3Sà竛ɰ)`"q„ðø8f±ñ®‹i•]‡Ôðî?DÍ z/jSžU8¿ü Ðî·ÊMöó¸K:Ä;M4ÄþFæùòI’=–Fz`Væ(ƒ'IP{Œ@½Z$~s:y©ÒG¯ñ:Ì/˜Â÷°øyØ­Iz§G«Â&F’`b@a@<†&ñék÷t$×ê=±/Áïž)¬/l(,¿ó>`˜`7ÿ¾ûQ0á^VÆ7à‚ÍÊ}b$i=ôË›IöKq÷%×Ð-O>ñÓ› X{¦±xÄ k»RÓëσ__ AÞÏÜw¾j?IT²ºÔÓk|’íåý²q³Ÿ_T®‰”ùuxè0JÇòáXíc%–’ˆAo †+.ÆOA¨n¶öÔÁÙ²Ö>]¶Š ž¯a!EÓ±ãÒh÷¥„±>d¦1±òVL)vûzµ‚Þ¦^T¿©o—„Èjä˜Sþæýƒ-Ù±þÚ¹™D…‘oÝÛ‹šôÉ´ [Ô)jÇIeäiCw'ð¯gĽòí°Ám̓y©Ç%Üý:­+¾ßU=g¢5…ý7ÍKVŠÄäNŸ†²L"‘‡ÅÀóÜà Û¬§‚îômâ7óß$M©Þé¸ÊÎXLW¤p†ã‚‡ü¿T¯²wZ†póHòôJõt´¤NûRëÌËOU_4,nÂöÉ¢­Ñ>9ã-ž6æ'œ>k„~¼tµžÙ©l|*À“¹ÜZ:Å¡ÿ½~3‡Bñ¤»5„ª4bÅʰ`ˆ­‹›±i)iXiúAßü*Šãg)»7xõxb­È=m…™Ù5~î5û-©¡†É}ƒ¡ÇtöiͶáÇøÓ›ì52×Ôô‰‚¿Çó ö„e•Ý}“€ü–Iwô÷a±¢æX4Ønã_^hÝ¿#ž¬³»–*Ù‘ î²´èÜÊ :Ý"3L±È[`~[~^iµœ¬Ù-ˆp]ÙôÓˆIi‡oV?8>„ |³?m™Gˆžv3%,·#.<óÊÿF·…»þÎÛˆEïXÈé4Tµ‡Ð}ÎIâ¥QÖŒç¡}åË4­qî~§§äVÈGQr>ËKéZAzQTR§pu¤Îµµ¹NSªÛø„2qFO<ùUŸº´%¬Ì~ñ6rú19œà,ÅnPí–-¸ƒ}œÈJ®|Žàö2úÒ^ìTÂÎ5ýÃrB)Uu}´³“²z\ÿ.`C$[i 6þ -”…]!FE¿=!Ý©,Ài“nÑ䤯«ù¡’…„bêÛë4vé™±å U¹¯"éÚtH3ÃHa‡ø`¡¦ÚØ]¦â0ƒÕl¬ˆÆvý¨]Òš­{”«<¸þÌFžÖÃà1NjɈ,¤Zb|µNØó€7£]~jŽ.|Ù£4”]0s†È«/ozê5Šªƒ#òfvÑ-}ªŒRj=§‹Ü*W™Q´B— ­çöé¼Ù.C5‘Úi„fgPŸ —½Ýu÷–"lœ%=ÊxR¼cä4vý5 bµ‹é,G+Ä §iÉqd¤Z’_°.#ZÏ.`t„\\eϺ†~’§s-ë]BÐE¹º­Ø~¬ÿ˜T»ëçºÍÐf‘èR¤WQ) hý‰ásG¶­±àøm®ô¡vÊþLH¦BJ‹€Œ¾VÐ’’yiŸ!—Þ&Ûmò¹!~3í&¸ÿ¼ÚÃ7Ý;z7aÅj”¹úýGIö*³çò,H ê ·ù³F"‡18Š×xïüîÓ¦&(;»?³.)6ÖCC‚…ŒßÚβƒUˆrØ[‡½­$D*óž+Ëÿ`0bµ;V¤t›¯Ï©*“Xæ$…ÛBRëÓ2¢ødƒð練¹]#Ž „ÞÆë†äúÍ꫃UDù:¹2–„ÌÂ1fmPÃ`~I”Á@Êé¥ÈÀ—¡gÄ<·klÍm| ‡*͹ŠHã34Mö—÷ÈªÆÆÈlN_ÂîÖH´î“Ë>ƒHÇ7¥$.-¸$ . VʃZOTô'Þ¬BÞØc÷ÕAyreƒCnѳ©‰NªÉWÏ\Gž—?ßðÒ¾ X*E`.Ë(û¼;·ã&¨Z·…s¢…¾uð›)©$} Ù÷eš-b*ˆ„$–ƒNFË.“Èj#I£pNÆ÷á«xeïîð{È^ÐÞªä1ÛówîÂÐMqu»¦ÓZZÔ=ê´QOn Àªýåü‘îžwŠ‘¥»@iz·×æˆT!P¶zøËHï,út¿ÎÒV8޶V²ûd,”ˆD¾f³j·Ók©G0›+%<!•*T©ü¾ Ɉ&VÀÙTlªww‹s„Ê®EN¦‡öxцly&(}øCéb^±ã~ïFâ<<6^=­tñgâ,‡4QÄöl|GñŽ3ÌÀXÉ׈™Z^œc'ðÁXOnå û Ã^‹½m¼XQ±<ë¤Æœ¨Bû²²+V62T ÕM§pGGpêMÛô3Éwåñê~q‘5ó4ˆXÁ}0Nó=Fy!®f@‚yëi‘VïåóxDwŒÒ˜Jd½.£=ÎÀ¶Îðä­¹òP!oAÙw¾×= ±‹ ˜\A|¯ÂÝz×”L´¿f?~]–¾VßyKáþC>`¹‚}»€$¥ f*Pïç!È|÷쀎;”LD%ÖLkRJIëN¸"Á†ØjZ©PýsNgƒHe;†H‰"k™z)¬®,‰m»³Ø{†V˜|y%û\ÉXοœK͘úúdú+–=É-Z q– R¢xZ‰G¡œ´ëûq¶¼Z†õS%Fë8ÖTQ˜^/cn/€Ÿ›!EØàÓ_ Ï|LâXZèÏ6Ï*CGIØŽj^ŒËÎ2OÙv½m{Ú1L >¸µõlú~ˆÄnJ£Ì™òÁÐxXâ ®x7ÓoÀh4å9Ä€ººÆ%2nÅÏÈà£^#Ôúé¡ÀÏáîK7 ¯3[ã!ˆ‘h_ ¬ü}¤Ó{‘×Üo:÷³Ç¬l¾Ê¯DH“y…µI ´Q¿Ã”•(/GÎtý‰pQ@³9÷ÜÁ}Ex·èž,«„ÀÄV?çf{;¹ž “ØJ‹#}°Û$ÝÄÜÓJøùZô­.yCªÍ ž—Å‚×ÈÝmâÚý5;‘]Œ »õ•èI”¿š¿qœ ÇQ>–f§XÔöqh†,‹ÈfKßÓ[ÎK%¡„JÔ}ȼ’<n$WUÖºw•œq‹fPÉ k ǪðЇš;t” Ô÷OùøÐÐû$¼ :ÐnqD§±N57ÐÂŽXyjÕx‡H-ͪ½bK5§Ù$Ð]zG¯uÐ0oJ¤.ÊæNFU®æ¥·„ûAÚ}² *s·Ž{öüI™CÚ×GÆßÃû›*[¢2ãx÷=“æ„íGŸÓÇø¹Â·l¼Æ|­Þoã"z^¬!nÝ"Ç©íZÍ`ùùͨ®‚zˆ¼õ½¹é‡g^®¾åŸŒî_+ô˜x¾L6c» H ,[D³²Ö£‚c‰êžÎ”5EÍùÁÜÉo™-gÏvó GvÞ~׌̌„ÁÚìFÛÓ3S»%)¨EÁŠ€~K¶zU )\ú¶”Ç@¹ŠÙ.]}£;ÈO'MªÕ¦ÞùtÐûúTÀ“h‘&öø™›ˆòu­³93örêBåxjœ†ÖŽ›Éo xr0ìÍ1‹(5. ç0ÈÄ®hµ5üª¸Ìº¼Ýj_„˜·¡ÄÚ^ ŠiëAÆÂAqkõk-† X¯½%þ /‡ Õ£ÆÒìé5J«ººÇr˜Ä†Bÿ‰P²¶Ch'>ø†Ošë`@ŽGÍŠÉëÁ·¼‰³îæ,Õaâ¡DiV`q¢Æ¹É×$ñ ™ghv§²;¿»töå‹(nÎÞ½ì¢Ä¾62éïáO”ɵFz"aÛ*ûG³Úì7öy4÷ª˜XA >5ÊÞÜÉÕõð«‹äs³I„S„,ÅØIgqrDŸŸµ¶S­†L iúÔä8ãü-K)F¶ü€êZCTß”õ7R¾o®…t%›„L·»ŽõÞ¾:ƒ5SV5(wF›…‡7É^ì°ö ws>±vE?„/ÍH¤˜$xBßwF\ ˜xug”†äm[+Ùús~—M³EI|Üâ³ê‘u(†[›x,e½¬QcÓy܇© ¾…ÂÇÛGÎuN̰e¶š:ùë–Sƪ4‘F§O ¾À/þâ¾óÔÓïC¨?fÎ[`íJŨ:0 ˆå@Ðmb ñÞMÃê‡áÄ¢y—ƒè"ÿŒFjœ©ÄùDÃ)ÌílI­ôùO8§Þ)Õ£ãXò’„¶8®Wã­¥´Á¾ÒoâÛ˳UØåÜæ—óŇ¼^ö›ª¥õOB_M6Ðf$Þ+[|`â¿Ê÷ÿ¬Ü…iË—1Ô⬱ué!‡c° Ñ'·mÚãdnn°¢gVòÚ+9ieŒ ?Žcjü… ÀÄ΋šªü&0±ÜdÍ¡V:2PI{Öн^½ãl¤s¶2©Ã´#>ý(¬Bª¬þ]èÇ9€[çBàg ‚@Fßt³îÑ;£2Ï÷'–ç5.1†Ú2ôF?QÁó7ÉDZKBO FÙ?`dfæ$'rÖ‘§j„8¶Ñª® d4£¿¤ÐvIl”MPÜž–ÌxµÖ}4ÒžBy3=„¦¯?*Þ£' âØMiP\ý&~´øÎÔÑ€xN9¼íã4ÅOFH –Ì0ªXñyd© /}6¥Ìt>&_t¡5¸‡lß»zÅ4|µ{w™ô¾¼ôi–BoèNOeäÉÆ+$Ǭ'×£4µÉK×D8ä^áW˜Žb°U—gÎŒ0zˆl8ža ‘–,›Ó°ÏÞ=î¤áˆ?ëxÅ-W”Í…º£üâªüJ×Åx-ÃÍm Å@9㉠;‘ ‡,;æªZEØ‚ÑZ?ëhÆS —kHàUÚ }¦ÄÞUu Ñg¡#.þ;£×Þºâ { x$þ«Š1˜,òüz õ1Ë0·ñåÅX‡Á‡]ö©å¾b>2ÍÛûš‰Ú«‚‰×?æîòzbmáJ©0{ÉN½;?väÆhVó»ø˜äK‘mbª­j²DFu¨¢BשּׁÊY0h@`Í>-5øN,>ñ»ô}¹W·,§lPö²žQ–…W–bŠqO)•_R¸QrUÇwU”K; P'e#ª$% »§äܽЄµÆ‚7í?Õ‹e¶»³ieáºó;Þí{¯)± ê]4ïÒ\LT¯“>l݉d¹Í¥—:¹QVjÖVSNœødã·\¼«ÌÝ©aýþlG Éç »HGü ¾áás31”“!ij;‘àŽbwÔ•‰Nd꯲oð èü¬Ž8˜ãÅÂÜ×ÖÌJ+hÑRÃWº÷zÑ2‚Kö0Ö«¼>tü¬¤žÕ¿¤ÖsµKÌéù™Í-¦7‚]÷,­Ü ô#K€¥Ãæ ýFZvõÆü矸ø©¼tüŽºTL«~ÜO^„Åà#–ïÓ«—N03àµøªéÂ7›Ë`k¢>%sŸ¬O¬&N#Šü‚ù­ÖßI¾¾Æù þ½`vòÎGt‡¾[£Ž ÈctwžÜÖRwuU}}ÚÝF·ìu^ßÁȢɊèüo“vÿÌ/z¦éútÄЉŒW™áïd5š0ëÏHÝÚ4Nm”Ç×Ëbûzi!y“ž%ß-Å¥‘^I¶tRÖûñ´Ä…$Qº·Ìl§2X²"®«žáÃï_>ï×:7¤; ª7IçÁëòd¢96zW迊cØÎôÙÚµÈq§0pù f%m‹Ôr1Ñ9VÍa¼`eÂ&1²V£åW @‡Ï ßO‡eyWøç¯¢̽bݤÈË‘zòÆèÝ1 K±®¿¸Žàu†å¶ÑÓÓ°}^Þ ¿ÆÕ wif³Jö7Œz˜~7ƒ ‘/‚ï‡uù:YÀ){ûY,‡‹éif/ÂÈEœtØo;Åòm䱕Ð÷–V¼)Hj1ÈDYbàñÙLó /Ù«´grªš¯âRêR:ú~NxBp2ê|‘oÅp^åø+¸§§Û€ƒeùúlÞîèF6 ›1VÂËÔÏaƺø~¶C¦™Z ØÃk-ŒTô¯}ÀÒMô+ëÐ{Íú¾J<³¹§LÈݵãñ³ë©Á– |:ù†p„Íò¾®¢tÓBØé¸>ñŽltê=-m‹tdÎ5%â4ÒbAl©t©d™ÞÕ{ÜãþJžHçCœÓEzKÊB_éõiý·éX>E¥Ÿry® Φ®þ¦‹h›6ŠêŸYFóK¶=»™ËhäÙ‰H trujoÔgª^¥™ÙۺŵzîRS ðûÃÏ\æÄZ¶ò &ƒZ‡]q¶w®\¸OI‰4×û [Lï¼ÉëyÕcð–Ð}'(‰á8¶÷TÇU :cÚ*UŸƒºªP£ Rgâñ%{X:¾[º9jp™~Õ04š<Â3µê<9ZÏ#LIû]Œ‚ÂÞ„üÑô3J/‡·U¼í,aËÏÑDÜdž&ô$Ú†¶f+˜3&{‹ 4”ÚZHx÷iß­D8Ä"D3»ëˆ'KüÜ‚#¶– 4F/yÚo¼½EãgeƒRôLÉÝ3wµuî*F½ü¶WÕXÝ›{÷n§cÅ/üŸè M Ý{gä:Mg±Ð‚izYÜ%±uF·´Pv>}ࡇ©l–ÌŠö÷R‹vÕ¿¢ì^ÀA$^ö¹õV‚¾š¼f³>bÝâéÏ\!˯Üx@ÒQ°Èdóø‘KAÃ<ëèÈîÛ^ÛÌý @¿lÍ'*ãùh©£¦9W¼Ná,Z5t5 vçñd¾ ôW]ÜAÛ‡Œœ~œ®H`c`S0}¢öZ™ÉSžIôTµ{¢—1B’Òv×IyX¾ÀNaW,=ªÙÉĤ՚±¢À·¯÷„‹üÕ«åAíidB2}ÇÃ}S4.5VäTˆúnª`ÔûMêÕš,åôÝ R1ò ‘)ñ·pÅp£ÑIàô÷(wæÓ‘ïŸNfV8N×·8Yy% Ú6Ÿ_{_ÎåÍ’ƒ+#¾HW /½`µHº.¨ÒËʘ©ÁÏ”¦ì¥~Öä;A½gšñª>ÇÀÀ³’nE¨§^©!%š:ß+õ±|Û&ÿ¶p˜Ë:›e³P ˆÛ¿\ªsy.“ñÆð&‰äìHc”áE´•ŠÜ©îvcm½¹å¶(Ã\«”ÝÞs–à‰ ™d…ÃX%ÞïkuéLò gOêw[¶mHü¬œƒ¦|Z—íªmËòç°ÎLÒ%•ÿÌ/Û endstream endobj 189 0 obj << /Length1 1401 /Length2 6058 /Length3 0 /Length 7007 /Filter /FlateDecode >> stream xÚwT”[Û6R"ÀC7 ‚¤tw0À3À ]Ò ¡Ò©H(%]Ò " %!ÒÝ)~cœsÞóþÿZß·f­gž}ß×]{_×^ëaaÐÖ㑵ƒÛ@”à0$?/H×ÐÓã /$€Ç¢Eº@þ²ã±B<P8Lâ?ò0eS#Q@ 8 Põtø~ ~Q ÄÿÂ=$°ÔÐàTá0EîæëupD¢êüõ °Ûrüââ¢Ü¿ÂYWˆÔ 4ÀHGˆ+ª¢-ØЃÛB!Hߥ`—rD"Ý$øø¼½½yÁ®^¸‡ƒ47à E:ºÄà büлBþŒÆ‹Çè;B¿zp{¤7Ø  .P[ ñ„ÙA<Tu@OEÐrƒÀ~ƒÕ¸?›ðóòÿîOôÏDPد`°­-ÜÕ ó…Â{¨ ÐRRçEú ¹0Ìî'ì‚€£âÁ^`¨ ØøÕ:P’ÕÀ¨ ÿ̇°õ€º!¼¨ËÏù~¦Am³"ÌNîê !x?ûS€z@lQûîË÷çpapo˜ÿ_+{(ÌÎþçvžn|0¨»'DEáeÂûÇæA H $@܈­#ßÏú¾n_NþŸfÔ þnp7À5$jAýáù#À^éá ôÿOÇ¿Wxüü€Ô Ø@ 0¼²£ÌûßkÔù{@}3Š~üèçïï7 Ãìà0ß࿎˜OIÉDÍXëÏÈ;åäà>€??À# ÄÅÅQaq ðßi´ÁÐ?müG¨ ̈ÿîµMuìõ‡ìôÁü;—&E\ÀþÏÍA [ÔƒÿÿÌö_!ÿ?’ÿÌò¿òü¿;Ròtqùågÿ øü`W¨‹ïЏžH”4à()Àþjù­\ ˆÔÓõ¿½*H0J ²0—¿7ŠP‚ú@ì´¡H[Çß|ùm7ø©4( ¢ G@Þ-?ô_>”¼lQ÷EÊ_.J=ÿ.©³…Ûý”™€°öðûâP\üùQz´ƒøü¢1ÀÇ ƒ#Q!j¼@Àî÷óL…@Ÿê€¹@ì‘?]¿­ü¬¿Ïï§ù_Um==PNä/f ZúkýKéˆÄojn+îTÞrV)Kãͳü{~±5æ‰IO´0’õsž¿£úÍŒ£îrÖve”©Ú“%‘#4œ;gC>æY!s)ʹH4Åž%¹=žüþóÜÚá£hjÌÒíÝDZ"k3L3¶$£‰«ÑNÁÕò•‚ï­ˆUSñMÀ(:e1wˆbå¾5bsc¶E·|–1Xx n î9½0cäjkçX/®¬b9YX£ÅšïàFÍi±}xñªˆp2ú ZíHTE-Ç͵8ó×Ìoù1õ!Ï G¹0g¯§ûº¶<-NxåÏç}:„lIÖ ŽEcºíÈ&s°Xs…ôA$ù½‰ŒqV]6í“ß6ÛΪ3ô‹«okb.„YÑãØnCZÝS÷hÍåÕßõ9iMýèæXùàè{Ó#”+»Å=ÿ O£"”p¥RªñMêÀú„ÓG¥Ù4®s·AÃIÎÝêë·zÒ ¶[&ä›^Ð-ñpµzš^ó¬&ë±3c\ÑiìŸ'%m=ño‘D+¬Ek{Uí¤Z\³æ¼ýŠó¥]ˆ„ž³K-b4'0X·°ý—zÿ#”ÆëýŒëºá¬‰­S:Q¯Ÿ·ÌqË‹ Pàngðì ’"eS?)<äš%C2ÕM@GÖH-Ü]ôD„´Æ)מjZF!ë&g¥ˆßãNHÝ‘kÆN¸4ŽdRydÚ2Mº“Êæ‰…}YçíkËâ ¢1štÖmbé#M½pš ôGÕ£æ9L Ó¸^ä‰Ã˜iº€fñÔ‡G¾¿ðÇÈz%æ`læ¼G³L{?Ñïu·ÊŒ~ëdúÙ·–Ü›Z*£ C½ù}¯C˜åe0±#¡Ážü–OÌ\é¶²–LGùnKRÛMáz~9ei#åæ¶¡hÏŸ|sa£ë>Æ9Ý¡ƒýÕ¦š°ºFÇ–«Ö´ûêËõ` ×r6el:&có³Ð’ùeÇS …Õ×öóˆù‡@Ù%µý…†Ó±ÉÐiGÉæH­C bÒÀø†Ø/×V½¹ÇD»~"‘ÆJ]“ƒVMªÁ¡ë¥$Q& ¤Xs»Wc ?J#íO¹õŠYj1šÛ¯ÅûŽžÁM©:¾¨éÕ'½Œ©u+¼EÆw"&¦¥õLB¦°–sÓÜ š0ݰ>$–Ï+jÀôDkÖ¡·)Ù)O*É®ð©øZ¯‡Žb19Èä+C‘ôôº¬¢îÕëoDXïÜîF̽žGsVíß°¥  Ú}¦G¶ôüùÐù«jÙd«"ÒL^÷äWÎÚW¸í/.ZiØð¬!M£9ÞÛÎ…îŸäMd[Ö®@©»Ë&sb}AäpP9ÛŠßM,šIΕÌSs§KJ;wØù!\Ž#-Óý)%tiépüFTÀ'݃@f & %Ì^¿nõ×›Wµ.ï›rŸÒÎv>K]7µ›$e%: :”…fàÓSnÚô“ÌT§¥¿¬ƒQ}´˜i—ÖŽ L˱k«¥z]#7 êœñ™û{AÓ"º¬ éÙlû‚ôì8û1`î÷Ú—Ûä†ÞÓ >&ðØ~ôæÊ„Û¡ÔÛei*Pƒ’ƒZÌqÕ *E€y” úF(ÖÖÔAš>ï+¡„ufÈjÝ\µôi¡{[—¼ï ,—ÑŒk¿œêÍ;GS'»AGçÁ‘)] ¾ê'Ò¶W2Ôªìš'(žlºã- {w“f4Ë Çž$1_N ÷aèŒå*å®`ÂÆßXwíMaÔ4!†d8Šd“GZÎò 'Åmuž&ÈâG‘% 9N‹pµ6~jõR§Ñ•\žÎå‰Â˜J›h^å£S›ŽˆpäÓÞé&Sˆ•*ã>_#ñ¼Ò%Ӽタ¼ŠÐJM¼­é[ñþ@(“ÒÈL¤3ŠîÎMhæÖÞÆcăÓ;?’#ž&¾$óèO3üyäjí!ýòXŒÆPoðᡘ¿èÝ×C†[<ƒy¸–§g^!ùiŸlå3‹%ìPšù>Fèiß7Üì ~®bæÊ©»³°–>ogNwãëv§Œq<Öîj|ô©‚É+‚šO²•ëÌ=Uï v&c'ÚçêÅ€{œ]Kg<‘¯9’¬4×Þõ-h±9)>i³'ÒÌÚÀN/4þ5)Pp°üeßXQ—~Gb¹wØ”µÝì1•g•?Z©G…Qê'K~.YNöab>Ž#|XñˆÍ¤ºô᲎o7ñ9W……ª©bq× ØGÃV¸Év$uW?¶s‡qYþö›|uR™È‘ŸOõqø!‰›ïˆÒ»kÑ܈x‡~Ç?<ÖÙO+ê¯^„3íß¾ì¾ÁÉ-¢FÜãæðDæ“æ DB6I}±dNé«oÒ‰§ñáfm[62Êõ—D°˜¡¹fÿ2K—T‡zBLe/<Ɔc{òå Ù)Š!EaèÖaÿ:ÕÛ7Í[xVÏaXƒ{™ Õ[U,¯'Ð ý"´Ÿ’MÒ*¼hI^v7ež2uPgÛd!ì¾Uî•#«y×)ó¼ƒQz¹U6Ú7÷¤’â9¥‹/ñ¼^ÞÇ(K88ýÔç-¨sûÕAÉYav‚¾Þ^5õ`QnW†ƒ-eA·Úh»?ñG%.È]š¡—SÈÕ _â‹À9s½nß' À?=s(˜o¼@Ó⡲ôG¯e›¬iˆcK4“ª8H«!eg3‰ Æ»n.‹¨¾ÄÓiês»°ñÉ5Aì2¹¸×{Ö±õó¾]æ­Á—µS_•6«³ûSõÌâÕ¹ צ—\ÊøEùÏåÍÌ«X„g#|_s¬-ïÜ2¥1g Qºf^äë&O•¡Ž»—>Oí¬6ÍBß2ß×µüîê÷úȺÌí¢¦ŸXpÖÆ<Æ»Q»jØ$]’ÚšøY$k'?âßÉtWtymшÀPšî4=±=v|8ìZgq1~¿Îy¢.5ñžËÝm/ p´š”îUõÛxl³á: Y•¸E²êè»d ›´äª†¶1ã÷ŽÉΑkr0Føð ÀmýUÏ¢JÞðÙ»ä>Å•8œ0AC¨Ía,ˆ*›à}lÿUŠ0ý¾€SX&\Žš•”ÃTss#œò-=µ{ûª,^cR2ÒËÁ‚â©àÇè2í…yø;} 7t¿¬o¤Q¥„%æÙ€]Ú¶š0†TÅœ‹ U†™­ûx1)êvCF ÆMǘNñ2H'È»d«¥È™·K2‹N™NºS‚ŒªóM¥ÊI-gˆqˆ ®·óù"8hwàÁTgeù ¥”äO–¯Zí 7 Ò!•ªy¨·ÑB¨C´&‡¬æ™̸,l°Ç—†¥ÛwW"ã•mJ7éáuY*_„2 ×V#ïHò›%–#Ô- ’®¿µu~¥Ù1Ó_érb*s roûFæ@cËU\Ê?‘ ÷„§*ÇËÅ0<¥N#à­»#¾zŸ+úË„ƒ&žÅ1ê‚?PI‰ñó‰×Ì”Do³;ïMƒ7z°ñažþOÝ(Ã= Ÿ¼×iërwÙ°Ÿ²wz ÒÀ1Ax÷‹Ï·øÛ ÷Þ¾˜Q™äN½¼=h{ÆkSx‘ã·ííFڌ޸ÜÀŸC;ßõØ“J±H_¹µ§¸†§µ“‡a 4 äôŒå&ï»qºöÄùð*ÞéÊ;µÐºÌöÖ‘åü†£j³Õt“#ùcŠÎ­ÐYYsg©Íâ£2I/¨ˆZýeDñY„ˆ3/—Þ¼¼­¿QôíAók‰§d4ØäuK’|{•údp¤:4­º&–ç¸h.[²§”×áMÞ²@FâîQ´4Ùø=®3PK¿Š–ß0z/Ò$‡ús’ò8&¯Ež 5ýbAC—J³gŠZÈÉ9Óáœt«h³Á¤~‹ó³Ïµ¡¡…¤G¦.Vþì”F•ûaÐ|£Á[2‹ wMM–Óú¥åÆ-dú7Å3CæÔªS­Hî,ºD²÷‹QÆoKÓǪçÇ»Êì˜Ji¯u®¾K÷'Ff…niÒÞSðï‚ÕJÊß1%OI×<‘-/âkzbåk{ý¾û®2œë g›ï=¬«·ÅéPLAÊ–ÁNA ¢ÀÑc!ß7Üà;Hsê3t^9-'!±ªÀë Ø9)¨èX÷:³;×;,ÝúI}\òÕ¦ù¤ÓÔ¶Et‰öáÔiß v*µÍ•ô>7¦NÒ¶C,fß[Å•„Ç ½!Ü+E]”Ä׿èŦ³@mX¡Fu¤­±vOG˜>ć§bÄÛ«á\æ[Ä-aê#ÉݶG.¹gÌæx;Ç›¥7SK³²U¸ŸÅ)Õóq†|†\ÓK:™¢Í/Ëcñ‘:Q‘˜$õºÆÑHI®Ú{œËîwêžÙ?„d«zjµÚl™toîc~=pt>p)UDç,ç~óãÅQg4&H'÷žxPnkù1ï~þõƒŽäµDÂ!t:j8ç²tśΪ¹‰J;Ãt徯Aœ¦cP Æ´=}<‡6ÏO ³¿ßÜŒ~wÊÇÍ%Ëd1¦wªŠ{„oÌÆ®ÿÆM÷f̤´¥F¸îyÊÄÒûUXÈ+ƒZyánüÜ|³È2ù¨Î·Ä±Þ4ç<«¹V9"®ÃV^ÙéYÏ Õ^©ë½­'‰räz>©ÔδÔö¢Aº%¬–Þ‘óÓ1óÓÍ‚!QŠ_ÊDH½Ž^äKëŽ$]—ÀÙ’œ]Þ÷> ZWöÀWÍŽ żè^ Óú,!°”c–å(<êþ`‰¼÷“ 5 ©¼“¦¢ûÀGñnEÎŒ:×ö˜S7CíS™ŠéR%<¥äܵÓü«••ÉK.{˲0÷ z¾ÍÌxÞ» "ià"h{˜ë¾ýfÞ£-h©TŒ Áí£ ¥I>–o²ƒÈÞ9jͤ€úÓSÇŧ—dcX~­Uk²?of¬-½Ávˆ»Â£Ã1~9³0?YÂ.žyÖ$­àQÌŸ¸B⪥ÁtˆzÇ~1¢ÐóÆ?Lj£ÛÚ¬Ö;Y¿ùòݸ2›ºª¤ž y†@6ãg‘Ûã`»¡6¹BóoÃß `geØbÓl¾ÊõÑõþK Õ·jvL [̤8Årܼ˜eáÙ œO V¥‰3‘꺣‹˜bóÁs5Jwú²ñdóùvc2B7*ð6ψ HjÍ{ã—Þ€)¬ÜÆÜ;zÈÝByt…Þ^_ôƒ^N°A9H¤ˆ~šÙõøCȳòQXe.¡øKΕº!÷¾oÓñgíaAf+¬ï^œû²³‡»¯*hÑ(>Ñ;í º˜ú›XÊ2 i?»ã9ÂRϺc;`¬v™0Aç¹|{§{¨PŒà ±òÕޣב‰š–}ß@Š,Té_‡Œ« R¥õZÅ ÍZ•±[ó—fŒrr®*RG {¦˜‹5ª; ”‚&_Ðô&È;Û?.`³âÆà‚OÐ^„jêã »Yàâ3|0ÂVø‚]Md[¥SŒ>‘]ÛÝk$ÖàiíQ4/.ì[Ôµ[Ÿrkù¢¶bßW¾¢eÔ=©·¨¶%ÒÙî-‘YÕf×PŒ…0õ”Ôó`?êš¼ÇÚÊ̜ީc—å~YÕÊDH]5™·ó ÞTYœÈ‘¤Êª3ÉB©o#ô¡ŸN—QyÂä–ÙH]ô„^‰È÷iËøçûÖò[[\ñdÙ”>q…]òPÈ>¤¼ûãÍ÷>U—tDñ‹0%þFM™4€¢KÍ' Ça幃Þ`ø¡t«´û|ÁóýIÍ3_wåó^ãx:|»,°=¨s°ô²Çêîæ^³ÞµE…è]ÓŽ±Éµ ËVÂ3¢Ù'âõhgç¡ÃG‹Ì6LtÈvbõigo¢Uãn¤ œ*ôÞ¤;†ÃȾF¯zâGùç=h­"I×c2±©’…QØ–ÍÂôÈœÇ ŒÙð÷úŠã5îÇàÍçã6£NÛ[L–ÅŽ—:‰—ÞÛÇGoö çkarj.Ÿt"·Ô´MÞœc·qéTZ7†u»|ç³bï2KëêЗ;mËC^’ñúI|Ç>HãU•xÆÒŒ}ÃQÏ%ò󈔗ӾÇʨ-zc%•ßþæËÛ\+”KÍÛKa5í†Å2ý&É·¸Nå#ÌŸ­E<U®B}·­1T÷*/û©—5 >6#†pvŠ›wªÃ5ÃLŸËsúo˜}‹PŸ˜Æêp¶±;Wà5T?ox|ÿýÇâ8…‡» _ºâ#`£³#‡ãï§,õŒÄÂC¶'«GlGüa®Ô]%ô£Ð·²aûñä^ÝøÍ…òä—:Là#& fþé—ûúRcR[– c¾ÝÝÜGLÏ\üu+¬'êÅaø§¦þN„z¦oEk#Ìøz-ên„Ö;ØX ¢€H‰¸µDmú@¾ƒKºÍ¿cŒðÙó3‘¹ú‰(‘Rýç˜"ÒγqööÅKéÕXW$E˯öˈqœÌ‚¡>vÉqr¿ŸöçTX5zSò†FZ}²®ýÚÕ™ø endstream endobj 191 0 obj << /Length1 1387 /Length2 5972 /Length3 0 /Length 6922 /Filter /FlateDecode >> stream xÚxT”ÝÚ6Ò"’HçÒÒ-Ý Ã 3È Ò)Ò  4Ò­¤€´´‚tIH« ßèë{ÎyÏÿ¯õ}kÖšyö}_wí}]{f »¡‰2åÕ@!1B¢Â@Y€ªž‰•(Š b$\\¦p ú·„Ëꎆ£²ÿPu‡‚0X›ƒê¡€{€¨8@TRVTJˆ2Qî²5'ÐÜC!¡h.U”›;ÜÑ ƒ­ó÷#€Ì•‘‘üPv…ºÃÁ $@„q‚ºb+‚A€ ‡b|þ‘‚÷®ã&+"âåå% rE £Üø^pŒÀІº{B!€_#ôA®Ð?£ “pLàè¿&(Æ ä` 8ŠDcC<¨;[`¢­ 0pƒ"ÿëþüÙ€¨°è¿Òý‰þ•Žü ƒQ®n ¤é€ÁP€†®0Æ#!!¿€ …y‚àð»u@CÙÂNøg>4Øî†A £áˆ_3ŠüJƒÝfu$Dåê EbÐ$¿úSƒ»CÁØ}÷ùs¸.H”Òïï Ž„À~ñp1CÂz@µÕþ`°&’Û¡€PFRRB}€zƒD~0õqƒþvþ6cgðsC¹`Ø1 pûAâ‡yBwh€ß:þ¹"@à` ÀêG’ü;;Ö …ýµÆž¿;Ü` ÄÒOüõúד –aáóoøï#±P½gj¡-ðgä9UTPÞ?!1€Œ$ *** ’’ü3!þ§ÿˆÕFÂP™¿ÚÅîÓß-{þáïðþ™K…e.Àûo¢?JÁØ7Ñÿ3݇üÿXþ+ËÿJôÿîHÃøíçý ðÿøA®p„Ï–¹¬ ôPX- ÿjýKºzPÜÃõ¿½ÚV ÊHG,£…Dïïüe‡£5àÞPˆ!vú‹5ÙÍ~é GB Qhø¯þ—+2° öAc©ùÛÅjèŸuÕ‘`ä—ØÄ$$ ww ö¬±+ €Ÿ(V•¨÷o2D„‘( 6€1C¹“ü:XìM&†»ƒPð¯3Ãüò’ü£ØÃÝ+·ßTÀ–ÿ{ý[ÛP¨7L27Ë…9¿ k»¨VföZ&\ZîˆN°ê’ÀpÏ<ósÒ%ÊÔœx¨byysè©áliÄø´?3ÿþň÷ƒ7ÙÁ‹iZyõÞU•C¡ü¯Ço¡l“ã¨ÔÓèUªƒD#V {k|kžd‹éËp©.ñÍÊWèÍû2»W@Ñ%{3æ‰rnÇ.îc+vÎeÌ ÕÊ8jwëtSm³Ñ+ÜÇð¸s•¶XƯ>«Öqƒ?¾Íîë}*~T Ó]%ù2‚†‘Ö÷{îPR?#]bö½F4·ŠÄ™jijc¡k÷"ž½Ôâ÷É‚¾ÖÄ~qzG}ÕàÞ5xÔ¢$¦ås»XìÖ²L¿ŠÝlJŠv¬~Ê©ÂUÁ9L?¨GäuãÓ³k;~êM¢ŠKέtqçb‰…ŠÛnŒÝ¼°’™(*f“*îÿô\EÒÁæ6³˜¿¼›  aâ¢1ÔÆÓgw^öº-(|ú¼^ny+y²Õô¶m°+òŹÏJ7œ`Ùž¹Û³“ب-qöžÊœ_]S£3ƒê´ã‹ÏŸ 4ÎËÅ7líД»¯$3;Æo.N‘oJ5cª»‰“®ÝJ6\9h’’œÆe¿”µr¾BòÝ3ù&ùTé ࣅ±ÃkjFŸã)kVou}%°Mpp?#¶ÕÉë¸ïd_¬Ïss'Þ°›p¹¥b5|(5½˜§òÃ,ÐŽ¦äу<Ø“ïq§›'õy–ʵQ÷Ñ)«vÏß±¶ßï‹cI=ö¹»'uÓ[«þÛþ!à¦l?GX!¢¼!^¢Eõc]´™uH·í¤‰Ø½ë¬áä+©¨õ¹Üµ`7Û­zý·ïeUÔÔ<³á2â«/õ‚¸eüðI£ÌÕÈN¥©É@cõ!bÓHa'XÉBQgž¾`ךóqS Uí7M·Ã³n–4-5,"÷ú}Áçx…!Òß= Å?|±4|료ê¬Ù´»icñY-D¯™0ÊêÎRñqDUUüÔ»KCõCÝ+±U;±æ/›KQZ©~$¢ ÞŒ´;´è™8%ØÇYÇádV¬§xR»«¸œìÆ?&åI>à ¿`(ŠXÕ¤HVz¡Ÿ$a{(žmº^+ k‰0ùE†6ð…Õ‘U¥&7&¸Èï‡i’¾ø–dìûœæø¶í9fK¥æôáäîZ_FÆŠJêÐÎtÀ·×}s¹h1ê±ÏâJµ]åd¥’ ˜M:¹É$õ'”qãšNÔåy†½åJÓf€¤’Á†(õÇ‹ .¸ï3øÉ¥ˆâYϳ~>ÿÖ82»5ùÕb;ÃÙÈ»~|dC%H_kD7s‡…½IXY±åËd7]ï ‘ã.WìÏÕ.Ó·›päËÅo¥^zØâ˜D“(KeHªÈS-x"2LW‰_fÄ׌¶q„Ÿ—ÒØˆ øE÷ (åM¦ 94þÉñóž·¨%¼ÈcëIQ¯ǽ5‡—¤×·;#òòŒ•~3Žw©ÍŒ˜3T­ÛöÔßßäД -úL¶O”—kS/š¯Ìð:6EÀ³šw­Ù|êËRŒfIB*DÆlAë»èžg·'ÿ]“çìÎP„¥ ˆ·ófwjMÄ£¯È‡Ú†9ß ÝîûaþÍÑjרúîQ|]ªï¹5Ä0Ý7ùÖt¬Ü¿YAUûv™q¶Iy-¥ùM;ÑQ3¢u•ocìÑ+` 7Œæ¯{…–ÆÁŠ:p¼\æ#o²]h‰òI—ÄÃ9žŒu„pYgוw›+Â;©©£}7¥ûzý;  ?}L3Ÿw×›»öo<]f|XüÎQu1ñ8ñ`öuKæ5_‚ÖuÓ(ÕÅ@‘Ì£–ÄÞô‚b+ÿÞS™Ø>÷Ñ)íÇù(ç*³=3oçüá낄âÕÓ¯¾vkg!ÔtŒî㉟7 !Q'mGíëc$"B'áJø[†Æã±L Wò}Ù`)0ÍßÃ):ƒˆê且—¿‹qþX^@ÌŒú2”iV².ßzÝ¿ *µ0Úæò ›¼yïUó¬å ¦‚.qŒ¶°§ã¹0þäíè^ëäÛ/XCÕn«¿Irs«Òà//9­YL÷½ ŠÀ“‚ŸVisÈz¦'„„ñSÜ%ü¶q¬ý‰<—`%Š•›—Üþw—Fz_<=ï`gÚ«¦þ¹3W&&Ôp7ÿ‘ëgôÝ ³í`7v»Üb£¶ùÓ5ž"ý,ͺƒe‚trÜÞ’á×Î6uÔÈcqK…{ù¾Šsj{Aòúá×Úd¬Oü28Xñ*pÌIóo=îv)ñ¿@­Ä\à|Gk­v‘Å«y­4_ؼ"mgN Û…<óSO¢,ì~ì<ǸœA%ÌIg¾¼éÄ„É>óuátqá´¹³[E‡†5å«¢lUÅ·HS::þ.žsöÔí¨êY²ÑFF4¾Ãr ˆÛñµúãg,¦É;4Æ¥ñí~L)S%u"wiŒÞý,pÕ‰óãö•»;Õ™Kìz´j —z7J_·›ýü ?ýÕCË ÓkÈ#Ì]æ©X—#bÅR1WF¾Ü¡QØIsÕ^êòJÁ…ÏmÞÕ*{®y¿2fÊbö6#¶l 7zÉ»ù¶©R.P1åþø@}éÀ3>ïh ÃòÄè9ç7ÎWò´LŸBf²w Jâ`>Jñ2¦4ò)–).~½-–n¦ŒíÂ\9UÈóåt‚w·vÆjQZç«< *&ÊÎ(p8š“º§És¾¢ú ­Åÿ%ßál»[™T|5S¼Íß² ëoèéµÔ׆‘=ìóän¨ÊyYšoöøiƩم!G«ÎHD„@yÛ„UTŠFXΛzF ‡03gêÖÉ9ºɼ¡æµÒJˆEØWžîËÙOÑmn(kÉÖU>[¶ÒbuM®_iÕê÷kò í7¶µÏd$$yÆ©Qò>MKmîÈœIÑíˆÈgüi3­á"—†|kHWŸJ$áÙÜY¾¦Î¬¡Sí#ý:ë&|íA»¨ UâCSzßÅ ØõÍëw'ÓRb/ƒ¯ÙßÁ~+«‹Nßãi»ZþÈi`|"„h>ðAIÕŠ¾˜ ¬tŒò¸'%žH¹Swä¹¼Óy¨³`á—­7¹(®8ÿ¤TïÈæ«¬£-•ç­„pÊtË9‚0•[I×£‹-iâ… —µåóØM_D„o4¢é?ã™Ù¬U†&É[Æü¸q•$Q÷:&È=H£à#_Á¿ì Š×ñÈ–¬Óˬì^“ài¸è-J½<¾öàä|6o€E7w74ß0™[ ƒ¡À=óÐô•Óq¼3<þ„M®Ñƒc»VîÛ“Ô´.Ïö¡ÃËSÕGµŠ÷B[E’48$Í„« ›„¸'tŒ&ÀŒƒ“åãò»Á_ÐÛ‹{¡Þ¨{6Ë3eìï¼.% > <Î ÂìJP˜¯ •Ö TP6V¼|}É*Sk†ɬœ.íóÙ\ìI&2Í‹U•¸Ôtw\1#ì¡”xÇù4–Û¿:¾¾3†øQêGͲµYéܧ;dùU„zžëK¼Î ˜âÐÕ%Ù—Ñä—½,››^#Üw7à f™¢\É…cŸÇ½<¼nlÝÁ0–ŽÒ¿ë|{ƒøOÈfO›èKšYò×r·(Ãè性yeg¡ñ5Šgá«4÷3î°éD9Fâ—ön½è*ݤ QŠÍ6­HLñ€Î8¸útüít>¼]=òP‹ÈNŽ&8æºê‘–¾š.nÝt`òT ªw (’HEq#dN,› ÆŽ'×µ56e»0)³ „&f#à>rg1UWëÂOåR Á.ß\ JÛq‡,«xB_í³ÑgSÐuÝ5+~5£¿ ­‹‚8/ gÈÅ)#H3n33}IÇðX¦BèdÔ¥jõ׉3 ±Ò~½6G±®Í9"‘Œ7ú¾Pæ¶ÎÄÑB˜<[áFZ¥ý¸å…r£9ÙÎ`ÏPï1Ì‘ÒPDÝíq6¤Y9zÉ‘õÆ1Y%&'v¤wÎp?îDNÅÖ(Þ 4Yük'¿Ê ñÚPd+gã’vùÎÏ<;Bèû÷$·Ò9_/Ù‡ÉЉô®ëÕBƒrgßôìLT×_c£üì´†gSäpØyýj»u§ÜnGìîøÅpZŸ>åg KWYµõhvMã½ü¥J/¸ôµC·É0Eõ³ž„¡S˜šEVÇ»ôÌ5è?G\´×Å,d`i¥Ê±‹ž†qLdCùÏ–|粈¢nŽâº“ý„i’¼þkºIݧ<Ü8+jºZ¾Y”„” ÝÒäÛ\DZIp+¼GüOÐUhï½B­Ü»:T«k‘³Ã{NÅ7šïKŽÝ Çq\w2²¸OOŽ7rï&Ocõù |ÉÚ/ýõœZ¢L6šóÂ@bÉp-Ì«Ûn,Zî³(=6Äa»>þÕñá` L½WÎCþÇ <#œå¢‰Þ›RÚ ^¹nðõË®=õ q±[Rº_ÓR‰¶$ƒjšÎ•*žˆWuŽ+-Qù‡A“÷œ•FßÙÆUuO Ž›è½Ó½®ê(b ×hZÌ"à&{ͦž¬0áß gOÑKêùëâÖ|•©õxšÐæ ŠáùÔŒÉùÉR9a˜OÌ!ÆÓ{JÖb”HïqßÇŽö•)„#¹ì¹ƒÀ惛YD•÷'I¯£UIËWª”j:lDŒo"aY¼ŽJ^6°"óŒ¡.ëÀG»±¢_·Ùl)”Å=+®÷¯dyNT±4ˆ]ó$%ñý¶nÚ´øm8÷‘ÖáöYÖ5ë,_ŸÑ¤)N|¨hł˔ÄSˆ±òg{ÞÞp%¿y …Îè5…o‰U›>J½?›Í–¿ÿþK¡[K®ì—vx×GÅAªÁÎíßrH Tùþ •X’¿Ðî±¶ó§kwƒ#=ðœÇcПŽ]aAü;°î CwÛsÛ©Ê”›|SB~ñÍÕÓßÄ(Kºê(¼ßníߊ2ê%>ñRqK\i»2¹jÍÍâ˜)Cd9žùÊ5פkûL=PŸ!x3´íæ^â¢GÚ¨D¨Ôå~ýL<5Ñ=19ßèáb ÞãÛq3î¿Xœ{]ÆqS¬Þƒ$]š$q!Ð3W.¾ÄÃDL[Ó\|šþiÓ!ÊèÓÉaµ ‚:Ϲ÷ ÀÈäKäɈC¹´òˆK˜FÇ÷>m~LØæåê9½ú‘à*Ô\l‚J^EÃG+|Üoþé…ì“ÙœØx“€hÔÌÛdŠN#‹–g¡W§ã‰wø |¿·ƒ›ŽÁ)åVÜ—KfgGiâ?ïÈïJQ§XÝ̨;»x{¸#¨,Ô^ÒˆIÉV¼|“±LfB ×éóo¾2m©ŒË$ünP”7e›`úıåº`«p¼ö̽ìÈòQßÓ³Æë$¨¶˜“EÛeWÒµåI2ìó……f9Ý^`{ÎB…‘ *¯diàÎÅy[®œ£ÝmïBUsq‚ôñòÎbÜím“èìyR4)ô~AƒWí“ó#ýé… 5ãý¯ÛIóýDcîéMèF5õQÎÙ¤¸|Ùº‹dÜ¢H—³%žÚÕÞð×>ØiT`Í&Â;S-V<»RDÇINÆ~i¹¨Z70l¼Ú÷TÊQŠÇ™ ¢ ¦5Ï rS†)w¸{EžZ•[¾çÖú:žwÕ“Å£HÒuÑ9TY!¿>ÿ8÷ù"AMðæ;èURJ´qbå«ð¸„’`Ë~a±§[($t_Y¡á\x¨†ŒÎÓö > stream xÚŒ÷T”‹Þ ÓÒ’Hw·t·tà Cw#ÒÝ-Ò "’Ò]ÒHIHßÙûì³õ¼ß·Ö½‹µ†ùý»Ÿgh(Õ4XÄ-Í@2ŽVvA€¤²¦&;€‹•†F ±ý—ŽF£ rq;:þ!!éB 4) *¨ìèPp³pp8x9øÙÙœììÿttHÝÁeV€‚£ÈFÒÑÉËle úùïW½9€C@€ùou€¸=Èlt(!Ö {¨Gs @ÃÑ ‚xý zakÄIÍÃÃhïÊêèb%ÂÀ ðC¬ê W‹;ÈðWÊ =èŸÔXÑhšÖ`×ÿ04-!@J°›ƒ\¡*n Ô;@C^  êrø°Ò˜ÿÀÁÊñ¯¹´ÿ2vø[hnîhïtð;X,Áv €ªŒ+Ä :Xü%´su„êÝ`; TàïÐñ· 4Ãòs5w;A\Y]ÁvåÈö—h™¥,$ííAW´¿â“»€Ì¡u÷bû§¹¶Ž>ÿE–` ˿ҰpsbÓr;»ä¥þ‘’Ð~Ó¬@;;;?'ä yš[³ýå@ÓË ô7“ã/24?'G'€%4 Øý‡æã t .n ?Ÿ?ÿ‹Ð88`sÀ dv@ûmJYþCûïö°CÇÀþ×߿ߌ fáè`çõ[üï³éëKÊ))2ý“ò¿L GO€ 7€…“‹ ÀÃÅààøý¯5 øŸ(þДw°tü'Xh•þ°û?@ÿÏz0þ×–Š#tnAúßcnÈÎÃnýàøÿ<ì«üÿ›ñ¿¬ü¿ŽùÿHÆÍÎîo>ýþø@{°×?йuƒ@w@Ùº ÿWTôŸÅUY€Ýìÿ/W„ƒ•Ý¿…»Ê€=Aj`ˆ¹õß³ñ²Ö_{fv©9º‚ÿº,vöÿÃ.—¹-ôz¸BGòoº;ÿëQÚÁÜÑâ¯%ãäá]\€^hìÐIâäáøp@·Ñäù÷ØX!P4;?€¥£ Ú_-åå°‰ÿEúâ°IüFü6©ßHÀ&ý/âc°ÉüF6Ù߈À&÷qØä#¨¥ßêAå7‚zPýñC=¨ýFP›ê¿Ô¦ÆoÄ `Óü iýFP›zÿ">ð_Äõ´w‚Nó_'é_¨5 «9lv1w³ÿ—ÎÁÉû¶³ýKçæü‹ °«ío#PÓf¿TÄ hnëjtµþà ÷_d—?дÌ\€æ ;%ä2Ï?äÿ,Ó¿V9þC¶AþG^€ë_úÿQ€ÖÂü_Ä ÑÜÑ:xÿ:‚ÎÛïBpAóµp´³û3Bè bû:ï_ÈÙ ºµÿê@}C§ÍøGÝØ¡Ù[þ¡"V¿M@™V=2Azæw¸¡é[{9YƒþŒJÿ¡}µýBSû/4+»¿vè7Zˆ?„K¶ß¶¹ ¦ÜìÍþ:rV¸„^m6ÇßAAM@Ÿë°¡‰8ýfCM:A­ÿÓnލÿÛèEfƒN!ôú‡(ïß4°ãï~pC çdçöGÐ×6çßyþ…Ü@®“msÿEt„€,Ìþè’À?Äÿƒƒ*üG8 •øíªä ²ÿïÌpCcÿ?cÍ ý·Qèábƒx8þÁ†j¸ýžI¨¿_9\Í]þ,'´…î@¨s?6jÔó­«×Ú ïßB-yƒ\þÁÿÜNs7h/ ?Þ ‡õ¿øï·Èd޶8çh.jó1ôÓ¯â¤,;ão¦ivtÒX|]:Ýî°S것×]®ÅS¿ô½XÙ–¦¿[zõèsÔֈўü¶ãÞ÷Á$Q}j§ma’ph¢øH¼a•ŒESl×÷ÑÙW;Ⱦ ¶[&ßÙK­ï—Ç€¬gÃ`åòhøÜÎÛÝ:^Eô‡Êo,±Z1†Ae34f9³/© ,ä(Œ¸gžØ3W×Ó¸yϯ™ÐüŽc¹J|ô78ãng½W«59]{ˆ©‰õ_’Ã_áŽNÑúHì¿W š÷)/Y3ŸËÎÀ ³>:øÊ÷k7åA%y\"v;—EÙQj¿Ž¶ Ý~ Ôì S'ÆNGXó/™,=qÃBC.NÍÀ~WœÙÌGó%ñªÛµN Ã Õ°—Áà ñ’ŒÖ2«óùî÷‚Qýt~Å{o²&/»”‰Ry3Ü–W6æ‰?ô ªá°2¢˜“ùòŠç¾T*Ö þz-¦°lQ+6Õ!s ;¦±wÓkRYpoóÚŠéãÝÑ›–}‘£(„ýœ`@kKšY”Ê~”ÛÒ¶°þÇ¡âý₈ÁdXBR鱃¯ã´ù±òè}Üû³7ט1ß‘Þc¿´v²µl‰T1¨É¦!”xø2rQ'Ó'j¥ž¡XÑ`ôn,AXcZ-¸µç;¾ºäÍUå–Á(Yò¢Ñ‡×þé£úÓ½ú ^#žÃu1#ê?éÐJ$NÀdÑâ6í´Ï Q u„©ùÝúu%®w÷O¯ælXMÇcó—¾Ê½jZuØ5>ü5äÿeZ¹ešÑÓ¾u–pW¯6 Täx“Õe¯:ÁÉÒ‡]ªÇ—W¬j/ï GÈè­®ËÚwb’õW™º8ÂÚ—Š3ðöÙvׯ+´:+DÑ«Ÿ}(Z ÏíeHVO«ÈsÓºI—f3¾p%È(úˆ—ð‰jò‰¯(ß«ªaE± Å­&ÄÈ0Ãuës…ü>&ýÊÅßµÔÓ½’žw«zõ©ˆçs‡Ór‚„ü§ÒÍ‚( áCE>ŸÓÛÎXnvsX¹Œ™Yî37ƒcL½Îþ÷™¹;9œŸ “ß¾Œ¼_*Ši̵¾Ìˆj5ËÞ|b\$‡£D³*1¢¨…a„e½ zAœ^ÁWá«5u:TqcI„t[…'ÕT ùõbÆ"­¯,ÿMuV6ÏØÏOL¤ÍÅ'6|½4G`±ç4Â-¼abةȯšl0“Α$Z+“2õ7 m)é‰ào-«…b˜S…DÄýEeŒÕE߳䤿\ô•:†"gSÞÇÀ1rXyÜìqöp³•æçµru‹Um~àó^zNq0¼kaÝÈ8û-í¬G×>\ysÈ)cðÆÁ¦‹s«siÎ?Áƒ#öá×è>W Yž¼QDvT¯WëGÁ¸Ñs+‡ÑÉ;‡ç¥÷å–VÇ4ÝN÷ÂàóWªôt>ñ³¿byT=iìj€²èø¥žÏ¿N‘n5pNŒ÷ìúQÜÈÔJÌ–;NǶ'þÀ3FéM;Ñ/ÍCB?Z|¦KM¨ Ç‚Uõ™’I×ÜÌÒºÿ5!ijš]¬f/>3Ì”¯=?â½:R””eNø*â¥)—±&Zžš;-ɇÛ½‡Õ‰F7êêY•’%’Æu<¯/Ål2‰~–8¢Þ[ùÌp(–ôQ°Œ^‡n—>æIbP¶ƒ˜Å%iT³ µfšÉ>ãŽ]‘[qk“N$'[zCM…YPyß'JƒK–SKŒ×0oC”ålÖ˜P7–.pyÿ*@†ÕÙ:½ñF4ïâÞ.XYî1º¨R«å4VfZSs¹•©,PôÝ_Áê›™åVÆè'× Ío)05R=ðfÁ_uœ)ÀCɦÏûÅÈ1t;}¦ÖÆH}ššñòUrï@vß› q:Ç’.ânúóMqW¯ç¶ƒÒ¯çWtåN‘ëXôoªô8Úv¯«ÞåkuOU—³«Þ!j¢Ñ˜Ò“ù„Ò¿Td•<) v{Ê ²à¹oI?Ìp{šðPDîÄç/¶?De0_æ–YlÙñЙ}5[uf~/wÍ PMþ°Ï?¸‰ª¢âp£? {ˆìì6FÑò¹~N9®ë²×êþ`Æ‚ ŽÙñ‡?ã@ç{ÜÍö.ì‘n¾Ó¯¯Mh'ý±aŽéߟúˆ“Lº*o“›Šp0r›¾ú¿ðÅ½ÈÆ…Á-7þ¶TF¿ÄÑíž§ «û° n“@©ð3Ä–çÍám–^Á1˜bÑãgøW_¢ò—9áî’uÑj ïm„úµØS™-dUÊžª'ï¡‚ÏýEÒ¬ üEâÙS¦´qÇÃÅÔÚÌÀo|Ó]Jß§€ cí˜Åžz2+DžÌÚ9qþ)’‚‘>ßù$°½>°Nd/T…à³ê ×Ð«áø >ì@UH³—oì ;üÏ6§¡…§û~äõTt2g)¥ÁÎOq>+?L?â'[x¤ú·bÊ*<{³µdïËÑuéS‡¾[„ÉXP/æ-Þˆ‹Ò1[Œ"Ì·îS§ä´†Ó£Í@ƒ‡»¹o;²Âzœ¡éXü éàÇ-Ò¢ÿì2üÁ§Ã…¨WKÿY@º2onF¶vÓ-‘[`IdÃԑعkŒ-¸xÓÿËsë}¼F˜o¶¥À«ùjÑÝsV·a OKY3éV¡û° GæT¢ %[[Å&dK+«fX»ß*ÚO¤ß^b)‹f¨¯ß‘w»¿^i9æÓ:6?ëoF®‚¡kÃphUÁžÌçˆÉÜ+ÕYªzB._|Ö^Á¨HWqCbx^ÂææÃ‰ö’ŦŸê{Z_Ç,Âì뉢ªñÙÂrTí3Iñ­6×"ó–(Þ kѵÚu»!,y¾ß!5MØ¡'H…}þ‚¬×vz’=Gôî@³ÔJ¢Ño1V@ëQæP¡N” ×Àɨ} qÄiÜ:f¡7¼'©ü<\ Ž?pb6Ù»`o­K)\´!ð.™èAB1Z¨öê®@ç™fT7%ô z!BÈì‹€Óv£Œ±E¦Ä8Åœ‚:=,¯‹&ãnÊìØ)/=S:å¦Gzxô”º#ÊxUj⯇,5©,Éb¨DA7iOºe´Iê]ÒŸÐÊ9•Ã`x0ÎE­øiG Ø$€/,C®ß'Sµ³G6A^´( FÃë²Ãzwr¬SóR´øÝé¯sØì€·øx÷©»¸ëA°{J;Ìîãšno÷ÛW/Þœû‘7I7~-§ßÖù:ÆÎšÜ]DZƀnqOòúçˆ<Ò˜PG šnç—¦ó6BuØî§Ô‡ýÔvyxæªaѬœä ëm3‰¼‰ñá‡y~ß•eىܵÕSC¡v9 4‡¡M$sÎÈõ:ÏWºãHøù”¢‚›8mïw^B^SôoŠÒ´MݤZ…Fitƒ ¼3ó@c0a~€‘uk†´;©c x–»0”ÐcÕP^÷+o·â1³ÔèAT°g£ùЪ©Ë2.­KÏ&–üñ!n5wþ+t~ºç¦Q#§b›.„ÔÛ‡¸íȬ©dÚÜVÍ Å(f½ ¾¯ÿWé˜7é¶üt e(¦fHk´z%õ4s Epù1[þ¾LññV­t:oCÆçeT­›ìcî´…¥æì pi„žéz#hÁH)ÖùR9±˜±%Ç¿´Ç{¥]xÍ+HkWrR,Îl›&Ž W”vaã q>R#)·úU<9añÇɦóM,,Ì Çp…´8^Ún‚6_}úÛÐÃI9%Ô/b»ã|ªýE»#¡Î:ÑáÀÄ âº•¢\AW"dw F*eáQ$Št¯ƒù-yCÄô!žXëÙUlÃä¨ÛïJf3½ÌuVªtü_†+kj)‰H¤gÂé„ÈŸÂ8ÛáÙ#tÄ?úC»=²òéêk¾[ª‚q³@Íobï©Þ’¦x8Ûd$ÏZërÜ4Ñ]•O"6—:c OПþ ¸ëå‘íAñ¿0IŽ£“¾2AµHc²«Ò¤ò¡ó~0qwÑV]&, GM°Dz¿—\i²nÅ–áÙQðAeêÇд§è…•ä þÛ *ü×Nh~zòÈŠÁ·ƒ‘Ì]Ó7âé§êj£¯ÕlÁÂ7:š°;ÉÅ ˜G¦‘qÕÈ$µ¡L»ÑøkMFCvMô1 ša‰¥|•|Œ¢ˆì)iNÄÏ?ž”ÎStë1—Ön¥R€*H;"À \—OÜóɳbÄ·]•i½){îu<ø p‡íÙ< ‚)Ku¦ó7j`¸gתeÝD~ò§Ì™I{ûèÀÌe!éš:¥Ã£l9ßä¾õ-€×WÃÝÈÝeg¿¾’7–íì}èé®´ÛúúHz›± ¾)¿ÕàÅ"¼Ú=ŸôvSrÁ¢HèiZ½HG@ZBª÷#Ô,ЦGGæUMÀYdÍXå•vÌ<é–š0AR8 8Äç°|ÖËn›‡ÌÈO¬*÷Vc|ûµ"Mc^}Ç‚ñ՞ʢ…x3<›/øpn&ƒeð/ÉØ×_r•˜tÛ÷¿gÛ_x{~Ùàfy¹UˆvN'ª‚Pر%úÏÙ¦ò<ƒm$î(sú#Sns8îç)òI—Â­Ž ^Z¹ÉI9{Dß~>—¸?eoi#.\žš…×諬dûüë<ÕŒ·Öfˆ‰z7ôîô¤¾&SýjM¡Æµlá£H[Ê\÷ÃiKÒýúÝq?rë!›n‹I3 äËwåŸçùK@¦+ii$Šï†6zšžÞF±†APà“'… w¸Íw]Ǿ+z ™ëû6÷â#RKLQ€£æAg!èߨn`î?nt ‘pùŠ'zËlêq_ë /hɤ+l–å0ø?ãÓd—™t㨊öŸ ä©{D¬·}–®á)¥ÊÕÙñ š­•ç=‰…KÑ…£3´ˆÚW¼½tõãŒ!öy+ÎàA¢pAÖ݈#s¹Å¨ãrÁif9ó$šùRøÝ% pÞ÷ð›‰û…åe”(éΨòîݳ½ ƒ3|51sÞ ×ØÝ˜XNÑKpÎo#K}%Ëœú<ªlêå'{XšM4"Ê`ž´‚¸öó}æ3ߦ":%¿ÄHgœìÖ 8Ç+Š Â¦Y·Hw4Å–P Ñ1v}áJòOÊÆ¹ŽÒp›s§)˜Âº‘@"¦±ÿç–@&TJ¬® a{Ù6÷X/+v‘²F* ŽƒÒ†5 ñjùf Wœ/òš-1³3 ý¦‚W¨ê¶îvÔ¾5à›cvg§³N´·ž0S.ŽÛrwo#2ܽÏ÷²CÎ@‘‹çÜñ¦åŸGAf7éí¢UÚtu@Ï3 Œ>ÆÍ1BÔϰþÑÊ;’’—…ïjS®Ø¿Q¹d’ºfkHÖî½éûæ5‚qo0s?c,LÉRÊAýG)eMGžEä‰p6Eþ†#Ââu6®‚À m†|<|ØëzÀÄ UÜz³9c‡,Sy ÁŠŒŽƒE¸²ß„ºž[†™|Kp{æž¹¨‰•²-¾ã€ã*þw²ò¼†o–ùáðþDë?dûDfšŽÆ"™ó^äW§o[Ù~1‚“æÇk…OÏ[0Fª°™:!•aïopr‚áËï _QéÙ Ķ}…$K×aŒ€.¼Û³ºW˜¡:­ÌpŸ$££``T ¯ß½=~§gZ¾gª`"Q·Aa]6ã|~€ÇA)ô…õbâ3i7ã@·’òMõçÓ½,³î”ReEâ4 ™£b–ü®Ã”V¨c+©Ç¬ùWRïl¬o¢z—3¹(ÎYÝ]ö.¬ÆÝœ£üœ¶áò²xNÓj8:ÖÀd]¿ÉäØ&œ¬¶è)…§¸®œN…ß[9’™IZÐ=-j„*¾uºò´"`3XêI(4¡‡gÚ`qS?>н8=­ 2sÝ;‹0è;Œ÷—gqíöÅ€&GéKê­†ïK >ÞP«ß¶<ç5=­Tß!ÖåÑÁo)šÛTr•[r¢©$5 rIJ&©¾q§ nxÓ=Lš~9ìƒw§üµ#ªùšÖOi×Á-§4àe ÷rž¶Áèk¡I˜Ùa95äº*ãµÙïËÜçé^ó©‡:ŸïUÂÂYîÇ7+­ë„£Þs—Âwèc0çï‡'‹VaF]Ö^6Qe›Cš3FÒ©½&+ç ´F:ï_öÍ}›)ZÝf‡ÏŹ x¥V,‘Ô¢ÃH®/ùe(+J5÷P#(õˆ½á pOÔ<>×ÓŽ´£ZÏ3žzÃâÇ÷.efˆp‘¥7‹‘¨U^²6Þ‡c¸-\<*}]°á;r-±‹j"½, :‰C:.ïö+üOñ…àmžu3©G•›¯(è<”ú01aw˜q?ÚP¥Àè¸7x)›Yºgµß’Ñ2φË!׆‡¼˜jþ$klöc€€6¹B­Ç³µ‘V÷efÆóQq<ø =ö×´ü}oÁ`?@&õáÈ”QcÁž¼{­—ÚåâƒEÌ´|0§Ý{Êã»Ð”5Œy‰Àûº] þc\ŸœD¬Ù½jn[×¶3:j¦,HæcÄ.C(ú=m´’ÎèÛÌm%¾d†š«ëÀ– ðùŸ‰c‰ÍT¬‘=Ÿž-‘/¤³·Ð°?)\ ò‘Õ]ÙØg¥ÃcTR6Ñ•"tãsµyâ ¸N¾W!œ¼Ë'>rHX5Îpmÿ"˜gœ¦ìÓ/ <Ø‚?E7Ê?µ*± ^Òy}Ԡ㺌ʕä×÷"h×ßhBEüqÊÿ4nø^¦£Çöyjj”Ëy0’fšÝ´æ*zwÓ´ã/õV†¸%¿-×"YûÓUJè%£±_!/RK^±¤8Œ÷<Æ3+èšWtà!á>ˆÖÉÞ©(©0…Ð[bü¤‘%ÝW@+AŸìeÒ:¦l[¤“N*Ò‘(í‰TÄÆ»É`ŸËê2…½©Õ8jséã·:"œÊwÖœ:«ËR™>Ô–R Ò8¬:p1•;}ª4_åͼì´9¬®QüV¥ÅYÏÎ7Lž,.鳯"UÕ» `Äë³:½Ÿ˜*„ÓE£©²›äÚì=–d}Ÿpø)ùu4û:í?yl9æ{mG,ùSÎÔH°$"ôœ:w¦ƒu5BÎöV.;{þ¤­ ‡ ¾–œsÌo ‘3™*V{%oÁ #½ú¬ò1g2{bVw„›HŸÑPx4ÓåͳîN!¢ÁÓHOÊóL¥"®q#V‚jG´³MnòcT‚Ÿãxg¤:GXô˜` ©™™‡º‡ûÀ”x£_”WÄä!Ѳ¢³—µÙœ8jʺÚðmÌÆŒM)béOOIÚüwˆy,íZp"X’{6›Þ¨äïy“çU½¦.’RŸ¬ž¨ψÈS3ì.V:ÒˆeøÐŒËüÆ©#ÉܧOö¸:HD':¶þsºUÏ4z!-Ü=¯c® ÞL¿œ¾P%‰[rY(eh¼Éßü|œÊ#“£œñQ A:?<>°]mžäºþ.ÏÇxCÑdŸ s±Ï 3¯;ðzÚ}«çƒ/©ë»Áè#® ÅNK•ý«-§¯lÝ•Žéúy±äxuy>äöY2=_’ë”D 1äy‘M¾.«æºü)zÁ–Œ±d”ã:ýÍS[xÕïx†fêÁÉŠ<ï9Þ*=–»Wd‚&!Sf~¢ØŸZ˜lí±Ù—Tå}4«Òx½çÅ&Â:Y⬽²ål\4ûfÞõ_ƒw­;R ™]6³3n¹ ýSY¶ïd4éJMo_µ›k‡Ö}iùÌ>ÃMŒ•YeX,o#²+,«Ú4ž]ÿhxÜ*Eé!Ýë¯ñh\Plžù<ýµó¡]uö¶™lÚßfí¤…‰¤^™¢àÂm‘Œ‚b}e3e®I·‰àìĩҕòéµð9}˜á*ÑéÒî2¸5‹²Sy‚ŸZE8Ä>ãV¼-þ‰–ůÏòqOÒ”Ÿ-Kâõa}>YŽNOàîy ÷›ÂÜæ™÷ñ 0_nЊ¹\¢Îb;éÌ›ÆKtÉøÛ¢£p?Óg…€º¶\Í>¶½=n3"ª—`–:íM„y)l‹¯¹òÚl~€Kœž±‡*elêƒ[±Æò8¯—EK=¸ro@JªMó7G§Q¼y |ƒ =ç‰;é•Ó<_üÁÛb7¾{ž}s«¢Ë;©­äg-Ú¾=r÷ƒú|V¼bU³“Õsª@À\ðûF¦‚ ÅÃèÆîk–ÛI¢Jì ×óJ¾#Tœ×uŸÜ4…ÙJ‹‡wKUôöŽú"k~0¥›÷}É`ïá¤~÷XZ1_ÏáÁ5B‚c}£nïž‹ ò~ñª"ÿ†@¯ðm39X)XNÕß±7÷¹·ãò—)dŠÏhШŽ|X%ÕuGeÒs#¶á8…|Ñj’5ÙÝgÒ–’’NíÇ5€±ÏiâïåðZ䬫êi´ðÊT`’¢d·ÝwáD±J“øýÔï¨ìÖ–Ÿóì}P^Ädg6†Ž¹è$½†­•¦y¹ |öõDrþÕƒ˜ª·Lƒ{fÁvžTOM@ó–>­ÀÞU” ´¶‰ÛψZÑ?ÐãàÀ¬¥FKЄ­w.±Ÿuo§¶¥ÊT5ò ¶+]ì›ÚÐF˜ª-K§ZSkž²nª¤Y%Ú´RF æˆ(Æ}nÖ ×p™]óiü~8;f²Ù1¬D¹ÐÞn½.u{=,8æÑ¶<¶:_Vdxþ|•pdÔ¼LÑÐ2 ÛÒ‘ëÁzcØÕŪ6A\ç”ÌèÄ‚Jä2Ê"\ Ó¥K9Ѻ”sLzÂ4d>£«8ØÚBe« Gs çmZkk¢lºWOý+|¡:VµÔ´è¢|ɨU½ò³ÎDZÙß ¦…<€›”K˜±xòÅ „d$5MêÕF„>¸ýªh¡]™C§f4#3§ÐY^Ò@Ý„ö­û—í(À–NÇ'óDKzeðhܤ.3 ˜¨¡àuÆÃ›c-æ%Þ‡6÷¥AµWšœzÍ”G•ì6— ’/¾±éß½æì$uºWP´MRHšÖ©7ø$P1ÇõeUÈ·;ÇÇÅP½ÓöBzJ’é‡ËéájLj\tç<éÂÖŸ )@¤V¦#×ÚnÝaÒ”a¸ÚšrhxŸ¯çzÌšM¤_6» ½âûè3ì¹KtêÉ~Ù6šÞ,wʪÀo‘ô CÜü¶¸áS÷[7t*Ñ™B*¿!!€¾Žd¼ØóŒO ü¨öOöOŠ5šðË\G×´»xp׺2 f5rÕ0–’â;rˆ¥ˆJe#‹±â¦ÄÃ;ÜeÖ)•í÷LÚ¼l~¡UâÂ1—Bä¯Ð}Ýš#ŽfÐ`@P”XJzª" "§NµÌ‘Ýu“ä7£+Eÿ¾[e¸^›cˆëá”`Ò@±ÜÞ·«²™N^(µ¨ <´¶YŽðû ~4Ì—;(°^舔|+΂†®£Á ̽ 0Mòi£ò…¤Zqd(¾"ƒå Û-šMùÞ°ÜwŠÇ¯úZV—ï6ÑèŽ}¥SᆒEo;PÙ®]¼ø æ[Ó’/—áɹ*ß…(Qd¾ßD`â@#N‹¨–¡“'bE]̘¶8ÿj%}ò¦Ñ‘º€wEÍü& ÂÒVñßF¾)¡ÂN.8™ª€ ¨B eoÂwÑÔWJëlxwûÂ3º´«g”¹Ëj]­Ž„lfÐÜŒiœ$êùC4G ŸìÞV»¶RTdøþnûô~,^ËY3’_ÃÏÕ÷MYBE”L!(ù| n‡„C•–Ò"u”U16Z"\‹õVÀ·Ã™’O^­˜ßR—ìˆç¦o·jÑ{¢‰Ø·‹Ž!B«v:æ¼ÁqÀúp€6*\O¼´Òf¥¢væn`€A½ukøî@o£ 01Ïxÿ¼{h‚y®â»Oc?‡>2~¿¬}X/ÝÆ—5¶#×ûaÏgø€;˜%æ~#±;ZÊ<ÔWœ›ã¨n±ÃJŽö«'â¨;“§~6,€ª3,ÅàÛëÁjÂÏY‰Ó¤"‡Žç1‘Àš[¢ÔÚU˜õP—¡ìáV Ç'ýëòü^cuž¾­9ä´Mò-ò…Ú‘›­ï›/ºD_¨Q¼t’®HÇù@S¡²,3;-ž²u¹æ£EçâäY¨êq±;›X¶ã-×U#l‘¦tŒ½4xÄÍÍ•¡d„'ec0Lö£=“PΕnEØìÓ—¥{¶%-ù¡ª4I“~†[‘‰ˆ¸õ*CÅû‹'C–DæGØ«ÞŪ–$??—£’®îô,•OÔ»¹*DÅh-|DÑù,¬îÌæ1&W,žfmvø+æÓk¢6¬^aF‘8ú›CŠèº@=í¯Ø·Ôh§«/© ´3Ã$¨ÂqcÆ“ð(¯3S~ªÆØ9UM{‘}:vÞi– %¥9L’訾J™<›£ç ½g'ïce×:H´×ùŠ+°R¹»µ$¨ããñ‹´&ývõ{€·ÃBBQ0 µ°%!1gs|-‡ñATCп¯ùÑQAÀ¡÷#±•ÅQ¾øÞ£©ù`h"æÁæU¯­ýöLÿÄ;Q´A¦!m¶"U´I«W¥_âíZlÊÅ…¬ÃxÊ~îwù¾Uÿj-GÓ\‡p_½âUˆ>Ŧý†Þ¬Îrž7z™JzpVC£–(€®^7;—pÕx$à©2æë²^íä•t~¸þ¾4wvçDÌÏ€z‰F9Ës# wk/<®28 ½_öF ¢Îú¶¾%°Pà‡~U«N¥\ˆå+Ñ |5`ÓaÚ«J¥§Æ±ž÷Ga|g:G¼Û@qûþôwÒ T“C}Îól’àãp8а7ëÛÓ¨§®ów³1ä· Í¹ió™ÂÙMgw§ñ5bßÅØxhœÏ "/rUrÉóy›Öløv||ýªÑ•F^Y®Qy™4:§Ò*9‡ \ cëfU7øs&4 F>J±hlü’<+ª^Œmeo‘kŽñ¯_pæ%±\DÕÿ¿ôù‹ ÞÕ¼-‡rkÍÅ’_ÍŽ³õpÌ`Ì÷lÆqÖÍ/o+õ:ªîÈÔdGÚn)PïYÐ~=ñýÐÆXe·ñôZ'ŽñC*Q|rVŒk´óÎÆ'ævrW¼'tS~zú6y÷ ®žL¬'6³íÚXF’-'{„ž³egÁzóÞAw÷Ù P%ñ\ö¤’ý“J:l¨wFd«©p²IÍÝ.ôgP)¥X—^»}UƵr$¢RBûô:BØ[»Ì=p'IµÛȯbÌD˜¿¡väɸ/d Ü3uýÔÑr‡å»Äpef¿øk^)øtkŸñ”ÿºOÎÓ±/…ÿj(±šc>W=å+“ÚUCŽø½*E|ª!qÉЬңÚ6ù®nÒ-éðC-íÝëƒ#1C#ü}VJõ¬sª 3.]Æ/ïìÍ|ƒN$ù±>jWÐ}ÎrSHLàÇè_λKú!¬¦Ù‘[æG< âäç>[óO¾ÑnA Žç‘ìô]øÅRQz>•£;4 †E9_Oc"@ìÚ%ñ¢~CûÐQ£"†OGø+Và;†j÷·Ó4F4‹Î“nc¼UÉÊ»§©’ È6Ídí,¹Ó16vþñ¼8{¸,•xLðày7pmJ`DÂrj­jÁ/ò3Ÿ–ÿS6Nûa«¨ª¤Ù†Ù¤}ÍgÆ[X¹ïê™`}sH~¯k©¹¶¤..c…Ú b®E×ôJÌyyBÒݰ #}I‘Ü5ã÷^‡Ã¹gÚ‡ˆ5&'¼»º?QbžÛÉ>Z5áWÐXA†_ˆþœ›qްê\NF´U ÞävZûl@¢D¬L&pÃ]kSO¨/Àÿ=ÓÅ wJøª•®ŠC…•ë{ë³³^cY~ô{‹æ#ÕŒâËKìoá‹ï"vv0tIóxÄ8xžóÚ]È?…‘¢½ðÁ_\kùÂwþ!8HY­ÆÝ€ÈÃÙ5ZÏ©Fêft¾/M§ÂÚËNyëª-`0ôv~t0wð*`¡-²<ÍÍo‡³L/í ¾e˨»vè™4Ï)¿N„T¸ªÿË—!~†©Ý©u•FÜ®¶¦€1ó𢦛|§öî¡å.+íäºЭlt¯U½ÿŸj™ØÙ&™ÇYßBurbyøT'3AÁ±lfÕlFry)|Û…i_þë–øÑûÚ/%Ø‹Ãݾ¿z,1©Ñ “¿ì³ÆsuJÐË3©}5üñ$¦tØ7Ñ!–éENÝâ>ªí1øÎž3õ'‘í¹+MâÙã°DÌDŸß’ܰ¥`2cÈ9}Ô nD½Lâ,%Éh­vÓq€øËÙëØ!JÓtÀU—B‹òؘÜíQ¯µ)ýr'¤JßX¹`œÎϳXžº[¸´'Kϧ 6æÇ(xÕÎ ZᕯÈaE`Ø™¡÷Þb¿[í™ü‘ò×Åk0ëìË–Ãs •eûª§_¦a›í95^h¹-¾Jñ3²ßF¶žóz9¢E‚xi…0çÇ)iZàûn »"Òc%ùHõ7ŠAâï,ltÍ<^w…q Œ¯™¥é¤Ò€<à1;1]ΆNÏ鬂›N}ñ'⮋—‡ÑÞö~÷vº—w¿qßCjSk±D#³Oü™ùÌ,ë(ïBË}ÇÅéÓŒ«·rD¹„Ió‘ç|`ÀîeÌsä)߆›s^7s­yU¨¤,)!åû¨¡á¿4ËÓR·:§Œ96.t)²lD¦`=;7+†`«þˆ {ÝK^„óÀHÇiWÒ!pdJˆ<š ¡AÄkê}|mޏ²yìε•2§7Ì(Q»$m¶ ,jó-2ˆ#¶ŽãxdÁ<™ ÑÀ“íé|1& MÅÌU¿5Â&”W㤩(¯ ÚÞ}ñm¬=ÜXá:>CBvg>¾A$†É<8¤k+ là*€dÄ-„e5å{æ‰;©<¯BÖ4Ú|UÍ©ñ‘K»÷±A* Åöy9~»ˆ¡ÙgÃWÁP$²—–±2@$ÔrgK)[êé@°2qà®[îo³B#Â/cv©T‰sÄ{À$ì1«_ePµ+>Xã%Fa^I¶nÃ*£|"’áƒcÆß#žEð’ûdÔ^üˆ06j¦bR(ÇÆé¿îM&Äa‡¼ÀydäIH«,mÂÞ-5þhu÷«ûÉ…î/L´Ÿ–ÌڹݥªËôN+§çDÑPä{ÔÈ©ÊHj³íh^“ÿ}ÚŽ¾t5hnªW`%Ï¡A1âöù¨»¿“ÖAF½omÊíìúU”MÔñ›fòêž[:Ìí*1áŽýÍ=Có‹¹Ê’I<–Tf2Á¹=ê!ú¸ 3¸xOÆ}2RÍ=™<‰ðœµ=]Ø+Ë#åó/ò­NI9ëo$U Ù^¾€Ÿ&ÕQ£¦ bµDÿ&‘(iîtÚ鯴—WXZr¨|×åUG,ry„+P?rÏ.ßpŠù5wÞçú¾ù5@jŸX­bc¨‡ ëó-ËÇAñ«+µ}²º×Þ/;Þh¸I¿ÛÃñÚ}”˜}bÂs_ÃÎÚw…¡XUcìÆy}?bžœ€ˆZÕÅß¼O!·Ÿã²÷`‰Žuþ%]Ïr7þB'9–͘èÃ9ÃbþýûÚTNÎ’Õ*Wžk\mÆqÓW'ÖÀÅ ôÒ‰ «8›Oéí¸ºt¼ó±^f‚~’IxÓœIõÛ<4öÄAêð] iŒÁ×—wÈ{U~¾ÂXi3´ªz[ùÌ+¡jòT8„jÅeäÏ$­ƒw\S²¦ ÜYÚÉ„Dý Olͧ¬ÓAQlî»8¢¸3’ç+»lÚ‡•FÇèŽO’ç ò–0]{Fu<~73–Gðo¤õD£ÇDí÷åÞ`zÂ~Ù-Z2Ð$BzÖO®f”5Ѳ8¦˜Ì (Ê„—öÑÈf[‘}°o£Æ`¢ð†+úòÓTÿŠuvÛ îÉ 5@˜ò¶š^¿ÎíCC’5æaIH¨†ËlæåË@×̶¥èæÓ¸Ö•oh±ò­d9I6 ;G›‡ã"Ü È0?Æ`ìµ/?äL&¤‰¸ˆÅÚ*HBJwÍÏ"8ZoV»>‰Væëbx7u`ªµWæc­œ›?HšQö’PZ¹Ñ4ÅqÝyˆU$WJÈ|eN÷[!ÿ>î7>×z•Áw?Ã;ô)P«Ò¾ 4Áfå¾ã{¼Q ¹bYŒÖ‰Ǣ_Õ•›Á÷ǧFëaß>Šzêxã‘ÄI"÷–œz©ý„Ôác #&7¬éøËËDÂñîJf÷w¯š€›HR-Ê™nOuºÎ’«ÇÒyÇúâ>|d©É…ÓVÆ(£­ ´Ð¤‹ &kfþ)º¾êHH6¤ý-2¢½sà]ñY½ÃÁm¢T$„‹¥—bdÅGtßÓ·‹=¾“‹Ì¥5üKKÎ\Y‹×tO8&SØl%‡=ÕKžJQ°|˜ðŽúòìIfúa¶ñ°ùìDÁyãa%?½bäP%¨¸«!0•=3Õs¸i2^MñžBøƒÚš•LÈ4M#rs‡ß–c‹Áø÷ÀÔl£àAŸÃô©š¥3Hª\ÏgÇÙiªŒtï Ïnµß‘2WNv_E³Õí ÆòE¹Rm"‹£ Xk:cO\'þï?—$ߥ%IÁÜûJÆîò‡ë/õ7Á Zo®E±¶\ ›«>;’Êfï8›?ÛÎŽâ¾m±­ÝA†|¸ÁÉ¿»(ìÄ2KQ¶¦÷5åÎË#ŽÏÒï"µaãÆ±Ã wyÕ8àÁùLÐ7¢ˆvâz_é[ÐH½eß6"H¥œ£ÑïßϗĆ}ûÆ©j¾?rÀÀÙ4YçpU3ßaÞ›±G-‹|žÚ6û׸Ý"ªw’Qh‘”¬éC‚œïüÆ×È´]`’ þq7• e9û»e2y¾™Ô,ÓòuJcç;ä²µ–%”ØP·HúÞìRÝÕ>šãü]n1§€¡H81Q­M•ëF”†_ YŽŒÖ9¿L{+o93ËeïÁôi„¬{ùÒD|etUpšïû¼ëbÜÔî¡‚¼;¼Y8—›ð+„ÃýÙò_äS¨¼(c,[âzÃãè¾K[Bù¤Â‰¬=ôþßCÔ7²B«ky쪺°áÏû'UóP'—$š'“»zŒÕWÅ/uÕ²›lkŒN ×;1°Š‹#zWOR6L!qMâ#ÞÇ º•»×–”†F+·!{.û¨<Ü k]ÛJdMµj~äZ\ïd zÕ!‚(<[$ ÷H_¦ðmÞ0¼ÁÇÿ†Å’ÊÕWc‰¥""ïžKt!Ý­Ýö‡çµø@«;³8UÕJwMáçÆÁãñ/ò/9®Ã-†ÆlU(ráNÄ~¬†Ã¿“ËG“Ž=ÀzÃÞ”qAÉ[ñ|U%)eƒû»œV0©1I†'ÐÖ=I%¤Äû9RfcŠŒ€'–÷>¦éœì¼÷¥ø×ô™­°<óü<–‰5IÉ/K ÙcUfÎ*ˆOnEsrÕMÄÈúfÈëf²¢MN¤¼G¾ Å —End>ömªÒ˜OéKÖ­ÃEmG±•2±üÞ]¼hrZ¹œ?ÊñVX+6ô=GgivêÓw(lg©!c9">Žú»>XξÎû6»[-ô!™È”z=’¬tqFf|*‘Œñ-p¯±(¿~%hhþý£Ì-%ûóL3²ÙžO ¶°^ébL^r_ŠèI×BvËè'ÑêUòräÜÑþˆäÁûbY]kƒŸÁ£Ö¥ ݬýÝ5ôψ֧ˆË{Å"i»öpx[˜{1%ÍDŽ‹kïnŸÞJ©èNšÀàÝÌžŠx&ô£gk©j¦Žît*™iâÍö¾Icƒ«R(é—PƒÝ&ÒÖ•‰™;.‚å*bÞôúHÖKžÝÿš,RT_zÜ®°¼8ÇÉîf@ºqfÒS­iÙj§äz›âh³rhÏ\²Òùò•rNÞ™þ‘pTiØiº`·Ç8·Ëgs=õ)£]„’ ,£Ù²ó :!©«D¬s~ÛËe\¢Û÷ZIý71sÑä7 Ÿ˜ý„ÕµS¥!ø”0bˆût<ûûf£¡&yëX‡Ë¨b4&htaK×®’Æ(ë±'Óc ç©A¼R=Jrdçßv®¬æ|/©³BßêãQ}hnºu@j7üéªF%g6ùÃLNÞ xn¢ýn+=ò¤nY‹e!g%®øÆJ$ !°©ý€ ئaKÊŽ¦¥0}ÔÝÞ÷Y«þ!Oåȼ$åë@ßÊèÆ7Y»^—-pu»DZŽ¡ã­Z12ÎO§‡VÈ$*«/ßÞi«èö«@FÙmSèS ÂÐÓ¶>bU„Ðɨš‘x½'8;Ó†\'‹ËÏUÞš4^bÐ>ô1ÂK¨ŽXÛ¾•žòÕèñ ž§%â K]ŸGã³ÇXÜ’¤¾Æ!u­Ý—èÿ®–G 㔓œ¯èUGT à_¶Û–wÝ;Å.Ô©ÁL'ǽv´ÛæfUŠ”Êa1#m;±“§f¡/BÝú…”ÏË.õ†v°¥òä……W1Ž–)RÖTiE)MñŠ+ÂÈaG¯Ï˜/øJÃ’@»ä­Iæ:wï•§ìÑ`]ÄðWs¶!ˆ—lo¿*¿‚ôM;<¶RþÑ/¦íÚ÷Èó­¡ÑªR?q¬øýgàWø‹ï½?jXñu;éû¿7ä»^­L±èº?wÛ´Õ/Êä/î€ÃP-!šGì'Æ{ADäB‚›nãa†×™_%f¼ž¯s1òˆœ¤Qnžha&ÛMƒ~6_oö¥ª,_$­:<²§¯ÅÝ¿¡9k7MÖ—«žÈ¿›X‹S ?ì3s²"}2J*)˜@º=ǸhVh_+ûÚ¡os sÂWµB‡ÌwnÀ^]éï´t°sFhYd…]߬VóG ñj€áp)VZ^}¿,=~€E³zØìñІ0]V×u¶$)UÏi¶œû©^Nêò9…¬F9i QŸ LξQ=ÆKJ\X&£3¸DÌ‘·®=YëLÅšZPÊ’ÃÈf—ЈÈaë¹lÖÅ`Kˆf;5Hô%m½ê§! ^±çqºdÓBD6u¡xfv4;PLpÇ›þ1Å.Ÿa(³qTwuÁ'µ‰†ÏêkÑÚ§“°l›£/xú”ŠÙþ¼/GɰÓËž}2BLû6Ñ×pÎûÞf·Ý¯í±âk@V©\0ùõå‚V=ê5! ¶C³‘7ÓªÕÌrÌ\®"LOP>$ù¡-IN·aÌÝŸÞ[nÂÞûcºxf½?Ì&+γi}¼núN.ðå7¾×äË´ïëÅRó_1—ë.@éÅ䆥²<"–.d-€:sѵÍè$‡ßC»)r¦lOìoÐæœ1Š}MõJ†Âh?<¾Sý†}s²~©1oiÚ¦¯9‘§•Úd“pˆ¼bK}X…Mñ ¹iù£‘HÿÆÓ¤b8­Æ­7ª{äï@Œ\ïœj Ûš•’M‡ ÆVÛµbãW‚!#%\ïɰ”²2~\•çùI5Î âµQùJ=)»*›þw_Ûë!h“À!x`=’½g}¯ipp¾öÉ•=hû"ñ…¹f¦Ý ®! ¹F©m×hÊGF:$3xå:1Ú•)FfI^∠ر._2¶÷íÖ>øê·„ªp†'ÖåçŸ˜ÎØIÈq„[½Àn³Ë‰÷úÉó/ÅÏÝÐ^´”æ¢4 v²µœ”m îf÷ÛÒÛÚ‹§ªK6úÜ•;“!Ýö…8\.’ZïËáÙ¿ô“Æ9%]ŸU¥Lv‹$Í 9’O%1£ZÆÜRZ¶$£D›ä¿îU)o©xO¥uƯ­¢˜™vGL Z?~ |mù S×§ÓÉûÿ % Úõ| ”h:Ê4Èñ]ah<[™©ˆ.ߺ—öÈÒmf‹ª—)~‰I–UœËÑÎNopZ©¦9¹ZzAvö¸iÕ‰Q0Ô4E5¡ o„¢^î­Ê\ë àx@­¦Î+½íÃEñ)¹Bˆ¹ªÎ<³ÃW\`B™&vP“Î,e8–àå3\œO¯G †:1äÐãTJúšüä«k‰Vúd¨žy;#hßûÔB Hœä?Ê ÀÉ_bàïÌ9'\É ÒÇàò^•†”~ÔCšÙb%ãÖûlÛ­Á™$Œ<ÏŠ4š¸2}6 ܼK["|<©UÆJªYc賎ßüBäšU' ®»u 1$`ük4¯g'Â.°£@ŠDu¹ 2òvú§_1Q¸í¤ ™Ê0“qž¢Ä<Ý\ÌJ¶†-࿆.ºÕÆ£úÊÍè‹Î R$2Û;=‡ ‹÷RB'+kÝdÝ-GÛ›ôIK”hÂæ ˆµ0ýLŸ°ba - ,æiÚ3ó÷d¦Zœñ7±ÿö¶'Š®LèEvãb`溄%<ê:¾;8#Š Í/nŒ4žÿKcAXh }T„Ãx^´WÂAmørØ^ˆü ÐW§ ³k»®{+î×ì©)†ÙH-«aU‘ËÂpkN^÷—¥d:?;éµ¼†c +U’úžbõ‚da•ð„› aé„Àj•o+mßšØCZ'6·Î°ÄÓÓSç#¼}©È=I“6XY3æ ûòbj‹Å—óuŸ(íO˜À ²´”Þ_·-LQƒ»>&çQJתf)/ÖÖ§uìpdT+®/Ø'…˜¢]ÆjUÎUØle¼(³f^µK@÷à'V-m¨î«‚„‡tÏjÿêGýäG‹éá.G#ÏyDVZéûD ¡gAÜŽì;6¬˜²Ì45m2ÂB„Ö¹?™qïºOîu]ÒŽïÜ*~üéá8ÉUë¤Àb-+†ñÂh‡†_ê矿"râõÙxlr‚:l ³|aÀ4VP+žãdLýíÔqõÿøpû¶D¹ÈÙ™XáÏ·P<¿¶ï)óœ1hÈžª®c³Î9ÏŒÄyè×$†À\_Ç]A¦]È‘Hó…3A“§òt`µÜ€Zx‰.uÈ%M‹Ú F7/Ù…“È_ŸT@É<ÓÐy!hWkEo*÷Br]Ù2Ö̶þ 0 ߩвàÔ")“7j(y»íÜ]$(ø@È“Aå~½íÏ„:2&±oyÿé_È’hŠu`mÉ‚}zDLT…Ï(¨ËÎC»+vl¸´ Rð1¡›2K÷/•þ€°T!Çn¥´ éõUŽ '¥ §(¾Ýïd/þõ‘Ⱦ‹ª‰õA-­ ä4,ø;­J&j°¶„ðtÒì*ZJG¤ ›©#ÅÜ –½˜nÝJÖVò’ÊFb©ð5•Ý—Ãt ÓVÞþ¸dKýÂòo6B–sƒcUÐsÚŽ½A~8õ™‚8õXù‰ø™„÷+ƒ#ðÈ0 T÷ŠKä4ÇÂ^sO1ÛõaªÜv®±ƒ’ Þ‡Õî)GPÅáPO1Ïo¤éG3GȪ*[ B( ¿î,¦Š²µí™ØóÚ&,^|“±ÜŸ„{O÷H€bó5e·%^…ë'É¿O uÈæMùP‡ª'ÖÒI&$˜ñmÕõõë<¼­–W¡MÚtüúP…C㦹Ï7¢·‘·ŒàÞ¢k/!˜Oª6'–æêªá1$²øzßÊaÅ;‘qY ¶w`¯x-Å”^!ƒk¦ê­øþáíõ€“•@ÿ攲¦¦ãæO7W6׎‰2* <˜ïJä¤ÁÎM8 rѯ€LBš‘Ù}òÍ’B.¿oÉ}äsà½Ðxÿ½'djº¾†©ûÌ™Ð?ˆñ|Åsש%;Îé "î‹,ÔU™ܰ†ì ƒaO¤ü°„„«‰ýÐþ®¤¾W|òa­:ؤ¤™èÃüùí¶ÔÉ'ê…ôîN­µ#ÛÚÄkžV´î¡ÃÁÒ,í¦™Ö!ÑÓ\¥oÚ)à–^‘ _מ0’|’ÿ¶ûL˜5ËÔ?˜tþs]²n4ж~\rû9:yïßzólÅE¡[fßò‘‡tsXnlÛA˹_cS2°Ú‡õ 8ò·‹¬:“Åa/=˜½¨b›1Ø6îîå€ÂîY@åÓ#³‹SOM  žݦGui NÝeE¾E·3²öô¡ù3íÊü®.7ô¾i -š+7ÑHF–™vïÆâóã”Üðà endstream endobj 195 0 obj << /Length1 2649 /Length2 16575 /Length3 0 /Length 18103 /Filter /FlateDecode >> stream xÚŒöPX׊âî\ ww îîÖ¸;ÁÝ5hp'8www‚Kp· nü“™ï½ª{‹ª¦×¶³¶Ó”¤Š*ô¦öÆ@ {;zf&€¨œª*7€‰‰•‰‰’RÕÒÅø·RèälioÇó/Q' ‘ H&f䲓³·H»Ú˜YÌ<Ìœÿ ¢hdù7 ¦ßžRvfö‚Šô|Ýþn?õß«Aøo,y{ÐÌÔ¿G\—‰ÉôÁüÿyÐÿtùÿ7ßDùñÿ%$ájcó§šúOýÿÚÈÖÒÆóoÐȺº€Æ_δvÿkªüke倦–®¶ÿ«•r1­°¹Í?e´t–°ôš*Zº˜Xü9‰ÕþX1K; ¢½³åw €ž™‰ét ½2±ÝΠyüS­ÍO·3±7ýc¿XØ9FNNFžL 1bagx1ƒÑèñçìì]@.Pv>3{'„?ÊÁš?D!£ÈoÄ `ý¸Œb¿7€QüÄÉ`”ø˜Œ#£äoÄ `”ú@çÉþF äÿA\ ˜Š¿(ŠòoŠ¢ò±U#PFj¿èõßÄZëÄ ÊÏèÄ :ÝÈÖ4ÙÜMÿ'í £‘3h,­;‚L#‰±‘‰µ³‘³Å?Rf¶?ÄNÿ€H;™m€f.ÿ³ÿ-þkQþ‰Êü—Øèò{nÖäÿãÊÍäÄ¢hbo«2aûCbkû;ã?æñwª¬ R™ÚÛØü›3è¾aþnúÈÑ´£ÿø€Ø€¦ËÆÈö_> z˜ý&ò²wýwLùï˜ ½ù¯%ðß& ®¿Kɪ…§ƒÐî_ ™å¿ ¨•Öÿ‚ ì“ä¥ióÇýÖƒjõ/ÆÌ ƒß±YA¡í\mÿ¸ãÌÿu$èÎf´ÿM ô¤ÿK JÄá·Òô¬Úý§ylÌKÿÛ:V{ÐàžÏ™rü)³´ÿ×,‚ ç`ãú¯<@¿<‡UÍÑÕÞhjü;ynŽ¿…ÿ!ÂÊý·ô¿D˜™A!þÕfP)~ÇrrÚZþw®ØA.Π‡ê– dþg˜A~z],œ€¿kºÜ]ÜíÿåŠáú;‹?‘8›Ø;ý»â .»ý ‚è¹ÿk¯@A=þA§zþ ‚ºõé7gP¤O@§¿üç~5quµËåÏtùþþóÇ è4AXY´7á ¶ª n¨&p§ÿ1É?GùC#†ÞkÅ©Ãõ 6™¦:3pÓé^8y¤mmWœúNè;É‹×IK=lXëg¥¶gï_ Ê3?Ú–§±§ O„¿ ÁÒ« í{¿8z«XC¶€wISæ:ºr¡(æc>¸÷ôø6P¶:ºøCi¿šCñWÙ,}ŒZ´n@ÉŒF©%m…ØåGdÃ÷$³l\âê|Èéò¼™øs°Ùk?î;t¸Ç>“‘ZDÍ…R€)ÏÌã,¤Í˜ÜÀ!¸Æz”ΩËYœÎËR°*B¤­žaÍ®x¶¡°gV`ÑuÙ“Ms¾?hýs&^ÌU« þ6wTbÒvU6aÌãDa(ѽ·QÂX›õät{Ö²þЫçÿ™Gäîò‡”.…o*ÿ|B~ý±ÿTxPS~löÊÖÃpæpéÞqJ]O­Rw½Ê(ÙIÏ=ÍQó¤ä"¼¦XžOÜÈn ­½Tkþ8S³&2:³G•OV·•AkWÈu›ª™ôVÍióP݉p<‹uÇãÆ&sù¾ÓæÄÖ¸PL~_ô ´Sô&Kë©¢YYÍ£¯X÷ÝmY~BuÇ:ˆDgJûC£DðøÆ9VH lF¸ò­ëã‚]J‰óO}˜‘žf¨Ôv59‡b @_ä"8Õª]d`F³’vŽám)ºìo‹ýi8©¬?ïI"ªÄçÙ»1Œò©qˆÊ Ï5îRÉ\a¯ÈͦN1ï¢ùkMþxO7Â(ð Ÿÿ£§;‚‡ž[a+z$LÕSº=·YÓwK¥v‡úÞOX[¥y'K8l«ø1 ÈU݉n5X 0×2x磢°Êôà!OΓ½|Øö¸,å÷?T;`#ÚB¦!¦½Lœ2/O#?™¹Ž{Þ5o ÂâÒȼX|÷Í8cß'T4ÏU Q§~JN‰2ûDJþRâ¶®íÚ¾ ¦½O¦Þ§&>’óä^ùðB N&Ôæ³ 8‚Àn\±ì=IѦ!*£wÕ*¦¼wòj¶‹8€'DÝ´çVÀ¥Q†nÎ+œ{z}«Dðü ¬ïxøæ±5ÜQh¬•HË}!ƒ8b_{ðÃ#àM(‘j›—ÓW=«¥Eù¿~‚>N:ÃAŸÕq¸¥§'~Tß`-µM«âÆé ¼Ìâ×p(§ÝµYŒë±[ #a5Ï-%çäU ÀíjPô¥?uš«»P×%pVùšÈûêÁ‹$]U1…\õÞ!.ü¡ÕSpü5N_täãúQ ¹‘"^ò£V®Ëœ!>r0ê‘î*Žl¦å‹YEæ$¤ÇÐÑ© Lì÷h§ÓõµÎR,¦W^þlÞš½>ÿ\¹){€èQ¼íàÆ·¸¶Û2©d}žÑw Þ]® ú;3òè®7ø™îƆ§3Ü­ìu…p¦ÒÒ!H5ý—Lg·7šñÅ—#D÷9P:“.7ë[˜ÄÐ#®‡$ú”ËÅ׆Dïï˜Týò ¤¼àIB8¬øóðž ÆÝ#—áG:Šº¾GÀµ p†â= §½tÂL­žb<~çñz*ÆúŠz—Ó&h#YßžNszÀ§PeV˜o«iGù8ml3Yñ D‡¥åëòˆž&Jò™È³‡~;ÑP…¡xgøFU§ËÖÁ§En»1Ï<‘â~@Æ® -ü[t8Ôëè;Tº\‡%Š|!ªoâ‹þR6I_6ŒóhiÎR‘À­/|ùÓ½åX¢µ#ŠûÓà™=>®Ÿ{½³~š÷¡ƒ;ÑcAçÁÏ=tÝ¿ÉûÝÒé;ÔåðiÞ­ºãÏ1ÅGŒHYèÍAÔÈëyîR¼YV·›~½9¼Û¦Â!Bèt ó‹,Z#_ø(mr /‘uO¬•mã×%œV<‰ù<·];Fs÷b.>ü€a¢lšjÖzpó˜Cg –Q`ï麧S±ƒu?¯$EoòŽÂ¹:e Jù"æù+Úç± †#·“ë=¾¬/÷RS~*_QÕéÓèE#-T‡<$P’ ](N 1§Ï“¹”Ïå²ñ—`™XX÷36lbjô ¬«dŸxÊ+QeI¨¿Ï“ÉöÍ#½òGþÌVq²zFK¾B|ñ‚ä±}óÊ_ÙıWÔÚ¶ÊD ŒXƽ{§Ïnåÿµbº-1üåcƒbÓúj>›Ž\ŠîYsÀ$z ø]ex§1G`aoüÐît‘´ÅBâ4ÀŠ»ñ“ù0Cúpï5cë›ÉÞ—ÂÈü¢ÕM”$aÎçwP*>ñÔ¸KÞ½ÍîèTjD¡on¶ õàư-‰Mià4rœ²p¢AÀê—Ýšpf¢9á©osÞIŽÍóDP™¸/<ì$Wà Î×1˜2ú—‡~÷éãCHÇDÒ#Qô?c‚còýJTËõÎ'¤r¨{†XIåwÀ½4E=ìà_„b²ûñæv4œRy³ÆŒ0xbô£,h7,Vr-NàÏ…È<ÕóֽȂP)} Bâ¢çÛb9&±æú­¼?/ÓBZÒÜ7¿ª´õìsqRÌÞl¾RnöÙ6lÍ{ø)¿ï™Ós™¡Ë©`™H;è/Χ^<’ôþ̵w­¿p€›Z·£ ç¡Ë´W¼{ÃhĹ¹)8JÏŠJžäÁÚÝ2ÚÇ…n÷ÀùµÕ›1A—áC§Õ.¿\ÿ{Ù&¬-±å‹/†ŽàMnáe¤ó*Ùà?+aršÙÈ·þ›Ç c=á¹eÈߘVXË*{>}þUWj™¾ýRŒ`¶³âÒì Ñuª]Gíýáz?@3‘‚B\üÛ:מ¥b OÇöü."£Eµ*Ã4j‹yEKÓ×1­Äõ›HÛÎ'ÌlŠ5€ãTK¿5R]‚E/1Ì {pBI©ˆž~íç¬! þûã ~ä‘îŽD¯`™—Õ8ãQŠ*£¤ÆÍå2îN8oL¾,ÝV_{ ½½´±\~^EINXDtõ†Àa°ÍöI •"AòË—u•[‹êÁVÄ 'ˆåzåtŒL Ñ÷ç™æ("Ší5cÀpK¤w:0âc‘Ó®–žnB=©“‘ásúE0a¨tº£Lo{”—òV‚W›KÂÈÊAÑGB~Þ¥2ÝŠhlÂŒáh×þµôÛ“YÉYg_fÏ1ôS×±´÷¤è¹ br«}1ñ’,ƒ?'J]jíî8‘”£(ÈÕ²O 9½•“†™Bæ˜OlOû{ÐùÓý\Å>Ëÿ"!i'ÞAÜôE“XŒìqE/7üņ‚ ckÉ­ƒAKÀ'#·ÖXíY WÅ+}„…ó;ÿä×ÙSX$ ‘ ëà÷Åþ€0H_²þa¿Û=—œ3ÜOô¬ÊϨ‘û+MÚ:©© Ÿ©fwG,Ä^z×+m~•ðè¾l64Š™ Úei¹÷â·Ï€v…š¦ŠeziÙlKâ†V11ë©O °˜”>fÆ~3ü’úY´_š9ƒ1gF¶Zã9MËÄz¤®°0bšþ®ÏǤ„ë;¸¬¨wií€ye»V9 7CtÂuƒ`Æ îð6`DÝ4­àJŸâlÀý…y®'˜ørXú½¥ê¸ÀøKÐåw ºøBR¿~= 7…HðŸÓÜÒ\~Ls†þ¼!ÂÑÁSh*è%©U†z(×j à 9½KQÉT™/c_ȶ¡@™ˆm«m¶Aå¨þ¡V¥Õzñõ}eé£A¾%ìÍ/=}kÀ®q4ël›+„îkP\\ª5é—Ъ»¬§;–ñ¨ !¥€„`8˜n3>óìŸXm·–¿\3Þ•V«ÈÁ«7@¸ñí:šþhv †óñ´,á3[R ]QeÔ11ûóeÞ÷½=ñ,ÉH3»‘U¨AeÂúë§YF’÷-N8†Ì¦Ý+ ôÏ©Ž’àøê°0£Ù>?Bp{Qêò|Ò •ëñQ$C_V³¸6ð½¸ñ]/É+bzç ÿúˆo]8ŽÈ«¨U983G¬À[ÚÖ!¢œIHSùÕ¾âHý¸¦ïRåuŸ¯?0×h@‰˜9ÚõS¸L?%‘òˆ¸9o‚W•ÛuùÁùôžïr„ݘ~lD7—ÐF[™Ö}ÓB3õ2~•ÇåJ2µË •¦Ö5}[%ç‡r‚k¦ Ï4ãâç.¢]î¼æFdÌìýz:fßlà·µcö Ç¥ŒcͱãœÝ·Tc¨Ê¿k7¿Ðˆ…HVâ…º”‘Ç9ò›‘}{Ù.5 fâ/WåÖO A?o÷ôÂnZ‡ï…:1Ð4&ÛÔßç%{Ôá †+Uj̰²„À~¡¶)Ý=A&ŠÜŸñPX2¦—H9˜ÑcH!¬RÎR{—Ä7_»+ö¬°%Ýœ¡'Ö[Õ+ MÂÅø#}8¿å®Gæm讲¦ÐpqkD"È\É`T aç´Ý³£bu[kS¹ušùòG*ÛþV—æO½G¿* ÀËì— ÙJ>±ÒÇpÂ1[_˜¢:'Ç»—êz kç$rAÖ#yê¦Qn„ Èßœ=½œ²š'ö_͹YÛïm¨§€*­¾œ !è5zßä5où ÓWÆÆj懺ÈùÕùçOjõ~ŒšÌH*y{ŽüͯTœ®7åPoÕKá„ æ{Xûå~=îlûöê‡d¸ìC0…ÕA@|¤â~ž_Jö™Å½|°Øhè‹Ú{b )4Y™­9‰K@ k¼M°çï ÙôRIªÐÔ!ßí—bµ zÞ$†3ÊûCæ´ªi¢Óžà-†&EB£)êè>oµî k¶á{[B¥$!IÚU’X·Ðá7!Î "&HÇx²ê£÷B›L<øxc¹à tÀÿŠÁæƒÜáevKÊÛðBŸ­(CEFú‚•ßÃøEü”“V…À°až–³W•h:m$œ1?Ç·€%1_ø#:²I*ã†F¥ ]s…ÄM>²”ù9d^d¶ªËÖ³7¢ß€y‘Íå×ÀÕYîÏy›T&÷”7VGÕǵ©ŒÊñ>Ý ð¹öO±‰6„eaz”ÆEP/æYk$œáh:\vjt¶Ô#fäó:—_}‡ô‹ÃҢ瑉 Ü #˹΄٢" „kæZ4—¾¤ 8a×vñq ˜UnåEO·(Lö—(‘"PDZî(Hz‹éTóä`X"§DÖ©çsø“†T 8·] ’ â‚Q¼<2‘“¿Sœòk_[v2†•Ùd"z"÷5ê{+=gçÕÈN…›tQáMKÚ%Ò¬ÁÁO•Ž>{[qûpב»}®P2¤Zå¦náò‡’5.? ÒÒkWœlÒ™n”yšå•ÚºÍgè¹À¿òB~G°¯_ÆÓKŠÔ¬À¨9ÛÒ‚\÷Áy¯(oتâ*b†MA—u±<'{?¿wÓÄÿäŽjûÉ–@mþ|ŠM@:b¸ª‚ ^Ç’™æXÐ.á}€cû±X3¦Q[gnA¢þì/_âömí$ w…C„—Ðmg¿´â!,®U~6J¼ÈO;Œ>·2³W[^MîÍÎh1*pibŒ^;èßï»v[][Úü®èH(N!¯¨o°húxèVÛ|_B†ªš&ªxíò.í@)vŸ `öæÄ¸M¡œ{k<4 $)ÀѨŒ!3íÞæ€S‚•2êø9›Š2 ΰÍש’e™ùØ“Š¹Nƒ¹@Û8N9=¥eÈ —YÅN&c/«Ò–*¿@œxo¡h±'vù½Q9!—¾3¸ª_åúh?*ø M>àºøÇB¡ ×3I$iY*Ýè6bp¹Û”<ad;Àp„LÖh?±—}‘¤—<ÏÔ½öHƒRË&¢Ó‡‡±>P J»”8/Ñã%Ožë5{æ3*Èéù`Ž€™f§Ò’´eè¢]L†ôûPI”JÆÆÕft^ºé‹7Ç„å…S¸ø¢„¦¹ùdç&•Ûè°¤Ty1Í·¡uYeÜí±µMÐJ½æ#šÕ`®_Ôé¦ÉÊ( â¿ÅËN’±¹­µõ®|uóïkÓº#…Fø±0~þ¼©%ô åå7î¶Ùš@5)ÿA ûó­£¥ÞÜ9£¾,Í.qd}$Q"­ç&3>ÿMx˜Ìqf,rzµ¯—eƒ‹×¬ÝwÁ÷¡a,u¦øt {“èÓNáç. ›ßF~&ÝÓ·K¬…TcD„KØà!ÊÂ{F@š îKÊúä®0êAO‰&&hY†èïÁg_hÝ›ëHî&m«ˆ(0-AfA‰ÚÌ@±|*ug$›âu4Ó¸&‹MÕ‡«Úe¢@7·¾¨6Ò¸És;¶eø5‘/²ÚÍh"”íÅÓeJæ/üÔ„ë6õ §è# {ù ÖÚc”÷6ÏÚŸc-tÅc$‚²uY_“eF6Ú\//ñà&d\ݶº©¼XÎÂãç^Ž"Õõ´WÁþu ùsþ´þbÎð |á|â˜÷Ym+õ©©õðü®SƼɵÖIÿù$HÇ)é÷î"ç.U%þ©~Ùæ ë† µ¹E›&ó·-Ÿ‘ªt3e>Ü0¦M ?×£U5Ã¥·›Ç×qkßó1¹í‰$4ÝkÈð§úí)%èq£ñMu«óÑWÊõ½7ü  ºÉúõ§Æ—¨l0s½âœÍ-ßf”øIº1Ðîœæ ~luÀˆðfyÀd©çšoB‚4{3¿ôIÙ4”#æ^üÝ;°g µ«ämEÕüB럖‘%,Æ%óÚøw›@ñêó—”ýlg ?Ù q¤PqX €'P톽Ä 128Ê‹O ïs¤Ä¡^U÷N(‰áO•M½_´+怂U(}ù8»K± '6‘xK¢£ÔvÀåÌ'/Æ‘fÎS-Ÿ\êÇ7ÑáúÙ§ÀnO«YóÄä•4/‰äÚ…û± ý»k%™b_«+B¸4—È®t f´Ú]ìrÛ/…¬™×vÂé TGtöšËl€ÛÚ%á‚ÀÕ‰£©Ùv¶Í­¾ïŸí2Êõvúöš^”;òÖ:`´^?µõzHÖr«{M+r§ÍðÔ­’ X¤1è[#nQ +@«Z¥^Ö¹¥¶ÚúÔîïa';(þ¶`hK÷%s |'ãûÛ ÙÉsæÁ҉֒Ꙃ€¬†0¼º2jfŠ—h 4ƒ†ûáà¤+4{žŒÈº}÷¹X[~¯ò £&!„›š¿üê°hñ‰ML…#àþB2·‹7šÊ‚R¢®dò;ö Ú´•‰—Åì°-Ïì÷pŽ´¡°náÛ±Ä~¢j^vÙÁÆÄˆµÈQÁ½—V.¥LÖ@µ ­µ_ò%dÎ ENNwÚ¦ø7×Û௵uˆR^+•±xûS-¹ Á`Ólã>¬·<øy´iÐR…Å;S¦¤;3`ù‡0;¥«}ìEJñEqÃÊpÌ¥#ñÂŒâëbà¡o í;šcCj>ò•f,ÓC{{2¸o¸,²+ÃÀ·Ó-ŸKÛ‰M+¢ P‰B´›ebâ¼ÚÛ7‹dÓ]ívLhØ,eHþÔí¸º•ã¢È f!ººÑU¼ÄlçãÖù%ZÇ6ÅËÞÅ\Wv}›PcÝðî'Ç$Ë ¨ãÞTpe‚BÒHLO‡Íж¹8B­'%ÂCµ2ÞwR¶C“Œ¶ ü´²3~×ñ|‡=Ü!Þ×váþÇÈÑ»Xë˜c–㶦#GýÄcšõ£âW.Nƒ‡dc —¨ È^Т˜¸òÕJªÌ@ „ra eáG |Å4M¶'nP[xSˆMq/N*b\°ßzîüš¤<ËÌu‹‹Š¸NÉÇF09´ð›§i#ßBø7þZt:¿Æ÷²§Ï‚0ö­%>xÔPr’® Ìðvã¢]åŠ0ç(¼œ®ú +ó§2Âcœ¾ý”ݪäeÑÜe|Müåþ]Ô3Ÿ;™î«¯ÿTIëцût’b:†Íý <û#·VÊúü!¡oEùH …éS4•þØòQŸ¿Ž òÇlÇ\¾(*P>+Ã8î†ÌÄ·ÃåºcÜâ»fhDÇ;“¢'·˜¾‹Gráïöž eYxí7«çª´þ¢J®°»Ek3Q’ñë+7ª׊òG"ó˜ãÇÈI\ñòZ‘œƒõw­´Mê˜ÝO©40Â¥¸ä¼xŸ9Li?î±wJ+4ø´¤AMã@C‡‚ƒá>ÀkhÓ7Áì`–êð@ÂW®<ßÓŠ Ïk +s‹¨9óͨ—uË÷y‘²yM ÈËa¸µb Qpôs7Çn£¯Alöñ{x¹!}egÇ;#+fzJêô/ªn¤wÞ翯ÎË/$§a‚œµô¬56`UP ™»oŽÍ‡ÆºO k`"ÿÐóh®×ëÜ æ.EØþ ³Éùi~bGZEÈÝh¤‰‘A@ëÆ˜apEex×Ävº(+·ÍE*v°ˆ_q¦,Gt×*V™æH,o)p»6Øb§$qüŠ&Cª½ã3Ýü8Zî—7b€7Še7ciÏ Æ]é­’¤ö |s»é ¢mA¶YÙ F+ZÚø1-%‡2}3Ø…~ô”À¨¢"œ“‡Ò:Kn¯™eƒð"p+¦¤G`§ã*õ ÉÃq%ñT»±ù]•Ò"ºÝÏÃyø„8ƒù¥T_"™‰uÁ®êF¦À˜ÂÑ£žPŸò+º Ôl¡x Q´Uxq£;‘xއ1Â)Šr^:äœRÙ’»Þ ļ:Ú`17£9±&O!m°…dSô<ú®ºNŸÛ¼ä˜±·¦\÷ÕP—]ˆ$1oKm¨R„¶iÚd{—ÃÓûA³øÛ¨ÔýIÙáäïiC¸Àʧ?L«—ì&#Á½TÒX€©‡ËWÞ²lke­[ØFŠ´º‚)„·hÂ#’ “&\wšÿJÍVÍEÔúÈžÀÚŽö1çÕ/ú"øsŠúUIp4J&›¤ãð½§VŽ=¼:¶#Y*,ÞÖE¥;<š´Ù¬L¤ê¯yبd}›šó j,ã½{ì1¬ÖMF,U—üzá.§ô4ÅÎ4gŒ—YY“o&<˜šÃéÝGgâ±[^|(¼sÒÿ~97nÄ<ü0R-Åq¾OLã³]˜¹EÈ“ç?µæ×ràt{žefnI¶tœ¾·Ü'˼ù6Ǫ3¾iLÜÐ,Kîm8K|•ZUHÈúÎÚ †;TV‚´ؾÕu{‡X3P*ÚÕùôcö›)×Q@øÉ„Øeç.q~ÊÿaqËFÓ|VQAìSjœñT“Bù®¿ÀëÒöC<‘ÞÕñÛ´zgN-ðÈEN•jÅÅo(–¤ÛüÑÛï}g5ùèºPìÍ$úûsמ;4ýyÆp‘' ¬êÇò]-8H/-ö‚9±8A|TŸ“ÞΪoTûÎG Ù-^¦E\Ìв¸½³Â­Ô/7Ú'3‹r³úß>ÈN4¦!lù‚ד ?¼iæ2Pø½›MHĘá(h‘ApÂíÄZѧ*=îK}7óÍ×Å''E:õ˜¯u+ÆF^%Þ©§7Їjszf´;þ¬B%ÙçÄ 45äûWÿn<×ÞNª—Ü?îì@l o Ÿ.sªåÚ¶këט†¹ï HªÝïM»Þ­GäöcrW,¹Ã7e¥HÝSÉÁ×|8)æÙg2ØÝÅ•kÖöÊ›Ö@½Y ßÚV ”+ûæ3o5¿`’µ5ŠÒ”qwj-^æJŠ»cúñ}¿ iv6„ þdcõL”J zÇ.ÀÚ$Zªô3rý]e¸GÒ$ä=ý§ùí&p®QZý+ï.œUü.»a‹äöûNp'ÒŸþÚªèÒ æD`ÞÎàÜqúð†ÞÚIÃN›K £HKü8t»zM'—ôK»Ù?æ¹åª×lÁéu"íphA„Ó4¦PTží!±ùxüvéª4 Û’»~tÓ½V6ú"Þ±ŸºT“W]O›ÞVëïBåžUiïuÇÙ ê:êLª×}-`nµûšÉWÂ!qÌ&>V VÁ"ǹ˜#µ%Iæ'1zóù¢;L‰¼ÎèÑÂ{Q ¤ÛJÖ¸ãI¯D›¡wó}»ðß|rŽ£îŽyú»ðÃé™5¤ cPwdž²ß¥9¡¿,"¡xB¨8«ÈçZ¥UJ¾_ܰÅúB°·èÅüŠÐò©xs"‡äéÆixW¼Ê»@&ÏbÊÏqq1Êâ’ ºêªØmc9†ÅÇs~7)r—FõÎ<p2©Ê Š æ6{Éž5%oêæJƆÍIù˜Kcl°bRâ¯9膤µO«Q8þÝ [(Š™ž/ŠçÂN<}‰no±Ü)áž3ö«uµ×p)¿Q´ê™9Yý;ñSøÞ¦Âšá)ï’ Ý¹¥íDvxÌ6¸g,-¤å,cÔKÄÞÐë‹©ßN—IÁåÑÏCñP—=N«£lÝ¢[žyºiÈ‚KZ —ÃE¬@Æ£ö–ìÀúŸº+h| kt`£SŽêÈSs·]uμZ¸¦„p°7ðO¯"O×H?f·1QìO 6ŒC2KH•/û“Õ<Τ§Ïzðûâ_—s’s•ºæjE½cn7²˜Šù3÷ô7ɸ¦¨~rtÓ±»Gdº¦:ŠY"‹ýBÑtJÔ†uûÆÚÔvHƒ|Ùœ>kKTÚ†ÉJÅši‘ ¦PàÙÊ=ì­é’O>Bž;¡ëïÖ2óæ´Ç'½™ì¥„WŽ´9¤æ2¡à„$¨÷S¼SІé¼2¹Ä¥,^@Ä¡”·¥‰Þ[õæic11½«§ÓŸêE‰y7½ª¯j=sd †Ô ]T©GÒ â—3ƒ”©’ïÍ×öóŽÐáø¡gÉ(:Wºê“y¢ƒÂXÉ,ÁÛy<Í0„¤Ò%“Œ«y•ìmk“|ƯÍàÜ\=Dˆ©»lÅ.ªì±!¹ü'®åÞÀPÅ>\(Œ¥Tòxûõú‚úLéaå=0M’Ͻ&\:dwÈ8¿h×ůùh²c««ƒ_"že£ÒøXFb›:jHx'Õñ·cËÒŠ‰Üռѡ}ƒÜZëY„rmö’ôP´Vå/Ö7ËMûyO߃w¹šuÒj¾÷ç¾,ÞTá9–’/JÅuƒ¼íC£“Ò rð•›"‚ŽAp!Ù™»f§ÔipÇ2¬Þs H¶Ÿâ/ÀQCë°•Xi·(Q¢”‘R1öŽ‘øÀßIEù{£‹)gåêðÞþzò=N¿Gºäèevá–ݲnR¬ÚSÖ¢é*!IŸo²ŸÖpØ{úº¿9#¬—la°žh9d‹MD"mÉ”™wPáú]Ò´1\ö£óY2‰¿+ÜÚ”]oùˆõ.Þ·!#T-èºB¢|5… áCð#¡KfŒÂcz›$œJL©•y4ßÀ਒6»`é>ßü´SÄ%ãéºzt+h]‘èâÑòôüpŒÒ¦™è_ÕEúÛ-•]<4Š}hÛ®O Ÿ/±ÍUMf”àŠõ5äô¶?“g2ßq9u°7´íqÈ[õý‚Êÿæ°ó\" ¾ú*ºA<Yc§ë%“ò˯yÖÆõÝ}5‹í4øh}žñS¨‘2àW‚”¦š‹yT@0ÀPÕ½˜V ¿?S*'MkçèÆH¶|«x¶ãÖi ƒ*IÑ&ùÀhs·‰™(N¯i¿R^æ{€x'{R†|¸{‘*ôdu4 ‹ÃA·pNHróÑ€ãfÞK«½‚²ÖˆŒ6íY½ý¯&ÄB |…دR4…87Ô¤ä¼RëÒ k§[Ã[wô½…Åâ(†hâAhŸ®Þ8]œs¼!·¯\ã:¸1›Qï€ñQjQ8kjÙGš¦xŽA˘ÊÄ.ä¾ýoBäÀÏÞmǘãmo\ô¢ª„¹m v²ûïœUt°UƉ8”ÕÅÍ®íZ!&Aõi€ áyuÌN_ù:ñ|aÆa;öd, .òãç¹ôúùNµˆl3À u Î3·çä!ÿ$¾ÆµÕÑÒ®yå­ÌFa8r÷×AÛQ¾Àãê £®E)q¯Kú=ØOƒ§ë[[¶ào1­*‰·æ‚ºq;c’•À`‹{l‘¯LË=xç™rÒ¡öDS²§"Á'//èÈï~Z‡fÇj]øMùh(Jƃeä4`@‚¡Ãá µ…Ì®BÃw—mÄ=œø™¯-õ\"Þù)±ÁõÌ‹J¥©§s»r”‡Mßð:A±ÒÅcηÿ¥™#Û¥ò`$F dka‹·Ñò°<ì[ñTµÚ´úîù™w¥¨ Pº#a tò·ä†,ãbø6i€ÌïMÔ0 ÜI%ã»èŒ€sã"à÷Ué–œœ,)¸¾zs[ìµ×Bïm™†g« ]‘Ga&ºbÞþt㚉Kœ$"ªPº´}"ÏX( &ê&·ÜEÅL×ËŒÍü‚·¥ñ„’ M¤ðþí ý9kkÁ<ó–P_ÒBü“§eþTy2\)OI„£ŽNËð‹¤6!¹½/¥KÉ`KônÖÕøeÅ…=÷VÝ|…«…©™”ªcê€wÞU{hò‘™n!ÆÉ`7G_ÌKà5“QM¢f¢{Z‰û˜Uu᜺À•(žû;ª‡¬2'D^êuºæ»­xÙ»zG5„„ýQÍøÛl_>ga6ä C¤ê’>T;á3lS£ÍÔ¥ô7ýH˜ð<¸“D{Ã&ç¥ ]ìÍrF0ô´*tü…6•q8ZµH®d`ç#u,=5aD¶{À‘Ÿb¡¸ãÕ˜X°›x¥22…Tkåø,ð}*_v€ñ xÂ\ž‰øm?cŒ˜mÝ·éfP¥@;j¡l­$üœw+‰@*¿«<æ±Ðj‰Ž‹=£t½_dGù^DùõE¡É@‘‚ b$kÍxEècÀ£ß™>•CÑò³ãeéÒéÀ(ê¯çÚ$‰Ï[-3‘XzÊ“åÊâ%™¶ôlx=ô'ƒ}=¯"7¿ªQñ{!®’‹LÄ­ÁõPÑÃŽhÎÒ£¼ôªu1wÀ!qœuD”´…¤íEÌ•CCŽ&¤¯ÞR–§Ú׿*=%¨k¨ÓÄn#´þ\šª–ª‘äj&%÷êǨßËáÿT;¹”É‹ŸCÅÿp¸ w†šY± )PkÚH¢¶µÂõ¥1ð|‰·à)ZåZ2Žë5±~I«'¤ÃO²jKÕ9…'®ê¹f`‘ûW—ѼZOgÁ†h=Õ€BÑZ?YÚTk*•ah‹å³@Ç&»Ú«9±$dnUH[!!1ïØ·bAWz6•°ùë”jº‰¡òÃìV¬Ûs;ŸÂ½ì°ú)á­Y¹G‘3eaÃçaé9|VÊh°:Õ¨Øëò¬âS!… Jxg,;>”ËGY{Mïj9ÑFäíŽ0qªÕÆã¯;À"ò#uî‘g…V}éÃI*³qˆž„Ó×>ŽQnû…†ÍæZ²žá´æ>Ü`°ôFƒµ}¥Æ¬áÕŒáâ¬p–:~ùbÆ‘§Iy} ªÖýh¿N‚¨êÁTMŽ· HsDߊÿÕƒémÄ£8‘_Ó9kÿ9îiŽWY`ZßsöÝNQ—t‚UG¦¯1g\ü-Ù»y4¢þ1Í>±dáÁz;ýÚQ°%sŠ ‹‡•TtP±»?ŒÖ¸Ø¤Õ'Æóü: ~L¨ª²¬³ÁK=åòX¨áMkIG9ötJ2`463 ª,kÒolDâ–h§F/Å_f¯Ìe!FFí’©‘óãâvYk÷%¯Ã}ì³q¥nV¶"†O+Â/f%Àm2ø@8ÎO—”hÔΆ\Ñ­BõîÍø3{òfg½æmûä8 «î“86.6ºçiv–‹HÑZ‚×@jß#9ÖU¥£ÈÕÖ„Ñ}Ò–¡ôå)ñj!ÆÊL7f*;Ì|8 +s:qÐȃe}ìêÇ¡Eæò³GïïŠü´d5-ñÑÖ„±s™NWFºõï¼Ð+íxr‡³ì¼/áÞ[pžåÑŸ,K€¹ý¦|7ÙÑ>ôê:&s}ªÅ ó]È9pŠxڲĈ{›?ôZ”ØF«ýéÇÈÌsÎd#>¾òÕ÷In¯ánÃO!rMåв˜_7´H*í•·×£º %Œ©”L¿ŠT·3Ú'$x¹5ÉI‹ËŒ„uh¼k\TÍw;<ç½ÃL¦Ch|]ˆ€HƒÃ7]¶'1ÿ^‹ë‚‰<6`ÞG.½TÜéË"#è§¢ìM¢4NUõÔm戜°ÔŠP0§ó^šMÙuî"N%©  *÷ÆðœS`c\‚AÓYóðwœOî½qÑ£â³Ly\º z+^š0¡¯Ék ö²JSiÓ‹„SvÔŒÂð6©Ý=}UÞhW¾O× âJÕû„>Ù苚¦.{(êÇè“þšµ•>_ û­h\Ò—̹ wÞánšÛðÇ;8Eé'r/R3:‹‹D¢º6ÛNùÛ(‚:q†CƒkùU°çǘI§^˺„kÑã«éça_PÑr¤¼+POê.òÃ) „G³dH™Ý*‰?Íêc€íånò&BÛ–LVÅB!"‡Z½H¥Å½Þ™œ¡æÁ¼_¥%Ge’h¢x§Sb†çgÓ„#(Â?"ý Q ædPýœ™[C à†î\M¬z¢ÑrnÚZ¼/á ñ@kž¸´ù εÍXÉðAŸ:®0ª÷œLÄø$ºq€íõ8w Ý W9™¿‘5Éú—<Û”MW[˜µê‰‘í‰@ÖU’øáìz?äz|辉 4:£ÈpE.ßç\3Ëâúkj^|l9a©©†P÷C“Dz ÂXêË.LNÏ›³`C$cXÒY ÍJåe+ÛqH†ÈÝÃËìì6*ú®‡YrC}êÇ•Š¸ŒŸ ®Ýƒtà©Æ½Ð<ת™¯³u# ñs~Ëì× $sJ:„•ࡨk,É©aò%©;=cuq¼áµ™‚¡ÓÌábç0+'Ó>g³<ïŒ>8VfÈ5ð@Ä `Ûò£ /ÈG)Wk¦çEBˆPƒß˜u¿K²Áä™'ÎÐGd 7»-|{€ŽÐ:J4Äx+òñ®Žڒꌗ",íd%=E¥BëtAÕàËÛ×Ú™¸‹`ÕûK`+Þ,¤â æåÆØëŒ~>°!]úΞ­=ƒýl¬ûݼ6ÔÀàã§g¹[m¥umŠ ÛÒ6Ý]‚²a.A¹UþWîIɸsÑ< ²òœrÞF/ÈI½6_äi´ÒY_+•+ðÉw»B—q·9â´¨¿¹^òE»¥ø©êÛ©æ4u©kR-š†áÅÚ¯Íô÷Òak>Økð”LjõžåaŽ ÙÄ"·¹$„fìžÕ·¿ÊÀœ—f $½Ý˜õÐ1‰C4]5)G>gž¯Hk¬i'E­wì\hy ¦GkÚæA7mFÅZ\¯çT œ''±'WãNNõxº ÓŽÉû™t-O²½a“¸­ÇÕ¯â˜è)œÂZ3;Z¦<ô¦èr¦Þ³Õ„Q³+Ço|:ÛZñÁ³­ÝšgïŠøÁ÷±ã&)×Â܆xÇj–>K ˆŸèkŒÇ·ß¦Q°"™-æÛ¤"$-˜ûÑ®…D)íyŸ¤ DdûŽæÀºnØ31Î2W])áò×Üý0€M1’¼,„Ÿ`£díÝn³só¶Hù9M¯Ëer Y]èýxg©›A„‰5lqÛæ9¯êÔ°6N–޶[…)Á±ßµ^¯æ%Ôþ¤Ê5²±’´æ³h(ôû`Š‘K‚rw¦¼‘ס•—àð’4[5e©9ë’MRËM0ìºa‘Ͳê‰àk1;7Xœ»}!^‘ˆœm5©Ð<üáQª_6+nÜg‚\Að ,«ï-„¬¯ÃœaöÖ Ó ×Uf‹ÂÜl¼#3[9N®TÉfÅÞûOƒW¤gÜsÐéò1Uó~±`¿ÍÐÄuR›®0úªlU C›)bëßi ô$"b™s S|:7”ŸpÝ%}„ ç—aÄÝȾ“ ztré ÏeÒâ¦>ø×¥Ôm/¿¿ó1íbÉ»Ç räöÍ®@7·—EÑO^+ÆþË5š›{¢…øJ{¨ôI´2võ¸ÚbÖŠ}À¸EM&&­Ö¶ÕÄébdeGâu<øb¥ "üÍâËŒJ¹Ú{)´•´n ‚‹B‚/ VïŠò(„†Â›ç ¤™7bá¨6úsš­Íä‹ã/\Ü.²+Īö;„Ûâò˜¿µ7Ý„2b„ÒI¹9›°ŒèÁÖwîõ÷®˜a KgŸEBož%v}ukZ„ëŽì¢Éé”o®©Ðи¥ ¢jêG>õ甚C]"Ê LOäí´CSQÞ1eLqxÀc÷ø†êâM;[Ðû³õ —_W wí Ï×,ùÑɾ YŒøcÏbðµÜOpäV¨-¤…4"èá w*ÇÝ’~¹Z;††—hÄ[^¸×wÔóã? ·á«Y„êOÄiÈ6ÿ4„ù84ÛE¤yYNÆä>NNÞ)ábU…Ùª¼ð3m}ŒD6ô›|𛈣|뢾ØaÞ<_2¡P´Þ‡»‰µ¼ï›Ý– ?r”Èá47½ß5)?¬xW»ó´d5¦±Ãñ‚´ô^PMd+Z%ÊæiZ£ä;>ù¬£^A ŒÓ̸âšésÁ÷-«=ÛXBÞéVÁÀ¤=%V¿‡÷er$Ñp–"Î"vjÒü¥k‡Ã[Yz”4¥[t[ý²Ž/m†ÚÈaˆpÌ­Êó¨¢8)ˆ¨ˆ„úåz©&p02z“Ùþ¸Ó‹f‚sdë~ íö$šÏilX›L¿ ^¾*mà® =Øù•´@s=}u@)K.‘«ê[ƒ‚=€EíŒÍQ†·HŸ!IŠÔ…¡ÅOV,¢Žñœ¾q¢ÞÔwôÆIbƨEqö…ƒ6„wísøÔ¦FBø½ŒÝ38J¬ &à‹ ãëeêÁ¢à1@Gfñ MÁ¤=b«ŽD2&=pJ2êØˆÖ“ vlÆzÓ<|žó§™m¼ê»gHW“iúí°#8†[•/÷9k¢Milçou¾Ã¨æãïóY „Ö"¼„Ú¦îl‚L÷¡aŸ¶­ûÕsá¤H®^ùw(TIÑšÞšç±Ö¼¬¿>RíÖä3ȰÎQÜ”w¡ŽÒcM>DøŒÇS_‘HݬLzÁ :´Rnñæú4§÷éÂ÷€±G•pòe%P°bœ‡, ß:+¯^<—qãñ‚ÀS¯2q+v-Ñ‚•¹-æÛ²î‚þñ𢓠æ<¾ºzŸ" X¡í©ƒé+®îD66ù;©>Ùe†nšjµáíêÆ'a²þÜç´ÄmÑð†Éè¯=ELÖ‰}ं¿_WD ZÔÙìLxVÁq^ ™¢xÁaª:¥G‡^=oƒñ‹Ç•Èq8\¶"åÊz¶WN-‚rD˜ ÞyçÐò¬dºÆ »= ÑØ ~Ñ/9®ÌðüÄÚ¡#ÌHÞÛ¼QÀ„±<ïîNk^äâ5ŠÓ˜C0ô]pýieX«4Þ!'²–`°;_Êo.â„´S£®RE1AÍwû6쀾“!éº1ˆ¼ËõGE’¹êU¡Ÿ€ÜÇ$¨=W,4µf:Åyl.-qÒÏV•F»2p¬¼£Âd1¥¢7´F®ã¢Õ?Æ™­Þ|Æž“D·˜^ž” s×k|…`‰Á2–åÒ0-m=€2#Ù¾À&T|æ³~ÅïA'ó¸-ø+ ;ðý¸`1‡;À†n¥T9_{Œfè( jú+*×eÞârÀ+ŸUE,YLû” Ï’S«™Bï½²?4žqn ú-¨?µrV%TÇb5…W¨É3)àýÃ;y„ƒ€UMT§~ šÎ¸Ý•’ÏUÐ?#úÊI¥ø;£Ïc9^Eá–¹ÖueáÎr»=é¿ðÔ”NK)e¼9 ,Xëñ Æ `Șm§ÁÁìz¤—#„ý‘v.Þœ~;¥ª™xˆ»/ÙŒ:†¹¹8AûyË~¶øÑaç—ï-'V¾–^m‰ àpþ?Ü#ûØ óxOMlÜÎ ¯ùñ±Å*ªåÖÚ6.»=¨>ºnZ{Jßß™»¼¸Uľãä¯ X1ì.™¹+Ç*€\]hÿòdÉ÷M¥5ŠÆ¾|M•Œ«±GWip࣎âhƒêõ„^¥³—Ÿ¯}2SÌ=•*éO Ð ‚/Û|ÅöЪ¨·È'4n%‹9ëØœ…Dt^1©ˆ*FÏ•‹ö8!Y·®\ Tå꓊ ÕVËÚ piÌ1Ùé¿uqƒíU9wо¥µ Ž÷f€Y:#Þè¨w‡ö=<ßàâ¦åó­Ã#îñ^‘ù›o¤ŠXùeç,>‡w}ßKNsÙeOÆ%š}ÜlãYžUTG—t½{Ï[Õ“ ìye–SÞ2œpwF Ú*#i¨Ùœk&ä]>ï†ìdyÝ@Æ—N2ÐKufÆ·¾žÛ”c*)˜ˆ‰’3>Û]ü·…ÑDs þî௣bGšWªdW/ÓøolúÍX§%Âv´‘9è°o9U*á¨Æ·ßmè9qœ#yD—ÒÙmÑ‹ƒ‘;%ÑNä5\ Ný9/)œÖ´c+’Ù¾Ô\ŠeµÂ\ÚPtjûíÖ¸ÎWšÏÁMÞ/;ô 3…=,Tå¼ høx®"Ýmƽ6^½Ý;{W¿øFÜÛ›p H)Èþ ZàסÀà>"ïz|”•š%`9éÇÌha'?É Ðý½fZÂlþœP¥´@¤X.bNJ5µÕŸ+)}Àå©ã/ñˆþŒ ÏÔæ#OÓ'kø øÉ{ '`9ò ,ù[Œª¶ 5WÜp*¼ö¤ª»VŽw¬3pä ÉžŒ¥ØÑMØ{“” × –Øž¸a™^7iäQ¹Ïy#nÝ‘`èÇýÅ¢?–µ•·nõo îÖ’LÒtàÚѾimdOÆzzÒ`˜ßÌk^ÞÇÒêDìI­ÌÝEVûR¿«~[p¸ã4Â{ßÛe¤×.6ÒîPn?ÎìéAþcr´µ³°EµÛ×X*£œUiHàµo¶Î¢ˆ«_ZëY»öýä]ñç ¾çGᘃ˜ñî @œ”Yq Ü_Åú¹Ï¢Á°ã•H¯Ž~îÏúÊø{¬eiã©$R\HI׸GèñWP°Y®^l¤€‡•CÍr‚™.¥&…”º)‰Ü¨Kæ êSDÞ×ëáø‚¹n£ŠÐŸYSœT>0Jpš5IÓäCÿÂÓeÜv¸V,íßúä‘1íg mox«„%Ø«4Í-"QSq„˜%Màëñº:X•Bt‡˜ü¬ÛáÖô7—ÿ¿°G’fŽàÞJÙ ϱݗ7]ÄOøg‡ñJ¤ÔÄXk=梥ٗâ6âòºö6åìw%2ƒd˜²êK¿ñ}Jüäû¶m~šR‘"+ Ž›:•> endobj 145 0 obj << /Type /ObjStm /N 70 /First 625 /Length 3333 /Filter /FlateDecode >> stream xÚí[[o»~ï¯ðcÑãñul m©-Ên¹µl(¦ÉÐÎ!Í”\ذýù–í$“IÓ ´G:R3ãËòº|kÙËN\¡%Ë™PŽ)Ë„EQj&´eJ¼ ¦ Ú´cÆRÝ3ëPG[áAoóBà-™È¥ÝF1!4µ€‹4D‚aª@?U´£–‚ÇD!@hÑí¤Gà 2¨ø|¬f2Ïņ@+ Dc™Ô ÃmÁ¤Ëi¸CA€™õL fEÎTà\¦œ14@’ Å´”Qh¦Ñµ! ËŒ¶D +] a¢Í‰¡“ÌJ‰QN3[hMÚ1ë=ÔpŽJ R“*/YQ8R\3—çfC"g`n” º´ÌKBŒ¼òŽ9椺bÞ’]žy—À=Œ‚Íàm_-6À=W–ø¡`z*X MnÊ XèÉŽ| ˆÚ+R Œ0Jø KÈ!–$_%͆$Ä…–À38H D.õ9ÁO>•PJ¢&¤ m€K ‘9dÀ Ä2$Å…$I\¥ ÈpmðÇì£Pq÷†ñ÷ÇA(s6œŸ6þø#Ðì6à {ôˆñ]D‹´»pU‘Š2ÀË.@Je æ¯FMï°š°Œ¿z¼ËøQõ}Âæ|~\Tè(O« ¾Õp2Fä¾ÁßTãf:êUã‚¡é ê×åvó}ÌÑ`a`áå'ˆ)GPt[ÃaVÃì!]höÄ·Kïh2Ížøé-Ó[¥·No“Þ‰ŸIüLä×1)Èßà‡Ó“I¨ï×Ã/|»õ«QÔ=ÿDö€Œô2Ó^[äYŽø†ðÆä.Ьðt[ûCÆŸ6G ƒÇ6ýB÷×EŸÛi‹L©û©}†I²ilæŠâ^Dº"sB1«\fµYˆÔ6ÓÂ^*Räwd¦t-Ts™ÊdÞ˜{EV ^dK¤4™öú^EæE&‘'æ"…Éru¯"G¼`Aœ‹Ìuf uŸñcœÍÖð™Hãu†Õú^ãÇ&CV›‹t*³FÜ+°á²À˜fÂ߯D£1'üB¤•Ù=yr&QkL‰¬F"~ýõ")IÚüê$yšë)m6ÄJ"m'Ø«“*bÖdXe>¡2Ø÷SÏÀcéYxŸÑÍd*=cK”…•,0ªÐ’Ú¡=Y¦C:î*·4>ÐaÈ ­‹a4vsa„×rÆ'Ž‹œãÓÐhƒq‰{¤ Ol¹l&—šÂ¢›Tn›²jV2Œ5åŸTÂb†ížnõFêÐtª»¹Z ÊØ¯±2é‰)P´z¢±žä$l}þ§ ®œƒÏÂó·nˆåD¯1™MO§¨%>%vª8(塘îÇ(ôhZ|C½2Ì\EuŸK”D&Sl–­g`-Jmª–C#ûv_KÁËT[÷‘+ZD®º Õã3¶tþ†jf–%+p2‡ÉÖa…Ó´DNY‘Í8›4¬ø6õ§¶06qW–FÈ¢ L9oè,D¬†vK-³äV¹å¿ÐºäU¹à‘\a–©#…ò‚zøE‡´z£±žˆ,+7œò' ¬ŒzEc­íNåþ@cC¯ í…&#MjbÙÆQ‘§Ÿsƒtœèóß‹ÀÿíÂBÿ{Yù½¬t–•VL¤ NxLT‘ÍžJHzjEû4KåuO§=•I©G?æÂHWÌúbŽ^Ø£§öoIJ:‘$FêX^PéP×-Їyéj oòL[š ” ØÃ“êÑVÚ~»™6l½•£],ø™Cäµ'' ,t޶ûÇVú¢ÓS pðÂÒº$•òa¡‡GÛagu óC+S1>­[øŠä´Ñh[dÂwÁOá3F˿ԺäuOÏØ½ÆÍic¿¦/ÉRŠkAú"B±œžo‹S*øWãÞ¨¾˜4£x|Qž£gïù›çžþkç`û½è”§c¦#ÅvøŠó¡Qì¡4ô5°ò4éœ:îÑÖƒr§¼xVÕ§g¨:‹ógû êÜ›”ƒº·5<T,Ç1yRÿEß@oð÷i& xœ•#:Jnò-¾Íwøcþ„ïò§üßãûü€¿à¯ø~Èø[þÇK~Â{¼× š!žçç%ïóŠæŸkü}C©™Žø)?ã5ðs>ä o†¿àÕ¨nú|ÄÇ|\}«†|\ç>9UŸüÝð)ÿÆÿæßùþσˆÂn ÝE¾x]>û¯Guëñáë­7@uçpGä—ŠÃP ßÐ˨ÑAU-PÍ×@ZÈ¢J´-Ô)€€­|ºlSq›^½ÞÛ?z›öüå"ýÜ$sM ¨«å!ìÒk튮\6È߯ çoŽ_¾§Ð³ÆEu>3(÷¿bÐÜMÖ¯5g5ðŸó?Sð¿Dø¿^šïù1ÿ¦Áɨì}©&ƒêódVÿKæGË«ó~9>ãÕ0¼0gè¯^LÁböœý¸8éùø—4‘†5æÑ|6ÑïAr(E¹iŠ}å_§Í¤êŸ Á¬iBmÑã¤<¯£Ú‹é9¢k&)ÿ§5KAàÄm‚àåÞöÖþ ‚5A­æA­ìÄÀ!ý ¦éJΊ«Wðź5€óÕmÌ·½sðêÌ?Ü_7 #Bª_šÕ~ŽÀU³àIˆ}ŠùïÇ@¤SŒŒ¿\î­DrÁeàkq²GËÞj©?<:~V‘Ãý££uJZH”¢G€šmA(Ä„TC(¥\á É ‚UãÛ†_bö­²ÁîîñŸï“Ù‡kGÄÀ¡ßÆ ã×Ç Uo2qÜÚ]Ãe Ѳq·Ê ïvž½Û#ãŽ×zË‚§»Ø*â4cÖaŠü\®ÓùZŸöêQoPõš‹£e»ü­»vžíÿ »ÖGªŽjÔ/êMÞò>/&ºYš ÿÙd\ûXzuM0LÏcyRúÕÒʀЦГrÖ†j¾J¤ sm®ìó~3`8’å×i9àÕ÷Þ <³étT•ÖN‹”Õx3ãôüÊÖ§Ãkó#¡6Ë“ƒé8$Ëj<©¡Â,Q^‘gù0Läé°©½fT]•ý­²ÂÖ냃ãg!NÖdE›ÂDK¸Øýr˜\‘/;,ºr§1K*ëâ"í•î;8Ú1q;iÍŽé†q²&÷µ~á¤Fxh»WáwÄ•#äRX1ºK.ÃìÖ£ñ„üʈj¿œWP{W÷'gãp+Ð5o‡°§n¯ÏÊá««ë*ä‹¶B¢h)”ßB“SG—wÕ1®¥UfÚX}{áSNW¸\qŽXrŽna¡î‹åývWÝÕF»%mD sÚt·¿]}ì5è´õñw Ïêf²«ÑJìj¿V#×ÕHÝ^£î>¯£_ ^ÚÅÌõÑmuŠ»pXggÖUg5œUÕŠæŸÞÝ?u¥¯„¯Z’.mK¼¼çtòtW{:¦å{uè†ä˜®HN)Ó/®;úäÙ?ëþ˜}L7ÓÅÅx¥DÆëŒ*^$Ñ!h>ý s¹§ë‘ñŠ&‹Îâ×Y,€Š{<±èGœ[¢ yº{™§;›Bþ´:, „DB+ÝÿLW`Ó ž«dÐÊ ] /Length 550 /Filter /FlateDecode >> stream xÚ%ÒKoŒa‡ñû~gjtz‡j‡j;=L[¥ŠU¥JQêPŒÃ8,$v|;‡àN,¬E‰µ…ÃBbÑXHøV¾‚EÍõ·ùå~Ÿç™'oß^ffËn–3·äMºyK̲µÇÌ[cl†Q·Ï´¶ƒ#)HÜêjm+ íÖøCWÕÁJh†Œ[Ó'md¡Ÿ 1ÕC#[˜š˜¶2m€µsË7ë·«`5¬Vhq+üÒî:ÈC´¹KÚXí°‘ëw2õB§Ûð²ŽtAº92ÂÔEàCdûÜÆéð B?ì½ó[yBGJÀ§Ëƒþ6}¦í0#nsÏtXßTo5 {`ÜmqI»»`L¸U_jm/Lò¦Üºo?L¹Ý¬êHÀ!˜v»Ú83pfÝîüÖÆa8sn÷îkí(œ€ãn'µ6§à¤ÛóÛZ[à5Æ™ÎÁY8íöâ gà,º½û«µóp *nï3Z»W  Wá\çzÕyÙíã¾ÁšúãGÉS íz¤ÎHaFÈ1.ˆ0¡ÒSut9 ®¨åýõ• º ÇhZ ú‹6 º ³ Û µPknK º¥Ó=û@S—{雦‚ûlZS·û벦÷Ÿ4õzÒ:¨©Ï“Ú?–©èIEµG¿'w+š<ùò]M½M!ÅÐK¨BŠ) š˜R ÚˆOeÍ<•jÿ'nB endstream endobj startxref 202896 %%EOF readline-8.0/doc/version.texi000664 000436 000120 00000000334 13400402457 016335 0ustar00chetadmin000000 000000 @ignore Copyright (C) 1988-2018 Free Software Foundation, Inc. @end ignore @set EDITION 8.0 @set VERSION 8.0 @set UPDATED 30 November 2018 @set UPDATED-MONTH November 2018 @set LASTCHANGE Fri Nov 30 22:50:53 EST 2018 readline-8.0/doc/history.3000644 000436 000024 00000054303 13171113550 015561 0ustar00chetstaff000000 000000 .\" .\" MAN PAGE COMMENTS to .\" .\" Chet Ramey .\" Information Network Services .\" Case Western Reserve University .\" chet.ramey@case.edu .\" .\" Last Change: Sun Oct 8 11:43:43 EDT 2017 .\" .TH HISTORY 3 "2017 October 8" "GNU History 6.3" .\" .\" File Name macro. This used to be `.PN', for Path Name, .\" but Sun doesn't seem to like that very much. .\" .de FN \fI\|\\$1\|\fP .. .ds lp \fR\|(\fP .ds rp \fR\|)\fP .\" FnN return-value fun-name N arguments .de Fn1 \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3\fP\\*(rp .br .. .de Fn2 .if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4\fP\\*(rp .if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4\fP\\*(rp .br .. .de Fn3 .if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4,\|\\$5\fP\|\\*(rp .if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4, \\$5\fP\\*(rp .br .. .de Vb \fI\\$1\fP \fB\\$2\fP .br .. .SH NAME history \- GNU History Library .SH COPYRIGHT .if t The GNU History Library is Copyright \(co 1989-2017 by the Free Software Foundation, Inc. .if n The GNU History Library is Copyright (C) 1989-2017 by the Free Software Foundation, Inc. .SH DESCRIPTION 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. .PP .SH "HISTORY EXPANSION" .PP The history library supports a history expansion feature that is identical to the history expansion in .BR bash. This section describes what syntax features are available. .PP 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. .PP History expansion is usually performed immediately after a complete line is read. It takes place in two parts. The first is to determine which line from the history list to use during substitution. The second is to select portions of that line for inclusion into the current one. The line selected from the history is the \fIevent\fP, and the portions of that line that are acted upon are \fIwords\fP. Various \fImodifiers\fP are available to manipulate the selected words. The line is broken into words in the same fashion as \fBbash\fP does when reading input, so that several words that would otherwise be separated are considered one word when surrounded by quotes (see the description of \fBhistory_tokenize()\fP below). History expansions are introduced by the appearance of the history expansion character, which is \^\fB!\fP\^ by default. Only backslash (\^\fB\e\fP\^) and single quotes can quote the history expansion character. .SS Event Designators .PP An event designator is a reference to a command line entry in the history list. Unless the reference is absolute, events are relative to the current position in the history list. .PP .PD 0 .TP .B ! Start a history substitution, except when followed by a .BR blank , newline, = or (. .TP .B !\fIn\fR Refer to command line .IR n . .TP .B !\-\fIn\fR Refer to the current command minus .IR n . .TP .B !! Refer to the previous command. This is a synonym for `!\-1'. .TP .B !\fIstring\fR Refer to the most recent command preceding the current position in the history list starting with .IR string . .TP .B !?\fIstring\fR\fB[?]\fR Refer to the most recent command preceding the current position in the history list containing .IR string . The trailing \fB?\fP may be omitted if .I string is followed immediately by a newline. .TP .B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u Quick substitution. Repeat the last command, replacing .I string1 with .IR string2 . Equivalent to ``!!:s/\fIstring1\fP/\fIstring2\fP/'' (see \fBModifiers\fP below). .TP .B !# The entire command line typed so far. .PD .SS Word Designators .PP Word designators are used to select desired words from the event. A .B : separates the event specification from the word designator. It may be omitted if the word designator begins with a .BR ^ , .BR $ , .BR * , .BR \- , or .BR % . 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. .PP .PD 0 .TP .B 0 (zero) The zeroth word. For the shell, this is the command word. .TP .I n The \fIn\fRth word. .TP .B ^ The first argument. That is, word 1. .TP .B $ The last word. This is usually the last argument, but will expand to the zeroth word if there is only one word in the line. .TP .B % The word matched by the most recent `?\fIstring\fR?' search. .TP .I x\fB\-\fPy A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'. .TP .B * All of the words but the zeroth. This is a synonym for `\fI1\-$\fP'. It is not an error to use .B * if there is just one word in the event; the empty string is returned in that case. .TP .B x* Abbreviates \fIx\-$\fP. .TP .B x\- Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word. .PD .PP If a word designator is supplied without an event specification, the previous command is used as the event. .SS Modifiers .PP After the optional word designator, there may appear a sequence of one or more of the following modifiers, each preceded by a `:'. .PP .PD 0 .PP .TP .B h Remove a trailing file name component, leaving only the head. .TP .B t Remove all leading file name components, leaving the tail. .TP .B r Remove a trailing suffix of the form \fI.xxx\fP, leaving the basename. .TP .B e Remove all but the trailing suffix. .TP .B p Print the new command but do not execute it. .TP .B q Quote the substituted words, escaping further substitutions. .TP .B x Quote the substituted words as with .BR q , but break into words at .B blanks and newlines. .TP .B s/\fIold\fP/\fInew\fP/ Substitute .I new for the first occurrence of .I old in the event line. Any delimiter can be used in place of /. The final delimiter is optional if it is the last character of the event line. The delimiter may be quoted in .I old and .I new with a single backslash. If & appears in .IR new , it is replaced by .IR old . A single backslash will quote the &. If .I old is null, it is set to the last .I old substituted, or, if no previous history substitutions took place, the last .I string in a .B !?\fIstring\fR\fB[?]\fR search. .TP .B & Repeat the previous substitution. .TP .B g Cause changes to be applied over the entire event line. This is used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR') or `\fB:&\fP'. If used with `\fB:s\fP', any delimiter can be used in place of /, and the final delimiter is optional if it is the last character of the event line. An \fBa\fP may be used as a synonym for \fBg\fP. .TP .B G Apply the following `\fBs\fP' modifier once to each word in the event line. .PD .SH "PROGRAMMING WITH HISTORY FUNCTIONS" This section describes how to use the History library in other programs. .SS Introduction to History .PP 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 \fIexpansion\fP function is available which provides for a consistent user interface across different programs. .PP 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 identical to the history substitution provided by \fBbash\fP. .PP 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. .PP Before declaring any functions using any functionality the History library provides in other code, an application writer should include the file .FN in any file that uses the History library's features. It supplies extern declarations for all of the library's public functions and variables, and declares all of the public data structures. .SS History Storage .PP The history list is an array of history entries. A history entry is declared as follows: .PP .Vb "typedef void *" histdata_t; .PP .nf typedef struct _hist_entry { char *line; char *timestamp; histdata_t data; } HIST_ENTRY; .fi .PP The history list itself might therefore be declared as .PP .Vb "HIST_ENTRY **" the_history_list; .PP The state of the History library is encapsulated into a single structure: .PP .nf /* * A structure used to pass around the current state of the history. */ 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; .fi .PP If the flags member includes \fBHS_STIFLED\fP, the history has been stifled. .SH "History Functions" .PP This section describes the calling sequence for the various functions exported by the GNU History library. .SS Initializing History and State Management 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. .Fn1 void using_history void Begin a session in which the history functions might be used. This initializes the interactive variables. .Fn1 "HISTORY_STATE *" history_get_history_state void Return a structure describing the current state of the input history. .Fn1 void history_set_history_state "HISTORY_STATE *state" Set the state of the history list according to \fIstate\fP. .SS History List Management These functions manage individual entries on the history list, or set parameters managing the list itself. .Fn1 void add_history "const char *string" Place \fIstring\fP at the end of the history list. The associated data field (if any) is set to \fBNULL\fP. If the maximum number of history entries has been set using \fBstifle_history()\fP, and the new number of history entries would exceed that maximum, the oldest history entry is removed. .Fn1 void add_history_time "const char *string" Change the time stamp associated with the most recent history entry to \fIstring\fP. .Fn1 "HIST_ENTRY *" remove_history "int which" Remove history entry at offset \fIwhich\fP from the history. The removed element is returned so you can free the line, data, and containing structure. .Fn1 "histdata_t" free_history_entry "HIST_ENTRY *histent" Free the history entry \fIhistent\fP and any history library private data associated with it. Returns the application-specific data so the caller can dispose of it. .Fn3 "HIST_ENTRY *" replace_history_entry "int which" "const char *line" "histdata_t data" Make the history entry at offset \fIwhich\fP have \fIline\fP and \fIdata\fP. This returns the old entry so the caller can dispose of any application-specific data. In the case of an invalid \fIwhich\fP, a \fBNULL\fP pointer is returned. .Fn1 void clear_history "void" Clear the history list by deleting all the entries. .Fn1 void stifle_history "int max" Stifle the history list, remembering only the last \fImax\fP entries. The history list will contain only \fImax\fP entries at a time. .Fn1 int unstifle_history "void" Stop stifling the history. This returns the previously-set maximum number of history entries (as set by \fBstifle_history()\fP). history was stifled. The value is positive if the history was stifled, negative if it wasn't. .Fn1 int history_is_stifled "void" Returns non-zero if the history is stifled, zero if it is not. .SS Information About the History List These functions return information about the entire history list or individual list entries. .Fn1 "HIST_ENTRY **" history_list "void" Return a \fBNULL\fP terminated array of \fIHIST_ENTRY *\fP which is the current input history. Element 0 of this list is the beginning of time. If there is no history, return \fBNULL\fP. .Fn1 int where_history "void" Returns the offset of the current history element. .Fn1 "HIST_ENTRY *" current_history "void" Return the history entry at the current position, as determined by \fBwhere_history()\fP. If there is no entry there, return a \fBNULL\fP pointer. .Fn1 "HIST_ENTRY *" history_get "int offset" Return the history entry at position \fIoffset\fP. The range of valid values of \fIoffset\fP starts at \fBhistory_base\fP and ends at \fBhistory_length\fP \- 1. If there is no entry there, or if \fIoffset\fP is outside the valid range, return a \fBNULL\fP pointer. .Fn1 "time_t" history_get_time "HIST_ENTRY *" Return the time stamp associated with the history entry passed as the argument. .Fn1 int history_total_bytes "void" 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. .SS Moving Around the History List These functions allow the current index into the history list to be set or changed. .Fn1 int history_set_pos "int pos" Set the current history offset to \fIpos\fP, an absolute index into the list. Returns 1 on success, 0 if \fIpos\fP is less than zero or greater than the number of history entries. .Fn1 "HIST_ENTRY *" previous_history "void" 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 \fBNULL\fP pointer. .Fn1 "HIST_ENTRY *" next_history "void" If the current history offset refers to a valid history entry, increment the current history offset. If the possibly-incremented history offset refers to a valid history entry, return a pointer to that entry; otherwise, return a \fBNULL\fP pointer. .SS Searching the History List 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 \fIanchored\fP, meaning that the string must match at the beginning of the history entry. .Fn2 int history_search "const char *string" "int direction" Search the history for \fIstring\fP, starting at the current history offset. If \fIdirection\fP is less than 0, then the search is through previous entries, otherwise through subsequent entries. If \fIstring\fP 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 \fIstring\fP was found. Otherwise, nothing is changed, and a -1 is returned. .Fn2 int history_search_prefix "const char *string" "int direction" Search the history for \fIstring\fP, starting at the current history offset. The search is anchored: matching lines must begin with \fIstring\fP. If \fIdirection\fP is less than 0, then the search is through previous entries, otherwise through subsequent entries. If \fIstring\fP 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. .Fn3 int history_search_pos "const char *string" "int direction" "int pos" Search for \fIstring\fP in the history list, starting at \fIpos\fP, an absolute index into the list. If \fIdirection\fP is negative, the search proceeds backward from \fIpos\fP, otherwise forward. Returns the absolute index of the history element where \fIstring\fP was found, or -1 otherwise. .SS Managing the History File The History library can read the history from and write it to a file. This section documents the functions for managing a history file. .Fn1 int read_history "const char *filename" Add the contents of \fIfilename\fP to the history list, a line at a time. If \fIfilename\fP is \fBNULL\fP, then read from \fI~/.history\fP. Returns 0 if successful, or \fBerrno\fP if not. .Fn3 int read_history_range "const char *filename" "int from" "int to" Read a range of lines from \fIfilename\fP, adding them to the history list. Start reading at line \fIfrom\fP and end at \fIto\fP. If \fIfrom\fP is zero, start at the beginning. If \fIto\fP is less than \fIfrom\fP, then read until the end of the file. If \fIfilename\fP is \fBNULL\fP, then read from \fI~/.history\fP. Returns 0 if successful, or \fBerrno\fP if not. .Fn1 int write_history "const char *filename" Write the current history to \fIfilename\fP, overwriting \fIfilename\fP if necessary. If \fIfilename\fP is \fBNULL\fP, then write the history list to \fI~/.history\fP. Returns 0 on success, or \fBerrno\fP on a read or write error. .Fn2 int append_history "int nelements" "const char *filename" Append the last \fInelements\fP of the history list to \fIfilename\fP. If \fIfilename\fP is \fBNULL\fP, then append to \fI~/.history\fP. Returns 0 on success, or \fBerrno\fP on a read or write error. .Fn2 int history_truncate_file "const char *filename" "int nlines" Truncate the history file \fIfilename\fP, leaving only the last \fInlines\fP lines. If \fIfilename\fP is \fBNULL\fP, then \fI~/.history\fP is truncated. Returns 0 on success, or \fBerrno\fP on failure. .SS History Expansion These functions implement history expansion. .Fn2 int history_expand "char *string" "char **output" Expand \fIstring\fP, placing the result into \fIoutput\fP, a pointer to a string. Returns: .RS .PD 0 .TP 0 If no expansions took place (or, if the only change in the text was the removal of escape characters preceding the history expansion character); .TP 1 if expansions did take place; .TP -1 if there was an error in expansion; .TP 2 if the returned line should be displayed, but not executed, as with the \fB:p\fP modifier. .PD .RE If an error ocurred in expansion, then \fIoutput\fP contains a descriptive error message. .Fn3 "char *" get_history_event "const char *string" "int *cindex" "int qchar" Returns the text of the history event beginning at \fIstring\fP + \fI*cindex\fP. \fI*cindex\fP is modified to point to after the event specifier. At function entry, \fIcindex\fP points to the index into \fIstring\fP where the history event specification begins. \fIqchar\fP is a character that is allowed to end the event specification in addition to the ``normal'' terminating characters. .Fn1 "char **" history_tokenize "const char *string" Return an array of tokens parsed out of \fIstring\fP, much as the shell might. The tokens are split on the characters in the \fBhistory_word_delimiters\fP variable, and shell quoting conventions are obeyed. .Fn3 "char *" history_arg_extract "int first" "int last" "const char *string" Extract a string segment consisting of the \fIfirst\fP through \fIlast\fP arguments present in \fIstring\fP. Arguments are split using \fBhistory_tokenize()\fP. .SS History Variables This section describes the externally-visible variables exported by the GNU History Library. .Vb int history_base The logical offset of the first entry in the history list. .Vb int history_length The number of entries currently stored in the history list. .Vb int history_max_entries The maximum number of history entries. This must be changed using \fBstifle_history()\fP. .Vb int history_wite_timestamps If non-zero, timestamps are written to the history file, so they can be preserved between sessions. The default value is 0, meaning that timestamps are not saved. The current timestamp format uses the value of \fIhistory_comment_char\fP to delimit timestamp entries in the history file. If that variable does not have a value (the default), timestamps will not be written. .Vb char history_expansion_char The character that introduces a history event. The default is \fB!\fP. Setting this to 0 inhibits history expansion. .Vb char history_subst_char The character that invokes word substitution if found at the start of a line. The default is \fB^\fP. .Vb char history_comment_char 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. .Vb "char *" history_word_delimiters The characters that separate tokens for \fBhistory_tokenize()\fP. The default value is \fB"\ \et\en()<>;&|"\fP. .Vb "char *" history_no_expand_chars The list of characters which inhibit history expansion if found immediately following \fBhistory_expansion_char\fP. The default is space, tab, newline, \fB\er\fP, and \fB=\fP. .Vb "char *" history_search_delimiter_chars The list of additional characters which can delimit a history search string, in addition to space, tab, \fI:\fP and \fI?\fP in the case of a substring search. The default is empty. .Vb int history_quotes_inhibit_expansion If non-zero, double-quoted words are not scanned for the history expansion character or the history comment character. The default value is 0. .Vb "rl_linebuf_func_t *" history_inhibit_expansion_function This should be set to the address of a function that takes two arguments: a \fBchar *\fP (\fIstring\fP) and an \fBint\fP index into that string (\fIi\fP). It should return a non-zero value if the history expansion starting at \fIstring[i]\fP should not be performed; zero if the expansion should be done. It is intended for use by applications like \fBbash\fP that use the history expansion character for additional purposes. By default, this variable is set to \fBNULL\fP. .SH FILES .PD 0 .TP .FN ~/.history Default filename for reading and writing saved history .PD .SH "SEE ALSO" .PD 0 .TP \fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey .TP \fIThe Gnu History Library\fP, Brian Fox and Chet Ramey .TP \fIbash\fP(1) .TP \fIreadline\fP(3) .PD .SH AUTHORS Brian Fox, Free Software Foundation .br bfox@gnu.org .PP Chet Ramey, Case Western Reserve University .br chet.ramey@case.edu .SH BUG REPORTS If you find a bug in the .B history library, 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 .B history library that you have. .PP Once you have determined that a bug actually exists, mail a bug report to \fIbug\-readline\fP@\fIgnu.org\fP. If you have a fix, you are welcome to mail that as well! Suggestions and `philosophical' bug reports may be mailed to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet newsgroup .BR gnu.bash.bug . .PP Comments and bug reports concerning this manual page should be directed to .IR chet.ramey@case.edu . readline-8.0/doc/history.texi000664 000436 000024 00000004332 12651435301 016372 0ustar00chetstaff000000 000000 \input texinfo @c -*-texinfo-*- @c %**start of header (This is for running Texinfo on a region.) @setfilename history.info @settitle GNU History Library @include version.texi @c %**end of header (This is for running Texinfo on a region.) @copying This document describes the GNU History library (version @value{VERSION}, @value{UPDATED}), a programming tool that provides a consistent user interface for recalling lines of previously typed input. Copyright @copyright{} 1988--2016 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end quotation @end copying @dircategory Libraries @direntry * History: (history). The GNU history library API. @end direntry @titlepage @title GNU History Library @subtitle Edition @value{EDITION}, for @code{History Library} Version @value{VERSION}. @subtitle @value{UPDATED-MONTH} @author Chet Ramey, Case Western Reserve University @author Brian Fox, Free Software Foundation @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @ifnottex @node Top @top GNU History Library This document describes the GNU History library, a programming tool that provides a consistent user interface for recalling lines of previously typed input. @menu * Using History Interactively:: GNU History User's Manual. * Programming with GNU History:: GNU History Programmer's Manual. * GNU Free Documentation License:: License for copying this manual. * Concept Index:: Index of concepts described in this manual. * Function and Variable Index:: Index of externally visible functions and variables. @end menu @end ifnottex @syncodeindex fn vr @include hsuser.texi @include hstech.texi @node GNU Free Documentation License @appendix GNU Free Documentation License @include fdl.texi @node Concept Index @appendix Concept Index @printindex cp @node Function and Variable Index @appendix Function and Variable Index @printindex vr @bye readline-8.0/doc/texi2dvi000755 000436 000024 00000157655 12426421327 015504 0ustar00chetstaff000000 000000 #! /bin/sh # texi2dvi --- produce DVI (or PDF) files from Texinfo (or (La)TeX) sources. # $Id: texi2dvi 5704 2014-07-07 17:45:16Z karl $ # # Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 # Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, # or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Originally written by Noah Friedman. # # Please send bug reports, etc. to bug-texinfo@gnu.org. # If possible, please send a copy of the output of the script called with # the `--debug' option when making a bug report. test -f /bin/ksh && test -z "$RUNNING_KSH" \ && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \ && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; } unset RUNNING_KSH # No failure shall remain unpunished. set -e # In case the default sed doesn't suffice. : ${SED=sed} # This string is expanded automatically when this file is checked out. rcs_revision='$Revision: 5704 $' rcs_version=`set - $rcs_revision; echo $2` program=`echo $0 | $SED -e 's!.*/!!'` build_mode=${TEXI2DVI_BUILD_MODE:-local} build_dir=${TEXI2DVI_BUILD_DIRECTORY:-.} # Initialize variables for option overriding and otherwise. # Don't use `unset' since old bourne shells don't have this command. # Instead, assign them an empty value. action=compile batch=false # interact normally catcode_special=maybe debug=false escape="\\" expand=false # true for expansion via makeinfo includes= line_error=true # pass --file-line-error to TeX max_iters=7 # when to quit oname= # --output out_lang=dvi quiet=false # let the tools' message be displayed set_language= src_specials= shell_escape= latex2html=hevea # or set to tex4ht textra= # Extra TeX commands to insert in the input file. txiprereq=19990129 # minimum texinfo.tex version with macro expansion verb=false # true for verbose mode translate_file= # name of charset translation file orig_pwd=`pwd` # We have to initialize IFS to space tab newline since we save and # restore IFS and apparently POSIX allows stupid/broken behavior with # empty-but-set IFS. # http://lists.gnu.org/archive/html/automake-patches/2006-05/msg00008.html # We need space, tab and new line, in precisely that order. And don't leave # trailing blanks. space=' ' tab=' ' newline=' ' IFS="$space$tab$newline" # In case someone pedantic insists on using grep -E. : ${EGREP=egrep} # Systems which define $COMSPEC or $ComSpec use semicolons to separate # directories in TEXINPUTS -- except for Cygwin et al., where COMSPEC # might be inherited, but : is used. if test -n "$COMSPEC$ComSpec" \ && uname | $EGREP -iv 'cygwin|mingw|djgpp' >/dev/null; then path_sep=";" else path_sep=":" fi # Pacify verbose cds. CDPATH=${ZSH_VERSION+.}$path_sep # If $TEX is set to a directory, don't use it. test -n "$TEX" && test -d "$TEX" && unset TEX # ## --------------------- ## ## Auxiliary functions. ## ## --------------------- ## # In case `local' is not supported by the shell, provide a function # that simulates it by simply performing the assignments. This means # that we must not expect `local' to work, i.e., we must not (i) rely # on it during recursion, and (ii) have two local declarations of the # same variable. (ii) is easy to check statically, and our test suite # does make sure there is never twice a static local declaration of a # variable. (i) cannot be checked easily, so just be careful. # # Note that since we might use a function simulating `local', we can # no longer rely on the fact that no IFS-splitting is performed. So, # while # # foo=$bar # # is fine (no IFS-splitting), never write # # local foo=$bar # # but rather # # local foo="$bar" ( foo=bar test_local () { local foo=foo } test_local >/dev/null 2>&1 test $foo = bar ) || eval ' local () { case $1 in *=*) eval "$1";; esac } ' # cd_orig # ------- # Return to the original directory. cd_orig () { # In case $orig_pwd is on a different drive (for DOS). cd / # Return to the original directory so that # - the next file is processed in correct conditions # - the temporary file can be removed cd "$orig_pwd" || exit 1 } # func_dirname FILE # ----------------- # Return the directory part of FILE. func_dirname () { dirname "$1" 2>/dev/null \ || { echo "$1" | $SED 's!/[^/]*$!!;s!^$!.!'; } } # noexit FILE # ----------- # Return FILE with one extension remove. foo.bar.baz -> foo.bar. noext () { echo "$1" | $SED -e 's/\.[^/.][^/.]*$//' } # absolute NAME -> ABS-NAME # ------------------------- # Return an absolute path to NAME. absolute () { case $1 in [\\/]* | ?:[\\/]*) # Absolute paths don't need to be expanded. echo "$1" ;; *) local slashes slashes=`echo "$1" | $SED -n 's,.*[^/]\(/*\)$,\1,p'` local rel rel=$orig_pwd/`func_dirname "$1"` if test -d "$rel"; then (cd "$rel" 2>/dev/null \ && local n n=`pwd`/`basename "$1"`"$slashes" echo "$n") else error 1 "not a directory: $rel" fi ;; esac } # ensure_dir DIR1 DIR2... # ----------------------- # Make sure the directories exist. ensure_dir () { for dir do # Beware that in parallel builds we may have several concurrent # attempts to create the directory. So fail only if "mkdir" # failed *and* the directory still does not exist. test -d "$dir" \ || mkdir "$dir" \ || test -d "$dir" \ || error 1 "cannot create directory: $dir" done } # error EXIT_STATUS LINE1 LINE2... # -------------------------------- # Report an error and exit with failure if EXIT_STATUS is non-null. error () { local s="$1" shift report "$@" if test "$s" != 0; then exit $s fi } # findprog PROG # ------------- # Return true if PROG is somewhere in PATH, else false. findprog () { local saveIFS="$IFS" IFS=$path_sep # break path components at the path separator for dir in $PATH; do IFS=$saveIFS # The basic test for an executable is `test -f $f && test -x $f'. # (`test -x' is not enough, because it can also be true for directories.) # We have to try this both for $1 and $1.exe. # # Note: On Cygwin and DJGPP, `test -x' also looks for .exe. On Cygwin, # also `test -f' has this enhancement, but not on DJGPP. (Both are # design decisions, so there is little chance to make them consistent.) # Thusly, it seems to be difficult to make use of these enhancements. # if { test -f "$dir/$1" && test -x "$dir/$1"; } \ || { test -f "$dir/$1.exe" && test -x "$dir/$1.exe"; }; then return 0 fi done return 1 } # report LINE1 LINE2... # --------------------- # Report some information on stderr. report () { for i in "$@" do echo >&2 "$0: $i" done } # run COMMAND-LINE # ---------------- # Run the COMMAND-LINE verbosely, and catching errors as failures. run () { verbose "Running $@" "$@" 2>&5 1>&2 \ || error 1 "$1 failed" } # usage # ----- # Display usage and exit successfully. usage () { # We used to simply have `echo "$usage"', but coping with the # changing behavior of `echo' is much harder than simply using a # here-doc. # # echo '\noto' echo '\\noto' echo -e '\\noto' # bash 3.1 \noto \\noto \noto # bash 3.2 %oto \noto -e \noto # # where % denotes the eol character. cat < General help using GNU software: EOF exit 0 } # verbose WORD1 WORD2 # ------------------- # Report some verbose information. verbose () { if $verb; then echo >&2 "$0: $@" fi } # version # ------- # Display version info and exit successfully. version () { cat < This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. EOF exit 0 } ## ---------------- ## ## Handling lists. ## ## ---------------- ## # list_append LIST-NAME ELEM # -------------------------- # Set LIST-NAME to its former contents, with ELEM appended. list_append () { local la_l="$1" shift eval set X \$$la_l "$@" shift eval $la_l=\""$@"\" } # list_concat_dirs LIST-NAME DIR-LIST # ----------------------------------- # Append to LIST-NAME all the components (included empty) from # the $path_sep separated list DIR-LIST. Make the paths absolute. list_concat_dirs () { local lcd_list="$1" # Empty path components are meaningful to tex. We rewrite them as # `EMPTY' so they don't get lost when we split on $path_sep. # Hopefully no one will have an actual directory named EMPTY. local replace_EMPTY="-e 's/^$path_sep/EMPTY$path_sep/g' \ -e 's/$path_sep\$/${path_sep}EMPTY/g' \ -e 's/$path_sep$path_sep/${path_sep}EMPTY:/g'" save_IFS=$IFS IFS=$path_sep set x `echo "$2" | eval $SED $replace_EMPTY`; shift IFS=$save_IFS local dir for dir do case $dir in EMPTY) list_append $lcd_list "" ;; *) if test -d $dir; then dir=`absolute "$dir"` list_append $lcd_list "$dir" fi ;; esac done } # list_prefix LIST-NAME SEP -> STRING # ----------------------------------- # Return a string that is composed of the LIST-NAME with each item # preceded by SEP. list_prefix () { local lp_p="$2" eval set X \$$1 shift local lp_res for i do lp_res="$lp_res \"$lp_p\" \"$i\"" done echo "$lp_res" } # list_infix LIST-NAME SEP -> STRING # ---------------------------------- # Same as list_prefix, but a separator. list_infix () { eval set X \$$1 shift local la_IFS="$IFS" IFS=$path_sep echo "$*" IFS=$la_IFS } # list_dir_to_abs LIST-NAME # ------------------------- # Convert the list to using only absolute dir names. # Currently unused, but should replace absolute_filenames some day. list_dir_to_abs () { local ld_l="$1" eval set X \$$ld_l shift local ld_res for dir do dir=`absolute "$dir"` test -d "$dir" || continue ld_res="$ld_res \"$dir\"" done set X $ld_res; shift eval $ld_l=\"$@\" } ## ------------------------------ ## ## Language auxiliary functions. ## ## ------------------------------ ## # out_lang_set LANG # ----------------- out_lang_set () { case $1 in dvi|dvipdf|html|info|pdf|ps|text) out_lang=$1;; *) error 1 "invalid output format: $1";; esac } # out_lang_tex # ------------ # Return the tex output language (DVI or PDF) for $OUT_LANG. out_lang_tex () { case $out_lang in dvi | ps | dvipdf ) echo dvi;; pdf ) echo $out_lang;; html | info | text ) echo $out_lang;; *) error 1 "invalid out_lang: $1";; esac } # out_lang_ext # ------------ # Return the extension for $OUT_LANG. out_lang_ext () { case $out_lang in dvipdf ) echo pdf;; dvi | html | info | pdf | ps | text ) echo $out_lang;; *) error 1 "invalid out_lang: $1";; esac } ## ------------------------- ## ## TeX auxiliary functions. ## ## ------------------------- ## # Save TEXINPUTS so we can construct a new TEXINPUTS path for each file. # Likewise for bibtex and makeindex. tex_envvars="BIBINPUTS BSTINPUTS DVIPSHEADERS INDEXSTYLE MFINPUTS MPINPUTS \ TEXINPUTS TFMFONTS" for var in $tex_envvars; do eval ${var}_orig=\$$var export $var done # absolute_filenames TEX-PATH -> TEX-PATH # --------------------------------------- # Convert relative paths to absolute paths, so we can run in another # directory (e.g., in tidy build mode, or during the macro-support # detection). Prepend ".". absolute_filenames () { # Empty path components are meaningful to tex. We rewrite them as # `EMPTY' so they don't get lost when we split on $path_sep. # Hopefully no one will have an actual directory named EMPTY. local replace_empty="-e 's/^$path_sep/EMPTY$path_sep/g' \ -e 's/$path_sep\$/${path_sep}EMPTY/g' \ -e 's/$path_sep$path_sep/${path_sep}EMPTY:/g'" local res res=`echo "$1" | eval $SED $replace_empty` save_IFS=$IFS IFS=$path_sep set x $res; shift res=. for dir do case $dir in EMPTY) res=$res$path_sep ;; *) if test -d "$dir"; then res=$res$path_sep`absolute "$dir"` else # Even if $dir is not a directory, preserve it in the path. # It might contain metacharacters that TeX will expand in # turn, e.g., /some/path/{a,b,c}. This will not get the # implicit absolutification of the path, but we can't help that. res=$res$path_sep$dir fi ;; esac done echo "$res" } # output_base_name FILE # --------------------- # The name of FILE, possibly renamed to satisfy --output. # FILE is local, there is no directory part. output_base_name () { case $oname in '') echo "$1";; *) local out_noext out_noext=`noext "$oname"` local file_ext file_ext=`echo "$1" | $SED 's/^.*\.//'` echo "$out_noext.$file_ext" ;; esac } # destdir # ------- # Return the name of the directory where the output is expected. destdir () { case $oname in '') echo "$orig_pwd";; *) dirname "$oname";; esac } # move_to_dest FILE... # -------------------- # Move FILE to the place where the user expects it. Truly move it, that # is, it must not remain in its build location unless that is also the # output location. (Otherwise it might appear as an extra file in make # distcheck.) # # FILE can be the principal output (in which case -o directly applies), or # an auxiliary file with the same base name. move_to_dest () { # echo "move_to_dest $*, tidy=$tidy, oname=$oname" # If we built in place and have no output name, there is nothing to # do, so just return. case $tidy:$oname in false:) return;; esac local destfile local destdir local destbase local sourcedir local sourcebase for file do test -f "$file" \ || error 1 "no such file or directory: $file" case $tidy:$oname in true:) destdir=$orig_pwd destfile=$destdir/$file;; true:*) destfile=`output_base_name "$file"` destdir=`dirname "$destfile"`;; false:*) destfile=$oname destdir=`dirname "$destfile"`;; esac # We want to compare the source location and the output location, # and if they are different, do the move. But if they are the # same, we must preserve the source. Since we can't assume # stat(1) or test -ef is available, resort to comparing the # directory names, canonicalized with pwd. We can't use cmp -s # since the output file might not actually change from run to run; # e.g., TeX DVI output is timestamped to only the nearest minute. destdir=`cd "$destdir" && pwd` destbase=`basename "$destfile"` sourcedir=`dirname "$file"` sourcedir=`cd "$sourcedir" && pwd` sourcebase=`basename "$file"` if test "$sourcedir/$sourcebase" != "$destdir/$destbase"; then verbose "Moving $file to $destfile" rm -f "$destfile" mv "$file" "$destfile" fi done } ## --------------------- ## ## Managing xref files. ## ## --------------------- ## # aux_file_p FILE # --------------- # Return with success if FILE is an aux file. aux_file_p () { test -f "$1" || return 1 case $1 in *.aux) return 0;; *) return 1;; esac } # bibaux_file_p FILE # ------------------ # Return with success if FILE is an aux file containing citation # requests. bibaux_file_p () { test -s "$1" || return 1 if (grep '^\\bibstyle[{]' "$1" \ && grep '^\\bibdata[{]' "$1" \ ## The following line is suspicious: fails when there ## are citations in sub aux files. We need to be ## smarter in this case. ## && grep '^\\citation[{]' "$f" ) >&6 2>&1; then return 0 fi return 1 } # index_file_p FILE # ----------------- # Return with success if FILE is an index file. index_file_p () { test -f "$1" || return 1 case $in_lang:$latex2html:`out_lang_tex`:`$SED '1q' "$1"` in # When working with TeX4HT, *.idx are created by LaTeX. They must # be processed to produce *.4ix, *.4dx files. The *.4dx file is # passed to makeindex to produce the *.ind file. This sequence is # handled by run_index, so we are only interested in the *.idx # files, which have each "\indexentry" preceded by a # "\beforeentry". latex:tex4ht:html:"\\beforeentry {"*) return 0;; # When index.sty is used, there is a space before the brace. latex:*:*:"\\indexentry{"*|latex:*:*:"\\indexentry {"*) return 0;; texinfo:*:*:"\\entry{"*) return 0;; *) return 1;; esac } # xref_file_p FILE # ---------------- # Return with success if FILE is an xref file (indexes, tables and lists). xref_file_p () { test -f "$1" || return 1 # If the file is not suitable to be an index or xref file, don't # process it. It's suitable if the first character is a # backslash or right quote or at, as long as the first line isn't # \input texinfo. case `$SED '1q' "$1"` in "\\input texinfo"*) return 1;; [\\''@]*) return 0;; *) return 1;; esac } # generated_files_get FILENAME-NOEXT [PREDICATE-FILTER] # ----------------------------------------------------- # Return the list of files generated by the TeX compilation of FILENAME-NOEXT. generated_files_get () { local filter=true if test -n "$2"; then filter=$2 fi # Gather the files created by TeX. ( if test -f "$1.log"; then $SED -n -e "s,^\\\\openout.* = \`\\(.*\\)'\\.,\\1,p" "$1.log" fi echo "$1.log" ) | # Depending on these files, infer outputs from other tools. while read file; do echo $file case $in_lang in texinfo) # texindex: texinfo.cp -> texinfo.cps if index_file_p $file; then echo ${file}s fi ;; latex) if aux_file_p $file; then # bibtex: *.aux -> *.bbl and *.blg. echo $file | $SED 's/^\(.*\)\.aux$/\1.bbl/' echo $file | $SED 's/^\(.*\)\.aux$/\1.blg/' # -recorder: .fls echo $file | $SED 's/^\(.*\)\.aux$/\1.fls/' fi ;; esac done | # Filter existing files matching the criterion. # # With an input file name containing a space, this produces a # "command not found" message (and filtering is ineffective). # The situation with a newline is presumably even worse. while read file; do if $filter "$file"; then echo $file fi done | sort | # Some files are opened several times, e.g., listings.sty's *.vrb. uniq } # xref_files_save # --------------- # Save the xref files. xref_files_save () { # Save copies of auxiliary files for later comparison. xref_files_orig=`generated_files_get "$in_noext" xref_file_p` if test -n "$xref_files_orig"; then verbose "Backing up xref files: $xref_files_orig" # The following line improves `cp $xref_files_orig "$work_bak"' # by preserving the directory parts. Think of # cp chap1/main.aux chap2/main.aux $work_bak. # # Users may have, e.g., --keep-old-files. Don't let this interfere. # (Don't use unset for the sake of ancient shells.) TAR_OPTIONS=; export TAR_OPTIONS tar cf - $xref_files_orig | (cd "$work_bak" && tar xf -) fi } # xref_files_changed # ------------------ # Whether the xref files were changed since the previous run. xref_files_changed () { # LaTeX (and the package changebar) report in the LOG file if it # should be rerun. This is needed for files included from # subdirs, since texi2dvi does not try to compare xref files in # subdirs. Performing xref files test is still good since LaTeX # does not report changes in xref files. if grep "Rerun to get" "$in_noext.log" >&6 2>&1; then return 0 fi # biblatex report of whether rerunning is needed. if grep "biblatex.*(re)run" "$in_noext.log" >&6 2>&1; then return 0 fi # If old and new lists don't have the same file list, # then something has definitely changed. xref_files_new=`generated_files_get "$in_noext" xref_file_p` verbose "Original xref files = $xref_files_orig" verbose "New xref files = $xref_files_new" if test "x$xref_files_orig" != "x$xref_files_new"; then return 0 fi # Compare each file until we find a difference. for this_file in $xref_files_new; do verbose "Comparing xref file `echo $this_file | $SED 's|\./||g'` ..." # cmp -s returns nonzero exit status if files differ. if cmp -s "$this_file" "$work_bak/$this_file"; then :; else verbose "xref file `echo $this_file | $SED 's|\./||g'` differed ..." if $debug; then diff -u "$work_bak/$this_file" "$this_file" fi return 0 fi done # No change. return 1 } ## ----------------------- ## ## Running the TeX suite. ## ## ----------------------- ## # run_tex () # ---------- # Run TeX as "$tex $in_input", taking care of errors and logs. run_tex () { case $in_lang:$latex2html:`out_lang_tex` in latex:*:dvi|latex:tex4ht:html) tex=${LATEX:-latex};; latex:*:pdf) tex=${PDFLATEX:-pdflatex};; texinfo:*:dvi) # MetaPost also uses the TEX environment variable. If the user # has set TEX=latex for that reason, don't bomb out. case $TEX in *latex) tex=tex;; # don't bother trying to find etex *) tex=$TEX esac;; texinfo:*:pdf) tex=$PDFTEX;; *) error 1 "$out_lang not supported for $in_lang";; esac # do the special catcode trick for ~ in filenames only for Texinfo, # not LaTeX. if test x"$in_lang" = xtexinfo && test $catcode_special = maybe; then catcode_special=true else catcode_special=false fi # Beware of aux files in subdirectories that require the # subdirectory to exist. case $in_lang:$tidy in latex:true) $SED -n 's|^[ ]*\\include{\(.*\)/.*}.*|\1|p' "$in_input" | sort -u | while read d do ensure_dir "$work_build/$d" done ;; esac # Note that this will be used via an eval: quote properly. local cmd="$tex" # If possible, make TeX report error locations in GNU format. if $line_error; then if test "${tex_help:+set}" != set; then # Go to a temporary directory to try --help, since old versions that # don't accept --help will generate a texput.log. tex_help_dir=$t2ddir/tex_help ensure_dir "$tex_help_dir" tex_help=`cd "$tex_help_dir" >&6 && $tex --help &1 || true` fi # The mk program and perhaps others want to parse TeX's # original error messages. case $tex_help in *file-line-error*) cmd="$cmd --file-line-error";; esac fi # Tell TeX about TCX file, if specified. test -n "$translate_file" && cmd="$cmd --translate-file=$translate_file" # Tell TeX to make source specials (for backtracking from output to # source, given a sufficiently smart editor), if specified. test -n "$src_specials" && cmd="$cmd $src_specials" # Tell TeX to allow running external executables test -n "$shell_escape" && cmd="$cmd $shell_escape" # Tell TeX to be batch if requested. if $batch; then # \batchmode does not show terminal output at all, so we don't # want that. And even in batch mode, TeX insists on having input # from the user. Close its stdin to make it impossible. cmd="$cmd &5; then case $out_lang in dvi | pdf ) move_to_dest "$in_noext.$out_lang";; esac else error 1 "$tex exited with bad status, quitting." fi } # run_bibtex () # ------------- # Run bibtex on (or biber) current file. # - If its input (AUX) exists. # - If some citations are missing (LOG contains `Citation'). # or the LOG complains of a missing .bbl # # Don't try to be too smart: # 1. Running bibtex only if the bbl file exists and is older than # the LaTeX file is wrong, since the document might include files # that have changed. # # 3. Because there can be several AUX (if there are \include's), # but a single LOG, looking for missing citations in LOG is # easier, though we take the risk of matching false messages. run_bibtex () { case $in_lang in latex) bibtex=${BIBTEX:-bibtex};; texinfo) return;; esac # "Citation undefined" is for LaTeX, "Undefined citation" for btxmac.tex. # The no .aux && \bibdata test is also for btxmac, in case it was the # first run of a bibtex-using document. Otherwise, it's possible that # bibtex would never be run. if test -r "$in_noext.aux" \ && test -r "$in_noext.log" \ && ( (grep 'Warning:.*Citation.*undefined' "$in_noext.log" \ || grep '.*Undefined citation' "$in_noext.log" \ || grep 'No file .*\.bbl\.' "$in_noext.log") \ || (grep 'No \.aux file' "$in_noext.log" \ && grep '^\\bibdata' "$in_noext.aux") ) \ >&6 2>&1; \ then bibtex_aux=`generated_files_get "$in_noext" bibaux_file_p` for f in $bibtex_aux; do run $bibtex "$f" done fi # biber(+biblatex) check. if test -r "$in_noext.bcf" \ && grep '' "$in_noext.bcf" >/dev/null; then run ${BIBER:-biber} "$in_noext" fi } # run_index () # ------------ # Run texindex (or makeindex or texindy) 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. run_index () { local index_files index_files=`generated_files_get $in_noext index_file_p` test -n "$index_files" \ || return 0 : ${MAKEINDEX:=makeindex} : ${TEXINDEX:=texindex} : ${TEXINDY:=texindy} local index_file local index_noext case $in_lang:$latex2html:`out_lang_tex` in latex:tex4ht:html) for index_file in $index_files do index_noext=`noext "$index_file"` run tex \ '\def\filename{{'"$index_noext"'}{idx}{4dx}{ind}} \input idxmake.4ht' run $MAKEINDEX -o $index_noext.ind $index_noext.4dx done ;; latex:*) if $TEXINDY --version >&6 2>&1; then run $TEXINDY $index_files else run $MAKEINDEX $index_files fi ;; texinfo:*) run $TEXINDEX $index_files ;; esac } # run_tex4ht () # ------------- # Run the last two phases of TeX4HT: tex4ht extracts the HTML from the # instrumented DVI file, and t4ht converts the figures and installs # the files when given -d. # # Because knowing exactly which files are created is complex (in # addition the names are not simple to compute), which makes it # difficult to install the output files in a second step, it is much # simpler to install directly the output files. run_tex4ht () { case $in_lang:$latex2html:`out_lang_tex` in latex:tex4ht:html) : ${TEX4HT:=tex4ht} ${T4HT:=t4ht} run "$TEX4HT" "-f/$in_noext" # Do not remove the / after the destdir. run "$T4HT" "-d`destdir`/" "-f/$in_noext" ;; esac } # run_thumbpdf () # --------------- run_thumbpdf () { if test `out_lang_tex` = pdf \ && test -r "$in_noext.log" \ && grep 'thumbpdf\.sty' "$in_noext.log" >&6 2>&1; \ then thumbpdf=${THUMBPDF_CMD:-thumbpdf} thumbcmd="$thumbpdf $in_dir/$in_noext" verbose "Running $thumbcmd ..." if $thumbcmd >&5; then run_tex else report "$thumbpdf exited with bad status." \ "Ignoring its output." fi fi } # run_dvipdf FILE.dvi # ------------------- # Convert FILE.dvi to FILE.pdf. run_dvipdf () { # Find which dvi->pdf program is available. if test -z "$dvipdf"; then for i in "$DVIPDF" dvipdfmx dvipdfm dvipdf dvi2pdf dvitopdf; do if findprog $i; then dvipdf=$i fi done fi # These tools have varying interfaces, some 'input output', others # 'input -o output'. They all seem to accept 'input' only, # outputting using the expected file name. run $dvipdf "$1" if test ! -f `echo "$1" | $SED -e 's/\.dvi$/.pdf/'`; then error 1 "cannot find output file" fi } # run_tex_suite () # ---------------- # Run the TeX tools until a fix point is reached. run_tex_suite () { # Move to the working directory. if $tidy; then verbose "cd $work_build" cd "$work_build" || exit 1 fi # Count the number of cycles. local cycle=0 while :; do # check for probably LaTeX loop (e.g. varioref) if test $cycle -eq "$max_iters"; then error 0 "Maximum of $max_iters cycles exceeded" break fi # report progress cycle=`expr $cycle + 1` verbose "Cycle $cycle for $command_line_filename" xref_files_save # We run bibtex first, because it's more likely for the indexes # to change after bibtex is run than the reverse, though either # would be rare. run_bibtex run_index run_core_conversion xref_files_changed || break done # If we were using thumbpdf and producing PDF, then run thumbpdf # and TeX one last time. run_thumbpdf # If we are using tex4ht, call it. run_tex4ht # Install the result if we didn't already (i.e., if the output is # dvipdf or ps). case $latex2html:$out_lang in *:dvipdf) run_dvipdf "$in_noext.`out_lang_tex`" move_to_dest "$in_noext.`out_lang_ext`" ;; *:ps) : ${DVIPS:=dvips} run $DVIPS -o "$in_noext.`out_lang_ext`" "$in_noext.`out_lang_tex`" move_to_dest "$in_noext.`out_lang_ext`" ;; esac cd_orig } ## -------------------------------- ## ## TeX processing auxiliary tools. ## ## -------------------------------- ## # A sed script that preprocesses Texinfo sources in order to keep the # iftex sections only. We want to remove non-TeX sections, and comment # (with `@c _texi2dvi') TeX sections so that makeinfo does not try to # parse them. Nevertheless, while commenting TeX sections, don't # comment @macro/@end macro so that makeinfo does propagate them. # Unfortunately makeinfo --iftex --no-ifinfo doesn't work well enough # (yet), makeinfo can't parse the TeX commands, so work around with sed. # # We assume that `@c _texi2dvi' starting a line is not present in the # document. # comment_iftex=\ '/^@tex/,/^@end tex/{ s/^/@c _texi2dvi/ } /^@iftex/,/^@end iftex/{ s/^/@c _texi2dvi/ /^@c _texi2dvi@macro/,/^@c _texi2dvi@end macro/{ s/^@c _texi2dvi// } } /^@ifnottex/,/^@end ifnottex/{ s/^/@c (_texi2dvi)/ } /^@ifinfo/,/^@end ifinfo/{ /^@node/p /^@menu/,/^@end menu/p t s/^/@c (_texi2dvi)/ } s/^@ifnotinfo/@c _texi2dvi@ifnotinfo/ s/^@end ifnotinfo/@c _texi2dvi@end ifnotinfo/' # Uncommenting is simpler: remove any leading `@c texi2dvi'; repeated # copies can sneak in via macro invocations. uncomment_iftex='s/^@c _texi2dvi\(@c _texi2dvi\)*//' # run_makeinfo () # --------------- # Expand macro commands in the original source file using Makeinfo. # Always use `end' footnote style, since the `separate' style # generates different output (arguably this is a bug in -E). Discard # main info output, the user asked to run TeX, not makeinfo. run_makeinfo () { test $in_lang = texinfo \ || return 0 # Unless required by the user, makeinfo expansion is wanted only # if texinfo.tex is too old. if $expand; then makeinfo=${MAKEINFO:-makeinfo} else # Check if texinfo.tex performs macro expansion by looking for # its version. The version is a date of the form YEAR-MO-DA. # We don't need to use [0-9] to match the digits since anyway # the comparison with $txiprereq, a number, will fail with non-digits. # Run in a temporary directory to avoid leaving files. version_test_dir=$t2ddir/version_test ensure_dir "$version_test_dir" if ( cd "$version_test_dir" echo '\input texinfo.tex @bye' >txiversion.tex # Be sure that if tex wants to fail, it is not interactive: # close stdin. $TEX txiversion.tex txiversion.out 2>txiversion.err ); then :; else report "texinfo.tex appears to be broken. This may be due to the environment variable TEX set to something other than (plain) tex, a corrupt texinfo.tex file, or to tex itself simply not working." cat "$version_test_dir/txiversion.out" cat "$version_test_dir/txiversion.err" >&2 error 1 "quitting." fi eval `$SED -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p' "$version_test_dir/txiversion.out"` verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..." if test "$txiprereq" -le "$txiversion" >&6 2>&1; then makeinfo= else makeinfo=${MAKEINFO:-makeinfo} fi # If TeX is preloaded, offer the user this convenience: if test "$txiformat" = Texinfo; then escape=@ fi fi if test -n "$makeinfo"; then # in_src: the file with macros expanded. # Use the same basename to generate the same aux file names. work_src=$workdir/src ensure_dir "$work_src" in_src=$work_src/$in_base local miincludes miincludes=`list_prefix includes -I` verbose "Macro-expanding $command_line_filename to $in_src ..." # eval $makeinfo because it might be defined as something complex # (running missing) and then we end up with things like '"-I"', # and "-I" (including the quotes) is not an option name. This # happens with gettext 0.14.5, at least. $SED "$comment_iftex" "$command_line_filename" \ | eval $makeinfo --footnote-style=end -I "$in_dir" $miincludes \ -o /dev/null --macro-expand=- \ | $SED "$uncomment_iftex" >"$in_src" # Continue only if everything succeeded. if test $? -ne 0 \ || test ! -r "$in_src"; then verbose "Expansion failed, ignored..."; else in_input=$in_src fi fi } # insert_commands () # ------------------ # Used most commonly for @finalout, @smallbook, etc. insert_commands () { if test -n "$textra"; then # _xtr. The file with the user's extra commands. work_xtr=$workdir/xtr in_xtr=$work_xtr/$in_base ensure_dir "$work_xtr" verbose "Inserting extra commands: $textra" local textra_cmd case $in_lang in latex) textra_cmd=1i;; texinfo) textra_cmd='/^@setfilename/a';; *) error 1 "internal error, unknown language: $in_lang";; esac $SED "$textra_cmd\\ $textra" "$in_input" >"$in_xtr" in_input=$in_xtr fi case $in_lang:$latex2html:`out_lang_tex` in latex:tex4ht:html) # _tex4ht. The file with the added \usepackage{tex4ht}. work_tex4ht=$workdir/tex4ht in_tex4ht=$work_tex4ht/$in_base ensure_dir "$work_tex4ht" verbose "Inserting \\usepackage{tex4ht}" perl -pe 's<\\documentclass(?:\[.*\])?{.*}> <$&\\usepackage[xhtml]{tex4ht}>' \ "$in_input" >"$in_tex4ht" in_input=$in_tex4ht ;; esac } # compute_language FILENAME # ------------------------- # Return the short string describing the language in which FILENAME # is written: `texinfo' or `latex'. compute_language () { # If the user explicitly specified the language, use that. # Otherwise, if the first line is \input texinfo, assume it's texinfo. # Otherwise, guess from the file extension. if test -n "$set_language"; then echo $set_language elif $SED 1q "$1" | grep 'input texinfo' >&6; then echo texinfo else # Get the type of the file (latex or texinfo) from the given language # we just guessed, or from the file extension if not set yet. case $1 in *.ltx | *.tex | *.drv | *.dtx) echo latex;; *) echo texinfo;; esac fi } # run_hevea (MODE) # ---------------- # Convert to HTML/INFO/TEXT. # # Don't pass `-noiso' to hevea: it's useless in HTML since anyway the # charset is set to latin1, and troublesome in other modes since # accented characters loose their accents. # # Don't pass `-o DEST' to hevea because in that case it leaves all its # auxiliary files there too... Too bad, because it means we will need # to handle images some day. run_hevea () { local hevea="${HEVEA:-hevea}" local run_hevea="$hevea" case $1 in html) ;; text|info) run_hevea="$run_hevea -$1";; *) error 1 "run_hevea: invalid argument: $1";; esac # Compiling to the tmp directory enables to preserve a previous # successful compilation. run_hevea="$run_hevea -fix -O -o '$out_base'" run_hevea="$run_hevea `list_prefix includes -I` -I '$orig_pwd' " run_hevea="$run_hevea '$in_input'" if $debug; then run_hevea="$run_hevea -v -v" fi verbose "running $run_hevea" if eval "$run_hevea" >&5; then # hevea leaves trailing white spaces, this is annoying. case $1 in text|info) perl -pi -e 's/[ \t]+$//g' "$out_base"*;; esac case $1 in html|text) move_to_dest "$out_base";; info) # There can be foo.info-1, foo.info-2 etc. move_to_dest "$out_base"*;; esac else error 1 "$hevea exited with bad status, quitting." fi } # run_core_conversion () # ---------------------- # Run the TeX (or HeVeA). run_core_conversion () { case $in_lang:$latex2html:`out_lang_tex` in *:dvi|*:pdf|latex:tex4ht:html) run_tex;; latex:*:html|latex:*:text|latex:*:info) run_hevea $out_lang;; *) error 1 "invalid input/output combination: $in_lang/$out_lang";; esac } # compile () # ---------- # Run the full compilation chain, from pre-processing to installation # of the output at its expected location. compile () { # Source file might include additional sources. # We want `.:$orig_pwd' before anything else. (We'll add `.:' later # after all other directories have been turned into absolute paths.) # `.' goes first to ensure that any old .aux, .cps, # etc. files in ${directory} don't get used in preference to fresher # files in `.'. Include orig_pwd in case we are in clean build mode, where # we have cd'd to a temp directory. common="$orig_pwd$path_sep$in_dir$path_sep" # # If we have any includes, put those at the end. # Keep a final path_sep to get the default (system) TeX directories included. txincludes=`list_infix includes $path_sep` test -n "$txincludes" && common="$common$txincludes$path_sep" # for var in $tex_envvars; do eval val="\$common\$${var}_orig" # Convert relative paths to absolute paths, so we can run in another # directory (e.g., in clean build mode, or during the macro-support # detection). ".:" is added here. val=`absolute_filenames "$val"` eval $var="\"$val\"" export $var eval verbose \"$var=\'\$${var}\'\" done # --expand run_makeinfo # --command, --texinfo insert_commands # Run until a fix point is reached. run_tex_suite } # remove FILES # ------------ remove () { verbose "Removing" "$@" rm -rf "$@" } # mostly_clean # ------------ # Remove auxiliary files and directories. Changes the current directory. mostly_clean () { cd_orig set X "$t2ddir" shift $tidy || { local log="$work_build/$in_noext.log" set X ${1+"$@"} "$log" `generated_files_get "$work_build/$in_noext"` shift } remove ${1+"$@"} } # cleanup () # ---------- # Remove what should be removed according to options. # Called at the end of each compilation cycle, and at the end of # the script. Changes the current directory. cleanup () { case $build_mode in local) cd_orig; remove "$t2ddir";; clean) mostly_clean;; tidy) ;; esac } ## ---------------------- ## ## Command line parsing. ## ## ---------------------- ## # Push a token among the arguments that will be used to notice when we # ended options/arguments parsing. # Use "set dummy ...; shift" rather than 'set - ..." because on # Solaris set - turns off set -x (but keeps set -e). # Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3 # still expand "$@" to a single argument (the empty string) rather # than nothing at all. arg_sep="$$--$$" set dummy ${1+"$@"} "$arg_sep"; shift # # Parse command line arguments. while test x"$1" != x"$arg_sep"; do # Handle --option=value by splitting apart and putting back on argv. case "$1" in --*=*) opt=`echo "$1" | $SED -e 's/=.*//'` val=`echo "$1" | $SED -e 's/[^=]*=//'` shift set dummy "$opt" "$val" ${1+"$@"}; shift ;; esac case "$1" in -@ ) escape=@;; -~ ) catcode_special=false;; # Silently and without documentation accept -b and --b[atch] as synonyms. -b | --batch) batch=true;; --build) shift; build_mode=$1;; --build-dir) shift; build_dir=$1; build_mode=tidy;; -c | --clean) build_mode=clean;; -D | --debug) debug=true;; -e | -E | --expand) expand=true;; -h | --help) usage;; -I) shift; list_concat_dirs includes "$1";; -l | --lang | --language) shift; set_language=$1;; --mostly-clean) action=mostly-clean;; --no-line-error) line_error=false;; --max-iterations) shift; max_iters=$1;; -o | --out | --output) shift # Make it absolute, just in case we also have --clean, or whatever. oname=`absolute "$1"`;; # Output formats. -O|--output-format) shift; out_lang_set "$1";; --dvi|--dvipdf|--html|--info|--pdf|--ps|--text) out_lang_set `echo "x$1" | $SED 's/^x--//'`;; -p) out_lang_set pdf;; -q | -s | --quiet | --silent) quiet=true; batch=true;; --src-specials) src_specials=--src-specials;; --shell-escape) shell_escape=--shell-escape;; --tex4ht) latex2html=tex4ht;; -t | --texinfo | --command ) shift; textra="$textra\\ "`echo "$1" | $SED 's/\\\\/\\\\\\\\/g'`;; --translate-file ) shift; translate_file="$1";; --tidy) build_mode=tidy;; -v | --vers*) version;; -V | --verb*) verb=true;; --) # What remains are not options. shift while test x"$1" != x"$arg_sep"; do set dummy ${1+"$@"} "$1"; shift shift done break;; -*) error 1 "Unknown or ambiguous option \`$1'." \ "Try \`--help' for more information." ;; *) set dummy ${1+"$@"} "$1"; shift;; esac shift done # Pop the token shift # $tidy: compile in a t2d directory. # $clean: remove all the aux files. case $build_mode in local) clean=false; tidy=false;; tidy) clean=false; tidy=true;; clean) clean=true; tidy=true;; *) error 1 "invalid build mode: $build_mode";; esac # Interpret remaining command line args as filenames. case $# in 0) error 2 "Missing file arguments." "Try \`--help' for more information." ;; 1) ;; *) if test -n "$oname"; then error 2 "Can't use option \`--output' with more than one argument." fi ;; esac # We can't do much without tex. # if findprog ${TEX:-tex}; then :; else cat </dev/null else exec 5>&1 fi # Enable tracing, and auxiliary tools output. # # This fd should be used where you'd typically use /dev/null to throw # output away. But sometimes it is convenient to see that output (e.g., # from a grep) to aid debugging. Especially debugging at distance, via # the user. # if $debug; then exec 6>&1 set -vx else exec 6>/dev/null fi # # input_file_name_decode # ---------------------- # Decode COMMAND_LINE_FILENAME, and compute: # - COMMAND_LINE_FILENAME clean of TeX commands # - IN_DIR # The directory to the input file, possibly absolute if needed. # - IN_DIR_ABS # The absolute directory of the input file. # - IN_BASE # The input file base name (no directory part). # - IN_NOEXT # The input file name without extensions (nor directory part). # - IN_INPUT # Defaults to COMMAND_LINE_FILENAME, but might change if the # input is preprocessed. With directory, possibly absolute. input_file_name_decode () { # See if we are run from within AUC-Tex, in which case we are # passed `\input{FOO.tex}' or even `\nonstopmode\input{FOO.tex}'. case $command_line_filename in *\\nonstopmode*) batch=true;; esac case $command_line_filename in *\\input{*}*) # Let AUC-TeX error parser deal with line numbers. line_error=false command_line_filename=`\ expr X"$command_line_filename" : X'.*input{\([^}]*\)}'` ;; esac # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex), # prepend `./' in order to avoid that the tools take it as an option. echo "$command_line_filename" | LC_ALL=C $EGREP '^(/|[A-Za-z]:/)' >&6 \ || command_line_filename="./$command_line_filename" # See if the file exists. 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 xref files and so forth. test -r "$command_line_filename" \ || error 1 "cannot read $command_line_filename, skipping." # Get the name of the current directory. in_dir=`func_dirname "$command_line_filename"` in_dir_abs=`absolute "$in_dir"` # In a clean build, we `cd', so get an absolute file name. if $tidy; then in_dir=$in_dir_abs fi # Strip directory part but leave extension. in_base=`basename "$command_line_filename"` # Strip extension. in_noext=`noext "$in_base"` # The normalized file name to compile. Must always point to the # file to actually compile (in case of recoding, macro-expansion etc.). in_input=$in_dir/$in_base # Compute the output file name. if test x"$oname" != x; then out_name=$oname else out_name=$in_noext.`out_lang_ext` fi out_dir=`func_dirname "$out_name"` out_dir_abs=`absolute "$out_dir"` out_base=`basename "$out_name"` out_noext=`noext "$out_base"` } ## -------------- ## ## TeXify files. ## ## -------------- ## for command_line_filename do verbose "Processing $command_line_filename ..." input_file_name_decode # `texinfo' or `latex'? in_lang=`compute_language "$command_line_filename"` # An auxiliary directory used for all the auxiliary tasks involved # in compiling this document. case $build_dir in '' | . ) t2ddir=$out_noext.t2d ;; *) # Avoid collisions between multiple occurrences of the same # file, so depend on the output path. Remove leading `./', # at least to avoid creating a file starting with `.!', i.e., # an invisible file. The sed expression is fragile if the cwd # has active characters. Transform / into ! so that we don't # need `mkdir -p'. It might be something to reconsider. t2ddir=$build_dir/`echo "$out_dir_abs/$out_noext.t2d" | $SED "s,^$orig_pwd/,,;s,^\./,,;s,/,!,g"` esac # Remove it at exit if clean mode. trap "cleanup" 0 1 2 15 ensure_dir "$build_dir" "$t2ddir" # We will change directory, better work with an absolute path... t2ddir=`absolute "$t2ddir"` # Sometimes there are incompatibilities between auxiliary files for # DVI and PDF. The contents can also change whether we work on PDF # and/or DVI. So keep separate spaces for each. workdir=$t2ddir/`out_lang_tex` ensure_dir "$workdir" # _build. In a tidy build, where the auxiliary files are output. if $tidy; then work_build=$workdir/build else work_build=. fi # _bak. Copies of the previous auxiliary files (another round is # run if they differ from the new ones). work_bak=$workdir/bak # Make those directories. ensure_dir "$work_build" "$work_bak" case $action in compile) # Compile the document. compile cleanup ;; mostly-clean) mostly_clean ;; esac done verbose "done." exit 0 # exit successfully, not however we ended the loop. readline-8.0/doc/hstech.texi000664 000436 000120 00000053240 13317766067 016153 0ustar00chetadmin000000 000000 @ignore This file documents the user interface to the GNU History library. Copyright (C) 1988-2016 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to process this file through Tex and print the results, provided the printed document carries copying permission notice identical to this one except for the removal of this paragraph (this paragraph not being relevant to the printed manual). Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the GNU Copyright statement is available to the distributee, and 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. @end ignore @node Programming with GNU History @chapter Programming with GNU History This chapter describes how to interface programs that you write with the @sc{gnu} History Library. It should be considered a technical guide. For information on the interactive use of @sc{gnu} History, @pxref{Using History Interactively}. @menu * Introduction to History:: What is the GNU History library for? * History Storage:: How information is stored. * History Functions:: Functions that you can use. * History Variables:: Variables that control behaviour. * History Programming Example:: Example of using the GNU History Library. @end menu @node Introduction to History @section Introduction to History Many programs read input from the user a line at a time. The @sc{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. 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 @dfn{expansion} function is available which provides for a consistent user interface across different programs. 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}. 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. Before declaring any functions using any functionality the History library provides in other code, an application writer should include the file @code{} in any file that uses the History library's features. It supplies extern declarations for all of the library's public functions and variables, and declares all of the public data structures. @node History Storage @section History Storage The history list is an array of history entries. A history entry is declared as follows: @example typedef void *histdata_t; typedef struct _hist_entry @{ char *line; char *timestamp; histdata_t data; @} HIST_ENTRY; @end example The history list itself might therefore be declared as @example HIST_ENTRY **the_history_list; @end example The state of the History library is encapsulated into a single structure: @example /* * A structure used to pass around the current state of the history. */ 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; @end example If the flags member includes @code{HS_STIFLED}, the history has been stifled. @node History Functions @section History Functions This section describes the calling sequence for the various functions exported by the @sc{gnu} History library. @menu * Initializing History and State Management:: Functions to call when you want to use history in a program. * History List Management:: Functions used to manage the list of history entries. * Information About the History List:: Functions returning information about the history list. * Moving Around the History List:: Functions used to change the position in the history list. * Searching the History List:: Functions to search the history list for entries containing a string. * Managing the History File:: Functions that read and write a file containing the history list. * History Expansion:: Functions to perform csh-like history expansion. @end menu @node Initializing History and State Management @subsection Initializing History and State Management 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. @deftypefun void using_history (void) Begin a session in which the history functions might be used. This initializes the interactive variables. @end deftypefun @deftypefun {HISTORY_STATE *} history_get_history_state (void) Return a structure describing the current state of the input history. @end deftypefun @deftypefun void history_set_history_state (HISTORY_STATE *state) Set the state of the history list according to @var{state}. @end deftypefun @node History List Management @subsection History List Management These functions manage individual entries on the history list, or set parameters managing the list itself. @deftypefun void add_history (const char *string) Place @var{string} at the end of the history list. The associated data field (if any) is set to @code{NULL}. If the maximum number of history entries has been set using @code{stifle_history()}, and the new number of history entries would exceed that maximum, the oldest history entry is removed. @end deftypefun @deftypefun void add_history_time (const char *string) Change the time stamp associated with the most recent history entry to @var{string}. @end deftypefun @deftypefun {HIST_ENTRY *} remove_history (int which) Remove history entry at offset @var{which} from the history. The removed element is returned so you can free the line, data, and containing structure. @end deftypefun @deftypefun {histdata_t} free_history_entry (HIST_ENTRY *histent) Free the history entry @var{histent} and any history library private data associated with it. Returns the application-specific data so the caller can dispose of it. @end deftypefun @deftypefun {HIST_ENTRY *} replace_history_entry (int which, const char *line, histdata_t data) Make the history entry at offset @var{which} have @var{line} and @var{data}. This returns the old entry so the caller can dispose of any application-specific data. In the case of an invalid @var{which}, a @code{NULL} pointer is returned. @end deftypefun @deftypefun void clear_history (void) 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. The history list will contain only @var{max} entries at a time. @end deftypefun @deftypefun int unstifle_history (void) Stop stifling the history. This returns the previously-set maximum number of history entries (as set by @code{stifle_history()}). The value is positive if the history was stifled, negative if it wasn't. @end deftypefun @deftypefun int history_is_stifled (void) Returns non-zero if the history is stifled, zero if it is not. @end deftypefun @node Information About the History List @subsection Information About the History List These functions return information about the entire history list or individual list entries. @deftypefun {HIST_ENTRY **} history_list (void) Return a @code{NULL} terminated array of @code{HIST_ENTRY *} which is the current input history. Element 0 of this list is the beginning of time. If there is no history, return @code{NULL}. @end deftypefun @deftypefun int where_history (void) Returns the offset of the current history element. @end deftypefun @deftypefun {HIST_ENTRY *} current_history (void) Return the history entry at the current position, as determined by @code{where_history()}. If there is no entry there, return a @code{NULL} pointer. @end deftypefun @deftypefun {HIST_ENTRY *} history_get (int offset) Return the history entry at position @var{offset}. The range of valid values of @var{offset} starts at @code{history_base} and ends at @var{history_length} - 1 (@pxref{History Variables}). If there is no entry there, or if @var{offset} is outside the valid range, return a @code{NULL} pointer. @end deftypefun @deftypefun time_t history_get_time (HIST_ENTRY *entry) Return the time stamp associated with the history entry @var{entry}. If the timestamp is missing or invalid, return 0. @end deftypefun @deftypefun int history_total_bytes (void) 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. @end deftypefun @node Moving Around the History List @subsection Moving Around the History List These functions allow the current index into the history list to be set or changed. @deftypefun int history_set_pos (int pos) Set the current history offset to @var{pos}, an absolute index into the list. Returns 1 on success, 0 if @var{pos} is less than zero or greater than the number of history entries. @end deftypefun @deftypefun {HIST_ENTRY *} previous_history (void) 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} pointer. @end deftypefun @deftypefun {HIST_ENTRY *} next_history (void) If the current history offset refers to a valid history entry, increment the current history offset. If the possibly-incremented history offset refers to a valid history entry, return a pointer to that entry; otherwise, return a @code{BNULL} pointer. @end deftypefun @node Searching the History List @subsection Searching the History List @cindex History Searching 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 @dfn{anchored}, meaning that the string must match at the beginning of the history entry. @cindex anchored search @deftypefun int history_search (const char *string, int direction) Search the history for @var{string}, starting at the current history offset. If @var{direction} is less than 0, then the search is through previous entries, otherwise through subsequent entries. If @var{string} 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} was found. Otherwise, nothing is changed, and a -1 is returned. @end deftypefun @deftypefun int history_search_prefix (const char *string, int direction) Search the history for @var{string}, starting at the current history offset. The search is anchored: matching lines must begin with @var{string}. If @var{direction} is less than 0, then the search is through previous entries, otherwise through subsequent entries. If @var{string} 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. @end deftypefun @deftypefun int history_search_pos (const char *string, int direction, int pos) Search for @var{string} in the history list, starting at @var{pos}, an absolute index into the list. If @var{direction} is negative, the search proceeds backward from @var{pos}, otherwise forward. Returns the absolute index of the history element where @var{string} was found, or -1 otherwise. @end deftypefun @node Managing the History File @subsection Managing the History File The History library can read the history from and write it to a file. This section documents the functions for managing a history file. @deftypefun int read_history (const char *filename) Add the contents of @var{filename} to the history list, a line at a time. If @var{filename} is @code{NULL}, then read from @file{~/.history}. Returns 0 if successful, or @code{errno} if not. @end deftypefun @deftypefun int read_history_range (const char *filename, int from, int to) Read a range of lines from @var{filename}, adding them to the history list. Start reading at line @var{from} and end at @var{to}. If @var{from} is zero, start at the beginning. If @var{to} is less than @var{from}, then read until the end of the file. If @var{filename} is @code{NULL}, then read from @file{~/.history}. Returns 0 if successful, or @code{errno} if not. @end deftypefun @deftypefun int write_history (const char *filename) Write the current history to @var{filename}, overwriting @var{filename} if necessary. If @var{filename} is @code{NULL}, then write the history list to @file{~/.history}. Returns 0 on success, or @code{errno} on a read or write error. @end deftypefun @deftypefun int append_history (int nelements, const char *filename) Append the last @var{nelements} of the history list to @var{filename}. If @var{filename} is @code{NULL}, then append to @file{~/.history}. Returns 0 on success, or @code{errno} on a read or write error. @end deftypefun @deftypefun int history_truncate_file (const char *filename, int nlines) Truncate the history file @var{filename}, leaving only the last @var{nlines} lines. If @var{filename} is @code{NULL}, then @file{~/.history} is truncated. Returns 0 on success, or @code{errno} on failure. @end deftypefun @node History Expansion @subsection History Expansion These functions implement history expansion. @deftypefun int history_expand (char *string, char **output) Expand @var{string}, placing the result into @var{output}, a pointer to a string (@pxref{History Interaction}). Returns: @table @code @item 0 If no expansions took place (or, if the only change in the text was the removal of escape characters preceding the history expansion character); @item 1 if expansions did take place; @item -1 if there was an error in expansion; @item 2 if the returned line should be displayed, but not executed, as with the @code{:p} modifier (@pxref{Modifiers}). @end table If an error occurred in expansion, then @var{output} contains a descriptive error message. @end deftypefun @deftypefun {char *} get_history_event (const char *string, int *cindex, int qchar) Returns the text of the history event beginning at @var{string} + @var{*cindex}. @var{*cindex} is modified to point to after the event specifier. At function entry, @var{cindex} points to the index into @var{string} where the history event specification begins. @var{qchar} is a character that is allowed to end the event specification in addition to the ``normal'' terminating characters. @end deftypefun @deftypefun {char **} history_tokenize (const char *string) Return an array of tokens parsed out of @var{string}, much as the shell might. The tokens are split on the characters in the @var{history_word_delimiters} variable, and shell quoting conventions are obeyed as described below. @end deftypefun @deftypefun {char *} history_arg_extract (int first, int last, const char *string) Extract a string segment consisting of the @var{first} through @var{last} arguments present in @var{string}. Arguments are split using @code{history_tokenize}. @end deftypefun @node History Variables @section History Variables This section describes the externally-visible variables exported by the @sc{gnu} History Library. @deftypevar int history_base The logical offset of the first entry in the history list. @end deftypevar @deftypevar int history_length The number of entries currently stored in the history list. @end deftypevar @deftypevar int history_max_entries The maximum number of history entries. This must be changed using @code{stifle_history()}. @end deftypevar @deftypevar int history_write_timestamps If non-zero, timestamps are written to the history file, so they can be preserved between sessions. The default value is 0, meaning that timestamps are not saved. The current timestamp format uses the value of @var{history_comment_char} to delimit timestamp entries in the history file. If that variable does not have a value (the default), timestamps will not be written. @end deftypevar @deftypevar char history_expansion_char The character that introduces a history event. The default is @samp{!}. Setting this to 0 inhibits history expansion. @end deftypevar @deftypevar char history_subst_char The character that invokes word substitution if found at the start of a line. The default is @samp{^}. @end deftypevar @deftypevar char history_comment_char 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. @end deftypevar @deftypevar {char *} history_word_delimiters The characters that separate tokens for @code{history_tokenize()}. The default value is @code{" \t\n()<>;&|"}. @end deftypevar @deftypevar {char *} history_search_delimiter_chars The list of additional characters which can delimit a history search string, in addition to space, TAB, @samp{:} and @samp{?} in the case of a substring search. The default is empty. @end deftypevar @deftypevar {char *} history_no_expand_chars The list of characters which inhibit history expansion if found immediately following @var{history_expansion_char}. The default is space, tab, newline, carriage return, and @samp{=}. @end deftypevar @deftypevar int history_quotes_inhibit_expansion If non-zero, the history expansion code implements shell-like quoting: single-quoted words are not scanned for the history expansion character or the history comment character, and double-quoted words may have history expansion performed, since single quotes are not special within double quotes. The default value is 0. @end deftypevar @deftypevar int history_quoting_state An application may set this variable to indicate that the current line being expanded is subject to existing quoting. If set to @samp{'}, the history expansion function will assume that the line is single-quoted and inhibit expansion until it reads an unquoted closing single quote; if set to @samp{"}, history expansion will assume the line is double quoted until it reads an unquoted closing double quote. If set to zero, the default, the history expansion function will assume the line is not quoted and treat quote characters within the line as described above. This is only effective if @var{history_quotes_inhibit_expansion} is set. @end deftypevar @deftypevar {rl_linebuf_func_t *} 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 @code{int} 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 @code{NULL}. @end deftypevar @node History Programming Example @section History Programming Example The following program demonstrates simple use of the @sc{gnu} History Library. @smallexample #include #include main (argc, argv) int argc; char **argv; @{ 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 && *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, &expansion); if (result) fprintf (stderr, "%s\n", expansion); if (result < 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]->line); @} else if (strncmp (line, "delete", 6) == 0) @{ int which; if ((sscanf (line + 6, "%d", &which)) == 1) @{ HIST_ENTRY *entry = remove_history (which); if (!entry) fprintf (stderr, "No such entry %d\n", which); else @{ free (entry->line); free (entry); @} @} else @{ fprintf (stderr, "non-numeric arg given to `delete'\n"); @} @} @} @} @end smallexample readline-8.0/doc/rluserman.texi000664 000436 000024 00000003776 12651435411 016716 0ustar00chetstaff000000 000000 \input texinfo @c -*-texinfo-*- @comment %**start of header (This is for running Texinfo on a region.) @setfilename rluserman.info @settitle GNU Readline Library @include version.texi @comment %**end of header (This is for running Texinfo on a region.) @copying This manual describes the end user interface of the GNU Readline Library (version @value{VERSION}, @value{UPDATED}), a library which aids in the consistency of user interface across discrete programs which provide a command line interface. Copyright @copyright{} 1988--2016 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end quotation @end copying @dircategory Libraries @direntry * RLuserman: (rluserman). The GNU readline library User's Manual. @end direntry @titlepage @title GNU Readline Library User Interface @subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}. @subtitle @value{UPDATED-MONTH} @author Chet Ramey, Case Western Reserve University @author Brian Fox, Free Software Foundation @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @ifnottex @node Top @top GNU Readline Library This document describes the end user interface of the GNU Readline Library, a utility which aids in the consistency of user interface across discrete programs which provide a command line interface. The Readline home page is @url{http://www.gnu.org/software/readline/}. @menu * Command Line Editing:: GNU Readline User's Manual. * GNU Free Documentation License:: License for copying this manual. @end menu @end ifnottex @include rluser.texi @node GNU Free Documentation License @appendix GNU Free Documentation License @include fdl.texi @bye readline-8.0/doc/history.0000664 000436 000000 00000066264 13214524507 015572 0ustar00chetwheel000000 000000 HISTORY(3) Library Functions Manual HISTORY(3) NAME history - GNU History Library COPYRIGHT The GNU History Library is Copyright (C) 1989-2017 by the Free Software Foundation, Inc. DESCRIPTION Many programs read input from the user a line at a time. The GNU His- tory 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. HISTORY EXPANSION The history library supports a history expansion feature that is iden- tical to the history expansion in bash. This section describes what syntax features are available. 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 is usually performed immediately after a complete line is read. It takes place in two parts. The first is to determine which line from the history list to use during substitution. The sec- ond is to select portions of that line for inclusion into the current one. The line selected from the history is the event, and the portions of that line that are acted upon are words. Various modifiers are available to manipulate the selected words. The line is broken into words in the same fashion as bash does when reading input, so that sev- eral words that would otherwise be separated are considered one word when surrounded by quotes (see the description of history_tokenize() below). History expansions are introduced by the appearance of the history expansion character, which is ! by default. Only backslash (\) and single quotes can quote the history expansion character. Event Designators An event designator is a reference to a command line entry in the his- tory list. Unless the reference is absolute, events are relative to the current position in the history list. ! Start a history substitution, except when followed by a blank, newline, = or (. !n Refer to command line n. !-n Refer to the current command minus n. !! Refer to the previous command. This is a synonym for `!-1'. !string Refer to the most recent command preceding the current position in the history list starting with string. !?string[?] Refer to the most recent command preceding the current position in the history list containing string. The trailing ? may be omitted if string is followed immediately by a newline. ^string1^string2^ Quick substitution. Repeat the last command, replacing string1 with string2. Equivalent to ``!!:s/string1/string2/'' (see Mod- ifiers below). !# The entire command line typed so far. Word Designators Word designators are used to select desired words from the event. A : separates the event specification from the word designator. It may 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 sepa- rated by single spaces. 0 (zero) The zeroth word. For the shell, this is the command word. n The nth word. ^ The first argument. That is, word 1. $ The last word. This is usually the last argument, but will expand to the zeroth word if there is only one word in the line. % The word matched by the most recent `?string?' search. x-y A range of words; `-y' abbreviates `0-y'. * All of the words but the zeroth. 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. x* Abbreviates x-$. 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. Modifiers After the optional word designator, there may appear a sequence of one or more of the following modifiers, each preceded by a `:'. h Remove a trailing file name component, leaving only the head. t Remove all leading file name components, leaving the tail. r Remove a trailing suffix of the form .xxx, leaving the basename. e Remove all but the trailing suffix. p Print the new command but do not execute it. q Quote the substituted words, escaping further substitutions. x Quote the substituted words as with q, but break into words at blanks and newlines. s/old/new/ Substitute new for the first occurrence of old in the event line. Any delimiter can be used in place of /. The final delimiter is optional if it is the last character of the event line. The delimiter may be quoted in old and new with a single backslash. If & appears in new, it is replaced by old. A sin- gle backslash will quote the &. If old is null, it is set to the last old substituted, or, if no previous history substitu- tions took place, the last string in a !?string[?] search. & Repeat the previous substitution. g Cause changes to be applied over the entire event line. This is used in conjunction with `:s' (e.g., `:gs/old/new/') or `:&'. If used with `:s', any delimiter can be used in place of /, and the final delimiter is optional if it is the last character of the event line. An a may be used as a synonym for g. G Apply the following `s' modifier once to each word in the event line. PROGRAMMING WITH HISTORY FUNCTIONS This section describes how to use the History library in other pro- grams. Introduction to History 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 expansion function is avail- able which provides for a consistent user interface across different programs. The user using programs written with the History library has the bene- fit 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 identical to the history substitution provided by bash. If the programmer desires, he can use the Readline library, which includes some history manipulation by default, and has the added advan- tage of command line editing. Before declaring any functions using any functionality the History library provides in other code, an application writer should include the file  in any file that uses the History library's features. It supplies extern declarations for all of the library's public functions and variables, and declares all of the pub- lic data structures. History Storage The history list is an array of history entries. A history entry is declared as follows: typedef void * histdata_t; typedef struct _hist_entry { char *line; char *timestamp; histdata_t data; } HIST_ENTRY; The history list itself might therefore be declared as HIST_ENTRY ** the_history_list; The state of the History library is encapsulated into a single struc- ture: /* * A structure used to pass around the current state of the history. */ 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; If the flags member includes HS_STIFLED, the history has been stifled. History Functions This section describes the calling sequence for the various functions exported by the GNU History library. Initializing History and State Management 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. void using_history (void) Begin a session in which the history functions might be used. This initializes the interactive variables. HISTORY_STATE * history_get_history_state (void) Return a structure describing the current state of the input history. void history_set_history_state (HISTORY_STATE *state) Set the state of the history list according to state. History List Management These functions manage individual entries on the history list, or set parameters managing the list itself. void add_history (const char *string) Place string at the end of the history list. The associated data field (if any) is set to NULL. If the maximum number of history entries has been set using stifle_history(), and the new number of history entries would exceed that maximum, the oldest history entry is removed. void add_history_time (const char *string) Change the time stamp associated with the most recent history entry to string. HIST_ENTRY * remove_history (int which) Remove history entry at offset which from the history. The removed element is returned so you can free the line, data, and containing structure. histdata_t free_history_entry (HIST_ENTRY *histent) Free the history entry histent and any history library private data associated with it. Returns the application-specific data so the call- er can dispose of it. HIST_ENTRY * replace_history_entry (int which, const char *line, hist- data_t data) Make the history entry at offset which have line and data. This returns the old entry so the caller can dispose of any application-spe- cific data. In the case of an invalid which, a NULL pointer is returned. void clear_history (void) Clear the history list by deleting all the entries. void stifle_history (int max) Stifle the history list, remembering only the last max entries. The history list will contain only max entries at a time. int unstifle_history (void) Stop stifling the history. This returns the previously-set maximum number of history entries (as set by stifle_history()). history was stifled. The value is positive if the history was stifled, negative if it wasn't. int history_is_stifled (void) Returns non-zero if the history is stifled, zero if it is not. Information About the History List These functions return information about the entire history list or individual list entries. HIST_ENTRY ** history_list (void) Return a NULL terminated array of HIST_ENTRY * which is the current input history. Element 0 of this list is the beginning of time. If there is no history, return NULL. int where_history (void) Returns the offset of the current history element. HIST_ENTRY * current_history (void) Return the history entry at the current position, as determined by where_history(). If there is no entry there, return a NULL pointer. HIST_ENTRY * history_get (int offset) Return the history entry at position offset. The range of valid values of offset starts at history_base and ends at history_length - 1. If there is no entry there, or if offset is outside the valid range, return a NULL pointer. time_t history_get_time (HIST_ENTRY *) Return the time stamp associated with the history entry passed as the argument. int history_total_bytes (void) 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. Moving Around the History List These functions allow the current index into the history list to be set or changed. int history_set_pos (int pos) Set the current history offset to pos, an absolute index into the list. Returns 1 on success, 0 if pos is less than zero or greater than the number of history entries. HIST_ENTRY * previous_history (void) 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 NULL pointer. HIST_ENTRY * next_history (void) If the current history offset refers to a valid history entry, incre- ment the current history offset. If the possibly-incremented history offset refers to a valid history entry, return a pointer to that entry; otherwise, return a NULL pointer. Searching the History List These functions allow searching of the history list for entries con- taining a specific string. Searching may be performed both forward and backward from the current history position. The search may be anchored, meaning that the string must match at the beginning of the history entry. int history_search (const char *string, int direction) Search the history for string, starting at the current history offset. If direction is less than 0, then the search is through previous entries, otherwise through subsequent entries. If string 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 string was found. Otherwise, nothing is changed, and a -1 is returned. int history_search_prefix (const char *string, int direction) Search the history for string, starting at the current history offset. The search is anchored: matching lines must begin with string. If direction is less than 0, then the search is through previous entries, otherwise through subsequent entries. If string 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. int history_search_pos (const char *string, int direction, int pos) Search for string in the history list, starting at pos, an absolute index into the list. If direction is negative, the search proceeds backward from pos, otherwise forward. Returns the absolute index of the history element where string was found, or -1 otherwise. Managing the History File The History library can read the history from and write it to a file. This section documents the functions for managing a history file. int read_history (const char *filename) Add the contents of filename to the history list, a line at a time. If filename is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. int read_history_range (const char *filename, int from, int to) Read a range of lines from filename, adding them to the history list. Start reading at line from and end at to. If from is zero, start at the beginning. If to is less than from, then read until the end of the file. If filename is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. int write_history (const char *filename) Write the current history to filename, overwriting filename if neces- sary. If filename is NULL, then write the history list to ~/.history. Returns 0 on success, or errno on a read or write error. int append_history (int nelements, const char *filename) Append the last nelements of the history list to filename. If filename is NULL, then append to ~/.history. Returns 0 on success, or errno on a read or write error. int history_truncate_file (const char *filename, int nlines) Truncate the history file filename, leaving only the last nlines lines. If filename is NULL, then ~/.history is truncated. Returns 0 on suc- cess, or errno on failure. History Expansion These functions implement history expansion. int history_expand (char *string, char **output) Expand string, placing the result into output, a pointer to a string. Returns: 0 If no expansions took place (or, if the only change in the text was the removal of escape characters preceding the history expansion character); 1 if expansions did take place; -1 if there was an error in expansion; 2 if the returned line should be displayed, but not exe- cuted, as with the :p modifier. If an error ocurred in expansion, then output contains a descriptive error message. char * get_history_event (const char *string, int *cindex, int qchar) Returns the text of the history event beginning at string + *cindex. *cindex is modified to point to after the event specifier. At function entry, cindex points to the index into string where the history event specification begins. qchar is a character that is allowed to end the event specification in addition to the ``normal'' terminating charac- ters. char ** history_tokenize (const char *string) Return an array of tokens parsed out of string, much as the shell might. The tokens are split on the characters in the his- tory_word_delimiters variable, and shell quoting conventions are obeyed. char * history_arg_extract (int first, int last, const char *string) Extract a string segment consisting of the first through last arguments present in string. Arguments are split using history_tokenize(). History Variables This section describes the externally-visible variables exported by the GNU History Library. int history_base The logical offset of the first entry in the history list. int history_length The number of entries currently stored in the history list. int history_max_entries The maximum number of history entries. This must be changed using sti- fle_history(). int history_wite_timestamps If non-zero, timestamps are written to the history file, so they can be preserved between sessions. The default value is 0, meaning that time- stamps are not saved. The current timestamp format uses the value of history_comment_char to delimit timestamp entries in the history file. If that variable does not have a value (the default), timestamps will not be written. char history_expansion_char The character that introduces a history event. The default is !. Set- ting this to 0 inhibits history expansion. char history_subst_char The character that invokes word substitution if found at the start of a line. The default is ^. char history_comment_char 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. char * history_word_delimiters The characters that separate tokens for history_tokenize(). The default value is " \t\n()<>;&|". char * history_no_expand_chars The list of characters which inhibit history expansion if found immedi- ately following history_expansion_char. The default is space, tab, newline, \r, and =. char * history_search_delimiter_chars The list of additional characters which can delimit a history search string, in addition to space, tab, : and ? in the case of a substring search. The default is empty. int history_quotes_inhibit_expansion If non-zero, double-quoted words are not scanned for the history expan- sion character or the history comment character. The default value is 0. rl_linebuf_func_t * history_inhibit_expansion_function This should be set to the address of a function that takes two argu- ments: a char * (string) and an int 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. FILES ~/.history Default filename for reading and writing saved history SEE ALSO The Gnu Readline Library, Brian Fox and Chet Ramey The Gnu History Library, Brian Fox and Chet Ramey bash(1) readline(3) AUTHORS Brian Fox, Free Software Foundation bfox@gnu.org Chet Ramey, Case Western Reserve University chet.ramey@case.edu BUG REPORTS If you find a bug in the history library, 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 history library that you have. Once you have determined that a bug actually exists, mail a bug report to bug-readline@gnu.org. If you have a fix, you are welcome to mail that as well! Suggestions and `philosophical' bug reports may be mailed to bug-readline@gnu.org or posted to the Usenet newsgroup gnu.bash.bug. Comments and bug reports concerning this manual page should be directed to chet.ramey@case.edu. GNU History 6.3 2017 October 8 HISTORY(3) readline-8.0/doc/history.info000664 000436 000000 00000172654 13406221745 016370 0ustar00chetwheel000000 000000 This is history.info, produced by makeinfo version 6.5 from history.texi. This document describes the GNU History library (version 8.0, 30 November 2018), a programming tool that provides a consistent user interface for recalling lines of previously typed input. Copyright (C) 1988-2016 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". INFO-DIR-SECTION Libraries START-INFO-DIR-ENTRY * History: (history). The GNU history library API. END-INFO-DIR-ENTRY  File: history.info, Node: Top, Next: Using History Interactively, Up: (dir) GNU History Library ******************* This document describes the GNU History library, a programming tool that provides a consistent user interface for recalling lines of previously typed input. * Menu: * Using History Interactively:: GNU History User's Manual. * Programming with GNU History:: GNU History Programmer's Manual. * GNU Free Documentation License:: License for copying this manual. * Concept Index:: Index of concepts described in this manual. * Function and Variable Index:: Index of externally visible functions and variables.  File: history.info, Node: Using History Interactively, Next: Programming with GNU History, Prev: Top, Up: Top 1 Using History Interactively ***************************** 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, *note Programming with GNU History::. * Menu: * History Interaction:: What it feels like using History as a user.  File: history.info, Node: History Interaction, Up: Using History Interactively 1.1 History Expansion ===================== The History library provides a history expansion feature that is 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 history list 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 history is called the "event", and the portions of that line that are 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 words surrounded by quotes are considered one word. History expansions are introduced by the appearance of the history expansion character, which is '!' by default. History expansion implements shell-like quoting conventions: a backslash can be used to remove the special handling for the next character; single quotes enclose verbatim sequences of characters, and can be used to inhibit history expansion; and characters enclosed within double quotes may be subject to history expansion, since backslash can escape the history expansion character, but single quotes may not, since they are not treated specially within double quotes. * Menu: * Event Designators:: How to specify which history line to use. * Word Designators:: Specifying which words are of interest. * Modifiers:: Modifying the results of substitution.  File: history.info, Node: Event Designators, Next: Word Designators, Up: History Interaction 1.1.1 Event Designators ----------------------- An event designator is a reference to a command line entry in the history list. Unless the reference is absolute, events are relative to the current position in the history list. '!' Start a history substitution, except when followed by a space, tab, the end of the line, or '='. '!N' Refer to command line N. '!-N' Refer to the command N lines back. '!!' Refer to the previous command. This is a synonym for '!-1'. '!STRING' Refer to the most recent command preceding the current position in the history list starting with STRING. '!?STRING[?]' Refer to the most recent command preceding the current position in the history list 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.  File: history.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction 1.1.2 Word Designators ---------------------- Word designators are used to select desired words from the event. A ':' separates the event specification from the word designator. It may 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. For example, '!!' designates the preceding command. When you type this, the preceding command is repeated in toto. '!!:$' designates the last argument of the preceding command. This may be shortened to '!$'. '!fi:2' designates the second argument of the most recent command starting with the letters 'fi'. Here are the word designators: '0 (zero)' The '0'th word. For many applications, this is the command word. 'N' The Nth word. '^' The first argument; that is, word 1. '$' The last argument. '%' The word matched by the most recent '?STRING?' search. '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. 'X*' Abbreviates 'X-$' '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 1.1.3 Modifiers --------------- After the optional word designator, you can add a sequence of one or 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 basename. 'e' Remove all but the trailing suffix. 'p' Print the new command but do not execute it. '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. '&' Repeat the previous substitution. 'g' 'a' Cause changes to be applied over the entire event line. Used in conjunction with 's', as in 'gs/OLD/NEW/', or with '&'. 'G' Apply the following 's' modifier once to each word in the event.  File: history.info, Node: Programming with GNU History, Next: GNU Free Documentation License, Prev: Using History Interactively, Up: Top 2 Programming with GNU History ****************************** 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, *note Using History Interactively::. * Menu: * Introduction to History:: What is the GNU History library for? * History Storage:: How information is stored. * History Functions:: Functions that you can use. * History Variables:: Variables that control behaviour. * History Programming Example:: Example of using the GNU History Library.  File: history.info, Node: Introduction to History, Next: History Storage, Up: Programming with GNU History 2.1 Introduction to History =========================== 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. 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 "expansion" function is available which provides for a consistent user interface across different programs. 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 'csh'. 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. Before declaring any functions using any functionality the History library provides in other code, an application writer should include the file '' in any file that uses the History library's features. It supplies extern declarations for all of the library's public functions and variables, and declares all of the public data structures.  File: history.info, Node: History Storage, Next: History Functions, Prev: Introduction to History, Up: Programming with GNU History 2.2 History Storage =================== The history list is an array of history entries. A history entry is declared as follows: typedef void *histdata_t; typedef struct _hist_entry { char *line; char *timestamp; histdata_t data; } HIST_ENTRY; The history list itself might therefore be declared as HIST_ENTRY **the_history_list; The state of the History library is encapsulated into a single structure: /* * A structure used to pass around the current state of the history. */ 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; If the flags member includes 'HS_STIFLED', the history has been stifled.  File: history.info, Node: History Functions, Next: History Variables, Prev: History Storage, Up: Programming with GNU History 2.3 History Functions ===================== This section describes the calling sequence for the various functions exported by the GNU History library. * Menu: * Initializing History and State Management:: Functions to call when you want to use history in a program. * History List Management:: Functions used to manage the list of history entries. * Information About the History List:: Functions returning information about the history list. * Moving Around the History List:: Functions used to change the position in the history list. * Searching the History List:: Functions to search the history list for entries containing a string. * Managing the History File:: Functions that read and write a file containing the history list. * History Expansion:: Functions to perform csh-like history expansion.  File: history.info, Node: Initializing History and State Management, Next: History List Management, Up: History Functions 2.3.1 Initializing History and State Management ----------------------------------------------- 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. -- Function: void using_history (void) Begin a session in which the history functions might be used. This initializes the interactive variables. -- Function: HISTORY_STATE * history_get_history_state (void) Return a structure describing the current state of the input history. -- Function: void history_set_history_state (HISTORY_STATE *state) Set the state of the history list according to STATE.  File: history.info, Node: History List Management, Next: Information About the History List, Prev: Initializing History and State Management, Up: History Functions 2.3.2 History List Management ----------------------------- These functions manage individual entries on the history list, or set parameters managing the list itself. -- Function: void add_history (const char *string) Place STRING at the end of the history list. The associated data field (if any) is set to 'NULL'. If the maximum number of history entries has been set using 'stifle_history()', and the new number of history entries would exceed that maximum, the oldest history entry is removed. -- Function: void add_history_time (const char *string) Change the time stamp associated with the most recent history entry to STRING. -- Function: HIST_ENTRY * remove_history (int which) Remove history entry at offset WHICH from the history. The removed element is returned so you can free the line, data, and containing structure. -- Function: histdata_t free_history_entry (HIST_ENTRY *histent) Free the history entry HISTENT and any history library private data associated with it. Returns the application-specific data so the caller can dispose of it. -- Function: HIST_ENTRY * replace_history_entry (int which, const char *line, histdata_t data) Make the history entry at offset WHICH have LINE and DATA. This returns the old entry so the caller can dispose of any application-specific data. In the case of an invalid WHICH, a 'NULL' pointer is returned. -- Function: void clear_history (void) 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. The history list will contain only MAX entries at a time. -- Function: int unstifle_history (void) Stop stifling the history. This returns the previously-set maximum number of history entries (as set by 'stifle_history()'). The value is positive if the history was stifled, negative if it wasn't. -- Function: int history_is_stifled (void) Returns non-zero if the history is stifled, zero if it is not.  File: history.info, Node: Information About the History List, Next: Moving Around the History List, Prev: History List Management, Up: History Functions 2.3.3 Information About the History List ---------------------------------------- These functions return information about the entire history list or individual list entries. -- Function: HIST_ENTRY ** history_list (void) Return a 'NULL' terminated array of 'HIST_ENTRY *' which is the current input history. Element 0 of this list is the beginning of time. If there is no history, return 'NULL'. -- Function: int where_history (void) Returns the offset of the current history element. -- Function: HIST_ENTRY * current_history (void) Return the history entry at the current position, as determined by 'where_history()'. If there is no entry there, return a 'NULL' pointer. -- Function: HIST_ENTRY * history_get (int offset) Return the history entry at position OFFSET. The range of valid values of OFFSET starts at 'history_base' and ends at HISTORY_LENGTH - 1 (*note History Variables::). If there is no entry there, or if OFFSET is outside the valid range, return a 'NULL' pointer. -- Function: time_t history_get_time (HIST_ENTRY *entry) Return the time stamp associated with the history entry ENTRY. If the timestamp is missing or invalid, return 0. -- Function: int history_total_bytes (void) 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.  File: history.info, Node: Moving Around the History List, Next: Searching the History List, Prev: Information About the History List, Up: History Functions 2.3.4 Moving Around the History List ------------------------------------ These functions allow the current index into the history list to be set or changed. -- Function: int history_set_pos (int pos) Set the current history offset to POS, an absolute index into the list. Returns 1 on success, 0 if POS is less than zero or greater than the number of history entries. -- Function: HIST_ENTRY * previous_history (void) 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 'NULL' pointer. -- Function: HIST_ENTRY * next_history (void) If the current history offset refers to a valid history entry, increment the current history offset. If the possibly-incremented history offset refers to a valid history entry, return a pointer to that entry; otherwise, return a 'BNULL' pointer.  File: history.info, Node: Searching the History List, Next: Managing the History File, Prev: Moving Around the History List, Up: History Functions 2.3.5 Searching the History List -------------------------------- 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 "anchored", meaning that the string must match at the beginning of the history entry. -- Function: int history_search (const char *string, int direction) Search the history for STRING, starting at the current history offset. If DIRECTION is less than 0, then the search is through previous entries, otherwise through subsequent entries. If STRING 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 STRING was found. Otherwise, nothing is changed, and a -1 is returned. -- Function: int history_search_prefix (const char *string, int direction) Search the history for STRING, starting at the current history offset. The search is anchored: matching lines must begin with STRING. If DIRECTION is less than 0, then the search is through previous entries, otherwise through subsequent entries. If STRING 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. -- Function: int history_search_pos (const char *string, int direction, int pos) Search for STRING in the history list, starting at POS, an absolute index into the list. If DIRECTION is negative, the search proceeds backward from POS, otherwise forward. Returns the absolute index of the history element where STRING was found, or -1 otherwise.  File: history.info, Node: Managing the History File, Next: History Expansion, Prev: Searching the History List, Up: History Functions 2.3.6 Managing the History File ------------------------------- The History library can read the history from and write it to a file. This section documents the functions for managing a history file. -- Function: int read_history (const char *filename) Add the contents of FILENAME to the history list, a line at a time. If FILENAME is 'NULL', then read from '~/.history'. Returns 0 if successful, or 'errno' if not. -- Function: int read_history_range (const char *filename, int from, int to) Read a range of lines from FILENAME, adding them to the history list. Start reading at line FROM and end at TO. If FROM is zero, start at the beginning. If TO is less than FROM, then read until the end of the file. If FILENAME is 'NULL', then read from '~/.history'. Returns 0 if successful, or 'errno' if not. -- Function: int write_history (const char *filename) Write the current history to FILENAME, overwriting FILENAME if necessary. If FILENAME is 'NULL', then write the history list to '~/.history'. Returns 0 on success, or 'errno' on a read or write error. -- Function: int append_history (int nelements, const char *filename) Append the last NELEMENTS of the history list to FILENAME. If FILENAME is 'NULL', then append to '~/.history'. Returns 0 on success, or 'errno' on a read or write error. -- Function: int history_truncate_file (const char *filename, int nlines) Truncate the history file FILENAME, leaving only the last NLINES lines. If FILENAME is 'NULL', then '~/.history' is truncated. Returns 0 on success, or 'errno' on failure.  File: history.info, Node: History Expansion, Prev: Managing the History File, Up: History Functions 2.3.7 History Expansion ----------------------- These functions implement history expansion. -- Function: int history_expand (char *string, char **output) Expand STRING, placing the result into OUTPUT, a pointer to a string (*note History Interaction::). Returns: '0' If no expansions took place (or, if the only change in the text was the removal of escape characters preceding the history expansion character); '1' if expansions did take place; '-1' if there was an error in expansion; '2' if the returned line should be displayed, but not executed, as with the ':p' modifier (*note Modifiers::). If an error occurred in expansion, then OUTPUT contains a descriptive error message. -- Function: char * get_history_event (const char *string, int *cindex, int qchar) Returns the text of the history event beginning at STRING + *CINDEX. *CINDEX is modified to point to after the event specifier. At function entry, CINDEX points to the index into STRING where the history event specification begins. QCHAR is a character that is allowed to end the event specification in addition to the "normal" terminating characters. -- Function: char ** history_tokenize (const char *string) Return an array of tokens parsed out of STRING, much as the shell might. The tokens are split on the characters in the HISTORY_WORD_DELIMITERS variable, and shell quoting conventions are obeyed as described below. -- Function: char * history_arg_extract (int first, int last, const char *string) Extract a string segment consisting of the FIRST through LAST arguments present in STRING. Arguments are split using 'history_tokenize'.  File: history.info, Node: History Variables, Next: History Programming Example, Prev: History Functions, Up: Programming with GNU History 2.4 History Variables ===================== This section describes the externally-visible variables exported by the GNU History Library. -- Variable: int history_base The logical offset of the first entry in the history list. -- Variable: int history_length The number of entries currently stored in the history list. -- Variable: int history_max_entries The maximum number of history entries. This must be changed using 'stifle_history()'. -- Variable: int history_write_timestamps If non-zero, timestamps are written to the history file, so they can be preserved between sessions. The default value is 0, meaning that timestamps are not saved. The current timestamp format uses the value of HISTORY_COMMENT_CHAR to delimit timestamp entries in the history file. If that variable does not have a value (the default), timestamps will not be written. -- Variable: char history_expansion_char The character that introduces a history event. The default is '!'. Setting this to 0 inhibits history expansion. -- Variable: char history_subst_char The character that invokes word substitution if found at the start of a line. The default is '^'. -- Variable: char history_comment_char 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. -- Variable: char * history_word_delimiters The characters that separate tokens for 'history_tokenize()'. The default value is '" \t\n()<>;&|"'. -- Variable: char * history_search_delimiter_chars The list of additional characters which can delimit a history search string, in addition to space, TAB, ':' and '?' in the case of a substring search. The default is empty. -- Variable: char * history_no_expand_chars The list of characters which inhibit history expansion if found immediately following HISTORY_EXPANSION_CHAR. The default is space, tab, newline, carriage return, and '='. -- Variable: int history_quotes_inhibit_expansion If non-zero, the history expansion code implements shell-like quoting: single-quoted words are not scanned for the history expansion character or the history comment character, and double-quoted words may have history expansion performed, since single quotes are not special within double quotes. The default value is 0. -- Variable: int history_quoting_state An application may set this variable to indicate that the current line being expanded is subject to existing quoting. If set to ''', the history expansion function will assume that the line is single-quoted and inhibit expansion until it reads an unquoted closing single quote; if set to '"', history expansion will assume the line is double quoted until it reads an unquoted closing double quote. If set to zero, the default, the history expansion function will assume the line is not quoted and treat quote characters within the line as described above. This is only effective if HISTORY_QUOTES_INHIBIT_EXPANSION is set. -- Variable: rl_linebuf_func_t * history_inhibit_expansion_function This should be set to the address of a function that takes two arguments: a 'char *' (STRING) and an 'int' 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 2.5 History Programming Example =============================== The following program demonstrates simple use of the GNU History Library. #include #include main (argc, argv) int argc; char **argv; { 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 && *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, &expansion); if (result) fprintf (stderr, "%s\n", expansion); if (result < 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]->line); } else if (strncmp (line, "delete", 6) == 0) { int which; if ((sscanf (line + 6, "%d", &which)) == 1) { HIST_ENTRY *entry = remove_history (which); if (!entry) fprintf (stderr, "No such entry %d\n", which); else { free (entry->line); free (entry); } } else { fprintf (stderr, "non-numeric arg given to `delete'\n"); } } } }  File: history.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: Programming with GNU History, Up: Top Appendix A GNU Free Documentation License ***************************************** Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See . Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents ==================================================== To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.  File: history.info, Node: Concept Index, Next: Function and Variable Index, Prev: GNU Free Documentation License, Up: Top Appendix B Concept Index ************************ [index] * Menu: * anchored search: Searching the History List. (line 10) * event designators: Event Designators. (line 6) * history events: Event Designators. (line 8) * history expansion: History Interaction. (line 6) * History Searching: Searching the History List. (line 6)  File: history.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top Appendix C Function and Variable Index ************************************** [index] * Menu: * add_history: History List Management. (line 9) * add_history_time: History List Management. (line 16) * append_history: Managing the History File. (line 28) * clear_history: History List Management. (line 37) * current_history: Information About the History List. (line 17) * free_history_entry: History List Management. (line 25) * get_history_event: History Expansion. (line 26) * history_arg_extract: History Expansion. (line 41) * history_base: History Variables. (line 9) * history_comment_char: History Variables. (line 37) * history_expand: History Expansion. (line 8) * history_expansion_char: History Variables. (line 29) * history_get: Information About the History List. (line 22) * history_get_history_state: Initializing History and State Management. (line 14) * history_get_time: Information About the History List. (line 29) * history_inhibit_expansion_function: History Variables. (line 77) * history_is_stifled: History List Management. (line 50) * history_length: History Variables. (line 12) * history_list: Information About the History List. (line 9) * history_max_entries: History Variables. (line 15) * history_no_expand_chars: History Variables. (line 52) * history_quotes_inhibit_expansion: History Variables. (line 57) * history_quoting_state: History Variables. (line 65) * history_search: Searching the History List. (line 12) * history_search_delimiter_chars: History Variables. (line 47) * history_search_pos: Searching the History List. (line 31) * history_search_prefix: Searching the History List. (line 21) * history_set_history_state: Initializing History and State Management. (line 18) * history_set_pos: Moving Around the History List. (line 9) * history_subst_char: History Variables. (line 33) * history_tokenize: History Expansion. (line 35) * history_total_bytes: Information About the History List. (line 33) * history_truncate_file: Managing the History File. (line 33) * history_word_delimiters: History Variables. (line 43) * history_write_timestamps: History Variables. (line 19) * next_history: Moving Around the History List. (line 19) * previous_history: Moving Around the History List. (line 14) * read_history: Managing the History File. (line 9) * read_history_range: Managing the History File. (line 14) * remove_history: History List Management. (line 20) * replace_history_entry: History List Management. (line 30) * stifle_history: History List Management. (line 40) * unstifle_history: History List Management. (line 44) * using_history: Initializing History and State Management. (line 10) * where_history: Information About the History List. (line 14) * write_history: Managing the History File. (line 22)  Tag Table: Node: Top849 Node: Using History Interactively1494 Node: History Interaction2002 Node: Event Designators3900 Node: Word Designators5039 Node: Modifiers6676 Node: Programming with GNU History7899 Node: Introduction to History8643 Node: History Storage10333 Node: History Functions11468 Node: Initializing History and State Management12457 Node: History List Management13269 Node: Information About the History List15563 Node: Moving Around the History List17177 Node: Searching the History List18270 Node: Managing the History File20195 Node: History Expansion22015 Node: History Variables23944 Node: History Programming Example27924 Node: GNU Free Documentation License30601 Node: Concept Index55773 Node: Function and Variable Index56478  End Tag Table readline-8.0/doc/history.html000664 000436 000000 00000311013 13406221744 016360 0ustar00chetwheel000000 000000 GNU History Library:
    [Top] [Contents] [Index] [ ? ]

    GNU History Library

    This document describes the GNU History library, a programming tool that provides a consistent user interface for recalling lines of previously typed input.

    1. Using History Interactively  GNU History User's Manual.
    2. Programming with GNU History  GNU History Programmer's Manual.
    A. GNU Free Documentation License  License for copying this manual.
    B. Concept Index  Index of concepts described in this manual.
    C. Function and Variable Index  Index of externally visible functions and variables.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1. Using History Interactively

    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 2. Programming with GNU History.

    1.1 History Expansion  What it feels like using History as a user.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.1 History Expansion

    The History library provides a history expansion feature that is 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 history list 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 history is called the event, and the portions of that line that are 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 words surrounded by quotes are considered one word. History expansions are introduced by the appearance of the history expansion character, which is `!' by default.

    History expansion implements shell-like quoting conventions: a backslash can be used to remove the special handling for the next character; single quotes enclose verbatim sequences of characters, and can be used to inhibit history expansion; and characters enclosed within double quotes may be subject to history expansion, since backslash can escape the history expansion character, but single quotes may not, since they are not treated specially within double quotes.

    1.1.1 Event Designators  How to specify which history line to use.
    1.1.2 Word Designators  Specifying which words are of interest.
    1.1.3 Modifiers  Modifying the results of substitution.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.1.1 Event Designators

    An event designator is a reference to a command line entry in the history list. Unless the reference is absolute, events are relative to the current position in the history list.

    !
    Start a history substitution, except when followed by a space, tab, the end of the line, or `='.

    !n
    Refer to command line n.

    !-n
    Refer to the command n lines back.

    !!
    Refer to the previous command. This is a synonym for `!-1'.

    !string
    Refer to the most recent command preceding the current position in the history list starting with string.

    !?string[?]
    Refer to the most recent command preceding the current position in the history list 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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.1.2 Word Designators

    Word designators are used to select desired words from the event. A `:' separates the event specification from the word designator. It may 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.

    For example,

    !!
    designates the preceding command. When you type this, the preceding command is repeated in toto.

    !!:$
    designates the last argument of the preceding command. This may be shortened to !$.

    !fi:2
    designates the second argument of the most recent command starting with the letters fi.

    Here are the word designators:

    0 (zero)
    The 0th word. For many applications, this is the command word.

    n
    The nth word.

    ^
    The first argument; that is, word 1.

    $
    The last argument.

    %
    The word matched by the most recent `?string?' search.

    x-y
    A range of words; `-y' abbreviates `0-y'.

    *
    All of the words, except the 0th. 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.

    x*
    Abbreviates `x-$'

    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.1.3 Modifiers

    After the optional word designator, you can add a sequence of one or 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 basename.

    e
    Remove all but the trailing suffix.

    p
    Print the new command but do not execute it.

    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.

    &
    Repeat the previous substitution.

    g
    a
    Cause changes to be applied over the entire event line. Used in conjunction with `s', as in gs/old/new/, or with `&'.

    G
    Apply the following `s' modifier once to each word in the event.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2. Programming with GNU History

    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 1. Using History Interactively.

    2.1 Introduction to History  What is the GNU History library for?
    2.2 History Storage  How information is stored.
    2.3 History Functions  Functions that you can use.
    2.4 History Variables  Variables that control behaviour.
    2.5 History Programming Example  Example of using the GNU History Library.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.1 Introduction to History

    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.

    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 expansion function is available which provides for a consistent user interface across different programs.

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

    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.

    Before declaring any functions using any functionality the History library provides in other code, an application writer should include the file <readline/history.h> in any file that uses the History library's features. It supplies extern declarations for all of the library's public functions and variables, and declares all of the public data structures.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.2 History Storage

    The history list is an array of history entries. A history entry is declared as follows:

     
    typedef void *histdata_t;
    
    typedef struct _hist_entry {
      char *line;
      char *timestamp;
      histdata_t data;
    } HIST_ENTRY;
    

    The history list itself might therefore be declared as

     
    HIST_ENTRY **the_history_list;
    

    The state of the History library is encapsulated into a single structure:

     
    /*
     * A structure used to pass around the current state of the history.
     */
    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;
    

    If the flags member includes HS_STIFLED, the history has been stifled.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.3 History Functions

    This section describes the calling sequence for the various functions exported by the GNU History library.

    2.3.1 Initializing History and State Management  Functions to call when you want to use history in a program.
    2.3.2 History List Management  Functions used to manage the list of history entries.
    2.3.3 Information About the History List  Functions returning information about the history list.
    2.3.4 Moving Around the History List  Functions used to change the position in the history list.
    2.3.5 Searching the History List  Functions to search the history list for entries containing a string.
    2.3.6 Managing the History File  Functions that read and write a file containing the history list.
    2.3.7 History Expansion  Functions to perform csh-like history expansion.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.3.1 Initializing History and State Management

    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.

    Function: void using_history (void)
    Begin a session in which the history functions might be used. This initializes the interactive variables.

    Function: HISTORY_STATE * history_get_history_state (void)
    Return a structure describing the current state of the input history.

    Function: void history_set_history_state (HISTORY_STATE *state)
    Set the state of the history list according to state.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.3.2 History List Management

    These functions manage individual entries on the history list, or set parameters managing the list itself.

    Function: void add_history (const char *string)
    Place string at the end of the history list. The associated data field (if any) is set to NULL. If the maximum number of history entries has been set using stifle_history(), and the new number of history entries would exceed that maximum, the oldest history entry is removed.

    Function: void add_history_time (const char *string)
    Change the time stamp associated with the most recent history entry to string.

    Function: HIST_ENTRY * remove_history (int which)
    Remove history entry at offset which from the history. The removed element is returned so you can free the line, data, and containing structure.

    Function: histdata_t free_history_entry (HIST_ENTRY *histent)
    Free the history entry histent and any history library private data associated with it. Returns the application-specific data so the caller can dispose of it.

    Function: HIST_ENTRY * replace_history_entry (int which, const char *line, histdata_t data)
    Make the history entry at offset which have line and data. This returns the old entry so the caller can dispose of any application-specific data. In the case of an invalid which, a NULL pointer is returned.

    Function: void clear_history (void)
    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. The history list will contain only max entries at a time.

    Function: int unstifle_history (void)
    Stop stifling the history. This returns the previously-set maximum number of history entries (as set by stifle_history()). The value is positive if the history was stifled, negative if it wasn't.

    Function: int history_is_stifled (void)
    Returns non-zero if the history is stifled, zero if it is not.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.3.3 Information About the History List

    These functions return information about the entire history list or individual list entries.

    Function: HIST_ENTRY ** history_list (void)
    Return a NULL terminated array of HIST_ENTRY * which is the current input history. Element 0 of this list is the beginning of time. If there is no history, return NULL.

    Function: int where_history (void)
    Returns the offset of the current history element.

    Function: HIST_ENTRY * current_history (void)
    Return the history entry at the current position, as determined by where_history(). If there is no entry there, return a NULL pointer.

    Function: HIST_ENTRY * history_get (int offset)
    Return the history entry at position offset. The range of valid values of offset starts at history_base and ends at history_length - 1 (see section 2.4 History Variables). If there is no entry there, or if offset is outside the valid range, return a NULL pointer.

    Function: time_t history_get_time (HIST_ENTRY *entry)
    Return the time stamp associated with the history entry entry. If the timestamp is missing or invalid, return 0.

    Function: int history_total_bytes (void)
    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.3.4 Moving Around the History List

    These functions allow the current index into the history list to be set or changed.

    Function: int history_set_pos (int pos)
    Set the current history offset to pos, an absolute index into the list. Returns 1 on success, 0 if pos is less than zero or greater than the number of history entries.

    Function: HIST_ENTRY * previous_history (void)
    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 NULL pointer.

    Function: HIST_ENTRY * next_history (void)
    If the current history offset refers to a valid history entry, increment the current history offset. If the possibly-incremented history offset refers to a valid history entry, return a pointer to that entry; otherwise, return a BNULL pointer.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.3.5 Searching the History List

    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 anchored, meaning that the string must match at the beginning of the history entry.

    Function: int history_search (const char *string, int direction)
    Search the history for string, starting at the current history offset. If direction is less than 0, then the search is through previous entries, otherwise through subsequent entries. If string 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 string was found. Otherwise, nothing is changed, and a -1 is returned.

    Function: int history_search_prefix (const char *string, int direction)
    Search the history for string, starting at the current history offset. The search is anchored: matching lines must begin with string. If direction is less than 0, then the search is through previous entries, otherwise through subsequent entries. If string 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.

    Function: int history_search_pos (const char *string, int direction, int pos)
    Search for string in the history list, starting at pos, an absolute index into the list. If direction is negative, the search proceeds backward from pos, otherwise forward. Returns the absolute index of the history element where string was found, or -1 otherwise.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.3.6 Managing the History File

    The History library can read the history from and write it to a file. This section documents the functions for managing a history file.

    Function: int read_history (const char *filename)
    Add the contents of filename to the history list, a line at a time. If filename is NULL, then read from `~/.history'. Returns 0 if successful, or errno if not.

    Function: int read_history_range (const char *filename, int from, int to)
    Read a range of lines from filename, adding them to the history list. Start reading at line from and end at to. If from is zero, start at the beginning. If to is less than from, then read until the end of the file. If filename is NULL, then read from `~/.history'. Returns 0 if successful, or errno if not.

    Function: int write_history (const char *filename)
    Write the current history to filename, overwriting filename if necessary. If filename is NULL, then write the history list to `~/.history'. Returns 0 on success, or errno on a read or write error.

    Function: int append_history (int nelements, const char *filename)
    Append the last nelements of the history list to filename. If filename is NULL, then append to `~/.history'. Returns 0 on success, or errno on a read or write error.

    Function: int history_truncate_file (const char *filename, int nlines)
    Truncate the history file filename, leaving only the last nlines lines. If filename is NULL, then `~/.history' is truncated. Returns 0 on success, or errno on failure.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.3.7 History Expansion

    These functions implement history expansion.

    Function: int history_expand (char *string, char **output)
    Expand string, placing the result into output, a pointer to a string (see section 1.1 History Expansion). Returns:
    0
    If no expansions took place (or, if the only change in the text was the removal of escape characters preceding the history expansion character);
    1
    if expansions did take place;
    -1
    if there was an error in expansion;
    2
    if the returned line should be displayed, but not executed, as with the :p modifier (see section 1.1.3 Modifiers).

    If an error occurred in expansion, then output contains a descriptive error message.

    Function: char * get_history_event (const char *string, int *cindex, int qchar)
    Returns the text of the history event beginning at string + *cindex. *cindex is modified to point to after the event specifier. At function entry, cindex points to the index into string where the history event specification begins. qchar is a character that is allowed to end the event specification in addition to the "normal" terminating characters.

    Function: char ** history_tokenize (const char *string)
    Return an array of tokens parsed out of string, much as the shell might. The tokens are split on the characters in the history_word_delimiters variable, and shell quoting conventions are obeyed as described below.

    Function: char * history_arg_extract (int first, int last, const char *string)
    Extract a string segment consisting of the first through last arguments present in string. Arguments are split using history_tokenize.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.4 History Variables

    This section describes the externally-visible variables exported by the GNU History Library.

    Variable: int history_base
    The logical offset of the first entry in the history list.

    Variable: int history_length
    The number of entries currently stored in the history list.

    Variable: int history_max_entries
    The maximum number of history entries. This must be changed using stifle_history().

    Variable: int history_write_timestamps
    If non-zero, timestamps are written to the history file, so they can be preserved between sessions. The default value is 0, meaning that timestamps are not saved.

    The current timestamp format uses the value of history_comment_char to delimit timestamp entries in the history file. If that variable does not have a value (the default), timestamps will not be written.

    Variable: char history_expansion_char
    The character that introduces a history event. The default is `!'. Setting this to 0 inhibits history expansion.

    Variable: char history_subst_char
    The character that invokes word substitution if found at the start of a line. The default is `^'.

    Variable: char history_comment_char
    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.

    Variable: char * history_word_delimiters
    The characters that separate tokens for history_tokenize(). The default value is " \t\n()<>;&|".

    Variable: char * history_search_delimiter_chars
    The list of additional characters which can delimit a history search string, in addition to space, TAB, `:' and `?' in the case of a substring search. The default is empty.

    Variable: char * history_no_expand_chars
    The list of characters which inhibit history expansion if found immediately following history_expansion_char. The default is space, tab, newline, carriage return, and `='.

    Variable: int history_quotes_inhibit_expansion
    If non-zero, the history expansion code implements shell-like quoting: single-quoted words are not scanned for the history expansion character or the history comment character, and double-quoted words may have history expansion performed, since single quotes are not special within double quotes. The default value is 0.

    Variable: int history_quoting_state
    An application may set this variable to indicate that the current line being expanded is subject to existing quoting. If set to `'', the history expansion function will assume that the line is single-quoted and inhibit expansion until it reads an unquoted closing single quote; if set to `"', history expansion will assume the line is double quoted until it reads an unquoted closing double quote. If set to zero, the default, the history expansion function will assume the line is not quoted and treat quote characters within the line as described above. This is only effective if history_quotes_inhibit_expansion is set.

    Variable: rl_linebuf_func_t * history_inhibit_expansion_function
    This should be set to the address of a function that takes two arguments: a char * (string) and an int 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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    2.5 History Programming Example

    The following program demonstrates simple use of the GNU History Library.

     
    #include <stdio.h>
    #include <readline/history.h>
    
    main (argc, argv)
         int argc;
         char **argv;
    {
      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 && *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, &expansion);
              if (result)
                fprintf (stderr, "%s\n", expansion);
    
              if (result < 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]->line);
            }
          else if (strncmp (line, "delete", 6) == 0)
            {
              int which;
              if ((sscanf (line + 6, "%d", &which)) == 1)
                {
                  HIST_ENTRY *entry = remove_history (which);
                  if (!entry)
                    fprintf (stderr, "No such entry %d\n", which);
                  else
                    {
                      free (entry->line);
                      free (entry);
                    }
                }
              else
                {
                  fprintf (stderr, "non-numeric arg given to `delete'\n");
                }
            }
        }
    }
    


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    A. GNU Free Documentation License

    Version 1.3, 3 November 2008

     
    Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
    http://fsf.org/
    
    Everyone is permitted to copy and distribute verbatim copies
    of this license document, but changing it is not allowed.
    

    1. PREAMBLE

      The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

      This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

      We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

    2. APPLICABILITY AND DEFINITIONS

      This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

      A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

      A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

      The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

      The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

      A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

      Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

      The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

      The "publisher" means any person or entity that distributes copies of the Document to the public.

      A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

      The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

    3. VERBATIM COPYING

      You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

      You may also lend copies, under the same conditions stated above, and you may publicly display copies.

    4. COPYING IN QUANTITY

      If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

      If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

      If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

      It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

    5. MODIFICATIONS

      You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

      1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

      2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

      3. State on the Title page the name of the publisher of the Modified Version, as the publisher.

      4. Preserve all the copyright notices of the Document.

      5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

      6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

      7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

      8. Include an unaltered copy of this License.

      9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

      10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

      11. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

      12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

      13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

      14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

      15. Preserve any Warranty Disclaimers.

      If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

      You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

      You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

      The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

    6. COMBINING DOCUMENTS

      You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

      The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

      In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements."

    7. COLLECTIONS OF DOCUMENTS

      You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

      You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

    8. AGGREGATION WITH INDEPENDENT WORKS

      A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

      If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

    9. TRANSLATION

      Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

      If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

    10. TERMINATION

      You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.

      However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

      Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

      Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.

    11. FUTURE REVISIONS OF THIS LICENSE

      The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

      Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.

    12. RELICENSING

      "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.

      "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.

      "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.

      An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.

      The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.

    ADDENDUM: How to use this License for your documents

    To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

     
      Copyright (C)  year  your name.
      Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.3
      or any later version published by the Free Software Foundation;
      with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
      Texts.  A copy of the license is included in the section entitled ``GNU
      Free Documentation License''.
    

    If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:

     
        with the Invariant Sections being list their titles, with
        the Front-Cover Texts being list, and with the Back-Cover Texts
        being list.
    

    If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

    If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    B. Concept Index

    Jump to:   A   E   H  

    Index Entry Section

    A
    anchored search2.3.5 Searching the History List

    E
    event designators1.1.1 Event Designators

    H
    history events1.1.1 Event Designators
    history expansion1.1 History Expansion
    History Searching2.3.5 Searching the History List

    Jump to:   A   E   H  


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    C. Function and Variable Index

    Jump to:   A   C   F   G   H   N   P   R   S   U   W  

    Index Entry Section

    A
    add_history2.3.2 History List Management
    add_history_time2.3.2 History List Management
    append_history2.3.6 Managing the History File

    C
    clear_history2.3.2 History List Management
    current_history2.3.3 Information About the History List

    F
    free_history_entry2.3.2 History List Management

    G
    get_history_event2.3.7 History Expansion

    H
    history_arg_extract2.3.7 History Expansion
    history_base2.4 History Variables
    history_comment_char2.4 History Variables
    history_expand2.3.7 History Expansion
    history_expansion_char2.4 History Variables
    history_get2.3.3 Information About the History List
    history_get_history_state2.3.1 Initializing History and State Management
    history_get_time2.3.3 Information About the History List
    history_inhibit_expansion_function2.4 History Variables
    history_is_stifled2.3.2 History List Management
    history_length2.4 History Variables
    history_list2.3.3 Information About the History List
    history_max_entries2.4 History Variables
    history_no_expand_chars2.4 History Variables
    history_quotes_inhibit_expansion2.4 History Variables
    history_quoting_state2.4 History Variables
    history_search2.3.5 Searching the History List
    history_search_delimiter_chars2.4 History Variables
    history_search_pos2.3.5 Searching the History List
    history_search_prefix2.3.5 Searching the History List
    history_set_history_state2.3.1 Initializing History and State Management
    history_set_pos2.3.4 Moving Around the History List
    history_subst_char2.4 History Variables
    history_tokenize2.3.7 History Expansion
    history_total_bytes2.3.3 Information About the History List
    history_truncate_file2.3.6 Managing the History File
    history_word_delimiters2.4 History Variables
    history_write_timestamps2.4 History Variables

    N
    next_history2.3.4 Moving Around the History List

    P
    previous_history2.3.4 Moving Around the History List

    R
    read_history2.3.6 Managing the History File
    read_history_range2.3.6 Managing the History File
    remove_history2.3.2 History List Management
    replace_history_entry2.3.2 History List Management

    S
    stifle_history2.3.2 History List Management

    U
    unstifle_history2.3.2 History List Management
    using_history2.3.1 Initializing History and State Management

    W
    where_history2.3.3 Information About the History List
    write_history2.3.6 Managing the History File

    Jump to:   A   C   F   G   H   N   P   R   S   U   W  


    [Top] [Contents] [Index] [ ? ]

    Table of Contents


    [Top] [Contents] [Index] [ ? ]

    Short Table of Contents

    1. Using History Interactively
    2. Programming with GNU History
    A. GNU Free Documentation License
    B. Concept Index
    C. Function and Variable Index

    [Top] [Contents] [Index] [ ? ]

    About this document

    This document was generated by chet on December, 18 2018 using texi2html

    The buttons in the navigation panels have the following meaning:

    Button Name Go to From 1.2.3 go to
    [ < ] Back previous section in reading order 1.2.2
    [ > ] Forward next section in reading order 1.2.4
    [ << ] FastBack previous or up-and-previous section 1.1
    [ Up ] Up up section 1.2
    [ >> ] FastForward next or up-and-next section 1.3
    [Top] Top cover (top) of document  
    [Contents] Contents table of contents  
    [Index] Index concept index  
    [ ? ] About this page  

    where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:
    • 1. Section One
      • 1.1 Subsection One-One
        • ...
      • 1.2 Subsection One-Two
        • 1.2.1 Subsubsection One-Two-One
        • 1.2.2 Subsubsection One-Two-Two
        • 1.2.3 Subsubsection One-Two-Three     <== Current Position
        • 1.2.4 Subsubsection One-Two-Four
      • 1.3 Subsection One-Three
        • ...
      • 1.4 Subsection One-Four


    This document was generated by chet on December, 18 2018 using texi2html readline-8.0/doc/readline.3000664 000436 000024 00000137663 13260445365 015673 0ustar00chetstaff000000 000000 .\" .\" MAN PAGE COMMENTS to .\" .\" Chet Ramey .\" Information Network Services .\" Case Western Reserve University .\" chet.ramey@case.edu .\" .\" Last Change: Thu Dec 28 14:49:51 EST 2017 .\" .TH READLINE 3 "2017 December 28" "GNU Readline 7.0" .\" .\" File Name macro. This used to be `.PN', for Path Name, .\" but Sun doesn't seem to like that very much. .\" .de FN \fI\|\\$1\|\fP .. .SH NAME readline \- get a line from a user with editing .SH SYNOPSIS .LP .nf .ft B #include #include #include .ft .fi .LP .nf \fIchar *\fP .br \fBreadline\fP (\fIconst char *prompt\fP); .fi .SH COPYRIGHT .if n Readline is Copyright (C) 1989\-2014 Free Software Foundation, Inc. .if t Readline is Copyright \(co 1989\-2014 Free Software Foundation, Inc. .SH DESCRIPTION .LP .B readline will read a line from the terminal and return it, using .B prompt as a prompt. If .B prompt is \fBNULL\fP or the empty string, no prompt is issued. The line returned is allocated with .IR malloc (3); the caller must free it when finished. The line returned has the final newline removed, so only the text of the line remains. .LP .B readline 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. .LP This manual page describes only the most basic use of \fBreadline\fP. Much more functionality is available; see \fIThe GNU Readline Library\fP and \fIThe GNU History Library\fP for additional information. .SH RETURN VALUE .LP .B readline returns the text of the line read. A blank line returns the empty string. If .B EOF is encountered while reading a line, and the line is empty, .B NULL is returned. If an .B EOF is read with a non\-empty line, it is treated as a newline. .SH NOTATION .LP 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 keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X. (On keyboards without a .I meta key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key then the .I x key. This makes ESC the \fImeta prefix\fP. The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP, or press the Escape key then hold the Control key while pressing the .I x key.) .PP Readline commands may be given numeric .IR arguments , 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., \fBkill\-line\fP) causes that command to act in a backward direction. Commands whose behavior with arguments deviates from this are noted below. .PP 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 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. .SH INITIALIZATION FILE .LP Readline is customized by putting commands in an initialization file (the \fIinputrc\fP file). The name of this file is taken from the value of the .B INPUTRC environment variable. If that variable is unset, the default is .IR ~/.inputrc . If that file does not exist or cannot be read, the ultimate default is .IR /etc/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. Each program using this library may add its own commands and bindings. .PP For example, placing .RS .PP M\-Control\-u: universal\-argument .RE or .RS C\-Meta\-u: universal\-argument .RE .sp into the .I inputrc would make M\-C\-u execute the readline command .IR universal\-argument . .PP The following symbolic character names are recognized while processing key bindings: .IR DEL , .IR ESC , .IR ESCAPE , .IR LFD , .IR NEWLINE , .IR RET , .IR RETURN , .IR RUBOUT , .IR SPACE , .IR SPC , and .IR TAB . .PP In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a \fImacro\fP). .PP .SS Key Bindings .PP The syntax for controlling key bindings in the .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: as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP prefixes, or as a key sequence. The name and key sequence are separated by a colon. There can be no whitespace between the name and the colon. .PP When using the form \fBkeyname\fP:\^\fIfunction-name\fP or \fImacro\fP, .I keyname is the name of a key spelled out in English. For example: .sp .RS Control\-u: universal\-argument .br Meta\-Rubout: backward\-kill\-word .br Control\-o: "> output" .RE .LP In the above example, .I C\-u is bound to the function .BR universal\-argument , .I M-DEL is bound to the function .BR backward\-kill\-word , and .I C\-o is bound to run the macro expressed on the right hand side (that is, to insert the text .if t \f(CW> output\fP .if n ``> output'' into the line). .PP In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP, .B keyseq differs from .B keyname 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, but the symbolic character names are not recognized. .sp .RS "\eC\-u": universal\-argument .br "\eC\-x\eC\-r": re\-read\-init\-file .br "\ee[11~": "Function Key 1" .RE .PP In this example, .I C-u is again bound to the function .BR universal\-argument . .I "C-x C-r" is bound to the function .BR re\-read\-init\-file , and .I "ESC [ 1 1 ~" is bound to insert the text .if t \f(CWFunction Key 1\fP. .if n ``Function Key 1''. .PP The full set of GNU Emacs style escape sequences available when specifying key sequences is .RS .PD 0 .TP .B \eC\- control prefix .TP .B \eM\- meta prefix .TP .B \ee an escape character .TP .B \e\e backslash .TP .B \e" literal ", a double quote .TP .B \e' literal ', a single quote .RE .PD .PP In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available: .RS .PD 0 .TP .B \ea alert (bell) .TP .B \eb backspace .TP .B \ed delete .TP .B \ef form feed .TP .B \en newline .TP .B \er carriage return .TP .B \et horizontal tab .TP .B \ev vertical tab .TP .B \e\fInnn\fP the eight-bit character whose value is the octal value \fInnn\fP (one to three digits) .TP .B \ex\fIHH\fP the eight-bit character whose value is the hexadecimal value \fIHH\fP (one or two hex digits) .RE .PD .PP 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. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other character in the macro text, including " and '. .PP .B Bash allows the current readline key bindings to be displayed or modified with the .B bind builtin command. The editing mode may be switched during interactive use by using the .B \-o option to the .B set 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 any other means to incorporate new bindings. .SS Variables .PP Readline has variables that can be used to further customize its behavior. A variable may be set in the .I inputrc file with a statement of the form .RS .PP \fBset\fP \fIvariable\-name\fP \fIvalue\fP .RE .PP Except where noted, readline variables can take the values .B On or .B Off (without regard to case). Unrecognized variable names are ignored. When a variable value is read, empty or null values, "on" (case-insensitive), and "1" are equivalent to \fBOn\fP. All other values are equivalent to \fBOff\fP. The variables and their default values are: .PP .PD 0 .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 \fBvisible\fP, readline uses a visible bell if one is available. If set to \fBaudible\fP, readline attempts to ring the terminal's bell. .TP .B bind\-tty\-special\-chars (On) If set to \fBOn\fP (the default), readline attempts to bind the control characters treated specially by the kernel's terminal driver to their readline equivalents. .TP .B blink\-matching\-paren (Off) If set to \fBOn\fP, readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. .TP .B colored\-completion\-prefix (Off) If set to \fBOn\fP, when listing completions, readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the \fBLS_COLORS\fP environment variable. .TP .B colored\-stats (Off) If set to \fBOn\fP, readline displays possible completions using different colors to indicate their file type. The color definitions are taken from the value of the \fBLS_COLORS\fP environment variable. .TP .B comment\-begin (``#'') The string that is inserted in \fBvi\fP mode when the .B insert\-comment command is executed. This command is bound to .B M\-# in emacs mode and to .B # in vi command mode. .TP .B completion\-display\-width (\-1) The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is \-1. .TP .B completion\-ignore\-case (Off) If set to \fBOn\fP, readline performs filename matching and completion in a case\-insensitive fashion. .TP .B completion\-map\-case (Off) If set to \fBOn\fP, and \fBcompletion\-ignore\-case\fP is enabled, readline treats hyphens (\fI\-\fP) and underscores (\fI_\fP) as equivalent when performing case\-insensitive filename matching and completion. .TP .B completion\-prefix\-display\-length (0) The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions. .TP .B completion\-query\-items (100) This determines when the user is queried about viewing the number of possible completions generated by the \fBpossible\-completions\fP 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 variable, the user is asked whether or not he wishes to view them; otherwise they are simply listed on the terminal. A negative value causes readline to never ask. .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 prefixing it with an escape character (in effect, using escape as the \fImeta prefix\fP). The default is \fIOn\fP, but readline will set it to \fIOff\fP if the locale contains eight-bit characters. .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 echo\-control\-characters (On) When set to \fBOn\fP, on operating systems that indicate they support it, readline echoes a character corresponding to a signal generated from the keyboard. .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 emacs\-mode\-string (@) If the \fIshow\-mode\-in\-prompt\fP variable is enabled, this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the \e1 and \e2 escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. .TP .B enable\-bracketed\-paste (Off) When set to \fBOn\fP, readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a single string of characters, instead of treating each character as if it had been read from the keyboard. This can prevent pasted characters from being interpreted as editing commands. .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 enable\-meta\-key (On) When set to \fBOn\fP, readline will try to enable any meta modifier key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. .TP .B expand\-tilde (Off) If set to \fBOn\fP, tilde expansion is performed when readline attempts word completion. .TP .B history\-preserve\-point (Off) If set to \fBOn\fP, the history code attempts to place point at the same location on each history line retrieved with \fBprevious-history\fP or \fBnext-history\fP. .TP .B history\-size (unset) Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. If an attempt is made to set \fIhistory\-size\fP to a non-numeric value, the maximum number of history entries will be set to 500. .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 input\-meta (Off) If set to \fBOn\fP, readline will enable eight-bit input (that is, it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The name .B meta\-flag is a synonym for this variable. The default is \fIOff\fP, but readline will set it to \fIOn\fP if the locale contains eight-bit characters. .TP .B isearch\-terminators (``C\-[ C\-J'') The string of characters that should terminate an incremental search without subsequently executing the character as a command. If this variable has not been given a value, the characters \fIESC\fP and \fIC\-J\fP will terminate an incremental search. .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, vi-command\fP, and .IR vi-insert . \fIvi\fP is equivalent to \fIvi-command\fP; \fIemacs\fP is equivalent to \fIemacs-standard\fP. The default value is .IR emacs . The value of .B editing\-mode also affects the default keymap. .TP .B keyseq\-timeout (500) Specifies the duration \fIreadline\fP will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, \fIreadline\fP will use the shorter but complete key sequence. The value is specified in milliseconds, so a value of 1000 means that \fIreadline\fP will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, \fIreadline\fP will wait until another key is pressed to decide which key sequence to complete. .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 mark\-symlinked\-directories (Off) If set to \fBOn\fP, completed names which are symbolic links to directories have a slash appended (subject to the value of \fBmark\-directories\fP). .TP .B match\-hidden\-files (On) This variable, when set to \fBOn\fP, causes readline to match files whose names begin with a `.' (hidden files) when performing filename completion. If set to \fBOff\fP, the leading `.' must be supplied by the user in the filename to be completed. .TP .B menu\-complete\-display\-prefix (Off) If set to \fBOn\fP, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. .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. The default is \fIOff\fP, but readline will set it to \fIOn\fP if the locale contains eight-bit characters. .TP .B page\-completions (On) If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager to display a screenful of possible completions at a time. .TP .B print\-completions\-horizontally (Off) If set to \fBOn\fP, readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. .TP .B revert\-all\-at\-newline (Off) If set to \fBOn\fP, readline will undo all changes to history lines before returning when \fBaccept\-line\fP is executed. By default, history lines may be modified and retain individual undo lists across calls to \fBreadline\fP. .TP .B show\-all\-if\-ambiguous (Off) This alters the default behavior of the completion functions. If set to .BR On , words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. .TP .B show\-all\-if\-unmodified (Off) This alters the default behavior of the completion functions in a fashion similar to \fBshow\-all\-if\-ambiguous\fP. If set to .BR On , words which have more than one possible completion without any possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. .TP .B show\-mode\-in\-prompt (Off) If set to \fBOn\fP, add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable (e.g., \fIemacs\-mode\-string\fP). .TP .B skip\-completed\-text (Off) If set to \fBOn\fP, this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If enabled, readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. .TP .B vi\-cmd\-mode\-string ((cmd)) If the \fIshow\-mode\-in\-prompt\fP variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the \e1 and \e2 escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. .TP .B vi\-ins\-mode\-string ((ins)) If the \fIshow\-mode\-in\-prompt\fP variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the \e1 and \e2 escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. .TP .B visible\-stats (Off) If set to \fBOn\fP, a character denoting a file's type as reported by \fIstat\fP(2) is appended to the filename when listing possible completions. .PD .SS Conditional Constructs .PP 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 four parser directives used. .IP \fB$if\fP The .B $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, after any comparison operator, extends to the end of the line; unless otherwise noted, no characters are required to isolate it. .RS .IP \fBmode\fP The \fBmode=\fP form of the \fB$if\fP directive is used to test whether readline is in emacs or vi mode. This may be used in conjunction with the \fBset keymap\fP command, for instance, to set bindings in the \fIemacs-standard\fP and \fIemacs-ctlx\fP keymaps only if readline is starting out in emacs mode. .IP \fBterm\fP The \fBterm=\fP 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 .B = is tested against the full name of the terminal and the portion of the terminal name before the first \fB\-\fP. This allows .I sun to match both .I sun and .IR sun\-cmd , for instance. .IP \fBversion\fP The \fBversion\fP test may be used to perform comparisons against specific readline versions. The \fBversion\fP expands to the current readline version. The set of comparison operators includes .BR = , (and .BR == ), .BR != , .BR <= , .BR >= , .BR < , and .BR > . The version number supplied on the right side of the operator consists of a major version number, an optional decimal point, and an optional minor version (e.g., \fB7.1\fP). If the minor version is omitted, it is assumed to be \fB0\fP. The operator may be separated from the string \fBversion\fP and from the version number argument by whitespace. .IP \fBapplication\fP The \fBapplication\fP construct is used to include 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 a specific program. For instance, the following command adds a key sequence that quotes the current or previous word in \fBbash\fP: .sp 1 .RS .nf \fB$if\fP Bash # Quote the current or previous word "\eC-xq": "\eeb\e"\eef\e"" \fB$endif\fP .fi .RE .IP \fIvariable\fP The \fIvariable\fP construct provides simple equality tests for readline variables and values. The permitted comparison operators are \fI=\fP, \fI==\fP, and \fI!=\fP. The variable name must be separated from the comparison operator by whitespace; the operator may be separated from the value on the right hand side by whitespace. Both string and boolean variables may be tested. Boolean variables must be tested against the values \fIon\fP and \fIoff\fP. .RE .IP \fB$endif\fP This command, as seen in the previous example, terminates an \fB$if\fP command. .IP \fB$else\fP Commands in this branch of the \fB$if\fP directive are executed if the test fails. .IP \fB$include\fP This directive takes a single filename as an argument and reads commands and bindings from that file. For example, the following directive would read \fI/etc/inputrc\fP: .sp 1 .RS .nf \fB$include\fP \^ \fI/etc/inputrc\fP .fi .RE .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. To search backward in the history for a particular string, type \fBC\-r\fP. Typing \fBC\-s\fP searches forward through the history. The characters present in the value of the \fBisearch-terminators\fP variable are used to terminate an incremental search. If that variable has not been assigned a value the \fIEscape\fP and \fBC\-J\fP characters will terminate an incremental search. \fBC\-G\fP 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. .PP To find other matching entries in the history list, type \fBC\-s\fP or \fBC\-r\fP 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 newline will terminate the search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing. .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 be 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. .PP In the following descriptions, \fIpoint\fP refers to the current cursor position, and \fImark\fP refers to a cursor position saved by the \fBset\-mark\fP command. The text between the point and mark is referred to as the \fIregion\fP. .SS Commands for Moving .PP .PD 0 .TP .B beginning\-of\-line (C\-a) Move to the start of the current line. .TP .B end\-of\-line (C\-e) Move to the end of the line. .TP .B forward\-char (C\-f) Move forward a character. .TP .B backward\-char (C\-b) Move back a character. .TP .B forward\-word (M\-f) Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits). .TP .B backward\-word (M\-b) Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits). .TP .B previous\-screen\-line Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width. .TP .B next\-screen\-line Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if the length of the current Readline line is not greater than the length of the prompt plus the screen width. .TP .B clear\-screen (C\-l) Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the screen. .TP .B redraw\-current\-line Refresh the current line. .PD .SS Commands for Manipulating the History .PP .PD 0 .TP .B accept\-line (Newline, Return) Accept the line regardless of where the cursor is. If this line is non-empty, it may be added to the history list for future recall with \fBadd_history()\fP. If the line is a modified history line, the history line is restored to its original state. .TP .B previous\-history (C\-p) Fetch the previous command from the history list, moving back in the list. .TP .B next\-history (C\-n) Fetch the next command from the history list, moving forward in the list. .TP .B beginning\-of\-history (M\-<) Move to the first line in the history. .TP .B end\-of\-history (M\->) Move to the end of the input history, i.e., the line currently being entered. .TP .B 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. .TP .B forward\-search\-history (C\-s) Search forward starting at the current line and moving `down' through 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. .TP .B non\-incremental\-forward\-search\-history (M\-n) Search forward through the history using a non-incremental search for a string supplied by the user. .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 cursor position (the \fIpoint\fP). The search string must match at the beginning of a history line. This is a non-incremental search. .TP .B history\-search\-forward Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. .TP .B history\-substring\-search\-backward Search backward through the history for the string of characters between the start of the current line and the current cursor position (the \fIpoint\fP). The search string may match anywhere in a history line. This is a non-incremental search. .TP .B history\-substring\-search\-forward Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. .TP .B yank\-nth\-arg (M\-C\-y) Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument .IR n , 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. Once the argument \fIn\fP is computed, the argument is extracted as if the "!\fIn\fP" history expansion had been specified. .TP .B yank\-last\-arg (M\-.\^, M\-_\^) Insert the last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly like \fByank\-nth\-arg\fP. Successive calls to \fByank\-last\-arg\fP move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, as if the "!$" history expansion had been specified. .PD .SS Commands for Changing Text .PP .PD 0 .TP .B \fIend\-of\-file\fP (usually C\-d) The character indicating end-of-file as set, for example, by .if t \f(CWstty\fP. .if n ``stty''. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline interprets it as the end of input and returns .SM .BR EOF . .TP .B delete\-char (C\-d) Delete the character at point. If this function is bound to the same character as the tty \fBEOF\fP character, as \fBC\-d\fP commonly is, see above for the effects. .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. .TP .B forward\-backward\-delete\-char Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. .TP .B quoted\-insert (C\-q, C\-v) Add the next character that you type to the line verbatim. This is how to insert characters like \fBC\-q\fP, for example. .TP .B tab\-insert (M-TAB) Insert a tab character. .TP .B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...) Insert the character typed. .TP .B transpose\-chars (C\-t) Drag the character before point forward over the character at point, moving point forward as well. If point is at the end of the line, then this transposes the two characters before point. Negative arguments have no effect. .TP .B transpose\-words (M\-t) Drag the word before point past the word after point, moving point over that word as well. If point is at the end of the line, this transposes the last two words on the line. .TP .B upcase\-word (M\-u) Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move point. .TP .B downcase\-word (M\-l) Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move point. .TP .B capitalize\-word (M\-c) Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move point. .TP .B overwrite\-mode Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only \fBemacs\fP mode; \fBvi\fP mode does overwrite differently. Each call to \fIreadline()\fP starts in insert mode. In overwrite mode, characters bound to \fBself\-insert\fP replace the text at point rather than pushing the text to the right. Characters bound to \fBbackward\-delete\-char\fP replace the character before point with a space. By default, this command is unbound. .PD .SS Killing and Yanking .PP .PD 0 .TP .B kill\-line (C\-k) Kill the text from point to the end of the line. .TP .B backward\-kill\-line (C\-x Rubout) Kill backward to the beginning of the line. .TP .B unix\-line\-discard (C\-u) Kill backward from point to the beginning of the line. The killed text is saved on the kill-ring. .\" There is no real difference between this and backward-kill-line .TP .B kill\-whole\-line Kill all characters on the current line, no matter where point is. .TP .B kill\-word (M\-d) Kill from point 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 \fBforward\-word\fP. .TP .B backward\-kill\-word (M\-Rubout) Kill the word behind point. Word boundaries are the same as those used by \fBbackward\-word\fP. .TP .B unix\-word\-rubout (C\-w) Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. .TP .B unix\-filename\-rubout Kill the word behind point, using white space and the slash character as the word boundaries. The killed text is saved on the kill-ring. .TP .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. The word boundaries are the same as \fBbackward\-word\fP. .TP .B copy\-forward\-word Copy the word following point to the kill buffer. The word boundaries are the same as \fBforward\-word\fP. .TP .B yank (C\-y) Yank the top of the kill ring into the buffer at point. .TP .B yank\-pop (M\-y) Rotate the kill ring, and yank the new top. Only works following .B yank or .BR yank\-pop . .PD .SS Numeric Arguments .PP .PD 0 .TP .B 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. .TP .B 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 .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, a second time makes the argument count sixteen, and so on. .PD .SS Completing .PP .PD 0 .TP .B complete (TAB) Attempt to perform completion on the text before point. The actual completion performed is application-specific. .BR Bash , for instance, attempts completion treating the text as a variable (if the text begins with \fB$\fP), username (if the text begins with \fB~\fP), hostname (if the text begins with \fB@\fP), or command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted. .BR Gdb , on the other hand, allows completion of program functions and variables, and only attempts filename completion under certain circumstances. .TP .B possible\-completions (M\-?) List the possible completions of the text before point. When displaying completions, readline sets the number of columns used for display to the value of \fBcompletion-display-width\fP, the value of the environment variable .SM .BR COLUMNS , or the screen width, in that order. .TP .B insert\-completions (M\-*) Insert all completions of the text before point that would have been generated by \fBpossible\-completions\fP. .TP .B menu\-complete Similar to \fBcomplete\fP, but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of \fBmenu\-complete\fP steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of \fBbell\-style\fP) and the original text is restored. An argument of \fIn\fP moves \fIn\fP positions forward in the list of matches; a negative argument may be used to move backward through the list. This command is intended to be bound to \fBTAB\fP, but is unbound by default. .TP .B menu\-complete\-backward Identical to \fBmenu\-complete\fP, but moves backward through the list of possible completions, as if \fBmenu\-complete\fP had been given a negative argument. This command is unbound by default. .TP .B delete\-char\-or\-list Deletes the character under the cursor if not at the beginning or end of the line (like \fBdelete-char\fP). If at the end of the line, behaves identically to \fBpossible-completions\fP. .PD .SS Keyboard Macros .PP .PD 0 .TP .B start\-kbd\-macro (C\-x (\^) Begin saving the characters typed into the current keyboard macro. .TP .B end\-kbd\-macro (C\-x )\^) Stop saving the characters typed into the current keyboard macro and store the definition. .TP .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. .TP .B print\-last\-kbd\-macro () Print the last keyboard macro defined in a format suitable for the \fIinputrc\fP file. .PD .SS Miscellaneous .PP .PD 0 .TP .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) Abort the current editing command and ring the terminal's bell (subject to the setting of .BR bell\-style ). .TP .B do\-lowercase\-version (M\-A, M\-B, M\-\fIx\fP, ...) If the metafied character \fIx\fP is uppercase, run the command that is bound to the corresponding metafied lowercase character. The behavior is undefined if \fIx\fP is already lowercase. .TP .B prefix\-meta (ESC) Metafy the next character typed. .SM .B ESC .B f is equivalent to .BR Meta\-f . .TP .B undo (C\-_, C\-x C\-u) Incremental undo, separately remembered for each line. .TP .B revert\-line (M\-r) Undo all changes made to this line. This is like executing the .B undo command enough times to return the line to its initial state. .TP .B tilde\-expand (M\-&) Perform tilde expansion on the current word. .TP .B set\-mark (C\-@, M\-) Set the mark to the 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 skip\-csi\-sequence Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC\-[. If this sequence is bound to "\e[", keys producing such sequences will have no effect unless explicitly bound to a readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC\-[. .TP .B insert\-comment (M\-#) Without a numeric argument, the value of the readline .B comment\-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value of \fBcomment\-begin\fP, the value is inserted, otherwise the characters in \fBcomment-begin\fP are deleted from the beginning of the line. In either case, the line is accepted as if a newline had been typed. The default value of .B comment\-begin makes the current line a shell comment. If a numeric argument causes the comment character to be removed, the line will be executed by the shell. .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 output. 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 command mode, this causes a switch to .B emacs editing mode. .TP .B vi\-editing\-mode (M\-C\-j) When in .B emacs editing mode, this causes a switch to .B vi editing mode. .PD .SH DEFAULT KEY BINDINGS .LP The following is a list of the default emacs and vi bindings. Characters with the eighth bit set are written as M\-, and are referred to as .I metafied characters. The printable ASCII characters not mentioned in the list of emacs standard bindings are bound to the .B self\-insert function, which just inserts the given character into the input line. In vi insertion mode, all characters not specifically mentioned are bound to .BR self\-insert . Characters assigned to signal generation by .IR stty (1) or the terminal driver, such as C-Z or C-C, retain that function. Upper and lower case metafied characters are bound to the same function in the emacs mode meta keymap. The remaining characters are unbound, which causes readline to ring the bell (subject to the setting of the .B bell\-style variable). .SS Emacs Mode .RS +.6i .nf .ta 2.5i .sp Emacs Standard bindings .sp "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-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-kill-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-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 .RS +.6i .nf .ta 2.5i .sp .PP VI Insert Mode functions .sp "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-_" vi-undo "\^ " 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" vi-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 and Chet Ramey .TP \fIThe Gnu History Library\fP, Brian Fox and Chet Ramey .TP \fIbash\fP(1) .PD .SH FILES .PD 0 .TP .FN ~/.inputrc Individual \fBreadline\fP initialization file .PD .SH AUTHORS Brian Fox, Free Software Foundation .br bfox@gnu.org .PP Chet Ramey, Case Western Reserve University .br chet.ramey@case.edu .SH BUG REPORTS If you find a bug in .B readline, 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 .B readline library that you have. .PP Once you have determined that a bug actually exists, mail a bug report to \fIbug\-readline\fP@\fIgnu.org\fP. If you have a fix, you are welcome to mail that as well! Suggestions and `philosophical' bug reports may be mailed to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet newsgroup .BR gnu.bash.bug . .PP Comments and bug reports concerning this manual page should be directed to .IR chet.ramey@case.edu . .SH BUGS .PP It's too big and too slow. readline-8.0/doc/history.dvi000664 000436 000000 00000213600 13406221740 016175 0ustar00chetwheel000000 000000 ÷ƒ’À;è TeX output 2018.12.18:1144‹ÿÿÿÿŸòŽ ƒ33 þšà‘GóKÂÖN ¼j cmbx12ëKGNU–ÆqHistory“LibraryŽŽ‘GŸ 0‰±ž¸Ÿ šª’Õ@„ó6Kñ`y ó3 cmr10áEdition–¦f8.0,“for“ó7ßêexpansion‘%=implemenš²!ts“shell-lik˜e“quoting–%=con˜v˜en˜tions:‘Ja“bac˜kslash–%>can“bMÞe‘%=used“toŽ¡‘Gremo•²!v“e–ä+the“spMÞecial“handling“for“the“next“cš²!haracter;‘$êsingle“quotes“enclose“v˜erbatim“sequencesŽ¡‘Gof–€Jcš²!haracters,‘‡éand“can“bMÞe“used“to“inhibit‘€Ihistory“expansion;‘Œþand“c˜haracters“enclosed“withinŽ¡‘Gdouble–µ«quotes›µ¬ma²!y“bMÞe“sub‘›»ject˜to“history˜expansion,‘¹|since˜bac²!kslash“can“escapMÞe˜the“historyŽ¡‘Gexpansion–Žècš²!haracter,‘“šbut“single“quotes‘Žçma˜y“not,‘“›since›Žçthey“are“not“treated˜spMÞecially“withinŽ¡‘Gdouble‘¦fquotes.ŽŸ›¼‘GógÂÖN  #× cmbx12ëg1.1.1‘d(Ev•–áen“t‘íMDesignatorsŽŽŸ³3‘GáAn›ï€ev•²!en“t˜designator–ïis˜a˜reference˜to“a˜command˜line˜en²!try˜in“the˜history˜list.‘¹,Unless˜theŽ¡‘Greference–¦fis“absolute,“ev•²!en“ts–¦fare“relativš²!e“to“the“curren˜t“pMÞosition“in“the“history“list.Ž©Îï‘Gâ!‘4IáStart–ña“history›ðsubstitution,‘Texcept“when˜follo•²!w“ed›ñb“y˜a˜space,–Stab,“the˜end˜ofŽ¡‘Kâ:the–¦fline,“or“`â=á'.ޤÎð‘Gâ!ó=ßê“áin˜an²!y“ leŽ¡‘Gthat–ß?uses›ß>the“History˜library's“features.‘›{It˜supplies“extern˜declarations“for˜all“of˜the“library'sŽ¡‘Gpublic–¦ffunctions“and“v‘ÿdDariables,“and“declares“all“of“the“public“data“structures.ŽŸ®‘Gë]2.2‘™History‘f@StorageŽŽŸ33‘GáThe–¦fhistory“list“is“an“arraš²!y“of“history“en˜tries.‘ÝÝA“history“en˜try“is“declared“as“follo˜ws:ަ‘.ùœâtypedef–¿ªvoid“*histdata_t;ŽŸff‘.ùœtypedef–¿ªstruct“_hist_entry“{Ž¡‘:xðchar‘¿ª*line;Ž¡‘:xðchar‘¿ª*timestamp;Ž¡‘:xðhistdata_t‘¿ªdata;Ž¡‘.ùœ}‘¿ªHIST_ENTRY;ŽŸ§B‘!GáThe–¦fhistory“list“itself“migh²!t“therefore“bMÞe“declared“asަ‘.ùœâHIST_ENTRY‘¿ª**the_history_list;ަ‘!GáThe–¦fstate“of“the“History“library“is“encapsulated“in²!to“a“single“structure:ަ‘.ùœâ/*Ž¡‘4¹F*–¿ªA“structure“used“to“pass“around“the“current“state“of“the“history.Ž¡‘4¹F*/Ž¡‘.ùœtypedef–¿ªstruct“_hist_state“{Ž¡‘:xðHIST_ENTRY–¿ª**entries;“/*“Pointer“to“the“entries“themselves.“*/ŽŽŒ‹$ Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“History’Ö5ˆ5ŽŽŽ ƒ33 ý ÌÍ‘:xðâint–¿ªoffset;‘?E‘Gë]2.3‘™History‘f@F‘þ¦functionsŽŽŸ33‘GáThis–section“describMÞes›Žthe“calling“sequence“for˜the“v‘ÿdDarious“functions“expMÞorted˜b²!y“the“çgnuŽ¡‘GáHistory‘¦flibrary‘ÿe.ŽŸ)„‘Gëg2.3.1‘d(Initializing–íMHistory“and“State“Managemen–átŽŽŸ³3‘GáThis–¤Qsection“describMÞes“functions›¤Rused“to“initialize“and“manage“the“state˜of“the“History“libraryŽ¡‘Gwhen–¦fyš²!ou“w˜an˜t“to“use“the“history“functions“in“y˜our“program.Ž©†;’“z[F‘ÿeunction]ŽŽ‘Gó@ßêthe›e?history“list,‘”õremem²!bMÞering“only˜the“last˜åmax‘&áen²!tries.‘gThe“history˜list“willŽ¡‘.ùœconš²!tain–¦fonly“åmax‘gÅáen˜tries“at“a“time.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉunstifle_history‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáStop–H¨sti ing“the“history‘ÿe.‘¾žThis“returns“the“previously-set“maximš²!um“n˜um˜bMÞer“of“historyŽ¡‘.ùœenš²!tries–7 (as‘7set“b˜y“âstifle_history()á).‘¸ÀThe“v‘ÿdDalue‘7is“pMÞositiv˜e›7if“the“history˜w²!as“sti ed,Ž¡‘.ùœnegativš²!e–¦fif“it“w˜asn't.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉhistory_is_stifled‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturns–¦fnon-zero“if“the“history“is“sti ed,“zero“if“it“is“not.ŽŸ+ˆ‘Gëg2.3.3‘d(Information–íMAbiout“the“History“ListŽŽŸ³3‘GáThese–¦ffunctions“return“information“abMÞout“the“enš²!tire“history“list“or“individual“list“en˜tries.ŽŸŠD’“z[F‘ÿeunction]ŽŽ‘Gë@HIST_ENTRY–LÉ**“history_list‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–©ha“âNULL“áterminated“arraš²!y“of‘©iâHIST_ENTRY‘¦f*“áwhic˜h“is“the“curren˜t“input“history‘ÿe.Ž¡‘.ùœElemen²!t–¦f0“of“this“list“is“the“bMÞeginning“of“time.‘ÝÝIf“there“is“no“history‘ÿe,“return“âNULLá.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉwhere_history‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturns–¦fthe“o set“of“the“currenš²!t“history“elemen˜t.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@HIST_ENTRY–LÉ*“current_history‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–ûûthe“history“enš²!try‘ûüat“the“curren˜t“pMÞosition,‘as“determined“b˜y“âwhere_history()á.Ž¡‘.ùœIf–¦fthere“is“no“enš²!try“there,“return“a“âNULL“ápMÞoin˜ter.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@HIST_ENTRY–LÉ*“history_get‘yšæ(ëAinªªt‘o setæ)Ž¡‘.ùœáReturn–ÊLthe›ÊMhistory“en²!try“at“pMÞosition˜åo setá.‘IThe˜range“of“v›ÿdDalid“v˜alues‘ÊMof“åo set‘LástartsŽ¡‘.ùœat–½çâhistory_base“áand›½èends“at“åhistory‘Ä>‰x³HøŽ‘Ñtlength“á-“1“(see˜Section“2.4“[History“V‘ÿeariables],Ž¡‘.ùœpage–$)9).‘²tIf“there“is“no“en²!try“there,›>6or“if“åo set‘a)áis“outside“the“v‘ÿdDalid“range,˜return“a“âNULLŽ¡‘.ùœápMÞoin²!ter.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@time_t‘LÉhistory_get_time‘yšæ(ëAHIST‘׉„F™œŽ‘G¼ENTR‘þÿÿY‘*enªªtryæ)Ž¡‘.ùœáReturn–ûØthe“time“stamp“assoMÞciated“with“the“history‘ûÙenš²!try“åen˜tryá.‘Þ3If“the“timestamp“isŽ¡‘.ùœmissing–¦for“in²!v‘ÿdDalid,“return“0.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉhistory_total_bytes‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn›PHthe‘PIn•²!um“bMÞer˜of˜b“ytes˜that–PIthe˜primary˜history“en²!tries˜are˜using.‘Á)This˜functionŽ¡‘.ùœreturns–¦fthe“sum“of“the“lengths“of“all“the“lines“in“the“history‘ÿe.ŽŽŒ‹<Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“History’Ö5ˆ7ŽŽŽ ƒ33 ý ÌÍ‘Gëg2.3.4‘d(Mo–áving–íMAround“the“History“ListŽŽŸ³3‘GáThese–¦ffunctions“alloš²!w“the“curren˜t“index“in˜to“the“history“list“to“bMÞe“set“or“c˜hanged.Ž©„’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉhistory_set_pos‘yšæ(ëAinªªt‘pUVosæ)ޤ 33‘.ùœáSet–fthe›fcurren²!t“history˜o set“to“åpMÞosá,‘•ûan“absolute˜index“in²!to˜the“list.‘ÜReturns˜1“onŽ¡‘.ùœsuccess,–¦f0“if“åpšMÞos‘èáis“less“than“zero“or“greater“than“the“n•²!um“b˜er–¦fof“history“en²!tries.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@HIST_ENTRY–LÉ*“previous_history‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáBacš²!k–u¦up‘u¥the“curren˜t“history›u¥o set“to˜the“previous“history˜en²!try‘ÿe,‘fand“return˜a“pMÞoin²!terŽ¡‘.ùœto–¦fthat“enš²!try‘ÿe.‘ÝÝIf“there“is“no“previous“en˜try‘ÿe,“return“a“âNULL“ápMÞoin˜ter.ŽŸ„’“z[F‘ÿeunction]ŽŽ‘Gë@HIST_ENTRY–LÉ*“next_history‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáIf–xLthe›xMcurren²!t“history˜o set“refers“to˜a“v‘ÿdDalid˜history“en•²!try‘ÿe,‘´¸incremen“t‘xLthe˜curren“t‘xLhistoryŽ¡‘.ùœo set.‘¾If–Gthe“pMÞossibly-incremenš²!ted“history“o set‘Grefers“to“a“v‘ÿdDalid“history“en˜try‘ÿe,‘ZreturnŽ¡‘.ùœa–¦fpMÞoinš²!ter“to“that“en˜try;“otherwise,“return“a“âBNULL“ápMÞoin˜ter.ŽŸ‹D‘Gëg2.3.5‘d(Searc–áhing–íMthe“History“ListŽŽŸ³3‘GáThese–]functions“alloš²!w“searc˜hing“of“the“history“list“for“en˜tries“con˜taining“a“spMÞeci c“string.Ž¡‘GSearc•²!hing›LØma“y‘L×b•MÞe˜p“erformed‘L×b“oth˜forw•²!ard‘L×and˜bac“kw“ard˜from‘L×the˜curren“t‘L×history˜pMÞosition.Ž¡‘GThe–Ãsearcš²!h“ma˜y“bMÞe“åanc˜horedá,‘ÊÅmeaning“that“the“string“m˜ust“matc˜h“at“the“bMÞeginning“of“theŽ¡‘Ghistory‘¦fen²!try‘ÿe.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉhistory_search‘yšæ(ëAconst–cšªªhar“*string,“in˜t“directionæ)Ž¡‘.ùœáSearc²!h–wSthe“history›wRfor“åstringá,‘€½starting“at“the˜curren²!t“history“o set.‘Î,If˜ådirection“áis“lessŽ¡‘.ùœthan–ÍY0,‘then“the›ÍXsearc²!h“is˜through“previous˜en²!tries,‘otherwise˜through“subsequen²!tŽ¡‘.ùœenš²!tries.‘â÷If–¨åstring‘˜2áis“found,‘¨†then“the‘¨curren˜t“history“index“is›¨set“to“that˜history“en²!try‘ÿe,Ž¡‘.ùœand–ºthe“v‘ÿdDalue›¹returned“is“the“o set˜in“the“line“of˜the“enš²!try“where“åstring‘óÑáw˜as“found.Ž¡‘.ùœOtherwise,–¦fnothing“is“c²!hanged,“and“a“-1“is“returned.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉhistory_search_prefix‘yšæ(ëAconst–cšªªhar“*string,“in˜t“directionæ)Ž¡‘.ùœáSearc²!h–ß2the›ß1history“for“åstringá,‘-dstarting˜at“the“curren²!t˜history“o set.‘ˆ@The˜searc²!h“isŽ¡‘.ùœanc•²!hored:‘Τmatc“hing›‡ôlines‘‡óm“ust˜bMÞegin˜with˜åstringá.‘Ó·If˜ådirection‘‡óáis˜less˜than˜0,‘Ž then˜theŽ¡‘.ùœsearcš²!h–Áâis“through‘Áãprevious“en˜tries,‘ÈÁotherwise“through‘Áãsubsequen˜t“en˜tries.‘0RIf“åstring‘±úáisŽ¡‘.ùœfound,‘  then–÷athe›÷bcurren²!t“history“index“is˜set“to“that˜en²!try‘ÿe,‘  and“the“return“v‘ÿdDalue˜is“0.Ž¡‘.ùœOtherwise,–¦fnothing“is“c²!hanged,“and“a“-1“is“returned.ŽŸ„’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉhistory_search_pos‘yšæ(ëAconst–cšªªhar“*string,“in˜t“direction,“in˜t“pUVosæ)Ž¡‘.ùœáSearc²!h–×for“åstring‘ ïáin“the“history“list,›:sstarting‘Öat“åpMÞosá,˜an“absolute“index“in²!to“the“list.Ž¡‘.ùœIf–TÓådirection‘TÒáis“negativš²!e,‘€mthe“searc˜h‘TÒproMÞceeds“bac˜kw˜ard‘TÒfrom“åpMÞosá,‘€motherwise“forw˜ard.Ž¡‘.ùœReturns–Jsthe“absolute“index“of‘Jrthe“history“elemenš²!t“where“åstring‘:‹áw˜as“found,‘³uor“-1Ž¡‘.ùœotherwise.ŽŸ‹D‘Gëg2.3.6‘d(Managing–íMthe“History“FileŽŽŸ³3‘GáThe–1History“library›1can“read“the“history“from“and˜write“it“to“a“ le.‘¶ÃThis“section“doMÞcumen²!tsŽ¡‘Gthe–¦ffunctions“for“managing“a“history“ le.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉread_history‘yšæ(ëAconst–cªªhar“* lenameæ)Ž¡‘.ùœáAdd›Žgthe‘Žfcon•²!ten“ts˜of˜å lename–+máto˜the˜history˜list,‘“3a˜line‘Žfat˜a˜time.‘ÕÝIf˜å lename“áis˜âNULLá,Ž¡‘.ùœthen–¦fread“from“â~/.historyá.‘ÝÝReturns“0“if“successful,“or“âerrno“áif“not.ŽŽŒ‹I Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“History’Ö5ˆ8ŽŽŽ ƒ33 ý ÌÍ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉread_history_range‘yšæ(ëAconst–cšªªhar“* lename,“in˜t“from,“in˜t“toæ)ޤ 33‘.ùœáRead–Y a“range›Y of“lines“from“å lenameá,‘h„adding“them“to˜the“history“list.‘ÄStart“reading“atŽ¡‘.ùœline–&=åfrom“áand“end‘&>at“åtoá.›³%If“åfrom“áis“zero,‘?ßstart“at“the“bMÞeginning.˜If“åto‘³áis“less“than“åfromá,Ž¡‘.ùœthen–ù«read“un²!til“the“end“of“the“ le.‘׫If“å lename‘–²áis“âNULLá,‘|then“read“from“â~/.historyá.Ž¡‘.ùœReturns–¦f0“if“successful,“or“âerrno“áif“not.Ž©UV’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉwrite_history‘yšæ(ëAconst–cªªhar“* lenameæ)Ž¡‘.ùœáW‘ÿerite–#%the“currenš²!t“history“to‘#$å lenameá,‘BUo˜v˜erwriting“å lename‘À,áif‘#$necessary‘ÿe.‘TIf“å lenameŽ¡‘.ùœáis–B¹âNULLá,‘V©then›Bºwrite“the˜history“list˜to“â~/.historyá.‘¼¤Returns“0˜on“success,‘V©or˜âerrno“áonŽ¡‘.ùœa–¦fread“or“write“error.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉappend_history‘yšæ(ëAin•ªªt›nelemen“ts,˜const˜c“har˜* lenameæ)Ž¡‘.ùœáAppMÞend–)‚the“last›)ånelemen²!ts‘áof“the“history“list“to˜å lenameá.‘g1If“å lename‘Ɖáis˜âNULLá,‘JIthenŽ¡‘.ùœappMÞend–¦fto“â~/.historyá.‘ÝÝReturns“0“on“success,“or“âerrno“áon“a“read“or“write“error.ŽŸUU’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉhistory_truncate_file‘yšæ(ëAconst–cšªªhar“* lename,“in˜t“nlinesæ)Ž¡‘.ùœáT‘ÿeruncate–Ÿáthe“history“ le“å lenameá,‘Þ@lea²!ving“only“the“last“ånlines‘cálines.‘ÊOIf“å lename‘<èáisŽ¡‘.ùœâNULLá,–¦fthen“â~/.history“áis“truncated.‘ÝÝReturns“0“on“success,“or“âerrno“áon“failure.ŽŸ‘Gëg2.3.7‘d(History‘íMExpansionŽŽŸ³3‘GáThese–¦ffunctions“implemen²!t“history“expansion.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉhistory_expand‘yšæ(ëAcšªªhar–*string,“c˜har“**outputæ)Ž¡‘.ùœáExpand–!)åstringá,‘?Ùplacing“the“result“inš²!to“åoutputá,‘?Úa‘!(pMÞoin˜ter“to“a“string“(see“Section“1.1Ž¡‘.ùœ[History–¦fIn²!teraction],“page“1).‘ÝÝReturns:Ž©Iõ‘.ùœâ0‘4IáIf–Åno›Äexpansions“toMÞok˜place“(or,‘¶if˜the“only˜c²!hange“in˜the“text˜w²!as“theŽ¡‘hÊremoš²!v‘ÿdDal‘œwof–œxescapMÞe“c˜haracters–œwpreceding“the›œxhistory“expansion˜c²!haracter);ަ‘.ùœâ1‘4Iáif–¦fexpansions“did“tak²!e“place;ަ‘.ùœâ-1‘.QŸáif–¦fthere“w²!as“an“error“in“expansion;ަ‘.ùœâ2‘4Iáif–O$the›O#returned“line˜should“bMÞe˜displa•²!y“ed,–`—but‘O$not˜executed,“as–O$with˜the“â:pŽ¡‘hÊámošMÞdi er–¦f(see“Section“1.1.3“[Mo˜di ers],“page“2).ަ‘.ùœIf–¦fan“error“oMÞccurred“in“expansion,“then“åoutput‘ãfáconš²!tains“a“descriptiv˜e“error“message.ŽŸUU’“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“get_history_event‘yšæ(ëAconst–cšªªhar“*string,“in˜t“*cindex,“in˜tŽ¡‘DGqcªªharæ)Ž¡‘.ùœáReturns–vøthe“text“of‘vùthe“history“ev•²!en“t–vøbMÞeginning“at“åstring‘gâ+“å*cindexá.‘ O”å*cindex‘8WáisŽ¡‘.ùœmošMÞdi ed–…to“p˜oinš²!t“to‘…after“the“ev˜en˜t“spMÞeci er.‘ÒÀA˜t“function“en˜try‘ÿe,‘‹»åcindex‘FnápMÞoin˜ts“to“theŽ¡‘.ùœindex›Nãin²!to–Näåstring‘>ûáwhere“the˜history“ev•²!en“t˜sp•MÞeci cation˜b“egins.‘×Våqc•²!har‘ áis‘Näa˜c“haracterŽ¡‘.ùœthat–:Xis“allo•²!w“ed–:Xto“end“the“ev•²!en“t‘:YspMÞeci cation–:Xin“addition“to“the“\normal"“terminatingŽ¡‘.ùœc²!haracters.Ž©UV’“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ**“history_tokenize‘yšæ(ëAconst–cªªhar“*stringæ)Ž¡‘.ùœáReturn–µ‘an“arraš²!y‘µ’of“tok˜ens“parsed“out“of–µ’åstringá,‘¹[m˜uc˜h“as–µ‘the“shell“migh˜t.‘ _The“tok˜ensŽ¡‘.ùœare–«6split›«7on“the˜c²!haracters“in˜the“åhistory‘Ä>‰x³HøŽ–Ñtw²!ord‘Ä>‰x³HøŽ“delimiters‘¹áv‘ÿdDariable,‘¬jand˜shell‘«6quotingŽ¡‘.ùœcon•²!v“en“tions–¦fare“obšMÞey²!ed“as“describ˜ed“b˜elo²!w.ަ’“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“history_arg_extract‘yšæ(ëAinšªªt– rst,“in˜t“last,“const“c˜har“*stringæ)Ž¡‘.ùœáExtract–ÙHa›ÙGstring“segmen²!t“consisting˜of“the“å rst‘Gáthrough“ålast‘Háargumen•²!ts˜presen“t‘ÙHinŽ¡‘.ùœåstringá.‘ÝÝArgumen²!ts–¦fare“split“using“âhistory_tokenizeá.ŽŽŒ‹ XØŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“History’Ö5ˆ9ŽŽŽ ƒ33 ý ÌÍ‘Gë]2.4‘™History‘f@V‘þ¦fariablesŽŽŸ33‘GáThis–:‚section“describšMÞes“the“externally-visible“v‘ÿdDariables“exp˜orted“b²!y“the“çgnu“áHistory“Library‘ÿe.Ž©üý’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉhistory_baseޤ 33‘.ùœáThe–¦flogical“o set“of“the“ rst“en²!try“in“the“history“list.ŽŸüþ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉhistory_lengthŽ¡‘.ùœáThe›¦fn•²!um“bMÞer˜of˜en“tries˜curren“tly˜stored˜in˜the˜history˜list.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉhistory_max_entriesŽ¡‘.ùœáThe›…Zmaxim•²!um‘…Yn“um“bMÞer˜of˜history›…Yen“tries.‘ z¹This˜m“ust–…ZbMÞe“c²!hanged˜using“âstifle_Ž¡‘.ùœhistory()á.ŽŸüþ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉhistory_write_timestampsŽ¡‘.ùœáIf–\ˆnon-zero,‘Êtimestamps›\‡are“written“to˜the“history˜ le,‘Êso˜they“can˜bMÞe“preserv²!edŽ¡‘.ùœbMÞet•²!w“een–¦fsessions.‘ÝÝThe“default“v‘ÿdDalue“is“0,“meaning“that“timestamps“are“not“sa•²!v“ed.ŽŸ!!‘.ùœThe–üúcurrenš²!t“timestamp“format“uses‘üûthe“v‘ÿdDalue“of“åhistory‘Ä>‰x³HøŽ–Ñtcommen˜t‘Ä>‰x³HøŽ“c˜har‘Æ#áto‘üúdelimitŽ¡‘.ùœtimestamp–£en²!tries›¤in“the“history˜ le.‘ +•If“that“v‘ÿdDariable“doMÞes˜not“ha•²!v“e–£a˜v‘ÿdDalue“(theŽ¡‘.ùœdefault),–¦ftimestamps“will“not“bMÞe“written.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@char‘LÉhistory_expansion_charŽ¡‘.ùœáThe–;ycš²!haracter“that“in˜troMÞduces‘;xa“history“ev˜en˜t.›The‘;xdefault“is“`â!á'.˜Setting‘;xthis“to“0Ž¡‘.ùœinhibits–¦fhistory“expansion.ŽŸüþ’–3[V‘ÿeariable]ŽŽ‘Gë@char‘LÉhistory_subst_charŽ¡‘.ùœáThe–ä|cš²!haracter‘ä}that“in˜v˜ok˜es“w˜ord“substitution›ä}if“found“at“the˜start“of“a“line.‘˜ TheŽ¡‘.ùœdefault–¦fis“`â^á'.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@char‘LÉhistory_comment_charŽ¡‘.ùœáDuring–‰átokš²!enization,‘¿if“this“c˜haracter“is“seen“as“the“ rst“c˜haracter“of“a“w˜ord,‘¿thenŽ¡‘.ùœit–4and›4all“subsequen•²!t˜c“haracters–4up“to˜a“newline˜are“ignored,‘—ysuppressing“historyŽ¡‘.ùœexpansion–¦ffor“the“remainder“of“the“line.‘ÝÝThis“is“disabled“b²!y“default.ŽŸüþ’–3[V‘ÿeariable]ŽŽ‘Gë@char–LÉ*“history_word_delimitersŽ¡‘.ùœáThe–M÷cš²!haracters“that‘Møseparate“tok˜ens“for“âhistory_tokenize()á.‘ÀcThe“default‘Møv‘ÿdDalue“is“â"Ž¡‘.ùœ\t\n()<>;&|"á.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@char–LÉ*“history_search_delimiter_charsŽ¡‘.ùœáThe– îlist› ïof“additional“c•²!haracters˜whic“h– îcan“delimit˜a“history“searc²!h˜string,‘; in“additionŽ¡‘.ùœto–¦fspace,“T‘ÿeAB,“`â:á'“and“`â?á'“in“the“case“of“a“substring“searcš²!h.‘ÝÝThe“default“is“empt˜y‘ÿe.ŽŸüþ’–3[V‘ÿeariable]ŽŽ‘Gë@char–LÉ*“history_no_expand_charsŽ¡‘.ùœáThe–”klist“of“cš²!haracters“whic˜h“inhibit‘”lhistory“expansion“if“found“immediately“follo˜wingŽ¡‘.ùœåhistory‘Ä>‰x³HøŽ–Ñtexpansion‘Ä>‰x³HøŽ“c²!hará.‘ÝÝThe–¦fdefault“is“space,“tab,“newline,“carriage“return,“and“`â=á'.ަ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉhistory_quotes_inhibit_expansionŽ¡‘.ùœáIf– ånon-zero,‘%Dthe› ähistory“expansion˜coMÞde“implemen•²!ts˜shell-lik“e‘ åquoting:‘¨Úsingle-quotedŽ¡‘.ùœwš²!ords–ware“not“scanned‘vfor“the“history“expansion“c˜haracter“or‘vthe“history“commen˜tŽ¡‘.ùœc•²!haracter,‘‰•and›(ódouble-quoted‘(òw“ords˜ma“y‘(òha“v“e˜history‘(òexpansion˜pMÞerformed,‘‰•sinceŽ¡‘.ùœsingle–¦fquotes“are“not“spMÞecial“within“double“quotes.‘ÝÝThe“default“v‘ÿdDalue“is“0.ŽŽŒ‹ huŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“History’лî10ŽŽŽ ƒ33 ý ÌÍ’–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉhistory_quoting_stateޤ 33‘.ùœáAn–W±application›W²ma²!y“set˜this“v‘ÿdDariable“to˜indicate“that“the˜curren²!t“line˜bMÞeing“expandedŽ¡‘.ùœis–#ºsub‘›»ject“to“existing“quoting.‘²NIf“set“to“`â'á',‘=Üthe“history“expansion“function“will“assumeŽ¡‘.ùœthat–CTthe“line“is›CUsingle-quoted“and“inhibit“expansion“un²!til“it˜reads“an“unquoted“closingŽ¡‘.ùœsingle–Ô'quote;‘kif›Ô(set“to˜`â"á',‘—history˜expansion“will˜assume“the˜line“is˜double“quotedŽ¡‘.ùœun²!til– ~it“reads“an› }unquoted“closing“double“quote.‘ªIf“set“to˜zero,›+Fthe“default,˜the“historyŽ¡‘.ùœexpansion–ˆsfunction“will“assume›ˆrthe“line“is“not“quoted“and˜treat“quote“c²!haracters“withinŽ¡‘.ùœthe–xline›wÿas“describ•MÞed˜ab“o•²!v“e.‘ÎfThis–xis˜only“e ectiv²!e˜if“åhistory‘Ä>‰x³HøŽ–Ñtquotes‘Ä>‰x³HøŽ“inhibit‘Ä>‰x³HøŽ“expansionŽ¡‘.ùœáis‘¦fset.ŽŸ‚Ù’–3[V‘ÿeariable]ŽŽ‘Gë@rl_linebuf_func_t–LÉ*“history_inhibit_expansion_functionŽ¡‘.ùœáThis–?should›>bMÞe“set“to˜the“address˜of“a“function˜that“takš²!es“t˜w˜o‘>argumen˜ts:‘‘Ža“âchar‘¦f*Ž¡‘.ùœá(åstring‘ðá)–0nand“an›0oâint“áindex“in²!to“that˜string“(åi‘”ƒá).‘¶ŠIt˜should“return“a“non-zero˜v‘ÿdDalue“if“theŽ¡‘.ùœhistory–õexpansion›ôstarting“at˜åstring[i]‘àöáshould˜not“b•MÞe˜p“erformed;‘Žzero–õif˜the“expansionŽ¡‘.ùœshould–ÖObMÞe›ÖPdone.‘m™It“is˜in²!tended“for˜use“b²!y˜applications“lik²!e“Bash˜that“use˜the“historyŽ¡‘.ùœexpansion–¦fc²!haracter“for“additional“purpMÞoses.‘ÝÝBy“default,“this“v‘ÿdDariable“is“set“to“âNULLá.ŽŸ»½‘Gë]2.5‘™History–f@Programming“ExampleŽŽŸ33‘GáThe–¦ffollo²!wing“program“demonstrates“simple“use“of“the“çgnu“áHistory“Library‘ÿe.ŽŸ§Ó‘.ùœóߤN cmtt9É#include‘¹–ޤ €‘.ùœ#include‘¹–Ž©‘.ùœmain–¹–(argc,“argv)Ž¡‘F™Šint‘¹–argc;Ž¡‘F™Šchar‘¹–**argv;Ž¡‘.ùœ{Ž¡‘8lÈchar–¹–line[1024],“*t;Ž¡‘8lÈint–¹–len,“done“=“0;ަ‘8lÈline[0]–¹–=“0;ަ‘8lÈusing_history‘¹–();Ž¡‘8lÈwhile‘¹–(!done)Ž¡‘Aßô{Ž¡‘KS printf–¹–("history$“");Ž¡‘KS fflush‘¹–(stdout);Ž¡‘KS t–¹–=“fgets“(line,“sizeof“(line)“-“1,“stdin);Ž¡‘KS if–¹–(t“&&“*t)Ž¡‘TÆL{Ž¡‘^9xlen–¹–=“strlen“(t);Ž¡‘^9xif–¹–(t[len“-“1]“==“'\n')Ž¡‘g¬¤t[len–¹–-“1]“=“'\0';Ž¡‘TÆL}ަ‘KS if‘¹–(!t)Ž¡‘TÆLstrcpy–¹–(line,“"quit");ަ‘KS if‘¹–(line[0])Ž¡‘TÆL{Ž¡‘^9xchar‘¹–*expansion;Ž¡‘^9xint‘¹–result;ަ‘^9xresult–¹–=“history_expand“(line,“&expansion);ŽŽŒ‹ uÆŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“History’лî11ŽŽŽ ƒ33 ý ÌÍ‘^9xÉif‘¹–(result)ޤ €‘g¬¤fprintf–¹–(stderr,“"%s\n",“expansion);Ž©‘^9xif–¹–(result“<“0“||“result“==“2)Ž¡‘g¬¤{Ž¡‘qÐfree‘¹–(expansion);Ž¡‘qÐcontinue;Ž¡‘g¬¤}ަ‘^9xadd_history‘¹–(expansion);Ž¡‘^9xstrncpy–¹–(line,“expansion,“sizeof“(line)“-“1);Ž¡‘^9xfree‘¹–(expansion);Ž¡‘TÆL}ަ‘KS if–¹–(strcmp“(line,“"quit")“==“0)Ž¡‘TÆLdone–¹–=“1;Ž¡‘KS else–¹–if“(strcmp“(line,“"save")“==“0)Ž¡‘TÆLwrite_history‘¹–("history_file");Ž¡‘KS else–¹–if“(strcmp“(line,“"read")“==“0)Ž¡‘TÆLread_history‘¹–("history_file");Ž¡‘KS else–¹–if“(strcmp“(line,“"list")“==“0)Ž¡‘TÆL{Ž¡‘^9xregister–¹–HIST_ENTRY“**the_list;Ž¡‘^9xregister–¹–int“i;ަ‘^9xthe_list–¹–=“history_list“();Ž¡‘^9xif‘¹–(the_list)Ž¡‘g¬¤for–¹–(i“=“0;“the_list[i];“i++)Ž¡‘qÐprintf–¹–("%d:“%s\n",“i“+“history_base,“the_list[i]->line);Ž¡‘TÆL}Ž¡‘KS else–¹–if“(strncmp“(line,“"delete",“6)“==“0)Ž¡‘TÆL{Ž¡‘^9xint‘¹–which;Ž¡‘^9xif–¹–((sscanf“(line“+“6,“"%d",“&which))“==“1)Ž¡‘g¬¤{Ž¡‘qÐHIST_ENTRY–¹–*entry“=“remove_history“(which);Ž¡‘qÐif‘¹–(!entry)Ž¡‘z’üfprintf–¹–(stderr,“"No“such“entry“%d\n",“which);Ž¡‘qÐelseŽ¡‘z’ü{Ž¡’„(free‘¹–(entry->line);Ž¡’„(free‘¹–(entry);Ž¡‘z’ü}Ž¡‘g¬¤}Ž¡‘^9xelseŽ¡‘g¬¤{Ž¡‘qÐfprintf–¹–(stderr,“"non-numeric“arg“given“to“`delete'\n");Ž¡‘g¬¤}Ž¡‘TÆL}Ž¡‘Aßô}Ž¡‘.ùœ}ŽŽŒ‹ ÆŸò’¸¼Ëá12ŽŽŽ ƒ33 ý ÌÍ‘GëTApp›Š=endix‘záA‘ ¸QGNU–z³F‘þaGree“Do˜cumen‘ÿuÂtation“LicenseŽŽŸƒª’£¤AáV‘ÿeersion–¦f1.3,“3“No•²!v“em“bMÞer‘¦f2008Ž©Q‘.ùœCop•²!yrigh“t‘±ž«‚cŽŽŽ‘¦fê ŽŽŽŽ‘@á2000,–¦f2001,“2002,“2007,“2008“F›ÿeree“Soft•²!w“are–¦fF˜oundation,“Inc.ޤ 33‘.ùœâhttp://fsf.org/ŽŸff‘.ùœáEv•²!ery“one–¦fis“pMÞermitted“to“copš²!y“and“distribute“v˜erbatim“copiesŽ¡‘.ùœof–¦fthis“license“doMÞcumenš²!t,“but“c˜hanging“it“is“not“allo˜w˜ed.ަ‘-0.Ž‘'¿«PREAMBLEަ‘'¿«The–vQpurpMÞose›vRof“this˜License“is˜to“mak²!e“a˜man²!ual,›ªLtextb•MÞo“ok,˜or–vQother‘vRfunctional“andŽ¡‘'¿«useful–žïdoMÞcumen²!t›žîåfree‘;öáin“the“sense˜of“freedom:‘Ú!to“assure“ev•²!ery“one‘žïthe˜e ectiv“e‘žïfreedomŽ¡‘'¿«to–Æ9cop²!y›Æ:and“redistribute“it,‘Î.with“or˜without“moMÞdifying“it,‘Î.either“commercially˜or“non-Ž¡‘'¿«commercially–ÿe.‘cÏSecondarily“,‘Hàthis–(aLicense›(bpreserv²!es“for“the˜author“and“publisher˜a“w•²!a“yŽ¡‘'¿«to–W9get“credit›W8for“their“w²!ork,‘ƒmwhile“not“bMÞeing“considered˜respšMÞonsible“for“mo˜di cationsŽ¡‘'¿«made–¦fb²!y“others.ަ‘'¿«This–È/License›È0is“a“kind“of˜\cop•²!yleft",‘ô whic“h–È/means˜that“deriv‘ÿdDativš²!e“w˜orks“of‘È0the“doMÞcumen˜tŽ¡‘'¿«m•²!ust›õthemselv“es–ôbMÞe˜free˜in˜the“same˜sense.‘ ‰It˜complemen²!ts˜the“GNU‘ÙGeneral˜PublicŽ¡‘'¿«License,–¦fwhicš²!h“is“a“cop˜yleft“license“designed“for“free“soft˜w˜are.ަ‘'¿«W‘ÿee›‹#ha•²!v“e˜designed˜this˜License˜in˜order˜to˜use˜it‘‹"for˜man“uals˜for˜free˜soft“w“are,‘—bMÞecauseŽ¡‘'¿«free›?soft•²!w“are˜needs˜free‘>doMÞcumen“tation:‘³a˜free˜program˜should‘>come˜with˜man“ualsŽ¡‘'¿«pro²!viding–urthe›ussame“freedoms˜that“the˜soft•²!w“are–urdoMÞes.‘ÍŒBut˜this“License˜is“not˜limited“toŽ¡‘'¿«soft•²!w“are›­âman“uals;‘±¡it–­ãcan˜bMÞe“used˜for“an²!y˜textual“w²!ork,‘¯Áregardless“of˜sub‘›»ject“matter˜orŽ¡‘'¿«whether–Ç2it“is“published“as“a“prin²!ted“b•MÞo“ok.‘@BW‘ÿee–Ç2recommend“this“License“principally“forŽ¡‘'¿«w²!orks–¦fwhose“purpMÞose“is“instruction“or“reference.ަ‘-1.Ž‘'¿«APPLICABILITY–¦fAND“DEFINITIONSŽŸP‘'¿«This–Ì>License‘Ì=applies“to“anš²!y“man˜ual‘Ì=or“other“w˜ork,‘³in“an˜y–Ì=medium,‘´that“con˜tains‘Ì>aŽ¡‘'¿«notice–ýplaced›ýb²!y“the˜cop•²!yrigh“t‘ýholder˜sa“ying–ýit˜can“bMÞe˜distributed“under˜the“termsŽ¡‘'¿«of–€†this“License.‘l=Sucš²!h“a“notice“gran˜ts“a“w˜orld-wide,‘· ro˜y˜alt˜y-free“license,‘·unlimited“inŽ¡‘'¿«duration,‘â to–o·use›o¶that“w²!ork“under˜the“conditions“stated˜herein.‘ 9ÏThe“\DoMÞcumen²!t",Ž¡‘'¿«bMÞeloš²!w,‘tkrefers–gìto“an˜y“suc˜h‘gíman˜ual“or“w˜ork.‘É An˜y“mem˜bMÞer“of“the‘gípublic“is“a“licensee,‘tkandŽ¡‘'¿«is–ÿaddressed“as“\yš²!ou".‘¦@Y‘ÿeou“accept“the“license“if“y˜ou“cop˜y‘ÿe,‘ îmoMÞdify“or“distribute“the“w˜orkŽ¡‘'¿«in–¦fa“w•²!a“y–¦frequiring“pMÞermission“under“cop•²!yrigh“t‘¦fla“w.ަ‘'¿«A‘ ¦\MošMÞdi ed– ÀV‘ÿeersion"‘ Áof“the“Do˜cumenš²!t“means‘ Áan˜y“w˜ork“con˜taining“the‘ ÁDoMÞcumen˜t“orŽ¡‘'¿«a–‚hpMÞortion›‚gof“it,‘¹heither˜copied“v²!erbatim,‘¹hor˜with“moMÞdi cations“and/or˜translated“in²!toŽ¡‘'¿«another‘¦flanguage.ަ‘'¿«A‘ž\Secondary–ÀSection"“is›Áa“named˜appMÞendix“or˜a“fron²!t-matter˜section“of˜the“DoMÞcumen²!tŽ¡‘'¿«that–Ž/deals“exclusiv²!ely›Ž0with“the“relationship“of˜the“publishers“or“authors˜of“the“DoMÞcumen²!tŽ¡‘'¿«to–z the‘zDoMÞcumenš²!t's“o˜v˜erall›zsub‘›»ject“(or˜to“related“matters)˜and“con²!tains˜nothing“thatŽ¡‘'¿«could–Ø®fall›دdirectly“within“that“o•²!v“erall˜sub‘›»ject.‘tµ(Th“us,‘%@if˜the›Ø®DoMÞcumen“t˜is˜in‘دpart˜aŽ¡‘'¿«textb•MÞo“ok›Õ†of–Õ…mathematics,‘ÿMa“Secondary˜Section˜ma²!y˜not“explain˜an²!y˜mathematics.)‘˜=TheŽ¡‘'¿«relationship–GÞcould“bMÞe“a“matter“of“historical“connection“with“the“sub‘›»ject“or“with“relatedŽ¡‘'¿«matters,–jor‘Bøof›B÷legal,“commercial,‘jphilosophical,“ethical˜or˜p•MÞolitical‘Bøp“osition˜regardingŽ¡‘'¿«them.ަ‘'¿«The›r\In•²!v‘ÿdDarian“t–sSections"˜are˜certain˜Secondary“Sections˜whose˜titles˜are“designated,‘0ÖasŽ¡‘'¿«bMÞeing–2Dthose›2Cof“In•²!v‘ÿdDarian“t–2DSections,‘I}in“the“notice˜that“sa²!ys˜that“the“DoMÞcumen²!t˜is“releasedŽŽŒ‹ …WŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:13ŽŽŽ ƒ33 ý ÌÍ‘'¿«under–S5this“License.‘Â"If›S4a“section“doMÞes“not“ t˜the“abMÞo•²!v“e–S5de nition“of“Secondary˜then“it“isޤ 33‘'¿«not›Óallo•²!w“ed˜to‘ÓŽbMÞe˜designated˜as˜In“v‘ÿdDarian“t.‘eSThe˜DoMÞcumen“t˜ma“y‘ÓŽcon“tain˜zero˜In“v‘ÿdDarian“tŽ¡‘'¿«Sections.‘¢ÄIf–õthe“DošMÞcumen²!t“do˜es‘õnot“idenš²!tify“an˜y“In˜v‘ÿdDarian˜t“Sections“then‘õthere“are“none.Ž©&g‘'¿«The›f­\Co•²!v“er–f¬T‘ÿeexts"˜are˜certain˜short“passages˜of˜text˜that“are˜listed,‘–¾as˜F‘ÿeron•²!t-Co“v“erŽ¡‘'¿«T›ÿeexts–-or“Bac•²!k-Co“v“er‘,T˜exts,‘"8in–-the“notice“that‘,saš²!ys“that“the“DoMÞcumen˜t‘,is“released“underŽ¡‘'¿«this›’License.‘¯AA‘nF‘ÿeron•²!t-Co“v“er˜T‘ÿeext˜ma“y˜bMÞe˜at˜most˜5›‘w“ords,‘6Šand˜a›’Bac“k-Co“v“er˜T‘ÿeext˜ma“yŽ¡‘'¿«bMÞe–¦fat“most“25“w²!ords.ŽŸ&h‘'¿«A‘C¦\T‘ÿeransparen•²!t"›CÎcop“y˜of‘CÏthe˜DoMÞcumen“t˜means˜a‘CÏmac“hine-readable˜cop“y‘ÿe,‘k(represen“tedŽ¡‘'¿«in–Jma“format›Jnwhose“spMÞeci cation“is“a²!v‘ÿdDailable“to“the˜general“public,‘snthat˜is“suitable“forŽ¡‘'¿«revising–Îàthe‘ÎßdoMÞcumenš²!t“straigh˜tforw˜ardly“with›Îßgeneric“text˜editors“or“(for˜images“com-Ž¡‘'¿«pMÞosed–ÚÃof›ÚÄpixels)“generic˜pain²!t“programs˜or“(for˜dra²!wings)“some˜widely“a•²!v‘ÿdDailable˜dra“wingŽ¡‘'¿«editor,‘…úand–}ßthat“is“suitable“for“input“to‘}àtext“formatters“or“for“automatic“translation“toŽ¡‘'¿«a–9Ov‘ÿdDariet²!y“of›9Nformats“suitable“for“input“to“text˜formatters.‘¹A‘93cop²!y“made˜in“an“otherwiseŽ¡‘'¿«T‘ÿeransparen²!t–„æ le“format›„åwhose“markup,‘¼†or“absence˜of“markup,‘¼†has˜bMÞeen“arranged“toŽ¡‘'¿«th•²!w“art–0ûor›0üdiscourage“subsequen²!t“moMÞdi cation˜b²!y“readers“is˜not“T‘ÿeransparen²!t.‘¶ºAn“imageŽ¡‘'¿«format– Éis“not“T‘ÿeransparenš²!t“if“used‘ Èfor“an˜y“substan˜tial“amoun˜t“of“text.‘MA‘ ©cop˜y“that“isŽ¡‘'¿«not–¦f\T‘ÿeransparen²!t"“is“called“\Opaque".ަ‘'¿«Examples–cXof“suitable›cWformats“for“T‘ÿeransparen²!t“copies“include˜plain“çasci>Ki“áwithoutŽ¡‘'¿«markup,‘„ÂT‘ÿeexinfo–XIinput“format,›„ÁLaT‘þ,³Ÿ[wEŽ‘B X‘XJinput“format,˜óKñ`y cmr10«SGML“áor‘XJ«XML“áusing“a“publiclyŽ¡‘'¿«a²!v‘ÿdDailable–«DTDá,‘üand›Âstandard-conforming“simple˜«HTMLá,‘üP²!ostScript“or˜«PDF“ádesignedŽ¡‘'¿«for–˜.hš²!uman“moMÞdi cation.‘³4Examples“of“transparen˜t“image“formats“include“«PNGá,‘ÔŸ«X¸ãCFŽ¡‘'¿«áand–¢«JPGá.‘ÐáOpaque“formats“include“proprietary‘¢formats“that“can“bMÞe“read“and“editedŽ¡‘'¿«only–sbš²!y‘sproprietary“w˜ord›sproMÞcessors,‘&J«SGML“áor˜«XML“áfor˜whic²!h“the˜«DTD“áand/orŽ¡‘'¿«pro•MÞcessing›W*to“ols˜are˜not‘W)generally˜a•²!v‘ÿdDailable,‘CYand˜the˜mac“hine-generated˜«HTMLá,Ž¡‘'¿«Pš²!ostScript–¦for“«PDF“áproMÞduced“b˜y“some“w˜ord“prošMÞcessors“for“output“purp˜oses“only‘ÿe.ަ‘'¿«The–Ü\Title›ÛP²!age"“means,‘<ùfor˜a“prin²!ted˜b•MÞo“ok,‘<ùthe–Ütitle˜page“itself,‘<ùplus˜sucš²!h“follo˜wingŽ¡‘'¿«pages–RÃas“are“needed“to“hold,–c}legibly‘ÿe,“the–RÃmaterial“this‘RÂLicense“requires“to“appMÞear“in“theŽ¡‘'¿«title–1.page.‘¶ÊF‘ÿeor“w²!orks›1-in“formats˜whic²!h“do“not˜ha•²!v“e‘1.an“y˜title–1.page“as˜sucš²!h,‘HŸ\Title“P˜age"Ž¡‘'¿«means–­Žthe“text“near›­the“most“prominen²!t“appMÞearance“of“the˜w²!ork's“title,‘¯Xpreceding“theŽ¡‘'¿«bšMÞeginning–¦fof“the“b˜o˜dy“of“the“text.ަ‘'¿«The–)—\publisher"“means‘)˜anš²!y“pMÞerson“or“en˜tit˜y“that“distributes‘)˜copies“of“the“DoMÞcumen˜tŽ¡‘'¿«to–¦fthe“public.ŽŸ&h‘'¿«A›ísection–ò\En²!titled“XYZ"˜means“a“named›ósubunit“of“the“DoMÞcumen²!t˜whose“title“eitherŽ¡‘'¿«is–Uªprecisely‘U©XYZ›U•or“con²!tains“XYZ˜in“paren•²!theses›U©follo“wing–Uªtext“that˜translates“XYZ‘U•inŽ¡‘'¿«another–þ¯language.‘¥ö(Here“XYZ‘þ„stands“for“a“spšMÞeci c“section“name“men²!tioned“b˜elo•²!w,‘ :suc“hŽ¡‘'¿«as›aa\Ac•²!kno“wledgemen“ts",–o/\Dedications",“\Endorsemen²!ts",“or˜\History".)‘ÆÛT‘ÿeo˜\Preserv²!eŽ¡‘'¿«the–›Title"›šof“suc²!h˜a“section“when˜y²!ou“moMÞdify˜the“DoMÞcumen²!t“means˜that“it˜remains“aŽ¡‘'¿«section–¦f\En²!titled“XYZ"“according“to“this“de nition.ަ‘'¿«The–SuDoMÞcumenš²!t“ma˜y“include“W‘ÿearran˜t˜y“Disclaimers“next‘Svto“the“notice“whic˜h“states“thatŽ¡‘'¿«this–¹License“applies‘ºto“the“DoMÞcumenš²!t.‘×These“W‘ÿearran˜t˜y“Disclaimers‘ºare“considered“toŽ¡‘'¿«bMÞe–„ýincluded›„þb²!y“reference“in“this˜License,‘¼£but“only“as“regards˜disclaiming“w•²!arran“ties:Ž¡‘'¿«an²!y–nother›n‘implication“that˜these“W‘ÿearran•²!t“y˜Disclaimers‘nma“y˜ha“v“e‘nis˜v“oid–nand˜has“noŽ¡‘'¿«e ect–¦fon“the“meaning“of“this“License.ަ‘-2.Ž‘'¿«VERBA‘ÿeTIM‘¦fCOPYINGŽŽŒ‹•ÓŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:14ŽŽŽ ƒ33 ý ÌÍ‘'¿«Y‘ÿeou–’ùmaš²!y“cop˜y“and“distribute“the“DoMÞcumen˜t“in“an˜y“medium,‘Îeither“commercially“orޤ 33‘'¿«noncommercially‘ÿe,›zªpro²!vided–that‘this“License,˜the‘cop•²!yrigh“t–notices,˜and‘the“licenseŽ¡‘'¿«notice–Ksa²!ying›K this“License˜applies“to˜the“DoMÞcumen²!t“are˜reproMÞduced“in˜all“copies,‘t7andŽ¡‘'¿«that–1'yš²!ou“add“no‘1(other“conditions“whatsoMÞev˜er“to“those“of“this“License.‘¶ÉY‘ÿeou“ma˜y“not“useŽ¡‘'¿«tec²!hnical–ò“measures›ò”to“obstruct˜or“con²!trol˜the“reading˜or“further˜cop²!ying“of˜the“copiesŽ¡‘'¿«y•²!ou›òÇmak“e‘òÈor˜distribute.‘¡þHo“w“ev“er,‘´y“ou˜ma“y˜accept‘òÈcompMÞensation˜in˜exc“hange‘òÈfor˜copies.Ž¡‘'¿«If–Þy²!ou›Þdistribute“a“large˜enough“n•²!um“bMÞer˜of–Þcopies“y•²!ou˜m“ust–Þalso“follo²!w˜the“conditionsŽ¡‘'¿«in–¦fsection“3.Ž©"#‘'¿«Y‘ÿeou–}ìma²!y“also›}ëlend“copies,‘¹7under“the“same“conditions“stated˜abMÞo•²!v“e,‘¹8and˜y“ou›}ìma“y˜publiclyŽ¡‘'¿«displa²!y‘¦fcopies.ަ‘-3.Ž‘'¿«COPYING–¦fIN“QUANTITYަ‘'¿«If–Ãyš²!ou‘Âpublish“prin˜ted›Âcopies“(or˜copies˜in“media“that˜commonly“ha•²!v“e˜prin“ted˜co“v“ers)‘ÃofŽ¡‘'¿«the‘Ñ.DošMÞcumen•²!t,‘Ûßn“um“b˜ering–Ñ.more“than–Ñ-100,‘Ûàand“the–Ñ.Do˜cumen²!t's“license‘Ñ-notice“requiresŽ¡‘'¿«Co•²!v“er›ÜT‘ÿeexts,‘<ùy“ou‘Ûm“ust˜enclose˜the˜copies‘Ûin˜co“v“ers˜that˜carry–ÿe,‘<ùclearly‘Ûand˜legibly“,‘<ùallŽ¡‘'¿«these›´@Co•²!v“er˜T–ÿeexts:‘ùF“ron•²!t-Co“v“er˜T‘ÿeexts˜on˜the˜fron“t˜co“v“er,‘÷µand˜Bac“k-Co“v“er˜T‘ÿeexts˜onŽ¡‘'¿«the›öbac•²!k‘õco“v“er.‘Ñ Both˜co“v“ers˜m“ust–õalso˜clearly˜and˜legibly“iden•²!tify˜y“ou˜as‘õthe˜publisherŽ¡‘'¿«of›,these–+copies.‘H/The“fron•²!t˜co“v“er˜m“ust˜presen“t–+the˜full˜title“with˜all˜w²!ords˜of“the˜titleŽ¡‘'¿«equally–³xprominenš²!t“and‘³yvisible.‘Y‘ÿeou“ma˜y›³yadd“other“material“on“the˜co•²!v“ers–³xin“addition.Ž¡‘'¿«Cop•²!ying›Y4with‘Y3c“hanges˜limited–Y3to˜the“co•²!v“ers,‘…ças–Y3long˜as“they˜preserv²!e“the˜title“of˜theŽ¡‘'¿«DošMÞcumen²!t–uand“satisfy“these“conditions,‘¨Åcan“b˜e“treated‘uas“vš²!erbatim“cop˜ying“in“otherŽ¡‘'¿«respMÞects.ަ‘'¿«If–î|the“required›î}texts“for“either“co•²!v“er–î|are“toMÞo˜vš²!oluminous“to“ t“legibly‘ÿe,‘‚y˜ou“should“putŽ¡‘'¿«the–ò rst›òones“listed“(as“man²!y˜as“ t“reasonably)“on˜the“actual“co•²!v“er,‘ùand˜con“tin“ue‘òtheŽ¡‘'¿«rest–¦fonš²!to“adjacen˜t“pages.ŽŸ""‘'¿«If–?|y²!ou›?{publish“or˜distribute“Opaque˜copies“of˜the“DoMÞcumen•²!t˜n“um“bMÞering–?|more˜than“100,Ž¡‘'¿«y•²!ou›\3m“ust˜either‘\4include˜a˜mac“hine-readable˜T‘ÿeransparen“t˜cop“y˜along‘\4with˜eac“h˜OpaqueŽ¡‘'¿«cop²!y‘ÿe,‘[>or›7state–7in“or˜with“eacš²!h“Opaque“cop˜y‘7a“computer-net˜w˜ork“loMÞcation‘7from“whic˜hŽ¡‘'¿«the›éSgeneral‘éRnet•²!w“ork-using˜public˜has‘éRaccess˜to˜do“wnload˜using‘éRpublic-standard˜net“w“orkŽ¡‘'¿«protoMÞcols–¬=a“complete‘¬>T‘ÿeransparenš²!t“cop˜y“of“the“DoMÞcumen˜t,‘í³free“of“added“material.‘ïcIfŽ¡‘'¿«yš²!ou–ªuse“the‘ªlatter“option,‘êùy˜ou“m˜ust‘ªtak˜e“reasonably“pruden˜t“steps,‘êøwhen“y˜ou“bMÞeginŽ¡‘'¿«distribution–—lof›—mOpaque“copies˜in“quan•²!tit“y‘ÿe,‘Ó®to–—lensure“that˜this“T‘ÿeransparen•²!t˜cop“y‘—lwillŽ¡‘'¿«remain– Cthš²!us“accessible‘ Dat“the“stated“loMÞcation“un˜til‘ Dat“least“one“y˜ear“after‘ Dthe“last“timeŽ¡‘'¿«yš²!ou–k‘distribute‘k’an“Opaque“cop˜y‘k’(directly“or“through“y˜our‘k’agen˜ts“or“retailers)‘k’of“thatŽ¡‘'¿«edition–¦fto“the“public.ަ‘'¿«It–&Nis“requested,‘FHbut“not“required,‘FGthat“yš²!ou“con˜tact“the“authors“of“the“DoMÞcumen˜t“w˜ellŽ¡‘'¿«bMÞefore–oÅredistributing‘oÄanš²!y“large“n˜um˜bMÞer›oÄof“copies,‘z²to˜giv²!e“them˜a“c²!hance“to˜proš²!vide“y˜ouŽ¡‘'¿«with–¦fan“upšMÞdated“v²!ersion“of“the“Do˜cumen²!t.ަ‘-4.Ž‘'¿«MODIFICA‘ÿeTIONSަ‘'¿«Y‘ÿeou–*maš²!y“cop˜y“and›)distribute“a“MoMÞdi ed“V‘ÿeersion“of“the˜DoMÞcumen²!t“under“the“conditionsŽ¡‘'¿«of–…šsections›…›2“and˜3“abMÞo•²!v“e,‘¿]pro“vided˜that‘…šy“ou˜release–…šthe˜MoMÞdi ed“V‘ÿeersion˜under“preciselyŽ¡‘'¿«this–{ÞLicense,‘„`with“the›{ßMoMÞdi ed“V‘ÿeersion“ lling˜the“role“of˜the“DoMÞcumen•²!t,‘„`th“us‘{ÞlicensingŽ¡‘'¿«distribution–¸and“mošMÞdi cation‘¹of“the“Mo˜di ed“V‘ÿeersion“to“who˜ev²!er‘¹p˜ossesses“a“cop²!y“ofŽ¡‘'¿«it.‘ÝÝIn–¦faddition,“yš²!ou“m˜ust“do“these“things“in“the“MoMÞdi ed“V‘ÿeersion:ަ‘*òÄA.Ž‘=nUse–ípin“the“Title“Pš²!age“(and“on“the“co˜v˜ers,‘ÿ2if“an˜y)“a“title“distinct“from“that“of“theŽ¡‘=nDoMÞcumenš²!t,‘+and–ˆfrom“those“of“previous“v˜ersions‘‡(whic˜h“should,‘+if“there“w˜ere“an˜y‘ÿe,ŽŽŒ‹¨7Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:15ŽŽŽ ƒ33 ý ÌÍ‘=nbšMÞe–Âølisted“in“the“History‘Â÷section“of“the“Do˜cumenš²!t).‘3“Y‘ÿeou“ma˜y‘Â÷use“the“same“title“asޤ 33‘=na–¦fprevious“vš²!ersion“if“the“original“publisher“of“that“v˜ersion“giv˜es“pMÞermission.Ž©€‘+gB.Ž‘=nList–ª\on“the“Title›ª[P²!age,‘«Zas“authors,‘«Yone“or“more“pMÞersons˜or“en²!tities“respMÞonsible“forŽ¡‘=nauthorship–"of›"the“moMÞdi cations“in˜the“MoMÞdi ed˜V‘ÿeersion,‘<|together“with“at˜least“ v²!eŽ¡‘=nof–߸the“principal“authors“of“the“DoMÞcumenš²!t“(all“of“its“principal“authors,‘uif“it“has“few˜erŽ¡‘=nthan–¦f vš²!e),“unless“they“release“y˜ou“from“this“requiremen˜t.ŽŸ€‘+@¢C.Ž‘=nState–±Óon›±Òthe“Title˜page“the˜name“of˜the“publisher˜of“the˜MoMÞdi ed“V‘ÿeersion,‘´­as“theŽ¡‘=npublisher.ަ‘*ËÕD.Ž‘=nPreservš²!e–¦fall“the“cop˜yrigh˜t“notices“of“the“DoMÞcumen˜t.ަ‘+µoE.Ž‘=nAdd–Äean›Ädappropriate“cop•²!yrigh“t˜notice‘Äefor˜y“our‘ÄemoMÞdi cations˜adjacen“t–Äeto˜the“otherŽ¡‘=ncop•²!yrigh“t‘¦fnotices.ŽŸ€‘,LF.Ž‘=nInclude,›hSimmediately–XÎafter“the“cop•²!yrigh“t–XÎnotices,˜a“license“notice“giving“the“publicŽ¡‘=npMÞermission–ïËto›ïÊuse“the˜MoMÞdi ed“V‘ÿeersion“under˜the“terms˜of“this“License,‘Pin˜the“formŽ¡‘=nshoš²!wn–¦fin“the“Addendum“bMÞelo˜w.ަ‘*‘nG.Ž‘=nPreserv²!e–¼min›¼lthat“license˜notice“the˜full“lists˜of“In•²!v‘ÿdDarian“t˜Sections–¼mand˜required“Co•²!v“erŽ¡‘=nT‘ÿeexts–¦fgivš²!en“in“the“DoMÞcumen˜t's“license“notice.ަ‘*òÄH.Ž‘=nInclude–¦fan“unaltered“cop²!y“of“this“License.ŽŸ€‘/4çI.Ž‘=nPreservš²!e–Ú†the‘Ú‡section“En˜titled‘Ú‡\History",‘çŽPreserv˜e“its›Ú‡Title,‘çŽand“add˜to“it˜an“itemŽ¡‘=nstating–_ at›_ least“the˜title,–mQy²!ear,“new˜authors,“and–_ publisher˜of“the˜MoMÞdi ed“V‘ÿeersionŽ¡‘=nas–ÄXgivš²!en“on‘ÄWthe“Title“P˜age.‘7³If‘ÄWthere“is“no“section“En˜titled“\History"‘ÄWin“the“DoMÞcu-Ž¡‘=nmenš²!t,‘O#create‘-eone–-dstating“the“title,‘O$y˜ear,–O#authors,“and‘-epublisher–-dof“the“DoMÞcumen˜tŽ¡‘=nas–Wgivš²!en“on“its“Title“P˜age,‘ƒFthen“add“an“item“describing“the“MoMÞdi ed“V‘ÿeersion“asŽ¡‘=nstated–¦fin“the“previous“sen²!tence.ަ‘-ˆ¢J.Ž‘=nPreservš²!e–æthe“net˜w˜ork“loMÞcation,‘õúif“an˜y‘ÿe,‘õúgiv˜en“in“the“DoMÞcumen˜t‘æfor“public“access“toŽ¡‘=na–½…T‘ÿeransparenš²!t“cop˜y‘½†of“the“DoMÞcumen˜t,‘ÃMand“lik˜ewise“the“net˜w˜ork‘½†loMÞcations“giv˜en“inŽ¡‘=nthe–Í„DoMÞcumenš²!t‘̓for“previous“v˜ersions‘̓it“w˜as“based“on.‘S6These‘̓ma˜y“bMÞe“placed‘̓in“theŽ¡‘=n\History"–8section.‘¦ÎY‘ÿeou›9ma²!y“omit˜a“net•²!w“ork–8loMÞcation˜for“a˜w²!ork“that˜w²!as“publishedŽ¡‘=nat–Kleast“four‘Ky²!ears“bšMÞefore“the“Do˜cumen²!t“itself,‘t@or“if“the“original‘Kpublisher“of“theŽ¡‘=nvš²!ersion–¦fit“refers“to“giv˜es“pMÞermission.ަ‘*¤åK.Ž‘=nF‘ÿeor–Ùranš²!y“section“En˜titled“\Ac˜kno˜wledgemen˜ts"“or“\Dedications",‘oPreserv˜e“the“TitleŽ¡‘=nof›/Rthe–/Qsection,‘G#and“preserv²!e˜in˜the“section˜all˜the“substance˜and“tone˜of˜eac²!h“of˜theŽ¡‘=ncon•²!tributor›¦fac“kno“wledgemen“ts˜and/or˜dedications˜giv“en˜therein.ަ‘,Q*L.Ž‘=nPreservš²!e–?Ôall‘?Óthe“In˜v‘ÿdDarian˜t›?ÓSections“of˜the“DoMÞcumen²!t,‘f/unaltered˜in“their˜text“andŽ¡‘=nin›PÜtheir–PÝtitles.‘Ý@Section“n•²!um“bMÞers˜or‘PÝthe˜equiv‘ÿdDalen“t–PÝare˜not“considered˜part“of˜theŽ¡‘=nsection‘¦ftitles.ŽŸ€‘)M.Ž‘=nDelete–°5anš²!y“section“En˜titled‘°4\Endorsemen˜ts".‘ûJSuc˜h“a“section‘°4ma˜y“not“bMÞe“includedŽ¡‘=nin–¦fthe“MoMÞdi ed“V‘ÿeersion.ަ‘*òÄN.Ž‘=nDo–g!not›g"retitle“an²!y˜existing“section“to˜bMÞe“Enš²!titled“\Endorsemen˜ts"›g"or“to˜con ict“inŽ¡‘=ntitle–¦fwith“anš²!y“In˜v‘ÿdDarian˜t“Section.ަ‘*¤åO.Ž‘=nPreserv•²!e›¦fan“y˜W‘ÿearran“t“y˜Disclaimers.ŽŸÌΑ'¿«If–Øthe›×MoMÞdi ed“V‘ÿeersion˜includes“new˜fron²!t-matter“sections˜or“appMÞendices˜that“qualifyŽ¡‘'¿«as–XSecondary›X Sections“and“con²!tain“no˜material“copied“from˜the“DoMÞcumen•²!t,‘g´y“ou˜ma“y‘XatŽ¡‘'¿«y²!our–ãkoption›ãldesignate“some˜or“all“of˜these“sections˜as“in•²!v‘ÿdDarian“t.‘”íT‘ÿeo˜do–ãkthis,‘ò­add“theirŽŽŒ‹º™Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:16ŽŽŽ ƒ33 ý ÌÍ‘'¿«titles–@«to“the“list›@¬of“In•²!v‘ÿdDarian“t–@«Sections“in“the“MoMÞdi ed“V‘ÿeersion's“license˜notice.‘¬¬Theseޤ 33‘'¿«titles–¦fmš²!ust“bMÞe“distinct“from“an˜y“other“section“titles.Ž©(ö‘'¿«Y‘ÿeou–pmaš²!y‘qadd“a“section“En˜titled‘q\Endorsemen˜ts",‘s²pro˜vided“it“con˜tains‘qnothing“butŽ¡‘'¿«endorsemen•²!ts›‘of‘‘y“our˜MoMÞdi ed˜V‘ÿeersion˜b“y‘‘v‘ÿdDarious˜parties|for˜example,‘•Zstatemen“ts˜ofŽ¡‘'¿«pšMÞeer–D review“or‘Dthat“the“text“has“b˜een‘Dappro•²!v“ed›D b“y˜an˜organization‘Das˜the˜authoritativ“eŽ¡‘'¿«de nition–¦fof“a“standard.ŽŸ(÷‘'¿«Y‘ÿeou–f,ma²!y›f-add“a˜passage“of˜up“to˜ vš²!e“w˜ords›f-as“a˜F›ÿeron•²!t-Co“v“er–f,T˜ext,‘sand›f-a“passage˜of“upŽ¡‘'¿«to–@25“wš²!ords‘@Žas“a“Bac˜k-Co˜v˜er“T‘ÿeext,‘Tìto›@Žthe“end“of“the˜list“of“Co•²!v“er–@T‘ÿeexts˜in“the“MoMÞdi edŽ¡‘'¿«V›ÿeersion.‘Õ+Only–N+one‘N*passage“of“F˜ron•²!t-Co“v“er‘N*T˜ext–N+and“one‘N*of“Bac•²!k-Co“v“er‘N+T˜ext‘N*ma“y‘N+bMÞeŽ¡‘'¿«added–NÁbš²!y“(or“through“arrangemen˜ts“made“b˜y)‘NÂan˜y“one“en˜tit˜y‘ÿe.‘À¦If“the“DoMÞcumen˜t“alreadyŽ¡‘'¿«includes›Éa‘Èco•²!v“er˜text–Èfor˜the˜same“co•²!v“er,‘/!previously˜added˜b“y‘Èy“ou˜or‘Èb“y˜arrangemen“tŽ¡‘'¿«made–:Çbš²!y“the“same“en˜tit˜y“y˜ou“are“acting“on“bMÞehalf“of,‘_ßy˜ou“ma˜y‘:Ènot“add“another;‘„÷butŽ¡‘'¿«y•²!ou›)ma“y˜replace–*the˜old˜one,‘2on˜explicit˜pMÞermission˜from˜the“previous˜publisher˜thatŽ¡‘'¿«added–¦fthe“old“one.ަ‘'¿«The–^author(s)›]and“publisher(s)˜of“the“DoMÞcumen²!t˜do“not“b²!y˜this“License˜giv²!e“pMÞermissionŽ¡‘'¿«to–¤juse“their›¤knames“for“publicit²!y“for“or˜to“assert“or“imply“endorsemen²!t˜of“an²!y“MoMÞdi edŽ¡‘'¿«V‘ÿeersion.ŽŸ(÷‘-5.Ž‘'¿«COMBINING‘¦fDOCUMENTSަ‘'¿«Y‘ÿeou›¦Çma•²!y‘¦Ècom“bine˜the˜DoMÞcumen“t–¦Èwith˜other“doMÞcumen²!ts˜released˜under“this˜License,Ž¡‘'¿«under–—sthe“terms›—tde ned“in“section“4˜abšMÞo•²!v“e–—sfor“mo˜di ed“v•²!ersions,‘Ó·pro“vided–—sthat“y²!ouŽ¡‘'¿«include– in› the“com²!bination“all“of˜the“In•²!v‘ÿdDarian“t– Sections˜of“all“of“the˜original“doMÞcumen²!ts,Ž¡‘'¿«unmoMÞdi ed,‘L3and–5¦list›5§them“all˜as“In•²!v‘ÿdDarian“t–5¦Sections˜of“yš²!our“com˜bined‘5§w˜ork“in‘5§its“licenseŽ¡‘'¿«notice,–¦fand“that“yš²!ou“preserv˜e“all“their“W‘ÿearran˜t˜y“Disclaimers.ަ‘'¿«The–¢@comš²!bined“w˜ork“need“only“con˜tain“one“cop˜y“of“this“License,‘£and“m˜ultiple“iden˜ticalŽ¡‘'¿«In•²!v‘ÿdDarian“t–æÝSections“maš²!y“bMÞe“replaced“with“a“single‘æÜcop˜y‘ÿe.‘ŸBIf“there“are“m˜ultiple“In˜v‘ÿdDarian˜tŽ¡‘'¿«Sections–6Çwith›6Èthe“same˜name“but˜di erenš²!t“con˜ten˜ts,‘Mmak˜e›6Èthe“title˜of“eac•²!h˜suc“h‘6ÇsectionŽ¡‘'¿«unique–bb²!y›cadding“at˜the“end˜of“it,‘1"in“paren²!theses,‘1!the˜name“of˜the“original˜author“orŽ¡‘'¿«publisher–of“that›~section“if“kno²!wn,‘!­or“else“a“unique˜n•²!um“bMÞer.‘¦‘Mak“e˜the–same“adjustmen²!tŽ¡‘'¿«to–î‡the›î†section“titles“in˜the“list“of˜In•²!v‘ÿdDarian“t–î‡Sections“in“the˜license“notice“of˜the“com²!binedŽ¡‘'¿«w²!ork.ŽŸ(÷‘'¿«In›ö"the‘ö#com•²!bination,‘Jy“ou˜m“ust‘ö#com“bine˜an“y‘ö#sections˜En“titled–ö#\History"˜in“the˜v‘ÿdDari-Ž¡‘'¿«ous–ÜÛoriginal›ÜÚdoMÞcumen²!ts,‘êxforming“one˜section“Enš²!titled“\History";‘ølik˜ewise‘ÜÚcom˜bine“an˜yŽ¡‘'¿«sections–ÑEnš²!titled“\Ac˜kno˜wledgemen˜ts",‘Û¿and“an˜y“sections“En˜titled“\Dedications".‘]çY‘ÿeouŽ¡‘'¿«mš²!ust–¦fdelete“all“sections“En˜titled“\Endorsemen˜ts."ަ‘-6.Ž‘'¿«COLLECTIONS–¦fOF“DOCUMENTSŽŸ(÷‘'¿«Y‘ÿeou–Ò¤maš²!y“mak˜e“a“collection“consisting“of‘Ò£the“DoMÞcumen˜t“and“other“doMÞcumen˜ts“releasedŽ¡‘'¿«under–this“License,‘sÚand“replace“the“individual“copies“of“this“License“in“the“v‘ÿdDariousŽ¡‘'¿«doMÞcumenš²!ts–Dwith‘Ca“single“cop˜y›Cthat“is˜included“in“the˜collection,‘y»pro²!vided˜that“y²!ouŽ¡‘'¿«follo²!w–t”the›t•rules“of˜this“License˜for“v•²!erbatim˜cop“ying‘t”of˜eac“h–t”of˜the“doMÞcumen²!ts˜in“allŽ¡‘'¿«other‘¦frespMÞects.ަ‘'¿«Y‘ÿeou–Æ=maš²!y“extract“a“single“doMÞcumen˜t“from“suc˜h“a“collection,‘Î2and“distribute“it“individu-Ž¡‘'¿«ally–4under›4this“License,‘Wnpro•²!vided˜y“ou–4insert“a“cop²!y˜of“this“License“in²!to˜the“extractedŽ¡‘'¿«doMÞcumen•²!t,‘ùøand›éBfollo“w–éAthis˜License“in“all˜other“respMÞects˜regarding“v•²!erbatim˜cop“ying‘éAofŽ¡‘'¿«that‘¦fdoMÞcumen²!t.ŽŽŒ‹ÊúŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:17ŽŽŽ ƒ33 ý ÌÍ‘-7.Ž‘'¿«Aš²!GGREGA‘ÿeTION–¦fWITH“INDEPENDENT“W˜ORKSŽ©(ö‘'¿«A‘]Æcompilation–]Øof“the“DoMÞcumenš²!t‘]Ùor“its“deriv‘ÿdDativ˜es“with“other‘]Ùseparate“and“indepMÞenden˜tޤ 33‘'¿«doMÞcumen•²!ts›ÿhor‘ÿiw“orks,‘©in˜or˜on‘ÿia˜v“olume–ÿiof˜a“storage˜or˜distribution“medium,‘©is˜calledŽ¡‘'¿«an– \aggregate"“if“the› cop•²!yrigh“t– resulting“from“the“compilation“is“not˜used“to“limit“theŽ¡‘'¿«legal–1 righ²!ts›1of“the“compilation's˜users“bMÞey²!ond˜what“the“individual˜w²!orks“pMÞermit.‘¶¾WhenŽ¡‘'¿«the–žDošMÞcumen²!t“is“included‘žin“an“aggregate,‘Ûðthis“License“do˜es“not‘žapply“to“the“otherŽ¡‘'¿«wš²!orks–¦fin“the“aggregate“whic˜h“are“not“themselv˜es“deriv‘ÿdDativ˜e“w˜orks“of“the“DoMÞcumen˜t.ŽŸ(÷‘'¿«If–»Vthe“Co•²!v“er–»VT‘ÿeext“requiremenš²!t“of“section“3‘»Uis“applicable“to“these“copies“of“the“DoMÞcumen˜t,Ž¡‘'¿«then–°Dif›°Ethe“DoMÞcumen²!t“is“less˜than“one“half“of˜the“en²!tire“aggregate,‘á~the˜DoMÞcumenš²!t's“Co˜v˜erŽ¡‘'¿«T‘ÿeexts–0maš²!y“bMÞe“placed“on“co˜v˜ers“that“brac˜k˜et“the“DoMÞcumen˜t“within“the‘0aggregate,‘G°or“theŽ¡‘'¿«electronic–5qequiv‘ÿdDalenš²!t‘5pof“co˜v˜ers›5pif“the˜DoMÞcumen²!t“is“in˜electronic“form.‘ŠüOtherwise“theyŽ¡‘'¿«mš²!ust–¦fappMÞear“on“prin˜ted“co˜v˜ers“that“brac˜k˜et“the“whole“aggregate.ަ‘-8.Ž‘'¿«TRANSLA‘ÿeTIONŽŸ(÷‘'¿«T‘ÿeranslation–̯is›̰considered“a˜kind“of“moMÞdi cation,‘Aso˜yš²!ou“ma˜y‘̰distribute“translationsŽ¡‘'¿«of–Tþthe›TýDoMÞcumen²!t“under˜the“terms˜of“section“4.‘ é£Replacing“In•²!v‘ÿdDarian“t˜Sections‘TþwithŽ¡‘'¿«translations–v²requires‘v³spšMÞecial“p˜ermission“from“their›v³cop•²!yrigh“t‘v²holders,‘êÄbut˜y“ou‘v²ma“yŽ¡‘'¿«include–ðktranslations“of“some›ðjor“all“In•²!v‘ÿdDarian“t–ðkSections“in“addition˜to“the“original“v²!ersionsŽ¡‘'¿«of›Æthese‘ÆIn•²!v‘ÿdDarian“t˜Sections.‘=Y‘ÿeou‘Æma“y˜include–Æa˜translation˜of“this˜License,‘Î and“all˜theŽ¡‘'¿«license–òúnotices›òûin“the“DoMÞcumen•²!t,‘Fand˜an“y›òúW‘ÿearran“t“y˜Disclaimers,‘Fpro“vided‘òûthat˜y“ouŽ¡‘'¿«also–Ïinclude›Îÿthe“original“English˜v²!ersion“of“this“License˜and“the“original˜v²!ersions“ofŽ¡‘'¿«those–notices“and“disclaimers.‘5åIn“case“of“a“disagreemen•²!t‘bMÞet“w“een–the“translation“andŽ¡‘'¿«the–:•original›:”v²!ersion“of˜this“License˜or“a˜notice“or˜disclaimer,‘_ the“original˜v²!ersion“willŽ¡‘'¿«prev‘ÿdDail.ަ‘'¿«If–pèa“section“in‘péthe“DoMÞcumenš²!t“is“En˜titled“\Ac˜kno˜wledgemen˜ts",–{›\Dedications",“or‘pè\His-Ž¡‘'¿«tory",‘A¿the–(•requiremenš²!t“(section“4)“to“Preserv˜e“its“Title“(section“1)“will“t˜ypically“requireŽ¡‘'¿«c²!hanging–¦fthe“actual“title.ަ‘-9.Ž‘'¿«TERMINA‘ÿeTIONŽŸ(÷‘'¿«Y‘ÿeou–”maš²!y“not‘”cop˜y–ÿe,›—¾moMÞdify“,˜sublicense,˜or–”distribute“the“DoMÞcumen²!t‘”except“as“expresslyŽ¡‘'¿«proš²!vided–¡ðunder‘¡ñthis“License.‘Ð|An˜y›¡ñattempt“otherwise˜to“cop²!y–ÿe,›àÓmoMÞdify“,‘àÒsublicense,˜orŽ¡‘'¿«distribute–¦fit“is“vš²!oid,“and“will“automatically“terminate“y˜our“righ˜ts“under“this“License.ަ‘'¿«Ho•²!w“ev“er,‘ó·if›äAy“ou–ä@cease˜all“violation˜of“this“License,‘ó¸then“y²!our˜license“from˜a“particularŽ¡‘'¿«cop•²!yrigh“t–Jholder“is‘Jreinstated“(a)“proš²!visionally‘ÿe,‘sšunless“and“un˜til‘Jthe“cop˜yrigh˜t“holderŽ¡‘'¿«explicitly–á_and“ nally“terminates“yš²!our“license,‘0and“(b)“pMÞermanen˜tly‘ÿe,‘0if“the“cop˜yrigh˜tŽ¡‘'¿«holder–"fails“to“notify“yš²!ou“of“the“violation‘"b˜y“some“reasonable“means“prior“to“60“da˜ysŽ¡‘'¿«after–¦fthe“cessation.ŽŸ(÷‘'¿«Moreo•²!v“er,‘Ï8y“our–Ç license›Çfrom“a˜particular˜cop•²!yrigh“t–Ç holder˜is˜reinstated“pMÞermanen²!tly˜ifŽ¡‘'¿«the›V`cop•²!yrigh“t˜holder‘Vanoti es˜y“ou˜of˜the˜violation‘Vab“y˜some˜reasonable˜means,‘fbthis˜is˜theŽ¡‘'¿« rst–Wtime“y•²!ou‘Wha“v“e›Wreceiv“ed˜notice˜of˜violation‘Wof˜this˜License˜(for˜an“y‘Ww“ork)˜from˜thatŽ¡‘'¿«cop•²!yrigh“t–Õúholder,‘áÞand“yš²!ou“cure“the“violation“prior‘Õùto“30“da˜ys“after“y˜our‘Õùreceipt“of“theŽ¡‘'¿«notice.ަ‘'¿«T‘ÿeermination–Nuof“yš²!our“righ˜ts“under“this“section‘NtdoMÞes“not“terminate“the“licenses“of“partiesŽ¡‘'¿«who›•qha•²!v“e˜receiv“ed˜copies˜or˜righ“ts˜from˜y“ou‘•punder˜this˜License.‘ªþIf˜y“our˜righ“ts˜ha“v“eŽ¡‘'¿«bšMÞeen–Îterminated“and“not‘Íp˜ermanenš²!tly“reinstated,‘:¹receipt“of“a“cop˜y“of“some‘Íor“all“of“theŽ¡‘'¿«same–¦fmaterial“doMÞes“not“givš²!e“y˜ou“an˜y“righ˜ts“to“use“it.ŽŽŒ‹Ü_Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:18ŽŽŽ ƒ33 ý ÌÍ‘‡“10.Ž‘'¿«FUTURE–¦fREVISIONS“OF“THIS“LICENSEŽ©33‘'¿«The›ÿaF‘ÿeree‘ÿbSoft•²!w“are˜F‘ÿeoundation‘ÿbma“y˜publish–ÿbnew,‘UŸrevised“v²!ersions˜of“the˜GNU‘ÿ F‘ÿereeޤ 33‘'¿«DoMÞcumenš²!tation–ÙâLicense‘Ùãfrom“time“to“time.‘xRSuc˜h“new‘Ùãv˜ersions“will“bMÞe“similar‘Ùãin“spiritŽ¡‘'¿«to– æthe“presenš²!t“v˜ersion,‘?…but“ma˜y“di er“in“detail“to“address‘ ånew“problems“or“concerns.Ž¡‘'¿«See‘¦fâhttp://www.gnu.org/copyleft/á.ަ‘'¿«Eac•²!h›ˆ×v“ersion˜of˜the˜License˜is˜giv“en˜a˜distinguishing˜v“ersion˜n“um“b•MÞer.‘ÔIf˜the˜Do“cumen²!tŽ¡‘'¿«spšMÞeci es–r”that“a“particular“n•²!um“b˜ered›r”v“ersion˜of˜this˜License˜\or˜an“y˜later˜v“ersion"Ž¡‘'¿«applies‘æQto–æPit,‘öLyš²!ou“ha˜v˜e–æQthe“option‘æPof“follo˜wing“the“terms›æPand“conditions“either˜of“thatŽ¡‘'¿«spMÞeci ed–Žvš²!ersion“or“of“an˜y“later“v˜ersion“that‘Žhas“bMÞeen“published“(not“as“a“draft)“b˜yŽ¡‘'¿«the›î!F‘ÿeree‘î"Soft•²!w“are˜F‘ÿeoundation.‘µIf‘î"the˜DošMÞcumen“t‘î"do˜es–î!not“sp˜ecify›î"a“v•²!ersion˜n“um“bMÞer‘î!ofŽ¡‘'¿«this–$œLicense,‘D)yš²!ou“ma˜y“c˜hoMÞose‘$an˜y“v˜ersion“ev˜er“published“(not“as“a“draft)“b˜y“the“F‘ÿereeŽ¡‘'¿«Soft•²!w“are–ÖUF‘ÿeoundation.‘m©If“the“DošMÞcumen²!t“sp˜eci es“that“a“proš²!xy‘ÖTcan“decide“whic˜h“futureŽ¡‘'¿«v²!ersions–é)of›é*this“License˜can“bMÞe“used,‘ùÚthat˜proš²!xy's“public“statemen˜t›é*of“acceptance˜of“aŽ¡‘'¿«v•²!ersion›¦fpMÞermanen“tly˜authorizes˜y“ou˜to˜c“hoMÞose˜that˜v“ersion˜for˜the˜DoMÞcumen“t.ަ‘‡“11.Ž‘'¿«RELICENSINGަ‘'¿«\Massivš²!e–{"Multiauthor‘{#CollabMÞoration“Site"“(or“\MMC‘zìSite")“means“an˜y‘{#W‘ÿeorld“WideŽ¡‘'¿«W‘ÿeeb–Leservš²!er“that“publishes“cop˜yrigh˜table‘Lfw˜orks“and“also“pro˜vides“prominen˜t“facilitiesŽ¡‘'¿«for›M an²!yb•MÞo“dy˜to˜edit˜those˜w•²!orks.‘ÀEA‘MŠpublic˜wiki˜that‘MŸan“yb•MÞo“dy˜can˜edit˜is˜an˜example˜ofŽ¡‘'¿«sucš²!h– Ya“serv˜er.‘µA‘ ?\Massiv˜e‘ XMultiauthor“CollabMÞoration"“(or“\MMC")‘ >con˜tained“in“theŽ¡‘'¿«site–¦fmeans“anš²!y“set“of“cop˜yrigh˜table“w˜orks“th˜us“published“on“the“MMC“site.ަ‘'¿«\CC-BY-SA"‘8¤means–8Éthe‘8ÊCreativš²!e“Commons“A˜ttribution-Share‘8ÊAlik˜e“3.0‘8Êlicense“pub-Ž¡‘'¿«lished›8b•²!y‘8Creativ“e˜Commons–8CorpMÞoration,‘N(a˜not-for-pro t“corpMÞoration˜with“a˜principalŽ¡‘'¿«place–òof“business“in“San“F‘ÿerancisco,‘7£California,‘7¢as“wš²!ell“as“future“cop˜yleft“v˜ersions“of“thatŽ¡‘'¿«license–¦fpublished“b²!y“that“same“organization.ަ‘'¿«\IncorpšMÞorate"–­zmeans“to“publish‘­yor“republish“a“Do˜cumen²!t,›¯?in“whole“or‘­yin“part,˜as“partŽ¡‘'¿«of–¦fanother“DoMÞcumen²!t.ަ‘'¿«An–&\MMC‘&), with Reserved Font Name CMSLTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup /UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSLTT10 def /FontBBox {-20 -233 617 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSLTT10.) readonly def /FullName (CMSLTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 39 /quoteright put dup 45 /hyphen put dup 48 /zero put dup 49 /one put dup 67 /C put dup 68 /D put dup 69 /E put dup 72 /H put dup 74 /J put dup 76 /L put dup 77 /M put dup 92 /backslash put dup 95 /underscore put dup 97 /a put dup 98 /b put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA 3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC 6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F 3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C 4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90 DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2 753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131 54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D 107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3 7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231 328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9 85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C 2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7 308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450 CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195 739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93 FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6 F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312 3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F 55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB 69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50 82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0 8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8 0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6 0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8 1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1 D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737 170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863 767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3 826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235 8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048 345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE 67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD 802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E 20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127 5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07 0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36 22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC 4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B 4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880 0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5 220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403 7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005 27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300 7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07 A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D 45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10 F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7 C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65 AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012 DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781 FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA 997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4 3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A 2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605 31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22 A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891 43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D 4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5 94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E 425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616 FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5 51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9 859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852 E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F 2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910 82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA 22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D 200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5 892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32 0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140 437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3 BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9 E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402 DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1 CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551 80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA 9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41 031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90 9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3 9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891 4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB 57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B 2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39 0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9 03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067 22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79 06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC 39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163 A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6 9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6 B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F 79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553 2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5 8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA 1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA 0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2 BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3 312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3 B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F 9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16 A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6 91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F 7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D 78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC 7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09 766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11 016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3 8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278 E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC 6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8 B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959 44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE 5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB 42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57 CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009 9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2 82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72 0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5 F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9 EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F 14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8 BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2 9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5 6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A 6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116 4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C 9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780 42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE 7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024 1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D 4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540 CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4 D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81 CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1 0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9 92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0 57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4 5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4 57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158 8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0 C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3 7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7 B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674 EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521 D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9 DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074 F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0 56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8 46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40 52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA 19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D 465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02 0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE 078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339 F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6525 EE62456392E5DCAD0A0157A4A033E440AA014D5682606312F72248E13C43EC3F BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9 50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985 328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD 50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F36932A8A2DB BAD87DCC271657EDF942834AD01C0C35437042331634D36C594CCBD796BB1562 C5AEFD595E35264ABB2ABFEC7A2E066A7A454659804F6CD9DC64DE1112D95B55 72AE34B6153425A5D15D9F944A3DB6D580C2A01E308E2CDB032F99617A73866D F2F2FB6E8617873AC82D4E2224049BC2FEBFE49527DAD70C079B92F08DC30095 AE63E3E2FA213D52A347347371724EF08B39D7383D27131F75C2211F82C35CDF B78708DE910A5ABCA3075D985AB2E2EAEC2BB6159094F0C0C775C25AFF4F507B 20070C4FB570D5CBCF40C7DE889378A9EE7E38175ABC3D5B047D1DD925990A04 76EE4083F3CAEB8F1FF3D8FB0210C93738D68EE884FF86416A2EEF2356DB80C8 39749F31D1D3751E91D84246B56D759969A6D52832891375DC26E92B7DC756A1 A02F951C898CF665AB0C2C6D5B455FCA6D20E7F998D2523112A08E8EFE1B5DBE 940EEB362AEE4EF83237348F7F0C08B490D125BD90107A035A8F5330F0F296F3 DF4579D7B4A947CA1EC8975B1F6B7E3B077A75F2F42DE456E0D540CDFDECC95D F5B3FBB43590ED54FD98CBFD3A20C42C5B6B5ED2A5F0D4F06414757F992487C9 83CCE2B4BA91825D14090D1EFC53596F92757BE8DCCB7EFA24C3A3D52DB61312 C04533EE4424F37EE45DC6BDB79519A62454194332562388F3BF0246B40E9108 7B64FC57054131DA8A4699CF65BFBB862D05519755E207BD0C5E4FF56AC2BAEA 5D4FC6443069F6314E124BC02D210B8726D3ADF2EDB35E7CB1F92BB412C2AF7D 547A1E309A63114B38B352702F7E48B931550F79C2487152A5A5CBD19C429BF1 747D88BF1EC932CBC93F006EC34F9197CB9FD486F42A0D5D72AFBF21B9BD131A C89A979FA65013B3CDDA5D164DE3BB762BBB7A4D0DC3ABF3CF906549E2F76C17 DF8BDB44689AA9140ABCF001781B8906C2B020EB95FE36B8978FA04BEC5E4D82 B4A537520BDA62736EA2CD9B1EE4A126D7A76BE51C96AC556AE5BFF978C1598B 6CA42A76139448EA4C8AC849AA3AD204D158854FAC6D7D43BE038F022460A50C 1DC2B6932CC3DBCBC1C27390E29A474712004A5EA3E0A3E62786C2487EFA767F BCDEEAA4875ECA8A9A7C6F2FD1EB9DB79B7489FA8249D33E38599B948CBB7328 430476A7489C004F1411BA1D5FCD64D478424920EF72530F3C4CCA9EE495ECCD 125E4E2BB37BD4D4175950422517021F8EC140BC3B11BAA9E513F3DAB63CD245 27A0A6F69A964E9BFAF575B5E36556A15B2F2FF787DFCC1EE704994A52F2E726 958538808EE9BCC31BD5E126F848FFE5CDA11FD3F0377D9B814F515750374452 D7A4BEE6B14BF4C1A75B2BA8083ED62E61155F1B396D960066D0A35D7CF19A5E C7856AEA2C505E68C8A0736CC1675F740A662AA8BFFFFE507465E7ECF934DB6F 75004934154AA82EA699EABE6318E7E5B51DE3387AEBF11E41A413D986947FD8 23ACB99110C93391DA8FD87341F337F1FBDAFD306B4B08FC69EFF21A6F581420 893E94073A20778ACCDB074613F7FD68999BCA1F03A0E298CCE83D3D8C25E1DD 8C25F57C440C5580C87C67C8F391C900F6615ECBA0AA505333A0E00F229F03B8 69EF147556CCBD10694CB23EEA74CCEE50CA5E8F3DCC8225B950B51C7F0AA44B C1200E688A8A7CCB8CD763390992ECCE85F4855DA86ECFD21F57F12CEC09A5A0 0A50B388C378EEB1C4BBC2BC19ADE95C3CE8A6CD901EEAA8DC6F62BD33A18368 1B0C445FF57CAA3F690D872D42FE746D3AC94DC889F4AA191E824D66E8ADC3ED D7F7507F1DFD560D3D339C528714AEC12609448660243A1C24C8A31FEAA55E96 5512E63BFF9CB87AA8805D066E71C70DC175FA3449879A44A1A6343561CBBF33 B6465433C3C99BD06F2FB6A0CB4AE950A3F2F428AA2E5E344439E77B623E959C 27CBD22A9B092B2604EE92524DF014DAD590A4F474484C2BA41343306A620019 15B96AF752C312187FF3C1555B5142354F2E947391A96E64DFEEA65D99FCD2B6 3BC07AB8D7709033C83DE8C9E18BF1490BCCF65D3E1CCD62FC09F7DCBD0A31EF 70F21BC631CF5F4C112B64B4CA88662103C4343B55FDA36B0F78B6BE583E3134 464FA2B9C8A2C5BA01338C0A0AEA7DC2CCD0D0E7A02C835C1072830582825BCC E7F31BD6C7A20413F5D21C054CD6389DE00C846AE1B558EAFF7E85D07C73C4D9 CD9A1F33E0328C3B9340DC87FE981D655905D4E2341966C80787F35EAB88792A B2F35D91BDAE613DECD5DA192ED10FF454B0A754A14A565DCF8AC760007A333E 413B53F179AFB886747C2460AADF6FD1DC09012A2ADFFA6FE5228177535E91DE 71F9C9D82F84CA13A2F55E9EA931B1E89213EE9817DBB433A7EF0316E0624C1D 45965146A28962980436F050A1E7EB35D18BB8BF8B82F97D64C827F68374CFC0 E4DB0FFF944DDC0279F2E02108815F40E04EFC82368D19B89F357138F65EF9CA 878AC45EF423580843F481F1394D5DEE995E0DDB18E2B5E2D04A463672BFFE79 BB6D9957D3C2BA22DB79CD75DF28B99E6473FC222C6722B9C877D097BFB29C6D E5444CFD34880261E7008A372F128BE5CEE9D057486C1AD98E7AE24292D12231 CCFE1B54DB8623BF68DBECAEC105E446891BF4473765DCCA7EFDA9FE6DF8E6D4 90C70A79B1AF7AFE9AC5CBA07D0B839AAC2EA62842FEC9117959B10530C8A76E 85F59E6BF476A0660025900EFD8D714A018AB06240808CFFE5A3766818603531 AF3FA35AD28CA2C9BA31A2F42FB80BC1ECE71EFE2CD184B4FDC5F76AC2F549FF 33AC81C11411C47D4857E5E6DB9204AEA0F7545ADAEA22BE42CC3BA7EA3F8B90 C5FEC359641487D93C52D78CE25535A2A686DD4764C072FA8A56B982A3A7787A F124475DD5C2754430C7EC3527D81C272FB7AFEDC6F79E1988AF9401F2B989A8 CFE1BD96B21D817BBC93BF77B99C8E008E7CC2E34F0AAF20AE88FFC0BC6C3721 485DD1F25103245E854AB2B60226693E0AFA3EAE85CA52BD938BF31ABFEBEC6F 4079449F99B5EF0A46E77B6254D4FAAE33FF8B2AA3469F0F0DD625BC4FFD004E E6C301A8052043E22ED0FA663364CC9200ACE4CDADCFBD28B721FB43EA7A3B6B F6112C35C224543482A7564D62A4A8F15FE329BBF3934DF9345320561E88CBDA 1C0BF61D400C1539818D2BE38165B6439EA9B45CD0A686C7CF1310604309DE5B 22987BC91A8E913F6EBAF74C65E8A546D876E46A50BB9A3420D5BE001E0CB34A A143776196BF8167006A1052A54001134D539870CECFFD45B6E37D5EF5A9878D 2A2BB28710DD767C746767498AB23FBDD80706727CF0F556DF7A47A90DE30E5C A81522D5EC8C478BB58ACD1D1F0139D4C3561DB574AA8B1FBF0AB0A001FF78E3 2A646659407760996E97CE00295CDA398DC0E8374B6A13C3EB2BE4226F01E76B A932DDAFD90D0FB739B9EDFB9A2472D6424A45D1A698D70766469EBFD9957CF1 511F6BC41FB43B9517AADD5DF7997A4A8A8F3A5103BF6730B81845F20D160DC0 E5AD923D9E24AA7DC293E45FBF7422B952A91A97139B15235D29CC52C5084F01 DE89D2F11E7283A60E4688B54191DDC1159998D10215FE53FD89C87CE9D19041 1F1E73F063436E786959943B496172A1C497DC002E00B29A4F752CA28BAC5434 A98F9438064838B0D6252A05052EC8871CEF9FEF05A07B1E401E49324D463E41 6B7DEBD3B405C9DC5953B93E48162D93438237F11ABE83189F9C1FE70E1A56A4 CF539F7E9BA6B2B35BEB1586F59897F6E64340B88CA079DFDD1E987198604D2C 3EB5C8178AAEB19B8D2840F0EF36CCEC7D25080CD1E0BD2B3317603E86FFDC4B A453AE086CE8AFB093D57733AA40977E9C8D33E3C87DE2D4C0522C40AF2C01C5 2A7B86C2571F9B67AD85B35EC83224029832D2ADCE65E37748CE08A600641E03 6BFCF2F024ECDB4AC2C4AFC4987D01C8F8E74715567F7116597A4318331A35E0 7BB15E134CD721CBF49210AC06D161E7FE9146D43CB1181F464C7D3BB0BB40EA D19E1C33D6D9924AB13EE6C31428D6CDD9AEEBAE6510CDA14F23159CCD725A3E 1F97ED8DCB17A10783B8CDC9315FC86703FAB6A70DF55E0AB8B4C24862CDCF11 5F10FAA5E4E54660EA5EA05EAE168E36CA5255DAA0ADF9461176EDC9E3989A84 0D8D7EAA08F4C766E1A078C3B7D091B9E22A9247A655CE4190A0217ECAF88495 5DE38DD317E459AC61336D6E403CF8DD2ADD2946F933E1A72C18DFA96EF7C0E4 0A2D84D3414F3DB23EE3BB5049B174431F4EEA10415D25E41C2094CC2D37C669 2C46EA4568BB0BC49D1806B98607B8C12AB897E6AF402C6126D4484EB7D9CF81 B603EECFD92EE41FEBA5F38A93DD24A239BA253BE3776F2368E1664142FF2A53 5B40B694B20818A2A43226871AF1F7A5A68113CC55AABEAFEEE21E0F4E7641FE BB5403E96064650AE2703E43DF01A1594C8FE8646A44323D78E7A5A7CE2C2FAE F98F7D9A2CF888DD195FAEBFD1BBB05CE078C6003F9438205F8A3C2977C1827B 906386BD4B483966FD903432A3A9A54AB0C4E7826CBB97C6808B5B529D5E24CE 8C76A35EB073FD65944F54D1733FF75FD7F78F524F81CE0D92328FC171AC3DBF DB81784F11106137B72B473AB91F40F73B0B410547F5CF6613EEFDBF0F05092C 3688C3C208E1C9FBF51B505FA0B5F906C5B0A05277772FF9EC806702F0E346BE 83A535578789733FA68FAD54992C16F3F5F1B7560A729226FDADE4FB96AC09A6 4C5D79CB60D85AACBCC89C04068803B47CF0FAB92F4267438A2E7CF7CD5C1796 B07071D9F5A6DB95514B1B60EFE74DD9A028CBCBE850052EC2EFF81C411348E3 F1ABDF1A4CBBFD7EBECC48F89B18E159DC1CFA0606C3BECE071E4C1759BE2716 0705460FA9E022BDA1CFB2324C8B51B4E297838F07A5FE8E05FD99600F9E79D5 490C251772EA34DA6649D421A872CF78A9B55BC0FA47E056A6CA9491ED65E181 58E2A5EDC038C9BD89B3E975837FDBE2A9AD81F700BD263C25C85873E08DBCE9 7CC2FBD904038CE72A110493B7ACCA882FD48F54B4E0109B095838F30D80917E 5C81948F74E7F0D41652480CAB3B24E90570BF861EE2E3A5E1735636C7849C1D 60FDFAB5386526F7312481A5146C18321F425EC74ED0D778926854C5CA875A57 9205076C19AB866F5FD0439154484DA165A7CB69746199399E66E662EC2AAF66 501B6706BA1ACA001546B753B0785AC885A5F13BFB4F76F05AEADA1D290708A8 22A24FFEEAAAF3C70F89CB52EB655774832296C1FB440B4DC4957C7C32588435 4FA6775C4BB9070641EB6CB74857A346B38E0F441D61D27489CB0230A23AB63B 052C8453C969BA44B2B6E700D6286084AFD49A79DA416803200F715CFD9B42A8 D53BC397262BB8F94C7D0A2D83E1249563098645D0E82959B76E1B05BEB19430 4080218E58354FAE323F4CB4A3E20B21FF9FB791391956336DF8A6FB49A2DD6F A1F06C8C02464E67CDCB9013A4F8229E5A4F136A11AA204001D16C213691EBA2 2789C03C9122FF21B891569D4D26C2487401AF4C9B310CADE991ADA6D091248F 30D40520D46944AFEEE4B71D005191AD057AAF2BDCC166F084F29EBF3868C433 5552509FC469A57DE66010A0538D2CEB7692D1A54B5139D2FC7FCE96C4E1A82F 578703BE28B82622297BB08F76DB9D8E2A7C4B38C7A819372F72900506CBAD7A 4B0014B7A9DA2E9AE84B24A83E0BD86D3BD8E0F37F9F0E56D6102C0CAA768E4E 9BFCDB116780773E04554E67AFA899C9B8AE526257FBD25125EB7644E1AB35FA E9D6D716877D2A5E17130740CEFF27133D6A38BD2B2BB7BD17E04C21802EF184 0AD5C85EDFF4234DE6B89B40F7489B4CD79F54B9B8683E611E372768C55FD93E 3BFDDBA88B1B60240AC09A05960F9134700A97DE7E6031F5644F83B5A10264D9 6118C440225E4864A2AFC406BE4A8AF3F6AF8F3B48AF8EEAB503BF7A66C840F9 825D9D44DEDCD92A11EA70FE597AD39C0CA0F1C6AFD5750D6BCA09D230024DAF 09F807B23F356891C031E0DAB363DADC371166D728755CA4C375A846C46E7B37 695A8C66F99132593D066D0757C3E92F64AFF193D211B41405A3E528172C2592 30A0E1E147E95C002F2BE67E1FAC9C062FBF5182A0726E21CB87BC80E15FA68D 9E8FEB1888C4717BAA97A135EC4B5234135A64DE68833D1FB55EA7A327C5A9A9 78312C6B32D66B57A4834D6004D83FDDAB7905D94E0AD3DFAB8A4D5D081F2FD1 4CEDB8C3D8A344C3596A6E033DB4CC4A2BCA9A86D8858830DD5006D7C7D91F53 560F76B6B4BAAF3DCEC3704E922E3F32C3A450BCCC92E359265201F07B99BD2C 24377943614ED7A97E19D988476569CD51B0E85672F4AE6D6D46382A73DA624C 5188F727DACE6E5BC2F33411206A566B6F830EBE79CC97F295A269141FA8E565 496EBED5EBDA3E6C7DD9ACDC9AA9864C7F26227F68DAD420BF8AFA428D66F3ED 3919E517437B7BE7C9550B250E90F7E004B3C3D30D9872B84376C84B913D0032 9B2280354630E263E101EB02C92FD77A76BAA8CB1C5B5C555C81F6ED6A31B3EC 356BDF27A16C319DE965D8BE1D654A6E1980C8FC535B72BD951FBED2C6A9FC82 FA152728191760F9C54E52D900675AE8A88F7867E0A5E5465FC2ABB868B3D227 8A0DABCA6264CE647623418DC7850FCA18C34AE8532AF543E46B585E20BD1E9A E210B1DB301C81537F068B42BDB1B93FB4618B618B34E7D42251DFDF3491472B 62EE41B9F4C2F1EE43C29AD841A1264285FA4DDFDC07323A24F00EC12627CDCE 2DB8592A29424150DC72611D88D29267B1F98F386053BD9188CC91FD52876731 1DE8DF9085F0F49CA5B14089B55E2E9386D59DFA0116C800A5204F6BC0032F6B BF15CC4A142729DC002844F5A418C164C1AF0F69353121E4E680199C752AFFF7 C961E4AD7F5E48212297A346A6FD1E7CA0B7A51670631878D69A60639FB9A150 30446595791BB1F97919D034BFC08998AE74431E65800A11648D8E5ED18C95C6 F3F033B3F3E4F7077216D316CA981B5B4EF0C33A7DDB14BF11F496D754D93C6A BACDE5D2B6EC1126A0531B61B38E73F377CFED681C9DD5A804BC1B7FD78F6ABD 1EDAD16A0D3E4BCE8A12291230D94AC0E0CB7D258E46B5D1CEC91B0CE18B1412 56AF3A04F80C1655C6DB8A9105D611819D4BB6B920F975D0A19104D8239448E6 B8F4804F6088435C6C2750932C56753D14C5921DC9D871AE804AAE6D2AE9A3E7 192DAA0D6F9E1E7C22BD2A0E80216723E09213905F4F291D2540F24798CCE9A6 B6E9E7866CF589DC2CAE23A7945B52E862975F0578F7D8866DA6DF2ABAB1AB11 12FB5B9AE7C3DF18F726BC7B51C57BF184D42944FCCB796ABE1869AC8F5BDA42 0EBCA3366E46D6A9030B2EFA1767BD295731CD1DB7FFA74288CD586CE553CA71 C69BF555CE828D291172D22DF6B1FF97833BCF7BF569CD79C67A65B8D32AE176 0F8EF4CDFC09F35100D23ABFD911931C51F71EB0D37157CB9C9984A6F107C365 48AFAD53E3B33EDF970F19D59CD6D5C1D7962CEA24F4AE9C45425589124A7578 D40D09FB8BE3B386682B9919756D4EF4AFC2450C6A298450DE1A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT9 %!PS-AdobeFont-1.0: CMTT9 003.002 %%Title: CMTT9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup /UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT9 def /FontBBox {-6 -233 542 698 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def /FullName (CMTT9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 49 /one put dup 51 /three put dup 59 /semicolon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 70 /F put dup 71 /G put dup 73 /I put dup 76 /L put dup 78 /N put dup 80 /P put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0 42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259 4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457 689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521 0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA 610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8 3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735 C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933 995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723 2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0 4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014 D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE 510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5 BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF 93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385 45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757 4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47 088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8 9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A 09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988 E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C 0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C 94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741 03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF 409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71 45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95 39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971 58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85 84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A 0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B 3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B 7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D 8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737 712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3 E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC 2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467 757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C 54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981 DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9 08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD 6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2 A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5 336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB 3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627 1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903 FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72 A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6 465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0 3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32 CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF 573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA 9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D 15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5 15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1 64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789 D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8 576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540 ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135 EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC 9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099 3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A 1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598 C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA 4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0 CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7 3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9 BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6 1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D 4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442 C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D 80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6 59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647 3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6 14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59 B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34 F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8 54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588 34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191 825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439 BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54 4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F 66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E 2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A 1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416 37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6 741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1 39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC 887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49 B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD 15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526 5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1 80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839 A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404 BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048 2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598 F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B 9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483 CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91 DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62 6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B 7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7 D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B 9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9 EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12 0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2 1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10 85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0 EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518 E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0 88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842 E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8 01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68 54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A 97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78 B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2 D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9 18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13 1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62 31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5 408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF 1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E 29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33 BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8 0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D 99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE 480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481 FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB 587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51 A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4 48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367 385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56 8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38 4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C 839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C 320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63 7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F 461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449 1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A 3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500 0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77 EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8 F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4 097C4995B60BF4D8B3AFD0A002B3A6E4FA114131410D5658999B86DFDD3005F3 AED1FA8F077AD1F27EA249221585703F20FB70E37A26C6C3F2E101693C94612B 65BF89F37AA3C10A40EE8E49915F1A1B95D2193D8003DECEF9D76FDAA33B1AA9 CEDCB21C2A3B05747FB3ABDBD904B66EEC60CED2867442F5FE445587EB8C6D14 87A6B1B4871A8371A7ECA6A159EAB295B167CC35ADEB8512FD0C237421773BE8 A081FB687F9C5D676F2944DE6E6B639C37E8E49BD4A6F0903E0C31EAFC4C7ED2 C3C67E71D8BE2B8D5784E8A6F19A9A8929DF9833440E160945274682F435DFAC 575048CC768BB8F13AA21C6B125E6073611BE138AE06D13E62E7EDE3D0239474 E040B3E446165FFE60E20B75D2A5F9EE021B22256621C290A8F3342F0347B8EC CFA6AD68D47C05268EE3AC8683F4840D736EAB585C6284018DC94FC103B4A882 ADAEFB625EA966F3877B3FFEA518B809A4BD184FE4923BFE783B4131410D018B E0FF5CB22D92CB1D1C8854DAE543594DBCACC60041E0B906FE5E692CFA6D2B4F 31CF357A50CB1CBDC0BAE6C841A8C0A605330138715CAFE6EC005E8174AB7D9C 9A9AE616B75DC1CC62B7F9EE69DB9ED2351442BD48E8D0A467E28525BEB6961B CF586AE20AAAA47D9B93AE7B0A4B992B61360AE1A51EA3FC550B5EA3720DCD75 DD8D07C26180748FE67B2CB3BEB2EFB690657B726CB850C964A773F0EDE2C0D9 9D7DBED1E5E1E18F68B114C42EB6D734DABD111596AB68D8DEC5246926DB5E4E D7D701358D7972B2995C7900DFAD6F78AA604C326024C0E35EA5F2E99B2540CF D72644DBB5EFA49C1D91FCD8AA69EF3AC33385AF45F42D1B8DBCF688A431DFC3 EF8EF75EED3CA8EC03195F410A062E0400499BCF9017D11C9A4E00AECF98D318 994CBB28D7FBD01C3AE3EEDBEAAAAF122BCA7A10544804177CC0760AD483D5F1 4DA0ABD57795A29AE0BAFF8ACE042ED8D5C95DBD358C2529B33856B0E442DF62 F86CAAB5A854D6B1E30E7E671B9B57B0DD28793445FBC64EF5469CD7A3322311 E24AF1836C6981566C2B8C83D91079DFA5D02A974D3B83DFE932C0D0C8EEBB40 CFBA6E52A7A2A313CFA0DB34093C1B6E6D740548B9FA9E8A1A4D0956A3D44931 882578D2BCBC7FA215D51AFD9209524EB158E4E3FD4DCE581E3871AE2D4FAEF1 6F25B0BA20F1FBD0943FEA005DFEBBDB1CED7F22C8C8A7FBCEA1642AFDE9AB00 28624D29374A5CA5BD0060BD399B8750B55455FC22A0D8C5EA953A3CC77DD3A3 472B6E9EEF8C58E28E19DFDFD99ED3FFDBBF3F164196BDAF0BD36479D927F876 E2C9F0B20CFC925FFF969EEE5C116ED17F17E2682C997C29325D94E6B28799BC 877868ED48D7B1D23107A5BFB734DE47CB46EB46B636317431E1BAA8F6DC1817 28CCF87463C739E8E68C40288B69A9E790EB8229DE60BD665964AA130E564EDD CAFDD7DE4DFA4B553B695CB12CECEE7617CCEA9C7F5BD466DD88C177D116B243 B4FB4DD3D2A809A379413566E118EFF3254260E73A55C03FC56A9ACCEC19493A 6E8815D0B40B2A48E7DBC6DCC5E181F86BF252A4F312FB1EE7833D001520255B 64B2889C78B19822D3A20363DEE900F0BA53D9CE738F25709C81F90891D4C279 C5394DD55982721167BFA1C69C55852F92CD6BDDEFD9DCA73DC39791A85908B7 CC7E5136823E6F4608529995F72C0A7D50874B93B0FC6D6A773A571E5AA0FF10 C92F4F5E2931177CFC8B8E39AEBE9A5ECF7D6D3DA706E5924B84B8FA2FB56A55 1130E7001543079C533248B118CD4543EC1BDEDB2BDEF437CCCB539676CDFF28 9C05CAF4B8A1ED5720768705EE47AF1162E5B979153CCC82A8A9AD1393505BDA 26FB54D3FDE40B8D2AB3F2DE79A0B483F7AFFB6022B81328727F66B4801BAAC5 2EC53EAEBC6D8552AC3EF2E16F2977B8F80E8F2F682674C09CBC26C80D849237 9D01AEAA507F5481FDFF95DA933BB57CFB64C016DDE71BE1557C659D09A9710F A073A68EA7B6BE1F70F3C8E7308B276065284DF6584107A76823B9B0778528C8 ECD793F36CA5C1C405DF3A9F254C4E959337490840EC48DC14D2AD399111FEF4 D2A870BE8203798A17D97E39BC7D3A0C9F21D609D6B5FCA9001428DC67C9066A BED5FB94E6F9EFD725B23AA3CCC97EAF1033C9B48E8682BEF2CEAC57F21C7658 81A3B8028E6005AC2C13E0C807D92FD343F074F5C543F4B53D2B14FD50B45A30 86C9775D4AAF93C2E2FE76467BBC2E3A6A95AFBFAAA36D8A9AEFF25C3BDD51DD D4B4E2B7C6FEA1F4C1A367D12531326160D859E83F458CD782294CDF38E3794E 510F1C1704848465FC209C7E26472EA60F8001E945620857F4885CE61F78F66A 4190871A4136695B576E39D87E5302EB61600EC42B2218CEF1F649F29383FD6E 341F3A27793909A05FCC5A87AD7742BB41ED886460F0832E6BB8D443318AFED0 528ADA31AE91D2D0889A755FBEB9C33AFACB902E3919605A9A8F9FC44C3F528E 8BFD4F509761F1F513FE45863A1EBDD514E210C108DD567C06D446728217176A 800B542834A5ED0874D4D5556898DFBA679C8AAB914F840C0C9ADEE375269981 92DDF4B3F3E6226A6657B69604C6536785169F7301CF3C4BBF602C847E01D7B3 C3824CA683D80C2B06BC68942C8CA4DB60D80043F07DC63E6B31B6A87B3674F0 FC529D63C6CA00F3B4F2386DA7AE63BD2AA93523E3D70313687D297FCCE6270E 3B5513CACCF8AC2045944C559F001791F06A2AEB21869BBEFFD79EA7BA743A70 7917186B0E2E20CEDB0A583BADBACC2F4B3DB64A8A3F927D2000B81046D577CE 43BB0DC4AD99E609EFD5F55DE8B5A41FD92F34FC96816E948168EE17CAC0D120 13CC349F8B1225F396CFC62E3502A43F7ED355E901CA9E60687A8D5B597EB356 7E1FE367860AFD2EE7B722F22473C968C6E91E7E8A4DE41DA2DD35D51E7DEA3E D9117DE9E874092248493F0FEA331AE639578A9322B1D3E6A9E866BAE054F555 3DA676E2B24D1D4C8832355C6AB10F776F24412B106B03085AAEF2F5FDCBFC7D DBC4CC9F95E945A4E690AA2E8E16ADDD52CE957E883F09D141C560FF4A53ABBB 45B07823B592960D914C54E09E44904BB28DFF1B805A1F72BDFC5D4A8BB5BBCD EC19366A8E3E08C100E8ADC25118F79BCC38E0D56E2870BA307EDDAC7EE3590C 39C825E8958787A9F4370176A09984491EA71285ECE7AA6D60DB5ECED84E6A9B 242B0472EE67542C4CBC98AB661DABC0BEE7B548EF06C347F287598B249615E9 86081DE85D56453F3FAC216CD3F3E436735A593F4C8F3E28D5914DDF9DB7EADA 516FF8FB621DD043CD00624FCCAC51EE263B86F46A9162B18FA26E1DCAFFE7DC 974554DF975D02C2948EF4814A5345DCA12047176CBB7B68244528B6A3EF1CC7 ECE0B8D472DCF741C82801D2BE5877EC14652819A739C6C8E7653B2671E83276 75FB5C4D67331989BF8F0E699C0B8FCE9EED69F7ECF5B2127C4EBAA283D7B011 7F30CF0CFED36D7A81856B746E7B08108C9C9AB484E2760D9678B82C956EEE36 463826DF521155993F33DD1AC5F76B1CBB689999631298D2217B022744312A90 2541727F580A4902637EE49DBC39ABD68BBB15BDEA8F8713F0B309B9EBB363AE A20BB2AAC22039C90BDC4FF6459814D11ED09CDC7992237B69315F56F9021FE2 3BD0EE582D1FB0623A17775292868230D4D36CA7741D10B6C4A7890276C825D8 7F4F04EA3144B8004821F5078C83ADBD3BC7588D856421AD4561AF9DBC18ADF7 8F9CA070E79C15790E718ADCE4796C2CF3C777B2692A28F0F208FC2DB5F3F2BA 1C3F731F596FA303E9DB14CB2D5281AF7A574831257A4B4D3E78D964BFDDB79D 58497074BE55D6397C986981686771459B619C0FE8E2AE1066DFFDDE92F95251 EB30125E767F8C4B673B8D733BD22ACFDFA7B2AEEB52D2F6C4C3579FAB300B20 55FB500454327D13AF2DFCAC2A170678730D302168B433E462227D5200CC3473 8165558FBC94E9041B2D5F44B4373A60737C63F2D1E126272B8CFE386BF8CF12 511686330C6B61E5AED76AC3A475B8046736F5DF0D92C8F48A0A73FBB788463C A50B2266E2AF8E6A88E0385A485752229990FFCC06F517BE2A507A6BD7FA30A4 2CDD60E5680B321662125EAA1A5C7C62A251C762EE0A028A8E8CA439F788D2A6 54E47C631B9C1E86E47AC755BE98E7E3BF1B200E10758AE9A8D98935E2941A4F FFDFB8F5CF4472A296D6843299EA45776AB68295630A18AE7D28729C3DF2B6AA DCFA02D731A1BF2BB4715D0A9F86C45E6260E4D6213EB4A95628ED04D57935FF C24806343324305E4D81AED1E5AEEBB42CF2540FF8C96769F04FEE0864A7F085 DB143D8224A796C6D983B342A95125662E65F969D1546BC8D907B002E46CE298 900978B43AC371B432EF75E20302B1482B0BE4A1D5F933957F694ECFA8F5E776 278E430635B727DBF26863E1DD9D36013F2A53F79884B99D4F81AC2CDD3D25B5 92E870D36B2C8DA33341D19F1357D583C093A65C8B49561EFC71C37E25A74D7B C0112D1B4AE64F0B0B73405B416683AE878443FA527EEA2EF14A0234D36FF51B ACC4BE38DF8A92B6272B23E344FF4AF04CD3869988EDFDB3058C3E90E7A9659F 311DE9F880061347C3FF6D326F18C9B67121013499C63E343CC0CB02EF6AE9FF FF9F2E46D176B884917823AA077C399E7D7C7780777F02315FC5C0CEFEC3E0C0 DB1B562F6C1F61939D57267DBB35F449A69BDC6D93793CB7CE9ADB178BA79518 A43D081F81DDE88BD16F2958EB56FA45516131655B273C8CE060BBA62CC59D6B 93DD62347C2C68670073843422C24E25E891A4D5322CA595B9D9E45A4D958384 48636974E6AEFA2A58D8F70953D7805D10AA76A13C75AC5535467DE9F943C582 98545E8653E95751A2E605192A3EA7576DDC2B3EEE28037914AA83ABE4E8296E F0B84055E5413D56EE98A7337D4DD923D49C6BA4FFA8B6DBAC52E1C2B40F68CF 9AB0FED29250B1B41E9F67656E098020658418BE1B7BBB8029973BEDF017544F 713CAAA3211CE1E348BC5A56C12C516DF69EDAC03D886F0ABB2212913048FB99 FB9B1E6802D75A38003C7785EF1A1377972B7DAC156A1B41DE4D6E811290727A 9E2960C690A4BB5FFB8F0E264908175DA0751FFBB4D51E96DD1190ECDF2BC005 F6F5B75CDAB236DED30E4F71F42F15C413D07B53672BB60795604BF2CAC6EEF3 A5DD8F45023F33A77ECCFEC5402D5BE46E4F8F0CE4EC0F32F86B283A43C25235 EE90E1C05B47BE5F33F1FFF0B69456110B9A8BBC03D3FDC8454D661E711B7B92 338C0CBDDF9E9832E687AE4456DCDF304A482A72B86EF41F8447D401315B27D6 3995B7F4280F2ACC8F7031BB26D3240A1407DC0CCFDF0651AAC6F9721B8A9398 21BA080FA31CCD478972838819A4A1588D230C76C14B86EE189A124C315AA914 25649216EC8C3F1EC35457264B5C394573C71A3203663ECC797AF3AA36B4C24D D6BA6B0EB5F531B8A25AD01BD94EC56BA1C926D753C7B391DBC3DBEE2C2E8C09 15348A7E8ABB1B14AFD7A5AA07C65204ADA6A6CF391E38485BCDF8C905CFDD1F 181313BE7025266AE9422E6BDAB3B93936B7C93EB07DBE70F2DB2B7F7958D7E7 283E2A530B5BD7A41CDFF4A8C057D1DBFADBA85E9CE45A8947618AAE1CB3042F 9957928296A4BA11CC2EDFB8485CE6D255B00B2F15BCE80D4E88188959722957 5EEFD638B94E1BC01662E00DE2882C87AB937D47C81242F1C64AB7DB6C334F5F F5B73BB8A489629A36D58DBB7999ED2E0C6438272E4DB2CECCC1E64A49472FD0 AE3AE0AAD5DE8E961D14D070964E2B11E18D9EE65D657E1959738BE1A0890202 2F447A746243F878CD6FDCFC1C1F688AE4C532F2384BA60EE7243C8FAFEB483B F7042EA915A31940BE017AFC5842C951204574C0760A2010A197A7A8D1235CEA C7AEE034424412EA4A84B909A275C5BEA94F0E4D63F7E10FDAE75F8CDF7F835E F0D99AA64B6A9AAFB358ED698B10E275E1C734BC0B2804A19BD70782CA469865 281B93F0C09BF0462B817443F3425DF2F006DD7BB238CC4A94619D41F71DE01E AC9B92D6D6CA965A9224A1114C9BA2BECA3F8C26AA02DCA5A0C636DF64310E60 60BA72FE671E07136DD843743ECA7F915211B6F2D6411FDECE80DB5775DBA596 BE97576B965191E407B394AF393D858847A0854EF280953D70A727707F9A46C9 1B8A51FC1A19589750FC47058AEFF8AD1EB827CA0F3C78C859290D851D57848F E23A1703B33E474B48CAA4DCA698CC878136903D82624ED218A737F6C7D4591F C04044287D4977D8C9C50FF760AF82E80F3E6E3CAD0F034C00EEE8791F7C8E17 000FB21D8F0222103D8F7BE5FD1996F8AAE791679A62F992246AC211D139ACEB 1DEAE8EA556EB93BC2123C0B9819671EB214546344B935C99B9F3AD1B61914F5 AD96D7D63772F933D785CA563AEF0CB3F71289E5AF02B18ACB028496BF8C82A5 18DBA1A715DBDD10C9A0FCC32C5456BEDB824C59B1F9DC1528B82C235F45DB96 0271BA11D75B66DF50FF54B234B4FD9768FA146E489E257D9F5C62578B3A0D61 A468AFA9EA6F16C25D5FA4DC5D5F2A4AAC8669CA059BD9363EF6467E1EC13AF5 747BB3D6B6EC468CBFD294409145E61F5AE298785D9F7DFF54498251C5E3B87D 387ED09003333963CBEB24659ACFD273273D5655A9A01307CCA16E1FBE241192 F6E31AC8D490E31C9D0CC49AD6067C60D1CC7A2F0FEF5B2B7AAFFBECDFBB5B27 08E35A37C41A85F330ECB2C88B94CA5A9E4E047B7C700C32EDFA055335C04F40 E345BDFD69377877897B25021DE05CFA7ACE7F89389922CA0386DE41E5F97580 9FF6AD204597C7FA731DD1AC4FCAB912EEC7029FD2C829987AFE21D24F742D77 F6F689EB2576E386B632F6C3155068C53C2940F731EB37C7905CFB16594428BE 7B327CC0796E3B3FD6F7719B836A314DD685428419DC74E534E480D17A495921 5C0DEF9A7AB28CBC1C7EC5642C693E4285EBCCA41E713E1B9FF3F597948E405F F7FA11F6A8E43FD5ECEC0CE1B07959A325B49C00483656713A0DF26165CE0BD9 144079AAC23D7B2E24F73839C01B971542915D70737BB184846EB670EA3BD6AA F63B5DE5A709199EAE53CA83D8A248A80CA9FA65F03D0AF0D17CD290A62B8429 6FBB59FBD51F3280BDCE40E021D9F0552F8601F4837325B87EB8BFFE373251E3 D76880A6CB90A6920276343452E0854A7ECC84D743C59E8C4EF59FDEAC252242 90B9C6B666E94CEF8B1A5A05D7940D877EDB1D52B0588C77BFB3149951CC7B41 F2E77A627C62D6099BBFB571D90D98ADC819DA5691E297F776241EB5CBAD1BE7 6A2F5A44F5475A6AFCB4683A3FDA9442B5B9C3B4F47D40100B8ECC366BD49DB1 63AC7485A5B74EA699318C045528C1378CD84D77E0880850F723D341BB904FC0 C4764E52C0A92058B8AA8ED472473692870B09AF6E22DC29991DEB71002EC47A 5D8E90392533F3EB4BAEC3FE5F26CFDDFD28CAADE3519AC92B92BC9CB8639D6A E8296BA76587587344DFB67AE6C55C81710E9DF937FD98EE8D136A1A2A269917 D191B4EDE291A7B3E38AD610CD2C79737F7992F8C932AC0426987D029C7E628B 99B5A35ED77C5943CBEA4591A8A3521BF101BE5195E7D04001E8FB2C9BEDFE8A 16E60F3F30042A6E33DE1508B471776D74A5C66CD7672B0DE4CC002A63A78001 5BDFF52FAD0AB9815F70713442CCBFFAC8255EE0BF295F15860CB0AF53BA966B BE8856AD62DFF9CEF8679E66A156B8262D394AC2FF8732C235F4909A25E0E6D6 F44FD9C8B99E2D1A7EB964BC39E95A0D9A1B03530EF9BE6991CA16FDDC5F04EB BE6A74F1EDDF7E6FCA0C28E813555BE7F133A7A0E7D33FB311A2A211A22CF727 1ECF662DE52E971F6A420460194CBA17C19F8992C7C1A52EA49FA708FD097B3D BB797E6B86359164BAEE0CA06BA124FEEBA40C4ACDB58587CF914CEEB7CBBD2C 747BF8E016AE6DE5BEEB9C9DAA15CDC37F27E5A1EDA91099ACFDC5D7A07F491A 7179D4A2D5B5F045F824F126BB52B8BA1CD8DF1E31C45DA9126CE1BE450B6B3F 7465E896A0EF8E6BE25B6135F5C9EE3D0E8BB30B2B7C594B8306CA078D9512E9 6A35B94D24669491080AE1B9A1568ACD117B4D4A6AB6C0325EAB351655A8AEEE FC9D1C21AC27D92F53A9E41A0CCF29D98E032098F4EA9C3F6653F84C48AF4AB8 F7BE53D9B609668997EB4E3B38ACC423ED28D8832D7DE94F63B369C62795FBC0 3138CC22C0250F5CE92B0F97BC78DAB5F00EFBB57491ED59DDC547FCBDCEB9DF B3D8C0826780A9E0C5DFD394357E6BA6311C4B7E569E9353D872AE90EA4AE7BA 33F62ABF92642F00495CB99D685ED803687B61462B342BDBE629F372EEE7CC48 68012C362E27001FACA2D0CF46FFC80A2E3956F9501D2637AA1DE848A21F5D56 0A7A6965B7CA30CC20FFF711457F9B332103EB1770E3D45B853D8205577E16D4 8E15BAE0901F6EE488206A9827173C21B663CAF46118EEC9C2D86CF9314CC3D7 E9AE5273CC2716FFF1A486299C00AFE7E28697F82102A4FC554867C401F9E96D 669D48EFAE660E6C060E2917CA8F34D52DFD08428109E69BE69C49016263517C 3015CABC10001BF2515E59CB5A0D1430ED0BEFE8E5DF037C816C7BE5E0144B95 89FBA15801A48A7867D9607D694779BB772D10B6FC498929A4A689D218350740 D68A8B8B619F8E427D21F7D0F55FEB9065F3C62A24F076884ADDAE44D7EBCFEF 703C9E342555C8F985C73D05D5733F206A7568A9F3F58A8754C00223A1C5F3F0 72F387704E979796C5B525E07B52B3DA1BA60BBE7869AB5296C70DE428227E2B 8BA35911916054F35B5194CF2F67D2FA90BAD0E08BEA7ACDCF8852F22D77E461 020B6568CCA168EE756DA60BA381881F7BDE913CA63766E9380D4D52371CA9BD 4D88F97EEC9C9FEA8310BE410D0F01459BE8AC4FF81AF70E094EC9EAB7AFCF7A D70D69CC45C1857C6B2872D1B141D68341F36AD9126346230421291F24540713 177E40B77E99A825AEE693906EFF6BD3B37AEA4425F8525353F5B2BE6AAE27FD 800E0A44A75F5EFD9EBCA37878C3AA86BADD21070B825EF79FE864C8FAC2F4B4 CC3255F76A697DF96B49B7477F4ACE3E01C3B308B5047BEC9475FE9D51866376 00F8D88203A31054CA687E9395AB5E2A39F5DA26BC62F95B3E90CF97214E1DD4 3E6442F1E59E154C5F6F65C7F8221FE80EF5C389AB47F70F6B929FB4C8D8F51B 8A64A4E6831B67F27E96AE2B4E030BF39ED862F097DA695EF32D9D4C6B224A20 049A643796FACCDC81504563547E574958F55D4980602FF40D3A1E945ABF3B97 03A3E87F2826092B0632077DA7B44319E18341C0A3D1008B7C877A87252C90BF D18F22185A572F1A72D141F11A4975B4DC2134275B93AB85ECD20205B690A763 D689601CE4F859791C32BD4F42400CDF8A711F9CA54C921021FFABAA4BACF191 0D03B17046E2D6189FFA68152657AE9B54EAF9567A655CDB97DF85BFF36F3316 501203209E372AC415DFFDECD6ABDAE58C4C80A2FEDE0E29D666FF1C3D345E24 B8F0E42DB633E7254DD7EF171911B360B4B8BED9424922C4DC228A11B2E998B1 533B734E5090972DE90739E8BD1429EBAF4A40A8197B46623B193ACD00A1406D E3C887E010C3E71ED3DED4F1E44D5AA2220956849AEADB10AAF9E8B6B05FDC80 8E8247306178B255B90BCE6B21BC8C2951C8AB203B97AB3080387DA3EE38825E 561D3E738C63300CF1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.0: CMR10 003.002 %%Title: CMR10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup /UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR10 def /FontBBox {-40 -250 1009 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 34 /quotedblright put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /endash put dup 124 /emdash put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A 2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E 3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B 03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A 8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E 94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C 8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A 64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B 07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC 1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A 5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE 0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D 38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C 0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D 4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F 3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE 15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF 7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA 4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B 3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED 49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B 8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B 5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC 17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D 364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F 7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F 26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD 8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A 65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A 5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C 9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B 72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB 3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF 2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF 9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A 2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED 6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B 7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A 8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC 41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F 4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF 9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E 61A06A43575568DC3CF3844BABF04CA767E299575EF2ECAAC7649193843D694E 6CA59318C01132C361A3E43BE637B70B9966664E12EF4707F6B100BC37778D1C F1806B1DE081D2C9B995BF1EE3842EFFBB8416161FE31633A6EDA118E563BDC1 C42F403BE8A009FC756406669E34C6A08668808E0C31A589D0720BE32F3181F9 8039645643E15D25917F38DFFD8BD08A420854DE15AF291ED675A634C151193D 29AA6E04E84A598350AF17E71973854842AFEC3EB1B58E4D4433309BF5ED9D86 32C4BD136C89169D45718A88BABE25072D8E552AA4CA3F840ECB11519B06EB44 13026DD6800CBAA90F3BF0022E66A54BE1059BD5D224B674AD3199379D82D571 ABF7BDD1BFA45A0F0E9ACA0A400BC5FE22DF4A041BCCB93DC23D547CDF0A49CC 6C7DAFF30FE0843CB3324AAA3B92F543A985027FD2715F4182BAB1640F391992 E4DB6C19A96D1D48EE4A4DD94D6443467C61CDFEC9B11E07DBD7F7BC33B34BF3 EB97A7C3D0C4E322ADAF9CB6320A64DF78223011738501A124CAAF7D717983FD 8BABC1AE4CB0FD382E26BE0A83169B6C371950D7E9A94FD82BD20A3E2112F447 F1E4203D9978E6D9B8DF24E670E2D4BD160D5CABF3C460F00B5229B48CAD82CA 9ECAB97B709C0C4FED12CD9B497B4D5E505A22F12589E28B0C3017683A6EEE2F 2928DDF7763CD8F58B531F526EE267EFEDF72DCFC8E547F329A7C6BAE64C2800 AE848C69574115EB02F9CBA61ABF99AE6DEB18BA4DD295682F10B960D8F0DA3B B4D6190603E95B7F8102DE04DBED3AF90DC3CF440F60CF50A8AA982FB965DD80 E0B8F62F1589924262E1B3292F82EAC5A888AB240D40F889F9CE2CBD7F2F2E8C A1E4479DF6E27D00D4347DFBB8B977D8B1ED261C3CE14538C0AF23BF0B4825F0 39B2F2AC125BD84B6B9626300A2C001119893830B3542A09B6986620B6E9200B BBC5CA508A4D0A31B72EAF25651A806F88A2943849C5CC2CEC3C79ABA958B020 6B8ECADB5438E230ACF8939688C11F16242C5D58A55AFBAC2971E09C0F7A2D20 2B26FE7FDEF8203A73EB4E47F9953B6EC5ED9985C6D84CAFB3DAE3C39B1EE33E 8D54A862ABA4FD8C0E9787B5B71E960FBB9C3003F8034CDB16A0D8D0709D18F0 22679AA4339CF26E41992B5B5B33D59D937892983C5B1151AD6EB37B065E8E99 6E9BB66724E0CF4044C77E79B6D697D9F368A76B76C93ED4BE9C4E0B61B26919 976BCD5FA3F527BB093BBB0BB979131EF153F77845B4EB6B7378A17DD297E656 0BAA38BDB532CB389E2C60778B658220CEBF7F77DD6677D8248975B86D52ED2F 1DD38A57ABE4ECCF554EFE937070D7F73B8B51F59449236E33FB1C6BE506F7CA DABDB3E38B70398F5FD377E00C7DBDBCCA9D82180EEA815E0E2231789FF7FB88 67F04D4049A6FC4CD8F12202CE784F633E3161FA9E4CD2F3401BBEA11B43D1E4 A99FEE87D0E97CF4FA509B30F1E0672AD64EBB14C9F19F9E6DD333B78E91E4D7 058517DCD523FE710FF61D766E9B334BDD7EA54C5BDCF6D612B27BF30449DB57 9D45152EE0223988AB6689FF07658436359C2461BEA57F9CC512BDC51EF25493 2C25DBC52DCBC0278D296FB8094DF33E7E3631228639796FAB8E7F3C78D26C89 F15B4D251835074FF6EFB9261E2702167F46BBD87AF1CCE46D69A9E54B3F19D4 CDBF4689E4A980A46CB0F8259DAD1CE5C25567321F929B7F501E86FEBFF155EB CFBCE24CB837F1299635927640256B311272C6EF36DDC649D05DBA7F9F4536A0 B3B9513B8FBC8E3A547542F1DD0C6306693FE71BAD597591FF53046DC982506C D0A8EF82F11B01A588399B10AF852A61A96D0D8B416DD36D776B23192FBD8B67 230D93BE0C1238D5FD5E8A762BD8197B11E1B0AAD547A5C203EFF7027AF9017A D70DEF3A45D5C32BF964200A3D9BDF03B1CDE2A50601E5F8D083AF733C5D9B28 39579CC1D94AD59B64555DEA0DA13E2E771517EB7DB91660365FBD319FB79828 FF9FE5E425F710BC2A5250765A9D4B494028762ADA4FCC849CEB3A4F4CBC3FC7 9298A3450323174ED9835CCDDAAFFBBD380E889A002CB98D1E46747F6EC97E4F CEF493E6729F14AE0F28AAF68F401CDFC05A1D52C92E90E6D61163B99DC7E2FE 663D254BC29F0923C210385FD72FDE4ACEED53562ADC89CF698C61B81F426408 6A4F7E6211243D2894A2490C78DDF108FEF22D595919F8176C9151F9C4EC7FB1 CCFFE2DAED0451C01DCC92B8DA7C897314C6464CB96FE5E9AE8D09FF5356642D 5BEFFB636CDA259DF1056A41B007AF086F3299DDCB4BFE497658EABF868FE2C8 17F3F289BB8EE99476366FD4B5FCA6FF6D2B9DDE027C36C3DEA8D9FB8E1E315C F7AAAF23098FABCBA9ECA1B3B62D97C718E9CC920D6060DB63D12C54F40A8AF9 8414ADA57B34319E1B9DCFE37E37DD2419A93FF824AA210581867974EE20376D 20927C4E0EF852EE9EEAA6C3C33ADEBB54B04F8130C9FFE841BAB8CCFB29DCCC AEDB97A11253347D0A93054103092489A7A0FD2DA57144A996C857A51A8D59DE 97736B5DD55E7D1F3DD15B563C9EB1ECD180E405EBF83F2CE8D8E3BB3CFAD4FC 3B56C5E371D1F24F8B87871AA4DC5D36402F73E935548AC7CE28D7AF7D503969 364DB58C5D8C449D9A1CCE52D60FD42EDDAB0E92E04D4085570FC95378DB0E9D 29177299929C8B877397FCBDA368848AE438EB03B2380B4892FCEC5A6398F275 C8B9430614CADF97BA564CB4FDA21CCC0BC080D9148D461190E7A68007BAE7AC 863F39346F91568267DBB3B5AAD9AF3354222301F3ED3E144067310C29E86A68 680D1F9DABD82E2D6FAD321A778F6A7F4B4848EE947AD1BF122365095AF25FEA 3B3574B9CCEA66FF03751A4D75176773043BDA6569691729EA8B552FEB498FBF CFE32B8B3C37F71B0695A4B1578DD1B8E0D0CBFB6A2CF5BF3D35B63BFA956368 39F112348E15E0B1DEA4BA6FE0AE44F6A92B0917F673673592085CC2AC0208DE 2D2CA8E867D68BA9DEDDAAB83FC929D38927F5E5E65F97A160DD4D9A3DB6E76F 6AD8C92454E46405AA43F782C9C7F3EAAB984F2D26C47C3794586065392A043F C8F670C06322769837C380DD81277AD8FB61E2F17D2E6D044EF64802A82227ED 8947FB5A9D39C3C7BF66900819EDC802B10A867130FF9ACC42B885DDD5652727 A4F54338B7D8CCD04DE347E31DD5EB6BDBBFACD0F605EFC0825D6E4560174995 5A3AC5F7C57BCAFB5EDE28FB8FEA0015CCA84A4F421F64B9BAC351E4C9918123 CC9A9C56FAB9C164E12EA420B0B65521D001040257AD908B17527740A4BE8B4E 518472003DA96D02A04B567A806D6FCC1AB6581C255047F98C302CF6A3C38A3E 255CCC51C41FED45DF5A8DCB7CA3FA3D4018AB1B3C5A3A5655BC02EDC17DE7F2 946449F7B2552C97BFBD1C6C80E3CE122755E1679511101386A75345277E293C 6BB60E204B16949F9FA0E6802D61128023A73771AA40254F4F7F54F2518A4086 C8343A5EF3F620329AC04682962E7C2580A0C23ADF1096031DF2C0FA8B578222 6309D0ABE027DB4E7F59A0D0F33022188CAF881F52A0EB544E53701C7819128C 96E26E9CDF47938D16143720A9F774D36EF27770625017EF94F3BE6C97FB75F4 A3B44E10F6D3ABB303CE4F63501FC5C91691D5803CC94C4A4E5211BFDF5EF0E5 451D2073481EAB5035A78F14D2BC63852BF3A41D51B5A4048D514E16E3519D24 B1E2A278771055679E561A2632E9DDD7EDEA3599B28ED4C10F1929D10F093018 22937E17BD99FA33CC4EBCC92A6C21B130F0FABCC7CBE12408C1186CBA3B13CE D69E501C346EEA662F847C756DE1616B5B5E4B670FABFFE4889A85AA9AE8DF53 A2A29D710FEAAF5F275C317A07F484DF206BD0C4CAE557ED66399494FF2C1587 A6630861B8E5E62D7B02E3F6D98AD4F5D6D3FD34754DC20C8C69325CF4F43117 80CF56F55822EEFE030D837AD51B2FB722B25098E976AA164939CCEBFE453C40 54DA26BB8277E5FCB0B209B090001C202B1D417BD407D74C96CE6E315CDCC416 7EADCF5EA7356F9150A92B5F496E54A4BE33EC139C33FA3D7AE1AEFEA515F540 299DB28C9EBC83E3C89409F5D528A3CB3F59C1311A1AF0A136E237D91A1E4134 5EA52642D2D4B151D532F29BCDC1E8FA7EC77B3FDBF561F7707C46753EB922F1 FC0A0F94D7B9DF786EFEB034179022B5D8D77E368FEBD1BC318DDCCC8126888E 3277B6F6C9BD74743D3EF6A6D1DA3F7F69E0689B2712DB9CA8C96A1928309695 D64EFA85FC190E9A88B638FF4314150220DD3DC50A630F19A21D78441BA9A4A3 E3E0D201086BE1A1BDB1F9F4E6F8ED30903CBFD91F43B8B56FB269929C431F13 BD550F401CD9FC0A612F61A635C4B778DCF19D773AC9F83E5B393F969F0A6F2D 2C3399578ADD321DFB6FFC828BC708C132EEEF51812305C5AA9C5123EA790995 B17C609E9BBAE75AE816CB02FA63A5508EC4D6F5E68B7C69B3A7A743AFE1C00B 479D1F4D93A85A0AEA989D01CA06485F69A76148A5D541D834864447661987D9 A81CA3F0AFC109E62D4334B1958B0C260CEC205E37F608D53BC5CC5DE889C156 D24EE0442D2E487C9425C59EAF0DFC887D850F2AAE32FE27BEFEBF16ED33449F 746284FD593654A134EA7CB1BA98A9205BED9C2E7625BD7A614DF27C3A72B163 F57788C67D91F7299AAC5682F031353E80A7FCB23C9DB3CF6440B3223132325A D55382F07F7D83C1E7F0F1B5D751FF1F39AB6A357E08D34FF625544F0B62D92A 0441FE53F5C5068A3FE0A80729DA7693BF377C79FF3F279C52F72F03E439B688 3552A1F0429477294E062ACB878CD3955BDB1050195EF91F2010611D1680D510 33154CDEF24459E6FCC010D53C07AE9052CE784D8D060265885B93E5D201A3A8 39ED6B100E14C87992A5FC12587123D59E9C70096C0B8CCE18996C7A04061127 37CB2FE94AD25A8894EAB6543B4EDE18178B7CA02251752EAEE9007FE645DCE8 76E505CC7CB133F1ECA70526437ABA8C3E966B5F7929042A91745F43058F3018 C135ED93815B54CE444E864F840483D4B9D44CE0202019CBD40B108E1D8B4A0C CD10B442AE5C78CB3BED5E7AD9B89DE52CDC3D3FF506159E73F84CAE0C4B19B3 310F6288DC7A1C13043951094729C2D036E1B268FC30334A61057253D5ADBB06 062D9CAC36325D9668175C046E8E554101C89F31E0821FACEF7474774EC36C39 62909FCA2682F0CF31802754757EEBFBB5F98DC008B534245782D12EB30A3DF4 B892B1E064EB271FA436464256905FF2E91042882267A75914104243B60F12FE 3A9B5D9754026FCF038A8655423230E5F2984457B260354E75E7E8E438995E0A 41CE6D077EF1E08257CE1B8BE3A2397A490DACFF0F3FF8D20CFFE6BD58968AC1 321A49B21C324F322B5FDE900D9E055BF6A020156CD67EAA1AF90BC64A1E1731 D95EEB12AEF53754C7FE33167B9874D896FC5984CB032C60D66F09CBF5B045B1 EC95734469F57212202F37D6E294E73BBFB66C4B821C5D844CE81981D7D50327 F42D8210216D6A4826197CC24865813A441931DA18893031AA1EA62321B0DA7E CBAEA839D114032906E18FA1C661C1E88DE33C6337929C6FC8B09B1CC5B95BA3 E1C71C33CD9A3E4999BDCB55F0F931FE0F7A3EF924368616449551E3B0FE20F3 6B26C6317A782DDAEDC91723E25A5A325B288416E06A62FACC35A22F7B1AFD01 6530D0D6E80C193A2E891BBA5CEAAC8315281BA873C95C642253BFC2BAF34605 9EAB0AF45C3D049A8F433472560AB5DC2561FCA3A2B89AC95B15CBCD15AD6CA1 C1E7175097D316CBCC0F5785A1CB9EF5D109356B07EC553765C3542CCD4D4A71 A6D402D95A9869E5194E2B4591CD6A89A83D1ACD0F3AF7ADECBF37C69960526C CD96CEB82DB4F1504DB80C171383052DE99AD7A48CF508BE024BD574B06E4A7F CCAA259439F581467CC43F1775A797ED8151A08B898A4B4A5E2F2BC98C4410F1 108393AFB7031C8C1B4CC0880DE20C3BAE0DD0EA1F15DDA20448F7893995F28B 0608C5D9F4D434FC6B36C56A5A5748BBE676E00C3A9F418FC82F08F7C2650792 BF935B7ECF4B4B2868A4646D3AF8442072DDB42CBD89671E3D8EE4E0C946ACAB 2D7DFAD319C93B6474B36F4398D06961CE2EBC611BDFC74C06AF95BF565DDC42 1F7932FFF7A5658514C04D79CE7888CAB8C0C13E13A0A38DCA8F99A2B0BB9F08 89F413B0BB6C208C0843F607D1DD21D2D2857F5B15113FCDDF9012C68466EF82 C9E67E81904730359D72118965173587DA5EE59F28B0A101A8F641F1EFB084DA CEF86B85151E31B21F66BD9055293B5878339FCF27216CB67805247EA7166DEA 065F283E2BC91E9C526024B6954410ED143A88AA91DE752F5CBA7129236D8426 DB326A5A9DE91A2709F7114049A8FB333E87CF5D1D839F4F79D08FE684A7AE1D 20AA674461DDEDDE23167D5881AAAB018DDEEA28157CF944C55E0E7C7010FBC4 7884F438049A6F596912E65A54CE36C42B22AC762362CC4EC9F9213FCB908814 E63D7E10D6BA9CCF802B662586B6E5DDE8C7D5B7BA6D9C8792E87349A1811F96 C5A88467B93EAA04D84764C10B344D51541A987548D4F24482902A7744535988 09DC57E9031AF5955F5659922D46FF6727BE8AABB889563878CD8907E86742CC AA1424363B562FE791EB65AE23596095311612AA0720655CBAEC471721635BEA 2E322E3603F763E4A151AB2A8608BBC11AF4B9EED89930B48627D12C7857D906 E1BA68C9D2401056C6A100D5EA2A29E34DFB839A22F726508BD77D445EAE286A 50D46337619F86AF82DC4C2F0D1DAA005E17AB38E54756D48689EEBCB2B70924 D913013BA5A330D69B7B4A6B30A7396CE684D46DF2C24925CDE10CAC5AFA48E8 29AA959AFB2ECBB95FE16B483B49A6E10B009E48968EC7EBF2CA18B3A5175499 8AD1CEFEE2E3A5CB84185BE886B912F4F9BD1859E86C0F2B3BA8E4CDCC509C8B 70A0226609B2E5B3C693588F89B8B9FD3DDC670B0818D59B1AB6392B61567113 DE0F0AE4B5402ABBBC5EC181E3F9131E42B4D72FD500AF4A40ABB47FC78EC4C4 340810870CBAEDB3ED8B6991611F978A9851DBF989CB54A7FB6C5590D6F389ED 63AE2BBDB9640A581A3D0D56394345EC8A621E639A36D7A3567ED4C646782491 E6FC3D0A16096A748BCED36335A39D30BA544F5E3250C9A8465BB4BF1F78783A A6F4C8AE394E45388641DE0810E79CECA8CCB82EB5B01AEB294BFC1E797CA973 653AA8E25F12FD4637D4274540476E3BBBA984EC2B58B678650BB30D074713F5 E6A5579EB116C013DD4BDC716EDBC4B0680BC1D1670BF465BC7575EA0C0FAF7B 50B4CDA35F6CB2F3801EA75F8B8D13D5CD2B81035C06440EBFEB05C43920C8AF 161BE712A91A009B3C1DE9CE9A29149E81A30BBC08A7DFE5291A137937AE8CF1 D24CAA2620309F0CBDADE912CEE0801BA72A097446FE8DE2C494E5E7AB790D3C 46A4AA9628D791FA83B3FF9DD11F115669209BE8B4FD1EE6627E179BB53C245B 3AE42A6A95D73A45E7D9A78C2C46544DA9BF229077FADC8BB0A288B044AB219F C62E33225DB5B58C19A0894F14C57E318FD66A56BA936DA1DA059FB5E4C89134 909D531F94915EBD4309465038E6E2D0223EDCC2D9030BC5E6B07C12A28AE03B E58266B28B0A4111B445670449021001771205A0016DC0534E84E02007A65E4E DA5212D4668270F11113293A1A0FAF9E7F5ECF382760365DF24DFB1A49D50116 D2959974973840F8BACAADA175B18B0CF49E47728F744F3D3405951EC677C4DE F2A8B4AFB9740765742F701691B79309E7F8A9BA9CA4734BD8D6AB97F0B8DCC6 A77EA6F065844656ABF04A6224CBC9BBBC929E1A4BD3230B901AE1E18FEBC2DD 1642AB4A5ED317F9AADBDA2062510300CA34A7897D0EAB3DAC7DD375C24221F3 03E0A4697C6BF80426393BC326893D524CD60CCA3EAA8F09FCEDCE2F08F2DFF2 CD8C8E6CA25343FC294DF8AAF1C4938DD7BCE943E92CB8C70ACCD03CB2589CA4 E12353188F519A9E50AD95EB772C39F0D0BCC02DCC9A02C55303B370A511B396 486313903405479B23FDD01A7D1644212EC65BE4DE730ABEC92F9E5573A7353F 139BADF8C69BC5EC022D92360A28C66992515A7AC3E1AF4F87BDA91832003EAF 02B611681A280492A0C0653A7B0502FA0F036B80B1EB5A92B6E2E34F1D3048D7 9DCBC1994908801E17FC33109B407613C5537C04FFC152072F78F1591D6CEBA5 37F9E385CB0330754F7FD33255353EFB68A88B6B65D378F90E85996E29E8F888 E1C837F735FE92E1906D6A3991E23C5F4B6ADAE7F80B134DB3F2E9B45316B5C6 AAA37C479979F320C431641B87D5164CAAE38089BFC5A0466523901846DDBB97 7E626FA4406E96E5911BA848F9FDECC660F0D9C8C51855AE6F61E80CC6D7E4EE 8171B10C33B62C9FB6421E50ADAD266816B3D11B62926EC7674795A37B117816 3DC5AE02F71DE34EA896ACB2DDC623C44CECCD8D6631517D3B0D51E3F5F373E0 BA991518CE7A61A4CA01365C812DA9A27A7BF7F61B70BAE4A25353475AB28D20 0EE8A274B7B81324CED23F8144C859318D24039DF4104EFF6A46A3E4AFABB7C0 5D54A42B98554FDD4761FADED865F6CC6A62999A6D5E428B87773E34A3D59886 1AD7953B918FF207806D89C4DA9E29FC56B5335F46516FFF9B0077EF6ABE1B64 050AF7D08B8E0CA34BBAD1B70B040992EB6905A8C5453EF2A589F51ACB37D2F6 D7435FDFE1D2647F8E7C9EE8E55F375AD259E806348D28F26685AE4E64CB08C2 8479514C4F2BE9419CB9D2FE84B2551511171384BFE1FF2514948AC8E0011459 0194392A0B0CEA69357E0957CF64187606C24B66E75B90E65F6BCBA6B9507400 FF673F3ECE5DFBBDD8594B2FA9F7FFC6C9EF9E7690D1697E3286C9FEC9CDB3D0 56F9D219C8A5E8BA1E6EF3C56B279998EA9B86E18678E1D94F1C51AFD500DD7A 20FD646AC1723028CB77572685818024324CEE2DD03EE89953602B0BEBF931A2 76549FE146CF4211F5D7BA4CE8A4626D6B6DAB552E158DCB9A85A656F0470F84 396B9537A99EB633499B8D06C66D543B638282133067A5EAC753FC7B68735FFE DE9C5F435282BE7192F9F44D6716BB17CABC23970253B1C4297CCDF520407603 87E0B3D295DAA1A72034D94CA5417B0E6B5E148A2F3B842A77C54EA8010642F6 3C45F39A391F146FC070A9384872321AF86924A5C79C4932BA1E0E25EB8C76AE C2FABB9F40A19CAB8CE845AF2161E6C5CA4F1F28DF86D04385DA654DDDF4EBE7 C2067556D6E9C3326F8578DC526050B58962B3FEEADA9E30FD98162A7690B2D6 31BA0428550DE10F9A61D02A2A978709FD31D2A208379E53B1A29D111ECCE4F4 BDD9B8E29576B2F18DD4AB9FC631C5BF6ACD81CE8C9F194138A2A9497D966444 F0868CA92BB615B511B7370CFF55492C57ABBC22FD278E6396B70BD34192F086 A98492AC442E001B9B77807E3ED26260D69FCAD22B7733708CCBE7F84F7EC267 53F8163315FADE113CC938E49AC9E00928D16A317AE338E91E38AF8B894EC75C B5F3BFE33ADDC0A27F0E754D2CDBFAB0BBCF94A1BEB2F286CEB90AED9C34963F 39B63EE068288431BA3B31E134AD75D563F5B81782AF676FF5E39AF212EE0282 D66687205CB81F973D1624F14D1E424EEE9FC189327F1A502F6B45CF3C2D469E A6D952A5854556DD6C70382A7939F4333B6F4494D8FB50B1CB27C4700696BACB 087E7C705250D49F5298C5419F03F713619DC5AA7AF817A48C5E1702E1ED4482 ECEA7E7EA2DD3B1BDAEE6B4E203346CD7F7024D0AFC488F4420CFE1ACFF96E8B F52D2B9D084FA37FC69ABA82C5C1918ECD8A94CC7E3B85DBFC2EA7579AFC0749 8812579E9D682FF0EB5C00BB9BC897CE9F6BF1F00510F1DDFB17C6FC832E0CA9 79193FC6DE4EEAEF899448D12826E0AA8799B3E487916017CC3C0FBC559D5921 78BFF1C4D4C351C472C00B3AF94436C142C8C70189805894A010BE3B8FBD3A08 97DF5961E9AF3C9B374D733D7049EF23483003189AAE67517A5C953F010B4473 99EB286E4AB8DFF15C226B1B5BB0CDC1BD1B5890B49525EC07FD9E757864E4D7 1CEA3FF16FBCA03FE72D50A5FB75463D974BF5A8B9F4F8BF7909059FEA775D23 5E8A48A69592DD766EBA72EC27126AB1537E8A9E40B8E908A968AB71AE86E9B4 E34C4C0DDAA6CAE34DA06795C5C23B61F1B3029299CEA838209B9CE83B92BF1B 81DAFBEB500E13C5C9EBB2D7AC1A9F2428286F5CE7482BF12132F263742E83C4 B99633A0EC4DFC9C06964FB47FA7E8E6C5A76536ECBA7187092BB64C97B51063 03409528242E0D79AAE56E8EEC79D10809E0FC4C7894DB3675BE52AD3D954689 23FD259BC85866AC5626C80E19B46D46BE344EEBB27BE626F03E2AF83287910E F1137C184D279F0886A00191DD1E78EFCFB193145ECBEF516BAD89911E0F1261 E9AA1E7AEAB774443B5B47580E94E8D11CFC72CE036D292DE29C0E458CCB0CD9 B9FC222E3244A0B41A2FFEF2BB88AD788609E5E244C6C88B093582ECD05782A5 010C2030B988B7DB1E30C6D8E54837865246B93CE7E040E2A482FD0E1AC9D50E 632B6508154A39BBF6D4A6BFE0C835B057D5953BA5EE7E0941146E9AFA61FC98 0182BA32BFC0E8DDB61F96BD482A3F3BB5109B08A97F0C369E9B77CC863B5E5B F7086A48F59EC18497AA38753F2CFFF02461FA37E4B555C0F292BFA8ECC2B3D4 5B41FD849C8E94FC2F8A8FF379961E28EC3DB127D9F006C6F2B91168DEE7255F 4BA8FC35765D75A2A2C9065570592C25E1726B492819927E6A0278C26072A01A C3FCCFEEFD6C303C9BD2189DF98E538140E7ADF92CE4673930E950CB2A5D4F1C 948FD5F5C0F58D730E710EFB86D7121A8C77DCDFF7563E756A63CA0DCE6699A4 DFDC0E17DCE17BD056757E944D2A0EE68E819D2FD3326F9C3204CD04363B2767 1765E56741FB06DFB613B2305AA464B3A2C5950392B7DC4A37FB532B128A76F8 7BB70D92F0A5A84118658061D40DA770B3A2D8DA3F1EBA9754C451C8147BD4C8 C8CA37F12C3B3E83DE897CE25B437A079BC16C1046C3935792EF7685B3F234DF 14DD781A80C66B7B315B2FFE93DB467323E01F0426DA7F488D5B28EC0C4F061D CEE054FA05071CDCF0AEA789EAE744D80392BD557F4023ED1937A1B53C757AD3 185C0710907E7B87482C48A1E13D2BB81F6924FD8E9E8D99756BBAAA03EF85BC DE6E14CAD1265E16E781AB6FF98492DD8D479AC2E5206D2917C97966110AD848 C41687115E67B559D183A07037D04E8E2FD40A5A40E7D87649739CBA8CDCF443 C587F0D9C00B9A808F4E649AE7C767B35ED489246AAAB778D5E63AB7FD2777C1 26A941846E215BC7496D78D098CB4FEFB819FE8E5F98E50677D238A1CD1D661C 67BE46A67131B095025421A13FCDA084279959705D53F0A940AD96948DB37000 A68603C8843CA4E7444435F17DA361F2048D216763FC5DA7C687C6AC40AA7318 677599384F99D33DE44040D7DE5A870A420F638E83A811283290F0D5357A0048 8C1EC53D383C8E5E7895581B59691EE045883E3E779FB0470F901BD8613DB965 D1D005E804FA715EBA9CCB6623C51F41FE9A5FC108647517FEF1E9407D4F2527 8E593E8284E9FECAF7653D668F975436E4B44E15A8CBE5CA08C04DBCEB7E40C0 496E22802F2938433DBBCC34A0BE026AE1C21CB0B89E81159316D6F847CBF057 5DFA1AFB203BB574E7D5A78C468C285A098798A223A3234500C2564A07F416FC 3A313DD014ED39222BC4DF4F9C9500095A1F79F71DD3F065C95C3ECBBE57B714 71FDF51CAED45DE330BB35CA4D3854DD4A353623BDB414C852C8CBC4B1AC6ABD 6A3F00DA0CB3DCA3189176A2116D9AD01E4A53B7A67158D52D6C36052C625F30 F443FC0656863F451E67ADE57F662345C33A479B1832928B5220544ED54EFE3B 7517CA769B4CC4BD91C9A602B9DAFB48B89C3E490613A9B07C4385A121909511 5A6B9DF7D5FA5381FDB8B456400EFFB006F15DC1EB93D74288E7227C8FE6E137 56382C86FBFAE90C1E1F9325CB3E872E430F8525EF5A5B34BD7CA45362AC2729 E1B39550E3BA8E2D29160058F7DA661C17E009762D0D99995E0EEAF8F8893802 946EA5CF487C25E4C91A2A6B98E5B6DEDBC1BBB01FF8EF23C9928CBFE5DE8040 390BAAA66997E936B50A1FEC18A90894D832CFAA5C35891CC01CE5DBAB20FD45 C069106615C30C00758DE66ECB7CED5E8680417DFCBD9DBB672A71530254C71C DDE3144D20DAE4B196C462D8828A3D612A998C8CB163BFA33CC62CBE83E63DD8 3C4709E156A92123BF5FDB588353ECDD293A7281408B73530BE4806BB589C691 5C10A1472D6C311AE6C173EB4A3CB06B7A3E2626D7979C427C8C11EA06C95904 CF8A3D509C72C31AC379642EF9C292DEA069347C9136D71F44D39F4CC3E51525 10403CCDD038D3ED6C6464989218475DD58B27153F0A5FA890029A928C053AD0 2989CBB3B0176D2F88702D00DBA0177EC51B08D7E0F9333DC89C0E69B470F52E 38E750F11701B957A3161364F6BA74A8B8429DD87D0981597DA9206A46795412 225635933413394E4BA04A632695F37E253760874E813FD8F4275BCBB0E4C6B0 D81D546DBB99E27FF7A1AD640364EF547CB5D2DC12D7D609DB0B9E4EC651EA41 0E3362B3745F9F1B3849E2C047138C4589137160F63FB5C093FE743F9B2A3907 B08B14F51FD277EC66F56E19DFA0B0727CACD93ECB1580946C9E0092F94F740F F1347CF42AFD46F3CFC4E44BA60BFEC83F31381DDF20EC1808CE650BBB75D8A3 77827873700806A2A7D3264B95119514AB9940C0593F3EC58D3CB7281F2EA154 E1C2FA3BDE6DFBED2CE4D7A74EC9718DF075B6928437E54872C8C66EA7C17012 DEDE74F0185C67C4D884C0DF21C6F80D0820CAE35C6BAC3A9EEC4183DF461FB2 93E2172FFA04E5470C9D87A71327278B2395201343AD09AFEB35F8501B24445D 9B2614D75523AB7A8ACB67301FAAF55321FAB88DFD65577E2980418C6EF5D8FF 52678F027130DAD71117820C20DFB4A24092D8FAED4B8D926CF8C3E054AD0389 A2C37BBFE78622CCBB3CC1853E90E6E4D906410BA8FCAD74A04C51CF2691AE9C 6C462FC60E1A644EE0D90FBFA4D099F8B354A7E835BFB1C6569CA247C10B45AB F7DBBA63B937012C6E1FA810B83D449D53331DE1379E0F820F43679145B59B4C CDD277AD2EF9D907E940E4477D80EBCC77014FF7622E5AA8577C889FA8CBA263 72510B0F22D28E2C5360B2B2C7ABC7A93AB6C3D728844FC7B841CC53EDEB082A 2253170E67AE6EA143B5CA64C28EE34917ABB202F2C0BFC6F8223EC68893E887 3CEDF6706042F4F95D761D4B916DA6E946E66EB78C8A2512DBE6866F181F7480 387C49646C79DD1C174C26DD5F142EF203E0E7567A680A35A7B7C9EF3FC361F8 1101E034F202C5DB0D8CE9DC4BAB1BB9CC04CD0036139E96BA34B8F6C37EFCCF 4081A2B9F1305CC79BD3742DE74B82E39C533D4C2E65C7CD55625673B11AFC34 2BC54054EED14E9AF22B578A36D638EBBE40075D3206294844283CDE49B54E6E 11CA2540C763EC4CC7C389051324238D0D380AC81AF4EE04989A762637CF871B C43D284D7D5191C68BEEF0060081B16CD93E9F677300422A7CD2D4EC541A6AA0 DAA2A8A44BFE7BDB65A989AC89E5332DCA160C92D2177ABA2B3CC510B1E6CB2E F4C92839132A822CB52941E83E9360A96BA996B0FECF3EAD5DA932DACC0163FC EAC4FA40275965FAF0920001F087EA4820B87A49CC4CAAB6C336FB89FAF09AC4 BACEECDF4B4C106F70576C53F55390D50C6B8EAB81320400A24626E246EA71AC 98607D9733764521EDA48A56F6B9476030471DBB3D91854D4D6388D0A62F9E3A F5086060024541499A375347F861343AE902C150AF033B8F955CB664FA657742 93AA641F64599C02373F1881272B4A08A44D583D76110A43832F6F22B86DC5A2 D33053854E746DF104241714A2B17E10EEF0AC2929B4C15C5CE3D5D7C2EA7FA1 28335A0087CED3DA9536E8460CE5E957747422A3644F96C80714E3B7DC76BB0F 73D6229AD8FE72FF8FB58EC577F2253E2D5C27168D00401C94201E64EF770A07 DA43FD8C31F41943E46EB80DD3D9CE38F72AADA9E70B772A692CA7A41573FCA6 C46E4F9543C004167529716EC417B5EA6AEA374EC7EA6F0F79A5F32B6F40A6E4 13329175694D7869E60B837C4230269922B681DD5588EF0B0D77050B71D3258A 89DFDA0E7B4EBDA9F050951D4573EA959E5499DFB5BA7FC894229B26DAE9B82B 8963640EBE6E892C84FB3954ED3B0EE64E273761B4CCC34E06D88C630A92A79E E2B0526201FCD0835D5760F680BFC51573894FF976BF8E6DE378E3B24261C8DD BBFE0C9619F2800F807716E9353489EA192157AFB5184B4D4847157491D61C9A 93AA2DA0B076444CCE6A2065BA5708FD5ABF50A8AFA43AE65982F596CCE43B0B 550C4D63590E0B8C48884B2388B1E3A050035DFDEB1DA220ABBC945B542E4551 A039914EF703EAF77FF5A8F53073775703CB7681AC0ABA95E1CF016BDBDB0277 AC407281BB4A5DB2FDC550DBB92130234AD7054C851A56EE0AD6827B89BCC5A5 2748735C0F862AF250B55D2CB737DD5B0572F7C129C09828E4D71419C27B59BD F9AB2A053F432A956EA9E6801986D3B1E55A80C4397E458ABEDE8E9087B07FBC 101F3BD84D24C5BB61CED41E292B9CCC884681A3072E0D420F0EE2B1129FC5AF C74D2A359AFACFB92A1C849559DFBF0D09018496369B5377E696C1CC6B9D9B67 030342943DBAA19E677DB0A8DDE0066D8E6896CBBBFDEFE13EF9E5A85D2A9ED3 9540316EFA056C11A8E65480F85A0CC8D0DE150B8C7D22E45DE10710952C3974 C9D6026A9A6894C1AE2C650EB15EDE4E87E4F457FC7B8EAD32BCC5FE508C9284 EB456AA6FB8D297C3F5E71AB1526956C66CECD83124EC68AE6546E9C3BBB42F6 045F4A6A557145FD982F599F8B285C0772D6F1EC2F73ABC61E7EA0E6A8A4D391 B5CCC56AF378E9CF4DF4732548024D51CFB3DA18D78747566A7F7E9249834BC4 6557A1CF2489EF195FAB236BB48FF427FD32E1903B8FF82EBEAD2E1CC6D54821 FB3F6763D2CB4E6E383324443D1CB3295BABE7328B9FA95813932A37FFC3A9EA E45196FCB6236C73CF95FFB675510259939F4525B298B3A69D0B52472BD31D45 24CBED3F82F7477A180FF3430212B1CDC21EEA48F799B01B763C93CA93398E46 360707E212942E17BF445D2E054EB9C35B4204A7AD6E72CAD1DE1589219E6530 7E67859BB41148903CE77201B8FEE094EB659865F6A20E3DDD920CD27B118249 FBBC11810A14E60E8C09E00363C039AA0360BDA398F3C65085905EE781AD5726 DBF612DFCAB47C9E9E3E516CF26F53B6605124DAB8C876F50973BD3038B03EA9 AFA4C6769405477A68BC4D7900E1DE54207FC766AD11F19A64AE8D9A2C058BE1 E89035EDDA2E568783B36154DAAC4E3A980A38968FF9B81573D5C2B3FDC093F9 A98050E3E1406E2FAC3D1F9D11BD6F511B1A044D5D62329DFC901E6F962A3DF0 3663AFFE48E0154AC5AB244524B79B5D5649A2F9C2223DD97594E3BF55225858 1E8173B8A7BCE623F9B641AB8AAC88B9224622E102CF2D091ABD006875F6C616 FC7220BE93F77A11E729F04733D12F8E49AEDA23A449CE772971CDE7A8065888 0032E17FD396B162C22EC213E0D303297FDB3160B303F1EF69851506E3332994 760B7E59FEEC01445E28C6681E85D90BE5680020976DFAB52AB29EE292747C5B 41752846FCD3C2E0A2D0F0E8DE92D16B1B5DD41899AAB80EDCF2487E1A986E59 F7442F68B05C8E1FF12D0D0CC808ECBE51CA429D9FE388929125DB8F03036C95 39BA0153733DF29B00DA9C96303D265CBB80D314EFEBD2AA26FEDC7328937612 BBF2714552B94C8EB9A567928C0D275C72AEB08638DE4324115AB9A451ECC6A4 F0E47E73CECFA0AACD1DD82232540A7D1FBA6075745EC8FC36FD31E3BEAB060C BF19783B8B65519FDA47D5BEF90ECA881ED512D200188ED498781F6EA83DC1FE 95815D1B4F05A33230ABA8A1FE53E13F35B92C1D76E15265C1B6F69103FA33D8 A90B1176439861ABD9324D2AB91EC9A216BD93472BD9162F9B9D1C0FFD26B185 A696D9C1927ECB9B20F1F7E1454AF91F9A4A3D129C4B034BA2D85BFCE6A2A1BB 97B5674A51D56C6DB03A8F26CBFE9DD301513B2671F0BF7B074C4D159F9FEDDC B1225B515C1088056A9D81E6FB640FC7D37D3B9174FB65BAF5AE5A5906A5B250 B7B297C805A087FAEE9D888E0844014C3E4931F29D4B75F8A31C02B0B69A56FF A2FE418192D1E3E30FE8414A1E1852C8CC2EEC091F635F6A76EF82878A260F9F D9CB3BD28EED2307F1E8A0FEBF82E7B2862E176EEC2947307D81607CE8761480 6DB2053DEEA46B9391ECF931F0F9BB8BBC097A37C6B02AC724D839BD5AF43C5D 7DB5146B769DD171844C8EDC0C4F93A63CCBE7519DA6654422B1E4049AF6E96B 0B23AE5997644EDBDB0C139BD45CD8708824AECA2B07200CF7B384B72D23D60F DCC3A98CEF3F6F4744276C714C08B835FA11619580E8E0F433E8D069636BC321 42D6BFA12DEE9F2D22293950E5097AE72625C6A8BECAB5C0656716D4AF11C755 298500684671ED70FCA40239AD0A04F4BAA1426B5931BA1196F1C97C765B1C05 602B887B8482F9A4134E3F0C557E1420A9AFF802445DA1F631B82AEDABA2B98C 716B9DABFE8E40585EA65D7910A2965F99C5A63BD178E607547A12D60ADC5DAD 589F7EDD6482FDB2113622C07B0444DA233213846A61C260DE760485A35A47BD C020482DEB042B4D7295A7F90032F7228AA7529E7E2C9BB2DCBA64D5BC6D5419 41D306C16B0DA13DBC5EB7C6874B5362A6300CDDCA16425AF32FDD997E48429C EB4B6ED76765939DF0EEB4DA1C58D79BE11980B636C9ACAB2776D3549CCBF157 4D640A86E1B6DCD14E56F18B0B30CC1FEFA6199BCF33C80FE48EBE85BEFA1174 4F52F67C06D192B48A79BA47D4E6790563DAA2F1B2967B655FA0111741854C3B B53410C582011F89D2BD1509718DED0DA887E39D1FFCBA9BEFF793085A448AAF 2798D65DB0A3D66D235C00A9977F2D3D3E978F4A03FFF783BAF0C33949D42541 FB24EFAADA5632EB66A1CB60E22C957B13C7E52D8F49B5C99A52FCEBC7159E33 749A4F647936CF51D5EC511720FD6DC01A4B0C2D3120D4DEE5E498412213DD20 5C10975536EEF28F9BDBDA565779E3C9F1C3A087295F6C1D4DF2CB44104BAA81 C5C8D6B4811AF48F65A3D5BB01B982423E372D612FF20012B0909EC8E41DD25E 9B21963AF687A9678FD79FB8953CA5A1E38E709457C196D3D080BD764E898617 F7EDFF583D9D75D8632BBBC57982BC9BD23BB6D9E6C06497CB4C01625579ABEF 1BB42CA4BD7261CAE0CDFA67F50A1563307DB14C7D3ACD49E59E3842343A97F0 A5C45A8BD3D80A583B90D88D8829F27B093FDB2E91FF5ECDEAA81DBE611D93D3 F4FD48F3B74EFD140EB1EC4BD5A463DCC84E2E7B157C778368E46D81A7B29F4C D4794473886CF8E2CDC60D2FAA4F537C969175E3D428A3918CBEEF307B34E981 9534B42005097443968D4291F3CEA793E707B37CA63CB2516E8575B8FAC0EEC8 48C4CD48E2819E4DB18E428BF7A933753845B5ADFE3C0662C147667BF0FAAE19 3B6CB8CD20C9D1B5657265EC8F04AB427FFF352BC8A343F98D1AFF1EB6EC03B2 FEF15CD3CE27135CFFBC2EDBF29E3918330D13516DA2FD899299F4DD996083B2 AA5CBAF791C8BFC31D25EE31BD8F9E1946FCF35DAC9ECC347BC33E82BE5E5236 27E424FC8F18B01BDDF1B633C8BEEC69B772F2CFCB521FF7ADF2CD57C6AE9FF9 B39BE3E3A5CCA2DB161A441246D970484B146B3275557216D001553A58859F12 9A102D85699E24B901FC3B4D93B84F83BC0DE7AAFCD886703EB065BBDE63C83A 958EFCD18D53136A283E821E7AEA7EFEFC14602B1E4C428AF80AD991EEC31E69 B0989D19353B1818874BCD39DA51EEDFE7EA12375B6CF462385963D5CA49F7C1 E8DE6BDDB7807C3AB5F232E9C8B242F09B18EF6B7C4D88E47E3BA33EE16E0A3A DBE6CD175E403DBB1EA5EA1A74C72D749D743C63203050E87A60C952E9925ED9 9C509459F31F7B69E38E737EC96EAB6B2402F689C10567BB758B9844623C96A5 9206B8B17A51D67745312CC02028917150D16CDC362E4052C6F5D4405B686A6D B7D7CA7E60A99533D0AAA5C0797BDDBC078997FCC20645763F4B5F9E4BCCBE92 E2E928BDFCB3EC1A9941CBB04D85A0BC386A612A655D849A34A76E3E3E1C91A6 35ED8D77D27B090DAB616F8772481C57741CD4A3803A35E863D9D2C4863F0AEC 305059A8C70BBC916AAF8A79077287783F2F01C0F676678D6EE8D1E7F5855D48 958D0C1304F94B4FC6BAD1FC62DC3834713803B58C680E1AD81E70A09143509C B79A5BD469AD6D63AB7C8709BD8457A635E85EE5CE2B81B565CAEA18E6A6F738 9E40522E0D7B3CD35B68CC2B88FE81279F379DD01643DD52D74046A0D0FCE216 BCA962C1D10BEF7FE76C602CF2F8DAE1F7160555A806CE3F1F817A3694A2601E 443A85C32E47393B3D4C08ECB5F507C7A12536B89B446569E5E54512A4897EF9 84513C8BA4B9C8AF4ACF81B2BEDA480003360DD08DCF43DB57EBD401C9C7C4AC E08BDA494B711F9F2E2F954051D7A759BC73E5446ACB973F2EB4764BF8227DFB 08BA8DCC4CC289E367EB6CB79B8798FEBD585E4C3DEF59834570935A6A3DB3DD 9630020F4390FED9215ACAFD4683FE82E1F67CBCA8CDEDBDBEE29776AEF92743 8A28B00C873FEB39A9C693770B410F1B91F631948247658632896F821A43C3BC E0E9B92E8017F7E5138F1A472FF1C4BBD64F1642A5818F138B35EAC4C7C1FF6E 917F0AB74AAA9752283E94DA08563A52BBEFBB97E43121E5FDD1383FD94177C5 FC7B706A19FF4B8434B33D603E4F05B5FEC2D8A6315D2CBD03527403FBB25632 4720C539EA5DC49727BF459E73770E64674E49FB76DC914572E9CE7B0CE5EBDD 50CF330BC6DACA9981FC741455FFAB7E5C4095B0FBB4ED94F327A5D0AFBBFCB5 5F795A9DB07C04BF326B8C95A73BE943EAB0203DD488FA7F6167CF77638D98B5 FA44BE3FE030953CAB6CE9F0BD0258FC6862CE8A29D16528CA5597E7997B8078 70534850BDC3647ADD483C6BC7081EFC121819CCE63A080642ABFF4A223C1CC6 A866AF0B64EAADE21E55123A8181A1C7F36D5BC654C6B31231B6839FFFE492A4 E5700603C7B28333967D1F17875ECCFB3590F84451374E30A8962EF0DB618EEE D15660CA35168EB3531EF23370A13D629CD1B601178A2A78FAB7EF75D59BD3B3 3C0F6A0A2483964AA9621848310A1BB3D9AC3EF682D6B2713F821DEFB9208388 09862D1F53E11B5B822A4F3B02AC5C6CD27B7EC5C20CB2726E811034B360C16F 7E0B3CDA6E68A36944337E9277FF66379D8CA2D67BE9BDCD844B6FA85DB222A5 DA51BBFCF8656D5038CB442C49700AABCA3EAAD9AA163B43EA2502CACB0FC4C8 FB9E6520CB42F5BA1175E9E56A13E4627B81FFF8865DAC818B0A9C2624DD436D A2E91BB348E4754020ABA942C7D521B1052D8FE4ED5B5680DA3E33F08B0021F4 8D62D2DE042B497D8DD8B37CE488FD543A1706F1C87BC111CF8AB593E35CA099 4D2A02E0FA787B6C090023AC5F62F86E1591E37EA20006B9D3195D8C047CC5B2 A120139181147628CBEF57F3FEDFEDEAB16B4B7282DC465FC53E50F199A79B48 8D966083736285148FC1A76382E4991C7EA605B05AB1460C2CCBF10A2EBBE340 ED042D2A9D2092F3E91CD4C7BA6D9E60EFDA103206E67C6501CC95062F70ED73 3A591E7FC37CB5A10C92FA2808B494E4BEFC956FEAA6EE82F8D03663BE9C9139 836AE3D1F88C0B7DBD8AD9FF3BDB7F36DE336D4C0774149A9810C27B3A2EA083 BA59788788002481964B952182374BD1F9A72545CBC4B0F53EE7411E35C04128 5CDE87DB0C69A2B8AB74C702A74130B302A8BA4B85D021BD021A68C76357505C F439AB81B5FA7834BB48049DF25EEEF85887AEA66DA7234F11FEEF9E665EA2D6 2F896E5720679F8546C80B37FB91AC7A1EE7182851B3F20BAEC72E1C74E18755 3B908AFCD384F44E26674D13F3FFE746A718A04F7C92D0E09C21C1AF7267AA50 0C7C0438E3AC17251A08C4A39142273868BA91E4B9A41A159E6C7B3EE1B95894 625F2AE90DFB33B36425BCDB41AC15EE4588EF93C29E60071F247432C76BDC13 7270E92989CFDB470685F6B5D187E15C9078E09A0CC2A46B9229FDE4EC46B236 4BCEC1E9E0AC88617DED14FF9ADD9B3C874541E226EEB642A3762A382988A15E C1BA3F257880D0B0CA7912BF529F626E76D1B242833921A29725CEE9A66C0068 3232BC8A3170DC768E8D9947B62742B9342B01AEF38E8331B997AF996A73FC48 C8A457977CF1B4251E645F327B1CF9376D15ACD06D5AE59270E7254A56FB6852 19CDAC3B14512CAA4D00823B693A1FF0C4E2462E3058DE548CF52047D9F9A39E 109C9CB83E5AAD0A3C958FC40FFE45415B1EE51132FF593913F3BEE1C01AC778 1BADA832CADA92FD40EF207617857160563BEB866C76D14FA651507C6739FA28 FDDDDEA39E858CF7439BE229697565228F4CEB4C94A6878D30D32A00A1E5960B 2D32953BCB686E0DA000AEA0192BD53618AF9481121779CACA0DE4F2FD4CF81F 8D4B9D3846AEB66795F81D6EDBAE8BBC60AAE4540E19A6D2173C22D50F9CAF4F C4373617F5E449AE35F9820A53893570545D5EA6AE1E8B3D7775535041FD7860 FCE9F0C78D142172CFB777081BB039877B98D59C797BB2CBB6E17E42DAF185DD E593D88552CA8605F910FB64C4292052F781FF971200FD88FFA5BC85CEC50068 A91B20C2D4129FACF68EE0DB5D814B107AD35571F3BACD2C754EBC6175522881 25D2168FBAC61AAEBDFC1F5D64F2BBDD8615623BCDAD49F21F7FA77743CC827D BF98D727204FBFB424F16C7151C282925198C644119FD82B9402D268755501E5 7382AF8B16A825AF7368B2D04B77EA16B9A107F6588C346805EC51AA2954E3EB 59F5C44A28A31E7AB1724337C42F4950651DDDC87F5EFFEA1B537F92A3F60058 F99F05AF0E58FEEF778DE67A0FABBD933F0FC8D82C9A463088D46BB24D649C60 C32571EE3E11E17317459D2CB58CB54027F895A862C18999BC0B10B1FA9C0B8D CDC2DE7847F8FAE9CEE8D817B4650D730B52506D2FDDB02B0B8FFE375E885C3A 0F4A747C63BC4D70751B98A32FD386FC8BCC07CD52A9AE3C959311941C77A5C8 6A5109E4F43C7B79A779FE30DE2AB50F4D3CCFD51C5CD55D7C43917491B364FA 3BDC3B24043741B0C5D617688A05BCC8F01A14D643214E3B186E6D791A2AF3D3 A972AF68CF394DE082CFCEC222EC928825CEEFAD02E84F845A5744EB7FB9841C F73384071D6DB7E6692B8792DC38256446FA4CC2D3D1E6F7436C568B97AC2950 167FCA9D6D997218C05A905DDE26DDD283F64E21B11BA2D9217D93DDB0D2F985 10770F9D756090F8D5F3B09A8B917F12D8D43C4B354FC26C8D56F53C62872CF5 E32D25F0A993BC0F2E4F0E2103DA6E729996268A3FE96EA48EB6EA6B9C21D042 BBC55FBCDEF0C786F1CAB555DEA42862F3B6B212952C1D944B010EC51DAEB5AD 6E0D7361AAF600CD2659DC59DAEFCE791D9B0D3B718D45A1F93CDE3B2ED72E70 13EE1705DBC0A8F0CDA57068E671B86F35CEF8161355336342F2B95D4092EF3A D403C417A5DACD576CC9DE10F0F837240B3669AABAC540361BC69F31AE7ABFED 96838D6B70DBF3BE145BC07C60FE6498A925C51471788AA5D8E1E69010C8C513 87C6602BCBD4AE75DCE4BC916D8E4F7B663EFC9939F55A6A8BA7D445D849BCB1 2BD64A02224B841BC9872865F9A4068DBF73AF28DFCCDA23CFA589FAF6483E4C 1A0D5D377CC241047AF5172C4E1A7E6C16750E53E61A74BE0CA3EA6E65E9D53A 912578C709131FEDCBFCD1EFC0610F6D105438CF64A7F259737C3FBE09DA07CF 8C67CC6FFA640DA3D57B3E2D695DFECF53981357BC06FCD7D089859064651EE6 607BA03B0C3D7DDB0EAF225F1F28E0E4B38BBC08C76B6C42C4B1747AFCA9F2D5 BFD0073C03841155CCF38214F48EAE34507272EE5CE69051CA87A6B6214C7A0E 27F9F3AC4C962E920542C762510244A6B61502684BC99F9867557926066754FF D707640D0EE946F98922EC777B3631BFC5230B3892FBA074E6B0C91CBB36E51F 4BEFA5CE13B58B6278D9A5D82C7EFE170EC2BE0367BF8531C7495C37B848DFE5 3E789822DAC88A3D5ED772D681F4915983B3A67D3949FFD1A659F936771AAFA8 C61C3C884F3BEFF84407144332DEAE18923FBD1CCB54DDE059694BB3E46BC0AE 8C5B914EAA3EC71DA87B4E08CAE59E839546E0D89B3287EF19796E397826E7CF 3E966F623FF66FD752460A15A7D85F84DEE0BAA16DBA3A649DD0420B28B4C39F D49F2058BC109C46C58AE2A9CF47FB3EE019BE11817C2623B473BED923955FED 5CC714083DE1710E8648B6CE7F900F15C44344B2FAB16355FBD00ED9D16E4396 36AAA4F49EEFF25401EAC8143E549824FD3949091BD47F24A84987379E3C3526 8378C1BC4A12B09DD99B6AC638532477CCA879518994B01CD21A3930F1D9669B 8A778E0CB2A68114D40996A3CE8E55436C5E8F20359E45A434EA9261AAF98F82 269F021803FB661D4F8C881ADC90A09A1FBB2D03AC115D3421F122D01376AB23 0220BA0DEA220D22E1490FFE1DD1CFC30986ABFED309FE126F0AEFFDD76EA1EF 65DBF44E3765AF88E235C74E5242B02C802E4FDA8147D8874CE1C71669F4C261 E06BA951DABCD307393DBE0F01349B66B8CFFEC90C39DD30BB8FEF864F5D85A8 B46D8A796F5E25D033E59E14EA5E480F34807F92056CB5C143434525B32A77C9 A76C1713EEB2D49C346D4B256D14EA6B0ECE2709A9E500C4EF203E031AA43459 66CC59AB6C19BA33D153A4C53BD6B6037C59BF2C5EBC14563D97E38742FC23E0 E6C5A1E8896CFA9A03FA76F1947FF788C7FC7C9973B958CE08BD2671C87A4EAC BFC023F12BDC146A49533435C0A60D313E0A08173288432DBC2D9DF015547B95 A09D740908831AB01ACD75AA036961BAE0EF713470E727FBCA880F252116EBAB 47A38B2D4901C84496FE92D31BBA8CFD8987FFF5E6E290EAF41E4EE3C9C7188A 76AAA149913F62391663E75BA83A077EDA63A5982C3FE0EAE75C5D9EE8E17E5E 21454664F25BC0684A225B5F3615205A85C07DF069BD1FE0FC10F12CD65CF334 1C656085F29212B1E06834F4914260FF7862337BB4A256EF78D068C307947F30 89C19617889308331CB4B53BA71E38AAB0D161B4112223719DD8D6D63C33FE3F 569132EA533758DB58E180CFBBD49DCD306FDF0ECADE93EA5495F03AA370C394 F8BA290FE270F202AEF202A6D15311D2F6EF4D7240E86F95224F6B2B58E0F81F 82D037BB45D290EBD666AA3A3047484A4EC3ECE51978D2C860FAA066FC97C07D D6CE20450B310D93EEA5A306DA97CD6FC055ED1BC298F994CF8A92F2F8335EEB DAAED0BB928567A3F61A08AA1760B22413020CAFEBEC16A4AB9FBB6C0FCFAABF FF240F40CDFB5AFA8814156921831411912E2B8529325C35E7EA940610C46CCE ECC4090734C7DEF297B88B4B4119BD386E51730A492D9A53996A5E611ADED22D C6D38152834AD04CC9996E2FBFA34C90BF57ED326BCC7AB3010273E5EE8F1EE9 60184E436768D65329665FD1043B419D165C12223A22242D03BBAF6FD6DDDD5C 25570137EB04CAFF3B54198F049A587AEB1DB7604A79F5F25AAB7D457910A1A7 A5C57B2626502F2C1B0A943C28CA273AD4E8750452FBBCF0DCF9A3E5A40DB15C EA31013596481168DC5C66DB2C1A5C18E8A6C8DFCA1BE89FF5727CAE7E9C5250 67EA84EC9B60DF4CEFF2F4B127D9E6B000B543048D67884E11A41EE56D2D7736 E1867FEFF8C8B97DFF3749A6C583AD095B8EDE970E3E2011996E4158CFC4E538 F2951A95B1D9B7D778AA7252BBF3AA1FE817B6E1A3F3831F981DBBE0232B783C 4BAFD6B0CD 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.0: CMBX12 003.002 %%Title: CMBX12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMBX12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup /UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX12 def /FontBBox {-53 -251 1139 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 44 /comma put dup 46 /period put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 87 /W put dup 89 /Y put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE 0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D 2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C 42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE 78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D 9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC 5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF 9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE 2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE 947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B 0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D 419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B 70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE 0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC 9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D 1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F 3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B 57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC 8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC 21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F 07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E 8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E 8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD 595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB 313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B 82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D 9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A 31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E 5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E 94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE 0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E 7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE 4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F 744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D 67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA 054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA 6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B 8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB 77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B 72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D 99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD 8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C 82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A 59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C 403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E 0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC 9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C 5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D 6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E 1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4 0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61 CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27932ADC486BD9CC130D94BBD05 43872FEBA04FB8866ABCB4D379696E73B84BBE98FBC4A16CFF22F8A7AF754624 2912C228030FF7EF23D51DD61BEB5171AD31E2B630475E16B6E0F3C78D44AC30 712D165DB658FDA800798803C3CD32B841E159AF0F748400314FAF5038EAD574 57D57A34CABDBE4B8D145E439A11585A0CEDB161559AEE6459EB57592ECBF980 681ACF9AD4AA4BF09071C600432BC884639C5F2C3AC4B53CA6285AD78B3070A8 4912ADB3C55A03A6E1A795BE1026EBB6C6E90DB03B110D3F098CB97BFFD836AB EFFE06DABB1B3AF419BB3E10009AD2DA9CB7B01EDC45BD60B4BFF2C7E54036E8 5B6BEF57D32A76AADAB3B1683A49F317F6ADC62E5AC8BA5514F1B560FE8C3394 7B6536F37C106A2F7A346EFD1B0279949DDAB840CB184F55E74A1517222483F2 F8DD0E850E93B6F294F711DBB234D59406AC5BA131B55185128B95723E5F064A 8C00EF33860A0467B3ECF05E9CCAE87111A62D6FAE5A661014C7D1E7292AF006 F77D59DD6993FA330DFF85CBDAC37A18D22AF83571E74E93E55AF28C9438D71A CF5AADB51C830DFB43104B9094BCF1241DCF70C3481D70B0A96718ABA59A9912 3D012E528626FDE23D941ABACDD35F58F19DA750BA17D5785FA604F4D91FFE46 B0AB1158E2E16D72C6C1D563E647AAFF306E3156A8DE6384030E1F83FA970026 795E8C9905CCF7E0C355BF05638D13FA6B0DF34FC42F166AC2B66607E3DD6A0B 0F19D8DBE03FEB652D9962B9CAA991223F58B3B945FD7E893EC56412F1D6DCE0 2BC705DC83EA7109A632270F024264A2DA7311C4E185AFADC8D2C6B58C0BD2C3 4B38AFDB4EFE7E6E03F76E53C4B9751C138349D42FF32951B446AAAF50C4A9BA 90650B757DAC00A06C047685725F0D1D8E0A7534B26261AB4E79B5B88182AE6D E6FBB991E6BA763687CC9FCBDD922BEC387620F818A7389157AB8D41792E7CE7 649B1FDF4B05EAAAE1B7301710559EE1E232AF70DD2E137157657237DC466C09 183D1EFD1439003BF9D14D4CBAD51274816E094ECDD8D4477FE9D58122AA92A3 1BA2D3F48A9951FDCACEC51FF9835B21C8BC0E1ADDDCEBBD3FF56BE075236F90 31A61C56B7AFDDB9AA121A24F1D48FCE58E1C584F05B5556592B80824BD2F9E5 88ED93DB19CFE5082E12B3158444A5F955A2392D840B3E52C74651ABDF75263E 68C8B20F6108EE6EEBDC836838FF413958C294E140FB3679963224E6288EF036 654CDE66C9FF8BB505AF95F29A5EE796B58B7205698375727743A69920D43D65 C1F9F203722B0C6F400BA4F72AF4973CD6772BE36E304EF8983793547EBCB7E7 5B93EB6160FF8860E4B0DC3BEB649C7D8E8BBFFE919E67661C00A7AAD0E92D38 5BAB4A07BDF83A31AA8CAA6B995B8B7D0CF168E7488D4CD98A7AC3F0A03E2BD1 0F6D9E915C1511976BBAE3C6000D428A52114A7DEBE35275E642B01C92BF9F8D E48CAAF7DF91E17359FCB334E5189359A26848FB3D21368120A93965C5E695BA 49D584FFE6A7463499E10AA7D453B7B39A4E69395C9142150AFC85B6EA0D59D1 D2749DF1E7B14F7C1977C9117A1D7295F527D4FCAC5610CFCA887632DDD84014 7104D659F4EB53A4C92D553EFED124192BAC43D6BDEF60F3CE6A8F7E1946A2D0 125435F0889CD55C6B77B5BCB9A76D142E802B56CDF2235A070B88AF1CB857AF 8B11DDE2A9086BF1D250C2E355A4C72A20956992B43013F0E5258165467AFDE4 9CDF57B377F18E497004A59EAC9D60F72C8138AF828A73AB373D97AC2654E2D2 58150C99F15AC779ED77FC223B3E7945A29C8F12653ACA9A717CA5FB39209005 2894F70E3D5F027319264BD398F94E4445E4A4D54E3CA1EEC859118192E0118E 78F9ED10596D2F87816D710DF57315BE9FB0BDFE63E74E4023A8320DE5CDCEE3 44534F95653A5109043AB0AE1E838A85538DF788BCE8C3603DA2A51909B61DF6 046778206655ABD87C14583EABA345328C776F58DBE125AD481D4E922593B8D1 15972DB2E1C6BED5870572216EDF4C19D7C12ED2C37E49E6E6CF552B0E9D9EDD 4F659CB21F3EBD36F28275D69105BF903309C8A7B20258A9642B0541E033646A 61601867A46F2A577265222BE3978E6F84C29576F2DDFAE642CB5F42DF45FB24 FA36EC2575A286E4CDFA7F27D535E408716EA40BDCFD7096A5358E9A98F123D7 92E8314B8D51D763A84993E7D45BEA3195EC3DAB2998DE69CBE2C92A15680F91 76A05F32B384AFF81750D6A1662179FEE5C1CA80AC689148F3D99E0726D68566 2256010D2B2274742DEDEF94B338525FEF89E5722CAD34EC2C2BA8AD1E7A1CC4 E5B71EAA6D0069DE687C6306C3419A4F9BD7E5C9D9BB215E410FFBBD6436B57F C4B18AFB2A3412EE490726FB568CDE52E15CF7F12B360DFD08F6F43F295C4E9A 6FA45D706C707B37FF0CE27BCCFABFF5417DE624A266BADCA629870EEFB43B41 C5859A5219C9520087C213583AA21695E020B4A4743C06F3A1557AC56CDD305D D68D482A6D43F8E9E6135EA1C1F2AEABF167FF4869B46F57207502A39DFD1DC1 25270E5A3BC02A042E2F98539F53A563364793966D809E17DFA9C91089D7B8F7 B0169FF8AD8D88BB5903406070AAC303369FC4B7CCDC42105A69674BADCD17FF F90270B5CA84DE742E5593596E1ADA971066DE7A9A6AAF884C9312BA73313289 28F80F803BE810B0C62278C925B41E22441F3018DBEFB30E9AF1C11712CCCB23 E392DF6721C557E3523478F913EE3CB5CD1A0F6FD60E32D5F00E281B87E1846B C629E4896288B86097A2F02DEA398F16E09681886C1453CB71FB4EED50EA998E 36F164980A2663428298DEEC9851F7174394DB1D21EFE96A3960A7BEC512162C 72D1E85E823B0FE1600C36971B94A505A085E3FF9BE58FB6205ACB7353C03FE3 71F64580C76AE11F25425D9C0682F42E9316F5BFCEC0F5D8D9D830FB41AEDA9B C02D1A77C1CE5FC6442311150BC3E4ADBFD779DC186592D4A548634F07A16C26 B79B9D641EF2AA8FE056AF840F16FD232AE1A530B8D23B99D0984D7E98C90B55 CF4D97F40CC83455CF898CD9A6F8051C30B151219B60F9468790F0A7F4CD053E 542E1EFF158D94F4ADBF05DAAE0581F56E0F5C8952470EA0D1245680A5AE661F D2C83B8D7339D55401690648D47AE9828D233DB32F6C9D9493255E9BAB57C9D5 3D08E5975F1A844CDCAAC830DD6D2B99C6BE2D2690726A913FFC41DB353B905B 5B6AB3ED132B53F19F52A6F82ABA5077E0E5E7CFB1087A01B311E943CAC3F44D 72F28E989AD53808A158A37E73B8E5AB83A920AB36C07BC8EA85A9C78B12E68F 359661C847BCAB2A6D223CCC012528D868DFCA908C09C0FC39785CCC20D87781 F165109222779410AF291A3655E2E8199314278E52CF03F93F02502D878583CB F75E27B85DFC0B00A2D475201786A32059E04B7F0FAD834A622932600BBB4747 8A62B566D161E96ABD0195F7164CD84632372541A039E98F75B5B3947281F5B1 FDD2A16FC8A06A9D16A3886216E1B7DA3EB4E07D25BA5841A21E926072050BF0 FBD35652E7F3E33B911280C1D2BB6F62CDB5F5CC92540E34949B0BE3E8591084 6946C8345A0A04BB51574D376C0BC65C7A10F2B1109DB99E62B75B591830BED5 295C0204A5199E70974A10E61F5DFD751092EC081D9986A1D39D9035237AA552 CFF4CEAC9CCCC5E5BD17E52E1E80CD0EEFF7F54A9F428D2D6EF035C8434FB215 1F64D22D77A744D02291B06BFAA9EF6602E0E0DCDE7CC0F45A778D9793FC5281 8D4269E2F9B61EDC1A3B8D8A75E65D4DA5B3EAE95153EF55504373C24C43D768 A6D1E210D22FAA4D08F99474BDE3C4E0CBEFA6AB7F6E0153AFE7B2D3A6FC2B4A 9C4955C15873D2460C94519A5605040F866AB6DCE24200ACCC6A7F685BB96737 5F82C2B20D6D33E8C482241B82BF228568C542758207B3F26BED5AFE57A0BBC6 589A676A958E8B444EB839F1508FD1B8D995969BFA5D4DDF345D536F24DA0052 6C626FD8800C04C8E41A523B9DC0C4EE10D456995C2304C36CD4E867DFE91510 36D534CF0C8E60CA8DC1815C6256484010BED831F0CB0CDD8FA8303A504B7BE7 75C5DCA66AB89167236F6983219DE903DE58DB7EE2F04A501E573AACBA610D77 F4445E54AD79B901DA24C399DDCCB7AC66249E53DB1C3E8AB1B7CD20F0183412 D10E911CB758B93D6BABECCB29621EC1F1487183603C68AF7130E06413CDF3D8 9E7EE2263B5D753ECB3795E8E6ACE1BD5EAD4E646F1D76A482BE76D09DE51427 EB3CAF3876095E404BBDAC2095D8BEABE73C3E97725C34EE9D4449A1F998C318 A85F8D78F772E4F67B2F84368E1E77BD9B9610BAC6FAD54E047FB71F824568A5 7AFD5293F486E26BCDB1D39972A30C87D4385088F7D5982D9845F8520CA165F7 E78E259C139520722D213C9BC811979E84AC1C2054C46D560135F19B87D7539B E851A4F76AEC7773F782CCDB2B6DABDEB5711E4CD431A86F5CEFEA6A4C60CC03 1A1034EE91202F9941FB29D9486042B3BF9A70F9FE0B6D85C50D9B96BE3EAE92 03331644C25882D3CD9E082D3A2A52798F51DD903CC927AA44C766B782D5A9B1 54EC47ACEC605C2365E206980EB767E1ACE381154509BADCDA7C1EB736DD01CA DCB8D7F7F235A8C7D2E34A5C989C2098AC19067AB250D7C16ABBBD2FC8E4D79F F07B9CD3667D19FBFF96BB389F3F753645BA0DEC0A123621D506BC31E9095722 10EDEE90C92670CDA95C17E4D7CAB6337C8FC0F20152DAB6D3BDEB16D336F478 FE9A56C823B84FB62AB0AE6C4DADF7A0E7371AB52354A1DF0E9119746808255A 95013629C536E1DAB1D4288171244D5F5135003EA03D23E222E805EC2E00271F 9894A9E82B1F9EB36061D92836F31DE252E30954AEE7CAF8DBDD66114FA2B2F9 9CAC74B353B7656E05835172735979E7DB48681B641A7485F18E460398028B02 AC62210C0F36A7FECC771106BCED57DF6334EE566E0FE2BAA03E6557AC99D81A CA025C8D1D2719861FB05F3901C313AE4189A403BDC9A7D648CAC3561612E0F7 3F668F58CCCEA9A1C6F4229D575B397FF16FE843C9875D7007408CEE84F6EB63 5DB941E9AB63B18DA328A44D401AE71A13CA2164C4A5BA7BF78B0EF2AC20EA97 780F5BE7AEDBB15A4D135BE7B322254E32EAEE7DE78EDC69872E6AA4D15BABF9 EA2D5723EE875ED677D294CE2A476731E010D3C204CA8063D56F1EA7FAFDA2A6 A906C3F80DB19183D048D140AE163BD785E3DD7545432F25FC63D2368E506EE5 6326065BA138CEFD02AF2055D38E5918CAA4BF97C94418EC6F3E14F70140CFEB 432923B2EE162EA0C3DE430E908DF4545B058ADE35FAFD0C82AD8018ABA534A6 946ADAB80E5D410F034EB0E22938953E2A1855387CE4FE9A5AA9CE5A74864B19 E0E9100B09A76442AA75BB5CB4F622AA74319EDB66E30F16CD3FD203362935AA 180EE9918F4CAFB782E0741EE6196B640E3F0F2AD00B9E9EE198C85AFDA53319 180EEA95DE8A78F9781B9787529A75E890E9014A2AAF772520CDEBD3DB92A429 E125581B1CFE03FB7570FEB4F821AE0889D05B9E011643EF88E888801FF81457 ABFE4B89A160C84C69B129A8434EA9F396DE4011A4E89DF1D27967646FAD2339 78A9F37E1F730EE96EE3A1D98851C45C5F16122639B326DA74B63F637084678B 30DAD882C0F0D25AB93A7A4DE413A41381A35E2927D4444257AEF9ADB5260A35 8E74E6A8CC720DED20CA0C1539FB47F96156450C57E7C0FE5DEAF92F47F2E0F5 BA9FCDBA25BF9B8326004755A4F4008EE63FD7789666788AB1F3613AE5ADEC78 0A5ABC85E7DEB5508BFFBA9279C50EF9D5E9907E38EB0225C7562B8D857548A3 EBCFE3A8F0EF5C3DB8955FB995BA5A482F9FCE4987FABD8D375AC72E4FF7C774 F48C17F9B55BF5AF12906AA0FAD20934C7F080C49BCBB3F321A222ADEF47D283 859755588716B89EAD7AB3AD5CF9E0DCB524EEA4A6353BDCF51A5AA45F7F830C 606181EA7158FE373CADAEA1EE6B0528D95DA03C7A03A1BB2CCE4136198972BD 445CE59483ACD728B42C40DB7A072F6C82C7F4FF01F8C9FC525E4A2DCC965FEE 20880CC3A8543F15082C382C30F4FE654A6092B10DFD020B790B2D74BAC86D04 D16E66EED137407055A86070985E41312C5DE0E899EEFDC13C070CFAA40AA4FD 3CF1B702A713E877B3AB844E8F639ACFBCF275003F6A3A1B5AF4FBBB0AB04AA0 52CF9E7B50CAAF2A7D76AB50236694CE617A75AAA31C0DB404298234666CF92C 9D80B402E7711C7F5489BA6E08CDF0E47866D8EE5F74755BF55B10150D59CA85 3395C4AD476C07C9E3F2F09698FEA720AA3C1B63611CCB1B56193594A24D5F41 E6ACEF5989585051EA8650A20D727C179C17C40C6CDC9A7B796596EBA4BDF916 7A3110FF3D5400ECEB533BFA9D16A931FCFDFC36C1C62F7C09A0AB3E08489F4F D6ED312B44B5A8FBCD38F04C89E3BD0BD14C2746C499B08DB1C2922CD7AA770F 0506823B6007604A490950D6790D024FA38A62762CD693EA10A147CE22107376 AAED22AE7F02FE1B4810A96A3840741F12AF3E57FC5849A4DE53E296A2B78E7F 58085E498B304CC62F513ACDF0EA9EA29E8A39E67AF057CE3735E8612F98D9EE 77EFA7B090BC8169534E3FFE43F392292D231BD04591AD35BBCF6AC5B29E805F 79994B73DBE38ED215A3DBAA3E4FE249E59CBF889E3129C99590536BB69EAFDE 94946A9E58AB3488F0E6B820E64D50D65C4D399AC35894DCFBD1358802F5C0F1 0F628AD4048701ADE6522EEE704105230336F14FB81A3F2D84ADE5EEC2439A87 BA5A647767EB8A7273CBAE6DB0E5DB87C00AD1C8CDF539F6D00DD61F102DA4BE EA6637A9681163EAD32D8913200EA059833DC67AD40A0B69427A588F0DC0A93E E86697619084EB4B3B3952EDC511879FC526C4A702B7E6453B16727E51610E5F BAB227F6C24874BDEFD5428D9254D4A87526A3324AD6F63557F7296B377CE53A A6E27FCFCF9F6170289187C5F9701B35D822E764C1E25296C5747A216384DD55 B641F02F3756BAFDAA08B7D2BB293D9028D8392551F5BE3C9906926FC2F5BE7A 3124813C8AF7BEE14C184AEA21515452C07B0D3D4EA3AD6AB8F9E5B7093112D7 ED9E958AF921B6EAD2DCE5CC74D651996F81F5A5EC55D438C7E4DD3248862F57 3DC28CAE798B543C6B8FEF03B55B158C96340D27A5A57B39A53883D174ED7A83 0A2CBF5DF06999630A74A63B59888ACC88E96A13BC788F02C5433A0044D86DBC 7F8F5D5FC2CD8C6AE4E0867DBE1140B2E2C90F4CEFB00692765854327A9A73CC 9B52513076AD8B265E94CB4B8FC0033CEEF644EDD772CAF83DF7F0949BBDBD2C F681D17D257787B3B93C4FC5B5ECA7DC18466FB5DD0F2A3D360A9B35F39D57D0 105A0A5FA461AA14DDF1A95CACDBB531755D85867336F5491A1B147DC530EA8C 1DF6660FE3558EC163C8B0BB9E4DE424AF228819DE1EB8168C3187C6590372C9 2FDAB4A0E5A08F1121A7F2642946DDB6D1E278B44F9337D31DAB725A2B6250AA 4CDD4FD6D91CC78EC693AFD3FD30F697446B3B45DB48467CCB4903C25B0BA209 24EA4BCB450A1FF5153ED0FF51C4C2767821A63281070E8458501627BDEE7B62 166A66F840493795981162D9C4F19787C4EFF2058CD685DF1DB94102FB88F631 87B546184C81D6953BA2D749203FAC6520DFBC1898DD01D18F7A3ACA2FEAEE7C F013E36C83CE5B56A79FB90E3F3BED6CCBE8433C8A9699DC7CEDB60BC1534271 4CDFE08C178BDF612E4EB8FAD203B08EBF8D43F0762F09E1773715E75138E932 B291DBBEBDBF9269833A2605A3DD5C36804077C7A408A1055EFA2A1776E1F9DC 914C5965795508E5A65D185596A37BF91CF5D72FF27BB20FC9013F7EA391C892 8BC7C738413CA8D3FBEC8E1DFEAE2DD22E768B5D503A722A430DD6B88E69B2A9 1AC29D68B111019886484CCDC696C6A87F1F67462D3232C84F431588D38EFBAE D8C9D1418D81561F75632154173FA6ACB8A8CD8B7DB19B50A54A265C0CA7B0BC DFA77DB810691538ECD0D9615528F7DDD83CD80F97534C7B79ACB57E7DD37038 B0FDED1E2A80716D2687C4ED42669C280CC14A116FFD9218C0FA289D24A03E51 2DF267ABC9F9AB70CEA856A0A5EC28017174BF03E32ED851734DA4E20C282201 3090E1A218C3BF3B1AA3B28732A4D8F552E9A9163BCC6EA10F708972A8BBA763 9D489A1CC41FE78302CFA605583450FC7215E141AE43AAFFEB28C19411D5F5FF 2F43DE7454CE4F6AF1A4CD704E8EAFC757AB202753DDF31D8676730D737F4051 54A920003A0F336567F245356C6EDF40810B532AB5B475E116045C7798EFD152 D76F0B5AAFD5A581AEFDE044360CA79D5F6776D75BCDBCDA149C2CABE1CCD237 D1DD3C5166D7C3782540C9EFD1EB34B735C943A5CC7F7B804F92110A5AA95E7F 8AFFD2884BB7522392AE92A89913DCEA0F28B7B89A244C992A15D0B8881E6F37 D5B1ABB54B970B61DE93578A12D81E4CC21861BCB1D287CAC00502477850CC0D 0DDC29D2DE7B362703D7CB938DEB1A64935B5C07B25F589E3C2369E1CC12CE57 5BE15FADB9E65068B94B16242D3F0181DC92BF0B04C81716F4E197F04C17C568 416ED85007EF4CAB706BFC780F584633922547178C2D4AE60A8D2B7BC2628674 15D8AFEF916B6A2EAFB651697BB665A9D53DD0D0B569F8270C1E35C24DD5D2A6 90257BE909FD3F2FC2BA7EDDE451764CB87897823AFDB0D2109AEDCC5087362C 783D3276D3388841FFEFE969601A775CFC5AB41137D5E2B86F30C5A2DE485434 F372BFA764BA67A1B7F54BBD37FFA74A7A927C25CB63032C194F1CEF1D861829 2EBA90769496984256A7BD0F2A427B76964882486906BACCE372616088E59E34 603A6862A0AA2CF780DADBD2FEDD4C74FEEC3DD5E9DE299EA4FE3E60A2EFDF13 EEA265F9988A2DCEF04FC29753F88E30AB8AC6F11935D4863F57BC12D38EFDA5 CB566A8FCBB2211B58B4E99545EE6E1BD1478B3D4191799E3234132BCCF021C1 D4FCD08752F2BF8F4A2A05E5ABD47F163D95CF160CDCF82429A6BDB4F72D497A 8C3C4847EB6F91BDB98786FEC2150C0707D9F1D7E4FF61685EF0BEDA88765072 E29ADDCE776BDAB6808573E82ED790444457D1584004DA42192932A06ECC3F52 42EBC78FAD914F5A85E892FEF5EFD24D011C5F0A177D61688A7877B5EEA3F9BC 97DFE25CC815A67858FB7A11D40EC1538B1879051120FA3A55C089BB9090360A 5D4BA4A68C8F94D99142E37D619723534A00DC29AF3F1031A6B6F9B2B3CFE40F 9E538DCFFA89CDED0FE65BAACCD42EAF4AC81E0E3544C118A4223D87C9D82B4C E7F3D5DF5D04423A3F809B3806481D689AF165EC25FA0BBE9F052DCD8FEC161A 1491AF032649472B5ED62E74CAE799A744EBAFA9EAFD33B09BFEDAB70ECC45E1 461F22F533596013B865CE7C6B0DD363AD150085615C36F4012B0C2367898DEC 6367112417D2C477D1674C091F1B87575F0107DE1E6919A0B3E23089D6371942 93E2454C74599C144AFC5ED60AF6B27671821F08063FD47B6BB88D37B2D7074F D0CCA9AE060E99856D7612BCAAF9AA1F38879B07D1D7F568D872194A862C211A B959CA73B5042E1F024FF6C46D1CCB93179B8EF60B7C003FEF273F4A8BB18F3C F51F479543497B252548A219EF8C3643383362D6CB8D990415579589DB86E011 457535ED6E63B9D9ACC38959D6C68069DFB9D3F72A9B0E0707EC0D6B89A5CAD9 A8D74A1A1FB61788514579DD347B64681BC247B4E2391B92198BB9B7A16C8D5C C29B1F2EE9C5E2484D915EB6862034DEF5D7757588CD8F44EFF325293A8E2CAB 3D75CDF690359CD1BB95A8DBFCCCB815A5B1DB3B8C7EFC795D1F5B07A08C6E42 01C46FC11BCCE630AF5055380EAEF2BBE7B124FABD4702D0C620ABD776AEDE72 E7EE27B34B23CF701C3E305B3D06087658BA8443DF6B6530EE3D2F548463EFB9 3F86D99FEE1640753685D68ACAE49ABC661CD9408D49588161B2B8F5C9760B62 90EF02FCCE05EB43BDEE228B11A0F2A0E25AF8DEAA21ED34907094D57602F530 93B2FBF0BFEEE3AEB27E97D19AB6751A7D7091B58912EB954EEC6FC62CA1FEAB 3F878C9214BD5085D49ECD04D8A811047F9B1E3D9E23510BF03F4D2FCC62AD51 C36BB125B68D83A57CCD1B5C06876793C373FF0F201A83F3435CEB3A67C44048 65D41E0EDB005F84318BE1947C8C66D79F36DECA043975383524A20A3A71D703 613F52BBB49FE292871F5D87F18D24B4AB1D4492EC457856915A1DB3F13A6E6A 445A3CF286DDBFD282FFAA768C2B019C8C329B2E61EC3DCC8D16A5DC2D781C7E 0FF005826FA22BECE6978B61C4BE296D35546EC1D754A9A916C236BA6ABA545C A5ACB0C001365EEB32CA78B773C81EE63299CE728C349F28589D5DD4E9C3A81B 2EE0DA75AA8ED5C6B23FC630C5C3907BBBCD01C83D5F2D07E936AC4B09333C78 6004D36BB2943B4A5B644636C65753899448E04E967A7F48B186EAE079041782 C75552B617052ED972D7B6FC5520266582D1F487EB4EF1A3FBD1E0848C80BC20 066B7443434F1E2CBBDEBA68BBFBC8A38279178D4227821E8DFC21D0E2EBE901 F9B5A8040AD1132B312A6B0EE9D79B2922C972A24BDA1349A3564C3CC5F02E91 E3DB08FB2DA6DE7E255907B259FCF7E164154AB4D72CEC17F2E75085B0D1868A 8A58A959BA88E506D8BFC0A184EC7888EEF77C5E2B5BCD22ACC4E6B00B139783 E39069AFA2A37B2B4967AE46B9AD37659A3AE9A3DB12FEF79CB6AF18AA1D7A5C B2DFE741C367C6C4CA243309056EB3B1E108D9FB6EC8AD273DCD90F47FA5E2B1 AA7C4F9FDC46E6BDDBC9F1322F019F105BE7DBED29488F3CA28F9190095A552C CCF84B07899129672812CB1569716951E8F5725BED497AF4E30359682C293BD7 C6A56260826EED8D01A243CEB4E90F199AC0E13B169DD71031A34DCD0416F6E2 5F64628BE29EFEA5F2D1BB19E16801A3E1141031B26A8FCBE9A743200179E8D7 1119B503EB36E2948DF7FA999B9B727341FE50434ACE2C3C652CEBC5F6BFF03E 2A33576E534068DADDD223AF11E43B8C4BB5D1200B4254CCE5643CBD73398234 0C23EFF923ACA9153E65E63E37274D9BEBC952914026E0D661C41620027B5B3B 016EEC9C0442F1C3C59F8F38BEB118FEB9FCB2815BEA7763B5917A2C6F46949A 3D1D30605B4AE5D3298F4E96C2094D7B2AD397E4931CE82CC820928B215C70AE 5A48E61E9B457E869D2D99E34023553B90836C6A836791C8B8E817C57BAE9348 CBC2EC7A2438FAF387BAC96986380BD874C29EE03DA2C9783C84CDE58F15773C 15568C23154F885838BF4E8F7F9A0BE9E9480D0CE94E769EDA4AB3BDE1DD30CE B2A8B8ED3843CE96A201A423E39E3A45986537A3ADA499C61FC9F5D538A291CC F6CF384AF64B8E1348673CC6B317B02AB47A88C4BAA6F8FFA0FA674F600C0120 98314DEA39A7B5099F513283D572127EEA6439F9ADACCC981CA002E9E9052846 B5B6CDF69389187DF7BC8942408C71B87C1BDB0E500E9B2E4212FC21340045F3 E4C421BB9BE10E4C5802524500F4031AA36935F92D8DA29782A13D8D80AC6A57 D2ECF2235FBCF6E0488C4523B69448D4D6D2040F7204FA910F09973EE65502E6 4912276255CCC93F30471E517B2636754BFEB588A110BB0992A8AC423E83B22B 5591FF12D13011F30C5D8C6A3E53F72195C815AE0E613551D4A5BF7ADD5EE851 78459EFE389D7213812607C981F3F336D3872DC617E687E4C8639F5F58DF1B0D 9F8F89EA14EB56A0F6BB0B40F9E98EF7F1774F756E8A1249BDF018B7C106B6E5 E3DA46DC768B2BC9E6E0BFD0948F28FF5186B81A6D9ACA6F87979BE5B243819B C341C6B5F9FBD2709D5DD4514F55B16EF6C20A6DB1EEE8D06AC53D6A593596E3 5CFFF0EED18A48A8A94217F8F656E7FF0815C7A99DEAE190A46F6705FE75EA36 F4F40100E125A77EE96425FB83E4B470E37AB52CB7E12D57B52C5C856BC1B634 5A9FD75F12854EDEC5B49A4EB5A4506A073971BA96D86E8EFBE4AA55A80F08E4 F9FE6F7EAD3BFE9D6AD23CE23A42508B3D1F0C5C706C1EEBEECDE969D33880D1 DC553F44709645866F3BD1BCB8E768B0921A5EF72DCAACC194A56F970B363E20 6F427BB9F981224745489CFB750C01A3F0B7FA898E23A3FCEC7ACBF263A4CD6B 9BB07614881C937DC99A90AF67A9D7F98D90CB6BC7E68A35A198124F3C4ABBA1 B2166DAB62F411469AD070C81C11D79FD6B7698E45759695CBA05E7B7880DDB9 E4E2F989CBCEED6C0F3F164ADCC88967C29D59FADA20AF5FC2FEE18FD0201DE8 F49D96FE359741C7FA44FDF60BB354DA8116FD5B1910D5A26DA3693AF9EDAA68 21955C318B5BC1C0C020ECB1AFB1090F4584B6BB616BCE5FEF3C0FEEECC545D1 DE92766EC499E8BF2CE72DE9FE7611CAF4929E7B60DBF82175757080DCD053E3 E6E8AEE50B540A0C27BB02D4ECBD3EE8B7ADC3312FA31F6C2586DD03505FE6DA B462E28B67938BE4B6748B6C8C8A773D454C7D537A695EA8AF0D84D846CF3B27 D43D15B2263E8ECB5C3BDC91DC45A4E1A3E74DF11CFBB148472B9B320CAE6035 57DD58C6C05877AC98507619AF78FF76F8C31F04487D82D11CB645C8927D3421 0C9F889882086C4082B91D3737DC1222FCB6304CC8582628F84D7F88411DAF98 D2B31E67725F103EFA380555C09A9C01778A05EAD5549DC599CC377D38AE5300 5AC88D41BDD304409891F0162D3903075A4277813378ED1530310EE75A28EEE5 489BBED315CEE9928C012B9210E7DD4598996CD7A4A896DAE05724EC43FACD97 1511EE90285EDA062C703A602B14872122778BE37609FAA932EF0CE234BB4941 562C19702DBB1016FC64D60CE11C1BF1A5C4CA404CEC577A350C27F87CDBBCB9 29720680F80556201296302B64B82782C34DABC6222A36CBDEAC67306AC65870 B4CF79FBC80ECB5F99121058F1609E1EF924181D1A819602B5398845A70A5D6C 424E3A5C6BDA08FD2937871ED1D82C616F78D56C9307A62D654E2F41EA6CC1D9 595963C8F308A250B855DBDDAD4A608B9A1579756B70E643EE3850010C1D8B7D 35252716C4806A79BE13FE4CAD5269EA3B2134EF402478A5A0ED0A0D27AF1EED 36F9F96A058957C383A19015531250B07A63ADF11769031F86AC1925A0FEE3C9 ABA906808A9D8CFB58C3D09593ACC2B735B956E21B5C1139AB40CBC12F9C3C9F EAF0A42CA26A61424B047531F5C32E0A331960A08BBA8107608BAFC9DB2C76CC 974E9EDA3840ED36B798902674A27352645858730DFEB91DCD0C2EA4514D5D37 B4E4BBAE31D3F6282800B92D9B76AD55121D66F35BF1650B09F058D728ADF379 1D9F342FABFF3EC15D45B8580599C10D0F5E82A490BFF210B8439249A483BF18 64B6CE120278AFF67DAC16723E1A9056163215EA597947555C22C196D92A6C4D 2BAEBD772B7CD296EACCE2555DB375D7435A0AFE58D9C6BC8744DA241A1E5836 75C54C03CC4065A8FA402518FCE53BFFB202403352B6CFD49B83D50B1F1AECCE 2D03FDE4CA913E7CED2CA42BE3F96CBCAEE028E4F619C788CB5AC5436EC8D21E 26A3098D6F093002BFD7E71A8F3A024AC612A38759DE7F0CE54767C2122FC1E2 5EFF6B6A88CDE57566FC4CB6883FC070A0043E847A74307798346E0CDFEE858C 300E92C2AD0A625E2A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSL10 %!PS-AdobeFont-1.0: CMSL10 003.002 %%Title: CMSL10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSL10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup /UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSL10 def /FontBBox {-62 -250 1123 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL10.) readonly def /FullName (CMSL10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 45 /hyphen put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 72 /H put dup 73 /I put dup 75 /K put dup 76 /L put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 87 /W put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384 7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0 C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814 25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5 7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581 299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8 80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB 5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584 8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894 5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B 966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5 9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4 A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD 94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669 E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929 5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23 8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5 155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E 4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038 44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D 8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0 04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07 111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344 8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C 567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728 C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214 C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094 51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01 66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58 9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6 2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4 4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7 5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256 0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9 233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF 62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086 B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88 DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0 C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC 38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24 303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2 8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1 8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2 C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53 9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363 4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29 03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212 93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8 91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0 FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27 06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179 95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954 9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2 7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972 6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31 5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262 3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91 CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1 797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0 DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112 CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19 8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51 04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757 78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE 730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F 021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79 CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57 90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD 97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0 F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9 4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394 40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7 3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B 362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7 DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136 7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233 04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8 DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049 B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F 9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229 3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2 B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571 74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A 44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5 A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8 3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1 BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64 01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4 6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C 683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D 87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF 550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6 2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB 17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB 3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B 1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514 61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7 124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2 ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746 0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246 D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933 F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2 BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003 75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A 8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3 B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E 7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7 322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E 523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017 6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77 66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633 B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182 5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1 093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838 B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72 6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394 EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966 8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE 144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0 7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F 172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9 254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6 5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71 011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460 B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC 0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E 3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E 993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E 0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9 18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0 ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228 1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3 A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A 6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20 DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323 1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761 93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082 E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62 4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 AB7916D44EC2210CB941B1455867E510E9D8A0B83CB645BCABDCDBFCD51A4E12 60CFFEF0CCA548F654037D01CD631FC4E1F97B4F65DA9AE79D99F13A726E93DC BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9 9B2005FA7E0F07D81E52A9A37AD5CEBA8EA63929093ED0DAB9F7C99C82A50E6C 6440387049A0C359218F5268C9A28F581783BB9D29E08772D7252FAFA6739687 22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796 38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340 B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC 0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B0844362B0652A 6345C6EC83DFEFE099455232455943718297254186940D6305C96EE2B9E3E7C9 A622D25E0471AC31A8ED3AF8897BD19E322CFC3BD3860D8A0634081D9AF53A9D 84F4ED39D8127CBCAF9AD48E9CBD10A67A2CD0CF93D61A593C0627AAE80E297F 610CF0B2FDB6EB3BED1D866BC1E1DA14C1A2583976BB788E9B26B26D6071AF28 04DE56A166D01ABB14FE7A5C409A3F6AE1F17F322522621F97113DA3C0CD1EA5 11AD5168DE7B3BBF39F61A45B553D16A31A1FF6000C7BF7A3DDF5B852BF6FEB1 2AAA616AD71EE44D7A3EADF8CDF02666A78E346CE8507646ACAFBCB42D804F89 07085FB776C81D773B33AD206D49FA01351D19E9B93423686FD7C8D1F4085009 A3D67A249C7B38C40D4A83D74E819A62B938D89AE9070009275EE70CCC716937 0BFC0EE647EC231309588DFF33EE995006FEF93469A8C4CEC33E5C77D53F8BA7 5C444825DC75D418831EE39A0FE3DA51CD3C5CDD8D28EA853EB7F4925E040BF5 F38262DD8FABAA1B6A5EAB2E50AA4FDBDAA7318795B5E3B8520B9CE2C02D3053 74F30A8680D3D25B1A8D9287B67430BE892BCB142A6391FD774289B426F82590 B01E16018820D33ECEAA498ECFE0023DD959ECDD891113323CA14761136D43F2 A32A3F8255D0A00E0FAE6FD2BC390D9484AD38193CD5EF2A0B6526B925D91FBB 966E69F1F7310EBD4306E2D9D16F308363FC231C626445F3029990699E6B0CF5 229ECE0EDF004E8602D582EF7810BA119B058DD90C01C22744B5EF5CB156A1DA 7A9FA7086CD89B2E8C5E90B258A3D64AF7A9E698ADF3D0EF1C2CE3D30ED5A4F8 93572BCD11B506228DDB2C85B79631258B5376E30EC113D2D97C12854A892352 4016AA0558446EB491FEA150C7707E53A959AEEC3F606E8FE8BD6803881E7091 625E3DB91BD919071CB21186DBCBE103403C49F634AD063EFEF99A59DF1F589D 5CDDE87414F6D12429B32C1EEF09665D6606F33E015BD62409295538A487A93E 796AD8C64182629AD78DF437E04C0E09CA8397FFC74FA927664EACF7576939CF CF56962843FBEAAB2C5AFCAC3DD6C05FC7402C2148280AFD5025C33A1D117359 68BD0E06472B0D335BCCD589365BA20568DFD46180A38CA13770A8570C3C90E3 B1D86706D81754B00B4F1CBA76D8341C4A552851A79877C8F14E8996592E8434 AAAD811BCBD37DD9BA69E6D76A19192AD53A8F60E50166DBC41DA9B77783DA9E 5358A61F08D5FB1731EC73386AFF81B09631D57368A2984019FD887CB16A37D2 FF085B743E2A3EEF2CF70CC006799F1AB3DE1569E2377D0F00DAB31F73CF6EA8 339CC5F37B42E0DA5A9FADBDE4348EBD8E8E41F4588BE9CC71BA9B8CEA1FEB1A 296BBFB3E93052480FC0460EBE407B68C5DDCF3471D5D70D58562132E228742D E1298F26E89FE76925B21024384A3BCF0805BA535818525AA30E5267076EED17 9479E85C7BE3A67B23390E0D413B04E548BB08E7AEB468FA87707225248AB35C 043355788C90839CEC662D883BE9A5BCA92F1C802734084553B54BA72CB7A8AD CC7A1B7439A68E84F1B1F1271B32CD1B719BA52E0BA5DB53C6372CBAF47C6622 65D10D789FF729CE2F422D464CA83424CCE7E06591659809F91F7087EE721F64 6FF9AA5E47FCA748EEC49D202F538023F7295E03637BD089641A14BF85F926B3 7DDBE5B216F4A85262EAA63E204AABA92552EB93169A07C9BF3BFF389941D751 EF82F9118E9D53EAEA71B5DA45AEAC7FC1F855AF5CAC11EDB1041FAB35423A37 B1974AC24E5E83F32931CE05399EE7829BB1785A0F117252DD7DB5EE45159BE8 F96026FC3A9D6E67FBE906C9FBE5D0B1CE09CD30889F575471AACBFC343A60E1 253A70A4F7F9EE8A771474F8C3C8DD5C410165F00FD2E08FFB820C030088F452 1AB1770F80FA609C8978C5CD1FF94A6C77CCC7315AD714B990BE419955B99747 82D883C4DE1593875FE60460E2D370337DE830A3060EC38B2CBAB76FE40FD9B6 00E693B9090259ABCD7D3ED4B9BA444C94D16573FB33708BCF12A0016A839568 E223CA958242021032FC6B4AE83A900DC87CC6ECF2BC00F9F8EFAC6606208EAE FC933B0689A554AA1BCD5F7FBC20299DFB1632B284C24D64AA90DEDDF272F7C3 470CE467B5F959C24D45B8BF53E96E5E56B2703E863FF8A846D14C210696F2CF FCBA34C2478F25493F39B067A4D16F8BC484F5BDA1B11038DCF25D149F49C59D 3DA99DC0A08EF232D98E9FBFE46FB5E457975E7771459E330DF4BB863E092AC6 B368FADFC326DEF82C2E1F5014A54B5D8AB78EAD86CA2496D0D753A4914C4F3A 9251677B6B7A76B3F46D564CD855D423B7FD3756958DDAC02CBA90115E2586AB 2328ED830172111B3048FB5021CEF1A52424E31DFC904C67F3EE4D176E0AECE4 2815188935C37E307BE490FDB7D86C9ECA73D165C659C2102D60935CEAB955C6 D5F932B3D3F355E5AA2CE54EC1BCD0863949C0D976FAE7D862A3E8319173B55C FD17CA38B17015634F22CB58DEEDEFF2DE3735ADA5C5BAE39B4B0805A6F77813 51C64EA337386FBC74F2C86446A50E134E20F34E580CCF0C88F38F7D5BDFBE8D 884777BB0EAE668E1C385AF59359668BBA3584EF4B0DE732C2DC88E2D0C3E081 358298442A33541E8494C3D8E9F0261A2B79382507FDC4503055E14ECB54972A 66FE4FF0B584E91464DE5AA6667E8D8B123CB182A652224050A235C1B0D8E5F1 07097D98476731A1D9224E156665BA64DFD471B6C0B11519703F349C3846C2EA F123F5EC585E2E357A9B016D82004436D460E4E3A0D81C6A4EBD3A600822A6B7 FC2C8581DE02B61096F1E44DBDA5BD22529B31D715ADC9FEE721DEFE8D5A7305 6FE51844A7A31FC453F8E957212D0262D8B5654C47123385D6309C9E91613C37 693340BBE694449042CA913A6F7AF2B98270C7FE9B4ABE728AAB48D8D37D8F1E BFC3AB2C613FB6DC9B12A69276FBB8D4218D800515BED9CC3F8ABB90F4907993 D252C28A994B71A7A725F4EF5E189E4B8E3EB46A756469DFE6D20CEB897B331D AF8EB7E9DB01A539EC89A3E2AAF71B4F62F9B46CF90329DAE6D0905DE7D66667 8DC3D965DB4A54B4FC63A46CCFC487784A0B4F9045CDA8827BE808DDBF6FB4BE CA0FCCF1A8A6B512892EF43ADF8F00CDB94D774447B0CA23AEB62641CD4D7CE8 4DF24C4BE165D5D901EC9F8A0C91A21F1E15FB1C6994297CD468EFDF37FDED3D CB18B1DF5F8B13F6731457E2E1E84C694FD59321C214A6FA00FD63736F43A0BB 46610DE20C7B63C2585538EACFD958D38CB48B848398722596F99FD902DE3669 AFB419590B21C195FA98B123154544DA1E9C3E6D54679DD3434FA27E0209F7E1 EA99684FCA8BCBB105DF37297E9EDC960DD623659F26B3C1B29DD90E89D22F60 2FF619C26F0C7EE13B0924017DB0B7B09D6C83837C02E381A8CA197E5D590669 BC616C29AF0E5534230A6AF724FAF6732C6BCBF26596459BB0B03E3B4D3D9F88 3444C38978A9412CFE52ACB5DE75BE92349AB04BC08F99FFDABC98F7D20ABC47 7FAE1E6E9909628F16DF65854E991B44BE8471ED5F84DD77CDC32A03D49BB82F BC1E559026029D81F2E80B46062C743EA521C40E4F598655EAA50C749C92227C 26C7E481559F733518A44E467D06A92A8BE1AC43C57F3339E517F8D43F75D434 BF40775F91ED694717B7B6A5D6A9DA2FF46DC29BCC9CF53232454BB3846DA528 72A46D4B199ED2B80A20993BC303729EF1C06E341B321BC37383E7E201DE0BB3 929CFF074B2AD7EAADF5DAB328D01F32DF7D3A886B90E665F5526E279DA4CDC3 3985B1D582A1AC36C0F9708C27ADC43F678EE09101A04312072C5C4F9DDACB30 ADA37AFF97CDC00220B71ED8D762EF3D06250D5FEA90EB29CAF1A9DAEBC23DF1 F9680F8266D9BC42613706C8D328C2DC41CE73A6BAFB96FE7AA60A0D5D904C81 8B2F64AA3D78C3AF18A7B99BFFC96211223B4EF5B70B1C19BE189DDC613378DA 082DE0BBB822FEB46EE05F8D83F201A8AE2B59861CA9F52C54780B3360160814 BC369D35C07A4D4EF9FB534477376B336CF1A372E6C6E7D076D2C1F95B6507A1 62CF058FD9D28A0D9A86E859DEC3BD2E2DA69010B1D6C3D6D0F35E25CE3458B5 4A8DD7485A18858B6EC1ACDA8E5D3DC74CC8B37A7EA18ED9E1B3A333F7F41545 8A9C8598E870F85DA7E4A772175DAA887A4BD065101ED1D704652299FA193387 7A1E684357205136A83B6D76EB0C167363C9248221CB09199477D24D3788115D B8446CC827C7385333000BBB82DAEDE63ACF9D328041961710D3FA09466CF2D7 B1685E6B6FE892F9B75F49F1DC7F6AF4E8D5F2B0AF7986216225FCA4F7AD1D01 880672F6AFAFE640713B5B83567264AF6620DFDB3B0BD45E8EB6C375D230FD28 C5CF99DB705DDDB9A2B6884E2D62A9547DF6CA0D8E86E7FD1FD28CDDB4DFE321 4921327FE2D0AEF48EE7E15E17B91D71B3485CAEF2871BF343761983B4DCB7F4 156E6D8D5310ECACD6661DB1D962A7EA8FF44A2A12C37561E21E5C1C5AC88D32 38159E3CCDE194F8BEF038B04F94CACFB29F8A93EC9A375667C8BDB4ACA5D195 CECD055E06C67ED9C2C0374DB6C390EF4D65AAA194EE54BB26CD7869A5FBE3EA 09A6E1285F66BC0C0B5F1434E1F2BCFB6EEFA0A215C37CF8DEFC02727A637CB3 46A83C6ED1B8AFB5FFA7DC2C4F1C3CD57D63BA2A986108E3EC91B54B48E99AB7 3A58D8990D8EE81BAEA6CABB3F372A2AEA6E918F49266ACBE23A68D9A6863849 4DBD6364F2A0AEC6FA454E5AD9D56BD097F7FF16D98C5C8FFDC5222A301B3C57 6BDD7F281E6D575F46DCF293DDA0DFAF727226254E8CB2E39DB8EB1B443FAF3A 4F7AC38741969E050F59A9A193E0BE89544825A0C0692CFBD7044CD12CC14189 79EE566E5FC74A76EC65E5285684F4575AF05F9FB2356CABC4BDF8A6067D169A EA546A99288D64DDD928598FBD7ABC96B9B7C42D6912273D786385E7C60B30D3 29756256728279E500FC73BADD4C21F0700C916E3EA0428BD052FD8A2487054E 049FD14E372F0ECD6E3ECF4805D02FD4E146DAEDE6849AC9299390414A0FDB10 153A2AFE5E8FA44A1186A395EBBCEC9ACFE9719C6E7436785BCEA6380941CE0C 6A46296F0DCA6C3C13C3A9252BB87A45E9E4DAFCD3868CAC9D83BB0DD174DFC6 27D5D1BBDD986CB0B5A9BF9CA5AD2C94BABB3AA21CAC876F10FBA5B464622B3D B8AC3773E3C8B3C36BAF980DB29432A01FB5733C2887729D5FE0C412199AA6DD A4D7623599680BA2196E9F439D6C293D6E16A2FF1205168F31277895A853FE6A 1FD47593AB67CA4F4D407A90E7F7D8A80C6D9BE25BA5ADA64F744A50FF665A43 D9F7A8430EBF084928BC3B492E8F1EDD523C8CD0EBD4A065096A78DD3D8F5A21 8E6A5E4DB1FB611B4CC47C87394409400C6D0615F571EE4A96564F3366E5D938 236560F6A9957E8D087AD152B8F6E01C9DFC27ECE0BFCFFA409B94C9D523EC69 3C328139DE7F828CEF88150A864F8F64CD7363A84601216DD34DDB4085FDE7A9 8D90D3571DAD0C3BA52419FC79036754396903B86AD37AF2F5A877DBE1BAF1F5 8EFE1507E8787F5C5AC5368DEA4DF9D8A8D0BDD5F0E9687D1D614BB70567BDC8 8B1CEA009D324518C46B17D521F28E17AB8C2252E01A88DAC5187B153C1C25CD C342ABB1E059247E276EDC61D51A2CAB2114BE28EB27407DF0E3048143062E54 215841330CEB3212216055913E93FDB5889D0862798B2C9EC4C7AA867EBAFAC9 8D9C5E5221C1D63654A4838F15D0640C6360EEE3F78BCAE95892191BC102EA2A 84BC256B2E51E3D5C6A2C9C4DCD5189189A292BC47FA28CDF05EC12740D45F2A 480FA39C3A164A201F0D353CCE51F8B765FC47BA5EA8FAE41832320D18A90A24 4AD12E6C4E82DF6E172406961F414305F390148F61472D732364E581862532EC 748309596199EBDE301256766B26CCD77898C8A97A226BE0D1634DD4CD12295A D6990DED2FB64B5CFC8B4073EFF20540D50E21A56B9E63F075FEFF20D50D96B4 17275B729D73F68D4CE816B36FAB46C5551E4D3C001B55107EADC29DF51874D6 E936DAFFC19B2DEB8788C7E7FCB9D2ABE5660FCB3708E81F19BF9C600F203BED 4DB8649D9B91450982A801D15B3841C7339D1D20EF138030CEEE013EFD570348 0A6346682F82963745931F85C431792C64B1E6E0637B63AA85554717C96DE31D B4D2515B18A00891063AAF9FD2B4BE8708009A334F7CFD689D81ABB348CA4BDD F21882F2EF86048F018565C26728BBE7417E685776114470B32B18A71223DBAA EC66F6A864F7944A4C459F0899EC7B5FD8C0FE9AD393C867D5B7C9E98C5FC32F 707027466005E23475A87BD88BB8B5520BD87516120A2FEB5F0C00DC0B424C88 5D8204646F2ADF4C7081D2CD0D0B3453FE69C955BE1C40AC66624083CFEB434D FA7D2214BC69F0310594029EB6B1D355C9FD13A8895F0BFE85B725E47809A824 E74B7A7E31FC95E6655147D20B4A14E420A6DEFE9BD80CDD4B8924E2E7EB3EFB 3774B612975D6DC561D4DEF163AF1DD76EBCE76D339B583950C2981EBDD8D02C 48A5D5B2E8AE036020BE8B760049DD6418440ACBB03E798C0BAD524E82B6B422 0DC30556016452AAB929801A343B719367419ABF1AD387925953A2CF4A1AEFFB 8EA00A873B2ECFD127C80E23BE2F36E10E77F86D3BFE8B076E355BE1B85292A7 906BAC9371610C4AAC2D3A0239BC2BA384314ADC834AAD796C8A7557139D9BFF A7B56DAB7D63FF9AC78AA9AB416A0AA3F96B0EE6C525BFDF5925F4859A3A737C 6E573FA019456ACEC1AFCAC3787F83DB80FC3DB6CF66F351D47E9042C33DA41C A9876A5ED89F7E1C5C32045F44E6D9F99CC3AF6F3F6C537A9E6B5B33E18BEEA2 7EFC03C85F3F9FB5BC05D57510ACF67E864A20F5C9D46BBCC179C00456EE9D56 691F2F5A0D4F2499772A6D91517AA6EF54DF7BF4E3546C63CE47076149D5A70E 4A649D801BA0032F47668005F8460F6BB9488566D4AA5A7BAF13FB1810B219F9 7E21BBB6619D78A42224D89A8C02721C3E802E0AF94C55461B5761200794508B E379198FFB5A4EDF5AF7C0FCD6DC71FA1F88623664D0447694503676D6E59738 9F79981C2AB97EEB8E493F471780B0A73031375C3827B6F50EA1F7EE885B9B90 E9AB441283F4EF1C6C41DC8FE9DCE582BAB0CD65CB8AF0CA61DE4A7AFC3B7F75 CA6097DFE38E07B318BE55372C64698D01486E55880DF0E177BA270AD2A5F813 5701A4E5B87647E53EF14EDD19E4B7007683B569712FE119C27BCFC075979BC7 8A5B0748E1960C5ABC8C5BE4B92607B33572F525562C8E039ABF49E965D2CFB8 369DAD99981263229E068F5C3570760842486D82A78DFACC9BBDD36E4C92017F 52AF6FF3085D19FD3D69BEF26BF4FE486C4DA28B67D8F8A9EEFE6880CA09D2B0 D6659F69E9CF9B8C048851DD2EBCCEF01D71002B2DF0B991D2E93763D7FBE496 0CA746868E3EC8576735B7AD2980CFB4CF3D13A7D2F1A7D170816E7B5F36CE7A 26CCC8F7FDD1FAB9DF86966AB4559A2698EDDA603842D97622053AC85531F0A2 16A97ED8B2E9E9FCE247C33A414BE13DF50A257AAEFD9A00764142AE6CF9D890 BF73B590807FE1B7ABA71BA62CD68867A96739EEDC1EB0824C8AA59A13535931 7B3BAD294588402474B9DD42BCA14C18F64C0FF78B85971BD4179B299D23D9D9 954D71AF0B94986149B5EB8F18232D957FF1EAE068B90B560C72A13EA7B442C6 828EFED6D96384E045B610B0A8BF005B0B99C11E2F99DBE20627C056E14B7C2B 0DF7DD753917691CAF013D7964DF6E4ED5E49241B65914397BFA07D68A5BC15E E52187CC260540A2F41F4A6D4BD7CAB2C825D72B312B8794BDCB73DDA4C66E96 CA52C51928647A5A59FF268BD487BBCC5A8A6F36AC8BEDC211B6B108606C8D36 3A2D4EA6461CA1251E10A86A40D3C46C10DE603C3596FDD87D2510A8A29A9D0E E27A52372345A829A84F1254847CB52378A710A8B3EAFA2FD94892D3A32C9F6D BDC495F27573D7E5DA65146423736952A0A13E6E8030A184D2FF95CE2B68A33C 7F0D94FDE8DA4ACD5FB84C5E6B7D6AE891F4E76289F28F7D766B79B09200FC3F A082AF28A6DDBF1DFBC29EE3D49BFA8116E5A8EA86D9B1A5E34558A83545B7F3 0C512D2004357DE29C5221FE6163933C0A7C59995769A07BB5B817DB58B6DEED 415A3D643DEAA04A5F7C0B73801410134501C6EC7E55C737B81CFF59F91D1084 BAC2276662BCB529973FFE12717D95C884E714678B60481B69F6059E16B83120 7A6DB96912C2B6463E03732063AF2C6C703E95DA52B5D72265135A18D7186618 F23610A06500E0468758B19D198870ADC4D26227C2FB99B97F231216FBAF7769 83C421D4EDB4B880D2E53EACAC19FF259B7B61C0824FD51E281571FDE1F82A54 93794D923DE8F5512070E6E8AFB5BFF99B8B73E22993305BB60538262B5467E0 678BFB37BAB72658DDDB5037126E86D0F9935A9908164A06FD5055651E83A11E E7058915122D9F2EAB20D69C6937EA70A58CBBF5F86F846785C92974B6C52D96 BBE2CF060BA5BC78CB760B5BF518DC630031471CD2C0C136628DD815636E878C EEF640E2DAAE6663EBF873CC521A6272349A7BE9F845E9A2CFF2007D5CD9C12E B156BC49815D2261CCA72B9ADA22FB720223AE8C0253DDF43A4395566146B9B1 687D5612E8485AD038BB26AFEE7433A77E69BA110183D4D7922C85DBE0DE76C2 DB0438CC99A281AC6CDDDEC6080868AFD6C9916FF45F2FFE9EEC22EC13B7214F A4A34342F0715E22540A26503251C4F079D53B507A7A8A4C26C765CB5D3E6487 D3AF0A0867AA512CE112F77B379F54D91759225907A1454733EA33674337F06C BBCF54429C15DED15DEB59AEFFFA82B4FAF1CD1E3C071A4DC9C8D634939A52EB 89ED3BA0697FF8EE3697A64F48115266635DB5F4286E828E308E1D7C6B5D5A01 907EAE2ACCD3199FCB8AAD01471F7098D54D457215C2756D9617C9316A8E0CE4 F32521B6F32B9EE2A8980614744A02638B157355B709444055DDD2AE8ABB0FE4 885F5F55150D98BBFCE02164237C1D82E55F9061D44893E73C337B7C17327945 B164F85481401656CCD0FBC280F0213E77FF6B433A49A9FA6B3DAD3C2E191131 0C76576EAE08A677CB46CC44DC87368EFC29D4E9A8577535B619F594117D3BD4 12DE2166B4CF59F122F16B4FB5092BB15D9501CBD734828C478638A01C7CA12F 2F3E9519766F1E31AEDB3F6D6D6820A85B72CEA12778014D207C2E5FDDDA6AF9 B3604DF3634B123C7C7F2EEA0146FA7412FDA6AB9E62F4B0F2FE3FC94F89BD4A 290224FCC8C85CCB7AF6A86CC765ED026E7DC1FA8971DD25C67451B0CC62B07B 30549C6A7987C5A9D576E8A5DDF2CA26B9756E89B526E718B79406DEA65FB596 0C71DC919771AA57E6913E56FF5EADD3C966F1D5FC26E56087F98AF7F37CBC22 4FCC928AA4221F925CBB7E0A3A623DF3FB2ABB658361B88BBB1E94B78A948A9E 21198332A3FF310217C0DA145DC97314A6878126F88CA53101F0B3D4ACFE85C8 E7BC1F33C6DAFB4D57A89FA33E8599A76CD796D653B13C2512BE4F561F81F502 67C69AC40EC879790C00148CACAFDEAA424A809B9246486C45ECC4E09F6AE655 2FDB077C4C5A2029949AFC6958FD029922164DC9AA8207790D0F138E0E736FD5 5970BE8C4E4EFC951E912D614570A998DD034948DC5449C56A2B33E89B8B077F 97A1EA7542176C03553021FD98B8F0C96D2C135A43D8A0A6D33114DAC906D9F0 4334AB431812105B969FE584623C1BC44B8D6D32C433EEBB7B9BE6BDD1873C25 F06CCC01B9B43E4A6445E9E0936805A38BF1E01F23861FDA9B0087BF3E2C85E9 0776A5306C6B97DB8CE6377108739EA84DF52CADF14C806DA7EB284028805B94 8DB61CB5C591B5E3FEF87E74A0F3F1B963A1B84F717DE48F085F5AE9CB8D60F5 ED2D3D09E720072A2A4C2A256DD98A9F69FC6095C964DCC618FAE945A714BB8A 24B0995F5FFED10FA0D8A6CBB2DF565EEDA1950907CD9AF9FD1B360BBC6E0963 82B35E3073FD7FE70B874CB51F06D9698959F459FC748589C1856387CD60BE2E A8F7E621858E50F0FC7965BB2CD3481C53A3E3AAC137B75F2EF13AD72E51C0B5 F6101240EE677EE6D89E0A8A45111DB661AE6C2B3A07A1BDCE24C4F20EDCB4E2 19DE64A2C1099AAEF4CC90568A13B83957C016D518859643557E54C43D03C968 3B22C4834FF5204A1C94611B8B968A9D0BF33915C7A74A64BA80663F318C6349 2A176111C6A2DBE4C5B25A6774AABD94C148F64BAA0D94A7520B23BA02337189 F8BC91D75417AEE0935D699E4E113B7CA25E7BDD189B787D278B83041DB25479 84098A94BB2159FD82EBC32596FDDD435D2B568F3030E31A98F005E8FEC084B4 42FBC39627119CE8D8F7A84BF68353AED19A7576D74B7CDBBF9E6BDBD2026303 3C1EB51FEE04DAAC22DA8B26B0C3DCFD7AD50E44CE9C734BDCC605C2C5AFB99B 815B9E0DFFE77CFB35CEB211C6E5092370628184B08ED27B8CACA1C7BE8C6521 E41D3C4142A84D267702289E6AF90C48B7DFD05156CD6FB4EB424B0CC12BE5D8 9A4DD29029CAFACF480ADF9E9D8BBE6F7D90F77123F3E15C6F667A718AD69721 F2D996CA371AB4DD46D28476A84DC6C0B22507FAA8031B7D0CB8693DAAF8BD6D 24E4578B3CEC87D60018236E612025BD514B7AE56FB0C859C451F0B34885E629 434A3937990C3C20227A043BFA53C3628F747BD588460BB25C02D0C607C409C6 F56A23750F8B09959C7B3935E70F90650EF8A71A9293A7EE6D5D01914B9B9201 1B53DF0BA9D573F2D6A6C0D9B884E9B46BCC92D4D82AFE8EE1661B66F77B13CD 7C5267786A4B9ED1A036B591962A4C9F49D58FCBC86EF12B447363A724A9EB9A 43B0A46580564CD8B6CDBBD0011D2C2AE51C1FF386472A8DD61C66363D88F0EA 5BBCE688605B3C7082248856EC479F04F99DE1E827D87494285CBD2AEDADF415 D154BC6C30A35058800A1360DECF3609CF5513D86F41C4D058FB9304FE0CA42B 90F23C676499E2A983AF06FCF09E372C69C5AC195C6AA0007014878AC4EF2CB2 A8FA9151B2C77F776DA1C329736E0F908F48512991562FD3C0EE5E7C75EBA52D C4686544960F7A37FB2DE00B945C521E9FA54210F42C1E453D0439DEA072916F D1C9B9C01526E79D44AFA41B7AA08BD4CDA27379C1A0BCABD929AE917BCEE67F E3AC05E5764E79ECF059E52EE85D64D28766076B412D2CA9271B74A6095CF04A 31655432E2BF0F9C2C5F37C257B31E7A5B06EAD92329ABE9D70FAB1C16957EE5 8C80A873E3AB6B29B0126C75CF659E483099A5A32D9B0B46E803B5F35386F136 B2515ACF4DFF8779C311E74A57A13C127185C2CFEBAE6B9997043721DE4450D6 61648C6A697F09ED42BAB11759845D46E8605079C36B670CAB73A0A1E01D9E38 433FC147E25E8A702282286860917D4A0DEAC8222A740E58FBDA91816DFCED58 F933AC7F7EACBE198DB60E6F11ACF470B57FCDC16DE31BF4B15BB951E50ABC04 7A9EED8550B60364CF3782CDB7165385DE0B650599AB3DA34F5D5B963514B4AF 09826FBBF93278DE6EED781FECA7CF00D2191D14C9D8A5B018C73E3152EC3C7D 079350C0BAD84CFB574C35D7C9B1390D81957EEBC3EE70802E0B572AAF20C79D B08D8C2EC77F08071356C2645A4F7C257899E0B72826B89B713A4501BACB6B92 06DA791E0DFBE3C0E68CC28DA52D2B1FE5E924585BAA78C463D865D7366EAC60 EAFB579FFD8E0C57385D05AE1E8B6072F56DE0D227339AA24B0E4B6838EB84B3 A891C4F078A69245717FD73DB2704A1147970CCFD9E4B4B1B109B3B717320555 D6E7A3CD8DFF269AA35BB959BE5A70946ABA128DA86D92B92046BDBB73C7822E CAD1F50FD9C064364071A9A8CFBFE3F365912C2B53758807859107685023B015 E59A1DB2C85CAEE13175BC9D60942B31EDC438AB4743AF2CCC57A0379F922DF6 11FD6B1AB6FD9E136EC11148C08372C65278116A1457BD8DED61E3B987C0A3F9 FDCC5C1BD67A2AFAA505A50E925D18863E2FFE33E293195DA5B3B9B993BEA762 5C2AB3C89DA2BB72EDCADF3C7993445A26191124196494FD3819F38E1ADC02F4 53BC8487EAEB01B6502343C360EE62FA6A5133354DE836BA12A6E98B3770051D 97478423C4C26A75B667B30844EB7C7450E39439F5E2FB30763E519F67A1BEBA 1164E4CBB723531B04BEE7572C808408965E4BD1A9C991DBC59469C57504EE3D 0EA77F0B688DAB51C1A11B5447DF43B76A97CFD09A6239A8293C9BEBEB2786C1 04045ED4F8791918648352DBFA58626CEC471E47A0C2DD369434AA93C4D13C01 FE22FC16270445D61BEDE0CA168DD7AF4A4DF923FA871ECE63ADF237D37CEE47 9C6E657A4D8874F7872D0B62F775570AF435EF8FEE6D3C85571ABA7877348E32 4712DFF94F1DB89064281B94E44B3606A9D3E63646F40774526E99390EB4F196 4CF48B9F39EC5079091E4FD385F6B7A98DC6076582AD027DC94E7A4501B0BB26 8C00F79509D91279A17BEBE5FB19022C1C98B784E113C126B9B5568E20700322 E45F1CA1662471B3F3E667EEB8E0DAC038199F9982DECC9EF81B8560C697187A F83DF3CF7F399328C13ABE41F7D091F60046D72E8F94B94D4D539B228754B4FB 769A930980B4CA7F2D88D31A842E45476E34EF002FA928E866584C7F93908AFD E8EC64790D76157EF201BED6903511F4648645B0229E648BF2D2A61A759F0B9B E80C814D449D65F0B7588D27BCE36D70EABBDCA2A09973BE36DDE06F651C0E6D 9A83AD303008986B2A94C0722620022E6706BF709950CE9B3EB09D8B5D4C50EB 922C5779A5A5350F0CAD649D175EAA8F3FE4C7E6ADFE77B5D9184F750E51A1CA 1C1021C89AB45777CBDFA4B7DE550005B10E21BC4D1F034A03DE398CCFD7A21A A68BE1161911997EB8F43B150CB2A683FE2DADC53914338EC9DBB7A26718E86B 51B8D8C9E098B021C510C1FA908C4D5FA8FA60DC6B4DF825352610D5C65751DF B3F01EFDC2D71F49C650384595806CB70B21C2503E27A06E817540EC46EA7772 E876DEE2F17252F39A9D57A542876D9CD51F41C489813D62EF5F7BE7BA6C3644 42D3AFF0BE9C63E2A80A4ACBA1C2E042983DF080B162FC392987DBC66F4FBC0F DEEF00B9503C7699DA93160EAC233C7DFC7F09F91752213BC63D05775706A18B 45B5A9BE0DB983220AD2F24DBF5814314E194528AAA540BA19C95DA8622A2A61 4FA39EB7BE6BDD394DC9B14A77DAA7FE758F6BF5F0C7B5C3C1C480CF3B41743B 6466B8C95F4C112879386508264549A56250D02462ACC3A5CA62304138A90CE5 E0FD95D975014F3FE0EEEF30B20C5F21CD179246EE87C057FA304689471D515F B168343171AD40C6D321510804AD735871C08F0C14A5549D21A0F4DC1BB8115A 4AE7E8739DFFAE2D51E28689ED56B3C9653CEC7B160B5A90600A9EB139E3C3B4 99B692C28028970D70BFC1CB3B5FA95900E3E68BA80853756B768E7120F08BAA 67734E0F5588B1C71961B1CBDA92036DD24FF72EB73796C52BC00EDF27DDC1E1 7281D147BE84C4FB91A68FEA90C3E245FFDDD78CAB1CBB53F1DD75449C03771E 5348317A3C4DC79FF83340E91D29692DE71101A7BCB4CB400E8D81DA9536F601 C84BF0277EC915E4A0F350038850E0CDBFE9250FC166EFF1B12A92A6C160ADE2 02A9B84DB6F998B82FCBCAA88B22E24D2528982F3F4FD44F722EEA4978BC5D1F 9D8FCAC59E66A969430B760F7433A4195A10AB6691FE2BE4057BA6B45E5A42CA A09CC3F70DCA414232372EE4BBB9972B730F1B5E20E61982E39BB4520E805442 ACD3D64BBB96105ADF1EB4BC3EE8790DDE514E25A7757964E0737F383816BC87 5448723D6AC995CFC16C6813234952E63FCB69789B5A25AADE08DED559289187 D50251CFC03CC3217BEE1F024523EDD5C7AE5A33BE538DFC366478070EE20BA1 DE588DAF0609FB946A0931922453E5CDD65A85C2B0A59E4CD661E447C42CE2F8 34852015D26689DF23E52CB2275A21A0FD2F4F52A98D2BCDB53C09782226C259 B9EDE48551F5154D78EC14315D7ACEF6954259D8AA6A8C76D476AD5D7D141B8D 0C7B34988A2DF797B6F4319DF83EDB8393C6DBCA6CD1073A6D7AB000F5C911F2 0BC35104C2B580D5019E8C16C1CAC5A84EB63C79DDD421E92BBF3C553EFE5BA1 D0EAEFB56A51D13EF586B3D44929C32EF5CE2D087841CA2FE75EE9E79F36A018 10154805412B91A4873A793DD9C1D7A1CBD25C57ECCCFDF950C0DD2FEF7EBE2B A1E02B6E2F884751A5EF3A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTI10 %!PS-AdobeFont-1.0: CMTI10 003.002 %%Title: CMTI10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTI10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup /UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTI10 def /FontBBox {-35 -250 1124 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTI10.) readonly def /FullName (CMTI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 103 /g put dup 105 /i put dup 110 /n put dup 114 /r put dup 115 /s put dup 116 /t put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E 2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD 8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2 7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC 32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09 482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF 118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381 1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA 8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4 61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20 C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504 3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70 9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0 125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8 34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A 30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9 39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49 9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184 2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF 0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348 3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D 9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757 802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28 FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0 98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9 5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93 5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815 DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37 4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC 8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362 E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F 42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96 3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59 A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F 7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4 49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428 D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C 0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955 CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485 1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB 8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388 6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468 83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29 60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284 42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2 1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A 21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA 206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9 D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7 7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B 55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4 6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762 4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392 871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E 9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645 DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5 41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8 2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F 220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001 A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D 981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F 337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8 139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B 1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC 100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A 1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905 F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB 72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7 A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D 310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928 7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989 1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2 8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33 80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610 3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996 4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB 865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B 301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48 3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9 1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29 0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0 30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E 2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0 C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89 14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A 44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654 DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34 9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87 4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3 2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676 21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26 47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4 F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9 D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F 03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5 886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8 352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD 9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0 9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3 92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F 821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93 3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0 47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0 F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B 9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1 AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71 C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978 B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E 81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038 970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C 6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7 97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668 A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594 971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96 514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7 8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C 392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170 3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F 464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053 911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6 261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA 147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516 C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB 61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3 F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C 2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C 7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193 11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C 9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66 C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3 1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692 5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5 6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0 EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23 AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D 8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94 376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6 B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B 02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56 4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF 9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD 751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198 3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A 40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962 2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360 D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A 0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E 8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946 AFFD0B2B724EF0F28393F3CB6A4DCBBA655E3D6E27F87E6D8BE12A15D35E1E75 D36532B9C5000C06A58822444593A1038EEB23C7AFC9EEE3907DF8232322B09B 230015E014F1B4CEB866234266440AD3686E30ABD086CF9C0926E711F0757925 5DEB3D39C8E6D6F0C05A364A0DBF90F6E32CD28887F7E237E04093E07A94C973 462254BC1B1586AAC29FC7F15A80FB5993ED22E79A0FB5BF0F7362CFA24BB2F3 D4EF7D39E1902C53053C27E2AA49C4DE54A05AFB1AA6C7CCFBD9F72150DE259A BEBFCA5C7E828BE667E9C72222B84C4C79C2DEB885A69861DDB635B02814BAAD 9672A14E50D6A2A236AB35C6DCBFA1165F47F8F52B0787EB4B70BFE3CAA8B511 A630E8148A51C1394C7C321156CF52EE7BFE07B6C354CB65782464D2BE42C0D8 14EAFBE88DA3D5C90614F22E02626ABD343F3AC0A9698AE84CB97F1CC421D34F 98B69FF4C335B95F4222A8BAB77662B4A57A4B574265A679334D5EBCB073FF69 66BD9322B1C2253AE85AB38889B26761BA509C7F638C6CBC4BBCDBBBF4BFE1AE 855973129978F707C87462B67509FE6EEFB5E0949674C34768F001827F12F1BA 77AE866711077C30DC0E40C2D8A6EF4D85355E596E26B675E8D223D4E55C3580 5B79260E90985DA5E5B2F43DE7713D5E67080D2843D44A3585E078615BEA476C 88233D241D3A427F9B1AD26ECD535E46C137084A835CD816CCA936D0011C53E7 B33D5B50ED7BF3F41289F48E394BDC963EB1AFD6F14F0C146E0F13B03E76B389 8AD8E81E41F14D1682A113D8BA1482D9DDFDE71208AFC351B62E028C3D50BE01 FC9CD5D5F36E28DADB469201F41E9F39098B65E43FD1227A26F6FF812CE452F8 B5476C28FC1B1B3E5FEF3A3B94CD552E29288AB0A3ABCEAAEACBD2D5E9001579 738029B0E7F635C6C4962340187558084D9CD408EF7FDCE23F465AFCAA8EAAC4 8855BF64EC9BC75371A98095CB51BE7FF107E4C6C2107D887716F94563768073 B8C4238F51C1E63C279B23DE3DF51F656B90880333880515945253BE08582F17 8888FF4AB1EA0051CC41CDCF6C2D4B2F19C17FDF8A8664754A884EB6A4311C08 074B3CFC4E20FF71191E3C1648D2C38260315702E80A6425361E89CAE7108A3F C7FB9AD79D51427F8FAE45D1B02FA9083F76469C3378D3510246D81F10F3F48F 9CF6D65D2F32BA1B012BAD2FDD43CE879EBFE2E5DC3BEC2EF496DD2C3848D655 AAE8EB7970EF9F9A5AC6BF1C30B61659B7E8075DC32A70F10CBCAE6122894309 5A0250411E81644F995A049EEEB89045B21B7741FE92A75A72C8B0A406275099 8D134C8CB0CDFFE48353CE37202D9686FD7AF16500245B88C1C5B88E3DBC3B43 BFDA072390A1D964E90FEA605DC6AEC44AA1D700017FB1F41C13A2C37B83FB64 E63E895CE647A545FD5CA85463960331495B05929F57DC349736AF84A5687549 CD60A676FD984F0C50AFC2F783594DE38ADF685F5E2937C95B50D07C6316ABC0 8495EF319D914D65E08722DCE6A5762EDB87EA4AD820C359201059F56296F608 395942723FB853CB67F553F689BBFDF60264E90AE6A7FBF7AEF443A3F760B490 8C3513FCA7ECCA5A363D7F72C62DFB1773CF88D2D7E1F0FD606878C4F274F285 5A3EF87C541495A067498702A89961BEFC26B229894408B4BAD353FE06295037 9E55663FC427EAFBF65F616CE7A771421FCB22006B241CDB156035A428CFC241 C3FB0343C9C040CA92ABC487113E09074631B554366DAD01C246F4E082C64B7A E9BE7C172B606786E702BA6D036D10682AD61CD0776567E40D095756D3D02704 DA8492D994448DA3E66366CF2D712AC596DE587E976936D0B5B0E2F02724414B 5AA83C1B3F8EFE2C0DB65600DA12E74A4E6D474A985BE62E8B0E6C0AA9E739B7 D1A6359CB3AC713C743C7CDEE58649C4B6953E5671540BFB5FE80776FDA87A1C 3B3B342B7AE56D96AA8F18DFD6A8DA83196B9F5DA844E622A6717CBCDB06B0A7 70C750DE8AB3960E58BAA873F0C21D1157A2909231C41889BA6CFF45FC41F07E 9F56466016A3C7BB340FD6B6321A5CB19788A886D0B5909DEF40ECE8923E7EC5 CD3881FA4311C937C0572619DDEB4618EA621867B1B8556E73DB25F5E86C0D27 913B40450E452906B5528E86B0F08246B595BC6487543AC0B789D555594ED997 911B9D19F01232F69A42F99FFA56DC7DB66BD6B9158E32511F945E11724CF164 DAF26FF59D8B728188A609D1D868C2536150F333BDD1DBE091283F1884D320EF 908F80BBD8AA0C8BDFE625F34B41BDBB60DD9A6AB33298DBAF5224EB27D47B8F 69588EA13F414A6E6EF3924EB12BD7DFA8F9628C4924BB5C065A6A581B31D314 6AC33A670CAE923A46883115C5B26E3566D2811EB20634B14B53CF46E0C66F92 4D5906B71A17C8E38C1EDC9A45C0E3472E4BD49FBC8F8D1226C8A020932DAA0E 2FADA6A30D305693AB8E3E08897AF9EDCA74EA769AAA7D6824F01C3733E73214 2D9AA6EF67203CC27E3E7510D09015533CC5CBDF4A4F43761B5019433B615A95 F5D1FD30B1FF23619141C06772C69C0340C90443F192EFBC342D1ADEFCC125FC 4BCD134167487DAC3A1C5D18CB454EB3BE7F3DFE59BC6F349395066C17BAD3A9 94F54B393C29D53A3668370DC085A703FDC91930B0CD6F7FD4EC1F338D7DF701 E96536126691975CF22A54EB33D276E0F67FCBE601DDBC41BDC763D9EC78D386 51A7F72FF1338CB14A6F09670E67F472D6F57C6447F5C82305B56BFDEBC0B324 EA6FD3853C831681645B10C42B9165789D5FB6EE1BCE6B3E908AFC374688E720 5A3930D9918DB4189CCD63E6F4BD9ED18FC1F0F3E85D51E3615FBFA4F1E9A746 96B0F85B468281C142E707271350C29703F947292B191990DDC3A13A60A981DD FA1F8B9151C8CB3738AEE8FF27E3390404F5C96874BE9290AE811A35E0C4727C C7425896985C8324159C8A3A4576BDBC6EE02323CF51ACA4AFEE28A4AFE6344F 54C5064B9A124AD5E6B2B2CEE087768B97DA1468ABDE4FB32C632E1CC6BBF007 B8C36E1D3F7696415EF51B3EA956FB3612B12FAF9B511F9D6B29DDD7C89FF065 1752A6E7826C367ED149527468A9A8F3730DB8E6C7DA1EFD1BB1DD2693BB2421 52733EE07D56146CD064222CA4D765AE3A1AC8366538BCF0101BD74F7DA3D330 04575D95799244593ED3EA108FB8FCE3A8BC431416A6D60E27C9096444E8C225 3B838FD5B8C78ADD9B7DF7EFBA6A6A466CD243EFFDAF90ABFE82CF2B9E06DCF3 046758EFF0C168001B0AF208160B773913DEEAF4F167B0BCBA1EE3A51766C9B0 D3440CE0A46DC741B417E21502354EB5DC09B91231A5B79FBE4F80028C01B505 91866DE115685EA48FFF22ED898D8E64C7A9C9D8CB20451DEF0551610C6D1255 7DEB229CD4AA2C8F0AA989EE31BB94D940835BA22BBD1607C8944C84226F1F59 35248C1A4AA7F0AD631CB66B7A149AAC76044376FD050E367D993144111232DA DF4650BB5F45B791FB1221B54F88798E8619A3E82EA65C4A3DDD98A3E7D6B296 EA6739A97A0771E6270528213FC6F372DF4F1FBB80A47FF62FFD5287C9AA4F91 5064F8D3CE7B4C71156E4D21658D626B97E01711F123719E3DEA49CF8981DEDA CBDE3182826A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMCSC10 %!PS-AdobeFont-1.0: CMCSC10 003.002 %%Title: CMCSC10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMCSC10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup /UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMCSC10 def /FontBBox {14 -250 1077 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMCSC10.) readonly def /FullName (CMCSC10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 97 /a put dup 99 /c put dup 101 /e put dup 102 /f put dup 103 /g put dup 105 /i put dup 110 /n put dup 111 /o put dup 112 /p put dup 115 /s put dup 117 /u put dup 120 /x put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2 048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31 CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2 0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3 D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D 567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3 DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF 435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E 2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148 D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1 DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70 8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C 9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E 1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49 59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402 A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA 90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E 3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB 3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41 736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198 E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94 17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E 1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085 35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367 3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1 5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245 658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD 8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9 D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7 606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C 64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8 F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00 C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7 072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3 7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317 1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B 5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3 2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06 491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07 8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F 9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568 4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781 AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E 36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA 88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85 5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3 5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8 AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152 7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0 CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8 E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF 53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9 FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A 94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4 E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC 4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428 F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4 5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460 7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2 361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579 5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7 83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F 8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3 F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327 EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15 B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4 8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE 07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE 8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4 12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207 A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29 0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24 3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128 2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037 215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720 70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5 37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A 0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F 7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8 9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5 28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A 962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3 3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC 3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5 15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8 DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF 72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512 D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588 462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026 465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607 6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7 8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20 53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34 E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605 8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395 CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064 46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7 391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015 55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643 0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1 0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8 3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A 22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384 5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0 20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3 B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B 7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9 B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201 213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B 57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082 9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271 C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F 54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051 1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90 7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287 72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC 5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2 7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901 EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4 62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1 0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A 94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6 5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E 74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88 159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5 2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143 40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977 CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A 1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A 7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5 D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614 37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874 357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68 6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435 6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53 686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8 EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6 3088F8D19CF2364A329162D39E166AC728B267758341630B00398D64538FCC4D E3E6CF103794C29AEF7F7E56970F6B1ABA87DC8D23E280EDC77556593D02DFF3 154883CFE4EF04E07E7539A4750FA1CF1A994E99B656E728D140C83AE1F196AD 9F049188A4184C84556C0476BE46DDA8ED86888DDA3065C5091D99EEEAC43092 40B97AE327215024ACC0134CBE91FD761C26A48EDFF9028DA28222985FAED7B6 A1CC891D07185666E34BEFBBF77C6C32B88FF3F1046E4EB2CD942E70746DDCDE 002E74BA03A2B15E0529E61DCAC207A71F61C89D81B3C53C5B458EAC70ADFC54 810310CB04E1A21FFBC5DE2429EC0989A3F2B6AE4290A005FBE736750956765D 637B7CABF7F9A593D9FF6C322895835C0007A78771D1404671122F9CF898AB24 1A5648EF8C40B27FD537612C4CBC6E584FBD058DBD4F0A00C63A79077826D3F1 859589B221F7F82DBE392601B0A89142648EB40BCD943E382FC7758A10F978FF 6DD9C3C1D284C5642C812DBF29A75A50BF63F788CBEA5883DC1544ABB49289EE 2C99CB03C1BA72C7320904C7EC94736825A793D5629EABFCEFAB8D28B6F23858 89A6967942A943FAB5E5B26B8567CC9606DE60329C6D890843F700FC1F60656A 38164ED7976AD47A8E54940B9E340D61353AAD260C9273D45772AEC8E9F4F045 9CC576D152757AF3B74DFB9B6962001EA9FF7F62C2E36F71D9B76BB99DA7631F 774795B8CD1E08480153496DE5E08A1F4BEA681D0C1D6336A49A222B0537ABD9 75A3A9D27D0B71B8913E9355F8E56C5FB3E14B9D5ACC4F87339FF9D9039ADEEC 660B5CEF75E7C1772D4A3A4D0C8976A165766D9DBD0CA8132D17E5149AE716A9 2E255277FB5294A96194C462C74AAB251A36941768EDB3EC6DC2C481393ABA6C 8BC2F3AB0BF5A6E5619BE16DF43BB099C6CEA5044ABACC419174664232E97B29 ED32362D219AF109E5D8CA751EB1F9F31BDD08C93AE018E5269AC327FEC67D99 588CA80F068AEB94A7B943BAD5EC8D89C0B8D153B4345E77A5AD9B4522208A33 DA92CDF765B44123C6EBAA06D629EB9E8D0FDD29BFD60EB582CB369474767FE4 C0947F27DCFE0C8BD3CF5131E706E02ED136DBCE6363CB5CA637E08C3D832037 5AAA88B746B6D915EE72D7B458C55598DA6284F362D2DBF06C51DB50A9FFFB5E EBFD69D8D06AB0A6DF2D03F6E14FF290B1A1531109E43892B82B29395910021F A6EA74B8420A14FC189741ECF67F81686BD3C5559DAF75DF9FEF3346CCC35AC5 37A1E30C2602945974A2359EE3183A1AA568978F7732C35BE2B9224C27161748 515E5899B0387F0640DE1D712F390A8A026FC5C5A893E98F46B418B7B32BEF07 AD0EEA87737D929180B2BE697D0DFD46CF307E4FF76BC03492E66633F1357848 AA5A594EB8CC5913E76602C9CF8B7428F67965D5BAAA29BD6C978EF6B22B0BEF 4203B223443554971EFE558FD2F51D01B35D2194A1F6820293385CF12DC1ED73 79EA6082A30796D5EB72A67C5DB42A01F18CCBFEBE2F10B091C43C2CBACD8914 D665B340281C1EBF92249FBDAA577CB7769974B669DA0B74E822EE5DCF3A32D8 9C6714D8C82CE9BF3F16E6336094BC55381E73A96D45B7A70AE00F9CB8348E08 2A64E4B40B3BD0A653B423C5D3C1ECB62F5E05393FB8C9B0C44AB26F6BF796BF 5B51601913014ED708B97731A5642351ECD0F6CA9C06832E0BCD0055E9BA51CB 7242CD34AF0B75F3594AF9235C42B974074665C5B6C934B08E5C7F55638E7DB5 312BC541A8000E69A92ED6C63AA6485A50DFAA1DCF9B0DDAD23C43DF22F3000C 0CBF6F8F64F37BDF8F8DF321FD8F42C3FF774A388F9C033572B177A493814ECC BE19595AD285F11763857603EAE0D6AED509225CACBC49351E6BF1457BD11490 EDA1C3DD6DE8C7036464CF80FE562CDA51ED2EB92BBC79252FA79EAFE5E6BD4F DC16AB83B2C902A9027BA4AE30ABADFF6D513BEA850FF35416E76FE62D8E88DC 69F0C60921B33BA59FA3EDC8F532B47FF2A5E5680BEFCDAEA4474DFA2F8FD68F 74B5837A22984A7534A5321B83459E436AE4C498702EA14A77D3F78DAEA47BA0 1BE6CFAD95132683BCE0601F3EDDEFF5207FD5FF3CC9093ABD946CC7C1076DB9 4DAF08C682269CEE980159541D92FFE484B7440E5AC58D7707BAE579605D1EB6 42C396807AA13B3ACEDBF3A465CBD56F076FA9319E43907B6522904F92483537 6102700CEAA52EE916B80AA4C5F8C98C9AC9557F97784F075D37A83649D632F5 82A519507162012A671F3B4DBAC454D920606E9C87CADCAA1172A04E445A28A7 0FA9545E5FFD15302664B5C2C4F479C8C760C2A015F5F5CB51EC6C0260154D37 4A65B01E58B458ED0FEBBE74884C9DF7D50770153FB498E94F65475A5EA6A687 543DEA3156D3E5CEE23923120DF4D561D2C082F1F3BFC5039A1DFC1C9C3A328E 6F879AB979F2C177FBA357FD63F8CC21E8AF632D6B01A3AC3EA7DE91C17B8120 42E78A1AA2E04581B1C434A8147DBE81A87C73782DAF4BD5F309280FEA22DBAF 586AF386182364E45D7DEAFFA74E338E875B64B13CFC909B30E074D777D347ED 3A58A82D5F6A6E913054F9FABFDD9ABD8BBF54DC3480F3A90965A0081092714B D77604CC7275050DBCCC800BCD8E2BA540B18CB07AF27D66F8887A571685600F 3FF8C7A4966A8CF8CB25DE0495CD4E048999ECE6579AFA82D1644FE160E2D3F0 EE7CE89045332B172425D7D1443E8DD9043A12042ADD7EC106CB4DAAEAB310E5 85F93869A1C519DC0E3CF8F4C05030F0BF7054C5859A74ECE7D6FC5644C5B84A F3EDF0C4B2DCDD0D193599CB3CA00464A90AB55674F884001EC896726A9B374B 3A73AECDCBE06895E87FCE6267091C6CED0E779DEC36D8CC35184E00247AB90C 37161FFEE7CABFD7499859042093BCAE22D6B811FD16EFBC8AAE6283881C12CA 98E0792640063169F76B18EF543AFE7951E82EDB1DB9597F2F9C959B69943379 CC7F5BDBD1BAFF7C77AD8D504D5F17E1B7DFFC515AC237748D33FB6B9D7DD903 2F3E9768290A90A5FC5EA516A94C1885B17676D33CE4124CED1359E473305B02 03C28731C0FC52B18FC14360C9494FF2A86AEE929E4022ACB78C02ADD6174FD0 D35105BB00643F6560A9CCBB3E5CE2F79F0EB9BA774D27DC476867C991598380 F77CC0444500CF43DAB8D729B31EA5A3184F178F82622A8B711A9CA6A770971C 521C44969E814B44D8E1927C283E6A38B78D7C258630730EA463FEEEAB263838 2A517BA176D1C137AAE7430532FFB0FFCA8BF110DECB42B1A7A9457A9ECCABFA D6CC11CD925518857AAA8498CEF35377CF92FEA77C09E6AE25DB2D09F1E355BD 7F7F5C72A76315F3C2B6BEA1AF7BA5D0E8000778A0FB2C60FF677ADBA9156A11 A5B0B7AE92DB368571C040FD7A29C3DF384CCC29A0E9F40FA385630D23AC1E97 C15C06848761CC7D19D208BC115A6A2933056BCEB3717CE2488E86D0B0D6D276 22B2FF1E77FA719372BE62A5B6E10D3DFCA57DE70AE16C57718B86C58B6A7F3D C6DD45D7559F9A0ED8889E707FE7622997F2D573F7688621245E0FB3D34A08C6 40B72F4BDA0394CBF90735B9E6B3928AD56F50FEF9A5DA8B195008164EC03424 7F5317FB8157C33F6903FD6D4B4728F82F1B02046DA16F4285DF088E08A136FD 1366494E3F5AEBED4B48B3B9072BC811A700940FF4B2A51C0434ABF225B37BBF E4AB11F394332D66393420D4B843CAB6AAD9C32418CFE6A2A1260BF430E61176 4B1762E3C9F1727BA47AAE4C7589E7099A56F5E1CB6BD64C0C8D026ED60EAFBC BAD1476E98F5F12ED94BDB1E4B0D8FE9E36CF40DA6F5B2E1BC41EF5F7CB49825 EA5058FF7C49C5FA11F9F9F575AB4D8237FFC2573F94B695CBE9BC44A1BB26DD C6E55627BA16E5197CADA519CC7302DBE77F1FE4CF68C558D8F6E264 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI10 %!PS-AdobeFont-1.0: CMMI10 003.002 %%Title: CMMI10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup /UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI10 def /FontBBox {-32 -250 1048 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2 1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C 7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B 0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085 EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37 404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133 78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE 88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4 C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88 98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760 E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44 143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3 981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490 88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285 4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683 FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F 347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04 B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733 F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA 29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66 36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12 048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0 80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C 9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B 75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E 4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC 74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355 E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097 EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D 543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883 710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6 EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F 7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93 03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2 01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89 500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208 AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE 1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915 85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C 4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1 6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F 55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18 085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02 BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951 2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1 991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125 6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754 E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80 E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1 B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3 4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65 1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7 8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6 AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051 E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD 38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3 7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751 2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27 DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D 22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6 8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB 44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90 D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A 42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E 0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE 66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6 E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1 6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E 1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10 B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B 897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40 A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3 F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126 2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6 51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3 598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F 87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE 178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6 4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78 7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6 AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6 3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379 337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547 C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5 DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA 7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD 6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC 98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355 821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4 C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886 7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6 B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16 A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325 23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3 969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10 3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B 9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725 1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239 B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966 95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7 FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE 44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986 FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4 E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA 633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D 6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD 375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2 6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7 EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156 DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891 D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538 D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4 9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B 9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6 B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0 D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF 8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93 FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26 B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F 00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50 909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49 5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF 7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0 C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1 BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37 BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D 4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075 94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1 F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9 E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA 92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0 63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271 B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9 5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E 86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0 AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180 3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC 35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD 155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580 AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255 E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F 226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496 9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B 8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B 919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7 9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0 523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7 88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D 2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66 B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22 CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744 3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8 404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84 262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953 084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341 E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI12 %!PS-AdobeFont-1.0: CMMI12 003.002 %%Title: CMMI12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup /UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI12 def /FontBBox {-31 -250 1026 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI12.) readonly def /FullName (CMMI12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE 882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3 2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A 7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541 0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69 987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7 609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC 182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A 1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D 3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6 D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200 761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24 8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F 68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D 10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4 262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6 922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16 56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26 32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA 7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460 7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A 46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD 754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF 88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A 7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760 8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0 BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25 8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300 135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812 1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86 07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39 14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D 7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D 2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D 639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3 D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F 90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948 10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E 1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E 8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9 1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33 9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875 EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3 60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8 FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D 203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608 FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09 DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F 2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D 244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077 31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B 724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8 F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7 D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907 CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF 01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA 287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605 8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9 9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1 6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5 7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C 192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4 A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9 50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67 A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912 3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6 5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96 8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE 084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7 92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2 AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27 97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF 92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5 7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824 5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199 13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76 6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1 5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5 6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83 F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4 7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A 9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817 E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962 AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8 0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003 1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31 7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E 38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8 5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F 3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85 15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674 6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6 CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322 EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82 A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D 806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4 461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1 4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361 9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C 172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6 69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690 356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0 E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78 7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A 31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7 98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30 C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61 AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208 E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900 76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40 8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573 CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7 761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A 2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138 89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60 D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485 D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8 B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39 AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3 866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD 207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73 756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7 60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A 1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4 A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048 C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3 03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321 1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B 97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8 4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF 94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97 201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7 9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000 CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7 29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939 4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED 66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31 14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53 84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74 6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12 49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C 224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5 5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4 A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498 1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D 5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6 40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D 2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE 710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45 FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8 FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736 5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.0: CMSY10 003.002 %%Title: CMSY10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSY10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup /UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSY10 def /FontBBox {-29 -960 1116 775 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 13 /circlecopyrt put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A 11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F 10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D 7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B 491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D 9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E 0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD 5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B 5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB 54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD 2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C 16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F 483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA 051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B 8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB 0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD 8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F 153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A 98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B 888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D 052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F 07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D 3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F 849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE 84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA 2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD 2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E 4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB 8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C 4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF 035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B 0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E 2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B 60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E 94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA 343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE 894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F 8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC 4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A 60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E 71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52 9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016 A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44 AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829 F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647 A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822 AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001 EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781 CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628 86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9 AE5400775223E684BFCB 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT10 %!PS-AdobeFont-1.0: CMTT10 003.002 %%Title: CMTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup /UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT10 def /FontBBox {-4 -233 537 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 33 /exclam put dup 34 /quotedbl put dup 35 /numbersign put dup 36 /dollar put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 53 /five put dup 55 /seven put dup 56 /eight put dup 58 /colon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 64 /at put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 89 /Y put dup 91 /bracketleft put dup 92 /backslash put dup 93 /bracketright put dup 95 /underscore put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /braceleft put dup 125 /braceright put dup 126 /asciitilde put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB 556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F 8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC 56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F 15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD 04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA 4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D 69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A 0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C 550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A 9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F 7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A 2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE 49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE 484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C 6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F 5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C 1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F 52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B 0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC 2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F 0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D 67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC 60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F 1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D 55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C 7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E 75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB 8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA 6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD 4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD 2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE 97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF 639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A 5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE 5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A 288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E 7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F 759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E 03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A 6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D 906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE 251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6 46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33 DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813 F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025 46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49 2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C C3ECC63492962B685F789DE4E796D1EE2F23B7C9F9A1656B85982FFAD6E2889C 7A667DB07ADDE075297F9E5808A98A05DA37D8F23C62115D1C08A331532770B1 E0C7B867A3C0DB7557FC8207C80F6E3717180E7D4F3D6B66C7406275A3206C80 4CAB4DA1D6EABF67CB1B8D2E34F25900927BABC9BB12685D7D153D0960692BF6 93BFCD7FD07158CECA1F10A5D75C8B02FB448147838490E80AFCBB1340C523C7 E247273704AF5EFBC8FE5526AE4159CCFE773D9AD5893EAFABB4C4259D5A5BE2 1B50B7377C8D45B3D39C45726F023EA52AFCD5C7FC6577880BEFBFF509D61A27 A58C80AAFD09CBB71E088D7C414275F6256511CF4FE9B3F3E74D8B491F2E775A 0495EC4C7C74092A337AF57451EC45DD1BE65EBB4F6F2AC454F58EDCC6B7AB68 0728EBB958A1D5AED112BD7193A3047D23C8AEEAC26C7FFC1E78386C0FA6BA73 DBD43E42A5C77201D4CD352EC3E9C496D2EA2BF7995852A50B29D3E2B16F9DE4 A769ECC02C227A8487D22BE8EBA57308B5992B9433D88982233FA0C895FEDFB9 10B63714A2FC8B9396F9D625DEC3240EB2AD54E3F08238AD01C665529018529F D078C2C287675D7315CA64E907C3D428ECF2F3283C5CCE860EC461D403251DC1 75E7ACB31F8958132F3D57AB5E34F05EA9F5042786C108E51B07635DC743D063 11AC9348380109216561C53A74F4C3D595426A1A86E9150D3A9EE3B09D7670CD D4F33FE94D92E8981FEAE708E978EBCE5A6D17B4A1D1D9161156127EC0AB5B6E 22B801EF92649437D89CE344D6E4C92F942AC811710D83589A03AA83B229D3CE 861D48CFA69CFB61BF3A6176FCE2E406CFB30ECBA8F9595CA3405C8F0FE23DAB A06D1300C586F8DBD775F22F2368B6714FAAE85868C9EB6F7548E63D6E08EAB8 B6764FEA41156D3FAF9BCFDC75113B8E73AA4F31F475BE491B45FAC197ADA3E1 57E0DFC05232D2596F7B69CBD593181849FCAD6FC6CE7217D6C6CAA328BF57F4 FBEE4E16CE5035383201CDE43EF601624AA1E9061821345302A49C06AF6B003F 14B42E6CE14F978F194F0502B7E610DC069791E52CE628CB5452BD6080C37F1B 0A7E8F6FB6C40329A70AA824616CE893FFECD2EDD9F8EFABC788BD415FF70F0B F584471FC7DFFCDB8B5653DCBE2D191E1BCDCB83FAEDE288C9FC34C6D35E6738 64F02C8A76BD7CAD08F318050E711C1687BB8C208C8ACA101470AB06D4975F82 65EC88DFB0CE26289E3840E8D3E7146C9A03F3CE9D6434B04B0310308C221E7B 8D8709D363DED43CA5FF1C8CE6CD13B5906236DDC75FF76DAB5A38765CADE270 3BB52ECACFCEDB884D1453E01A9653816ED352AAED96DE3D2894D64D1FE67656 57E1E7E51CC85CCA202965C0AB8DE87E729BE4D7F1C631B6DB9F0C901E83D397 791E4DAAE3B96B8C7AE44F70AAFEFA1E8FE0EE6A8E811652DBB48F2336AED844 3BFC598A713C268C171BA0331D042C38001800A4C8C647055A0B064DB18A9D3A AC9798AA8208FB2862002C164D0FCF6FC38B33F2AD7E48C29D349583E02248FD 61E03C71E686B96B4D4E0124EE78FA97082369335AAAD3429F5A961BF05A228F 11A453C158B731A5805EDA613947AE9FB40782C1077A71E5C95228916E337821 DCE43615341DA9FA362007D0ADDAF128E4E336E0DC8190C5CE43B13C27519FD6 8638AABF83D71DBA3B68D64A5E62CD663F9D79E56AABAB474EEBD3B4BC812DC5 165D4777602F732DCC2A342BBDBD3215CC7360DE6902096DADAC86D9C2D17F9C 23C68E22931E91FF5DB218AE2CA8EEF4F3FBE930FC47141078B466AB2C564FAB EA33AE882A540B806AB69CBD2A8E55D3C26BDF7A0FF87FB47A2839A2A7896502 47F1C68F882E38CA6994D57D8EBC8F15FF8E091E3F1C87CB83A65571ABC8BC42 F2D2E63D7D777AF0C2DD7E5BAF96F20E29D2F08BB1290FD43DCCB7C0C7F7B5FB BF67E1289014DA74C35B6734D3618489DB97DCDE55F701A63A70E3F59A3DDB7F C6A25976EC99019C6680BEB374214E92BB04498556D84BFE289BF1E02E07486E 91F9E5E5FAD11E65FA0356054F352E3489ED93DF3A241CA4A354EDF0C5858517 4C7B889D256FF8721CCC80D14C7B40B6CE001EB5EEFA0E2C991EFA6B80D1E6AB 19B86AEEDEAEA08876BE071C01D801489F0775E46460F6DBAAB3F2C2C7F95394 4CB70205A4CF5DF4CBCC45E8FCA893CCF96BFB8D08F2E439DD00EB511CA34AFE 22AE0ED77D48EA49EAC1E2EA81594EBEBD0539801393C118CA227A95968FCB1C 0AC1B08AC36A6CAC79E033E4283A38BAA3F3081D9AF5108E5185175C2D1CF1FA CCCBB612308A6A8ED21199759C04CCCCD3BEF1631AF6EBE4437900A3A581ADAA 3DEF3F55C84532F7A083D553E91A965A732388B1440116903A65EB8D151C7135 AB91DDBF69A6386B15C104868DB82ADB1FAAD169531A04FF73D89C8ED2356F8D 6E6EC6D1476B8345D340D8B6827760CEF6C191E8843F12F3772EED191E596728 80651E10D1B307DF76A84028EA7E64321F59B4EB9149B347248517A513750E53 E61A74BE0CAF41F18C7AA88EEEDE0ED3D5CD84754657A92669CC9BFDEFAB9CE8 11355329988AF84EF116B0E2F68451E799EDBA2007CDF555637E247F5E01D3EB CE40A4264D275863AB55D61C0533A4F49D64EEA8E05B2EB93366C64FCFF33D6B 718706490AE470C0F297A27F4C1A269A3E9B75E9EE8CBEFCC44FE045B62B66FD 47A2CDF0F19DC5210B65EECDA51DA371BE25DBABB2D13AB45F3B7BCAE838E26D B5319199372E44FD4BBE1C09AA6DB28CBA5D2EA7B9486B36BC7613A0F0246543 B3824B039C624E2A05E4D3E10656D67DB6D7E5B4C2EF7D50C3A6F64CB2F35563 43366F65963EA1EA05FDFEEF8A833B17DE2F15F77E8D1545EA1AF87EE6F50A85 ABF31B62E3BE1DD013BFB96A574738360B1A6C9F649FD44176F5D4FC98A44707 DCF14B274F902BC4580FF1E61176AAA10879A94A8BE4B7B8F191B2E624482DCA F73DBE465958ECE3902EB75059E17F3DCA96CB235B22332CB80FA23DC537231E 02A005794EE621B1814B612EA22ED5710DDBE8F6616F1D67F8909018DF3377FA D66C42BD2C15D185C7B9CE30E8B27E6A142E89E6EA90FC9A02A52F5615394448 923B60EE0CDB61683D6D6F786A20316B992FA8D6BA3738BB66CD55C1988F572E 627FB1ADE7B5D74A54A8AF5A621AEA30899A3B1D45D75252AC88A7933ED97847 B972F944716D8664A2E2E4BC4C28358583BD960AD45261866136E0A626C36842 93F9D95A23EC5721F7783BCEBCFF7433D1FB87E6FCE3F16FDEAE6A34EC296E4E BE5A6B30FBB47562B4D2E8A1B3FB5F2AB273CCA2B4F32353A51541FD44E76060 8889B4A454C42A159A0239B1E451987846DC2B5A1795DF53458AE0995EEA0521 867422FD27F7DE1F177F9DDE065C882EB1AE2ECCDD5646D93B7FC13379451C78 DA50030751DAE5776B8CB90DC02512BFA79391BF8B8BD3B7E893FDC359A36822 536F79289BA4D82FAF112AC06A4EE34C8499CC7AE22F3F5DF7E096FC1748D1F1 CEF00A20701BF1E476E19B8C904B4302D80D18F49E30DAAE2548EA21BCD8519D F1EF0D99125463A8E9B5E6943D1C18E1FD1DEA5073B6DDF91CC8D4FABDB5446D 73F0A0CFB4BF1C4C74BD32FC0E299E355F3FBDF6E0A75285E2EEEA66E4EB2513 995F1117FC751D55BB5B66CF37573A8A932A34AC29581D46D5AB5ED21A5C6AF7 938C400AB449B328285B211E54FB22F2620E1908DB3F3396F91C5A87C4C4726C C8A54D630E9F3D878592520AE5E5B53668BE3FC3D1E4D263FF5C6A84BB5D55C5 467BF67904172EF0CE6772759EB0F75D2403F8A0B40D6DB9F5D74C3A5FB6C30D D04B316A8B11B9611743BEA5CE92D8730E577B13B84283BBD970DF44BBB87A80 959D4303F25033127E48173120E3C3595D095843F2467A3473C498CEB9075A20 5DBB9F82DB7125B631139286D6C5633F94C4D5097EC8B7A8D096DFADDBC89C22 135440B7929C0724EB1FB9D8C9D5480E97BB4606EE6976418A96B42FB0556928 ECC51275CFA1D0ACBFFF46FC0B04CC70CF302406767C7FA493DF1EB10A5F9CEE B3AED9CD32F93D862FA2FFCADB986F443F088DAFA906D950D3257F24C64DFEEE C48CE69284FABA482D68FF726EB83685DD48052F130E18132954B3E44FD3E22F B39515841BEB0A79DAD72984C39DD4FB8C4FC508AFF5B45ECB4B23789F0EE906 9EABEB099EBC24D1393866FD9F4CC79BC57C87D5F027501DA894F237A87BB9FB B09039B4E9CA8E767319630FA2CE444EB878069DA89D36AE4D9CE4E7F8ECC5B0 06D85CF8ED33138F3F7D664E275D9041BA70C6CB4F9BF26EC2B9C5EF2BB9AA2A B5FF38657170B736D0A06F148970A385895F4C2F524A582CE0E224E778585652 7C186BA249BEE06DFC457D728C6226027B8F92A0DF24E7F9E3A7AAE93FDF6F87 E694DD95CCD0BC2504F3D9087210CE220862D34139D33EB505D90D39E7DEE3D9 4DAF699231D57B5AC3DC301B2DD84F6B64D3EACF5D0B690D0BB7007693A72DD7 949C98D8EB9035A0ECECD035CDC6E7B8A007BFD3EB3D8DFCD130158E473E636A 3D00F8A2183766C422991EA3FB1A6F5DC967EF9C8736FB190191154216B7AC75 F5E269CC1AB5FD8B1B8F1632E9496BF02CECAA66532357A0DB3AE03D98351FF7 0A2AC142089A891607B075019E60BBC5CDB1AB6E31DFECD6500C6E40074023DB 11474C87E51DC00983F99863097050A7E428E3BA47F9E40C9EF1B5F0590217A0 A9DB1CAD41A5D420F20BC2AFF0A25BBEA832C3128628C241DF5FE78884C6ADDC E617893C14876F6330D6951DD113F3C4F8678EB201A60F4D9C07A3E29D763741 10751577429E325609A544F60D83D0FD5D44990D5ED78A02BDB2467C8815F792 804C8C32AF13EA9476679DDC9504C39846228B064450180C894451A8D43597EA 50C94125A083C5A0F2E38E993B049C75AE05949B5B09DCCE5EED7C91601BD79A EA08883D8AA2D08C9D5E296AFD13383B457231E8797E5F8C73D0D56A1F7E1ACD 3A1C48486E9CC4DF715366FAFC79A197595F18B60FC89EB02C9B8136131137AB 222A517CD5F5797D6A65BE553168878325162072BA5D719F3510639FDBCBB448 5DFA0B1774CFA961558A0A72D139AF0D5B42EF7897F697CB5942DB7B2FCCDB9D 71472A56B663D2E55A7263E24137165D2F917DCABF63814C818CDE0B03B6E961 9F220CA7EC58283B36F3B7AC37F415FDD00C248DECE7E9B57B07D0DC7A106C69 55BD5F726687151CE743BA4703F19721E773F3BF02E67130F273D35DCF38642F 919D3D0CC9434EBE1126FFED9D7D3DF75B2BBE10CD30D8B8C0903CD1FE3ABBB8 BC90B87AC4478CD688616E797B2DBEE120183ED696226DA703C0CA001BE9D46B B306E7F7F63BED6FC610B8A89B00A5A95701FCC80D83C50874EE764B7C487097 DBBB0146746FFE1CBFCF7D7195F08231FB46755C1DF964C7CCD803E7E69722F6 9D5B3CC4890090A74AB2121E464354F724AB7D39E8DC2234DDA3674EF0695148 63176CEB812F168A0A7498C96AF70A1A7FE2769A3E725883D789ACC8C71D0278 CF3538E7AF786E5F241B9F91FB0604DD3EB2E444F548F5248F65DF7D175A0343 DEB9AFE845F8975DA301F1A4C4CFEE3234AED965B423E4D203C9CA88AA967195 B23B4CD359F7F4AD551BC2564E677FBBAB954D0C3EE386139F7F5A4B1DCF7FC7 7230BCF476051638B337BCC8F5A9145AF38D4987A65FD5A7E8301F4B8D06F9E5 B26EBA34CDB951F14C7B0BE1CFAB8098F64D529F70B452492A1B29E03AA1D0FA B54AA53EDD3EE3F74E230CABB2B94FEBE4913EF0A30E0C4F27A7E29FFE700BBE D43233DA1A0E4A32B0EEBC1B2F9FB7F6885992E21BD1BE5D912F282B0FCF1EFE 62013C4B5C1CE5B8AE189B28747FD30961A3FB1C58C700C9119E592B7F52E24A F9AB44BA92AB05E2CA9CA2C443CC9E7E0165D8345BD37D961D945027E01DDEB1 1DBB608A3A7995A9E99ADC90970D7F4EC02EDCB7D32AB877BF4797F38CE514F2 C7F43965C3135FCBB4D8A986E119C562E6973942ADE968B09A36DBC5391321AE 97265D39A7B7EE00ACD0661D426EA4E5E8114D65587170C73D3559258A172128 5CA211EC04137A6227810826C10E676E9595F9880C0DAE45050EBA9FD950A591 16A39911D102EC836D067418E3FE7B361BA40987B660717E4CCF43CBCF5D3668 6AFE35386A12B9992F9EF7CE7A326A8C02EB51E90837A75A0B781DA6516F96AF F7BCC0503C01FF3C7DD5B574307D454E664CE49E37E01EDB9BAE51D41BAC615F 08590D7A5CCD633E8EB051D8A4C066F0D63CBE9D2A0A38CF97401B541668661C 7ABECADEE4BCBDEA822919196BF14DCFF9CD143FE5ECEE374907F17ABE47AD79 B88BD1B6D6A8DDD56A95A2DAD1B2D3C45D19389F9CAAC36CB03641BB8CAB7C93 69F7418CE2956990036E3A8BB0E48FADB3B56D08EBB536E3A2D176159DEBF462 295F700F66A6917DD457589CCE6B33F498859C33E35F2D46336776BB31686529 B303BA134073508E67ED9FCC2023873B21EE627CD2DFB6F4EBCCA944C3AD2B92 4F9411C31ABE2FBC265D09AC7315F74D393AF906055A304AD1636A5CD22D2684 83BE15E9A035804414CC68914F260510A30219E72F1C4D63363FE03C220A44BE 90009E869C2DA6D639759EC8436096B593A917B3B604271F75C6941DC839EFA3 0B9A58F85E67EBBD0895EF6BEA57CD716017EC0BCF009D27434156CD86F0B768 175571C451520F4AA26BD45AF025C230BB98A9350407BE5C1F1C71F83517E580 7F3A2542F4D6DFB5BA77D93116800A66D29B916F2FC78042068D44A8D6620DCE 97A64BF9A7A488CBF302A6F0173EF1350FBBD46E307FA637AF4600D643372835 04F98F008F3DBDF3D584D936FC268B799340D8647F0262B3C9DCE41687A8CC27 0D6B2DD19FCB4E3AE162CC44390DF0D2A6A3BFD0DD5156B5ED3C031A371A24D4 4DA4CB9B961C5447242055FA6CF13F67C155E6F36215628736704094836F03CF 1D2823E43F30B68B4C0A95EDE5356C2654F9782FF4CAB180ED7B362914F4882A F765062AE02E2AB49E3FA86FBCC730849CE306949294893D2CF06DE88A7776E7 ED162FAA07057BC0C1F5FC70326B2884A5E4685505E19DA512EE2C90EF91D7C0 13F41B468ABDD40FA91430DE8289D65ACECF7BB7A4162949AEF4BCFB5B329542 31F35AECE5E5641E9217BFCF742B8B908D54431CD98DFF97989F901C114984FA 0B2726174AB60C6415A71CC1373AEE18D5A29C34C66E8822C2C298E912F2E217 44B52FBD94B98CC6BD235322BCB219185B4273195271FD3DD5625D9483069494 526694DD7B5632E9FBE1E6C71D50781FC5E4C578579CBF97288A9E92D84B6C5D 055EBE77F09EF26329C9D687E89F7307650AF8E45713B65CB92C6C356EC62F33 DCA398238DED9E66283D790346C019900C3EC090F97A9153F5E1BA5460B5E4C7 52C9C90BE107B5341621E6D3BB7EB0F2AC3D11595F8F6DEAD3B9310B9F706A3E A3CD958623CC42ABE4E8BA63E102D56838503B608D5DFD3DF3BEC35C7157576F AF584C90AEB1012890559BAE9C90E3935CC1EA4E913FFEA421ECD35AA6F6C089 82078877FD89A115C98F61E0999ED37FE634B710854AFE360201E858FC4F10B4 9F3887390A579E01928F8C5AD522DA87167E6F1D2153A48397D23A9803F08478 AD3ABCAAB2ADA02F36C06FA7B262AD0BD026E6500FA6600D71BEE0A365DDBA7D 71A812EBBB71766909A02AE6DE30A9EC76F56E17D811B2EF177CF3537F1A4CCD 5D39BA029F063080AC2ABF0D9EE11BD2593E3D637DC34D4E815BD6664FEA4969 8F5E128D85484125F78AB2E16BB78E605A389377EC9E1876E5028830360F668C C77F377D1854ADA97454DBF45CBD2F10DBC4E9C6B29AA8A875B2012441653008 F5EB97CA0AB351859499FD9F5ABA5464D1BF21CD3D3C1277F8B9796D98BF4CDA C045E7E674DC7B472D05ACF65FDE581C93A0B213C8EB8163957F28627EF14A72 6049530168A4E11D2B7F4FD9391130007C67C4792CA94A72B8ABA43CB4B708CF DD0C96BE177380FDEE3E46DD584FA820C67463CD4031CE04652993FF3DBA19D1 D0A520FD0E52DD5BE265CBADED20CE377F90F876998006F67AEDD30E3E8CAB3D 4B2518556A99AA4FFABBB1E6ACCBEEDBAE2BC1DBE9D8292AEDB8E3F103DBF748 D9E0C6C3F0A4A203DE481A462379216B3CCA465A41D0B9B5090206D797D3A3EA 6E750E5C13F6DDFFF42CA7F046DB5699AA2209A038519F515B4886AFF04FF03C 1DB46BCE65DBA0C4352D85F88E4AF74FC376B8476F610846100AC2A5C1CDB880 A959EB2E020529E3C8456CDF94C36581409E8E1789B2B45AFB8FB541D431A748 35443C33F1E4191B71A3996F53B98722DBF5E30717629EA737E4EB1F7F3A0F7A C0879729840AE4C830E3A2CC3ADD62C1145BF535D121E3875F12228B90561B82 EB2CDB4F8BBF201769BBFDAAED00E9CFE295023034AADC12C217B0100CE8055A 8D2DB665537FEBACD5BCD69D50F72DC60BE0DDC9AAF703C8041A3353DBB0244C A8488514C101E4D662D394A84C5B9048F2EEFF7931A3BDEA5DA02F3C4D564F1E 73DDC5FE2CD57134C1DB9468A2DC585717F65E68CA931CC16F0F7887D2BF2375 FD28B4C0D900692E944BF5710273E30138F4775422955D09B22B738142A37FCD 83ACFD05B6AE9D17C673B24855F74FE10844B5ED73C25221623FCCDFED42D395 DD426D6EAF323A54510021065F91B6248E1D8B0F466E3BE65C203FA87F98A297 E5A95829A4E0A910FEAACD69F6FA81A9AB404778AE7C3BA4DAECDE05C1F86749 66BB8107BA7F1AB76CA04C8C00262F0735ECB6D815C7B2AD937BB50275E1617F 01F89AC79015E809211847CACEDAD713FED01470469311C9F6AA26EDA3021D7B A1C9E4E0F3D073B66BD9C3FBCB6B97FB5C48991C14F8459AAFFAEF73F83F4074 96D705FABBFF885B801AEF577C84BADF4AC26B30A94B8C54B1229E666BD2FF2C A17D7743EAB5AD6E1C2A38BD2A7FED4300A81D982633440A01C55331895BC45B 4B9DC7C0F43FBE75C02BE6ED47836EB92D7B6332D9867DBEB2F015C5A0F3F522 20E262070FD52EE2BB71BEE7B0113B1FC80054ABBF13A376849751AE61ADF535 4B95D1BD84934DDCA41015CD6BB80C324AE8B2772B073C437714B2CE80E11F2B 76DB0DB35372C642AE7BC605B52C844F088CC468FCB9CFB13C6A4DA589049160 2E1174520BD195FFEF8EB36EE6CF7C7138ACD19BA70CD00E7C6A18E0E0BF7C81 295CE640135318682A1A4285C68B52DF7F950CE1BD26F6A5A51BF6C6766D2E66 423B44BA965BBF34AD26D5A0F284B9D9E275AC18D80112EE8AEDBF5E2A6A58C2 937E25BD76655873F1863056E3AE2325CE6F463D89A6178E3FF77351470579EA 3BC3F74D30EE32192FBF71756BACC7E5BC8CA579247276A109093DA0F830A790 9A3671B00269E0D361D7D08A09920B895D1F89346FF161A125E5892DBCC7F52A 2848001F31BAB732EB4E00C976320F04088D0204434C9230B3D2D276A3481389 49CC6E3FA168E4157858C7C6B50A8773F7F7625104C19AD63F2DA9503DA5ADB8 8F8808FA9BC76E2FAA41B2A3BE135390C866A8B822C6E0AF049D82498FE60CEE 529477538C36578BAA7C843BC8FC8659A1F685EF19BA5D5DC53167092562EA73 BA7FE5D104E616DFDFA9331F7D6C9109FE513CD31940D87D0382E7157CF171E4 A9236D5250DE6BCF0F246C5680A8D92791CA155AE942C1D8A77A9DCD88CF49B3 663E993B0B1389DF2DE4420F29C0EC1FBED031486AE43137C68D3CB178B44D4B B181F63B11D2A21DE4A1E748C530CD046643BA951A81B3C0A5D78F53DE84D930 033793C346BF6F1534037CC10E4468D0E359D6EC741C09E4A6EA4D8CEC41F846 81CB64FAC81C877FC43DB4D00BE2D0EB06A80BAF795333376EB46FB942D38E90 F3EE4A987EF66419E7989984ED8B36E9D936FDAF433D1A26DBFD21E69D37117B 12426FE996620C50B0CE91BE8814410442FFB26273FC1F2C1FF4C9CFD3CDB6B8 789B5DAD9E9E95474160F8F293F2D70ED25850C6EB5890D6BCED0B92B197C3A3 431F2098DAB97889705FF519F48284CE07ADE6E6B2935BEE3BE6143EFF691949 17BABBCA7B31E6F671DE31E5EF9B63C4C655460FFE6EE62852945BB1138052CA 35CF43563ECA3587FD9F8290DFC9AB53D599428841AE1C67B22CFDA355FE092C 252048396D0CABA7154EE336D1F021F4C0CC7C3EF47C33407D8F64741642DCDF C9B4C3B90A8AA883A327B95164F17A73F8BFF93F9C9BC8CA3075AF420D4A68A4 CCA219B3D3BC5AA25486046277CEE16F512132FAE2D02CFDDCAA396083AF0B89 591C79C211F90E5AB011E52B36827C7D3DFFDAAE45E196F3A37C0254B076E857 5ACBF02204E8B1E01FA474C2CE29F8FF4B58E4A9DBADA84ADEC02749830CCCC4 2ECB73AEACD6481FF0039067C298760A48C561AA968666F012037DA102DC4B7E 450DB77AB426236601E8B53FC2D483FE9C47C8C645539B41D84C837E1875BBBD 963D87D00BCD894434C466F39F7CF2F1CD1DF157A8F096FEE3B05E250290C74D 8683F09F2CC02DC1B61149332E829494EB03469353948AC5AD5D84F04B4A6BFC C48A9455D3DBEC6F970E72A4F1BAE25D729B32280A43D16E0D780DA82518F0CD D7FC7FDBF93310A5C1B9CA867B436CB37DC30328966F8E6D85CC3BEE3ACAAFBB 7AD796D617A6B480DCB507A605FD1347A693FF85C5DE7E864694EAB70D92FE56 2E5BD7D673F3CD0D83F64192AA679CC947AD12FFC7026C7082AED8441A1A4008 1761C4F442D8366B9505301526445E821C9713B00D6462E0D1236A363B9A143D 5755999AA3254174F5401F03592133E2924D4994A97A620AE2A307BEDB04D9DA 92D617AA7E1DC41B9F486196F85B0F9D4C26F4D67D74A3F8BE6A5E05F302E15C 0D74CF24E14C4BB5625501A6863B1EE19032C3A28B07899B21E0A8DF706EA672 D9DD51A2F5027A99E2B58E626FBF060BF25200B484060450ACF9C64318A86F69 990ADC813C1EAAA76830206527AB4240EF28F04D538E98E31AD943D8B155ECCD 98C39C82D7E43481202EF89CD4F871D3C997BA62B8DDF0CD885A6576CF1FC080 412A9B9BF9FFCBB8DE22D63F6DDB9841ED350AA719EDA87A18DF0E776660023F FEAD68C95A159E5CE4731AA7FEF11A62FEF73CF850142CA18B29FD4981B2B461 AEE5B1ECB409E9CEAB2F2A83940E79FA805E71646A48C120FF056D978F9D931F D5CA93F27B4855E6ED4D7121A56B90D9463EC6F9B76F4A262313A08E76BEA626 3D33C83EA3262C03B5ED7B4C10F687E88F3FFE3B5F3BAF16F25003A21432826E D1C17D67172C5BD9B1D5E3DCAC4C14E0BE2D194F2D42DE37659C704C518E749A 77E1AD2B11CAA8514791C9AD8DB8FBA16905349A0C8A176620C23342F68E8E27 3880EBDBCA5F32FAEE3680092934BC7243500E2DE3A22DD325246F39ABA0F354 36289AB53D71B147C85088703C683C1D96F47EA244E8513814769A7B30D52CF8 49C9DCE11E912F7BFF5CFD25BAC588E476C76B5064D528381C6882CB3BA73A8E C1E605B14304D5BD1A755DEFE9C4D6D5100C1B810C622DF4990C4CFF82187FCA 8CE5A717B266D35EEA7C2719E3AA0829704B3FDC4B0DCFA34E1EEBFB9B8BCAFD 7036015D1D26573C8DD513B8E617746F89E6C890D11721AA61419CC3A3D256B6 47E79645560AE6FBC56725850C60D68ABF8FF3514AAFE242CE44EF87F851E991 C525AE6E8CCD5D2FD7E091972E688B826CCE918852E4FBF9DCA5AC377F7F0195 8CCFA0A096C20318C5BA8628F1B3C553C1E0E083F24E22ADE00B2DB1C8439E8E F2138E45D8D6775B2910E50B91A04CB493A0E6E3F1A971ECC92E71F3E8F14DB8 32CD332FB4C9D0C89CF1F1CCD77536DE9FA04DC3354910E3494B91659DACA558 EC0F8CCFB7E0603570FD5CEE33FB603405D211B6C734BD2DC3378370B93087DD 3EBD7184464B513DE3164CB0C10F5BF386D1308FB4AF8C26308C93ECAEA20C12 D9716C8B29FC3367B36C77BA6F0B40B6220D70AA4C699FEBA3D9DA0655ECB2E8 74CE90B53D74EDDECC270BD267886768DF920E850FBB196080512A0AE489D11C 27D0DDC0DE1456EBE8376163C48ED8899E5C2BEF686464ED53277C764A1D8D80 EC7812F2BA5B7E65349582CF436ABFF6249B4141EC6F21CD7CD4C1A23C8D017C DB296BF885E5B09B8EB36F9799E0355CAD64B60611D64001B91FF15FFCCEC35F 4C4A4FF37124D8497F0508E52BA7C490F2481C833A8072A120ED280BC79336EE B03F07034E8EC04890779D7D222FDA4C4A282705B8A3E66BD5D96FABDCCFBD8C 4F0B6AB3CB420978C2DECAB2D3CD19334396397432D8577CAB85D875E3ABEA8A 51A1D8643619BAA52B7DD571939A2C327955DFC03F61527EC239E696E7C0B78E 73A6D83EBF19244882785A3F582161D4492EE515C99623E0E0E3FCF6E38B4721 7EB379E4491CE7343B593A8A266B83BE2A2277D5CC84335A776E658FF85D39C7 9612211B3BC71E2B8D85474B18957807E746DA079887E28DECB9B3CE7E94669E EC25FF3035BBE99A7E2314FF4A8C4CEB5ECDDA4999B9B2500B46028A9B370B91 61F6EE06F9E4C02EEA683FEE392659CDF283E39B61BFE99DCE8F30F5EC630067 42D44AC6F7647AC4424E0C4964D8CA25CA6152364AD67638F2B7397413809F1E 24F916933FA452A8683A953462BAC73128F890B07E9454FB4059D69B5851D744 AB67E7C0A61414200E9813D685BC535D2B621F8C75F56014014D610FFC4C56FA 06A81021A818D6D368EEDD862C9BB334F050F5502BC63CE2006DD12273746CB0 4335C8E25C462E4DEF12DE2C80A2F25E81A04AE22205C8F61EE20636C2E1BA41 00CE04BC0FE7A2128ED163112F69BDC089FBCD33545A412E24F1B885A315C1E2 361FEBAC883956CFC4F9D2CA2998A8C882A678AE2F282C8E03AEDB9EB7D4F471 55A5F118459A68150BCB2BD96FEA71221EAD5BE0B2CF5C80895F8CC2954A670B 32BEFAA720634E28A6EC26B3F87C74AB7EE8812DA0D25444CA546A29CE234F7D 09BE4F16D64B517D6DE603CCDDEEA0CBF3AA4E01EBC780B3481F8666B11B1C75 C9EE8989EF359CAE9A3B90A20B946F6FB3E178A459BF425984666B617D9BE899 1DFD5E21DDD66D2C064ED0FF7DE1307C3F0A720E0A97EE937B2ACD5518CFD8D1 CB354D53E09E7F5576F456E0D48A5B17487FBF7418509B2E3B64C9B55282C9AF 034233818D88FCC291FE5CDF13DC78D85AAE8892407AEE591B1E9AC0F54513FC BC04173FE429E9A56139B59EF1E68966418316B704C87F1E6A65B71776E90790 6FA2275B1E008FAA1C24F1A81C96AE91620C54F48083A32C22DC34A4F3DB63AC 39A3A61843C9D5F585AF29A534C5D81A4CDA1C29EDFCF2C85937206EB4CB1ADB B9616941A8E3F09E5CA686AC3C48D822A9D427C4A40ACC498E53A98704334CD6 0570E591AF9C82168F3640BB70E1ACE1ED7DB6394603DC325CBD657A6333482F B53F47CE8207A268408B4C514C7BD1816C7E3B39262506597110CBF5B2C39863 4272EFF639940302C2576A440B8D6D5D42DE3DE12F9A72DDB062805155DF7831 18E426B79F4DAC9CD8A7A770CA7AD3CF6E980F1E3B970C9924E037F238A1D136 EAB6923A8777D40C107AE9C94F6DF96C7906DC4D3F316517461AA237A4524E29 044C718C69A97B882C85825DE80D2EF200A80C4ABED634374F207D96F86CD82E BE667AC443760263ABF558A985DB39268FBA2E269F8C2FD530EDBAE11F8B675F 04002CC02F06FA8F0DD337CA95BBE3900CEC3FC4A779CC786E75519021848414 C627B78999A01E4F1DD583A59F5C214B0237CCAFC61AC72FF1EEBA89290919B1 5A45EF986EA5BBADFD24A349ED6A045519F74A5E562088FCD777DF45C6FB3453 E4D353C5743FFE7081E04325E7EDA574DD56F297527EF7DABEB9F743EAB4F519 600668E4454EA430D311BA1FA97D1C14DD3404B460C0F409C3E39CF779AB4F1D 17B67BC88081D452039777E5D8D47D77D324EA364FEBE33D7B1A08828CD8FB05 3DE0ED55F3E530AF1633E458852B735929381835DC00DFEE3D300F52896E5079 7297820CD077E2F0E0ED088584EB67E64C99A62CC8AE9A9B3F5253E81A4BC631 BF7332968C6C2CEE6ED5A3F1D2E1DB8D362A7B09BEB329B43716CFD997BA30D1 074821847E87737B51490856228FFF070B7FC27DF6C18CECD5FC2FD568723BC2 E9620AA94742606023A015F445B9B3BC89B5AF91962C4E659B2CAE981E4637D9 5B5D074474973DBEDB804148DAEB0CFF939C282918A219726227BFEF91EFE98E F274D8A8A0E32EF7301BAE01A83E7FDBEEF87D87BCCEA23BA55F4DCE15F0E05F 0EC406A4CD62E867A7CA57DD3D019BA08780F859EE584313D9240A8C3ED2BAE6 9D5AB6B07424651AF5ADE40A7673DC5B3FDA0CD476DB9BE966E696F914D22014 F46330ABB20E75EB0DB3A5A727CE54E08B44842F2787CF6BBCB7AB230EB5436E 08B1D0D9F60572CACEA793A91F90C836F83E022F3C8D648839C630CDA27E74AD 8A91F120882446E4AF11C73D525EDE5C005649A880FDE689467CB09A642EA5B8 3C0DC11578DAD76E7017B88CFB546A081762C963DA2480430071D8A123DCD6D8 A350B33C66E11B08E6B62CAB222D160E6C48776913331628DE5F0710F87B1C22 C77F2D888F5C01BFF9879441A81CB7992A2BC042013008BE382206D45DB802BF BABFCA10AACD0E4FED2E035179BA5134073C1010226DEAF9DEDC976F0C524625 4C4ED71C9F114B381AF4371A8E95352B648CA9F681978A49093A6C40E338CF75 49F7998CFDC29670BAAE16189D6635A80B6793AB9186B66B8814BEF45B359F41 EB3F7AA1E75D8D91373EB23CAC6E9A2C69F153AE238C6DCB7A4A4326099572D1 AAE06D49343427770F37ED208FE983DFFDD3C7E32E0E9281578E115ABAA0EDE2 0291B95A050B24D486D5F2CDB12F615AAE8C56C6D07DD22FF592BFCAE7A01E67 333F90B0F07751621B32913A2DB059CC00F537425EA4EEDB491E595EF709B414 7634D80E767BAF9FEBC1FC41D0FB3F5D162F66311F416A93BA6301ABB5AC7173 7CBBA52D93D5031D1B7F2BB8595FA1C84E440D99BBA7E8EAC149DFF18C7049DA 2788E3F847DC10DD9439C584D0446309206AC1C1D2A172BE0A6C5D8C5C0DC137 CF56300F4156F86A1F4D502A0001BCFE8E82AA4212FF2864B1E081B3504C9ED3 A508FFDB26EBEA894C33CE7B4FEC09F475F585B2E61599B4FCF4EFCC08B48CDF D2BEC7557520C0DC7A69A74CBC4C765025ACB960C010986BC5E2A96F5DEE58F7 D05BB869712E6E66AEBFDCF2F90530B4262FE620D9F8D66B352A529488C005BA C3144B6A47053E9975DCBA568BB914F6FEB4E1804D2D99C56FACE488C8ECBF90 BED15297E72E45A12C2D7D2A9D072B11EF324C6B5115076928B694E39E50C386 F11C687EFADDB68C57AA29E3064CC387ACD573B2F29D27746F169902D3957EE1 A02EC362C66754EFDA5A4644559536D3FC592F158C77B50708E74507A8AE6324 3023BB7C93882B2675D612ACA1198C3B2813BA6E04AF30C98F3C0CDD9C63DEC1 D0E9AC3764C872EE8D7D525F8AF36BDAA0B0CC112D2B46FF2EE95EA351321B94 93BB28CD9BB63AC0841EB3070A33A016E1D6C87A55057118D14F7F53E18EAB1C 09D22FBC1FA42CC6C7975E4FB0268944EE843E4A90D7F0AA228F0BE55B42EBD3 EC32E11924F5D9742BE8E7A803FB25CD75DE330AC140601ACED8B1452BF8B2B4 C55AFEF142AF8CCB3F394E5859EA994E3ABFF4C77871DC8668E47C858C35770B D9BC3BE31CD67C6B5E607F6DFFDC7EE338711C98C2A30AC2B612089CDE630E04 A73B07518B9EA8A3AA324B6AEF0E5D7612DBE06BF7DE4A55796DAB2C81CFE23D 0132797108BBB0193CE77D91DA6B48E951338E1E0DE6054FBD1A4FCAD95479DD 2DFBFE923FB7A3B06B7085793C165A20D79BF09BE800B2ED7FBF43436EE7676C FD2EE1495E13D572912BE7C2379C8D1E7DA4A6A2EF9FE33AA14A75377A356DEC 6AF1106AA3D780D1A99DD2E0CC66CCEBB8CA3CC418DE0A267E8E5D34EE925E2F 827461088DB60E0D56BBD217D9E0C3D2B591CC60468A3F7A5A6D49FD8F64DD46 BAC6215C2E56E67A10F69219E1C8A09DED4A745CD53E5748A7C2B57FCEFDE598 A026E280A1E5767ECBD3A3ECC41D52232674BE60A3A8BB6FF9EE627AA4B2CC24 9474949DAEA29AB9586836860AE1FFB4AADC75B0760015C86FE32F49F26FF44C C03D4BD3CDE93C57329410FA84900B19338CAC1C55B507A6B130EEFFB01A5E44 0E3E133C17A0AA4ADF837C5D6CE284D053DCBB3C03F59C5C9BB80C0C4BEA25B6 5FD00C833BDAEC0A4607285DEFBBC7D3A6A100E8D6453115233D76CA2C132D31 A3A3FEA39606F68F0AC10CFD4F5701C4B2A7B6848C77A903BDA77904D038A1C5 6014E31F975CF627D67B0D3F3AAEE72D32EA80709CF712A6EB46E508177AFA03 F275DA9768CD589CB298322B0BF50B578E9E4B58989DDE12CBAAAEB7E36655C2 842F5C7FC004B8B8516D8CD35543F3D2182DACC5EE8750A0CAB151C6EED04063 71B111101991BABA8B86E9F6F718B9ED1E69D91EEB503C6AE45B661C8CA8B1CB 20A9C01764DC4CC575C636B84755614BBFC242A5865469F87FF4F97A43B5A651 B2DAF746AA69FA6B9CFC9FF4A2590DA2D23BEF1EA97DE3FF48A0A23369B90395 0DFD36B3C7A992CDC1E49F42DE7C37CDEEC35A7AF8CADC2CA0BBB01895613E03 9C157B1683F1421F74B08184D56DEFCA72132550C6C1061B36769DBD39EC22CF 238641C90BB9510D564C0AB202205358CE42CDA4723E5506BF5A274236A6E9E4 DD21C0FC9FE57974FCABC6C808856B5F837AF759863BEF5BB381E2A729C6C4DE 2F53DD2DC92BAEAD141FD5FFE341E0FD5AEE566E2E1C6A44E94071DA0C3D4F57 07B02D120D95B21086CC12F33FC4D0C7C8B6147928A00339324024F787193073 13DD96DBC559F2339FB51C6123A3C51C70B7676B39255F589A80747491320833 0FD6685904C70A865AABFCBB7F5E351BEF3B535D00403E1B5C4C64E8DE7061DC A1D9D4AE825BFEE090412772E057A13FCD3A897FDE348FD50E50C620C89461B8 BE07B057B796B16E06CD314943153935D91152BC6E331DA67D73524ED7548385 0F087BB2F0023532B945ECC61B6E3075FCDAA3ABBF945B64AADA7213C590A9B5 11D068C9183BC0D2238DB3844BB4C7596E00BF6A67B6BDA2F85D5D603B80035B 5DF1EC6C3570609A972B752550C89C34B8E14BD1E0A030303D9015EBC9114F57 2899C129E72055B92DF22636EC479B03277E3E60DCAD36EB35CC3898C056C72D B58CCC6FCE3B2FFDCF560E130B196BC278224FD4901DD2F2F753494FFF4AAD61 002715D828FCC2B6BA8794D843C1144231E818579B305AB9022AD279E0514068 F4330A1C2C2C3FBDD150098C5B7DED6374D6B45CDBB7C88C78343959CC260B39 986001C07720E3B745CAAFF84F858CF3AC4440B592D5A83BD96FB5980286CCB3 6EDA47D11381FEE3F3CAEFB2D6E35F2B896DA68E8567D9327FB956733DA2896D 1A63B1FB168529BE23A7D04607085DA1596BA1858B1A07F3F37A233D2E81D599 82D885596BD3D041DBB2F3972CF605C0FD781C1360B368B49C4E41D2BF45FC3B 15460C0D9AFB5BDBC87FEE463493E471DB54CFC064DBAF00EB126DEE19C58319 71E77AFADB3B1256673E0B9226177A6161133FB030F063FA67C6 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont TeXDict begin 40258431 52099146 1000 600 600 (rluserman.dvi) @start /Fa 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39 2[39 3[39 97[{}13 74.7198 /CMSLTT10 rf /Fb 134[39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 9[39 39 39 39 2[39 1[39 1[39 2[39 1[39 39 1[39 39 39 39 5[39 7[39 1[39 1[39 39 39 39 2[39 39 39 39[{}48 74.7198 /CMTT9 rf /Fc 167[62 3[60 46 2[57 1[62 76 52 1[43 1[62 65 54 1[63 60 67[{}13 83.022 /CMR10 rf /Fd 134[65 65 1[65 68 48 48 50 1[68 61 68 102 34 65 1[34 68 61 37 56 68 55 68 60 7[93 4[85 68 92 3[96 116 74 96 1[46 96 1[77 81 1[89 87 93 8[61 61 61 61 61 61 61 61 2[34 46[{}46 109.091 /CMBX12 rf /Fe 133[40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 1[25 51 45 28 40 51 40 51 45 9[93 1[68 66 51 67 1[62 71 68 1[57 71 1[33 68 1[59 62 69 66 64 68 19[30 33[53 11[{}45 90.9091 /CMSL10 rf /Ff 139[30 37 38 3[51 4[28 1[42 90[51 12[{}7 90.9091 /CMTI10 rf /Fg 134[48 48 48 48 48 1[48 48 48 1[48 48 1[48 48 48 48 1[48 48 48 48 1[48 48 1[48 2[48 14[48 48 1[48 1[48 2[48 48 48 17[48 48 2[48 5[48 39[{}33 90.9091 /CMSLTT10 rf /Fh 135[56 2[56 1[42 2[51 58 56 4[27 1[58 49 51 1[54 1[56 97[{}12 90.9091 /CMCSC10 rf /Fi 197[25 58[{}1 90.9091 /CMMI10 rf /Fj 197[33 58[{}1 119.552 /CMMI12 rf /Fk 135[85 2[90 63 64 66 1[90 81 90 134 45 2[45 1[81 49 74 90 72 90 78 11[124 112 5[126 1[97 4[127 101 106 124 117 1[122 15[81 49[{}29 143.462 /CMBX12 rf /Fl 242[91 13[{}1 90.9091 /CMSY10 rf /Fm 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 2[37 75 67 41 61 75 60 75 65 9[139 1[103 1[75 100 3[105 128 81 2[50 105 106 85 88 103 97 96 102 6[37 4[67 67 67 67 67 2[37 1[37 44[{}46 119.552 /CMBX12 rf /Fn 129[48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 48 48 1[48 3[48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 48 1[48 2[48 48 48 48 48 48 48 1[48 48 48 48 2[48 48 48 48 33[{}78 90.9091 /CMTT10 rf /Fo 131[91 45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 68 5[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35 25 4[45 20[51 51 53 11[{}81 90.9091 /CMR10 rf /Fp 134[102 4[75 76 79 3[108 1[54 2[54 2[59 88 108 86 108 94 11[149 2[144 3[151 1[116 2[72 1[152 71[{}19 172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: Letter /setpagedevice where { pop << /PageSize [612 792] >> setpagedevice } { /letter where { pop letter } if } ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fp(GNU)65 b(Readline)g(Library)g(User) g(In)-5 b(terface)p 150 1418 3600 34 v 1873 1515 a Fo(Edition)30 b(8.0,)i(for)e Fn(Readline)e(Library)h Fo(V)-8 b(ersion)31 b(8.0.)3139 1623 y(No)m(v)m(em)m(b)s(er)g(2018)150 4927 y Fm(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4413 a Fo(This)29 b(man)m(ual)g(describ)s(es) g(the)h(end)e(user)h(in)m(terface)i(of)f(the)f(GNU)h(Readline)g (Library)f(\(v)m(ersion)h(8.0,)h(30)150 4523 y(No)m(v)m(em)m(b)s(er)39 b(2018\),)j(a)c(library)g(whic)m(h)g(aids)g(in)f(the)h(consistency)h (of)f(user)f(in)m(terface)j(across)e(discrete)150 4633 y(programs)30 b(whic)m(h)g(pro)m(vide)h(a)f(command)g(line)h(in)m (terface.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 y Fl(\015)f Fo(1988{2016)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F) -8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s (dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g (License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion) 390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er) 31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end %%Page: -1 3 TeXDict begin -1 2 bop 3725 -116 a Fo(i)150 299 y Fk(T)-13 b(able)53 b(of)h(Con)l(ten)l(ts)150 649 y Fm(1)135 b(Command)45 b(Line)g(Editing)26 b Fj(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)39 b Fm(1)275 786 y Fo(1.1)92 b(In)m(tro)s(duction)30 b(to)h(Line)f (Editing)17 b Fi(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)31 b Fo(1)275 896 y(1.2)92 b(Readline)31 b(In)m(teraction)19 b Fi(:)e(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fo(1)399 1005 y(1.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)18 b Fi(:)e(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)31 b Fo(1)399 1115 y(1.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i (Commands)18 b Fi(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)32 b Fo(2)399 1225 y(1.2.3)93 b(Readline)31 b(Killing)g(Commands)10 b Fi(:)k(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23 b Fo(2)399 1334 y(1.2.4)93 b(Readline)31 b(Argumen)m(ts)22 b Fi(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)36 b Fo(3)399 1444 y(1.2.5)93 b(Searc)m(hing)31 b(for)f(Commands)f(in)h(the)h(History)20 b Fi(:)c(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33 b Fo(3)275 1553 y(1.3)92 b(Readline)31 b(Init)f(File)13 b Fi(:)k(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27 b Fo(4)399 1663 y(1.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)26 b Fi(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) 39 b Fo(4)399 1773 y(1.3.2)93 b(Conditional)31 b(Init)f(Constructs)16 b Fi(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fo(12)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22 b Fi(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Fo(13)275 1992 y(1.4)92 b(Bindable)30 b(Readline)h(Commands)22 b Fi(:)15 b(:)g(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Fo(16)399 2101 y(1.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)18 b Fi(:)f(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)31 b Fo(16)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f(History)f Fi(:)15 b(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fo(17)399 2320 y(1.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 b(ext)12 b Fi(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)25 b Fo(18)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8 b(anking)13 b Fi(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Fo(19)399 2540 y(1.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)e Fi(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Fo(20)399 2649 y(1.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8 b(or)31 b(Y)-8 b(ou)22 b Fi(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Fo(21)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11 b Fi(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Fo(21)399 2868 y(1.4.8)93 b(Some)30 b(Miscellaneous)j(Commands)16 b Fi(:)e(:)h(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)29 b Fo(22)275 2978 y(1.5)92 b(Readline)31 b(vi)f(Mo)s(de)10 b Fi(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23 b Fo(23)150 3229 y Fm(App)t(endix)44 b(A)119 b(GNU)39 b(F)-11 b(ree)38 b(Do)t(cumen)l(tation)i(License)25 b Fj(:)20 b(:)32 b Fm(24)p eop end %%Page: 1 4 TeXDict begin 1 3 bop 3705 -116 a Fo(1)150 299 y Fk(1)80 b(Command)54 b(Line)f(Editing)150 527 y Fo(This)30 b(c)m(hapter)h (describ)s(es)e(the)i(basic)g(features)f(of)h(the)f Fh(gnu)g Fo(command)h(line)f(editing)h(in)m(terface.)150 766 y Fm(1.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150 925 y Fo(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h (notation)g(used)f(to)h(represen)m(t)f(k)m(eystrok)m(es.)275 1058 y(The)35 b(text)i Fg(C-k)f Fo(is)g(read)g(as)h(`Con)m(trol-K')g (and)f(describ)s(es)f(the)h(c)m(haracter)i(pro)s(duced)d(when)g(the)h Fn(k)150 1168 y Fo(k)m(ey)31 b(is)g(pressed)e(while)h(the)h(Con)m(trol) g(k)m(ey)g(is)g(depressed.)275 1301 y(The)g(text)i Fg(M-k)e Fo(is)h(read)f(as)i(`Meta-K')g(and)f(describ)s(es)f(the)h(c)m(haracter) h(pro)s(duced)e(when)f(the)i(Meta)150 1411 y(k)m(ey)i(\(if)f(y)m(ou)h (ha)m(v)m(e)g(one\))g(is)f(depressed,)g(and)f(the)h Fn(k)g Fo(k)m(ey)h(is)f(pressed.)48 b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s (eled)f Fn(ALT)150 1521 y Fo(on)c(man)m(y)h(k)m(eyb)s(oards.)40 b(On)29 b(k)m(eyb)s(oards)g(with)h(t)m(w)m(o)h(k)m(eys)f(lab)s(eled)g Fn(ALT)e Fo(\(usually)i(to)g(either)g(side)g(of)g(the)150 1630 y(space)h(bar\),)f(the)g Fn(ALT)f Fo(on)h(the)g(left)h(side)f(is)g (generally)h(set)f(to)h(w)m(ork)f(as)g(a)h(Meta)g(k)m(ey)-8 b(.)42 b(The)29 b Fn(ALT)g Fo(k)m(ey)i(on)150 1740 y(the)c(righ)m(t)h (ma)m(y)g(also)g(b)s(e)f(con\014gured)f(to)i(w)m(ork)f(as)h(a)f(Meta)i (k)m(ey)f(or)f(ma)m(y)h(b)s(e)e(con\014gured)h(as)g(some)h(other)150 1849 y(mo)s(di\014er,)i(suc)m(h)g(as)g(a)h(Comp)s(ose)f(k)m(ey)h(for)f (t)m(yping)h(accen)m(ted)h(c)m(haracters.)275 1983 y(If)23 b(y)m(ou)i(do)f(not)h(ha)m(v)m(e)h(a)f(Meta)g(or)g Fn(ALT)e Fo(k)m(ey)-8 b(,)27 b(or)e(another)f(k)m(ey)i(w)m(orking)e(as)h(a)g (Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 2092 y(k)m(eystrok)m(e)30 b(can)f(b)s(e)f(generated)h(b)m(y)g(t)m(yping)g Fn(ESC)e Ff(\014rst)p Fo(,)j(and)e(then)g(t)m(yping)h Fn(k)p Fo(.)40 b(Either)28 b(pro)s(cess)g(is)g(kno)m(wn)150 2202 y(as)j Fe(metafying)39 b Fo(the)30 b Fn(k)g Fo(k)m(ey)-8 b(.)275 2335 y(The)39 b(text)j Fg(M-C-k)d Fo(is)h(read)g(as)h (`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g(c)m(haracter)i (pro)s(duced)d(b)m(y)150 2445 y Fe(metafying)g Fg(C-k)p Fo(.)275 2578 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g (their)f(o)m(wn)g(names.)58 b(Sp)s(eci\014cally)-8 b(,)38 b Fn(DEL)p Fo(,)f Fn(ESC)p Fo(,)g Fn(LFD)p Fo(,)g Fn(SPC)p Fo(,)g Fn(RET)p Fo(,)150 2688 y(and)d Fn(TAB)f Fo(all)j(stand)e(for)g (themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init) h(\014le)f(\(see)i(Section)f(1.3)150 2797 y([Readline)c(Init)e(File],)j (page)e(4\).)41 b(If)29 b(y)m(our)h(k)m(eyb)s(oard)f(lac)m(ks)i(a)f Fn(LFD)f Fo(k)m(ey)-8 b(,)31 b(t)m(yping)g Fn(C-j)d Fo(will)i(pro)s (duce)f(the)150 2907 y(desired)h(c)m(haracter.)42 b(The)30 b Fn(RET)g Fo(k)m(ey)h(ma)m(y)g(b)s(e)e(lab)s(eled)i Fn(Return)e Fo(or)h Fn(Enter)f Fo(on)h(some)h(k)m(eyb)s(oards.)150 3145 y Fm(1.2)68 b(Readline)47 b(In)l(teraction)150 3305 y Fo(Often)32 b(during)g(an)g(in)m(teractiv)m(e)j(session)e(y)m(ou)g(t) m(yp)s(e)g(in)f(a)h(long)g(line)g(of)f(text,)j(only)d(to)i(notice)g (that)f(the)150 3414 y(\014rst)f(w)m(ord)g(on)g(the)g(line)h(is)g (missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g (a)g(set)g(of)f(commands)g(for)150 3524 y(manipulating)e(the)g(text)h (as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h (just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150 3634 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29 b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m (ou)h(mo)m(v)m(e)g(the)g(cursor)150 3743 y(to)35 b(the)f(place)i(that)e (needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g (the)f(corrections.)54 b(Then,)150 3853 y(when)24 b(y)m(ou)h(are)g (satis\014ed)g(with)g(the)g(line,)i(y)m(ou)e(simply)f(press)g Fn(RET)p Fo(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e (at)h(the)h(end)150 3962 y(of)33 b(the)h(line)g(to)g(press)e Fn(RET)p Fo(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g (of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 4072 y(within)c(the)g(line.)150 4269 y Fd(1.2.1)63 b(Readline)40 b(Bare)h(Essen)m(tials)150 4416 y Fo(In)31 b(order)h(to)h(en)m(ter)g(c) m(haracters)g(in)m(to)g(the)g(line,)g(simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i(app)s(ears)150 4525 y(where)e(the)h(cursor)e(w)m(as,)j(and)e(then)g(the)h(cursor)e(mo) m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47 b(If)32 b(y)m(ou)h(mist)m(yp)s(e)g(a)150 4635 y(c)m(haracter,)f(y)m(ou)f(can)g (use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)f (delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 4768 y(Sometimes)i(y)m(ou)g(ma)m(y)h(mist)m(yp)s(e)e(a)i(c)m(haracter,)g (and)e(not)i(notice)g(the)f(error)f(un)m(til)h(y)m(ou)g(ha)m(v)m(e)h(t) m(yp)s(ed)150 4878 y(sev)m(eral)e(other)f(c)m(haracters.)42 b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h Fg(C-b)d Fo(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150 4987 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31 b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g (with)f Fg(C-f)p Fo(.)275 5121 y(When)i(y)m(ou)h(add)f(text)h(in)f(the) h(middle)f(of)h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m (haracters)h(to)g(the)e(righ)m(t)150 5230 y(of)d(the)g(cursor)f(are)h (`pushed)e(o)m(v)m(er')j(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h (that)f(y)m(ou)g(ha)m(v)m(e)h(inserted.)40 b(Lik)m(ewise,)150 5340 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m (haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled)p eop end %%Page: 2 5 TeXDict begin 2 4 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(2)150 299 y(bac)m(k')24 b(to)f(\014ll)g(in)f(the)h(blank)f(space)i(created)f(b)m(y)g(the)g (remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39 b(A)23 b(list)g(of)g(the)g (bare)f(essen)m(tials)150 408 y(for)30 b(editing)h(the)g(text)g(of)g (an)f(input)f(line)i(follo)m(ws.)150 571 y Fg(C-b)336 b Fo(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m(haracter.)150 732 y Fg(C-f)336 b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(one)h(c)m(haracter.) 150 893 y Fn(DEL)e Fo(or)i Fn(Backspace)630 1003 y Fo(Delete)i(the)d(c) m(haracter)i(to)f(the)g(left)g(of)f(the)h(cursor.)150 1164 y Fg(C-d)336 b Fo(Delete)33 b(the)d(c)m(haracter)i(underneath)d (the)i(cursor.)150 1325 y(Prin)m(ting)g(c)m(haracters)630 1435 y(Insert)f(the)g(c)m(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g (cursor.)150 1596 y Fg(C-_)e Fo(or)i Fg(C-x)e(C-u)630 1706 y Fo(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8 b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g (empt)m(y)630 1815 y(line.)150 1977 y(\(Dep)s(ending)29 b(on)h(y)m(our)f(con\014guration,)i(the)e Fn(Backspace)e Fo(k)m(ey)k(b)s(e)d(set)j(to)f(delete)h(the)e(c)m(haracter)i(to)g(the) 150 2087 y(left)37 b(of)f(the)h(cursor)e(and)h(the)g Fn(DEL)g Fo(k)m(ey)h(set)f(to)h(delete)h(the)e(c)m(haracter)i (underneath)d(the)h(cursor,)i(lik)m(e)150 2196 y Fg(C-d)p Fo(,)30 b(rather)g(than)g(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g (the)f(cursor.\))150 2398 y Fd(1.2.2)63 b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)150 2545 y Fo(The)27 b(ab)s(o)m(v)m(e)i (table)g(describ)s(es)e(the)g(most)i(basic)f(k)m(eystrok)m(es)h(that)f (y)m(ou)g(need)g(in)f(order)g(to)i(do)e(editing)i(of)150 2654 y(the)k(input)f(line.)49 b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m (enience,)j(man)m(y)d(other)g(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g (in)h(addition)150 2764 y(to)j Fg(C-b)p Fo(,)f Fg(C-f)p Fo(,)g Fg(C-d)p Fo(,)h(and)e Fn(DEL)p Fo(.)54 b(Here)35 b(are)g(some)h(commands)e(for)h(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h (the)150 2873 y(line.)150 3035 y Fg(C-a)336 b Fo(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(line.)150 3197 y Fg(C-e)336 b Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 3358 y Fg(M-f)336 b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f (where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.) 150 3519 y Fg(M-b)336 b Fo(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m (ord.)150 3680 y Fg(C-l)336 b Fo(Clear)31 b(the)f(screen,)h(reprin)m (ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 3843 y(Notice)c(ho)m(w)f Fg(C-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m (haracter,)j(while)d Fg(M-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m (ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 3952 y(con)m(v)m(en)m(tion)32 b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 4062 y(w)m(ords.)150 4263 y Fd(1.2.3)63 b(Readline)40 b(Killing)i(Commands)150 4410 y Fe(Killing)35 b Fo(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i(but)e(to)h (sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f(usually)150 4519 y(b)m(y)g Fe(y)m(anking)35 b Fo(\(re-inserting\))28 b(it)g(bac)m(k)f(in)m(to)h(the)f(line.)40 b(\(`Cut')27 b(and)g(`paste')h(are)f(more)g(recen)m(t)h(jargon)f(for)150 4629 y(`kill')32 b(and)d(`y)m(ank'.\))275 4765 y(If)g(the)i (description)f(for)g(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g (text,)h(then)e(y)m(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150 4875 y(can)g(get)g(the)g(text)g(bac)m(k)g(in)f(a)h(di\013eren)m(t)g (\(or)g(the)f(same\))h(place)h(later.)275 5011 y(When)23 b(y)m(ou)g(use)g(a)h(kill)g(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i (in)e(a)g Fe(kill-ring)p Fo(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h (consecutiv)m(e)150 5121 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g (killed)h(text)g(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f (bac)m(k,)h(y)m(ou)g(get)g(it)f(all.)43 b(The)150 5230 y(kill)33 b(ring)f(is)g(not)h(line)g(sp)s(eci\014c;)g(the)g(text)g (that)g(y)m(ou)g(killed)f(on)h(a)f(previously)g(t)m(yp)s(ed)h(line)f (is)h(a)m(v)-5 b(ailable)150 5340 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac) m(k)g(later,)h(when)d(y)m(ou)i(are)g(t)m(yping)f(another)h(line.)p eop end %%Page: 3 6 TeXDict begin 3 5 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(3)275 299 y(Here)30 b(is)h(the)f(list)h(of)g(commands)f(for)g(killing)h(text.)150 456 y Fg(C-k)336 b Fo(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g (cursor)g(p)s(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150 614 y Fg(M-d)336 b Fo(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g (of)h(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m (ords,)g(to)g(the)630 723 y(end)j(of)g(the)h(next)f(w)m(ord.)41 b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used) f(b)m(y)g Fg(M-f)p Fo(.)150 881 y Fg(M-DEL)240 b Fo(Kill)31 b(from)f(the)h(cursor)f(the)g(start)h(of)g(the)g(curren)m(t)f(w)m(ord,) h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)i(the)630 991 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64 b(W)-8 b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)g(b)m (y)630 1100 y Fg(M-b)p Fo(.)150 1258 y Fg(C-w)336 b Fo(Kill)35 b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)55 b(This)34 b(is)h(di\013eren)m(t)h(than)e Fg(M-DEL)630 1367 y Fo(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275 1525 y(Here)42 b(is)f(ho)m(w)h(to)g Fe(y)m(ank)47 b Fo(the)42 b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43 b(means)e(to)h(cop)m(y)h(the)e(most-)150 1634 y(recen)m(tly-killed)33 b(text)e(from)f(the)g(kill)i(bu\013er.)150 1792 y Fg(C-y)336 b Fo(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h(killed)f(text)g(bac)m (k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f(cursor.)150 1949 y Fg(M-y)336 b Fo(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h (the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h (the)g(prior)630 2059 y(command)30 b(is)h Fg(C-y)e Fo(or)h Fg(M-y)p Fo(.)150 2256 y Fd(1.2.4)63 b(Readline)40 b(Argumen)m(ts)150 2403 y Fo(Y)-8 b(ou)40 b(can)f(pass)g(n)m(umeric)f(argumen)m(ts)i(to)f (Readline)h(commands.)67 b(Sometimes)39 b(the)g(argumen)m(t)h(acts)150 2513 y(as)g(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g Ff(sign)47 b Fo(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m (t.)71 b(If)40 b(y)m(ou)150 2622 y(pass)33 b(a)h(negativ)m(e)i(argumen) m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m (ard)f(direction,)i(that)150 2732 y(command)g(will)h(act)g(in)f(a)h (bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g (text)g(bac)m(k)g(to)g(the)g(start)g(of)150 2842 y(the)31 b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Fn(M--)f(C-k)p Fo('.)275 2975 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g (argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i (digits)e(b)s(efore)150 3085 y(the)j(command.)42 b(If)30 b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h (\(`)p Fn(-)p Fo('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150 3194 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m (e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h (started,)i(y)m(ou)150 3304 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f (of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40 b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fg(C-d)150 3414 y Fo(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f (t)m(yp)s(e)h(`)p Fn(M-1)29 b(0)h(C-d)p Fo(',)39 b(whic)m(h)e(will)h (delete)h(the)e(next)h(ten)150 3523 y(c)m(haracters)32 b(on)e(the)h(input)e(line.)150 3720 y Fd(1.2.5)63 b(Searc)m(hing)40 b(for)i(Commands)g(in)f(the)g(History)150 3867 y Fo(Readline)22 b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)f(the)g (command)h(history)f(for)g(lines)g(con)m(taining)150 3977 y(a)31 b(sp)s(eci\014ed)e(string.)41 b(There)30 b(are)h(t)m(w)m(o)g(searc)m(h)g(mo)s(des:)41 b Fe(incremen)m(tal)35 b Fo(and)30 b Fe(non-incremen)m(tal)p Fo(.)275 4111 y(Incremen)m(tal)c (searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e (t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150 4220 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s (ed,)g(Readline)g(displa)m(ys)g(the)f(next)h(en)m(try)g(from)e(the)i (history)150 4330 y(matc)m(hing)25 b(the)f(string)g(t)m(yp)s(ed)g(so)g (far.)39 b(An)23 b(incremen)m(tal)j(searc)m(h)e(requires)g(only)g(as)g (man)m(y)g(c)m(haracters)i(as)150 4439 y(needed)i(to)i(\014nd)d(the)i (desired)f(history)h(en)m(try)-8 b(.)41 b(T)-8 b(o)29 b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history)g(for)f(a)i (particular)150 4549 y(string,)g(t)m(yp)s(e)f Fg(C-r)p Fo(.)40 b(T)m(yping)29 b Fg(C-s)g Fo(searc)m(hes)h(forw)m(ard)f (through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m (t)150 4658 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g Fn(isearch-terminators)33 b Fo(v)-5 b(ariable)39 b(are)f(used)f(to)i (terminate)g(an)f(incremen)m(tal)150 4768 y(searc)m(h.)71 b(If)40 b(that)h(v)-5 b(ariable)41 b(has)f(not)h(b)s(een)e(assigned)i (a)f(v)-5 b(alue,)44 b(the)c Fn(ESC)g Fo(and)f Fg(C-J)h Fo(c)m(haracters)i(will)150 4878 y(terminate)h(an)g(incremen)m(tal)g (searc)m(h.)78 b Fg(C-g)41 b Fo(will)i(ab)s(ort)f(an)g(incremen)m(tal)i (searc)m(h)f(and)f(restore)h(the)150 4987 y(original)30 b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f(terminated,)h(the)f (history)g(en)m(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150 5097 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 5230 y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e(the)h (history)g(list,)h(t)m(yp)s(e)g Fg(C-r)e Fo(or)h Fg(C-s)f Fo(as)h(appropriate.)43 b(This)150 5340 y(will)26 b(searc)m(h)h(bac)m (kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f(for)g(the)g(next)g (en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string)p eop end %%Page: 4 7 TeXDict begin 4 6 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(4)150 299 y(t)m(yp)s(ed)37 b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i(sequence)f(b)s(ound)e(to) i(a)g(Readline)h(command)e(will)h(terminate)h(the)150 408 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39 b(F)-8 b(or)26 b(instance,)h(a)f Fn(RET)f Fo(will)g(terminate)i(the)f (searc)m(h)g(and)e(accept)150 518 y(the)30 b(line,)g(thereb)m(y)f (executing)i(the)e(command)g(from)g(the)h(history)f(list.)41 b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 628 y(terminate)i(the)g (searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g(found)e(the)i(curren)m(t)f (line,)h(and)f(b)s(egin)g(editing.)275 777 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g(searc)m(h)f(string.) 54 b(If)34 b(t)m(w)m(o)j Fg(C-r)p Fo(s)c(are)i(t)m(yp)s(ed)g(without) 150 886 y(an)m(y)i(in)m(terv)m(ening)g(c)m(haracters)h(de\014ning)e(a)h (new)f(searc)m(h)h(string,)h(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i (string)g(is)150 996 y(used.)275 1145 y(Non-incremen)m(tal)48 b(searc)m(hes)g(read)e(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s (efore)f(starting)h(to)h(searc)m(h)f(for)150 1255 y(matc)m(hing)d (history)e(lines.)78 b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f (t)m(yp)s(ed)g(b)m(y)g(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 1364 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150 1627 y Fm(1.3)68 b(Readline)47 b(Init)e(File)150 1786 y Fo(Although)f(the)g(Readline)g(library)f(comes)i(with)e(a)h(set)h(of) f(Emacs-lik)m(e)h(k)m(eybindings)f(installed)g(b)m(y)150 1896 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren) m(t)f(set)g(of)g(k)m(eybindings.)38 b(An)m(y)25 b(user)f(can)h (customize)h(programs)150 2005 y(that)45 b(use)f(Readline)h(b)m(y)f (putting)g(commands)g(in)g(an)g Fe(inputrc)49 b Fo(\014le,)g(con)m(v)m (en)m(tionally)e(in)d(his)g(home)150 2115 y(directory)-8 b(.)39 b(The)23 b(name)h(of)f(this)h(\014le)f(is)g(tak)m(en)i(from)e (the)g(v)-5 b(alue)24 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)25 b Fn(INPUTRC)p Fo(.)150 2224 y(If)30 b(that)g(v)-5 b(ariable)31 b(is)f(unset,)g(the)h(default)f(is)g Fn(~/.inputrc)p Fo(.)38 b(If)30 b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h (b)s(e)150 2334 y(read,)g(the)f(ultimate)i(default)e(is)h Fn(/etc/inputrc)p Fo(.)275 2483 y(When)e(a)h(program)f(whic)m(h)h(uses) f(the)h(Readline)g(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h (read,)g(and)f(the)150 2593 y(k)m(ey)i(bindings)e(are)i(set.)275 2742 y(In)26 b(addition,)i(the)f Fn(C-x)i(C-r)d Fo(command)h(re-reads)g (this)f(init)h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m (hanges)150 2851 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g (it.)150 3065 y Fd(1.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150 3212 y Fo(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w) m(ed)h(in)d(the)h(Readline)h(init)f(\014le.)73 b(Blank)41 b(lines)h(are)150 3322 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h (a)g(`)p Fn(#)p Fo(')g(are)h(commen)m(ts.)73 b(Lines)41 b(b)s(eginning)f(with)g(a)i(`)p Fn($)p Fo(')f(indicate)150 3431 y(conditional)i(constructs)e(\(see)i(Section)f(1.3.2)h ([Conditional)f(Init)f(Constructs],)j(page)f(12\).)74 b(Other)150 3541 y(lines)31 b(denote)g(v)-5 b(ariable)31 b(settings)g(and)f(k)m(ey)h(bindings.)150 3722 y(V)-8 b(ariable)32 b(Settings)630 3832 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e (the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h (the)g(v)-5 b(alues)41 b(of)630 3941 y(v)-5 b(ariables)34 b(in)f(Readline)i(using)e(the)g Fn(set)g Fo(command)g(within)g(the)h (init)g(\014le.)50 b(The)33 b(syn)m(tax)630 4051 y(is)d(simple:)870 4193 y Fn(set)47 b Fg(variable)e(value)630 4335 y Fo(Here,)29 b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default) h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 4444 y(use)k Fn(vi)g Fo(line)h(editing)g(commands:)870 4586 y Fn(set)47 b(editing-mode)d(vi)630 4728 y Fo(V)-8 b(ariable)36 b(names)f(and)g(v) -5 b(alues,)36 b(where)f(appropriate,)h(are)g(recognized)g(without)f (regard)630 4837 y(to)c(case.)42 b(Unrecognized)31 b(v)-5 b(ariable)31 b(names)g(are)f(ignored.)630 4979 y(Bo)s(olean)c(v)-5 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f(set)i(to)g(on)f(or)g (o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the)g(v)-5 b(alue)26 b(is)630 5089 y(n)m(ull)e(or)g(empt)m(y)-8 b(,)27 b Fe(on)d Fo(\(case-insensitiv)m(e\),)29 b(or)24 b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) -5 b(ariable)630 5198 y(b)s(eing)30 b(set)h(to)g(o\013.)630 5340 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m (hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)p eop end %%Page: 5 8 TeXDict begin 5 7 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y Fn(bell-style)1110 408 y Fo(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an) m(ts)f(to)h(ring)e(the)h(termi-)1110 518 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p Fn(none)p Fo(',)g(Readline)g(nev)m(er)g(rings) e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 628 y(`)p Fn(visible)p Fo(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g (one)g(is)g(a)m(v)-5 b(ailable.)51 b(If)33 b(set)g(to)1110 737 y(`)p Fn(audible)p Fo(')j(\(the)i(default\),)i(Readline)e(attempts) g(to)h(ring)e(the)g(terminal's)1110 847 y(b)s(ell.)630 1005 y Fn(bind-tty-special-chars)1110 1115 y Fo(If)e(set)g(to)h(`)p Fn(on)p Fo(')f(\(the)g(default\),)i(Readline)f(attempts)g(to)g(bind)d (the)i(con)m(trol)1110 1224 y(c)m(haracters)30 b(treated)g(sp)s (ecially)g(b)m(y)f(the)g(k)m(ernel's)h(terminal)f(driv)m(er)g(to)h (their)1110 1334 y(Readline)h(equiv)-5 b(alen)m(ts.)630 1492 y Fn(blink-matching-paren)1110 1602 y Fo(If)36 b(set)g(to)h(`)p Fn(on)p Fo(',)h(Readline)f(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j (the)f(cursor)e(to)i(an)1110 1711 y(op)s(ening)k(paren)m(thesis)h(when) f(a)h(closing)h(paren)m(thesis)e(is)h(inserted.)74 b(The)1110 1821 y(default)31 b(is)f(`)p Fn(off)p Fo('.)630 1979 y Fn(colored-completion-prefi)o(x)1110 2089 y Fo(If)f(set)h(to)g(`)p Fn(on)p Fo(',)g(when)e(listing)i(completions,)h(Readline)f(displa)m(ys) g(the)f(com-)1110 2198 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s (ossible)f(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110 2308 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g (v)-5 b(alue)40 b(of)g(the)g Fn(LS_COLORS)1110 2418 y Fo(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30 b(default)h(is)f(`)p Fn(off)p Fo('.)630 2576 y Fn(colored-stats)1110 2685 y Fo(If)c(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(displa)m(ys)g (p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 2795 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67 b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110 2905 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fn(LS_COLORS)d Fo(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110 3014 y(is)30 b(`)p Fn(off)p Fo('.)630 3173 y Fn(comment-begin)1110 3282 y Fo(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) h(the)h(line)f(when)g(the)1110 3392 y Fn(insert-comment)26 b Fo(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f Fn("#")p Fo(.)630 3550 y Fn(completion-display-width) 1110 3660 y Fo(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 3769 y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5 b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110 3879 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39 b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110 3988 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e (line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630 4147 y Fn(completion-ignore-case)1110 4256 y Fo(If)d(set)h(to)g(`)p Fn(on)p Fo(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i (and)e(completion)1110 4366 y(in)j(a)h(case-insensitiv)m(e)i(fashion.) 40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Fn(off)p Fo('.)630 4524 y Fn(completion-map-case)1110 4634 y Fo(If)22 b(set)g(to)h(`)p Fn(on)p Fo(',)h(and)e Fe(completion-ignore-case)31 b Fo(is)22 b(enabled,)i(Readline)f(treats)1110 4743 y(h)m(yphens)29 b(\(`)p Fn(-)p Fo('\))j(and)e(underscores)g(\(`)p Fn(_)p Fo('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110 4853 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f (completion.)85 b(The)44 b(default)1110 4963 y(v)-5 b(alue)31 b(is)f(`)p Fn(off)p Fo('.)630 5121 y Fn(completion-prefix-displa)o (y-le)o(ngth)1110 5230 y Fo(The)h(length)g(in)g(c)m(haracters)i(of)f (the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 5340 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s (di\014cation.)41 b(When)29 b(set)h(to)h(a)p eop end %%Page: 6 9 TeXDict begin 6 8 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(6)1110 299 y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e(longer)j (than)e(this)g(v)-5 b(alue)27 b(are)1110 408 y(replaced)k(with)f(an)g (ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)f(completions.)630 565 y Fn(completion-query-items)1110 675 y Fo(The)c(n)m(um)m(b)s(er)f (of)h(p)s(ossible)g(completions)h(that)g(determines)f(when)f(the)i (user)1110 784 y(is)i(ask)m(ed)h(whether)f(the)h(list)g(of)f(p)s (ossibilities)h(should)e(b)s(e)h(displa)m(y)m(ed.)41 b(If)29 b(the)1110 894 y(n)m(um)m(b)s(er)d(of)h(p)s(ossible)f (completions)i(is)f(greater)h(than)e(this)h(v)-5 b(alue,)28 b(Readline)1110 1003 y(will)f(ask)g(the)f(user)g(whether)g(or)g(not)h (he)f(wishes)g(to)i(view)e(them;)i(otherwise,)1110 1113 y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5 b(ariable)25 b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m(teger)g(v)-5 b(alue)1110 1223 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40 b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i(should)1110 1332 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g Fn(100)p Fo(.)630 1489 y Fn(convert-meta)1110 1598 y Fo(If)22 b(set)g(to)h(`)p Fn(on)p Fo(',)h(Readline)f(will)f(con)m(v)m (ert)i(c)m(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110 1708 y(to)33 b(an)e Fh(asci)r(i)h Fo(k)m(ey)h(sequence)f(b)m(y)g (stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110 1817 y(an)24 b Fn(ESC)g Fo(c)m(haracter,)j(con)m(v)m(erting)f(them)f (to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 1927 y(The)i(default)h(v)-5 b(alue)28 b(is)f(`)p Fn(on)p Fo(',)i(but)d(will) i(b)s(e)f(set)h(to)g(`)p Fn(off)p Fo(')g(if)f(the)h(lo)s(cale)h(is)f (one)1110 2037 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630 2193 y Fn(disable-completion)1110 2303 y Fo(If)k(set)h(to)h(`)p Fn(On)p Fo(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60 b(Completion)1110 2412 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h (in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110 2522 y(to)31 b Fn(self-insert)p Fo(.)38 b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 2679 y Fn(echo-control-characters)1110 2788 y Fo(When)f(set)h(to)g(`)p Fn(on)p Fo(',)f(on)g(op)s(erating)h (systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 2898 y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d (to)j(a)f(signal)g(generated)1110 3007 y(from)e(the)g(k)m(eyb)s(oard.) 41 b(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 3164 y Fn(editing-mode)1110 3273 y Fo(The)d Fn(editing-mode)e Fo(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k) m(ey)i(bind-)1110 3383 y(ings)25 b(is)g(used.)38 b(By)26 b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,) 1110 3493 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110 3602 y(b)s(e)g(set)h(to)g(either)g(`)p Fn(emacs)p Fo(')e(or)h(`)p Fn(vi)p Fo('.)630 3759 y Fn(emacs-mode-string)1110 3868 y Fo(If)j(the)h Fe(sho)m(w-mo)s(de-in-prompt)h Fo(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 3978 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f (of)h(the)f(primary)f(prompt)g(when)1110 4088 y(emacs)g(editing)h(mo)s (de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f (lik)m(e)h(a)h(k)m(ey)f(bind-)1110 4197 y(ing,)27 b(so)f(the)f (standard)g(set)h(of)f(meta-)i(and)e(con)m(trol)i(pre\014xes)d(and)h (bac)m(kslash)1110 4307 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 b(ailable.)41 b(Use)25 b(the)f(`)p Fn(\\1)p Fo(')f(and)h(`)p Fn(\\2)p Fo(')g(escap)s(es)g(to)g(b)s(egin)1110 4416 y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m(haracters,)j (whic)m(h)c(can)h(b)s(e)f(used)1110 4526 y(to)h(em)m(b)s(ed)f(a)g (terminal)h(con)m(trol)h(sequence)f(in)m(to)g(the)f(mo)s(de)g(string.) 61 b(The)1110 4635 y(default)31 b(is)f(`)p Fn(@)p Fo('.)630 4792 y Fn(enable-bracketed-paste)1110 4902 y Fo(When)24 b(set)h(to)h(`)p Fn(On)p Fo(',)g(Readline)f(will)g(con\014gure)f(the)h (terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 5011 y(will)k(enable)f(it)h (to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e (as)i(a)f(single)1110 5121 y(string)33 b(of)f(c)m(haracters,)j(instead) e(of)g(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110 5230 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49 b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110 5340 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41 b(The)29 b(default)i(is)f(`)p Fn(off)p Fo('.)p eop end %%Page: 7 10 TeXDict begin 7 9 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fn(enable-keypad)1110 408 y Fo(When)23 b(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(will)g (try)f(to)h(enable)g(the)f(application)i(k)m(eypad)1110 518 y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f (to)h(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 628 y(The)j(default)g(is) h(`)p Fn(off)p Fo('.)630 800 y Fn(enable-meta-key)1110 909 y Fo(When)40 b(set)g(to)g(`)p Fn(on)p Fo(',)j(Readline)d(will)g (try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 1019 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h (is)g(called.)76 b(On)41 b(man)m(y)1110 1129 y(terminals,)c(the)e(meta) h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56 b(The)1110 1238 y(default)31 b(is)f(`)p Fn(on)p Fo('.)630 1410 y Fn(expand-tilde)1110 1520 y Fo(If)d(set)h(to)h(`)p Fn(on)p Fo(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h (Readline)h(attempts)1110 1630 y(w)m(ord)i(completion.)42 b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 1802 y Fn(history-preserve-point)1110 1911 y Fo(If)41 b(set)h(to)h(`)p Fn(on)p Fo(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f (p)s(oin)m(t)f(\(the)1110 2021 y(curren)m(t)35 b(cursor)g(p)s (osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g (line)1110 2131 y(retriev)m(ed)h(with)f Fn(previous-history)c Fo(or)37 b Fn(next-history)p Fo(.)55 b(The)36 b(default)1110 2240 y(is)30 b(`)p Fn(off)p Fo('.)630 2412 y Fn(history-size)1110 2522 y Fo(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g (en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 2632 y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f (en)m(tries)g(are)g(deleted)h(and)e(no)1110 2741 y(new)e(en)m(tries)i (are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5 b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110 2851 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110 2960 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) f(made)g(to)h(set)f Fe(history-size)39 b Fo(to)1110 3070 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m (b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 3180 y(b)s(e)c(set)h(to)g(500.)630 3352 y Fn(horizontal-scroll-mode)1110 3461 y Fo(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f (`)p Fn(on)p Fo(')g(or)g(`)p Fn(off)p Fo('.)57 b(Setting)36 b(it)g(to)h(`)p Fn(on)p Fo(')1110 3571 y(means)26 b(that)h(the)f(text)h (of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m (tally)1110 3680 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i (are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 3790 y(screen,)27 b(instead)g(of)f(wrapping)f(on)m(to)i(a)f(new)g(screen)g (line.)39 b(By)27 b(default,)g(this)1110 3900 y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Fn(off)p Fo('.)630 4072 y Fn(input-meta)1110 4181 y Fo(If)f(set)g(to)h(`)p Fn(on)p Fo(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it) i(will)f(not)h(clear)1110 4291 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h (c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110 4401 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Fn(off)p Fo(',)j(but)1110 4510 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p Fn(on)p Fo(')e(if)h(the)g(lo)s(cale)i(con)m(tains)f(eigh)m(t-bit)g(c)m (haracters.)1110 4620 y(The)30 b(name)g Fn(meta-flag)e Fo(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5 b(ariable.)630 4792 y Fn(isearch-terminators)1110 4902 y Fo(The)51 b(string)h(of)g(c)m (haracters)h(that)f(should)e(terminate)j(an)f(incremen)m(tal)1110 5011 y(searc)m(h)25 b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m (haracter)h(as)f(a)g(command)1110 5121 y(\(see)45 b(Section)h(1.2.5)g ([Searc)m(hing],)j(page)d(3\).)84 b(If)44 b(this)g(v)-5 b(ariable)45 b(has)g(not)1110 5230 y(b)s(een)35 b(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h Fn(ESC)d Fo(and)h Fg(C-J)g Fo(will)h(terminate)g(an)1110 5340 y(incremen)m(tal)c(searc)m (h.)p eop end %%Page: 8 11 TeXDict begin 8 10 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fn(keymap)192 b Fo(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h (for)f(k)m(ey)h(binding)1110 408 y(commands.)71 b(Built-in)41 b Fn(keymap)e Fo(names)h(are)h Fn(emacs)p Fo(,)h Fn(emacs-standard)p Fo(,)1110 518 y Fn(emacs-meta)p Fo(,)99 b Fn(emacs-ctlx)p Fo(,)f Fn(vi)p Fo(,)j Fn(vi-move)p Fo(,)f Fn(vi-command)p Fo(,)f(and)1110 628 y Fn(vi-insert)p Fo(.)81 b Fn(vi)44 b Fo(is)h(equiv)-5 b(alen)m(t)46 b(to)g Fn(vi-command)c Fo(\()p Fn(vi-move)h Fo(is)i(also)h(a)1110 737 y(synon)m(ym\);)41 b Fn(emacs)c Fo(is)h(equiv)-5 b(alen)m(t)39 b(to)f Fn(emacs-standard)p Fo(.)59 b(Applications)1110 847 y(ma)m(y)32 b(add)e(additional)i (names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f Fn(emacs)p Fo(.)41 b(The)30 b(v)-5 b(alue)1110 956 y(of)31 b(the)f Fn(editing-mode)d Fo(v)-5 b(ariable)31 b(also)h(a\013ects)f (the)g(default)g(k)m(eymap.)630 1113 y Fn(keyseq-timeout)1110 1223 y Fo(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m (ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 1332 y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f (form)g(a)g(complete)h(k)m(ey)1110 1442 y(sequence)j(using)e(the)i (input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input) 1110 1551 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110 1661 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) g(but)f(complete)j(k)m(ey)e(se-)1110 1771 y(quence.)c(Readline)26 b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h (input)1110 1880 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m (t)f(input)g(source)h(\()p Fn(rl_instream)d Fo(b)m(y)i(default\).)1110 1990 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h (milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that) 1110 2099 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g (additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23 b(is)1110 2209 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f (equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5 b(alue,)1110 2318 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h (k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110 2428 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 b(alue)31 b(is)g Fn(500)p Fo(.)630 2585 y Fn(mark-directories)1110 2694 y Fo(If)38 b(set)g(to)h(`)p Fn(on)p Fo(',)i(completed)e(directory) f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 2804 y(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 2960 y Fn(mark-modified-lines)1110 3070 y Fo(This)k(v)-5 b(ariable,)38 b(when)d(set)h(to)h(`)p Fn(on)p Fo(',)g(causes)g (Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3180 y(terisk)f(\(`)p Fn(*)p Fo('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f (ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3289 y(This)d(v)-5 b(ariable)31 b(is)f(`)p Fn(off)p Fo(')g(b)m(y)g(default.)630 3446 y Fn(mark-symlinked-directori)o(es)1110 3555 y Fo(If)59 b(set)h(to)g(`)p Fn(on)p Fo(',)67 b(completed)60 b(names)f(whic)m(h)g (are)h(sym)m(b)s(olic)g(links)f(to)1110 3665 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70 b(to)g(the)g(v)-5 b(alue)70 b(of)1110 3774 y Fn(mark-directories)p Fo(\).)37 b(The)30 b(default)g(is)g(`)p Fn(off)p Fo('.)630 3931 y Fn(match-hidden-files)1110 4041 y Fo(This)21 b(v)-5 b(ariable,)25 b(when)d(set)g(to)h(`)p Fn(on)p Fo(',)h(causes)f (Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 4150 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Fn(.)p Fo(')g(\(hidden)f (\014les\))i(when)e(p)s(erforming)g(\014lename)1110 4260 y(completion.)75 b(If)41 b(set)g(to)h(`)p Fn(off)p Fo(',)i(the)e (leading)g(`)p Fn(.)p Fo(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)1110 4369 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.) 53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Fn(on)p Fo(')g(b)m(y)1110 4479 y(default.)630 4635 y Fn(menu-complete-display-pr)o(efix)1110 4745 y Fo(If)f(set)h(to)g(`)p Fn(on)p Fo(',)h(men)m(u)e(completion)i (displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110 4855 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b) s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 4964 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Fn(off)p Fo('.)630 5121 y Fn(output-meta)1110 5230 y Fo(If)35 b(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(will)g(displa)m(y)f(c)m (haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 5340 y(set)h(directly)g (rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59 b(The)p eop end %%Page: 9 12 TeXDict begin 9 11 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2153 b(9)1110 299 y(default)26 b(is)f(`)p Fn(off)p Fo(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p Fn(on)p Fo(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110 408 y(eigh)m(t-bit)k(c)m(haracters.)630 581 y Fn(page-completions)1110 690 y Fo(If)h(set)i(to)f(`)p Fn(on)p Fo(',)h(Readline)g(uses)e(an)h(in) m(ternal)h Fn(more)p Fo(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 800 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) 47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fn(on)p Fo(')1110 909 y(b)m(y)e(default.)630 1082 y Fn(print-completions-horizo)o(ntal)o (ly)1110 1191 y Fo(If)23 b(set)i(to)g(`)p Fn(on)p Fo(',)g(Readline)g (will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110 1301 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c (than)g(do)m(wn)g(the)h(screen.)1110 1410 y(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 1583 y Fn(revert-all-at-newline)1110 1692 y Fo(If)e(set)h(to)g(`)p Fn(on)p Fo(',)g(Readline)g(will)g(undo)f (all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 1802 y(returning)f(when)f Fn(accept-line)f Fo(is)j(executed.)41 b(By)29 b(default,)g(history)g(lines)1110 1911 y(ma)m(y)42 b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h (across)g(calls)h(to)1110 2021 y Fn(readline)p Fo(.)38 b(The)30 b(default)h(is)f(`)p Fn(off)p Fo('.)630 2193 y Fn(show-all-if-ambiguous)1110 2303 y Fo(This)f(alters)i(the)f (default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40 b(If)29 b(set)1110 2412 y(to)f(`)p Fn(on)p Fo(',)g(w)m(ords)f(whic)m(h) g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause) 1110 2522 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i (instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 2632 y(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Fn(off)p Fo('.)630 2804 y Fn(show-all-if-unmodified)1110 2913 y Fo(This)38 b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h (functions)e(in)h(a)1110 3023 y(fashion)25 b(similar)h(to)g Fe(sho)m(w-all-if-am)m(biguous)p Fo(.)41 b(If)25 b(set)h(to)h(`)p Fn(on)p Fo(',)f(w)m(ords)f(whic)m(h)1110 3133 y(ha)m(v)m(e)32 b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s (ossible)f(par-)1110 3242 y(tial)43 b(completion)h(\(the)f(p)s(ossible) f(completions)h(don't)f(share)g(a)h(common)1110 3352 y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g (immediately)i(instead)e(of)h(ring-)1110 3461 y(ing)g(the)f(b)s(ell.)41 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fn(off)p Fo('.)630 3634 y Fn(show-mode-in-prompt)1110 3743 y Fo(If)24 b(set)h(to)g(`)p Fn(on)p Fo(',)g(add)f(a)h(string)f(to)h(the)f(b)s (eginning)g(of)g(the)h(prompt)e(indicating)1110 3853 y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi) h(insertion.)49 b(The)32 b(mo)s(de)1110 3962 y(strings)45 b(are)h(user-settable)g(\(e.g.,)51 b Fe(emacs-mo)s(de-string)8 b Fo(\).)87 b(The)45 b(default)1110 4072 y(v)-5 b(alue)31 b(is)f(`)p Fn(off)p Fo('.)630 4244 y Fn(skip-completed-text)1110 4354 y Fo(If)i(set)i(to)f(`)p Fn(on)p Fo(',)h(this)f(alters)g(the)g (default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110 4463 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110 4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)1110 4682 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g (c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f (b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110 4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110 5011 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g (after)h(the)g(`)p Fn(e)p Fo(')f(in)1110 5121 y(`)p Fn(Makefile)p Fo(')c(will)i(result)f(in)g(`)p Fn(Makefile)p Fo(')f(rather)h(than)h(`) p Fn(Makefilefile)p Fo(',)1110 5230 y(assuming)d(there)g(is)h(a)f (single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5 b(alue)1110 5340 y(is)30 b(`)p Fn(off)p Fo('.)p eop end %%Page: 10 13 TeXDict begin 10 12 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(10)630 299 y Fn (vi-cmd-mode-string)1110 408 y Fo(If)33 b(the)h Fe(sho)m(w-mo)s (de-in-prompt)h Fo(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f (is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g (last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110 628 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)g (mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110 737 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f (standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110 847 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)g (a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Fn(\\1)p Fo(')1110 956 y(and)23 b(`)p Fn(\\2)p Fo(')h(escap)s(es)h(to)f(b)s (egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 1066 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a) h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 1176 y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p Fn(\(cmd\))p Fo('.)630 1340 y Fn(vi-ins-mode-string)1110 1450 y Fo(If)j(the)h Fe(sho)m(w-mo)s(de-in-prompt)h Fo(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 1559 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f (of)h(the)f(primary)f(prompt)g(when)1110 1669 y(vi)35 b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.) 54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 1778 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g (meta-)h(and)e(con)m(trol)1110 1888 y(pre\014xes)34 b(and)g(bac)m (kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Fn(\\1)p Fo(')1110 1998 y(and)23 b(`)p Fn(\\2)p Fo(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g (sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 2107 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h (terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2217 y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p Fn(\(ins\))p Fo('.)630 2381 y Fn(visible-stats)1110 2491 y Fo(If)h(set)i(to)f(`)p Fn(on)p Fo(',)h(a)f(c)m(haracter)i(denoting)e (a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110 2600 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)150 2765 y(Key)f(Bindings)630 2874 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h (k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630 2984 y(need)27 b(to)i(\014nd)d(the)i(name)f(of) h(the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)630 3093 y(sections)37 b(con)m(tain)g(tables)g (of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an) m(y)-8 b(,)630 3203 y(and)30 b(a)h(short)f(description)g(of)h(what)f (the)g(command)h(do)s(es.)630 3340 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g (name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g (the)g(init)630 3450 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m (ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then) 630 3559 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g (and)630 3669 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m (terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72 b(The)40 b(name)h(of)630 3778 y(the)35 b(k)m(ey)g(can)g(b)s(e)f (expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h (what)h(y)m(ou)g(\014nd)e(most)630 3888 y(comfortable.)630 4025 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h (k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630 4134 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g (\(a)h Fe(macro)5 b Fo(\).)630 4299 y Fe(k)m(eyname)g Fo(:)42 b Fe(function-name)35 b Fo(or)c Fe(macro)1110 4408 y(k)m(eyname)k Fo(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s (elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350 4545 y Fn(Control-u:)45 b(universal-argument)1350 4655 y(Meta-Rubout:)f(backward-kill-word)1350 4765 y(Control-o:)h(">)i (output")1110 4902 y Fo(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112 b Fg(C-u)94 b Fo(is)g(b)s(ound)f(to)i(the)f(function)1110 5011 y Fn(universal-argument)p Fo(,)124 b Fg(M-DEL)107 b Fo(is)i(b)s(ound)e(to)j(the)f(function)1110 5121 y Fn(backward-kill-word)p Fo(,)75 b(and)69 b Fg(C-o)g Fo(is)h(b)s(ound)e (to)j(run)d(the)i(macro)1110 5230 y(expressed)45 b(on)h(the)g(righ)m(t) g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p Fn(>)1110 5340 y(output)p Fo(')29 b(in)m(to)i(the)g(line\).)p eop end %%Page: 11 14 TeXDict begin 11 13 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(11)1110 299 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g(names)f(are)g (recognized)h(while)1110 408 y(pro)s(cessing)40 b(this)f(k)m(ey)i (binding)e(syn)m(tax:)60 b Fe(DEL)p Fo(,)42 b Fe(ESC)p Fo(,)g Fe(ESCAPE)p Fo(,)f Fe(LFD)p Fo(,)1110 518 y Fe(NEWLINE)p Fo(,)31 b Fe(RET)p Fo(,)f Fe(RETURN)p Fo(,)g Fe(R)m(UBOUT)p Fo(,)h Fe(SP)-8 b(A)m(CE)p Fo(,)31 b Fe(SPC)p Fo(,)e(and)h Fe(T)-8 b(AB)p Fo(.)630 677 y Fn(")p Fe(k)m(eyseq)r Fn(")p Fo(:)41 b Fe(function-name)36 b Fo(or)30 b Fe(macro)1110 787 y(k)m(eyseq)k Fo(di\013ers)d(from)f Fe(k)m(eyname)37 b Fo(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110 896 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m(y) f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 1006 y(double)29 b(quotes.)41 b(Some)29 b Fh(gnu)h Fo(Emacs)f(st)m(yle)i(k)m(ey)f(escap) s(es)g(can)g(b)s(e)f(used,)g(as)1110 1115 y(in)k(the)h(follo)m(wing)i (example,)f(but)e(the)h(sp)s(ecial)h(c)m(haracter)g(names)f(are)g(not) 1110 1225 y(recognized.)1350 1359 y Fn("\\C-u":)46 b (universal-argument)1350 1469 y("\\C-x\\C-r":)f(re-read-init-file)1350 1578 y("\\e[11~":)g("Function)h(Key)g(1")1110 1713 y Fo(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fg(C-u)64 b Fo(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 1822 y Fn(universal-argument)39 b Fo(\(just)k(as)h(it)g(w)m(as)g(in)g (the)f(\014rst)g(example\),)49 b(`)p Fg(C-x)1110 1932 y(C-r)p Fo(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f Fn(re-read-init-file)p Fo(,)c(and)j(`)p Fn(ESC)h([)g(1)g(1)1110 2041 y(~)p Fo(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p Fn(Function)e(Key)g(1)p Fo('.)630 2200 y(The)g(follo)m(wing)i Fh(gnu)f Fo(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 b(ailable)32 b(when)d(sp)s(ecifying)630 2310 y(k)m(ey)i(sequences:)630 2469 y Fg(\\C-)336 b Fo(con)m(trol)32 b(pre\014x)630 2628 y Fg(\\M-)336 b Fo(meta)31 b(pre\014x)630 2787 y Fg(\\e)384 b Fo(an)30 b(escap)s(e)h(c)m(haracter)630 2945 y Fg(\\\\)384 b Fo(bac)m(kslash)630 3104 y Fg(\\)p Fn(")g(")p Fo(,)30 b(a)h(double)f(quotation)i(mark)630 3263 y Fg(\\')384 b Fn(')p Fo(,)30 b(a)h(single)g(quote)g(or)f(ap)s (ostrophe)630 3422 y(In)d(addition)h(to)g(the)g Fh(gnu)f Fo(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g (bac)m(kslash)630 3532 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 3691 y Fn(\\a)384 b Fo(alert)31 b(\(b)s(ell\))630 3850 y Fn(\\b)384 b Fo(bac)m(kspace)630 4008 y Fn(\\d)g Fo(delete)630 4167 y Fn(\\f)g Fo(form)30 b(feed)630 4326 y Fn(\\n)384 b Fo(newline)630 4485 y Fn(\\r)g Fo(carriage)32 b(return)630 4644 y Fn(\\t)384 b Fo(horizon)m(tal)32 b(tab)630 4803 y Fn(\\v)384 b Fo(v)m(ertical)32 b(tab)630 4962 y Fn(\\)p Fg(nnn)288 b Fo(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fe(nnn)e Fo(\(one)i(to)1110 5071 y(three)c(digits\))630 5230 y Fn(\\x)p Fg(HH)288 b Fo(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e (v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 b Fe(HH)1110 5340 y Fo(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))p eop end %%Page: 12 15 TeXDict begin 12 14 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(12)630 299 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e(or)f(double)g (quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 408 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g (to)h(b)s(e)f(a)h(function)f(name.)38 b(In)630 518 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g (describ)s(ed)e(ab)s(o)m(v)m(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 628 y(will)j(quote)h(an)m(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f (text,)k(including)39 b(`)p Fn(")p Fo(')h(and)g(`)p Fn(')p Fo('.)69 b(F)-8 b(or)630 737 y(example,)28 b(the)e(follo)m(wing)h (binding)d(will)i(mak)m(e)h(`)p Fg(C-x)j Fn(\\)p Fo(')c(insert)f(a)h (single)h(`)p Fn(\\)p Fo(')f(in)m(to)g(the)g(line:)870 873 y Fn("\\C-x\\\\":)45 b("\\\\")150 1073 y Fd(1.3.2)63 b(Conditional)41 b(Init)g(Constructs)150 1220 y Fo(Readline)c(implemen) m(ts)g(a)h(facilit)m(y)g(similar)f(in)g(spirit)f(to)i(the)f (conditional)h(compilation)g(features)f(of)150 1330 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g(bindings)d(and) h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s(erformed)f(as)i(the) 150 1440 y(result)f(of)h(tests.)41 b(There)30 b(are)h(four)f(parser)f (directiv)m(es)j(used.)150 1601 y Fn($if)336 b Fo(The)31 b Fn($if)f Fo(construct)i(allo)m(ws)h(bindings)d(to)i(b)s(e)e(made)i (based)f(on)g(the)g(editing)h(mo)s(de,)g(the)630 1711 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h(application)g(using)f (Readline.)59 b(The)36 b(text)h(of)f(the)h(test,)630 1821 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f(to)h (the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630 1930 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i (it.)630 2091 y Fn(mode)288 b Fo(The)30 b Fn(mode=)e Fo(form)i(of)g(the)h Fn($if)e Fo(directiv)m(e)j(is)e(used)f(to)i(test)g (whether)e(Read-)1110 2201 y(line)44 b(is)f(in)g Fn(emacs)f Fo(or)h Fn(vi)g Fo(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g (conjunction)1110 2311 y(with)c(the)h(`)p Fn(set)29 b(keymap)p Fo(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110 2420 y(the)32 b Fn(emacs-standard)c Fo(and)j Fn(emacs-ctlx)d Fo(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 2530 y(starting)f(out)g (in)f Fn(emacs)f Fo(mo)s(de.)630 2691 y Fn(term)288 b Fo(The)26 b Fn(term=)g Fo(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f (terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 2800 y(ings,)38 b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g (the)g(terminal's)1110 2910 y(function)24 b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p Fn(=)p Fo(')g(is)g(tested)h(against)1110 3020 y(b)s(oth)k(the)h(full)g (name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g (terminal)1110 3129 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p Fn(-)p Fo('.)50 b(This)33 b(allo)m(ws)i Fn(sun)e Fo(to)h(matc)m(h)g(b)s (oth)f Fn(sun)g Fo(and)1110 3239 y Fn(sun-cmd)p Fo(,)c(for)h(instance.) 630 3400 y Fn(version)144 b Fo(The)44 b Fn(version)f Fo(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i (against)1110 3509 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74 b(The)42 b Fn(version)d Fo(expands)i(to)h(the)g(curren)m(t)1110 3619 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h (op)s(erators)f(includes)f(`)p Fn(=)p Fo(')h(\(and)1110 3729 y(`)p Fn(==)p Fo('\),)33 b(`)p Fn(!=)p Fo(',)f(`)p Fn(<=)p Fo(',)h(`)p Fn(>=)p Fo(',)f(`)p Fn(<)p Fo(',)h(and)e(`)p Fn(>)p Fo('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h (on)1110 3838 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g (consists)h(of)f(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110 3948 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44 b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 4057 y(`)p Fn(7.1)p Fo('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g (omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Fn(0)p Fo('.)40 b(The)1110 4167 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated) g(from)g(the)h(string)f Fn(version)f Fo(and)h(from)g(the)1110 4276 y(v)m(ersion)39 b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f (whitespace.)67 b(The)38 b(follo)m(wing)i(example)1110 4386 y(sets)31 b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m (ersion)f(b)s(eing)g(used)g(is)g(7.0)i(or)e(new)m(er:)1350 4521 y Fn($if)47 b(version)f(>=)h(7.0)1350 4631 y(set)g (show-mode-in-prompt)42 b(on)1350 4741 y($endif)630 4902 y(application)1110 5011 y Fo(The)21 b Fe(application)j Fo(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h (set-)1110 5121 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h (Readline)g(library)g(sets)g(the)g Fe(application)1110 5230 y(name)p Fo(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h (v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 5340 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h (a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)p eop end %%Page: 13 16 TeXDict begin 13 15 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(13)1110 299 y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f(sequence)h(that)f (quotes)1110 408 y(the)e(curren)m(t)f(or)g(previous)g(w)m(ord)g(in)g (Bash:)1350 543 y Fn($if)47 b(Bash)1350 653 y(#)g(Quote)g(the)g (current)f(or)h(previous)e(word)1350 762 y("\\C-xq":)h ("\\eb\\"\\ef\\"")1350 872 y($endif)630 1031 y(variable)96 b Fo(The)33 b Fe(v)-5 b(ariable)39 b Fo(construct)33 b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g(Readline)1110 1141 y(v)-5 b(ariables)32 b(and)f(v)-5 b(alues.)45 b(The)32 b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i(`)p Fn(=)p Fo(',)1110 1250 y(`)p Fn(==)p Fo(',)49 b(and)44 b(`)p Fn(!=)p Fo('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g (b)s(e)g(separated)g(from)g(the)1110 1360 y(comparison)25 b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s (e)f(separated)1110 1469 y(from)33 b(the)h(v)-5 b(alue)35 b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52 b(Both)35 b(string)1110 1579 y(and)i(b)s(o)s(olean)g(v)-5 b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39 b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 1689 y(tested)46 b(against)g(the)f(v)-5 b(alues)46 b Fe(on)f Fo(and)f Fe(o\013)p Fo(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110 1798 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Fn(mode=emacs)e Fo(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 1933 y Fn($if)47 b(editing-mode)d(==)k(emacs)1350 2042 y(set)f (show-mode-in-prompt)42 b(on)1350 2152 y($endif)150 2311 y($endif)192 b Fo(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous) g(example,)h(terminates)g(an)g Fn($if)e Fo(command.)150 2471 y Fn($else)240 b Fo(Commands)29 b(in)h(this)h(branc)m(h)e(of)i (the)f Fn($if)g Fo(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g (fails.)150 2630 y Fn($include)96 b Fo(This)43 b(directiv)m(e)i(tak)m (es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g (commands)630 2740 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e (from)630 2849 y Fn(/etc/inputrc)p Fo(:)870 2984 y Fn($include)46 b(/etc/inputrc)150 3183 y Fd(1.3.3)63 b(Sample)41 b(Init)g(File)150 3330 y Fo(Here)27 b(is)f(an)h(example)g(of)f(an)h Fe(inputrc)k Fo(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150 3440 y(conditional)j(syn)m (tax.)p eop end %%Page: 14 17 TeXDict begin 14 16 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(14)390 408 y Fn(#)47 b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h (editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g (re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390 956 y(#)g(Lines)g(beginning)e(with)i('#')g(are)g(comments.)390 1066 y(#)390 1176 y(#)g(First,)g(include)e(any)i(system-wide)e (bindings)h(and)g(variable)390 1285 y(#)h(assignments)e(from)i (/etc/Inputrc)390 1395 y($include)f(/etc/Inputrc)390 1614 y(#)390 1724 y(#)h(Set)g(various)f(bindings)g(for)h(emacs)f(mode.) 390 1943 y(set)h(editing-mode)d(emacs)390 2162 y($if)j(mode=emacs)390 2381 y(Meta-Control-h:)91 b(backward-kill-word)43 b(Text)k(after)f(the) h(function)f(name)g(is)h(ignored)p 3970 2401 42 76 v 390 2600 a(#)390 2710 y(#)g(Arrow)g(keys)f(in)i(keypad)e(mode)390 2819 y(#)390 2929 y(#"\\M-OD":)379 b(backward-char)390 3039 y(#"\\M-OC":)g(forward-char)390 3148 y(#"\\M-OA":)g (previous-history)390 3258 y(#"\\M-OB":)g(next-history)390 3367 y(#)390 3477 y(#)47 b(Arrow)g(keys)f(in)i(ANSI)e(mode)390 3587 y(#)390 3696 y("\\M-[D":)380 b(backward-char)390 3806 y("\\M-[C":)g(forward-char)390 3915 y("\\M-[A":)g (previous-history)390 4025 y("\\M-[B":)g(next-history)390 4134 y(#)390 4244 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode) 390 4354 y(#)390 4463 y(#"\\M-\\C-OD":)331 b(backward-char)390 4573 y(#"\\M-\\C-OC":)g(forward-char)390 4682 y(#"\\M-\\C-OA":)g (previous-history)390 4792 y(#"\\M-\\C-OB":)g(next-history)390 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode) 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end %%Page: 15 18 TeXDict begin 15 17 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(15)390 299 y Fn(#"\\M-\\C-[A":)331 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390 628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066 y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the) g(default.)390 1176 y(TAB:)g(complete)390 1395 y(#)g(Macros)g(that)f (are)h(convenient)e(for)i(shell)f(interaction)390 1504 y($if)h(Bash)390 1614 y(#)g(edit)g(the)g(path)390 1724 y("\\C-xp":)f("PATH=${PATH}\\e\\C-e\\C-a)o(\\ef)o(\\C-f)o(")390 1833 y(#)h(prepare)f(to)h(type)g(a)h(quoted)e(word)g(--)390 1943 y(#)h(insert)g(open)f(and)h(close)f(double)h(quotes)390 2052 y(#)g(and)g(move)g(to)g(just)g(after)f(the)h(open)g(quote)390 2162 y("\\C-x\\"":)e("\\"\\"\\C-b")390 2271 y(#)i(insert)g(a)g (backslash)e(\(testing)h(backslash)f(escapes)390 2381 y(#)i(in)h(sequences)d(and)i(macros\))390 2491 y("\\C-x\\\\":)e("\\\\") 390 2600 y(#)i(Quote)g(the)g(current)f(or)h(previous)e(word)390 2710 y("\\C-xq":)h("\\eb\\"\\ef\\"")390 2819 y(#)h(Add)g(a)h(binding)e (to)h(refresh)f(the)h(line,)f(which)g(is)h(unbound)390 2929 y("\\C-xr":)f(redraw-current-line)390 3039 y(#)h(Edit)g(variable)f (on)h(current)f(line.)390 3148 y("\\M-\\C-v":)f ("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-)o(a\\C-)o(y=")390 3258 y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h (available)390 3587 y(set)f(bell-style)e(visible)390 3806 y(#)i(don't)g(strip)f(characters)f(to)i(7)h(bits)e(when)h(reading) 390 3915 y(set)g(input-meta)e(on)390 4134 y(#)i(allow)g(iso-latin1)e (characters)g(to)i(be)g(inserted)f(rather)390 4244 y(#)h(than)g (converted)e(to)j(prefix-meta)c(sequences)390 4354 y(set)j (convert-meta)d(off)390 4573 y(#)j(display)f(characters)f(with)i(the)g (eighth)f(bit)h(set)g(directly)390 4682 y(#)g(rather)g(than)f(as)h (meta-prefixed)e(characters)390 4792 y(set)i(output-meta)e(on)390 5011 y(#)i(if)h(there)e(are)h(more)g(than)f(150)h(possible)f (completions)e(for)390 5121 y(#)j(a)h(word,)e(ask)h(the)g(user)g(if)g (he)g(wants)f(to)i(see)f(all)f(of)i(them)390 5230 y(set)f (completion-query-items)42 b(150)p eop end %%Page: 16 19 TeXDict begin 16 18 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(16)390 299 y Fn(#)47 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 847 y($endif)150 1089 y Fm(1.4)68 b(Bindable)45 b(Readline)i(Commands) 150 1248 y Fo(This)25 b(section)i(describ)s(es)d(Readline)j(commands)e (that)h(ma)m(y)g(b)s(e)f(b)s(ound)f(to)i(k)m(ey)h(sequences.)39 b(Command)150 1358 y(names)30 b(without)h(an)f(accompan)m(ying)i(k)m (ey)f(sequence)g(are)g(un)m(b)s(ound)c(b)m(y)k(default.)275 1493 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fe(p)s(oin)m(t)h Fo(refers)e(to)h(the)f(curren)m(t)g(cursor)g(p)s(osition,)h(and)f Fe(mark)31 b Fo(refers)150 1603 y(to)40 b(a)f(cursor)f(p)s(osition)h (sa)m(v)m(ed)h(b)m(y)f(the)g Fn(set-mark)d Fo(command.)66 b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f(p)s(oin)m(t)g(and)150 1713 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f Fe(region)p Fo(.)150 1913 y Fd(1.4.1)63 b(Commands)42 b(F)-10 b(or)41 b(Mo)m(ving)150 2085 y Fn(beginning-of-line)26 b(\(C-a\))630 2195 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(curren)m(t)g (line.)150 2355 y Fn(end-of-line)d(\(C-e\))630 2464 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 2625 y Fn(forward-char)c(\(C-f\))630 2734 y Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(c)m(haracter.)150 2895 y Fn(backward-char)c(\(C-b\)) 630 3004 y Fo(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 3165 y Fn(forward-word)d(\(M-f\))630 3274 y Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41 b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630 3384 y(digits.)150 3544 y Fn(backward-word)27 b(\(M-b\))630 3654 y Fo(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g (curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34 b(are)g(comp)s(osed)630 3763 y(of)d(letters)g(and)f(digits.)150 3923 y Fn(previous-screen-line)25 b(\(\))630 4033 y Fo(A)m(ttempt)41 b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e(to)h(the)f(same)h(ph)m(ysical)g (screen)f(column)g(on)g(the)g(previous)630 4143 y(ph)m(ysical)26 b(screen)f(line.)39 b(This)24 b(will)i(not)f(ha)m(v)m(e)h(the)f (desired)g(e\013ect)h(if)f(the)h(curren)m(t)e(Readline)630 4252 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d(more)i(than)f(one)g(ph)m (ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f(not)h(greater)g(than)630 4362 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i(screen)f(width.) 150 4522 y Fn(next-screen-line)c(\(\))630 4632 y Fo(A)m(ttempt)g(to)f (mo)m(v)m(e)i(p)s(oin)m(t)d(to)i(the)e(same)i(ph)m(ysical)f(screen)g (column)f(on)h(the)f(next)h(ph)m(ysical)630 4741 y(screen)e(line.)39 b(This)23 b(will)g(not)h(ha)m(v)m(e)h(the)e(desired)g(e\013ect)i(if)e (the)g(curren)m(t)h(Readline)g(line)f(do)s(es)630 4851 y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m(ysical)h(line)g(or)f (if)g(the)h(length)f(of)h(the)f(curren)m(t)g(Readline)630 4960 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g(of)f(the)h (prompt)e(plus)h(the)g(screen)h(width.)150 5121 y Fn(clear-screen)c (\(C-l\))630 5230 y Fo(Clear)g(the)g(screen)f(and)h(redra)m(w)f(the)h (curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)g(line)g(at)g(the)g (top)630 5340 y(of)k(the)f(screen.)p eop end %%Page: 17 20 TeXDict begin 17 19 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fn (redraw-current-line)25 b(\(\))630 408 y Fo(Refresh)30 b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s (ound.)150 596 y Fd(1.4.2)63 b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150 761 y Fn(accept-line)27 b(\(Newline)h(or)i(Return\))630 871 y Fo(Accept)36 b(the)g(line)f (regardless)h(of)f(where)g(the)g(cursor)g(is.)55 b(If)34 b(this)h(line)h(is)f(non-empt)m(y)-8 b(,)37 b(it)630 981 y(ma)m(y)32 b(b)s(e)g(added)f(to)h(the)g(history)g(list)h(for)e (future)g(recall)j(with)d Fn(add_history\(\))p Fo(.)42 b(If)31 b(this)630 1090 y(line)g(is)f(a)h(mo)s(di\014ed)e(history)h (line,)h(the)g(history)f(line)h(is)f(restored)h(to)g(its)g(original)g (state.)150 1237 y Fn(previous-history)26 b(\(C-p\))630 1347 y Fo(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g (fetc)m(hing)g(the)g(previous)f(command.)150 1494 y Fn(next-history)d (\(C-n\))630 1604 y Fo(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i (history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150 1751 y Fn(beginning-of-history)25 b(\(M-<\))630 1861 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8 b(.)150 2008 y Fn(end-of-history)26 b(\(M->\))630 2117 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8 b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150 2265 y Fn(reverse-search-history)24 b(\(C-r\))630 2374 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g (line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630 2484 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 b(is)i(an)f(incremen)m (tal)i(searc)m(h.)150 2631 y Fn(forward-search-history)24 b(\(C-s\))630 2741 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h (the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) 630 2850 y(history)30 b(as)h(necessary)-8 b(.)41 b(This)30 b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 2998 y Fn (non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 b(\(M-p\))630 3107 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g (the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g (his-)630 3217 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m (tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630 3326 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m (ywhere)g(in)f(a)h(history)f(line.)150 3474 y Fn (non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 b(\(M-n\))630 3583 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h (the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) 630 3693 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m (tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630 3802 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an) m(ywhere)g(in)f(a)h(history)f(line.)150 3950 y Fn (history-search-forward)24 b(\(\))630 4059 y Fo(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g(the)h(string)f(of)h(c)m (haracters)h(b)s(et)m(w)m(een)f(the)630 4169 y(start)36 b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630 4278 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 b(By)33 b(default,)g(this)630 4388 y(command)d(is)h(un)m(b)s(ound.)150 4535 y Fn(history-search-backward)24 b(\(\))630 4645 y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g (the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630 4754 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.) 58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630 4864 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 b(By)33 b(default,)g(this)630 4974 y(command)d(is)h(un)m(b)s(ound.)150 5121 y Fn(history-substring-search)o(-for)o(ward)24 b(\(\))630 5230 y Fo(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g (the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f(the)630 5340 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m (t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere) p eop end %%Page: 18 21 TeXDict begin 18 20 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(18)630 299 y(in)32 b(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h (searc)m(h.)47 b(By)33 b(default,)h(this)e(command)630 408 y(is)e(un)m(b)s(ound.)150 573 y Fn(history-substring-search)o(-bac) o(kwar)o(d)24 b(\(\))630 683 y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g (through)f(the)h(history)g(for)g(the)f(string)h(of)g(c)m(haracters)h(b) s(et)m(w)m(een)g(the)630 793 y(start)29 b(of)g(the)g(curren)m(t)g(line) g(and)f(the)h(p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g (matc)m(h)h(an)m(ywhere)630 902 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e(command)630 1012 y(is)e(un)m(b)s(ound.)150 1177 y Fn(yank-nth-arg)d(\(M-C-y\))630 1286 y Fo(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h (\(usually)g(the)g(second)g(w)m(ord)630 1396 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32 b(an)g(argumen)m(t)g Fe(n)p Fo(,)g(insert)g(the)g Fe(n)p Fo(th)f(w)m(ord)g(from)630 1506 y(the)k(previous)f(command)h(\(the)g(w) m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630 1615 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f Fe(n)p Fo(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630 1725 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fe(n)e Fo(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630 1834 y(the)e(`)p Fn(!)p Fg(n)p Fo(')f(history)g(expansion)g(had)g(b)s (een)g(sp)s(eci\014ed.)150 1999 y Fn(yank-last-arg)d(\(M-.)i(or)h (M-_\))630 2109 y Fo(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous) f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 2218 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m (t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Fn(yank-nth-arg)p Fo(.)630 2328 y(Successiv)m(e)26 b(calls)g(to)f Fn(yank-last-arg)c Fo(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i (inserting)630 2438 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i (of)f(eac)m(h)h(line)630 2547 y(in)36 b(turn.)58 b(An)m(y)36 b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g (calls)h(determines)630 2657 y(the)d(direction)g(to)h(mo)m(v)m(e)g (through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e (switc)m(hes)h(the)630 2766 y(direction)23 b(through)g(the)g(history)f (\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g (facilities)630 2876 y(are)28 b(used)f(to)h(extract)h(the)f(last)g (argumen)m(t,)h(as)e(if)h(the)g(`)p Fn(!$)p Fo(')f(history)g(expansion) h(had)f(b)s(een)630 2986 y(sp)s(eci\014ed.)150 3190 y Fd(1.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 b(ext)150 3365 y Fg(end-of-file)27 b Fn(\(usually)h(C-d\))630 3475 y Fo(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g (for)f(example,)i(b)m(y)e Fn(stty)p Fo(.)39 b(If)25 b(this)h(c)m (harac-)630 3584 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m (haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s (eginning)630 3694 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g (it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fh(eof)p Fo(.)150 3859 y Fn(delete-char)e(\(C-d\))630 3968 y Fo(Delete)35 b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g (is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 4078 y(as)e(the)f(tt)m(y)i Fh(eof)d Fo(c)m(haracter,)j(as)f Fg(C-d)e Fo(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g (e\013ects.)150 4243 y Fn(backward-delete-char)25 b(\(Rubout\))630 4353 y Fo(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 4462 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 4627 y Fn(forward-backward-delete-)o(char)24 b(\(\))630 4737 y Fo(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h (unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630 4846 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s (ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 4956 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 5121 y Fn(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 5230 y Fo(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h (v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630 5340 y(sequences)d(lik)m(e)g Fg(C-q)p Fo(,)f(for)g(example.)p eop end %%Page: 19 22 TeXDict begin 19 21 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fn(tab-insert)28 b(\(M-TAB\))630 408 y Fo(Insert)i(a)h(tab)f(c)m(haracter.)150 573 y Fn(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 683 y Fo(Insert)g(y)m(ourself.)150 848 y Fn(bracketed-paste-begin)25 b(\(\))630 957 y Fo(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e (b)s(ound)f(to)i(the)g Fn(")p Fo(brac)m(k)m(eted)h(paste)p Fn(")f Fo(escap)s(e)h(sequence)630 1067 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i (assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630 1177 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g (single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630 1286 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630 1396 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j Fn(self-insert)c Fo(instead)j(of)h(executing)g(an)m(y)f(editing)630 1505 y(commands.)150 1670 y Fn(transpose-chars)26 b(\(C-t\))630 1780 y Fo(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)g(cursor)f (forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g(cursor,)630 1889 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)g(of)h (the)630 1999 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h(last)h (t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 b(Negativ)m(e)25 b(argumen)m(ts)630 2109 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150 2273 y Fn(transpose-words)c(\(M-t\))630 2383 y Fo(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f (after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630 2493 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m (t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g (the)630 2602 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150 2767 y Fn(upcase-word)c(\(M-u\))630 2877 y Fo(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630 2986 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h (the)e(cursor.)150 3151 y Fn(downcase-word)d(\(M-l\))630 3261 y Fo(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i (w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m (ercase)630 3370 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m (v)m(e)i(the)f(cursor.)150 3535 y Fn(capitalize-word)26 b(\(M-c\))630 3645 y Fo(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m (wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h (capitalize)630 3754 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f (mo)m(v)m(e)i(the)f(cursor.)150 3919 y Fn(overwrite-mode)26 b(\(\))630 4029 y Fo(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) h(switc)m(hes)630 4138 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m (t,)i(switc)m(hes)e(to)630 4248 y(insert)30 b(mo)s(de.)41 b(This)30 b(command)h(a\013ects)h(only)e Fn(emacs)f Fo(mo)s(de;)i Fn(vi)f Fo(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 4357 y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f Fn(readline\(\))c Fo(starts)k(in)f(insert)g(mo)s(de.)630 4495 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s (ound)c(to)j Fn(self-insert)c Fo(replace)k(the)g(text)g(at)630 4604 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h (the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 4714 y Fn(backward-delete-char)25 b Fo(replace)31 b(the)g(c)m(haracter) h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 4851 y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150 5056 y Fd(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 5230 y Fn(kill-line)28 b(\(C-k\))630 5340 y Fo(Kill)j(the)f(text)i (from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)p eop end %%Page: 20 23 TeXDict begin 20 22 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(20)150 299 y Fn (backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 408 y Fo(Kill)h(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s (eginning)g(of)h(the)f(curren)m(t)g(line.)150 566 y Fn (unix-line-discard)c(\(C-u\))630 675 y Fo(Kill)31 b(bac)m(kw)m(ard)g (from)e(the)i(cursor)f(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t) g(line.)150 832 y Fn(kill-whole-line)c(\(\))630 942 y Fo(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f (matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630 1052 y(this)30 b(is)h(un)m(b)s(ound.)150 1209 y Fn(kill-word)d(\(M-d\)) 630 1318 y Fo(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f (curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h (the)g(end)630 1428 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Fn(forward-word)p Fo(.)150 1585 y Fn(backward-kill-word)25 b(\(M-DEL\))630 1695 y Fo(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g Fn(backward-word)p Fo(.)150 1852 y Fn(unix-word-rubout)d(\(C-w\))630 1961 y Fo(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m(t,)i(using)f (white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 b(.)43 b(The)31 b(killed)630 2071 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f (kill-ring.)150 2228 y Fn(unix-filename-rubout)25 b(\(\))630 2338 y Fo(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e (white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630 2447 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g (sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 2605 y Fn (delete-horizontal-space)24 b(\(\))630 2714 y Fo(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41 b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 2871 y Fn(kill-region)d(\(\))630 2981 y Fo(Kill)k(the)f(text)i(in)e(the)g (curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un) m(b)s(ound.)150 3138 y Fn(copy-region-as-kill)25 b(\(\))630 3248 y Fo(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f (kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f (a)m(w)m(a)m(y)-8 b(.)630 3357 y(By)31 b(default,)f(this)h(command)f (is)g(un)m(b)s(ound.)150 3514 y Fn(copy-backward-word)25 b(\(\))630 3624 y Fo(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m (t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries) f(are)i(the)630 3734 y(same)31 b(as)f Fn(backward-word)p Fo(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 3891 y Fn(copy-forward-word)26 b(\(\))630 4000 y Fo(Cop)m(y)31 b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h (bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630 4110 y(same)f(as)f Fn(forward-word)p Fo(.)38 b(By)30 b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 4267 y Fn(yank)f(\(C-y\))630 4377 y Fo(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h (p)s(oin)m(t.)150 4534 y Fn(yank-pop)d(\(M-y\))630 4643 y Fo(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 4753 y(command)30 b(is)h Fn(yank)e Fo(or)h Fn(yank-pop)p Fo(.)150 4950 y Fd(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m (ts)150 5121 y Fn(digit-argument)26 b(\()p Fg(M-0)p Fn(,)j Fg(M-1)p Fn(,)h(...)f Fg(M--)p Fn(\))630 5230 y Fo(Add)d(this)h(digit)g (to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f (new)f(argumen)m(t.)630 5340 y Fg(M--)j Fo(starts)i(a)g(negativ)m(e)i (argumen)m(t.)p eop end %%Page: 21 24 TeXDict begin 21 23 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fn (universal-argument)25 b(\(\))630 408 y Fo(This)g(is)g(another)h(w)m(a) m(y)g(to)h(sp)s(ecify)e(an)g(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m(y)f(one)630 518 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h(leading)h(min)m(us) e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 628 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)m(y)f (digits,)i(executing)f Fn(universal-argument)630 737 y Fo(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h (otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630 847 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)d (a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630 956 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f (the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630 1066 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h (one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630 1176 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h (second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 1285 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g (not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 1498 y Fd(1.4.6)63 b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42 b(Y)-10 b(ou)150 1676 y Fn(complete)28 b(\(TAB\))630 1785 y Fo(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g (b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630 1895 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42 b(The)30 b(default)h(is)f(\014lename)h(completion.)150 2068 y Fn(possible-completions)25 b(\(M-?\))630 2177 y Fo(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s (efore)e(p)s(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 2287 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i (columns)f(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 b(alue)33 b(of)630 2396 y Fn(completion-display-width)o Fo(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)38 b Fn(COLUMNS)p Fo(,)630 2506 y(or)30 b(the)h(screen)f (width,)g(in)g(that)h(order.)150 2678 y Fn(insert-completions)25 b(\(M-*\))630 2788 y Fo(Insert)30 b(all)h(completions)h(of)f(the)g (text)g(b)s(efore)f(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s (een)e(generated)630 2898 y(b)m(y)g Fn(possible-completions)p Fo(.)150 3070 y Fn(menu-complete)d(\(\))630 3180 y Fo(Similar)d(to)g Fn(complete)p Fo(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f (completed)i(with)e(a)i(single)f(matc)m(h)630 3289 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39 b(execution)g(of)f Fn(menu-complete)630 3399 y Fo(steps)i(through)g (the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i (matc)m(h)f(in)f(turn.)630 3508 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g (of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5 b(ject)36 b(to)i(the)f(setting)630 3618 y(of)f Fn(bell-style)p Fo(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57 b(An)36 b(argumen)m(t)h(of)f Fe(n)f Fo(mo)m(v)m(es)i Fe(n)630 3728 y Fo(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e (matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f (used)g(to)630 3837 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g (list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s (ound)e(to)630 3947 y Fn(TAB)p Fo(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m (y)i(default.)150 4119 y Fn(menu-complete-backward)24 b(\(\))630 4229 y Fo(Iden)m(tical)36 b(to)g Fn(menu-complete)p Fo(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g (p)s(ossible)630 4338 y(completions,)d(as)e(if)h Fn(menu-complete)26 b Fo(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150 4511 y Fn(delete-char-or-list)25 b(\(\))630 4620 y Fo(Deletes)41 b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s (eginning)e(or)h(end)f(of)h(the)630 4730 y(line)50 b(\(lik)m(e)h Fn(delete-char)p Fo(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,) 55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 4840 y Fn(possible-completions)p Fo(.)35 b(This)30 b(command)g(is)g(un)m(b)s (ound)e(b)m(y)i(default.)150 5052 y Fd(1.4.7)63 b(Keyb)s(oard)41 b(Macros)150 5230 y Fn(start-kbd-macro)26 b(\(C-x)j(\(\))630 5340 y Fo(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m (to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)p eop end %%Page: 22 25 TeXDict begin 22 24 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fn(end-kbd-macro)27 b(\(C-x)i(\)\))630 408 y Fo(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t) m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f (sa)m(v)m(e)i(the)630 518 y(de\014nition.)150 671 y Fn (call-last-kbd-macro)c(\(C-x)k(e\))630 780 y Fo(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h(de\014ned,)f(b)m(y)h(making)f (the)g(c)m(haracters)i(in)e(the)630 890 y(macro)c(app)s(ear)f(as)g(if)h (t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s(oard.)150 1042 y Fn(print-last-kbd-macro)25 b(\(\))630 1152 y Fo(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)e(in)i(a)f(format)h (suitable)g(for)f(the)h Fe(inputrc)k Fo(\014le.)150 1344 y Fd(1.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150 1513 y Fn(re-read-init-file)26 b(\(C-x)j(C-r\))630 1622 y Fo(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g Fe(inputrc)27 b Fo(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d (or)i(v)-5 b(ariable)630 1732 y(assignmen)m(ts)31 b(found)e(there.)150 1885 y Fn(abort)g(\(C-g\))630 1994 y Fo(Ab)s(ort)d(the)h(curren)m(t)f (editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5 b(ject)26 b(to)i(the)630 2104 y(setting)j(of)g Fn(bell-style)p Fo(\).)150 2256 y Fn(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p Fg(x)p Fn(,)g(...)o(\))630 2366 y Fo(If)35 b(the)g(meta\014ed)g(c)m (haracter)i Fe(x)k Fo(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g (that)g(is)g(b)s(ound)e(to)630 2476 y(the)g(corresp)s(onding)f (meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32 b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 2585 y Fe(x)37 b Fo(is)30 b(already)h(lo)m(w)m(er)h(case.)150 2738 y Fn(prefix-meta)27 b(\(ESC\))630 2847 y Fo(Metafy)39 b(the)e(next)h(c)m (haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f (without)g(a)h(meta)g(k)m(ey)-8 b(.)630 2957 y(T)m(yping)30 b(`)p Fn(ESC)g(f)p Fo(')g(is)h(equiv)-5 b(alen)m(t)31 b(to)g(t)m(yping)g Fg(M-f)p Fo(.)150 3109 y Fn(undo)e(\(C-_)g(or)h(C-x) g(C-u\))630 3219 y Fo(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s (ered)f(for)g(eac)m(h)i(line.)150 3372 y Fn(revert-line)27 b(\(M-r\))630 3481 y Fo(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f (line.)49 b(This)32 b(is)h(lik)m(e)i(executing)f(the)f Fn(undo)f Fo(command)630 3591 y(enough)e(times)h(to)g(get)h(bac)m(k)f (to)g(the)f(b)s(eginning.)150 3743 y Fn(tilde-expand)d(\(M-~\))630 3853 y Fo(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m (ord.)150 4006 y Fn(set-mark)d(\(C-@\))630 4115 y Fo(Set)33 b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g (argumen)m(t)g(is)g(supplied,)f(the)h(mark)g(is)f(set)630 4225 y(to)f(that)g(p)s(osition.)150 4377 y Fn(exchange-point-and-mark) 24 b(\(C-x)29 b(C-x\))630 4487 y Fo(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with) g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f (set)h(to)f(the)h(sa)m(v)m(ed)630 4596 y(p)s(osition,)f(and)e(the)i (old)g(cursor)e(p)s(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 4749 y Fn(character-search)26 b(\(C-]\))630 4859 y Fo(A)f(c)m(haracter) h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g (o)s(ccurrence)g(of)g(that)g(c)m(haracter.)630 4968 y(A)30 b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s (ccurrences.)150 5121 y Fn(character-search-backwar)o(d)24 b(\(M-C-]\))630 5230 y Fo(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s (oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of) g(that)630 5340 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f (searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)p eop end %%Page: 23 26 TeXDict begin 23 25 bop 150 -116 a Fo(Chapter)30 b(1:)41 b(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fn(skip-csi-sequence) 26 b(\(\))630 408 y Fo(Read)i(enough)f(c)m(haracters)h(to)g(consume)f (a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f(as)g(those)h(de\014ned)630 518 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m(trol)g(Sequence) 630 628 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Fn("\\)p Fo(e[)p Fn(")p Fo(,)g(k)m(eys)f(pro-)630 737 y(ducing)31 b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e (explicitly)j(b)s(ound)c(to)i(a)h(readline)630 847 y(command,)f (instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f (editing)h(bu\013er.)44 b(This)31 b(is)630 956 y(un)m(b)s(ound)d(b)m(y) i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150 1116 y Fn(insert-comment)26 b(\(M-#\))630 1225 y Fo(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36 b(of)g(the)g Fn(comment-begin)c Fo(v)-5 b(ariable)36 b(is)g(in-)630 1335 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f (curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g (supplied,)630 1444 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g (line)630 1554 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f Fn(comment-begin)p Fo(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 1664 y(c)m(haracters)42 b(in)d Fn(comment-begin)e Fo(are)j(deleted)h(from)f (the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 1773 y(either)31 b(case,)h(the)e(line)h(is)f(accepted)i(as)f(if)f(a)h (newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 1932 y Fn(dump-functions)d (\(\))630 2042 y Fo(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g (their)g(k)m(ey)h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630 2151 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h (output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 2261 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fe(inputrc)k Fo(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k (default.)150 2420 y Fn(dump-variables)26 b(\(\))630 2530 y Fo(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h (output)f(stream.)630 2639 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is) g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a) m(y)g(that)630 2749 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fe(inputrc)k Fo(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c (b)m(y)k(default.)150 2908 y Fn(dump-macros)c(\(\))630 3018 y Fo(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences) f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 3127 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e (supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630 3237 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e Fe(inputrc)35 b Fo(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) d(b)m(y)630 3346 y(default.)150 3506 y Fn(emacs-editing-mode)e(\(C-e\)) 630 3615 y Fo(When)30 b(in)g Fn(vi)g Fo(command)g(mo)s(de,)g(this)h (causes)f(a)h(switc)m(h)g(to)g Fn(emacs)e Fo(editing)i(mo)s(de.)150 3774 y Fn(vi-editing-mode)26 b(\(M-C-j\))630 3884 y Fo(When)k(in)g Fn(emacs)f Fo(editing)i(mo)s(de,)f(this)h(causes)f(a)h(switc)m(h)g(to)g Fn(vi)f Fo(editing)h(mo)s(de.)150 4124 y Fm(1.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 4284 y Fo(While)32 b(the)g(Readline)g(library)f(do)s (es)g(not)h(ha)m(v)m(e)h(a)f(full)f(set)h(of)g Fn(vi)f Fo(editing)h(functions,)f(it)h(do)s(es)g(con)m(tain)150 4393 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52 b(The)34 b(Readline)g Fn(vi)g Fo(mo)s(de)f(b)s(eha)m(v)m(es)i(as)f(sp)s (eci\014ed)f(in)150 4503 y(the)e Fh(posix)e Fo(standard.)275 4637 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m (een)d Fn(emacs)f Fo(and)g Fn(vi)h Fo(editing)g(mo)s(des,)g(use)g(the)g (command)150 4747 y Fg(M-C-j)36 b Fo(\(b)s(ound)h(to)h (emacs-editing-mo)s(de)i(when)d(in)g Fn(vi)h Fo(mo)s(de)f(and)g(to)i (vi-editing-mo)s(de)g(in)e Fn(emacs)150 4857 y Fo(mo)s(de\).)k(The)30 b(Readline)h(default)f(is)g Fn(emacs)f Fo(mo)s(de.)275 4991 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fn(vi)f Fo(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s (de,)g(as)h(if)f(y)m(ou)150 5101 y(had)f(t)m(yp)s(ed)g(an)g(`)p Fn(i)p Fo('.)41 b(Pressing)29 b Fn(ESC)f Fo(switc)m(hes)i(y)m(ou)g(in)m (to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150 5210 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f Fn(vi)g Fo(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g (history)f(lines)h(with)150 5320 y(`)p Fn(k)p Fo(')d(and)e(subsequen)m (t)h(lines)h(with)f(`)p Fn(j)p Fo(',)g(and)g(so)h(forth.)p eop end %%Page: 24 27 TeXDict begin 24 26 bop 3659 -116 a Fo(24)150 299 y Fk(App)t(endix)52 b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359 502 y Fo(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fl(\015)e Fo(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 745 y Fn(http://fsf.org/)390 964 y Fo(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f (to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 1074 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f (is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330 1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g (a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 1450 y(useful)29 b(do)s(cumen)m(t)h Fe(free)36 b Fo(in)29 b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j (the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f (redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i (either)f(commercially)h(or)e(non-)330 1669 y(commercially)-8 b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f (the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 1778 y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g (considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 1888 y(made)30 b(b)m(y)h(others.)330 2021 y(This)22 b(License)i(is)f(a) h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 2131 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g (sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 2240 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) e(for)g(free)h(soft)m(w)m(are.)330 2373 y(W)-8 b(e)31 b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h (for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 2483 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) 65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 2592 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g (to)330 2702 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g (for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 b(ject)30 b(matter)i(or)330 2812 y(whether)f(it)h(is)f(published)f(as)i (a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h (License)g(principally)f(for)330 2921 y(w)m(orks)f(whose)h(purp)s(ose)d (is)j(instruction)f(or)g(reference.)199 3054 y(1.)61 b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3187 y(This)39 b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i (in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3297 y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 3407 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f (a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d (in)330 3516 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j (conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 3626 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h (or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g (a)h(licensee,)i(and)330 3735 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 3845 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) m(yrigh)m(t)j(la)m(w.)330 3978 y(A)i(\\Mo)s(di\014ed)f(V)-8 b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f (con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4088 y(a)k(p)s(ortion)f (of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s (di\014cations)f(and/or)h(translated)g(in)m(to)330 4197 y(another)31 b(language.)330 4330 y(A)26 b(\\Secondary)g(Section")h(is) f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f (the)g(Do)s(cumen)m(t)330 4440 y(that)c(deals)g(exclusiv)m(ely)h(with)e (the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f (Do)s(cumen)m(t)330 4549 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m (erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) m(tains)h(nothing)f(that)330 4659 y(could)j(fall)h(directly)g(within)f (that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 4769 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 b(The)330 4878 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e (historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 b(or)g(with)g(related)330 4988 y(matters,)38 b(or)d(of)h(legal,)i (commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s (osition)f(regarding)330 5097 y(them.)330 5230 y(The)25 b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g (Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)p eop end %%Page: 25 28 TeXDict begin 25 27 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(25)330 299 y(under)26 b(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h (de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) e(In)m(v)-5 b(arian)m(t)330 518 y(Sections.)39 b(If)25 b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) -5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 669 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short) g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 b(ron)m(t-Co)m(v)m(er)330 778 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er) j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f (Do)s(cumen)m(t)h(is)f(released)g(under)330 888 y(this)h(License.)40 b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26 b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m (v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 998 y(b)s(e)k(at)h(most)g(25)g(w)m (ords.)330 1148 y(A)36 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g (the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8 b(,)38 b(represen)m(ted)330 1258 y(in)d(a)h(format)g(whose)g(sp)s (eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g (public,)h(that)f(is)g(suitable)g(for)330 1367 y(revising)c(the)g(do)s (cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors) f(or)f(\(for)h(images)h(com-)330 1477 y(p)s(osed)23 b(of)h(pixels\))g (generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g (widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 1587 y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g (formatters)f(or)g(for)g(automatic)i(translation)f(to)330 1696 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input) g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g (otherwise)330 1806 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g (whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f (arranged)g(to)330 1915 y(th)m(w)m(art)27 b(or)g(discourage)g (subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 b(ransparen)m(t.)39 b(An)27 b(image)330 2025 y(format)35 b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g (substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g (is)330 2134 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i (\\Opaque".)330 2285 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T) -8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fh(asci)r(i)g Fo(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j (LaT)1759 2414 y(E)1810 2395 y(X)e(input)f(format,)j Fc(SGML)f Fo(or)f Fc(XML)g Fo(using)g(a)g(publicly)330 2504 y(a)m(v)-5 b(ailable)42 b Fc(DTD)p Fo(,)h(and)c (standard-conforming)g(simple)h Fc(HTML)p Fo(,)i(P)m(ostScript)e(or)f Fc(PDF)h Fo(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65 b(Examples)38 b(of)h(transparen)m(t)f(image)h(formats)g(include)f Fc(PNG)p Fo(,)i Fc(X)n(CF)330 2724 y Fo(and)e Fc(JPG)p Fo(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that) h(can)g(b)s(e)f(read)h(and)f(edited)330 2833 y(only)54 b(b)m(y)f(proprietary)h(w)m(ord)f(pro)s(cessors,)59 b Fc(SGML)54 b Fo(or)f Fc(XML)h Fo(for)g(whic)m(h)f(the)h Fc(DTD)g Fo(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g (generally)i(a)m(v)-5 b(ailable,)71 b(and)60 b(the)h(mac)m (hine-generated)j Fc(HTML)p Fo(,)330 3052 y(P)m(ostScript)31 b(or)f Fc(PDF)h Fo(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s (cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330 3203 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m(ted)f(b) s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f(follo)m (wing)330 3313 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g(legibly)-8 b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h(app)s(ear)f (in)h(the)330 3422 y(title)g(page.)40 b(F)-8 b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h(an)m(y)e (title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 3532 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s (earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330 3641 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330 3792 y(The)j(\\publisher")g(means)h(an)m(y)f(p)s(erson)g(or)h(en)m(tit) m(y)h(that)f(distributes)f(copies)i(of)e(the)h(Do)s(cumen)m(t)330 3902 y(to)c(the)g(public.)330 4052 y(A)f(section)h(\\En)m(titled)g (XYZ")f(means)f(a)h(named)g(subunit)e(of)h(the)h(Do)s(cumen)m(t)h (whose)e(title)i(either)330 4162 y(is)d(precisely)g(XYZ)g(or)f(con)m (tains)i(XYZ)f(in)f(paren)m(theses)i(follo)m(wing)g(text)g(that)f (translates)h(XYZ)e(in)330 4271 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g(sp)s(eci\014c)g(section)h(name)f (men)m(tioned)h(b)s(elo)m(w,)g(suc)m(h)330 4381 y(as)i(\\Ac)m(kno)m (wledgemen)m(ts",)33 b(\\Dedications",)e(\\Endorsemen)m(ts",)e(or)f (\\History".\))42 b(T)-8 b(o)29 b(\\Preserv)m(e)330 4491 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g(section)g(when)f(y)m(ou)h(mo)s (dify)e(the)i(Do)s(cumen)m(t)h(means)e(that)h(it)g(remains)g(a)330 4600 y(section)e(\\En)m(titled)f(XYZ")g(according)g(to)g(this)g (de\014nition.)330 4751 y(The)c(Do)s(cumen)m(t)i(ma)m(y)f(include)f(W) -8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)g(the)g(notice)h(whic)m (h)e(states)i(that)330 4861 y(this)34 b(License)g(applies)g(to)h(the)f (Do)s(cumen)m(t.)52 b(These)33 b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m (y)g(reference)h(in)g(this)f(License,)j(but)d(only)h(as)g(regards)f (disclaiming)i(w)m(arran)m(ties:)330 5080 y(an)m(y)e(other)g (implication)i(that)e(these)g(W)-8 b(arran)m(t)m(y)39 b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end %%Page: 26 29 TeXDict begin 26 28 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(26)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h (the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h (or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j (and)42 b(the)h(license)330 518 y(notice)37 b(sa)m(ying)g(this)e (License)i(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e (in)i(all)g(copies,)j(and)330 628 y(that)27 b(y)m(ou)g(add)f(no)h (other)f(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f (License.)40 b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 737 y(tec)m(hnical)35 b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h (the)f(reading)g(or)g(further)e(cop)m(ying)j(of)f(the)g(copies)330 847 y(y)m(ou)25 b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28 b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d (copies.)330 956 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f (n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g (the)f(conditions)330 1066 y(in)e(section)i(3.)330 1200 y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g (conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g (publicly)330 1310 y(displa)m(y)31 b(copies.)199 1443 y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1577 y(If)25 b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g (that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 1687 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f (100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 1797 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i (the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 1906 y(these)j(Co)m(v)m (er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 2016 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f (the)h(publisher)330 2125 y(of)k(these)h(copies.)53 b(The)34 b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i (with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2235 y(equally)e (prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g (other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 2345 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) 330 2454 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d (b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 2564 y(resp)s(ects.)330 2698 y(If)32 b(the)h(required)f(texts)i(for)e (either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g (legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 2807 y(the)h(\014rst)f (ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 2917 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3051 y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f (the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 3160 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g (T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) 330 3270 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h (Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d (whic)m(h)330 3380 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e (has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m (ork)330 3489 y(proto)s(cols)40 b(a)f(complete)h(T)-8 b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g (added)f(material.)67 b(If)330 3599 y(y)m(ou)39 b(use)g(the)g(latter)h (option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e (steps,)k(when)d(y)m(ou)h(b)s(egin)330 3708 y(distribution)f(of)g (Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 3818 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s (cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h (time)330 3927 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i (\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h (of)f(that)330 4037 y(edition)31 b(to)g(the)g(public.)330 4171 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g (con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 4281 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s (er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m (vide)g(y)m(ou)330 4390 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g (the)f(Do)s(cumen)m(t.)199 4524 y(4.)61 b(MODIFICA)-8 b(TIONS)330 4658 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) e(the)h(conditions)330 4768 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f (V)-8 b(ersion)22 b(under)d(precisely)330 4877 y(this)29 b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f (licensing)330 4987 y(distribution)k(and)h(mo)s(di\014cation)g(of)h (the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s (ossesses)f(a)i(cop)m(y)g(of)330 5096 y(it.)41 b(In)30 b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s (di\014ed)e(V)-8 b(ersion:)357 5230 y(A.)60 b(Use)33 b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e (an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the)510 5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)p eop end %%Page: 27 30 TeXDict begin 27 29 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(27)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 545 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h (one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c (for)510 655 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g (Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h (\014v)m(e)510 765 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s (cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g (few)m(er)510 874 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g (y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1011 y(C.)60 b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g (publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 b(as)f(the)510 1121 y(publisher.)355 1258 y(D.)61 b(Preserv)m(e)31 b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) 363 1395 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i (notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g (other)510 1504 y(cop)m(yrigh)m(t)g(notices.)365 1641 y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g (notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 1751 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g (form)510 1861 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 1998 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f (full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e (required)g(Co)m(v)m(er)510 2107 y(T)-8 b(exts)31 b(giv)m(en)g(in)f (the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2244 y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) 392 2381 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g (\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g (item)510 2491 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d (authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)510 2600 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e (the)g(Do)s(cu-)510 2710 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f (title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s (cumen)m(t)510 2819 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i (then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 b(ersion)37 b(as)510 2929 y(stated)31 b(in)f(the)h(previous)f(sen)m (tence.)378 3066 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s (cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m (t)h(for)g(public)e(access)j(to)510 3176 y(a)e(T)-8 b(ransparen)m(t)30 b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3285 y(the)g(Do)s(cumen)m (t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3395 y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h (published)510 3504 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e (the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) d(of)i(the)510 3614 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s (ermission.)354 3751 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m (titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k (Preserv)m(e)c(the)g(Title)510 3861 y(of)j(the)f(section,)j(and)d (preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) h(of)f(eac)m(h)i(of)f(the)510 3970 y(con)m(tributor)k(ac)m(kno)m (wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 4107 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f (in)f(their)g(text)i(and)510 4217 y(in)f(their)g(titles.)58 b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 4326 y(section)c(titles.)341 4463 y(M.)61 b(Delete)33 b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 4573 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 4710 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f (to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g (in)510 4819 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 b(Section.)354 4956 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g (V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f (app)s(endices)g(that)h(qualify)330 5230 y(as)28 b(Secondary)g (Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h (Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)330 5340 y(y)m(our)k(option)h (designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p eop end %%Page: 28 31 TeXDict begin 28 30 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(28)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 b(license)g(notice.)57 b(These)330 408 y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g (section)g(titles.)330 551 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section) i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g (nothing)g(but)330 661 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s (di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 b(parties|for)g(example,)g(statemen)m(ts)i(of)330 770 y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro) m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330 880 y(de\014nition)i(of)h(a)f(standard.)330 1022 y(Y)-8 b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m (ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8 b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1132 y(to)g(25)g(w)m(ords)e (as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i (the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s (di\014ed)330 1241 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f (F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m (k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1351 y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\)) g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t) g(already)330 1461 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g (same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m (y)g(arrangemen)m(t)330 1570 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m (y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g (not)f(add)g(another;)j(but)330 1680 y(y)m(ou)c(ma)m(y)h(replace)g(the) f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e (publisher)f(that)330 1789 y(added)e(the)g(old)h(one.)330 1932 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s (cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s (ermission)330 2041 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g (for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g (Mo)s(di\014ed)330 2151 y(V)-8 b(ersion.)199 2293 y(5.)61 b(COMBINING)31 b(DOCUMENTS)330 2436 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m (bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h (released)g(under)f(this)g(License,)330 2545 y(under)f(the)h(terms)g (de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f (v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2655 y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s (cumen)m(ts,)330 2765 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g (as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) g(w)m(ork)f(in)h(its)g(license)330 2874 y(notice,)32 b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 b(arran)m(t)m(y)32 b(Disclaimers.)330 3017 y(The)e(com)m(bined)g(w)m (ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) i(and)d(m)m(ultiple)i(iden)m(tical)330 3126 y(In)m(v)-5 b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h (single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m (v)-5 b(arian)m(t)330 3236 y(Sections)27 b(with)g(the)g(same)g(name)g (but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f (eac)m(h)h(suc)m(h)f(section)330 3345 y(unique)33 b(b)m(y)h(adding)f (at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g (the)g(original)h(author)f(or)330 3455 y(publisher)23 b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m (um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 3565 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h (com)m(bined)330 3674 y(w)m(ork.)330 3817 y(In)41 b(the)g(com)m (bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g (En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 3926 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h (En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 4036 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 b(Y)-8 b(ou)330 4145 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m (titled)f(\\Endorsemen)m(ts.")199 4288 y(6.)61 b(COLLECTIONS)28 b(OF)i(DOCUMENTS)330 4430 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f (collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g (do)s(cumen)m(ts)f(released)330 4540 y(under)41 b(this)h(License,)k (and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f (the)h(v)-5 b(arious)330 4650 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 b(pro)m(vided)42 b(that)i(y)m(ou)330 4759 y(follo)m(w)38 b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g (of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 4869 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h (collection,)i(and)d(distribute)g(it)h(individu-)330 5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g (a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end %%Page: 29 32 TeXDict begin 29 31 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(29)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h (W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f (its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep) s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h (on)f(a)g(v)m(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g (is)h(called)330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i (resulting)e(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g (the)330 770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e (b)s(ey)m(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g (aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g (other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h (not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h (Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f (these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241 y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f (of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m (er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m (ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h (aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5 b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f (in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f (brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61 b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a) i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e (translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h (terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f (sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i (holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24 b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f (License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the) h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513 y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g (License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f (translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f (License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m (ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28 b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m (kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m (e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61 b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h (Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38 b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g (cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330 3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically) i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330 3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i (of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h (particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h (\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g (cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h (terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8 b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34 b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h (reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288 y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d (license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h (reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h (holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g (reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m (ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f (License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330 4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g (violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h (of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28 b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h (terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38 b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e) 330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end %%Page: 30 33 TeXDict begin 30 32 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(30)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g (the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to)g(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h(in)g(spirit)330 653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m(y)h(di\013er)f (in)g(detail)h(to)g(address)f(new)g(problems)f(or)i(concerns.)330 762 y(See)c Fn(http://www.gnu.org/copy)o(left)o(/)p Fo(.)330 897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m(en)g(a)g (distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29 b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g (particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g(License)h (\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f(follo)m(wing)i (the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m (ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g (b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s (ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445 y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m (ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46 b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f (can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f (License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen) m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m (tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g (for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330 2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or) e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330 2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m (table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h (facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g (w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i (edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33 b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s (oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330 2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m (orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330 2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m (ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330 2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a) g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330 2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29 b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions) f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g (organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e (or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h (as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330 3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h (licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330 3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h (License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330 3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f (part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts) 330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j (w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s (er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h (Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site) g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end %%Page: 31 34 TeXDict begin 31 33 bop 150 -116 a Fo(App)s(endix)29 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603 b(31)150 299 y Fm(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f (for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fo(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh) m(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468 680 y Fb(Copyright)42 b(\(C\))79 b Fa(year)g(your)40 b(name)p Fb(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h (distribute)g(and/or)g(modify)f(this)g(document)468 854 y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i (License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h (published)h(by)d(the)h(Free)g(Software)h(Foundation;)468 1029 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g (and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f (license)i(is)f(included)h(in)f(the)g(section)g(entitled)h(``GNU)468 1203 y(Free)g(Documentation)h(License''.)275 1337 y Fo(If)d(y)m(ou)h (ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k (T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6 b(.)22 b(.)g(.)12 b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547 1559 y Fb(with)40 b(the)g(Invariant)h(Sections)g(being)g Fa(list)f(their)g(titles)p Fb(,)h(with)547 1646 y(the)f(Front-Cover)i (Texts)e(being)g Fa(list)p Fb(,)h(and)f(with)g(the)g(Back-Cover)h (Texts)547 1733 y(being)f Fa(list)p Fb(.)275 1868 y Fo(If)34 b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f (Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g (of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g (alternativ)m(es)i(to)e(suit)f(the)h(situation.)275 2112 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g (examples)g(of)f(program)f(co)s(de,)j(w)m(e)e(recommend)g(releasing)150 2222 y(these)44 b(examples)f(in)g(parallel)h(under)e(y)m(our)h(c)m (hoice)i(of)e(free)g(soft)m(w)m(are)h(license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s (ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF readline-8.0/doc/rluserman.html000664 000436 000000 00000367374 13406221744 016714 0ustar00chetwheel000000 000000 GNU Readline Library:
    [Top] [Contents] [Index] [ ? ]

    GNU Readline Library

    This document describes the end user interface of the GNU Readline Library, a utility which aids in the consistency of user interface across discrete programs which provide a command line interface. The Readline home page is http://www.gnu.org/software/readline/.

    1. Command Line Editing  GNU Readline User's Manual.
    A. GNU Free Documentation License  License for copying this manual.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1. Command Line Editing

    This chapter describes the basic features of the GNU command line editing interface.

    1.1 Introduction to Line Editing  Notation used in this text.
    1.2 Readline Interaction  The minimum set of commands for editing a line.
    1.3 Readline Init File  Customizing Readline from a user's view.
    1.4 Bindable Readline Commands  A description of most of the Readline commands available for binding
    1.5 Readline vi Mode  A short description of how to make Readline behave like the vi editor.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.1 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. The Meta key is labeled ALT on many keyboards. On keyboards with two keys labeled ALT (usually to either side of the space bar), the ALT on the left side is generally set to work as a Meta key. The ALT key on the right may also be configured to work as a Meta key or may be configured as some other modifier, such as a Compose key for typing accented characters.

    If you do not have a Meta or ALT key, or another key working as 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 (see section 1.3 Readline Init File). If your keyboard lacks a LFD key, typing C-j will produce the desired character. The RET key may be labeled Return or Enter on some keyboards.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2 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 RET. You do not have to be at the end of the line to press RET; the entire line is accepted regardless of the location of the cursor within the line.

    1.2.1 Readline Bare Essentials  The least you need to know about Readline.
    1.2.2 Readline Movement Commands  Moving about the input line.
    1.2.3 Readline Killing Commands  How to delete text, and how to get it back!
    1.2.4 Readline Arguments  Giving numeric arguments to commands.
    1.2.5 Searching for Commands in the History  Searching through previous lines.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2.1 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 mistype a character, and not notice the 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 bare essentials for editing the text of an input line follows.

    C-b
    Move back one character.
    C-f
    Move forward one character.
    DEL or Backspace
    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-_ or C-x C-u
    Undo the last editing command. You can undo all the way back to an empty line.

    (Depending on your configuration, the Backspace key be set to delete the character to the left of the cursor and the DEL key set to delete the character underneath the cursor, like C-d, rather than the character to the left of the cursor.)


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2.2 Readline Movement Commands

    The above table describes the most basic 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, where a word is composed of letters and digits.
    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2.3 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. (`Cut' and `paste' are more recent jargon for `kill' and `yank'.)

    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. Word boundaries are the same as those used by M-f.

    M-DEL
    Kill from the cursor the start of the current word, or, if between words, to the start of the previous word. Word boundaries are the same as those used by M-b.

    C-w
    Kill from the cursor to the previous whitespace. This is different than M-DEL because the word boundaries differ.

    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2.4 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' typed 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', which will delete the next ten characters on the input line.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.2.5 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. To search backward in the history for a particular string, type C-r. Typing C-s searches forward through the history. The characters present in the value of the isearch-terminators variable are used to terminate an incremental search. If that variable has not been assigned a value, the ESC and C-J characters will terminate an incremental search. C-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 C-r or C-s 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 RET will terminate the search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing.

    Readline remembers the last incremental search string. If two C-rs are typed without any intervening characters defining a new search string, any remembered search string is used.

    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 be part of the contents of the current line.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.3 Readline Init File

    Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by putting commands in an inputrc file, conventionally in his 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'. If that file does not exist or cannot be read, the ultimate default is `/etc/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.

    1.3.1 Readline Init File Syntax  Syntax for the commands in the inputrc file.

    1.3.2 Conditional Init Constructs  Conditional key bindings in the inputrc file.

    1.3.3 Sample Init File  An example inputrc file.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.3.1 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 (see section 1.3.2 Conditional Init Constructs). Other lines denote variable settings and key bindings.

    Variable Settings
    You can modify the run-time behavior of Readline by altering the values of variables in Readline using the set command within the init file. The syntax is simple:

     
    set variable value
    

    Here, for example, is how to change from the default Emacs-like key binding to use vi line editing commands:

     
    set editing-mode vi
    

    Variable names and values, where appropriate, are recognized without regard to case. Unrecognized variable names are ignored.

    Boolean variables (those that can be set to on or off) are set to on if the value is null or empty, on (case-insensitive), or 1. Any other value results in the variable being set to off.

    A great deal of run-time behavior is changeable with the following variables.

    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.

    bind-tty-special-chars
    If set to `on' (the default), Readline attempts to bind the control characters treated specially by the kernel's terminal driver to their Readline equivalents.

    blink-matching-paren
    If set to `on', Readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. The default is `off'.

    colored-completion-prefix
    If set to `on', when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the LS_COLORS environment variable. The default is `off'.

    colored-stats
    If set to `on', Readline displays possible completions using different colors to indicate their file type. The color definitions are taken from the value of the LS_COLORS environment variable. The default is `off'.

    comment-begin
    The string to insert at the beginning of the line when the insert-comment command is executed. The default value is "#".

    completion-display-width
    The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is -1.

    completion-ignore-case
    If set to `on', Readline performs filename matching and completion in a case-insensitive fashion. The default value is `off'.

    completion-map-case
    If set to `on', and completion-ignore-case is enabled, Readline treats hyphens (`-') and underscores (`_') as equivalent when performing case-insensitive filename matching and completion. The default value is `off'.

    completion-prefix-display-length
    The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions.

    completion-query-items
    The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. 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. This variable must be set to an integer value greater than or equal to 0. A negative value means Readline should never ask. The default limit is 100.

    convert-meta
    If set to `on', Readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and prefixing an ESC character, converting them to a meta-prefixed key sequence. The default value is `on', but will be set to `off' if the locale is one that contains eight-bit characters.

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

    echo-control-characters
    When set to `on', on operating systems that indicate they support it, readline echoes a character corresponding to a signal generated from the keyboard. The default is `on'.

    editing-mode
    The editing-mode variable controls which default set of key bindings is used. 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'.

    emacs-mode-string
    If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the `\1' and `\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is `@'.

    enable-bracketed-paste
    When set to `On', Readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a single string of characters, instead of treating each character as if it had been read from the keyboard. This can prevent pasted characters from being interpreted as editing commands. The default is `off'.

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

    enable-meta-key
    When set to `on', Readline will try to enable any meta modifier key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. The default is `on'.

    expand-tilde
    If set to `on', tilde expansion is performed when Readline attempts word completion. The default is `off'.

    history-preserve-point
    If set to `on', the history code attempts to place the point (the current cursor position) at the same location on each history line retrieved with previous-history or next-history. The default is `off'.

    history-size
    Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. If an attempt is made to set history-size to a non-numeric value, the maximum number of history entries will be set to 500.

    horizontal-scroll-mode
    This variable can be set to either `on' or `off'. Setting it to `on' means that the text of the lines being edited 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'.

    input-meta
    If set to `on', Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The default value is `off', but Readline will set it to `on' if the locale contains eight-bit characters. The name meta-flag is a synonym for this variable.

    isearch-terminators
    The string of characters that should terminate an incremental search without subsequently executing the character as a command (see section 1.2.5 Searching for Commands in the History). If this variable has not been given a value, the characters ESC and C-J will terminate an incremental search.

    keymap
    Sets Readline's idea of the current keymap for key binding commands. Built-in keymap names are emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command, and vi-insert. vi is equivalent to vi-command (vi-move is also a synonym); emacs is equivalent to emacs-standard. Applications may add additional names. The default value is emacs. The value of the editing-mode variable also affects the default keymap.

    keyseq-timeout
    Specifies the duration Readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, Readline will use the shorter but complete key sequence. Readline uses this value to determine whether or not input is available on the current input source (rl_instream by default). The value is specified in milliseconds, so a value of 1000 means that Readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, Readline will wait until another key is pressed to decide which key sequence to complete. The default value is 500.

    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', causes Readline to display an asterisk (`*') at the start of history lines which have been modified. This variable is `off' by default.

    mark-symlinked-directories
    If set to `on', completed names which are symbolic links to directories have a slash appended (subject to the value of mark-directories). The default is `off'.

    match-hidden-files
    This variable, when set to `on', causes Readline to match files whose names begin with a `.' (hidden files) when performing filename completion. If set to `off', the leading `.' must be supplied by the user in the filename to be completed. This variable is `on' by default.

    menu-complete-display-prefix
    If set to `on', menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. The default is `off'.

    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', but Readline will set it to `on' if the locale contains eight-bit characters.

    page-completions
    If set to `on', Readline uses an internal more-like pager to display a screenful of possible completions at a time. This variable is `on' by default.

    print-completions-horizontally
    If set to `on', Readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. The default is `off'.

    revert-all-at-newline
    If set to `on', Readline will undo all changes to history lines before returning when accept-line is executed. By default, history lines may be modified and retain individual undo lists across calls to readline. 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'.

    show-all-if-unmodified
    This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to `on', words which have more than one possible completion without any possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. The default value is `off'.

    show-mode-in-prompt
    If set to `on', add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable (e.g., emacs-mode-string). The default value is `off'.

    skip-completed-text
    If set to `on', this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If enabled, readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. For instance, if this is enabled, attempting completion when the cursor is after the `e' in `Makefile' will result in `Makefile' rather than `Makefilefile', assuming there is a single possible completion. The default value is `off'.

    vi-cmd-mode-string
    If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the `\1' and `\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is `(cmd)'.

    vi-ins-mode-string
    If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the `\1' and `\2' escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is `(ins)'.

    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 need to find the name of the command that you want to change. The following sections contain tables of the command name, the default keybinding, if any, and a short description of what the command does.

    Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, a colon, and then the name of the command. There can be no space between the key name and the colon -- that will be interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable.

    In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a macro).

    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 example above, C-u is bound to the function universal-argument, M-DEL is bound to the function backward-kill-word, 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).

    A number of symbolic character names are recognized while processing this key binding syntax: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.

    "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 again 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 GNU Emacs style escape sequences are available when specifying key sequences:

    \C-
    control prefix
    \M-
    meta prefix
    \e
    an escape character
    \\
    backslash
    \"
    ", a double quotation mark
    \'
    ', a single quote or apostrophe

    In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available:

    \a
    alert (bell)
    \b
    backspace
    \d
    delete
    \f
    form feed
    \n
    newline
    \r
    carriage return
    \t
    horizontal tab
    \v
    vertical tab
    \nnn
    the eight-bit character whose value is the octal value nnn (one to three digits)
    \xHH
    the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)

    When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a function name. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other character in the macro text, including `"' and `''. For example, the following binding will make `C-x \' insert a single `\' into the line:
     
    "\C-x\\": "\\"
    


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.3.2 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 four 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, after any comparison operator, extends to the end of the line; unless otherwise noted, 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 both 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.

    version
    The version test may be used to perform comparisons against specific Readline versions. The version expands to the current Readline version. The set of comparison operators includes `=' (and `=='), `!=', `<=', `>=', `<', and `>'. The version number supplied on the right side of the operator consists of a major version number, an optional decimal point, and an optional minor version (e.g., `7.1'). If the minor version is omitted, it is assumed to be `0'. The operator may be separated from the string version and from the version number argument by whitespace. The following example sets a variable if the Readline version being used is 7.0 or newer:
     
    $if version >= 7.0
    set show-mode-in-prompt on
    $endif
    

    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 a particular value. 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
    

    variable
    The variable construct provides simple equality tests for Readline variables and values. The permitted comparison operators are `=', `==', and `!='. The variable name must be separated from the comparison operator by whitespace; the operator may be separated from the value on the right hand side by whitespace. Both string and boolean variables may be tested. Boolean variables must be tested against the values on and off. The following example is equivalent to the mode=emacs test described above:
     
    $if editing-mode == emacs
    set show-mode-in-prompt on
    $endif
    

    $endif
    This command, as seen in the previous example, terminates an $if command.

    $else
    Commands in this branch of the $if directive are executed if the test fails.

    $include
    This directive takes a single filename as an argument and reads commands and bindings from that file. For example, the following directive reads from `/etc/inputrc':
     
    $include /etc/inputrc
    


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.3.3 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.
    #
    # First, include any system-wide bindings and variable
    # assignments from /etc/Inputrc
    $include /etc/Inputrc
    
    #
    # 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
    


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4 Bindable Readline Commands

    1.4.1 Commands For Moving  Moving about the line.
    1.4.2 Commands For Manipulating The History  Getting at previous lines.
    1.4.3 Commands For Changing Text  Commands for changing text.
    1.4.4 Killing And Yanking  Commands for killing and yanking.
    1.4.5 Specifying Numeric Arguments  Specifying numeric arguments, repeat counts.
    1.4.6 Letting Readline Type For You  Getting Readline to do the typing for you.
    1.4.7 Keyboard Macros  Saving and re-executing typed characters
    1.4.8 Some Miscellaneous Commands  Other miscellaneous commands.

    This section describes Readline commands that may be bound to key sequences. Command names without an accompanying key sequence are unbound by default.

    In the following descriptions, point refers to the current cursor position, and mark refers to a cursor position saved by the set-mark command. The text between the point and mark is referred to as the region.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.1 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 the current or previous word. Words are composed of letters and digits.

    previous-screen-line ()
    Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width.

    next-screen-line ()
    Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current Readline line does not take up more than one physical line or if the length of the current Readline line is not greater than the length of the prompt plus the screen width.

    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.2 Commands For Manipulating The History

    accept-line (Newline or Return)
    Accept the line regardless of where the cursor is. If this line is non-empty, it may be added to the history list for future recall with add_history(). If this line is a modified history line, the history line is restored to its original state.

    previous-history (C-p)
    Move `back' through the history list, fetching the previous command.

    next-history (C-n)
    Move `forward' through the history list, fetching the next command.

    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 currently being entered.

    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 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. The search string may match anywhere in a history line.

    non-incremental-forward-search-history (M-n)
    Search forward starting at the current line and moving `down' through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line.

    history-search-forward ()
    Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. 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. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound.

    history-substring-search-forward ()
    Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound.

    history-substring-search-backward ()
    Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. 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) at point. 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. Once the argument n is computed, the argument is extracted as if the `!n' history expansion had been specified.

    yank-last-arg (M-. or M-_)
    Insert last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly like yank-nth-arg. Successive calls to yank-last-arg move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, as if the `!$' history expansion had been specified.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.3 Commands For Changing Text

    end-of-file (usually C-d)
    The character indicating end-of-file as set, for example, by stty. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline interprets it as the end of input and returns EOF.

    delete-char (C-d)
    Delete the character at point. If this function is bound to the same character as the tty EOF character, as C-d commonly is, see above for the effects.

    backward-delete-char (Rubout)
    Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them.

    forward-backward-delete-char ()
    Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key.

    quoted-insert (C-q or C-v)
    Add the next character typed 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.

    bracketed-paste-begin ()
    This function is intended to be bound to the "bracketed paste" escape sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters are inserted as if each one was bound to self-insert instead of executing any editing commands.

    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 arguments have no effect.

    transpose-words (M-t)
    Drag the word before point past the word after point, moving point past that word as well. If the insertion point is at the end of the line, this transposes the last two words on the line.

    upcase-word (M-u)
    Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor.

    downcase-word (M-l)
    Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor.

    capitalize-word (M-c)
    Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor.

    overwrite-mode ()
    Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only emacs mode; vi mode does overwrite differently. Each call to readline() starts in insert mode.

    In overwrite mode, characters bound to self-insert replace the text at point rather than pushing the text to the right. Characters bound to backward-delete-char replace the character before point with a space.

    By default, this command is unbound.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.4 Killing And Yanking

    kill-line (C-k)
    Kill the text from point to the end of the line.

    backward-kill-line (C-x Rubout)
    Kill backward from the cursor to the beginning of the current line.

    unix-line-discard (C-u)
    Kill backward from the cursor to the beginning of the current line.

    kill-whole-line ()
    Kill all characters on the current line, no matter where point is. By default, this is unbound.

    kill-word (M-d)
    Kill from point 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 point. Word boundaries are the same as backward-word.

    unix-word-rubout (C-w)
    Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring.

    unix-filename-rubout ()
    Kill the word behind point, using white space and the slash character as the word boundaries. 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 in the current region. By default, this command is unbound.

    copy-region-as-kill ()
    Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound.

    copy-backward-word ()
    Copy the word before point to the kill buffer. The word boundaries are the same as backward-word. By default, this command is unbound.

    copy-forward-word ()
    Copy the word following point to the kill buffer. The word boundaries are the same as forward-word. By default, this command is unbound.

    yank (C-y)
    Yank the top of the kill ring into the buffer at point.

    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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.5 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 nor 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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.6 Letting Readline Type For You

    complete (TAB)
    Attempt to perform completion on the text before point. The actual completion performed is application-specific. The default is filename completion.

    possible-completions (M-?)
    List the possible completions of the text before point. When displaying completions, Readline sets the number of columns used for display to the value of completion-display-width, the value of the environment variable COLUMNS, or the screen width, in that order.

    insert-completions (M-*)
    Insert all completions of the text before point that would have been generated by possible-completions.

    menu-complete ()
    Similar to complete, but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of menu-complete steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of bell-style) and the original text is restored. An argument of n moves n positions forward in the list of matches; a negative argument may be used to move backward through the list. This command is intended to be bound to TAB, but is unbound by default.

    menu-complete-backward ()
    Identical to menu-complete, but moves backward through the list of possible completions, as if menu-complete had been given a negative argument.

    delete-char-or-list ()
    Deletes the character under the cursor if not at the beginning or end of the line (like delete-char). If at the end of the line, behaves identically to possible-completions. This command is unbound by default.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

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

    print-last-kbd-macro ()
    Print the last keboard macro defined in a format suitable for the inputrc file.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.4.8 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-lowercase-version (M-A, M-B, M-x, ...)
    If the metafied character x is upper case, run the command that is bound to the corresponding metafied lower case character. The behavior is undefined if x is already lower case.

    prefix-meta (ESC)
    Metafy the next character typed. This is for keyboards without a meta key. Typing `ESC f' is equivalent to typing M-f.

    undo (C-_ or 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 executing 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 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.

    skip-csi-sequence ()
    Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is bound to "\e[", keys producing such sequences will have no effect unless explicitly bound to a readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[.

    insert-comment (M-#)
    Without a numeric argument, the value of the comment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value of comment-begin, the value is inserted, otherwise the characters in comment-begin are deleted from the beginning of the line. In either case, 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 output. 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.

    emacs-editing-mode (C-e)
    When in vi command mode, this causes a switch to emacs editing mode.

    vi-editing-mode (M-C-j)
    When in emacs editing mode, this causes a switch to vi editing mode.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    1.5 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 standard.

    In order to switch interactively between emacs and vi editing modes, use the command M-C-j (bound to emacs-editing-mode when in vi mode and to vi-editing-mode in emacs 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.


    [ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

    A. GNU Free Documentation License

    Version 1.3, 3 November 2008

     
    Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
    http://fsf.org/
    
    Everyone is permitted to copy and distribute verbatim copies
    of this license document, but changing it is not allowed.
    

    1. PREAMBLE

      The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

      This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

      We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

    2. APPLICABILITY AND DEFINITIONS

      This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

      A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

      A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

      The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

      The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

      A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

      Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

      The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

      The "publisher" means any person or entity that distributes copies of the Document to the public.

      A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

      The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

    3. VERBATIM COPYING

      You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

      You may also lend copies, under the same conditions stated above, and you may publicly display copies.

    4. COPYING IN QUANTITY

      If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

      If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

      If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

      It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

    5. MODIFICATIONS

      You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

      1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

      2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

      3. State on the Title page the name of the publisher of the Modified Version, as the publisher.

      4. Preserve all the copyright notices of the Document.

      5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

      6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

      7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

      8. Include an unaltered copy of this License.

      9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

      10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

      11. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

      12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

      13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

      14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

      15. Preserve any Warranty Disclaimers.

      If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

      You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

      You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

      The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

    6. COMBINING DOCUMENTS

      You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

      The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

      In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements."

    7. COLLECTIONS OF DOCUMENTS

      You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

      You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

    8. AGGREGATION WITH INDEPENDENT WORKS

      A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

      If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

    9. TRANSLATION

      Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

      If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

    10. TERMINATION

      You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.

      However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

      Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

      Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.

    11. FUTURE REVISIONS OF THIS LICENSE

      The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

      Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.

    12. RELICENSING

      "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.

      "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.

      "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.

      An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.

      The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.

    ADDENDUM: How to use this License for your documents

    To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

     
      Copyright (C)  year  your name.
      Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.3
      or any later version published by the Free Software Foundation;
      with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
      Texts.  A copy of the license is included in the section entitled ``GNU
      Free Documentation License''.
    

    If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:

     
        with the Invariant Sections being list their titles, with
        the Front-Cover Texts being list, and with the Back-Cover Texts
        being list.
    

    If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

    If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.


    [Top] [Contents] [Index] [ ? ]

    Table of Contents


    [Top] [Contents] [Index] [ ? ]

    Short Table of Contents

    1. Command Line Editing
    A. GNU Free Documentation License

    [Top] [Contents] [Index] [ ? ]

    About this document

    This document was generated by chet on December, 18 2018 using texi2html

    The buttons in the navigation panels have the following meaning:

    Button Name Go to From 1.2.3 go to
    [ < ] Back previous section in reading order 1.2.2
    [ > ] Forward next section in reading order 1.2.4
    [ << ] FastBack previous or up-and-previous section 1.1
    [ Up ] Up up section 1.2
    [ >> ] FastForward next or up-and-next section 1.3
    [Top] Top cover (top) of document  
    [Contents] Contents table of contents  
    [Index] Index concept index  
    [ ? ] About this page  

    where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:
    • 1. Section One
      • 1.1 Subsection One-One
        • ...
      • 1.2 Subsection One-Two
        • 1.2.1 Subsubsection One-Two-One
        • 1.2.2 Subsubsection One-Two-Two
        • 1.2.3 Subsubsection One-Two-Three     <== Current Position
        • 1.2.4 Subsubsection One-Two-Four
      • 1.3 Subsection One-Three
        • ...
      • 1.4 Subsection One-Four


    This document was generated by chet on December, 18 2018 using texi2html readline-8.0/support/config.sub000775 000436 000024 00000075306 13373624744 016756 0ustar00chetstaff000000 000000 #! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2018 Free Software Foundation, Inc. timestamp='2018-08-29' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type IFS="-" read -r field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 os=$maybe_os ;; android-linux) basic_machine=$field1-unknown os=linux-android ;; *) basic_machine=$field1-$field2 os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 os= ;; *) basic_machine=$field1 os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc os=bsd ;; a29khif) basic_machine=a29k-amd os=udi ;; adobe68k) basic_machine=m68010-adobe os=scout ;; alliant) basic_machine=fx80-alliant os= ;; altos | altos3068) basic_machine=m68k-altos os= ;; am29k) basic_machine=a29k-none os=bsd ;; amdahl) basic_machine=580-amdahl os=sysv ;; amiga) basic_machine=m68k-unknown os= ;; amigaos | amigados) basic_machine=m68k-unknown os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=sysv4 ;; apollo68) basic_machine=m68k-apollo os=sysv ;; apollo68bsd) basic_machine=m68k-apollo os=bsd ;; aros) basic_machine=i386-pc os=aros ;; aux) basic_machine=m68k-apple os=aux ;; balance) basic_machine=ns32k-sequent os=dynix ;; blackfin) basic_machine=bfin-unknown os=linux ;; cegcc) basic_machine=arm-unknown os=cegcc ;; convex-c1) basic_machine=c1-convex os=bsd ;; convex-c2) basic_machine=c2-convex os=bsd ;; convex-c32) basic_machine=c32-convex os=bsd ;; convex-c34) basic_machine=c34-convex os=bsd ;; convex-c38) basic_machine=c38-convex os=bsd ;; cray) basic_machine=j90-cray os=unicos ;; crds | unos) basic_machine=m68k-crds os= ;; da30) basic_machine=m68k-da30 os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec os= ;; delta88) basic_machine=m88k-motorola os=sysv3 ;; dicos) basic_machine=i686-pc os=dicos ;; djgpp) basic_machine=i586-pc os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=ose ;; gmicro) basic_machine=tron-gmicro os=sysv ;; go32) basic_machine=i386-pc os=go32 ;; h8300hms) basic_machine=h8300-hitachi os=hms ;; h8300xray) basic_machine=h8300-hitachi os=xray ;; h8500hms) basic_machine=h8500-hitachi os=hms ;; harris) basic_machine=m88k-harris os=sysv3 ;; hp300) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=bsd ;; hp300hpux) basic_machine=m68k-hp os=hpux ;; hppaosf) basic_machine=hppa1.1-hp os=osf ;; hppro) basic_machine=hppa1.1-hp os=proelf ;; i386mach) basic_machine=i386-mach os=mach ;; vsta) basic_machine=i386-pc os=vsta ;; isi68 | isi) basic_machine=m68k-isi os=sysv ;; m68knommu) basic_machine=m68k-unknown os=linux ;; magnum | m3230) basic_machine=mips-mips os=sysv ;; merlin) basic_machine=ns32k-utek os=sysv ;; mingw64) basic_machine=x86_64-pc os=mingw64 ;; mingw32) basic_machine=i686-pc os=mingw32 ;; mingw32ce) basic_machine=arm-unknown os=mingw32ce ;; monitor) basic_machine=m68k-rom68k os=coff ;; morphos) basic_machine=powerpc-unknown os=morphos ;; moxiebox) basic_machine=moxie-unknown os=moxiebox ;; msdos) basic_machine=i386-pc os=msdos ;; msys) basic_machine=i686-pc os=msys ;; mvs) basic_machine=i370-ibm os=mvs ;; nacl) basic_machine=le32-unknown os=nacl ;; ncr3000) basic_machine=i486-ncr os=sysv4 ;; netbsd386) basic_machine=i386-pc os=netbsd ;; netwinder) basic_machine=armv4l-rebel os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=newsos ;; news1000) basic_machine=m68030-sony os=newsos ;; necv70) basic_machine=v70-nec os=sysv ;; nh3000) basic_machine=m68k-harris os=cxux ;; nh[45]000) basic_machine=m88k-harris os=cxux ;; nindy960) basic_machine=i960-intel os=nindy ;; mon960) basic_machine=i960-intel os=mon960 ;; nonstopux) basic_machine=mips-compaq os=nonstopux ;; os400) basic_machine=powerpc-ibm os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=ose ;; os68k) basic_machine=m68k-none os=os68k ;; paragon) basic_machine=i860-intel os=osf ;; parisc) basic_machine=hppa-unknown os=linux ;; pw32) basic_machine=i586-unknown os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=rdos ;; rdos32) basic_machine=i386-pc os=rdos ;; rom68k) basic_machine=m68k-rom68k os=coff ;; sa29200) basic_machine=a29k-amd os=udi ;; sei) basic_machine=mips-sei os=seiux ;; sequent) basic_machine=i386-sequent os= ;; sps7) basic_machine=m68k-bull os=sysv2 ;; st2000) basic_machine=m68k-tandem os= ;; stratus) basic_machine=i860-stratus os=sysv4 ;; sun2) basic_machine=m68000-sun os= ;; sun2os3) basic_machine=m68000-sun os=sunos3 ;; sun2os4) basic_machine=m68000-sun os=sunos4 ;; sun3) basic_machine=m68k-sun os= ;; sun3os3) basic_machine=m68k-sun os=sunos3 ;; sun3os4) basic_machine=m68k-sun os=sunos4 ;; sun4) basic_machine=sparc-sun os= ;; sun4os3) basic_machine=sparc-sun os=sunos3 ;; sun4os4) basic_machine=sparc-sun os=sunos4 ;; sun4sol2) basic_machine=sparc-sun os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun os= ;; sv1) basic_machine=sv1-cray os=unicos ;; symmetry) basic_machine=i386-sequent os=dynix ;; t3e) basic_machine=alphaev5-cray os=unicos ;; t90) basic_machine=t90-cray os=unicos ;; toad1) basic_machine=pdp10-xkl os=tops20 ;; tpf) basic_machine=s390x-ibm os=tpf ;; udi29k) basic_machine=a29k-amd os=udi ;; ultra3) basic_machine=a29k-nyu os=sym1 ;; v810 | necv810) basic_machine=v810-nec os=none ;; vaxv) basic_machine=vax-dec os=sysv ;; vms) basic_machine=vax-dec os=vms ;; vxworks960) basic_machine=i960-wrs os=vxworks ;; vxworks68) basic_machine=m68k-wrs os=vxworks ;; vxworks29k) basic_machine=a29k-wrs os=vxworks ;; xbox) basic_machine=i686-pc os=mingw32 ;; ymp) basic_machine=ymp-cray os=unicos ;; *) basic_machine=$1 os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi os=${os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray os=${os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $os in irix*) ;; *) os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony os=newsos ;; next | m*-next) cpu=m68k vendor=next case $os in nextstep* ) ;; ns2*) os=nextstep2 ;; *) os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde os=${os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) IFS="-" read -r cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x$os != x ] then case $os in # First match some system type aliases that might get confused # with valid system types. # solaris* is a basic system type, with this one exception. auroraux) os=auroraux ;; bluegene*) os=cnk ;; solaris1 | solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; solaris) os=solaris2 ;; unixware*) os=sysv4.2uw ;; gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # es1800 is here to avoid being matched by es* (a different OS) es1800*) os=ose ;; # Some version numbers need modification chorusos*) os=chorusos ;; isc) os=isc2.2 ;; sco6) os=sco5v6 ;; sco5) os=sco3.2v5 ;; sco4) os=sco3.2v4 ;; sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` ;; sco3.2v[4-9]* | sco5v6*) # Don't forget version if it is 3.2v4 or newer. ;; scout) # Don't match below ;; sco*) os=sco3.2v2 ;; psos*) os=psos ;; # Now accept the basic system types. # The portable systems comes first. # Each alternative MUST end in a * to match a version number. # sysv* is not here because it comes later, after sysvr4. gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ | sym* | kopensolaris* | plan9* \ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ | aos* | aros* | cloudabi* | sortix* \ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ | knetbsd* | mirbsd* | netbsd* \ | bitrig* | openbsd* | solidbsd* | libertybsd* \ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ | chorusrdb* | cegcc* | glidix* \ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ | linux-newlib* | linux-musl* | linux-uclibc* \ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ | interix* | uwin* | mks* | rhapsody* | darwin* \ | openstep* | oskit* | conix* | pw32* | nonstopux* \ | storm-chaos* | tops10* | tenex* | tops20* | its* \ | os2* | vos* | palmos* | uclinux* | nucleus* \ | morphos* | superux* | rtmk* | windiss* \ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | midnightbsd*) # Remember, each alternative MUST END IN *, to match a version number. ;; qnx*) case $cpu in x86 | i*86) ;; *) os=nto-$os ;; esac ;; hiux*) os=hiuxwe2 ;; nto-qnx*) ;; nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; sim | xray | os68k* | v88r* \ | windows* | osx | abug | netware* | os9* \ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) ;; linux-dietlibc) os=linux-dietlibc ;; linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; lynx*178) os=lynxos178 ;; lynx*5) os=lynxos5 ;; lynx*) os=lynxos ;; mac*) os=`echo "$os" | sed -e 's|mac|macos|'` ;; opened*) os=openedition ;; os400*) os=os400 ;; sunos5*) os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; sunos6*) os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; wince*) os=wince ;; utek*) os=bsd ;; dynix*) os=bsd ;; acis*) os=aos ;; atheos*) os=atheos ;; syllable*) os=syllable ;; 386bsd) os=bsd ;; ctix* | uts*) os=sysv ;; nova*) os=rtmk-nova ;; ns2) os=nextstep2 ;; nsk*) os=nsk ;; # Preserve the version number of sinix5. sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; sinix*) os=sysv4 ;; tpf*) os=tpf ;; triton*) os=sysv3 ;; oss*) os=sysv3 ;; svr4*) os=sysv4 ;; svr3) os=sysv3 ;; sysvr4) os=sysv4 ;; # This must come after sysvr4. sysv*) ;; ose*) os=ose ;; *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) os=mint ;; zvmoe) os=zvmoe ;; dicos*) os=dicos ;; pikeos*) # Until real need of OS specific support for # particular features comes up, bare metal # configurations are quite functional. case $cpu in arm*) os=eabi ;; *) os=elf ;; esac ;; nacl*) ;; ios) ;; none) ;; *-eabi) ;; *) echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $cpu-$vendor in score-*) os=elf ;; spu-*) os=elf ;; *-acorn) os=riscix1.2 ;; arm*-rebel) os=linux ;; arm*-semi) os=aout ;; c4x-* | tic4x-*) os=coff ;; c8051-*) os=elf ;; clipper-intergraph) os=clix ;; hexagon-*) os=elf ;; tic54x-*) os=coff ;; tic55x-*) os=coff ;; tic6x-*) os=coff ;; # This must come before the *-dec entry. pdp10-*) os=tops20 ;; pdp11-*) os=none ;; *-dec | vax-*) os=ultrix4.2 ;; m68*-apollo) os=domain ;; i386-sun) os=sunos4.0.2 ;; m68000-sun) os=sunos3 ;; m68*-cisco) os=aout ;; mep-*) os=elf ;; mips*-cisco) os=elf ;; mips*-*) os=elf ;; or32-*) os=coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=sysv3 ;; sparc-* | *-sun) os=sunos4.1.1 ;; pru-*) os=elf ;; *-be) os=beos ;; *-ibm) os=aix ;; *-knuth) os=mmixware ;; *-wec) os=proelf ;; *-winbond) os=proelf ;; *-oki) os=proelf ;; *-hp) os=hpux ;; *-hitachi) os=hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=sysv ;; *-cbm) os=amigaos ;; *-dg) os=dgux ;; *-dolphin) os=sysv3 ;; m68k-ccur) os=rtu ;; m88k-omron*) os=luna ;; *-next) os=nextstep ;; *-sequent) os=ptx ;; *-crds) os=unos ;; *-ns) os=genix ;; i370-*) os=mvs ;; *-gould) os=sysv ;; *-highlevel) os=bsd ;; *-encore) os=bsd ;; *-sgi) os=irix ;; *-siemens) os=sysv4 ;; *-masscomp) os=rtu ;; f30[01]-fujitsu | f700-fujitsu) os=uxpv ;; *-rom68k) os=coff ;; *-*bug) os=coff ;; *-apple) os=macos ;; *-atari*) os=mint ;; *-wrs) os=vxworks ;; *) os=none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $os in riscix*) vendor=acorn ;; sunos*) vendor=sun ;; cnk*|-aix*) vendor=ibm ;; beos*) vendor=be ;; hpux*) vendor=hp ;; mpeix*) vendor=hp ;; hiux*) vendor=hitachi ;; unos*) vendor=crds ;; dgux*) vendor=dg ;; luna*) vendor=omron ;; genix*) vendor=ns ;; clix*) vendor=intergraph ;; mvs* | opened*) vendor=ibm ;; os400*) vendor=ibm ;; ptx*) vendor=sequent ;; tpf*) vendor=ibm ;; vxsim* | vxworks* | windiss*) vendor=wrs ;; aux*) vendor=apple ;; hms*) vendor=hitachi ;; mpw* | macos*) vendor=apple ;; *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) vendor=atari ;; vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: readline-8.0/support/mkinstalldirs000555 000436 000000 00000003704 07765404276 017565 0ustar00chetwheel000000 000000 #! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain errstatus=0 dirmode="" usage="\ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" 1>&2 exit 0 ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac case $dirmode in '') if mkdir -p -- . 2>/dev/null; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" fi ;; *) if mkdir -m "$dirmode" -p -- . 2>/dev/null; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" fi ;; esac for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr="" chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp="$pathcomp/" done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # End: # mkinstalldirs ends here readline-8.0/support/shlib-install000755 000436 000000 00000012014 13273062003 017421 0ustar00chetwheel000000 000000 #! /bin/sh # # shlib-install - install a shared library and do any necessary host-specific # post-installation configuration (like ldconfig) # # usage: shlib-install [-D] -O host_os [-V host_vendor] -d installation-dir [-b bin-dir] -i install-prog [-U] library # # Chet Ramey # chet@po.cwru.edu # # defaults # INSTALLDIR=/usr/local/lib LDCONFIG=ldconfig PROGNAME=`basename $0` USAGE="$PROGNAME [-D] -O host_os [-V host_vendor] -d installation-dir [-b bin-dir] -i install-prog [-U] library" # process options while [ $# -gt 0 ]; do case "$1" in -O) shift; host_os="$1"; shift ;; -V) shift; host_vendor="$1"; shift ;; -d) shift; INSTALLDIR="$1"; shift ;; -b) shift; BINDIR="$1" ; shift ;; -i) shift; INSTALLPROG="$1" ; shift ;; -D) echo=echo ; shift ;; -U) uninstall=true ; shift ;; -*) echo "$USAGE" >&2 ; exit 2;; *) break ;; esac done # set install target name LIBNAME="$1" if [ -z "$LIBNAME" ]; then echo "$USAGE" >&2 exit 2 fi OLDSUFF=old MV=mv RM="rm -f" LN="ln -s" # pre-install if [ -z "$uninstall" ]; then ${echo} $RM ${INSTALLDIR}/${LIBNAME}.${OLDSUFF} if [ -f "$INSTALLDIR/$LIBNAME" ]; then ${echo} $MV $INSTALLDIR/$LIBNAME ${INSTALLDIR}/${LIBNAME}.${OLDSUFF} fi fi # install/uninstall if [ -z "$uninstall" ] ; then ${echo} eval ${INSTALLPROG} $LIBNAME ${INSTALLDIR}/${LIBNAME} else ${echo} ${RM} ${INSTALLDIR}/${LIBNAME} fi # post-install/uninstall # HP-UX and Darwin/MacOS X require that a shared library have execute permission # Linux does, too, and ldd warns about it. Solaris doesn't seem to mind, # but ldd still warns about it. # Cygwin installs both a dll (which must go in $BINDIR) and an implicit # link library (in $libdir) case "$host_os" in hpux*|darwin*|macosx*|linux*|solaris2*) if [ -z "$uninstall" ]; then chmod 755 ${INSTALLDIR}/${LIBNAME} fi ;; cygwin*|mingw*) IMPLIBNAME=`echo ${LIBNAME} \ | sed -e 's,^cyg,lib,' -e 's,[0-9]*.dll$,.dll.a,'` if [ -z "$uninstall" ]; then ${echo} $RM ${BINDIR}/${LIBNAME}.${OLDSUFF} if [ -f "$BINDIR/$LIBNAME" ]; then ${echo} $MV $BINDIR/$LIBNAME $BINDIR/$LIBNAME.$OLDSUFF fi ${echo} $MV ${INSTALLDIR}/${LIBNAME} ${BINDIR}/${LIBNAME} ${echo} chmod a+x ${BINDIR}/${LIBNAME} ${echo} eval ${INSTALLPROG} ${LIBNAME}.a \ ${INSTALLDIR}/${IMPLIBNAME} else ${echo} ${RM} ${BINDIR}/${LIBNAME} ${echo} ${RM} ${INSTALLDIR}/${IMPLIBNAME} fi ;; *) ;; esac case "$LIBNAME" in *.*.[0-9].[0-9]) # libname.so.M.N LINK2=`echo $LIBNAME | sed 's:\(.*\..*\.[0-9]\)\.[0-9]:\1:'` # libname.so.M LINK1=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]\.[0-9]:\1:'` # libname.so ;; *.*.[0-9]) # libname.so.M LINK1=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]:\1:'` # libname.so ;; *.[0-9]) # libname.M LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]:\1:'` # libname ;; *.[0-9].[0-9].dylib) # libname.M.N.dylib LINK2=`echo $LIBNAME | sed 's:\(.*\.[0-9]\)\.[0-9]:\1:'` # libname.M.dylib LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]\.[0-9]:\1:'` # libname.dylib esac INSTALL_LINK1='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK1' INSTALL_LINK2='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK2' # # Create symlinks to the installed library. This section is incomplete. # case "$host_os-$host_vendor" in *linux*|freebsd*-gentoo) # libname.so.M -> libname.so.M.N ${echo} ${RM} ${INSTALLDIR}/$LINK2 if [ -z "$uninstall" ]; then eval $INSTALL_LINK2 fi # libname.so -> libname.so.M ${echo} ${RM} ${INSTALLDIR}/$LINK1 if [ -z "$uninstall" ]; then ${echo} cd $INSTALLDIR && ${echo} ${LN} $LINK2 $LINK1 fi ;; bsdi4*|*gnu*|darwin*|macosx*|netbsd*|mirbsd*) # libname.so.M -> libname.so.M.N ${echo} ${RM} ${INSTALLDIR}/$LINK2 if [ -z "$uninstall" ]; then eval $INSTALL_LINK2 fi # libname.so -> libname.so.M.N ${echo} ${RM} ${INSTALLDIR}/$LINK1 if [ -z "$uninstall" ]; then eval $INSTALL_LINK1 fi ;; solaris2*|aix4.[2-9]*|aix[5-9]*|osf*|irix[56]*|sysv[45]*|dgux*|interix*) # libname.so -> libname.so.M ${echo} ${RM} ${INSTALLDIR}/$LINK1 if [ -z "$uninstall" ]; then eval $INSTALL_LINK1 fi ;; # FreeBSD 3.x and above can have either a.out or ELF shared libraries freebsd3*|freebsdaout*) if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then # libname.so -> libname.so.M ${echo} ${RM} ${INSTALLDIR}/$LINK1 if [ -z "$uninstall" ]; then eval $INSTALL_LINK1 fi else # libname.so.M -> libname.so.M.N ${echo} ${RM} ${INSTALLDIR}/$LINK2 if [ -z "$uninstall" ]; then eval $INSTALL_LINK2 fi # libname.so -> libname.so.M.N ${echo} ${RM} ${INSTALLDIR}/$LINK1 if [ -z "$uninstall" ]; then eval $INSTALL_LINK1 fi fi ;; freebsd[4-9]*|freebsd1[0-9]*|freebsdelf*|dragonfly*) # libname.so -> libname.so.M ${echo} ${RM} ${INSTALLDIR}/$LINK1 if [ -z "$uninstall" ]; then eval $INSTALL_LINK1 fi ;; hpux1*) # libname.sl -> libname.M ${echo} ${RM} ${INSTALLDIR}/$LINK1.sl if [ -z "$uninstall" ]; then eval $INSTALL_LINK1 fi ;; cygwin*|mingw*) # Links to .dlls don't work. Hence shobj-conf used DLLVERSION.dll # instead of so.SHLIB_MAJOR.SHLIB_MINOR. The postinstall above # took care of everything else. ;; *) ;; esac exit 0 readline-8.0/support/mkdist000775 000436 000000 00000005145 12116703576 016174 0ustar00chetwheel000000 000000 #! /bin/bash - # # mkdist - make a distribution directory from a master manifest file # # usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version # # SRCDIR defaults to src # MANIFEST defaults to $SRCDIR/MANIFEST # # Chet Ramey # chet@po.cwru.edu # Copyright (C) 1996-2002 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # SRCDIR=src ROOTNAME=bash usage() { echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version 1>&2 exit 2 } vmsg() { if [ -n "$verbose" ]; then echo mkdist: "$@" fi } while getopts m:s:r:tv name do case $name in m) MANIFEST=$OPTARG ;; s) SRCDIR=$OPTARG ;; r) ROOTNAME=$OPTARG ;; t) maketar=yes ;; v) verbose=yes ;; ?) usage ;; esac done : ${MANIFEST:=$SRCDIR/MANIFEST} vmsg using $MANIFEST shift $(( $OPTIND - 1 )) if [ $# -lt 1 ]; then usage fi version=$1 newdir=${ROOTNAME}-$version tarfile=${newdir}.tar vmsg creating distribution for $ROOTNAME version $version in $newdir if [ ! -d $newdir ]; then mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; } fi dirmode=755 filmode=644 while read fname type mode do [ -z "$fname" ] && continue case "$fname" in \#*) continue ;; esac case "$type" in d) mkdir $newdir/$fname ;; f) cp -p $SRCDIR/$fname $newdir/$fname ;; s) ln -s $mode $newdir/$fname ; mode= ;; # symlink l) ln $mode $newdir/$fname ; mode= ;; # hard link *) echo "unknown file type $type" 1>&2 ;; esac if [ -n "$mode" ]; then chmod $mode $newdir/$fname fi done < $MANIFEST # cut off the `-alpha' in something like `2.0-alpha', leaving just the # numeric version #version=${version%%-*} #case "$version" in #*.*.*) vers=${version%.*} ;; #*.*) vers=${version} ;; #esac #echo $vers > $newdir/.distribution #case "$version" in #*.*.*) plevel=${version##*.} ;; #*) plevel=0 ;; #esac #[ -z "$plevel" ] && plevel=0 #echo ${plevel} > $newdir/.patchlevel vmsg $newdir created if [ -n "$maketar" ]; then tar cf ${tarfile} $newdir gzip $tarfile vmsg ${tarfile}.gz created fi exit 0 readline-8.0/support/mkdirs000775 000436 000000 00000002165 11050551141 016152 0ustar00chetwheel000000 000000 #! /bin/sh # # mkdirs - a work-alike for `mkdir -p' # # Chet Ramey # chet@po.cwru.edu # Copyright (C) 1996-2002 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . for dir do test -d "$dir" && continue tomake=$dir while test -n "$dir" ; do # dir=${dir%/*} # dir=`expr "$dir" ':' '\(/.*\)/[^/]*'` if dir=`expr "$dir" ':' '\(.*\)/[^/]*'`; then tomake="$dir $tomake" else dir= fi done for d in $tomake do test -d "$d" && continue echo mkdir "$d" mkdir "$d" done done exit 0 readline-8.0/support/install.sh000755 000436 000000 00000012343 07457107124 016753 0ustar00chetwheel000000 000000 #!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5. # # $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $ # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # This script is compatible with the BSD install script, but was written # from scratch. # # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" tranformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 readline-8.0/support/config.rpath000775 000436 000000 00000044216 13301035537 017255 0ustar00chetwheel000000 000000 #! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2018 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in ecc*) wl='-Wl,' ;; icc* | ifort*) wl='-Wl,' ;; lf95*) wl='-Wl,' ;; nagfor*) wl='-Wl,-Wl,,' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; xl* | bgxl* | bgf* | mpixl*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ F* | *Sun*Fortran*) wl= ;; *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; newsos6) ;; *nto* | *qnx*) ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) wl='-Qoption ld ' ;; *) wl='-Wl,' ;; esac ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; haiku*) ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then : else ld_shlibs=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd2.[01]*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix[4-9]*) library_names_spec='$libname$shrext' ;; amigaos*) case "$host_cpu" in powerpc*) library_names_spec='$libname$shrext' ;; m68k) library_names_spec='$libname.a' ;; esac ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32* | cegcc*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd[23].*) library_names_spec='$libname$shrext$versuffix' ;; freebsd* | dragonfly*) library_names_spec='$libname$shrext' ;; gnu*) library_names_spec='$libname$shrext' ;; haiku*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; *nto* | *qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; tpf*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. # # # defaults # SHOBJ_STATUS=supported SHLIB_STATUS=supported SHOBJ_CC=cc SHOBJ_CFLAGS= SHOBJ_LD= SHOBJ_LDFLAGS= SHOBJ_XLDFLAGS= SHOBJ_LIBS= SHLIB_XLDFLAGS= SHLIB_LIBS= SHLIB_DOT='.' SHLIB_LIBPREF='lib' SHLIB_LIBSUFF='so' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)' SHLIB_DLLVERSION='$(SHLIB_MAJOR)' PROGNAME=`basename $0` USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor" while [ $# -gt 0 ]; do case "$1" in -C) shift; SHOBJ_CC="$1"; shift ;; -c) shift; host_cpu="$1"; shift ;; -o) shift; host_os="$1"; shift ;; -v) shift; host_vendor="$1"; shift ;; *) echo "$USAGE" >&2 ; exit 2;; esac done case "${host_os}-${SHOBJ_CC}-${host_vendor}" in nsk-cc-tandem) SHOBJ_CFLAGS=-Wglobalized case `uname -m` in NSR*) SHOBJ_CFLAGS="${SHOBJ_CFLAGS} -Wcall_shared" # default on TNS/E, needed on TNS/R SHOBJ_LD=/usr/bin/ld # for TNS/R ;; NSE*|NEO*) SHOBJ_LD=/usr/bin/eld ;; esac SHOBJ_LDFLAGS='-shared -bglobalized -unres_symbols ignore' ;; sunos4*-*gcc*) SHOBJ_CFLAGS=-fpic SHOBJ_LD=/usr/bin/ld SHOBJ_LDFLAGS='-assert pure-text' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' ;; sunos4*) SHOBJ_CFLAGS=-pic SHOBJ_LD=/usr/bin/ld SHOBJ_LDFLAGS='-assert pure-text' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' ;; sunos5*-*gcc*|solaris2*-*gcc*) SHOBJ_LD='${CC}' ld_used=`gcc -print-prog-name=ld` if ${ld_used} -V 2>&1 | grep GNU >/dev/null 2>&1; then # This line works for the GNU ld SHOBJ_LDFLAGS='-shared -Wl,-h,$@' # http://sourceware.org/ml/binutils/2001-08/msg00361.html SHOBJ_CFLAGS=-fPIC else # This line works for the Solaris linker in /usr/ccs/bin/ld SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@' SHOBJ_CFLAGS=-fpic fi # SHLIB_XLDFLAGS='-R $(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sunos5*|solaris2*) SHOBJ_CFLAGS='-K pic' SHOBJ_LD=/usr/ccs/bin/ld SHOBJ_LDFLAGS='-G -dy -z text -i -h $@' # SHLIB_XLDFLAGS='-R $(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; # All versions of Linux (including Gentoo/FreeBSD) or the semi-mythical GNU Hurd. linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*-gentoo) SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' ;; freebsd2*) SHOBJ_CFLAGS=-fpic SHOBJ_LD=ld SHOBJ_LDFLAGS='-x -Bshareable' SHLIB_XLDFLAGS='-R$(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' ;; # FreeBSD-3.x ELF freebsd3*|freebsdaout*) SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' else SHOBJ_LDFLAGS='-shared' SHLIB_XLDFLAGS='-R$(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' fi ;; # FreeBSD-4.x and later have only ELF freebsd[4-9]*|freebsd1[0-9]*|freebsdelf*|dragonfly*) SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; # Darwin/MacOS X darwin*) # Common definitions for all darwin/mac os x versions SHOBJ_CFLAGS='-fno-common' SHOBJ_LD='${CC}' SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)' SHLIB_LIBSUFF='dylib' # unused at this time SHLIB_SONAME='$(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF)' case "${host_os}" in # Darwin versions 1, 5, 6, 7 correspond to Mac OS X 10.0, 10.1, 10.2, # and 10.3, respectively. darwin[1-7].*) SHOBJ_STATUS=unsupported SHOBJ_LDFLAGS='-dynamic' SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' ;; # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4 *) case "${host_os}" in darwin[89]*|darwin1[012]*) SHOBJ_ARCHFLAGS='-arch_only `/usr/bin/arch`' ;; *) # Mac OS X 10.9 (Mavericks) and later SHOBJ_ARCHFLAGS= # for 32 and 64bit universal library #SHOBJ_ARCHFLAGS='-arch i386 -arch x86_64' #SHOBJ_CFLAGS=${SHOBJ_CFLAGS}' -arch i386 -arch x86_64' ;; esac SHOBJ_LDFLAGS="-dynamiclib -dynamic -undefined dynamic_lookup ${SHOBJ_ARCHFLAGS}" SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' ;; esac SHLIB_LIBS='-lncurses' # see if -lcurses works on MacOS X 10.1 ;; openbsd*|netbsd*|mirbsd*) SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared' SHLIB_XLDFLAGS='-R$(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' ;; bsdi2*) SHOBJ_CC=shlicc2 SHOBJ_CFLAGS= SHOBJ_LD=ld SHOBJ_LDFLAGS=-r SHOBJ_LIBS=-lc_s.2.1.0 # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in # the ass -- they require changing {/usr/lib,etc}/shlib.map on # each system, and the library creation process is byzantine SHLIB_STATUS=unsupported ;; bsdi3*) SHOBJ_CC=shlicc2 SHOBJ_CFLAGS= SHOBJ_LD=ld SHOBJ_LDFLAGS=-r SHOBJ_LIBS=-lc_s.3.0.0 # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in # the ass -- they require changing {/usr/lib,etc}/shlib.map on # each system, and the library creation process is byzantine SHLIB_STATUS=unsupported ;; bsdi4*) # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked # shared libraries. gcc 2.x is the standard compiler, and the # `normal' gcc options should work as they do in Linux. SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' ;; osf*-*gcc*) # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' SHLIB_XLDFLAGS='-rpath $(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; osf*) SHOBJ_LD=ld SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"' SHLIB_XLDFLAGS='-rpath $(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; aix4.[2-9]*-*gcc*|aix[5-9].*-*gcc*) # lightly tested by jik@cisco.com SHOBJ_CFLAGS=-fpic SHOBJ_LD='ld' SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' SHOBJ_XLDFLAGS='-G' SHLIB_XLDFLAGS='-bM:SRE' SHLIB_LIBS='-lcurses -lc' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; aix4.[2-9]*|aix[5-9].*) SHOBJ_CFLAGS=-K SHOBJ_LD='ld' SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' SHOBJ_XLDFLAGS='-G' SHLIB_XLDFLAGS='-bM:SRE' SHLIB_LIBS='-lcurses -lc' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; # # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface # irix[56]*-*gcc*) SHOBJ_CFLAGS='-fpic' SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; irix[56]*) SHOBJ_CFLAGS='-K PIC' SHOBJ_LD=ld # SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@' # Change from David Kaelbling . If you have problems, # remove the `-no_unresolved' SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@' SHLIB_XLDFLAGS='-rpath $(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; hpux9*-*gcc*) # must use gcc; the bundled cc cannot compile PIC code SHOBJ_CFLAGS='-fpic' SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' SHLIB_LIBSUFF='sl' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; hpux9*) SHOBJ_STATUS=unsupported SHLIB_STATUS=unsupported # If you are using the HP ANSI C compiler, you can uncomment and use # this code (I have not tested it) # SHOBJ_STATUS=supported # SHLIB_STATUS=supported # # SHOBJ_CFLAGS='+z' # SHOBJ_LD='ld' # SHOBJ_LDFLAGS='-b +s' # # SHLIB_XLDFLAGS='+b $(libdir)' # SHLIB_LIBSUFF='sl' # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; hpux10*-*gcc*) # must use gcc; the bundled cc cannot compile PIC code SHOBJ_CFLAGS='-fpic' SHOBJ_LD='${CC}' # if you have problems linking here, moving the `-Wl,+h,$@' from # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s' SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' SHLIB_LIBSUFF='sl' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; hpux10*) SHOBJ_STATUS=unsupported SHLIB_STATUS=unsupported # If you are using the HP ANSI C compiler, you can uncomment and use # this code (I have not tested it) # SHOBJ_STATUS=supported # SHLIB_STATUS=supported # # SHOBJ_CFLAGS='+z' # SHOBJ_LD='ld' # SHOBJ_LDFLAGS='-b +s +h $@' # # SHLIB_XLDFLAGS='+b $(libdir)' # SHLIB_LIBSUFF='sl' # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; hpux11*-*gcc*) # must use gcc; the bundled cc cannot compile PIC code SHOBJ_CFLAGS='-fpic' SHOBJ_LD='${CC}' # SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@' SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@' SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' SHLIB_LIBSUFF='sl' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; hpux11*) SHOBJ_STATUS=unsupported SHLIB_STATUS=unsupported # If you are using the HP ANSI C compiler, you can uncomment and use # this code (I have not tested it) # SHOBJ_STATUS=supported # SHLIB_STATUS=supported # # SHOBJ_CFLAGS='+z' # SHOBJ_LD='ld' # SHOBJ_LDFLAGS='-b +s +h $@' # # SHLIB_XLDFLAGS='+b $(libdir)' # SHLIB_LIBSUFF='sl' # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sysv4*-*gcc*) SHOBJ_CFLAGS=-shared SHOBJ_LDFLAGS='-shared -h $@' SHOBJ_LD='${CC}' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sysv4*) SHOBJ_CFLAGS='-K PIC' SHOBJ_LD=ld SHOBJ_LDFLAGS='-dy -z text -G -h $@' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sco3.2v5*-*gcc*) SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sco3.2v5*) SHOBJ_CFLAGS='-K pic -b elf' SHOBJ_LD=ld SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sysv5uw7*-*gcc*) SHOBJ_CFLAGS='-fpic' SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sysv5uw7*) SHOBJ_CFLAGS='-K PIC' SHOBJ_LD=ld SHOBJ_LDFLAGS='-G -dy -z text -h $@' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sysv5UnixWare*-*gcc*) SHOBJ_CFLAGS=-fpic SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sysv5UnixWare*) SHOBJ_CFLAGS='-K PIC' SHOBJ_LD=ld SHOBJ_LDFLAGS='-G -dy -z text -h $@' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sysv5OpenUNIX*-*gcc*) SHOBJ_CFLAGS=-fpic SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; sysv5OpenUNIX*) SHOBJ_CFLAGS='-K PIC' SHOBJ_LD=ld SHOBJ_LDFLAGS='-G -dy -z text -h $@' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; dgux*-*gcc*) SHOBJ_CFLAGS=-fpic SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; dgux*) SHOBJ_CFLAGS='-K pic' SHOBJ_LD=ld SHOBJ_LDFLAGS='-G -dy -h $@' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; msdos*) SHOBJ_STATUS=unsupported SHLIB_STATUS=unsupported ;; cygwin*) SHOBJ_LD='$(CC)' SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a' SHLIB_LIBPREF='cyg' SHLIB_LIBSUFF='dll' SHLIB_LIBVERSION='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)' SHLIB_LIBS='$(TERMCAP_LIB)' SHLIB_DOT= # For official cygwin releases, DLLVERSION will be defined in the # environment of configure, and will be incremented any time the API # changes in a non-backwards compatible manner. Otherwise, it is just # SHLIB_MAJOR. if [ -n "$DLLVERSION" ] ; then SHLIB_DLLVERSION="$DLLVERSION" fi ;; mingw*) SHOBJ_LD='$(CC)' SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a' SHLIB_LIBSUFF='dll' SHLIB_LIBVERSION='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)' SHLIB_LIBS='$(TERMCAP_LIB)' SHLIB_DOT= # For official cygwin releases, DLLVERSION will be defined in the # environment of configure, and will be incremented any time the API # changes in a non-backwards compatible manner. Otherwise, it is just # SHLIB_MAJOR. if [ -n "$DLLVERSION" ] ; then SHLIB_DLLVERSION="$DLLVERSION" fi ;; # # Rely on correct gcc configuration for everything else # *-*gcc*) SHOBJ_CFLAGS=-fpic SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; *) SHOBJ_STATUS=unsupported SHLIB_STATUS=unsupported ;; esac echo SHOBJ_CC=\'"$SHOBJ_CC"\' echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\' echo SHOBJ_LD=\'"$SHOBJ_LD"\' echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\' echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\' echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\' echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\' echo SHLIB_LIBS=\'"$SHLIB_LIBS"\' echo SHLIB_DOT=\'"$SHLIB_DOT"\' echo SHLIB_LIBPREF=\'"$SHLIB_LIBPREF"\' echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\' echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\' echo SHLIB_DLLVERSION=\'"$SHLIB_DLLVERSION"\' echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\' echo SHLIB_STATUS=\'"$SHLIB_STATUS"\' exit 0 readline-8.0/support/config.guess000775 000436 000024 00000126166 13373624757 017320 0ustar00chetstaff000000 000000 #! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2018 Free Software Foundation, Inc. timestamp='2018-08-29' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15 trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0 set_cc_for_build() { : "${TMPDIR=/tmp}" # shellcheck disable=SC2039 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD="$driver" break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" # If ldd exists, use it to detect musl libc. if command -v ldd >/dev/null && \ ldd --version 2>&1 | grep -q ^musl then LIBC=musl fi ;; esac # Note: order is significant - the case branches are not exclusive. case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ "/sbin/$sysctl" 2>/dev/null || \ "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)` case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine="${arch}${endian}"-unknown ;; *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "$machine-${os}${release}${abi-}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:Sortix:*:*) echo "$UNAME_MACHINE"-unknown-sortix exit ;; *:Redox:*:*) echo "$UNAME_MACHINE"-unknown-redox exit ;; mips:OSF1:*.*) echo mips-dec-osf1 exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" case `isainfo -b` in 32) echo i386-pc-solaris2"$UNAME_REL" ;; 64) echo x86_64-pc-solaris2"$UNAME_REL" ;; esac exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint"$UNAME_RELEASE" exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint"$UNAME_RELEASE" exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint"$UNAME_RELEASE" exit ;; m68k:machten:*:*) echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] then if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ [ "$TARGET_BINARY_INTERFACE"x = x ] then echo m88k-dg-dgux"$UNAME_RELEASE" else echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else echo i586-dg-dgux"$UNAME_RELEASE" fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` case "$UNAME_MACHINE" in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "$sc_kernel_bits" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "$HP_ARCH" = "" ]; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ "$HP_ARCH" = hppa2.0w ] then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo "$UNAME_MACHINE"-unknown-osf1mk else echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" exit ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi else echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf fi exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) echo "$UNAME_MACHINE"-pc-mingw32 exit ;; *:MSYS*:*) echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) case "$UNAME_MACHINE" in x86) echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; i*:UWIN*:*) echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-pc-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; *:GNU:*:*) # the GNU system echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; *:Minix:*:*) echo "$UNAME_MACHINE"-unknown-minix exit ;; aarch64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; e2k:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; k1om:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } ;; mips64el:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-"$LIBC" exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; xtensa*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv"$UNAME_RELEASE" else echo mips-unknown-sysv"$UNAME_RELEASE" fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux"$UNAME_RELEASE" exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk"$UNAME_RELEASE" exit ;; NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk"$UNAME_RELEASE" exit ;; NSV-*:NONSTOP_KERNEL:*:*) echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; NSX-*:NONSTOP_KERNEL:*:*) echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. # shellcheck disable=SC2154 if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" exit ;; i*86:rdos:*:*) echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) echo "$UNAME_MACHINE"-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac echo "$0: unable to guess system type" >&2 case "$UNAME_MACHINE:$UNAME_SYSTEM" in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: readline-8.0/support/wcwidth.c000644 000436 000000 00000033245 11050046526 016557 0ustar00chetwheel000000 000000 /* * This is an implementation of wcwidth() and wcswidth() (defined in * IEEE Std 1002.1-2001) for Unicode. * * http://www.opengroup.org/onlinepubs/007904975/functions/wcwidth.html * http://www.opengroup.org/onlinepubs/007904975/functions/wcswidth.html * * In fixed-width output devices, Latin characters all occupy a single * "cell" position of equal width, whereas ideographic CJK characters * occupy two such cells. Interoperability between terminal-line * applications and (teletype-style) character terminals using the * UTF-8 encoding requires agreement on which character should advance * the cursor by how many cell positions. No established formal * standards exist at present on which Unicode character shall occupy * how many cell positions on character terminals. These routines are * a first attempt of defining such behavior based on simple rules * applied to data provided by the Unicode Consortium. * * For some graphical characters, the Unicode standard explicitly * defines a character-cell width via the definition of the East Asian * FullWidth (F), Wide (W), Half-width (H), and Narrow (Na) classes. * In all these cases, there is no ambiguity about which width a * terminal shall use. For characters in the East Asian Ambiguous (A) * class, the width choice depends purely on a preference of backward * compatibility with either historic CJK or Western practice. * Choosing single-width for these characters is easy to justify as * the appropriate long-term solution, as the CJK practice of * displaying these characters as double-width comes from historic * implementation simplicity (8-bit encoded characters were displayed * single-width and 16-bit ones double-width, even for Greek, * Cyrillic, etc.) and not any typographic considerations. * * Much less clear is the choice of width for the Not East Asian * (Neutral) class. Existing practice does not dictate a width for any * of these characters. It would nevertheless make sense * typographically to allocate two character cells to characters such * as for instance EM SPACE or VOLUME INTEGRAL, which cannot be * represented adequately with a single-width glyph. The following * routines at present merely assign a single-cell width to all * neutral characters, in the interest of simplicity. This is not * entirely satisfactory and should be reconsidered before * establishing a formal standard in this area. At the moment, the * decision which Not East Asian (Neutral) characters should be * represented by double-width glyphs cannot yet be answered by * applying a simple rule from the Unicode database content. Setting * up a proper standard for the behavior of UTF-8 character terminals * will require a careful analysis not only of each Unicode character, * but also of each presentation form, something the author of these * routines has avoided to do so far. * * http://www.unicode.org/unicode/reports/tr11/ * * Markus Kuhn -- 2007-05-26 (Unicode 5.0) * * Permission to use, copy, modify, and distribute this software * for any purpose and without fee is hereby granted. The author * disclaims all warranties with regard to this software. * * Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c */ #ifdef __GO32__ # include #endif #include struct interval { int first; int last; }; /* auxiliary function for binary search in interval table */ static int bisearch(wchar_t ucs, const struct interval *table, int max) { int min = 0; int mid; if (ucs < table[0].first || ucs > table[max].last) return 0; while (max >= min) { mid = (min + max) / 2; if (ucs > table[mid].last) min = mid + 1; else if (ucs < table[mid].first) max = mid - 1; else return 1; } return 0; } /* The following two functions define the column width of an ISO 10646 * character as follows: * * - The null character (U+0000) has a column width of 0. * * - Other C0/C1 control characters and DEL will lead to a return * value of -1. * * - Non-spacing and enclosing combining characters (general * category code Mn or Me in the Unicode database) have a * column width of 0. * * - SOFT HYPHEN (U+00AD) has a column width of 1. * * - Other format characters (general category code Cf in the Unicode * database) and ZERO WIDTH SPACE (U+200B) have a column width of 0. * * - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF) * have a column width of 0. * * - Spacing characters in the East Asian Wide (W) or East Asian * Full-width (F) category as defined in Unicode Technical * Report #11 have a column width of 2. * * - All remaining characters (including all printable * ISO 8859-1 and WGL4 characters, Unicode control characters, * etc.) have a column width of 1. * * This implementation assumes that wchar_t characters are encoded * in ISO 10646. */ int mk_wcwidth(wchar_t ucs) { /* sorted list of non-overlapping intervals of non-spacing characters */ /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */ static const struct interval combining[] = { { 0x0300, 0x036F }, { 0x0483, 0x0486 }, { 0x0488, 0x0489 }, { 0x0591, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 }, { 0x05C4, 0x05C5 }, { 0x05C7, 0x05C7 }, { 0x0600, 0x0603 }, { 0x0610, 0x0615 }, { 0x064B, 0x065E }, { 0x0670, 0x0670 }, { 0x06D6, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED }, { 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A }, { 0x07A6, 0x07B0 }, { 0x07EB, 0x07F3 }, { 0x0901, 0x0902 }, { 0x093C, 0x093C }, { 0x0941, 0x0948 }, { 0x094D, 0x094D }, { 0x0951, 0x0954 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 }, { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD }, { 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C }, { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D }, { 0x0A70, 0x0A71 }, { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC }, { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD }, { 0x0AE2, 0x0AE3 }, { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C }, { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 }, { 0x0B4D, 0x0B4D }, { 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 }, { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 }, { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0CBC, 0x0CBC }, { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD }, { 0x0CE2, 0x0CE3 }, { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D }, { 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 }, { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E }, { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC }, { 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, { 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 }, { 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 }, { 0x1032, 0x1032 }, { 0x1036, 0x1037 }, { 0x1039, 0x1039 }, { 0x1058, 0x1059 }, { 0x1160, 0x11FF }, { 0x135F, 0x135F }, { 0x1712, 0x1714 }, { 0x1732, 0x1734 }, { 0x1752, 0x1753 }, { 0x1772, 0x1773 }, { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD }, { 0x17C6, 0x17C6 }, { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD }, { 0x180B, 0x180D }, { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 }, { 0x1927, 0x1928 }, { 0x1932, 0x1932 }, { 0x1939, 0x193B }, { 0x1A17, 0x1A18 }, { 0x1B00, 0x1B03 }, { 0x1B34, 0x1B34 }, { 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C }, { 0x1B42, 0x1B42 }, { 0x1B6B, 0x1B73 }, { 0x1DC0, 0x1DCA }, { 0x1DFE, 0x1DFF }, { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2063 }, { 0x206A, 0x206F }, { 0x20D0, 0x20EF }, { 0x302A, 0x302F }, { 0x3099, 0x309A }, { 0xA806, 0xA806 }, { 0xA80B, 0xA80B }, { 0xA825, 0xA826 }, { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F }, { 0xFE20, 0xFE23 }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB }, { 0x10A01, 0x10A03 }, { 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F }, { 0x10A38, 0x10A3A }, { 0x10A3F, 0x10A3F }, { 0x1D167, 0x1D169 }, { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD }, { 0x1D242, 0x1D244 }, { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F }, { 0xE0100, 0xE01EF } }; /* test for 8-bit control characters */ if (ucs == 0) return 0; if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0)) return -1; /* binary search in table of non-spacing characters */ if (bisearch(ucs, combining, sizeof(combining) / sizeof(struct interval) - 1)) return 0; /* if we arrive here, ucs is not a combining or C0/C1 control character */ return 1 + (ucs >= 0x1100 && (ucs <= 0x115f || /* Hangul Jamo init. consonants */ ucs == 0x2329 || ucs == 0x232a || (ucs >= 0x2e80 && ucs <= 0xa4cf && ucs != 0x303f) || /* CJK ... Yi */ (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */ (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */ (ucs >= 0xfe10 && ucs <= 0xfe19) || /* Vertical forms */ (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */ (ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */ (ucs >= 0xffe0 && ucs <= 0xffe6) || (ucs >= 0x20000 && ucs <= 0x2fffd) || (ucs >= 0x30000 && ucs <= 0x3fffd))); } int mk_wcswidth(const wchar_t *pwcs, size_t n) { int w, width = 0; for (;*pwcs && n-- > 0; pwcs++) if ((w = mk_wcwidth(*pwcs)) < 0) return -1; else width += w; return width; } /* * The following functions are the same as mk_wcwidth() and * mk_wcswidth(), except that spacing characters in the East Asian * Ambiguous (A) category as defined in Unicode Technical Report #11 * have a column width of 2. This variant might be useful for users of * CJK legacy encodings who want to migrate to UCS without changing * the traditional terminal character-width behaviour. It is not * otherwise recommended for general use. */ int mk_wcwidth_cjk(wchar_t ucs) { /* sorted list of non-overlapping intervals of East Asian Ambiguous * characters, generated by "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */ static const struct interval ambiguous[] = { { 0x00A1, 0x00A1 }, { 0x00A4, 0x00A4 }, { 0x00A7, 0x00A8 }, { 0x00AA, 0x00AA }, { 0x00AE, 0x00AE }, { 0x00B0, 0x00B4 }, { 0x00B6, 0x00BA }, { 0x00BC, 0x00BF }, { 0x00C6, 0x00C6 }, { 0x00D0, 0x00D0 }, { 0x00D7, 0x00D8 }, { 0x00DE, 0x00E1 }, { 0x00E6, 0x00E6 }, { 0x00E8, 0x00EA }, { 0x00EC, 0x00ED }, { 0x00F0, 0x00F0 }, { 0x00F2, 0x00F3 }, { 0x00F7, 0x00FA }, { 0x00FC, 0x00FC }, { 0x00FE, 0x00FE }, { 0x0101, 0x0101 }, { 0x0111, 0x0111 }, { 0x0113, 0x0113 }, { 0x011B, 0x011B }, { 0x0126, 0x0127 }, { 0x012B, 0x012B }, { 0x0131, 0x0133 }, { 0x0138, 0x0138 }, { 0x013F, 0x0142 }, { 0x0144, 0x0144 }, { 0x0148, 0x014B }, { 0x014D, 0x014D }, { 0x0152, 0x0153 }, { 0x0166, 0x0167 }, { 0x016B, 0x016B }, { 0x01CE, 0x01CE }, { 0x01D0, 0x01D0 }, { 0x01D2, 0x01D2 }, { 0x01D4, 0x01D4 }, { 0x01D6, 0x01D6 }, { 0x01D8, 0x01D8 }, { 0x01DA, 0x01DA }, { 0x01DC, 0x01DC }, { 0x0251, 0x0251 }, { 0x0261, 0x0261 }, { 0x02C4, 0x02C4 }, { 0x02C7, 0x02C7 }, { 0x02C9, 0x02CB }, { 0x02CD, 0x02CD }, { 0x02D0, 0x02D0 }, { 0x02D8, 0x02DB }, { 0x02DD, 0x02DD }, { 0x02DF, 0x02DF }, { 0x0391, 0x03A1 }, { 0x03A3, 0x03A9 }, { 0x03B1, 0x03C1 }, { 0x03C3, 0x03C9 }, { 0x0401, 0x0401 }, { 0x0410, 0x044F }, { 0x0451, 0x0451 }, { 0x2010, 0x2010 }, { 0x2013, 0x2016 }, { 0x2018, 0x2019 }, { 0x201C, 0x201D }, { 0x2020, 0x2022 }, { 0x2024, 0x2027 }, { 0x2030, 0x2030 }, { 0x2032, 0x2033 }, { 0x2035, 0x2035 }, { 0x203B, 0x203B }, { 0x203E, 0x203E }, { 0x2074, 0x2074 }, { 0x207F, 0x207F }, { 0x2081, 0x2084 }, { 0x20AC, 0x20AC }, { 0x2103, 0x2103 }, { 0x2105, 0x2105 }, { 0x2109, 0x2109 }, { 0x2113, 0x2113 }, { 0x2116, 0x2116 }, { 0x2121, 0x2122 }, { 0x2126, 0x2126 }, { 0x212B, 0x212B }, { 0x2153, 0x2154 }, { 0x215B, 0x215E }, { 0x2160, 0x216B }, { 0x2170, 0x2179 }, { 0x2190, 0x2199 }, { 0x21B8, 0x21B9 }, { 0x21D2, 0x21D2 }, { 0x21D4, 0x21D4 }, { 0x21E7, 0x21E7 }, { 0x2200, 0x2200 }, { 0x2202, 0x2203 }, { 0x2207, 0x2208 }, { 0x220B, 0x220B }, { 0x220F, 0x220F }, { 0x2211, 0x2211 }, { 0x2215, 0x2215 }, { 0x221A, 0x221A }, { 0x221D, 0x2220 }, { 0x2223, 0x2223 }, { 0x2225, 0x2225 }, { 0x2227, 0x222C }, { 0x222E, 0x222E }, { 0x2234, 0x2237 }, { 0x223C, 0x223D }, { 0x2248, 0x2248 }, { 0x224C, 0x224C }, { 0x2252, 0x2252 }, { 0x2260, 0x2261 }, { 0x2264, 0x2267 }, { 0x226A, 0x226B }, { 0x226E, 0x226F }, { 0x2282, 0x2283 }, { 0x2286, 0x2287 }, { 0x2295, 0x2295 }, { 0x2299, 0x2299 }, { 0x22A5, 0x22A5 }, { 0x22BF, 0x22BF }, { 0x2312, 0x2312 }, { 0x2460, 0x24E9 }, { 0x24EB, 0x254B }, { 0x2550, 0x2573 }, { 0x2580, 0x258F }, { 0x2592, 0x2595 }, { 0x25A0, 0x25A1 }, { 0x25A3, 0x25A9 }, { 0x25B2, 0x25B3 }, { 0x25B6, 0x25B7 }, { 0x25BC, 0x25BD }, { 0x25C0, 0x25C1 }, { 0x25C6, 0x25C8 }, { 0x25CB, 0x25CB }, { 0x25CE, 0x25D1 }, { 0x25E2, 0x25E5 }, { 0x25EF, 0x25EF }, { 0x2605, 0x2606 }, { 0x2609, 0x2609 }, { 0x260E, 0x260F }, { 0x2614, 0x2615 }, { 0x261C, 0x261C }, { 0x261E, 0x261E }, { 0x2640, 0x2640 }, { 0x2642, 0x2642 }, { 0x2660, 0x2661 }, { 0x2663, 0x2665 }, { 0x2667, 0x266A }, { 0x266C, 0x266D }, { 0x266F, 0x266F }, { 0x273D, 0x273D }, { 0x2776, 0x277F }, { 0xE000, 0xF8FF }, { 0xFFFD, 0xFFFD }, { 0xF0000, 0xFFFFD }, { 0x100000, 0x10FFFD } }; /* binary search in table of non-spacing characters */ if (bisearch(ucs, ambiguous, sizeof(ambiguous) / sizeof(struct interval) - 1)) return 2; return mk_wcwidth(ucs); } int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n) { int w, width = 0; for (;*pwcs && n-- > 0; pwcs++) if ((w = mk_wcwidth_cjk(*pwcs)) < 0) return -1; else width += w; return width; }