diff options
author | Bruno Haible <bruno@clisp.org> | 2023-03-08 19:36:35 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2023-03-09 11:40:25 +0100 |
commit | bcd08ef4de638f94b511d8365cc178e7180188a9 (patch) | |
tree | f10baf2fcfe3b62567b4655531337f2bc18e9aec | |
parent | 793f539ef3201392ae5e7649f369f97285fbbfe4 (diff) | |
download | gettext-bcd08ef4de638f94b511d8365cc178e7180188a9.tar.gz |
xgettext: In language Shell, avoid stack overflow.
* gettext-tools/src/x-sh.c (MAX_NESTING_DEPTH): New macro.
(nesting_depth): New variable.
(read_word): Increase nesting_depth before calling read_command_list
recursively.
(read_command_list): Check nesting_depth.
(extract_sh): Initialize nesting_depth.
* gettext-tools/tests/xgettext-shell-stackovfl-1: New file.
* gettext-tools/tests/xgettext-shell-stackovfl-2: New file.
* gettext-tools/tests/xgettext-shell-stackovfl-3: New file.
* gettext-tools/tests/xgettext-shell-stackovfl-4: New file.
* gettext-tools/tests/xgettext-shell-stackovfl-5: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add them.
-rw-r--r-- | gettext-tools/src/x-sh.c | 22 | ||||
-rw-r--r-- | gettext-tools/tests/Makefile.am | 3 | ||||
-rwxr-xr-x | gettext-tools/tests/xgettext-sh-stackovfl-1 | 83 | ||||
-rwxr-xr-x | gettext-tools/tests/xgettext-sh-stackovfl-2 | 78 | ||||
-rwxr-xr-x | gettext-tools/tests/xgettext-sh-stackovfl-3 | 78 | ||||
-rwxr-xr-x | gettext-tools/tests/xgettext-sh-stackovfl-4 | 78 | ||||
-rwxr-xr-x | gettext-tools/tests/xgettext-sh-stackovfl-5 | 4103 |
7 files changed, 4444 insertions, 1 deletions
diff --git a/gettext-tools/src/x-sh.c b/gettext-tools/src/x-sh.c index a3f70086b..6c610d0c8 100644 --- a/gettext-tools/src/x-sh.c +++ b/gettext-tools/src/x-sh.c @@ -1,5 +1,5 @@ /* xgettext sh backend. - Copyright (C) 2003, 2005-2009, 2014, 2018-2020 Free Software Foundation, Inc. + Copyright (C) 2003, 2005-2009, 2014, 2018-2023 Free Software Foundation, Inc. Written by Bruno Haible <bruno@clisp.org>, 2003. This program is free software: you can redistribute it and/or modify @@ -734,6 +734,13 @@ phase2_ungetc (int c) static flag_context_list_table_ty *flag_context_list_table; +/* Maximum supported nesting depth. */ +#define MAX_NESTING_DEPTH 1000 + +/* Current nesting depth. */ +static int nesting_depth; + + /* Forward declaration of local functions. */ static enum word_type read_command_list (int looking_for, flag_context_ty outer_context); @@ -964,7 +971,9 @@ read_word (struct word *wp, int looking_for, flag_context_ty context) { /* Command substitution (Bash syntax). */ phase2_ungetc (c3); + ++nesting_depth; read_command_list (')', context); + nesting_depth--; } open_doublequote = saved_open_doublequote; @@ -1193,7 +1202,9 @@ read_word (struct word *wp, int looking_for, flag_context_ty context) /* Handle an opening backquote. */ saw_opening_backquote (); + ++nesting_depth; read_command_list (CLOSING_BACKQUOTE, context); + nesting_depth--; wp->type = t_other; continue; @@ -1213,7 +1224,9 @@ read_word (struct word *wp, int looking_for, flag_context_ty context) if (c2 == '(') { /* Process substitution (Bash syntax). */ + ++nesting_depth; read_command_list (')', context); + nesting_depth--; wp->type = t_other; continue; @@ -1493,6 +1506,12 @@ read_command (int looking_for, flag_context_ty outer_context) static enum word_type read_command_list (int looking_for, flag_context_ty outer_context) { + if (nesting_depth > MAX_NESTING_DEPTH) + { + error_with_progname = false; + error (EXIT_FAILURE, 0, _("%s:%d: error: too deeply nested command list"), + logical_file_name, line_number); + } for (;;) { enum word_type terminator; @@ -1530,6 +1549,7 @@ extract_sh (FILE *f, phase2_pushback_length = 0; flag_context_list_table = flag_table; + nesting_depth = 0; init_keywords (); diff --git a/gettext-tools/tests/Makefile.am b/gettext-tools/tests/Makefile.am index 505aa0616..914143111 100644 --- a/gettext-tools/tests/Makefile.am +++ b/gettext-tools/tests/Makefile.am @@ -139,6 +139,9 @@ TESTS = gettext-1 gettext-2 \ xgettext-scheme-stackovfl-1 xgettext-scheme-stackovfl-2 \ xgettext-sh-1 xgettext-sh-2 xgettext-sh-3 xgettext-sh-4 xgettext-sh-5 \ xgettext-sh-6 xgettext-sh-7 \ + xgettext-sh-stackovfl-1 xgettext-sh-stackovfl-2 \ + xgettext-sh-stackovfl-3 xgettext-sh-stackovfl-4 \ + xgettext-sh-stackovfl-5 \ xgettext-smalltalk-1 xgettext-smalltalk-2 \ xgettext-stringtable-1 \ xgettext-tcl-1 xgettext-tcl-2 xgettext-tcl-3 xgettext-tcl-4 \ diff --git a/gettext-tools/tests/xgettext-sh-stackovfl-1 b/gettext-tools/tests/xgettext-sh-stackovfl-1 new file mode 100755 index 000000000..e33ee686b --- /dev/null +++ b/gettext-tools/tests/xgettext-sh-stackovfl-1 @@ -0,0 +1,83 @@ +#! /bin/sh +. "${srcdir=.}/init.sh"; path_prepend_ . ../src + +# Test Shell support: stack overflow prevented by nesting depth check. + +cat <<\EOF > xg-sh-so-1.sh +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +gettext 'Hello!' +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +EOF + +: ${XGETTEXT=xgettext} +${XGETTEXT} --omit-header --no-location -d xg-sh-so-1.tmp xg-sh-so-1.sh || Exit 1 +LC_ALL=C tr -d '\r' < xg-sh-so-1.tmp.po > xg-sh-so-1.po || Exit 1 + +cat <<EOF > xg-sh-so-1.ok +msgid "Hello!" +msgstr "" +EOF + +: ${DIFF=diff} +${DIFF} xg-sh-so-1.ok xg-sh-so-1.po +result=$? + +exit $result diff --git a/gettext-tools/tests/xgettext-sh-stackovfl-2 b/gettext-tools/tests/xgettext-sh-stackovfl-2 new file mode 100755 index 000000000..41c8f93fc --- /dev/null +++ b/gettext-tools/tests/xgettext-sh-stackovfl-2 @@ -0,0 +1,78 @@ +#! /bin/sh +. "${srcdir=.}/init.sh"; path_prepend_ . ../src + +# Test Shell support: stack overflow prevented by nesting depth check. + +cat <<\EOF > xg-sh-so-2.sh +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$($($($($($($($($($($($($($($($($($($($($($($($($( +$( +gettext 'Hello!' +) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +EOF + +: ${XGETTEXT=xgettext} +${XGETTEXT} --omit-header --no-location -d xg-sh-so-2.tmp xg-sh-so-2.sh 2>xg-sh-so-2.err +result=$? +cat xg-sh-so-2.err +test $result = 1 || Exit 1 + +exit 0 diff --git a/gettext-tools/tests/xgettext-sh-stackovfl-3 b/gettext-tools/tests/xgettext-sh-stackovfl-3 new file mode 100755 index 000000000..a8ded6c8f --- /dev/null +++ b/gettext-tools/tests/xgettext-sh-stackovfl-3 @@ -0,0 +1,78 @@ +#! /bin/sh +. "${srcdir=.}/init.sh"; path_prepend_ . ../src + +# Test Shell support: stack overflow prevented by nesting depth check. + +cat <<EOF > xg-sh-so-3.sh +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<(x<( +x<( +gettext 'Hello!' +) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +EOF + +: ${XGETTEXT=xgettext} +${XGETTEXT} --omit-header --no-location -d xg-sh-so-3.tmp xg-sh-so-3.sh 2>xg-sh-so-3.err +result=$? +cat xg-sh-so-3.err +test $result = 1 || Exit 1 + +exit 0 diff --git a/gettext-tools/tests/xgettext-sh-stackovfl-4 b/gettext-tools/tests/xgettext-sh-stackovfl-4 new file mode 100755 index 000000000..ee7c2b33b --- /dev/null +++ b/gettext-tools/tests/xgettext-sh-stackovfl-4 @@ -0,0 +1,78 @@ +#! /bin/sh +. "${srcdir=.}/init.sh"; path_prepend_ . ../src + +# Test Shell support: stack overflow prevented by nesting depth check. + +cat <<EOF > xg-sh-so-4.sh +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>(x>( +x>( +gettext 'Hello!' +) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))))))))))))))))))))))))))))))))))))))) +EOF + +: ${XGETTEXT=xgettext} +${XGETTEXT} --omit-header --no-location -d xg-sh-so-4.tmp xg-sh-so-4.sh 2>xg-sh-so-4.err +result=$? +cat xg-sh-so-4.err +test $result = 1 || Exit 1 + +exit 0 diff --git a/gettext-tools/tests/xgettext-sh-stackovfl-5 b/gettext-tools/tests/xgettext-sh-stackovfl-5 new file mode 100755 index 000000000..11a918829 --- /dev/null +++ b/gettext-tools/tests/xgettext-sh-stackovfl-5 @@ -0,0 +1,4103 @@ +#! /bin/sh +. "${srcdir=.}/init.sh"; path_prepend_ . ../src + +# Test Shell support: stack overflow does not occur. + +cat <<\EOF > xg-sh-so-5.sh +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +{ { { { { { { { { { { { { { { { { { { { { { { { { +gettext 'Hello!' +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +};};};};};};};};};};};};};};};};};};};};};};};};}; +EOF + +: ${XGETTEXT=xgettext} +${XGETTEXT} --omit-header --no-location -d xg-sh-so-5.tmp xg-sh-so-5.sh || Exit 1 +LC_ALL=C tr -d '\r' < xg-sh-so-5.tmp.po > xg-sh-so-5.po || Exit 1 + +cat <<EOF > xg-sh-so-5.ok +msgid "Hello!" +msgstr "" +EOF + +: ${DIFF=diff} +${DIFF} xg-sh-so-5.ok xg-sh-so-5.po +result=$? + +exit $result |