From da713c2366636f46b719afddcf7e4af46da4c641 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Sat, 3 Dec 2011 13:41:18 -0500 Subject: [PATCH] commit bash-20041216 snapshot --- CWRU/CWRU.chlog | 23 ++++++++++++++ CWRU/CWRU.chlog~ | 27 ++++++++++++++++ builtins/set.def | 2 +- builtins/set.def~ | 2 ++ subst.c | 48 +++++++++++++++++++---------- subst.c~ | 63 ++++++++++++++++++++++++++------------ tests/RUN-ONE-TEST | 2 +- tests/RUN-ONE-TEST.gprof | 9 ++++++ tests/RUN-ONE-TEST.gprof~ | 9 ++++++ tests/array.tests | 3 +- tests/array.tests~ | 7 +++-- tests/gmon.out | Bin 0 -> 924316 bytes tests/intl.tests | 2 +- tests/intl.tests~ | 4 +-- tests/shopt.right | 6 ++-- 15 files changed, 158 insertions(+), 49 deletions(-) create mode 100755 tests/RUN-ONE-TEST.gprof create mode 100755 tests/RUN-ONE-TEST.gprof~ create mode 100644 tests/gmon.out diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 19a093f7..95620aa3 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -10696,3 +10696,26 @@ builtins/set.def builtins/shopt.def - fix bug that caused `gnu_errfmt' to not be compiled in unless READLINE is defined + + 12/16 + ----- +subst.c + - fixed a typo in string_extract_verbatim in first call to MBLEN + (used `slen - 1' instead of `slen - i') + + 12/17 + ----- +subst.c + - avoid some calls to strlen if the value is only being used for + ADVANCE_CHAR and MB_CUR_MAX == 1 (since ADVANCE_CHAR doesn't need + it unless multibyte characters are possible) + - change string_extract_verbatim so it takes the length of the string + as a parameter, so we don't have to recompute the length of the same + string over and over again when doing word splitting (that kills if + it's a long string) + + 12/18 + ----- +subst.c + - in string_list_dollar_star, make sure to null-terminate the + separator if the character is longer than one byte diff --git a/CWRU/CWRU.chlog~ b/CWRU/CWRU.chlog~ index 94290735..3d499d2c 100644 --- a/CWRU/CWRU.chlog~ +++ b/CWRU/CWRU.chlog~ @@ -10687,3 +10687,30 @@ subst.c lib/readline/bind.c - make new-style "\M-x" keybindings obey `convert-meta' settings (bug reported by twaugh@redhat.com) + + 12/14 + ----- +builtins/set.def + - added description of `-' option to help text + +builtins/shopt.def + - fix bug that caused `gnu_errfmt' to not be compiled in unless + READLINE is defined + + 12/16 + ----- +subst.c + - fixed a typo in string_extract_verbatim in first call to MBLEN + (used `slen - 1' instead of `slen - i') + + 12/17 + ----- +subst.c + - avoid some calls to strlen if the value is only being used for + ADVANCE_CHAR and MB_CUR_MAX == 1 (since ADVANCE_CHAR doesn't need + it unless multibyte characters are possible) + - change string_extract_verbatim so it takes the length of the string + as a parameter, so we don't have to recompute the length of the same + string over and over again when doing word splitting (that kills if + it's a long string) + diff --git a/builtins/set.def b/builtins/set.def index 87a58d77..3bb32704 100644 --- a/builtins/set.def +++ b/builtins/set.def @@ -128,7 +128,7 @@ $SHORT_DOC set [--abefhkmnptuvxBCHP] [-o option] [arg ...] -E If set, the ERR trap is inherited by shell functions. #if defined (BANG_HISTORY) -H Enable ! style history substitution. This flag is on - by default. + by default when the shell is interactive. #endif /* BANG_HISTORY */ -P If set, do not follow symbolic links when executing commands such as cd which change the current directory. diff --git a/builtins/set.def~ b/builtins/set.def~ index a6046d97..87a58d77 100644 --- a/builtins/set.def~ +++ b/builtins/set.def~ @@ -133,6 +133,8 @@ $SHORT_DOC set [--abefhkmnptuvxBCHP] [-o option] [arg ...] -P If set, do not follow symbolic links when executing commands such as cd which change the current directory. -T If set, the DEBUG trap is inherited by shell functions. + - Assign any remaining arguments to the positional parameters. + The -x and -v options are turned off. Using + rather than - causes these flags to be turned off. The flags can also be used upon invocation of the shell. The current diff --git a/subst.c b/subst.c index 513939e1..73778459 100644 --- a/subst.c +++ b/subst.c @@ -209,7 +209,7 @@ static SHELL_VAR *do_compound_assignment __P((char *, char *, int)); #endif static int do_assignment_internal __P((const WORD_DESC *, int)); -static char *string_extract_verbatim __P((char *, int *, char *)); +static char *string_extract_verbatim __P((char *, size_t, int *, char *)); static char *string_extract __P((char *, int *, char *, int)); static char *string_extract_double_quoted __P((char *, int *, int)); static inline char *string_extract_single_quoted __P((char *, int *)); @@ -555,7 +555,7 @@ string_extract (string, sindex, charlist, flags) char *temp; DECLARE_MBSTATE; - slen = strlen (string + *sindex) + *sindex; + slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 0; i = *sindex; while (c = string[i]) { @@ -830,7 +830,8 @@ string_extract_single_quoted (string, sindex) char *t; DECLARE_MBSTATE; - slen = strlen (string + *sindex) + *sindex; + /* Don't need slen for ADVANCE_CHAR unless multibyte chars possible. */ + slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 0; i = *sindex; while (string[i] && string[i] != '\'') ADVANCE_CHAR (string, slen, i); @@ -865,13 +866,13 @@ skip_single_quoted (string, slen, sind) /* Just like string_extract, but doesn't hack backslashes or any of that other stuff. Obeys CTLESC quoting. Used to do splitting on $IFS. */ static char * -string_extract_verbatim (string, sindex, charlist) +string_extract_verbatim (string, slen, sindex, charlist) char *string; + size_t slen; int *sindex; char *charlist; { register int i = *sindex; - size_t slen; #if defined (HANDLE_MULTIBYTE) size_t clen; wchar_t *wcharlist; @@ -887,8 +888,12 @@ string_extract_verbatim (string, sindex, charlist) return temp; } - slen = strlen (string + *sindex) + *sindex; i = *sindex; +#if 0 + /* See how the MBLEN and ADVANCE_CHAR macros work to understand why we need + this only if MB_CUR_MAX > 1. */ + slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 1; +#endif #if defined (HANDLE_MULTIBYTE) clen = strlen (charlist); wcharlist = 0; @@ -905,7 +910,7 @@ string_extract_verbatim (string, sindex, charlist) } #if defined (HANDLE_MULTIBYTE) - mblength = MBLEN (string + i, slen - 1); + mblength = MBLEN (string + i, slen - i); if (mblength > 1) { wchar_t wc; @@ -1768,7 +1773,10 @@ string_list_dollar_star (list) sep[1] = '\0'; } else - memcpy (sep, ifs_firstc, ifs_firstc_len); + { + memcpy (sep, ifs_firstc, ifs_firstc_len); + sep[ifs_firstc_len] = '\0'; + } #else sep[0] = ifs_firstc; sep[1] = '\0'; @@ -1906,9 +1914,12 @@ list_string (string, separators, quoted) extract a word, stopping at a separator skip sequences of spc, tab, or nl as long as they are separators This obeys the field splitting rules in Posix.2. */ + slen = (MB_CUR_MAX > 1) ? strlen (string) : 1; for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; ) { - current_word = string_extract_verbatim (string, &sindex, separators); + /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim + unless multibyte chars are possible. */ + current_word = string_extract_verbatim (string, slen, &sindex, separators); if (current_word == 0) break; @@ -1954,8 +1965,6 @@ list_string (string, separators, quoted) if (string[sindex]) { DECLARE_MBSTATE; - if (slen == 0) - slen = strlen (string); ADVANCE_CHAR (string, slen, sindex); } @@ -2025,7 +2034,10 @@ get_word_from_string (stringp, separators, endptr) This obeys the field splitting rules in Posix.2. */ sindex = 0; - current_word = string_extract_verbatim (s, &sindex, separators); + /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim + unless multibyte chars are possible. */ + slen = (MB_CUR_MAX > 1) ? strlen (s) : 1; + current_word = string_extract_verbatim (s, slen, &sindex, separators); /* Set ENDPTR to the first character after the end of the word. */ if (endptr) @@ -2038,8 +2050,6 @@ get_word_from_string (stringp, separators, endptr) if (s[sindex]) { DECLARE_MBSTATE; - if (slen == 0) - slen = strlen (s); ADVANCE_CHAR (s, slen, sindex); } @@ -2464,7 +2474,8 @@ expand_string_if_necessary (string, quoted, func) char *ret; DECLARE_MBSTATE; - slen = strlen (string); + /* Don't need string length for ADVANCE_CHAR unless multibyte chars possible. */ + slen = (MB_CUR_MAX > 1) ? strlen (string) : 0; i = saw_quote = 0; while (string[i]) { @@ -5295,7 +5306,8 @@ mb_substring (string, s, e) DECLARE_MBSTATE; start = 0; - slen = STRLEN (string); + /* Don't need string length in ADVANCE_CHAR unless multibyte chars possible. */ + slen = (MB_CUR_MAX > 1) ? STRLEN (string) : 0; i = s; while (string[start] && i--) @@ -6435,7 +6447,9 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin string = word->word; if (string == 0) goto finished_with_string; - string_size = strlen (string); + /* Don't need the string length for the SADD... and COPY_ macros unless + multibyte characters are possible. */ + string_size = (MB_CUR_MAX > 1) ? strlen (string) : 1; if (contains_dollar_at) *contains_dollar_at = 0; diff --git a/subst.c~ b/subst.c~ index 879649c8..796049e0 100644 --- a/subst.c~ +++ b/subst.c~ @@ -209,7 +209,7 @@ static SHELL_VAR *do_compound_assignment __P((char *, char *, int)); #endif static int do_assignment_internal __P((const WORD_DESC *, int)); -static char *string_extract_verbatim __P((char *, int *, char *)); +static char *string_extract_verbatim __P((char *, size_t, int *, char *)); static char *string_extract __P((char *, int *, char *, int)); static char *string_extract_double_quoted __P((char *, int *, int)); static inline char *string_extract_single_quoted __P((char *, int *)); @@ -555,7 +555,7 @@ string_extract (string, sindex, charlist, flags) char *temp; DECLARE_MBSTATE; - slen = strlen (string + *sindex) + *sindex; + slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 0; i = *sindex; while (c = string[i]) { @@ -830,7 +830,8 @@ string_extract_single_quoted (string, sindex) char *t; DECLARE_MBSTATE; - slen = strlen (string + *sindex) + *sindex; + /* Don't need slen for ADVANCE_CHAR unless multibyte chars possible. */ + slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 0; i = *sindex; while (string[i] && string[i] != '\'') ADVANCE_CHAR (string, slen, i); @@ -865,13 +866,13 @@ skip_single_quoted (string, slen, sind) /* Just like string_extract, but doesn't hack backslashes or any of that other stuff. Obeys CTLESC quoting. Used to do splitting on $IFS. */ static char * -string_extract_verbatim (string, sindex, charlist) +string_extract_verbatim (string, slen, sindex, charlist) char *string; + size_t slen; int *sindex; char *charlist; { register int i = *sindex; - size_t slen; #if defined (HANDLE_MULTIBYTE) size_t clen; wchar_t *wcharlist; @@ -887,8 +888,12 @@ string_extract_verbatim (string, sindex, charlist) return temp; } - slen = strlen (string + *sindex) + *sindex; i = *sindex; +#if 0 + /* See how the MBLEN and ADVANCE_CHAR macros work to understand why we need + this only if MB_CUR_MAX > 1. */ + slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 1; +#endif #if defined (HANDLE_MULTIBYTE) clen = strlen (charlist); wcharlist = 0; @@ -905,7 +910,7 @@ string_extract_verbatim (string, sindex, charlist) } #if defined (HANDLE_MULTIBYTE) - mblength = MBLEN (string + i, slen - 1); + mblength = MBLEN (string + i, slen - i); if (mblength > 1) { wchar_t wc; @@ -1768,7 +1773,10 @@ string_list_dollar_star (list) sep[1] = '\0'; } else - memcpy (sep, ifs_firstc, ifs_firstc_len); + { + memcpy (sep, ifs_firstc, ifs_firstc_len); + sep[ifs_firstc_len] = '\0'; + } #else sep[0] = ifs_firstc; sep[1] = '\0'; @@ -1906,9 +1914,12 @@ list_string (string, separators, quoted) extract a word, stopping at a separator skip sequences of spc, tab, or nl as long as they are separators This obeys the field splitting rules in Posix.2. */ + slen = (MB_CUR_MAX > 1) ? strlen (string) : 1; for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; ) { - current_word = string_extract_verbatim (string, &sindex, separators); + /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim + unless multibyte chars are possible. */ + current_word = string_extract_verbatim (string, slen, &sindex, separators); if (current_word == 0) break; @@ -1954,8 +1965,6 @@ list_string (string, separators, quoted) if (string[sindex]) { DECLARE_MBSTATE; - if (slen == 0) - slen = strlen (string); ADVANCE_CHAR (string, slen, sindex); } @@ -2025,7 +2034,10 @@ get_word_from_string (stringp, separators, endptr) This obeys the field splitting rules in Posix.2. */ sindex = 0; - current_word = string_extract_verbatim (s, &sindex, separators); + /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim + unless multibyte chars are possible. */ + slen = (MB_CUR_MAX > 1) ? strlen (s) : 1; + current_word = string_extract_verbatim (s, slen, &sindex, separators); /* Set ENDPTR to the first character after the end of the word. */ if (endptr) @@ -2038,8 +2050,6 @@ get_word_from_string (stringp, separators, endptr) if (s[sindex]) { DECLARE_MBSTATE; - if (slen == 0) - slen = strlen (s); ADVANCE_CHAR (s, slen, sindex); } @@ -2201,7 +2211,7 @@ do_assignment_internal (word, expand) if (name[offset - 1] == '+') { appendop = 1; - name[offset - 1] = 0; + name[offset - 1] = '\0'; } name[offset] = 0; /* might need this set later */ @@ -2239,7 +2249,7 @@ do_assignment_internal (word, expand) name[offset - 1] = '+'; xtrace_print_assignment (name, value, assign_list, 1); if (appendop) - name[offset - 1] = '+'; + name[offset - 1] = '\0'; } #define ASSIGN_RETURN(r) do { FREE (value); free (name); return (r); } while (0) @@ -2464,7 +2474,8 @@ expand_string_if_necessary (string, quoted, func) char *ret; DECLARE_MBSTATE; - slen = strlen (string); + /* Don't need string length for ADVANCE_CHAR unless multibyte chars possible. */ + slen = (MB_CUR_MAX > 1) ? strlen (string) : 0; i = saw_quote = 0; while (string[i]) { @@ -5235,6 +5246,15 @@ get_var_and_type (varname, value, quoted, varp, valp) } *varp = v; } + else if (v && (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']')) + { + vtype = VT_VARIABLE; + *varp = v; + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + *valp = dequote_string (value); + else + *valp = dequote_escapes (value); + } else return -1; } @@ -5286,7 +5306,8 @@ mb_substring (string, s, e) DECLARE_MBSTATE; start = 0; - slen = STRLEN (string); + /* Don't need string length in ADVANCE_CHAR unless multibyte chars possible. */ + slen = (MB_CUR_MAX > 1) ? STRLEN (string) : 0; i = s; while (string[start] && i--) @@ -6426,7 +6447,9 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin string = word->word; if (string == 0) goto finished_with_string; - string_size = strlen (string); + /* Don't need the string length for the SADD... and COPY_ macros unless + multibyte characters are possible. */ + string_size = (MB_CUR_MAX > 1) ? strlen (string) : 1; if (contains_dollar_at) *contains_dollar_at = 0; @@ -6574,7 +6597,7 @@ add_string: goto add_string; } else - { +b { FREE (temp); goto add_character; } diff --git a/tests/RUN-ONE-TEST b/tests/RUN-ONE-TEST index 3efcf32d..72ec06a2 100755 --- a/tests/RUN-ONE-TEST +++ b/tests/RUN-ONE-TEST @@ -1,4 +1,4 @@ -BUILD_DIR=/usr/local/build/chet/bash/bash-current +BUILD_DIR=/usr/local/build/bash/bash-current THIS_SH=$BUILD_DIR/bash PATH=$PATH:$BUILD_DIR diff --git a/tests/RUN-ONE-TEST.gprof b/tests/RUN-ONE-TEST.gprof new file mode 100755 index 00000000..b29a64fd --- /dev/null +++ b/tests/RUN-ONE-TEST.gprof @@ -0,0 +1,9 @@ +BUILD_DIR=/usr/local/build/bash/bash-20041216-gprof +THIS_SH=$BUILD_DIR/bash +PATH=$PATH:$BUILD_DIR + +export THIS_SH PATH + +rm -f /tmp/xx + +/bin/sh "$@" diff --git a/tests/RUN-ONE-TEST.gprof~ b/tests/RUN-ONE-TEST.gprof~ new file mode 100755 index 00000000..72ec06a2 --- /dev/null +++ b/tests/RUN-ONE-TEST.gprof~ @@ -0,0 +1,9 @@ +BUILD_DIR=/usr/local/build/bash/bash-current +THIS_SH=$BUILD_DIR/bash +PATH=$PATH:$BUILD_DIR + +export THIS_SH PATH + +rm -f /tmp/xx + +/bin/sh "$@" diff --git a/tests/array.tests b/tests/array.tests index 5aca2651..4a735d8c 100644 --- a/tests/array.tests +++ b/tests/array.tests @@ -374,7 +374,7 @@ echo "${x[@]}" mkdir $TMPDIR/bash-test-$$ cd $TMPDIR/bash-test-$$ -trap "cd / ; rm -rf $TMPDIR/bash-test/$$" 0 1 2 3 6 15 +trap "cd / ; rm -rf $TMPDIR/bash-test-$$" 0 1 2 3 6 15 touch '[3]=abcde' @@ -396,4 +396,3 @@ unset x[2] x[9]='9' echo ${x[*]: -1} - diff --git a/tests/array.tests~ b/tests/array.tests~ index 0d638784..5aca2651 100644 --- a/tests/array.tests~ +++ b/tests/array.tests~ @@ -236,7 +236,12 @@ echo "value = ${barray[*]}" set -u ( echo ${#narray[4]} ) +${THIS_SH} ./array1.sub +${THIS_SH} ./array2.sub + # some old bugs and ksh93 compatibility tests +${THIS_SH} ./array3.sub + set +u cd /tmp @@ -392,5 +397,3 @@ x[9]='9' echo ${x[*]: -1} -${THIS_SH} ./array1.sub -${THIS_SH} ./array2.sub diff --git a/tests/gmon.out b/tests/gmon.out new file mode 100644 index 0000000000000000000000000000000000000000..c50ffc5a1b095df705f7d1aec286717921119ecb GIT binary patch literal 924316 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 z=ZSVpe%2gvja6)_4DDjOyBw=@v*}*s3zWesrz89^^-d7Bn zqq6${+U~G71Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0;D5M4;n$g0jl(RTRb`bDPR^Xtt2;X_OJ5kLR|1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#~EZxiVI-%;P;>B?r?xw3herIn`l{O_p$ zw~YxqMgRc>5I_I{1Q0*~0R#|00D=F!K=hw)f))@!009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q7WDS|BltI+|@! zr~WZWJ&nwgzhyb?u2lZKUI#VXkH%P@Rp0hho)~hhJVJR^$lBfxR$g4ldnvCfeu#$|IH66!w2;v;Cwlv?t@} z$t>sX%~Ac~&DK&K%6C!uQ(4Z-f35NZo9&K{Q2t4kcQwZoYArsaTV)?Hi+lA?9mh^{ rZ@qnB`>nSRZ}j(8F~r-h*NgukfB*srAb